agentleFS
WebMCP-orgWebMCP-org/npm-packages/.agents/skills/docs-authoring/SKILL.md

docs-authoring

Skill104 starsChanged 44 days agoMITView on GitHub

Author and review the WebMCP documentation site using its Diataxis structure, Mintlify conventions, writing rules, design system, and source-of-truth boundaries. Use when creating, editing, reorganizing, or validating pages under apps/documentation-website.

3 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions3 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 3

    1. elastic/beats★ 13ksame name
    2. TracecatHQ/tracecat★ 3.9ksame name
    3. elastic/elastic-agent★ 289same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository4 other files it gives its agents.

The file

Show its rules and text

We split this skill into the rules it gives an agent

31 rules. 0 are common, 17 are distinctive, and 14 are very specific to this project.

  • 0

    Common

    Most of the 3 edited versions we read keep these.

  • 17

    Distinctive

    This author's own choices. Worth a look.

  • 14

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Every package gets an overview page and a reference page under packages/<name>/.

    line 32
  2. Very specific:

    Read ../diataxis/SKILL.md for the full compass.

    line 53
  3. Distinctive:

    No digression, no explanation, no teaching.

    line 71
  4. Distinctive:

    Read after stepping away from work.

    line 84
  5. Distinctive:

    If a concept is covered on multiple pages, one page owns it.

    line 99
  6. Very specific:

    Follow the writing-clearly-and-concisely skill (~/.claude/skills/writing-clearly-and-concisely/SKILL.md).

    line 122
  7. Distinctive:

    No em dashes. Use commas, periods, or parentheses.

    line 128
  8. Distinctive:

    No excessive bold. Bold for terms on first definition only.

    line 129
  9. Distinctive:

    No emoji unless the user requests them.

    line 130
  10. Distinctive:

    Every example must be real, taken from source code, tests, or package READMEs.

    line 143
  11. Very specific:

    Add titles to code blocks: "filename.ext"

    line 145
  12. Very specific:

    Use CodeGroup for multi-framework examples

    line 146
  13. Very specific:

    Use twoslash for TypeScript/TSX hover type information

    line 147
  14. Very specific:

    Check document.modelContext before using it (if (!document.modelContext) throw ...) or use optional chaining.

    line 148
  15. Very specific:

    Follow the mintlify skill (../mintlify/SKILL.md) for components, navigation patterns, page frontmatter, and deployment.

    line 156
  16. Very specific:

    Read references/design-system.mdx for brand-specific component examples (colors, typography, callout usage).

    line 162
  17. Distinctive:

    Every page needs at minimum:

    line 167
  18. Distinctive:

    Use sentence case for all headings and code block titles ("Getting started", not "Getting Started").

    line 186
  19. Distinctive:

    All code blocks must have a language tag

    line 211
  20. Very specific:

    Use <Steps> with <Step> children, not <Steps> with ### headings inside

    line 212
  21. Distinctive:

    Do not overuse callouts. One per section at most.

    line 213
  22. Distinctive:

    Do not nest components more than two levels deep

    line 214
  23. Very specific:

    When documenting document.modelContext API shape (methods, parameters, return types), link to the Community Group draft.

    line 275
  24. Very specific:

    When showing the proposal working, prefer the Chrome team's live explainer or an individual demo from GoogleChromeLabs/webmcp-tools rather …

    line 282
  25. Distinctive:

    When mentioning native Chrome support, link to the Model Context Tool Inspector extension recommended by Chrome's WebMCP documentation.

    line 284
  26. Very specific:

    Use absolute URLs for internal links (use root-relative: /path/to/page)

    line 328
  27. Distinctive:

    Use title case for headings (use sentence case: "Getting started", not "Getting Started")

    line 329
  28. Distinctive:

    Write code blocks without a language tag

    line 330
  29. Very specific:

    Use <Steps> with ### headings inside (use <Step title="..."> children)

    line 331
  30. Distinctive:

    Use placeholder values like "foo" or "bar" in code (use realistic values)

    line 333
  31. Distinctive:

    Use decorative formatting, emoji, or excessive bold

    line 340

“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

WebMCP Documentation: Authoring Guide

Reference for writing and editing the WebMCP docs. The repo-wide agent instructions live in the root AGENTS.md; this file covers the docs-specific rules (Diataxis, writing style, Mintlify components, source-of-truth boundaries).

What this is

Documentation for WebMCP, a Community Group proposal for exposing website tools through document.modelContext. Built with Mintlify. Live at docs.mcp-b.ai.

Site structure

