diff --git a/build/proto_docs/proto_docs.bzl b/build/proto_docs/proto_docs.bzl
new file mode 100644
index 0000000..98661a2
--- /dev/null
+++ b/build/proto_docs/proto_docs.bzl
@@ -0,0 +1,66 @@
+load("@rules_proto//proto:defs.bzl", "ProtoInfo")
+
+def _proto_docs(ctx):
+    protos = [proto[ProtoInfo] for proto in ctx.attr.protos]
+    transitive_sources = depset(transitive = [proto.transitive_sources for proto in protos])
+    transitive_proto_path = depset(transitive = [proto.transitive_proto_path for proto in protos])
+
+    out = ctx.actions.declare_file(ctx.label.name + ".html")
+
+    args = []
+    args.append("--plugin")
+    args.append(ctx.executable._protoc_gen_doc.path)
+    args.append("--doc_out")
+    args.append(out.dirname)
+    args.append("--doc_opt=html," + out.basename)
+
+    for include_path in transitive_proto_path.to_list():
+        args.append("-I")
+        args.append(include_path)
+
+    for src in transitive_sources.to_list():
+        # Due to the built-in import path for well-known types (see AddDefaultProtoPaths
+        # in @com_google_protobuf//src/google/protobuf/compiler:command_line_interface.cc)
+        # in protoc the Bazel-generated well-known protos are considered to contain
+        #  "duplicate" types.
+        # Since generating documentation for well-known types is not that useful just
+        # skip them.
+        if src.path.find("/bin/external/com_google_protobuf/_virtual_imports/") != -1:
+            continue
+        args.append(src.path)
+
+    ctx.actions.run(
+        tools = [ctx.executable._protoc_gen_doc],
+        inputs = transitive_sources,
+        outputs = [out],
+        executable = ctx.executable._protoc,
+        arguments = args,
+    )
+    return [DefaultInfo(files = depset([out]))]
+
+proto_docs = rule(
+    implementation = _proto_docs,
+    doc = """
+        Generate a single HTML documentation file documenting all types and services from the transitive set of
+        Protobuf files referenced by all proto_libraries passed into `protos`.
+    """,
+    attrs = {
+        "protos": attr.label_list(
+            doc = "A list of protobuf libraries for which (and their dependencies) documentation should be generated for",
+            providers = [ProtoInfo],
+            default = [],
+        ),
+        "_protoc": attr.label(
+            default = Label("@com_google_protobuf//:protoc"),
+            cfg = "exec",
+            executable = True,
+            allow_files = True,
+        ),
+        "_protoc_gen_doc": attr.label(
+            default = Label("@com_github_pseudomuto_protoc_gen_doc//cmd/protoc-gen-doc"),
+            cfg = "exec",
+            executable = True,
+            allow_files = True,
+        ),
+    },
+)
