Technical Writing Standard
cursor/plugins
Applies four layers of technical-writing rules to docs, RFCs, readmes, PR descriptions and commit messages so a tired engineer follows them on the first read.
Sets the house style for the beads user docs: the canonical concept model, required terminology, prose and diagram conventions, and checks before docs work is done.
$ npx skills add gastownhall/beads --skill beads-docs -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install gastownhall/beads beads-docs --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/gastownhall/beads.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/beads-docs .claude/skills/beads-docs && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "beads-docs" agent skill from https://github.com/gastownhall/beads/tree/main/.claude/skills/beads-docs into .claude/skills/beads-docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beads-docs", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/gastownhall/beads/tree/main/.claude/skills/beads-docsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add gastownhall/beads --skill beads-docs -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install gastownhall/beads beads-docs --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gastownhall/beads.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/beads-docs .agents/skills/beads-docs && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "beads-docs" agent skill from https://github.com/gastownhall/beads/tree/main/.claude/skills/beads-docs into .agents/skills/beads-docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beads-docs", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gastownhall/beads --skill beads-docs -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install gastownhall/beads beads-docs --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gastownhall/beads.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/beads-docs .cursor/skills/beads-docs && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "beads-docs" agent skill from https://github.com/gastownhall/beads/tree/main/.claude/skills/beads-docs into .cursor/skills/beads-docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beads-docs", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/gastownhall/beads.git --path .claude/skills/beads-docs--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add gastownhall/beads --skill beads-docs -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install gastownhall/beads beads-docs --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gastownhall/beads.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/beads-docs .gemini/skills/beads-docs && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "beads-docs" agent skill from https://github.com/gastownhall/beads/tree/main/.claude/skills/beads-docs into .gemini/skills/beads-docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beads-docs", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install gastownhall/beads beads-docsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add gastownhall/beads --skill beads-docs -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/gastownhall/beads.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/beads-docs .github/skills/beads-docs && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "beads-docs" agent skill from https://github.com/gastownhall/beads/tree/main/.claude/skills/beads-docs into .github/skills/beads-docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beads-docs", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gastownhall/beads --skill beads-docs -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install gastownhall/beads beads-docs --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gastownhall/beads.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/beads-docs .opencode/skills/beads-docs && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "beads-docs" agent skill from https://github.com/gastownhall/beads/tree/main/.claude/skills/beads-docs into .opencode/skills/beads-docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "beads-docs", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
beads-docsSets the house style for the beads user docs: the canonical concept model, required terminology, prose and diagram conventions, and checks before docs work is done.
This skill applies whenever the agent touches anything under docs/, the Mintlify site that documents beads for its users, or writes prose about beads. The audience is a user installing bd, tracking work and syncing it, while contributor material in engdocs/ and AGENTS.md follows different rules. The goal is docs that motivate before they use jargon, say the same thing the same way everywhere, show concepts through pictures and snippets, and stay in step with the code.
It defines the canonical model to teach: a bead, its dependencies and ready work, the pipeline from formula to proto to molecule or wisp, gates, and Dolt sync and federation. The agent links to the core-concepts page instead of re-explaining it. Reference files cover terminology, simplification and verification, and the skill also sets rules for emphasis and diagrams, says generated docs are edited at their source, and lists the gates to run before docs work counts as done.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 5a5b7cf. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
makegoFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Beads Documentation Style Guide loads about 3.2k tokens when it runs, and up to ~5.8k if it reads all its reference files. Until then it costs about 198 tokens; SKILL.md has 1,680 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from gastownhall/beads at commit 5a5b7cf, republished under its MIT licence (© gastownhall). 1,680 words, ~3,246 tokens.
.claude/skills/beads-docs/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.This is the house style for docs/ — the beads user documentation, published
as a Mintlify site. The goal is docs that motivate before they jargon, say the
same thing the same way everywhere, show concepts as pictures and snippets
instead of walls of prose, and never drift from the code. Apply it to any page
you create, edit, or review.
The audience of docs/ is a user of beads — a human or agent installing
bd, tracking work, and syncing it. Contributor-facing material lives in
engdocs/ and AGENTS.md and follows different rules (it may describe the
implementation literally). When this skill says "the docs," it means docs/.
Beads is a dependency-aware issue graph with a workflow layer on top. Teach it
consistently and link to the canonical concept page —
docs/core-concepts/index.md — rather than re-explaining it.
| Concept | Role | Key idea |
|---|---|---|
| bead (issue) | the unit of work | one tracked item with a hash ID (bd-a1b2), type, status, priority; "bead" and "issue" name the same thing |
| dependency | ordering | blocks edges hide a bead from agents until its blockers close; parent-child, related, discovered-from organize without blocking |
| ready work | what bd ready computes | open beads with no open blockers, excluding in_progress, blocked, deferred, and hooked — the claimable frontier |
| formula | workflow source | a TOML/JSON file defining a DAG of steps; bd cook compiles it into a proto |
| proto | workflow template | a template epic (label template) with {{variables}}; not live work |
| molecule | instantiated workflow | real beads poured from a proto (bd mol pour); persistent |
| wisp | ephemeral molecule | same instantiation, transient lifecycle (bd mol wisp); purged by bd purge |
| gate | async wait | blocks a workflow step until closed — by a human, a timer, a GitHub run/PR, or a cross-rig bead |
| sync | cross-machine movement | Dolt push/pull over refs/dolt/data on the git remote; .beads/issues.jsonl is a passive export, never the database |
| federation | cross-repo sync | peer-to-peer sharing of beads across repos/organizations |
The pipeline worth internalizing: formula → (cook) → proto → (pour) →
molecule or → (wisp) → wisp. Gates pause molecule steps; bd ready
surfaces the claimable steps; sync moves the whole graph between machines.
Storage facts that pages keep getting wrong: embedded mode (the default
bd init) stores data at .beads/embeddeddolt/; server mode
(bd init --server) uses .beads/dolt/. Never present .beads/dolt/ as the
general data path.
Cross-project vocabulary (beads ↔ Gas City). Gas City (the sibling project) shares the words molecule, formula, wisp, and gate, but the two doc corpora use them differently: Gas City's docs treat molecule/wisp as v1 implementation detail (never a user concept), and a Gas City formula is an orchestration method the orchestrator runs across agents. In beads, molecule/wisp/proto ARE user concepts, and a formula is the TOML source you cook into a proto. Never import Gas City's definitions into beads pages (or vice versa); when a page must bridge the two projects, say explicitly which project's sense is meant.
Use the left column; never the right (except as noted). The full prose-vs-literal rename discipline is in references/terminology.md.
| Use this | Not this | Notes |
|---|---|---|
| bead / issue | "task", "ticket", "TODO item" as the unit's name | Both terms are correct and interchangeable; lead with bead when teaching identity, use issue when mirroring CLI output or flags (bd create, "issue types"). "task" is one issue type, never the generic unit. |
| ready work | "unblocked queue", "available tasks", "the ready set" as a formal term | Say what bd ready returns: open beads with no open blockers. |
| proto | "template" as a noun for the concept | template stays only as the literal label name protos carry. |
| molecule | "mol" in prose | mol is the command literal (bd mol pour); the concept is a molecule. |
| formula | conflating formula with molecule/proto | The formula is the file; cooking makes a proto; pouring makes live work. |
| gate | "barrier", "checkpoint", "lock" | Gates are async wait conditions with types (human, timer, gh:run, gh:pr, bead). |
| sync = Dolt push/pull | export/import as a sync workflow | bd dolt push / bd dolt pull over refs/dolt/data. .beads/issues.jsonl is a passive export for viewers and interchange. |
| embedded mode / server mode | "local mode", "daemon mode" for storage | Embedded is the default; data at .beads/embeddeddolt/. Server mode connects to dolt sql-server; data at .beads/dolt/. |
| federation | "multi-repo sync" as a distinct feature name | Federation is the peer-to-peer cross-repo sharing feature. |
| hash ID | "random ID", "UUID" | IDs like bd-a1b2 are content-derived hashes sized adaptively to prevent collisions. |
internal/* package paths, no
"this was removed in vX", no "(v0.20.1+)" gating on user pages — beads is a
1.x product and pre-1.0 archaeology belongs in engdocs/ or the CHANGELOG.bd invocation and what it prints.Navigation lives in docs/docs.json: Getting Started, Core Concepts,
Architecture, Workflows, Recovery, Multi-Agent, Integrations, Community, and
Reference — with the generated CLI Reference nested inside Reference as a
collapsed sub-group.
core-concepts/index; don't re-derive the
model on other pages — link to it.docs/.Most bloat is information stored in the wrong medium. Move it to a cheaper carrier, then delete what isn't pulling weight. Every page must stand alone — a reader landing cold needs a one-line setup, not a previous page.
Convert (move load off prose):
<Accordion>, or a reference page.
Keep the 80% case on the page.Delete (the load was fake): throat-clearing openers ("In this section we'll…"), hedge chains ("generally / typically / in most cases"), restatement, narrating an artifact a snippet already shows, and adjectives standing in for evidence.
When you run a deliberate simplification pass, follow references/simplification.md — the per-page loop and the two guardrails that keep a trim honest: a loss-check (never drop a fact that lives nowhere else) and a fact-check (trimmed prose must not drift from the code).
# H1 — the frontmatter title is the H1. Use ##/###./getting-started/quickstart).
Links out of the site (engdocs/, repo files) use full GitHub URLs..md as MDX: no HTML comments ({/* … */} instead), and
angle-bracket placeholders like <id> must stay inside backticks or code
fences.<Note>, <Tip>, <Warning>, <Accordion>)
sparingly — they lose force with repetition.Mermaid fences render natively — prefer them for graphs and flows. For richer
diagrams use the Excalidraw pipeline: author the .excalidraw source under
docs/diagrams/excalidraw/, render with make diagrams-excalidraw (source
and rendered .svg are both committed), embed as
/diagrams/excalidraw-rendered/<name>.svg with descriptive alt text, and
keep labels short (a two-line "Name / role" beats a sentence crammed in a
box). Two non-negotiables:
Never hand-edit a generated file. The generated surfaces are:
docs/cli-reference/*.md and the CLI Reference pages array inside
docs/docs.json — bd emits vendor-neutral pages (bd help --docs-root,
from the Cobra command strings in cmd/bd/*.go) into an uncommitted
staging tree, and tools/docsmint post-processes them into the committed
Mintlify form. bd itself never emits Mintlify (or any site-generator)
specifics; that lives in docsmint.docs/CLI_REFERENCE.md — the single-file reference, emitted directly by
bd help --docs-root.To change wording in any of them, edit the Go source (Short:, Long:,
Example: strings) and run ./scripts/generate-cli-docs.sh (which runs both
stages). To change the Mintlify page form itself (comment markers, link
style, nav), edit tools/docsmint and its tests. The drift gates
(generate-cli-docs.sh --check, scripts/check-cli-docs-drift.sh in PR CI,
and the docs-autofix bot) fail or auto-fix any hand edit.
The docs describe the pinned release, not main. docs/cli-docs.pin
names the release tag the whole docs corpus targets; the pipeline builds bd
from that tag and validates against it, so a Go-source edit on main shows up
in the committed docs only after the pin is bumped (at release time,
followed by a regeneration). Hand-written pages follow the same policy:
document what the pinned release does, never main-only features. See
engdocs/decisions/2026-07-17-docs-release-pin.md.
Run the gates in references/verification.md.
The short list: go test ./test/docsync (nav↔file sync + link conventions),
./scripts/generate-cli-docs.sh --check (generated docs fresh),
./scripts/check-doc-freshness.sh (Last reviewed markers), and a live
preview with make docs-dev (or ./mint.sh dev) at localhost:3000.
When you move or remove a page: add a redirect to the redirects array
in docs/docs.json, rewrite inbound links repo-wide (README, engdocs/,
examples/, npm-package/, plugin resources — grep, don't guess), and check
whether bd prints the old path (if so, fix the Go source and regenerate —
never a pointer stub; decision 6 covers old routes with redirects).
docs/) separate from contributor
docs (engdocs/, AGENTS.md) separate from generator/Go changes.AGENTS.md.© gastownhall, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references) in .claude/skills/beads-docs of gastownhall/beads.
Open the folder on GitHubat commit 5a5b7cf
Beads Documentation Style Guide next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Beads Documentation Style Guide this skillgastownhall/beads | 28k | — | ~3.2k | Automated safety check: Pass | MIT | |
| Technical Writing Standardcursor/plugins | 10k | 10 repos | ~2.4k | Automated safety check: Pass | None | |
| Heym Documentation Articlesheymrun/heym | 1.4k | — | ~780 | Automated safety check: Pass | Custom licence | |
| Developer Docs Technical Writervercel-labs/github-tools | 131 | — | ~3.9k | Automated safety check: Pass | MIT | |
| Aholo Viewer Docsmanycoretech/aholo-viewer | 1.1k | — | ~341 | Automated safety check: Pass | MIT | |
| DiataxisWebMCP-org/npm-packages | 104 | — | ~1.7k | Automated safety check: Pass | MIT |
cursor/plugins
Applies four layers of technical-writing rules to docs, RFCs, readmes, PR descriptions and commit messages so a tired engineer follows them on the first read.
heymrun/heym
Creates and updates documentation articles for the Heym platform: category choice, manifest entry, markdown file and cross-links from existing pages.
vercel-labs/github-tools
Writes, reviews and edits developer documentation for SDKs, libraries and frameworks, from getting-started guides and API references to migration guides.
manycoretech/aholo-viewer
Guides writing and maintaining Aholo Viewer documentation: README, AGENTS.md, architecture notes, bilingual manual pages and AI collaboration guides.
WebMCP-org/npm-packages
Write technical documentation following the Diataxis framework by Daniele Procida.
alloc/drizzle-plus
A skill your agent uses when authoring, reviewing, or restructuring Markdown documentation, especially docs architecture, page purpose, examples, technical-writing quality, and docs-change review.
gastownhall/beads
Tracks multi-session work with dependencies in the bd issue tracker so the agent can find ready tasks and recover its context after conversation compaction.
Categories
Sets the house style for the beads user docs: the canonical concept model, required terminology, prose and diagram conventions, and checks before docs work is done. This skill applies whenever the agent touches anything under docs/, the Mintlify site that documents beads for its users, or writes prose about beads.md follows different rules.
Beads Documentation Style Guide fits situations like: writing or restructuring a page in the beads docs; fixing wrong or confusing documentation under docs/; renaming a term consistently across the docs; reviewing documentation changes against the house style.
Run `npx skills add gastownhall/beads --skill beads-docs -a claude-code`. Or copy the skill folder (.claude/skills/beads-docs in gastownhall/beads) into .claude/skills/beads-docs in your project. Claude Code loads it when a task matches its description.
Run `npx skills add gastownhall/beads --skill beads-docs -a codex`. Or copy the skill folder (.claude/skills/beads-docs in gastownhall/beads) into .agents/skills/beads-docs in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add gastownhall/beads --skill beads-docs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/beads-docs, .gemini/skills/beads-docs, .github/skills/beads-docs and .opencode/skills/beads-docs in your project.
Going by SKILL.md and its folder, Beads Documentation Style Guide needs the command-line tools its instructions call (make and go).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Beads Documentation Style Guide is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Beads Documentation Style Guide: Technical Writing Standard (cursor/plugins, 10k stars), Heym Documentation Articles (heymrun/heym, 1.4k stars), Developer Docs Technical Writer (vercel-labs/github-tools, 131 stars) and Aholo Viewer Docs (manycoretech/aholo-viewer, 1.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
gastownhall (a GitHub organization) maintains it in gastownhall/beads, which has 27,751 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 9, 2026.
Source: gastownhall/beads on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.