apps/documentation-website/docs.json is the single source of truth for navigation, pages, groups, and hierarchy. Read it first.

TabPath prefixDiataxis type
Homeindex, start-here/Landing + routing
Packagespackages/, reference/webmcp/Information-oriented
Tutorialstutorials/Learning-oriented
How-To Guideshow-to/Goal-oriented
Explanationexplanation/Understanding-oriented

Every package gets an overview page and a reference page under packages/<name>/. The reference/webmcp/ pages route proposal and platform details to upstream sources and sit in the same tab. explanation/design/spec-status-and-limitations keeps its legacy URL but is a reference directory in the WebMCP platforms and agents navigation group.

Key files

FilePurpose
apps/documentation-website/docs.jsonNavigation, theme, config. Do not modify without explicit request.
../diataxis/SKILL.mdDiataxis framework overview and compass
../diataxis/references/17 unabridged Diataxis reference pages from diataxis.fr
../mintlify/SKILL.mdMintlify best practices (components, navigation, frontmatter, deployment)
references/design-system.mdxBrand colors, typography, Mintlify component examples

Diataxis framework

This documentation follows Diataxis by Daniele Procida. Read ../diataxis/SKILL.md for the full compass. Read ../diataxis/references/<type>.md for the complete reference on each type before writing or editing a page of that type.

The four types (never mix on a single page)

Tutorials (../diataxis/references/tutorials.md):

  • A guided learning experience. The teacher holds responsibility. The learner follows.
  • Concrete steps, no choices, no branching. Every step produces a visible result.
  • Zero conceptual explanation. "We're using HTTPS because it's more secure" is enough. Link to the explanation page for the full story.
  • Language: "We will...", "First, do X. Now, do Y.", "Notice that...", "You have built..."

How-to guides (../diataxis/references/how-to-guides.md):

  • Directions for a competent user solving a real problem.
  • Assumes the reader knows the basics and has a specific goal.
  • Can branch ("If you need X, do Y"). Addresses real-world conditions.
  • No digression, no explanation, no teaching. "If they're important, link to them."
  • Language: conditional imperatives. "To do X, run Y."

Reference (../diataxis/references/reference.md):

  • Technical description of the machinery. Austere, factual, structured like the code.
  • Consulted while working, not read cover-to-cover.
  • Describe and only describe. No teaching, no opinions. Link to how-to guides for usage and explanation pages for the "why".
  • Language: "X does Y.", "You must use X.", lists, tables, warnings.

Explanation (../diataxis/references/explanation.md):

  • Discursive treatment that deepens understanding.
  • Read after stepping away from work. Discusses why, provides context, weighs alternatives.
  • Admits opinion and perspective. Makes connections across topics.
  • Language: "The reason for X is...", "Consider...", analogies, history, alternatives.

Cross-linking between types

Each type is deliberately incomplete. Links are how the reader moves between them. Every page should have at least 2-3 outgoing links to related pages, woven naturally into prose (not a "See also" dump at the bottom).

  • Tutorials → link to explanation pages parenthetically: "(see Security Model for details)"
  • How-to → link to explanation with one sentence of context: "For background on transports, see Transports and Bridges." Link to reference pages on first mention of any package.
  • Reference → link to how-to for practical usage, explanation for the "why"
  • Explanation → link to other explanation pages for related concepts, reference pages when naming specific APIs

Canonical locations for concepts

If a concept is covered on multiple pages, one page owns it. All others link to it.

ConceptCanonical page
What is WebMCPexplanation/what-is-webmcp
WebMCP vs MCPChrome's external compare-mcp guide
WebMCP API sourcesreference/webmcp/standard-api
Declarative APIreference/webmcp/declarative-api
Codex site tools compatibilityreference/webmcp/codex-site-tools
WebMCP and MCP-B extensionsexplanation/strict-core-vs-mcp-b-extensions
Runtime layering / initializationexplanation/architecture/runtime-layering
Transports and bridgesexplanation/architecture/transports-and-bridges
Tool lifecycleexplanation/architecture/tool-lifecycle-and-context-replacement
Security modelexplanation/design/security-and-human-in-the-loop
Schemas and structured outputhow-to/use-schemas-and-structured-output
WebMCP resources and statusexplanation/design/spec-status-and-limitations
Choosing a runtimehow-to/choose-runtime (native vs polyfill vs global)
Package API detailspackages/<name>/reference

Writing style

Follow the writing-clearly-and-concisely skill (~/.claude/skills/writing-clearly-and-concisely/SKILL.md). It covers active voice, concision, AI pattern avoidance, and Strunk's composition principles. Read it before writing or editing any page.

WebMCP-specific rules

  • Second-person ("you") for instructions
  • Lead with the verb in steps: "Install the package", not "You should install the package"
  • No em dashes. Use commas, periods, or parentheses.
  • No excessive bold. Bold for terms on first definition only.
  • No emoji unless the user requests them.

Product names

  • "WebMCP" for the proposal and browser API
  • @mcp-b/* for packages
  • "MCP-B" only in package scope contexts (npm scope, commit messages)
  • "Declarative" for the declarative API and its tools; "form" only for the HTML form element

Code examples

  • Every example must be real, taken from source code, tests, or package READMEs. Do not invent code.
  • Specify language for syntax highlighting
  • Add titles to code blocks: "filename.ext"
  • Use CodeGroup for multi-framework examples
  • Use twoslash for TypeScript/TSX hover type information
  • Check document.modelContext before using it (if (!document.modelContext) throw ...) or use optional chaining; webmcp-types declares it optional
  • Make long examples (50+ lines) expandable

Mintlify format

Follow the mintlify skill (../mintlify/SKILL.md) for components, navigation patterns, page frontmatter, and deployment. It covers everything from docs.json configuration to component selection to the verification checklist.

The Mintlify MCP server is configured in .mcp.json and available to all agents. Use it to search Mintlify's latest docs instead of relying on training data.

Read references/design-system.mdx for brand-specific component examples (colors, typography, callout usage).

Frontmatter requirements

Every page needs at minimum:

---
title: 'Page Title in Sentence case'
description: 'Concise summary for SEO'
---

Include keywords for discoverability. Include sidebarTitle when the full title is too long for the sidebar. Include icon when the page is a landing or index page.

Links

  • Internal links: root-relative, no extension: [text](/path/to/page)
  • Paths must match entries in docs.json
  • New pages must be added to docs.json navigation

Headings

Use sentence case for all headings and code block titles ("Getting started", not "Getting Started").

Component selection

Pick the right component for the job. See ../mintlify/SKILL.md for the full list. Quick reference:

NeedComponent
Sequential instructions<Steps> with <Step title="..."> children
Show code in multiple languages/frameworks<CodeGroup>
Supplementary info the reader can skip<Note>
Helpful context (permissions, prereqs)<Info>
Best practice or recommendation<Tip>
Potentially destructive or breaking action<Warning>
Success confirmation<Check>
Hide optional details<Accordion>
User chooses one option<Tabs> with <Tab> children
Linked navigation cards<Card> in <CardGroup>
Side-by-side comparison<Columns>
Diagrams and flowcharts<Mermaid>
Images with light/dark mode<Frame>

Rules:

  • All code blocks must have a language tag
  • Use <Steps> with <Step> children, not <Steps> with ### headings inside
  • Do not overuse callouts. One per section at most. If everything is a note, nothing is.
  • Do not nest components more than two levels deep

Source of truth: what we own vs. what upstream owns

This is critical. WebMCP is an active Web Machine Learning Community Group proposal, not a W3C Standard or Standards Track document. Our project (@mcp-b/*) provides a polyfill and runtime for that proposed API. The docs must make this distinction clear and always point to the canonical upstream sources for the proposal itself.

What the Community Group and Chrome own (link to these, don't re-document)

Community Group draft and protocol sources:

Chrome team developer docs (link to these prominently):

Chrome-linked experimental tools and demos:

TopicURLLocal clone
Model Context Tool Inspector (Chrome Web Store)https://chromewebstore.google.com/detail/webmcp-model-context-tool/gbpdfapgefenggkahomfgkhfehlcenpd-
Tool Inspector sourcehttps://github.com/beaufortfrancois/model-context-tool-inspectorwebmcp-tools/model-context-tool-inspector/
webmcp-tools repo (demos + utilities)https://github.com/GoogleChromeLabs/webmcp-toolswebmcp-tools/
Live WebMCP explainerhttps://googlechromelabs.github.io/webmcp-tools/demos/explainer/webmcp-tools/demos/explainer/
Awesome WebMCP listhttps://github.com/GoogleChromeLabs/webmcp-tools/blob/main/AWESOME_WEBMCP.mdwebmcp-tools/AWESOME_WEBMCP.md

OpenAI product documentation (link to these, don't re-document):

Rules for proposal vs. package content:

  • When documenting document.modelContext API shape (methods, parameters, return types), link to the Community Group draft. Do not document navigator.modelContext; neither the draft nor MCP-B packages define it. Our reference pages should route readers to the authoritative source and identify package-specific differences. Do not maintain a competing API table or full spec.
  • When documenting the declarative API (toolname, form attributes, schema synthesis, CSS pseudo-classes, SubmitEvent extensions), link to Chrome's declarative API documentation and the Community Group's declarative explainer. Identify the subset implemented by MCP-B, then link. Do not re-document the full type mapping table, constraint mapping table, or event contract; those will go stale as Chrome iterates.
  • When documenting @mcp-b/* packages, document the implemented package behavior fully and link to source. Do not call the package's current type surface the complete WebMCP draft surface. The proposal changes quickly: as of September 2026 it includes executeTool() with object input, which MCP-B packages and Chrome 155 or later implement. Link to the live draft for the proposal and describe the package signature separately. Do not describe unregisterTool, provideContext, or clearContext as current WebMCP methods. BrowserMcpServer adds registerPrompt, registerResource, listTools, and the composed mcpServer property. Protocol-version-specific elicitation and deprecated sampling remain official MCP SDK capabilities accessed through BrowserMcpServer.mcpServer; never describe them as document.modelContext methods.
  • When showing the proposal working, prefer the Chrome team's live explainer or an individual demo from GoogleChromeLabs/webmcp-tools rather than recreating it.
  • Security model documentation should summarize our approach but link to the draft's security and privacy considerations and Chrome's secure tools guidance for the full threat model.
  • When mentioning native Chrome support, link to the Model Context Tool Inspector extension recommended by Chrome's WebMCP documentation. Do not describe it as an officially supported Google product.
  • When documenting Codex site tools, link to OpenAI for availability, setup, security, and current limitations. Keep our page dated and limited to independently observed compatibility differences. Do not treat those observations as permanent product behavior or generalize them to Chrome, Codex CLI, or the Codex IDE extension.

Page-specific guidance:

Our pageWhat to keepWhat to defer upstream
reference/webmcp/standard-api.mdxUpstream source map and MCP-B package boundaryAPI tables, signatures, dictionaries, and algorithms → Community Group draft
reference/webmcp/declarative-api.mdxUpstream source map and MCP-B coverage linksAttributes, events, schema synthesis, and browser behavior → Chrome and Community Group sources
reference/webmcp/codex-site-tools.mdxDated compatibility observations and source mapAvailability, setup, product security, and supported features → OpenAI
explanation/what-is-webmcp.mdxHigh-level "what and why", ecosystem positioningDetailed API walkthrough → link to the Community Group draft

What we own (document fully)

TopicLocation
@mcp-b/* package APIspackages/*/README.md and packages/*/src/
Package architecture & philosophyAGENTS.md, docs/MCPB_PACKAGE_PHILOSOPHY.md
Polyfill behavior & initializationpackages/webmcp-polyfill/, packages/global/
React hookspackages/react-webmcp/, packages/usewebmcp/
Transports, iframe, relaypackages/transports/, packages/mcp-iframe/, packages/webmcp-local-relay/
Tooling (smart-dom-reader, etc.)packages/smart-dom-reader/, etc.
Type contractspackages/*/src/*.test-d.ts, packages/usewebmcp/type-tests/
Chromium flags & testinge2e/web-standards-showcase/CHROMIUM_FLAGS.md, e2e/tests/CHROMIUM_TESTING.md

Brand

KeyValue
Primary color#005F8F (see docs.json colors)
Product name"WebMCP" (not "MCP-B" in user-facing docs)
Package scope@mcp-b/*
OrganizationWebMCP-org
Docs URLdocs.mcp-b.ai
Live demowebmcp.sh
IconsFont Awesome (see docs.json)

Do not

  • Skip frontmatter (title and description are required on every .mdx file)
  • Use absolute URLs for internal links (use root-relative: /path/to/page)
  • Use title case for headings (use sentence case: "Getting started", not "Getting Started")
  • Write code blocks without a language tag
  • Use <Steps> with ### headings inside (use <Step title="..."> children)
  • Include untested or invented code examples
  • Use placeholder values like "foo" or "bar" in code (use realistic values)
  • Reference outdated MiguelsPizza organization links
  • Mix Diataxis content types within a single page
  • Re-explain a concept that has a canonical page (link to it instead)
  • Re-document the proposed WebMCP API surface in detail when the upstream draft is more authoritative. Summarize, then link.
  • Blur the line between the WebMCP proposal and MCP-B extensions. Always clarify which layer a feature belongs to.
  • Overuse callouts. One per section at most.
  • Use decorative formatting, emoji, or excessive bold

Development

pnpm dev:docs # from the repo root. Preview at http://localhost:3000

Deployed automatically on push to main via Mintlify's GitHub integration.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.