get-tbd 0.1.30 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.md +5 -1
  2. package/dist/bin.mjs +3193 -2220
  3. package/dist/bin.mjs.map +1 -1
  4. package/dist/cli.mjs +1545 -821
  5. package/dist/cli.mjs.map +1 -1
  6. package/dist/{config-DVap9omo.mjs → config-BJz1m9eN.mjs} +179 -39
  7. package/dist/config-BJz1m9eN.mjs.map +1 -0
  8. package/dist/{config-BPHcePSm.mjs → config-DlCUMyCG.mjs} +1 -1
  9. package/dist/docs/README.md +5 -1
  10. package/dist/docs/SKILL.md +2 -2
  11. package/dist/docs/guidelines/backward-compatibility-rules.md +4 -0
  12. package/dist/docs/guidelines/bun-monorepo-patterns.md +20 -4
  13. package/dist/docs/guidelines/cli-agent-skill-patterns.md +120 -34
  14. package/dist/docs/guidelines/commit-conventions.md +4 -0
  15. package/dist/docs/guidelines/common-doc-guidelines.md +234 -0
  16. package/dist/docs/guidelines/convex-limits-best-practices.md +4 -0
  17. package/dist/docs/guidelines/convex-rules.md +4 -0
  18. package/dist/docs/guidelines/electron-app-development-patterns.md +4 -0
  19. package/dist/docs/guidelines/error-handling-rules.md +4 -0
  20. package/dist/docs/guidelines/general-coding-rules.md +4 -0
  21. package/dist/docs/guidelines/general-comment-rules.md +4 -0
  22. package/dist/docs/guidelines/general-eng-assistant-rules.md +4 -0
  23. package/dist/docs/guidelines/general-tdd-guidelines.md +4 -0
  24. package/dist/docs/guidelines/general-testing-rules.md +4 -0
  25. package/dist/docs/guidelines/golden-testing-guidelines.md +4 -0
  26. package/dist/docs/guidelines/pnpm-monorepo-patterns.md +27 -6
  27. package/dist/docs/guidelines/python-cli-patterns.md +4 -0
  28. package/dist/docs/guidelines/python-modern-guidelines.md +30 -0
  29. package/dist/docs/guidelines/python-rules.md +4 -0
  30. package/dist/docs/guidelines/release-notes-guidelines.md +4 -0
  31. package/dist/docs/guidelines/supply-chain-hardening.md +11 -7
  32. package/dist/docs/guidelines/tbd-sync-troubleshooting.md +10 -4
  33. package/dist/docs/guidelines/typescript-cli-tool-rules.md +27 -24
  34. package/dist/docs/guidelines/typescript-code-coverage.md +11 -7
  35. package/dist/docs/guidelines/typescript-rules.md +10 -6
  36. package/dist/docs/guidelines/typescript-sorting-patterns.md +4 -0
  37. package/dist/docs/guidelines/typescript-yaml-handling-rules.md +7 -3
  38. package/dist/docs/shortcuts/standard/agent-handoff.md +4 -0
  39. package/dist/docs/shortcuts/standard/checkout-third-party-repo.md +4 -0
  40. package/dist/docs/shortcuts/standard/code-cleanup-all.md +4 -0
  41. package/dist/docs/shortcuts/standard/code-cleanup-docstrings.md +4 -0
  42. package/dist/docs/shortcuts/standard/code-cleanup-tests.md +4 -0
  43. package/dist/docs/shortcuts/standard/code-review-and-commit.md +4 -0
  44. package/dist/docs/shortcuts/standard/coding-spike.md +4 -0
  45. package/dist/docs/shortcuts/standard/create-or-update-pr-simple.md +4 -0
  46. package/dist/docs/shortcuts/standard/create-or-update-pr-with-validation-plan.md +4 -0
  47. package/dist/docs/shortcuts/standard/implement-beads.md +4 -0
  48. package/dist/docs/shortcuts/standard/merge-upstream.md +4 -0
  49. package/dist/docs/shortcuts/standard/new-architecture-doc.md +4 -0
  50. package/dist/docs/shortcuts/standard/new-guideline.md +4 -0
  51. package/dist/docs/shortcuts/standard/new-plan-spec.md +4 -0
  52. package/dist/docs/shortcuts/standard/new-qa-playbook.md +4 -0
  53. package/dist/docs/shortcuts/standard/new-research-brief.md +4 -0
  54. package/dist/docs/shortcuts/standard/new-shortcut.md +4 -0
  55. package/dist/docs/shortcuts/standard/new-validation-plan.md +4 -0
  56. package/dist/docs/shortcuts/standard/plan-implementation-with-beads.md +4 -0
  57. package/dist/docs/shortcuts/standard/precommit-process.md +4 -0
  58. package/dist/docs/shortcuts/standard/review-code-python.md +4 -0
  59. package/dist/docs/shortcuts/standard/review-code-typescript.md +4 -0
  60. package/dist/docs/shortcuts/standard/review-code.md +4 -0
  61. package/dist/docs/shortcuts/standard/review-github-pr.md +4 -0
  62. package/dist/docs/shortcuts/standard/revise-all-architecture-docs.md +4 -0
  63. package/dist/docs/shortcuts/standard/revise-architecture-doc.md +4 -0
  64. package/dist/docs/shortcuts/standard/setup-github-cli.md +4 -0
  65. package/dist/docs/shortcuts/standard/sync-failure-recovery.md +4 -0
  66. package/dist/docs/shortcuts/standard/update-specs-status.md +4 -0
  67. package/dist/docs/shortcuts/standard/welcome-user.md +4 -0
  68. package/dist/docs/shortcuts/system/skill-baseline.md +2 -2
  69. package/dist/docs/tbd-closing.md +4 -0
  70. package/dist/docs/tbd-design.md +109 -68
  71. package/dist/docs/tbd-docs.md +20 -13
  72. package/dist/docs/tbd-prime.md +4 -0
  73. package/dist/docs/templates/architecture-doc.md +4 -0
  74. package/dist/docs/templates/plan-spec.md +4 -0
  75. package/dist/docs/templates/qa-playbook.md +4 -0
  76. package/dist/docs/templates/research-brief.md +4 -0
  77. package/dist/{id-mapping-CqrrLgeX.mjs → id-mapping-687_UEsy.mjs} +198 -124
  78. package/dist/id-mapping-687_UEsy.mjs.map +1 -0
  79. package/dist/{id-mapping-Ctfl_nc1.mjs → id-mapping-mtoSP9Qt.mjs} +1 -1
  80. package/dist/index.d.mts +53 -1
  81. package/dist/index.mjs +3 -3
  82. package/dist/{schemas-C8mOQykE.mjs → schemas-f0EcuAVu.mjs} +40 -3
  83. package/dist/schemas-f0EcuAVu.mjs.map +1 -0
  84. package/dist/{src-BK_EF6mk.mjs → src-CtZIHxYM.mjs} +3 -3
  85. package/dist/src-CtZIHxYM.mjs.map +1 -0
  86. package/dist/tbd +3193 -2220
  87. package/package.json +1 -1
  88. package/dist/config-DVap9omo.mjs.map +0 -1
  89. package/dist/docs/guidelines/general-style-rules.md +0 -38
  90. package/dist/docs/guidelines/writing-style-guidelines.md +0 -42
  91. package/dist/id-mapping-CqrrLgeX.mjs.map +0 -1
  92. package/dist/schemas-C8mOQykE.mjs.map +0 -1
  93. package/dist/src-BK_EF6mk.mjs.map +0 -1
@@ -100,19 +100,28 @@ So:
100
100
  Stop here unless you have many subcommands or need cross-session state, structured
101
101
  auth, or background services — then see §6 (CLI-as-skill) and §7 (MCP).
102
102
 
103
+ > **The skill points; the CLI documents.** A CLI’s `--help` (and per-command
104
+ > `mycli <cmd> --help`) is the source of truth for flags, arguments, and exact command
105
+ > sequences. The skill’s job is to name each capability and the command that reaches it,
106
+ > then let the agent open the CLI’s own help for the details.
107
+ > A skill carries the focused context an agent needs to judge that the tool is relevant;
108
+ > copying its help text, flag tables, and command recipes wholesale is the most common
109
+ > way a CLI-backed skill goes wrong.
110
+ > See §3.1 for why and §6.5 for how to avoid it.
111
+
103
112
  ### 0.3 The one-paragraph decision guide
104
113
 
105
114
  - **Prompt/instructions only** → ship a `SKILL.md`. (§3, §4)
106
115
  - **Project-wide conventions** (build/test/style) → add an `AGENTS.md`. (§2)
107
- - **You have a CLI** → `SKILL.md` + agent-friendly `--json` CLI. (§0.2, §6)
116
+ - **You have a CLI** → `SKILL.md` and an agent-friendly `--json` CLI. (§0.2, §6)
108
117
  - **Many subcommands / a knowledge library** → CLI-as-skill meta-pattern.
109
118
  (§6)
110
119
  - **A service with no CLI, or you need OAuth / multi-tenant / audit** → MCP server.
111
120
  (§7)
112
- - **Maximum reach across many agents** → layer them: AGENTS.md + SKILL.md + CLI + MCP.
121
+ - **Maximum reach across many agents** → layer them: AGENTS.md, SKILL.md, CLI, and MCP.
113
122
  (§1)
114
123
  - **Self-installs into agents & ships evolving skills?** → that is the advanced Tier 2
115
- pattern (self-upgrade + format versioning); most tools are Tier 1: a pure skill run
124
+ pattern (self-upgrade and format versioning); most tools are Tier 1: a pure skill run
116
125
  via a **pinned** `npx`/`uvx`. (§6.0)
117
126
 
118
127
  Everything below is reference material.
@@ -136,7 +145,7 @@ or capability.
136
145
  | 5. Per-agent polish | `.cursor/rules/*.mdc`, plugin packaging, ACP, etc. | Glob-scoped activation, enterprise distribution, editor discovery | Per-agent |
137
146
 
138
147
  **Recommended default for a tool author who wants broad reach**: ship an `AGENTS.md`
139
- snippet (universal baseline) + a `SKILL.md` (portable capability) + an agent-friendly
148
+ snippet (universal baseline), a `SKILL.md` (portable capability), and an agent-friendly
140
149
  CLI. Add an MCP server only when a CLI can’t serve the need.
141
150
  Add agent-specific files last, and only where they buy something.
142
151
 
@@ -204,8 +213,8 @@ current ones. Only the `format=fNN` value changes when the block’s shape chang
204
213
 
205
214
  ## 3. The Agent Skills Standard (SKILL.md)
206
215
 
207
- **What it is**: a folder with a `SKILL.md` file (YAML frontmatter + Markdown body), plus
208
- optional supporting files.
216
+ **What it is**: a folder with a `SKILL.md` file (YAML frontmatter and a Markdown body),
217
+ plus optional supporting files.
209
218
  Created by Anthropic (Dec 2025), published under Apache 2.0 at
210
219
  [agentskills.io](https://agentskills.io).
211
220
  280,000+ public skills exist as of early 2026.
@@ -231,6 +240,17 @@ material (schemas, examples, scripts) in supporting files.
231
240
  Scripts execute *outside* the context window — only their output costs tokens, which is
232
241
  why bundling a script can be far cheaper than inlining instructions.
233
242
 
243
+ **For a CLI-backed skill, the CLI itself is the Level-3 layer.** Treat `mycli --help`,
244
+ `mycli <command> --help`, and the tool’s informational subcommands (§6.1) as the
245
+ on-demand disclosure tier, the role supporting files play for a prompt-only skill.
246
+ The body (Level 2) should route to them, not transcribe them.
247
+ Inlining a command’s flags, arguments, or step-by-step usage pulls Level-3 detail up
248
+ into Level 2, so it loads on every activation and goes stale whenever the CLI changes.
249
+ The body names the capability and the command; the agent runs that command’s `--help` or
250
+ `--list` when it needs the mechanics.
251
+ This is progressive disclosure applied to a CLI: the tool documents itself, and the
252
+ skill stays a thin pointer to it.
253
+
234
254
  ### 3.2 Bundled scripts and resources
235
255
 
236
256
  A skill folder can ship executable helpers:
@@ -318,8 +338,8 @@ Earlier guidance cited a flat ~15K-character budget.
318
338
  - The skill listing gets a budget of **~1% of the model’s context window** by default
319
339
  (`skillListingBudgetFraction`, default `0.01`). When it overflows, the
320
340
  least-recently-invoked skills lose their descriptions first.
321
- - Per-skill listing text (`description` + `when_to_use`) is truncated at **1,536 chars**
322
- (`maxSkillDescriptionChars`).
341
+ - Per-skill listing text (`description` and `when_to_use`) is truncated at **1,536
342
+ chars** (`maxSkillDescriptionChars`).
323
343
  - `SLASH_COMMAND_TOOL_CHAR_BUDGET` overrides the fraction with a fixed character count.
324
344
  - `skillOverrides` can set any skill to `on` / `name-only` / `user-invocable-only` /
325
345
  `off` without editing the file; `/doctor` reports overflow.
@@ -399,14 +419,14 @@ Verified against the Codex source (`codex-rs/core-skills/src/loader.rs`, tags
399
419
  `<dir>/.agents/skills/` from the project root down to cwd), `User`
400
420
  (`$HOME/.agents/skills/`), `Admin`, plus plugin roots and `$CODEX_HOME/skills`. So a
401
421
  **plain repo-root `.agents/skills/<name>/SKILL.md` is read directly**, no manifest
402
- required. (The repo path is built by joining `.agents` + `skills` at runtime, so it does
403
- *not* appear as a contiguous `.agents/skills` literal in the binary — a `strings`-based
404
- inspection will miss it and see only `.agents/plugins/marketplace.json`; confirm against
405
- the source, not binary strings.)
406
- **Plugins** are an *additional* distribution layer (installable units bundling skills +
407
- MCP servers — 90+ ship with Codex), declared in `.agents/plugins/marketplace.json` (also
408
- reads `.claude-plugin/marketplace.json`) — useful for *publishing a bundle*, but not
409
- needed to make a repo-local skill load.
422
+ required. (The repo path is built by joining `.agents` and `skills` at runtime, so it
423
+ does *not* appear as a contiguous `.agents/skills` literal in the binary — a
424
+ `strings`-based inspection will miss it and see only `.agents/plugins/marketplace.json`;
425
+ confirm against the source, not binary strings.)
426
+ **Plugins** are an *additional* distribution layer (installable units bundling skills
427
+ and MCP servers — 90+ ship with Codex), declared in `.agents/plugins/marketplace.json`
428
+ (also reads `.claude-plugin/marketplace.json`) — useful for *publishing a bundle*, but
429
+ not needed to make a repo-local skill load.
410
430
  Codex skills may carry a richer **`agents/openai.yaml`** companion (e.g.
411
431
  `interface.display_name`, icons, `dependencies.tools[]`,
412
432
  `policy.allow_implicit_invocation`); map the portable
@@ -431,7 +451,7 @@ sandboxed.
431
451
  This is the pattern for a richer tool: a CLI that is itself a skill, exposing many
432
452
  capabilities as subcommands while costing a single description slot.
433
453
  `tbd` is the reference implementation; **Beads/`bd`** (Steve Yegge), `tbd`’s lineage,
434
- follows the same shape (subcommands + `AGENTS.md` + `--json` + an optional MCP server).
454
+ follows the same shape (subcommands, `AGENTS.md`, `--json`, and an optional MCP server).
435
455
 
436
456
  Use this when you have many capabilities, need cross-session state, or want a curated
437
457
  knowledge library the agent pulls from.
@@ -550,8 +570,39 @@ Rules: reference commands **explicitly** (`mycli command arg`, never “see the
550
570
  - **Actionable errors** that include the next command to run.
551
571
  - **Discoverable help**: an `IMPORTANT:` epilog pointing at a context-restore command
552
572
  (e.g., `mycli prime`), and a “Getting Started” one-liner.
553
- - **A `prime` command** (dashboard + status + rules) for session start and post-compact,
554
- distinct from `skill` (pure documentation).
573
+ - **A `prime` command** (dashboard, status, and rules) for session start and
574
+ post-compact, distinct from `skill` (pure documentation).
575
+ `prime` is **read-only**: it restores context but does not rewrite project files.
576
+ Because a `SessionStart` hook runs it on every session (§8), have `prime` print a
577
+ short reminder that the agent or user can run `setup` to refresh skills and settings
578
+ (for example after upgrading the tool).
579
+ That keeps the refresh **opt-in** rather than silently mutating the repo from a hook,
580
+ while still nudging stale installs forward.
581
+
582
+ **Route, don’t restate: the skill is a thin pointer, not a copy of `--help`.** The most
583
+ common failure when packaging a CLI as a skill is over-documentation, where the author
584
+ (often an LLM, eagerly) copies the CLI’s help, flag lists, and command recipes wholesale
585
+ into the skill body.
586
+ Don’t. A self-documenting CLI already carries that detail in `mycli --help`,
587
+ `mycli <command> --help`, and its informational subcommands (§6.1), so duplicating it
588
+ only adds cost and drift (§3.1). The skill is a **knowledge, awareness, and routing
589
+ layer**: it carries the focused context an agent needs to judge that the tool is
590
+ relevant, names each key use case once, and gives the one command that reaches it, then
591
+ trusts the agent to run that command (or its `--help`) for the specifics.
592
+
593
+ | In the skill body (awareness and routing) | In the CLI’s own help (mechanics) |
594
+ | --- | --- |
595
+ | Each key capability or use case, named once | The full flag and argument reference |
596
+ | The single command that reaches it (`mycli create`, `mycli guidelines <name>`) | Exact option syntax, defaults, and edge cases |
597
+ | When to use the tool, and which command for which intent | Step-by-step recipes for a specific command |
598
+ | Pointers: `mycli --help`, `mycli <cmd> --help`, `mycli <cmd> --list` | Examples and output formats |
599
+
600
+ A quick test: if a line in the skill would become *wrong* when you add a flag or change
601
+ behavior in the CLI, it belongs in the CLI’s help, not the skill.
602
+ Mention every key use case, but push the “how exactly” (the sequence of commands and
603
+ their options) down into the tool.
604
+ Adequate beats exhaustive: a short skill that reliably routes the agent to the right
605
+ command beats a long one that mirrors the manual.
555
606
 
556
607
  ### 6.6 Distribution & multi-agent install
557
608
 
@@ -621,14 +672,14 @@ project needs both.
621
672
  - **Fully generated install artifacts** (`.agents/skills/<tool>/SKILL.md`,
622
673
  `.claude/skills/<tool>/SKILL.md`, generated hook scripts, and the like): CLI-owned;
623
674
  mark them “DO NOT EDIT.” Pick **one of two modes** and be consistent:
624
- - **Commit + dogfood** (what `tbd` does): check the generated artifacts in, and add a
625
- **drift test** that regenerates them and fails if they differ.
675
+ - **Commit and dogfood** (what `tbd` does): check the generated artifacts in, and add
676
+ a **drift test** that regenerates them and fails if they differ.
626
677
  Pros: browsable on GitHub / skills.sh, the repo demonstrates its own output,
627
678
  reviewers see changes.
628
679
  Con: a regeneration shows up as a diff to commit.
629
680
  Keep generated output deterministic and formatter-stable (below) or the drift
630
681
  test/commits will churn.
631
- - **Gitignore + regenerate** (what `metaproc` does): add `.../skills/*/SKILL.md` to
682
+ - **Gitignore and regenerate** (what `metaproc` does): add `.../skills/*/SKILL.md` to
632
683
  `.gitignore` and let `setup`/`--install` (re)create them on demand.
633
684
  Pros: zero commit churn, no drift to guard.
634
685
  Con: not browsable in the repo, and no committed artifact to diff in review.
@@ -660,6 +711,20 @@ hook commands (or leave a wrapper) so existing Claude hooks keep working.
660
711
  skill content evolves *will* leave older generated files in users’ repos.
661
712
  Treat generated integration files like config migrations:
662
713
 
714
+ Reserve an `fNN` **format bump** for changes big enough to need an explicit migration: a
715
+ different on-disk shape, a moved or renamed managed region, or a changed hook contract.
716
+ Routine content edits (new skill text, an added shortcut, reworded guidance) are **not**
717
+ a format change. They ship by regenerating the surface, a full overwrite on the next
718
+ `setup` run, so they need no bump and no migration; bumping the format on every content
719
+ tweak would force needless migrations and churn.
720
+
721
+ The upgrade is also **opt-in, not silent**. A tool rewrites a user’s committed files
722
+ only when the user or agent explicitly runs `setup`/`setup --auto`, never from a
723
+ background hook or an ordinary read command.
724
+ Stamping a format lets an explicit `setup` detect an older layout and offer to migrate
725
+ it; it does not license the tool to mutate the repo on its own.
726
+ (This is why a `SessionStart` hook should run a read-only `prime`, not `setup`.)
727
+
663
728
  - Version the generated surfaces with an `fNN` format code.
664
729
  Prefer **one format code for all the tool’s managed surfaces** — reuse the tool’s
665
730
  existing config/data-format version as the single source of truth (tbd stamps the
@@ -670,6 +735,16 @@ Treat generated integration files like config migrations:
670
735
  line (`<!-- BEGIN … format=fNN … -->`), the skill “DO NOT EDIT” marker, script
671
736
  headers, or an equivalent hook signature.
672
737
  Prefer one marker line over a separate metadata comment.
738
+ - A **fully overwritten content surface** (a generated skill that is always rewritten
739
+ whole, never merged) does not strictly need its own stamp to upgrade cleanly: the next
740
+ `setup` replaces it outright.
741
+ It can lean on the single shared format code carried by a structural surface (such as
742
+ the `AGENTS.md` block).
743
+ But that only protects it if the forward-compatibility check runs **before** any
744
+ surface is written. If `setup` rewrites the skill first and only checks the `AGENTS.md`
745
+ format later, an older tool can partial-downgrade a newer committed skill before it
746
+ aborts. So either stamp and guard each generated surface, or run the format check up
747
+ front and write nothing until it passes.
673
748
  - On every `setup`/`setup --auto` run, **self-upgrade in place, safely and
674
749
  idempotently**: detect older formats and rewrite only the tool-owned regions (managed
675
750
  `AGENTS.md` block, generated skills, tool-owned hooks, `.codex/` config), re-running
@@ -732,7 +807,7 @@ The clean implementation is the host language’s plugin mechanism:
732
807
 
733
808
  Keep each registered skill a **spec** (name, two-part description, `allowed-tools`, a
734
809
  baseline source, and an optional dynamic catalog function) and run them all through the
735
- **same** `compose` + `--install` path, so every skill — first-party or third-party —
810
+ **same** `compose` and `--install` path, so every skill — first-party or third-party —
736
811
  gets identical frontmatter, the `DO NOT EDIT`/format marker, and deterministic output.
737
812
  This keeps the “one tool, many self-injecting commands” model open for extension without
738
813
  the core tool taking a dependency on every plugin.
@@ -810,8 +885,8 @@ See `tbd guidelines supply-chain-hardening` for the cross-ecosystem policy.
810
885
  `uv tool install` / `pipx install`. `uvx` reuses a persistent install if one exists.
811
886
  - **Go**: `go run <module>@<ver>` (compiles on the fly) or `go install`.
812
887
  - **Rust**: no first-class zero-install runner — ship **prebuilt binaries** (GitHub
813
- releases + a `curl … | sh` installer) or `cargo binstall`; `cargo install` compiles.
814
- - **Cross-language**: a prebuilt binary + install script, or a container image (Docker
888
+ releases and a `curl … | sh` installer) or `cargo binstall`; `cargo install` compiles.
889
+ - **Cross-language**: a prebuilt binary and install script, or a container image (Docker
815
890
  is emerging as the production-grade distribution for MCP servers).
816
891
 
817
892
  This mirrors how the ecosystem ships agent tooling today: **MCP servers** are most often
@@ -821,7 +896,7 @@ configs; **CLIs** like Beads offer `brew` / `npm -g` / `curl` installers, while
821
896
 
822
897
  **Recommendation**: default the skill to a **pinned zero-install invocation**
823
898
  (`uvx`/`npx <pkg>@<version>`) for maximum reach across ephemeral and cloud agents; offer
824
- **global install + a `SessionStart` bootstrap** as the optimization for persistent
899
+ **global install and a `SessionStart` bootstrap** as the optimization for persistent
825
900
  environments where the project wants lockfile-managed versions and warm-start speed.
826
901
 
827
902
  ### 6.8 Publishing & discovery — make the skill installable
@@ -832,15 +907,15 @@ and the ecosystem finds it.
832
907
  The landscape worth targeting:
833
908
 
834
909
  - **`skills.sh` / `npx skills add <owner/repo>`** (Vercel) — the cross-agent “npm for
835
- skills”: one command installs into `.agents/skills/` + symlinks per agent (Claude
910
+ skills”: one command installs into `.agents/skills/` and symlinks per agent (Claude
836
911
  Code, Codex, Cursor, Copilot, Gemini, …). No review; ranked by install telemetry.
837
912
  **This is the highest-leverage target** and needs zero extra infra.
838
913
  - **GitHub-scraping indexers** (SkillsMP ~800k skills, ClaudeSkills.info, LobeHub,
839
914
  claudemarketplaces.com) — auto-list public repos that contain a `SKILL.md` (often
840
- gated on ≥2 stars). You get listed for free just by being public + discoverable.
915
+ gated on ≥2 stars). You get listed for free just by being public and discoverable.
841
916
  - **Plugin marketplaces** — `.claude-plugin/marketplace.json` (Claude Code, the official
842
917
  Anthropic channel) and `.agents/plugins/marketplace.json` (Codex; Codex reads both).
843
- These are *plugin* channels: bundles of skills + MCP + hooks + commands.
918
+ These are *plugin* channels: bundles of skills, MCP servers, hooks, and commands.
844
919
  They are **only for publishing a bundle** — a repo-local skill already loads from
845
920
  `.claude/skills/` (Claude Code) and `.agents/skills/` (Codex) **without any
846
921
  manifest**, so don’t add one just to be discovered.
@@ -873,10 +948,10 @@ itself. Generate this distribution `SKILL.md` from the same source as your in-re
873
948
  pushing.
874
949
 
875
950
  `tbd` does exactly this: `skills/tbd/SKILL.md` is generated at build time from the same
876
- baseline, carries `name: tbd` + a trigger-rich description, and opens with the
877
- `npm install -g get-tbd` + `tbd setup --auto` bootstrap — so `npx skills add jlevy/tbd`
878
- gives an agent a working landing page, and `tbd setup` then upgrades it to the full
879
- multi-agent install (§6.6).
951
+ baseline, carries `name: tbd` and a trigger-rich description, and opens with the
952
+ `npm install -g get-tbd` and `tbd setup --auto` bootstrap — so
953
+ `npx skills add jlevy/tbd` gives an agent a working landing page, and `tbd setup` then
954
+ upgrades it to the full multi-agent install (§6.6).
880
955
 
881
956
  * * *
882
957
 
@@ -1007,7 +1082,7 @@ going:
1007
1082
  - **Codex App-Server** — JSON-RPC (Thread/Turn/Item) decoupling Codex logic from client
1008
1083
  surfaces; relevant only for Codex-specific integration surfaces.
1009
1084
  - **Plugin marketplaces & `npx skills`** — distribution is consolidating: Claude Code
1010
- plugin marketplaces (official + community), Codex plugins, and Vercel’s
1085
+ plugin marketplaces (official and community), Codex plugins, and Vercel’s
1011
1086
  `npx skills add` over the skills.sh directory (cross-agent symlinks).
1012
1087
  - **Routines / scheduled agents, background monitors, `/run` & `/verify` skills** —
1013
1088
  newer Claude Code capabilities for autonomous, event-triggered, and app-verifying
@@ -1031,6 +1106,10 @@ going:
1031
1106
  - Two-part rule: *what it does* + *when to use it*; third person; front-load keywords.
1032
1107
  - Progressive disclosure: metadata → body → supporting files; bundle scripts
1033
1108
  (output-only cost).
1109
+ - Route, don’t restate: name each capability and the command to run; let the CLI’s
1110
+ `--help` and informational subcommands hold the flags and recipes.
1111
+ Carry the focused context an agent needs to judge that the tool is relevant, but don’t
1112
+ blindly copy help into the skill; that wastes context and goes stale (§3.1, §6.5).
1034
1113
  - Respect the budget; verify the current model for your target agent (Claude Code ≈ 1%
1035
1114
  of context window, not a flat char count).
1036
1115
 
@@ -1065,6 +1144,9 @@ going:
1065
1144
  **Baseline (every skill)**
1066
1145
  - [ ] `SKILL.md` with `name` + two-part `description`
1067
1146
  - [ ] Body < 500 lines; bulky material in supporting files one level deep
1147
+ - [ ] Body carries the essential context to judge whether the tool is relevant and to
1148
+ name each key use case, but routes to `mycli <cmd> --help` or `--list` for flags and
1149
+ recipes instead of copying help wholesale
1068
1150
  - [ ] Third-person description, trigger keywords front-loaded
1069
1151
  - [ ] Installable via commit to `.agents/skills/`, Claude mirror at `.claude/skills/`,
1070
1152
  and/or `npx skills add`
@@ -1174,3 +1256,7 @@ going:
1174
1256
  - Supply-chain / dependency currency: `tbd guidelines bun-monorepo-patterns` or
1175
1257
  `pnpm-monorepo-patterns`
1176
1258
  - Testing: `tbd guidelines general-testing-rules`
1259
+
1260
+ <!-- This document follows common-doc-guidelines.md.
1261
+ See github.com/jlevy/practical-prose and review guidelines before editing.
1262
+ -->
@@ -77,3 +77,7 @@ ops: Update issue status for auth feature
77
77
  ops: Sync beads with remote
78
78
  process: Add TDD guidelines for agent workflows
79
79
  ```
80
+
81
+ <!-- This document follows common-doc-guidelines.md.
82
+ See github.com/jlevy/practical-prose and review guidelines before editing.
83
+ -->
@@ -0,0 +1,234 @@
1
+ ---
2
+ title: Common Documentation Guidelines
3
+ description: Common cross-project standards for writing and organizing docs, code comments, and text files — how to organize, structure, write, and format documents, plus the guideline footer convention. Downstream of github.com/jlevy/practical-prose. Use whenever writing or editing any documentation, README, guideline, or design doc.
4
+ author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ ---
6
+ # Common Documentation Guidelines
7
+
8
+ Version: v0.1 (last update 2026-05-11)\
9
+ Joshua Levy (github.com/jlevy)
10
+
11
+ ## Purpose
12
+
13
+ Both agents and humans benefit from accurate, maintained documentation.
14
+ These are brief and general guidelines for humans and agents when writing and organizing
15
+ code, text files, and documentation.
16
+
17
+ See the [Practical Prose](https://github.com/jlevy/practical-prose) repository for more
18
+ extensive guidelines and context.
19
+
20
+ ## Organizing Documentation
21
+
22
+ 1. **Organize documents for rapid orientation**
23
+
24
+ - All context for understanding a project should be efficiently discoverable.
25
+ - Documents should reference other documents whenever relevant.
26
+ - A reader should be able to navigate from an obvious root document to all other
27
+ documents relevant to a given need by following references.
28
+
29
+ 2. **Use self-evident filenames and concise references**
30
+
31
+ - For file naming, always follow existing project conventions.
32
+ If conventions are unclear, use the conventions here.
33
+ - Repos and key file folders should have a concise `README.md` as a root document
34
+ that points to other documents.
35
+ - Within the top-level repo or within key folders, a `docs/` folder should be added
36
+ with other key docs and referenced in the `README.md`.
37
+ - Whenever possible give documents brief but unique names.
38
+ - Include a hint of the *topic* as well as *purpose*, such as
39
+ `python-structural-quality-guidelines.md`.
40
+ - Documents that are likely to become less relevant over time should have *dates or
41
+ versions* as well, such as `plan-2026-04-28-browser-realtime-streaming.md`.
42
+ - Unless other rules forbid it, references within documents should be *maximally
43
+ concise* so they are easy to maintain:
44
+ - For URLs, use simple link text with the URL in Markdown format.
45
+ - For other documents, use the simplest unique reference, such as a title or
46
+ filename, that makes the document easy to find.
47
+ - Do not include unnecessary metadata, local paths, or other details readily
48
+ determined from a search.
49
+
50
+ 3. **Divide documents by ownership, audience, and cadence**
51
+
52
+ - Documents owned and maintained by different people or teams should usually be
53
+ distinct.
54
+ - Documents meant for different audiences (such as internal versus external, or team
55
+ docs versus sensitive docs) should be kept separate.
56
+ - Documents updated on different cadences (such as ad hoc, every sprint, or yearly)
57
+ should be distinct.
58
+ - Documents with the same ownership, audience, and update cadence should be
59
+ consolidated.
60
+
61
+ 4. **Organize documents for maintainability**
62
+
63
+ - Reference or include relevant guidelines for updates.
64
+ - Documents should be organized in a way that is compatible with typical update
65
+ processes.
66
+
67
+ ## Structuring Documents
68
+
69
+ 1. **Explain motivations and background**
70
+
71
+ - Assume readers have low context.
72
+ - Highest-level documents or introductory sections should explain *why* as well as
73
+ *what*.
74
+ - A key part of the *why* is explaining why some approaches are taken and their
75
+ benefits compared to alternate approaches or alternate tools.
76
+ - Cite external sources for all content that is best covered externally.
77
+
78
+ 2. **Give context gradually and efficiently**
79
+
80
+ - Documents should be as brief as possible while still preserving all relevant
81
+ detail.
82
+ - Add detail incrementally: start with summaries, link to deeper docs.
83
+
84
+ 3. **Keep details close to where they apply**
85
+
86
+ - For example, docstrings in code or descriptions within YAML are preferred to
87
+ separate documentation when the content directly relates to code or content in
88
+ those files.
89
+
90
+ 4. **Avoid duplication**
91
+
92
+ - Do *not* repeat content in higher-level docs if the details are in referenced
93
+ lower-level docs.
94
+ - For example, if `docs/design.md` is an overview of the design, do not repeat the
95
+ design in `README.md`; reference it instead.
96
+
97
+ 5. **Describe the present state, not what it replaced**
98
+
99
+ - By default, write as if the current work or referenced system or design always
100
+ existed. Most readers need to understand what *is*, not what *was*; replacement
101
+ history pollutes their context with deprecated concepts they would otherwise never
102
+ have to learn. When version control like Git is used, its history is the
103
+ authoritative record of what was removed.
104
+ - Agents are especially prone to retaining history notations that are no longer
105
+ relevant ( “this design was changed because of X,” “this function was previously
106
+ named X”, “removed Z”). When in doubt, cut it.
107
+ - Exceptions are allowed when the document’s purpose *includes* history: migration
108
+ guides, postmortems, deprecation notices, decision records, changelogs,
109
+ governance/versioning sections in standards and schemas, and one-line pointers when
110
+ a future reader needs to find a predecessor (for example, “see commit `abc123` for
111
+ the prior shape”). The test is whether the history serves the reader’s task or
112
+ simply records the author’s path.
113
+
114
+ ## Writing Style
115
+
116
+ Stylistically, emphasize **clarity**, **depth**, **rigor**, and **warmth**.
117
+
118
+ 1. **Be clear and concise**
119
+
120
+ - Use direct and simple language.
121
+ - Eliminate unnecessary or extraneous words.
122
+ - Avoid obvious statements.
123
+ - Remove duplication where a document says the same thing in different places.
124
+ - If removing a sentence loses no information about the subject, cut it.
125
+
126
+ 2. **Be detailed and specific**
127
+
128
+ - Use data or facts instead of generalizations or adjectives.
129
+ - Avoid vagueness or generalities.
130
+ - Use concrete examples.
131
+ - Cite sources whenever possible.
132
+
133
+ 3. **Be rigorous and logical**
134
+
135
+ - Use structure, such as headings, subheadings, and lists, effectively.
136
+ - Keep structure logical and consistent.
137
+ - Make headings specific; cleave to the true contours of the subject matter.
138
+
139
+ 4. **Be engaging and warm**
140
+
141
+ - Be friendly in tone, avoiding unnecessary formality unless required by the
142
+ situation (such as in legal documents).
143
+ - Be gracious in acknowledging previous work, even if correcting it.
144
+ - Avoid unnecessary coldness, blame, condescension, or opacity when writing for
145
+ humans. For agent-facing documents, the equivalent is directness, explicit context,
146
+ and absence of performative fluff.
147
+ `practical-prose-rubric.md` cites this as a Tone / Reader Respect contextual
148
+ modifier rather than a scored dimension.
149
+
150
+ ## Effective Communication
151
+
152
+ 1. **Respect the reader’s intelligence**
153
+
154
+ - Write for a reader that is *100% intelligent and 100% ignorant*. This respects the
155
+ reader yet provides enough context.
156
+ - Either explain concepts fully and from first principles or point them to where they
157
+ can learn the concept.
158
+ - Never dumb things down, be vague, or skip important technicalities or details.
159
+
160
+ 2. **Calibrate confidence**
161
+
162
+ - Never make a confident statement without citations or reasoning that justify the
163
+ confidence.
164
+ - Judgments are allowed but must be calibrated, considering evidence for and against.
165
+ - Do *not* aim to be agreeable; aim to be accurate when certain and explicit about
166
+ uncertainties.
167
+ - Do *not* make sweeping claims or use extravagant language.
168
+ Avoid words like “incontrovertibly,” “emphatically,” “definitively,”
169
+ “unequivocally,” “massive,” “monumental,” “profound,” “transformational,”
170
+ “seismic,” “paradigm-shifting,” “will revolutionize,” “structurally outmaneuvered,”
171
+ “successfully executing,” or “crushing it.”
172
+
173
+ 3. **Cut pompousness, meta-commentary, and unnecessary formality**
174
+
175
+ - Avoid “talking about talking,” such as narrating what a doc covers or instructing
176
+ readers on how to read a document.
177
+ Exception: standards, rubrics, runbooks, and other process documents may include
178
+ structural commentary (how dimensions map to rules, how to score, when to apply a
179
+ pass) when that commentary is what the document is *for*.
180
+ - Eliminate common but unnecessary phrases, such as “due to the fact” or “at this
181
+ point in time.” Avoid adverbs and general adjectives, such as “quickly respond” or
182
+ “very good.”
183
+ - Avoid pedantry, such as calling documents “canonical,” or giving justifications for
184
+ word choices. Jargon like “load-bearing” is acceptable when the audience uses it and
185
+ the term is genuinely descriptive (for example, a sentence-craft discussion citing
186
+ Gopen and Swan’s notion of *load-bearing constraints on sentence structure*); avoid
187
+ it as a filler intensifier in ordinary prose.
188
+ - Cut acronyms and jargon unless they serve a clear purpose.
189
+ - When technical terms or jargon are used, define them or reference their definition.
190
+
191
+ ## Formatting
192
+
193
+ > Block quotes like this should be used for meta-instructions, quotes, and epigraphs.
194
+
195
+ - **Boldface:** Use boldface for defining **key words** or concepts.
196
+ - **Italics:** Use italics for *general emphasis*.
197
+ - **Itemized lists:** Use bulleted lists whenever it aids with clarity.
198
+ Do not include full stops on each item for short lists and sentence fragments.
199
+ For lists with multiple sentences on each bullet (like this one), consistently use
200
+ full stops on all items.
201
+ - **Inline headings:** Inline headings, where the heading is on the same line as a
202
+ paragraph of text, should be formatted like this, using a boldfaced colon.
203
+ Use this format consistently for inline headings within itemized lists.
204
+ - **Em dashes:** Use em dashes *only* when they are the best punctuation for the
205
+ sentence. Prefer full stops, commas, colons, or semicolons as appropriate.
206
+ When you do use em dashes—like this—follow American style, without spaces around the
207
+ em dash.
208
+ - **Conjunctions:** Write “and” rather than `+` or `&` in prose, list separators, and
209
+ cross-references. Reserve `+` and `&` for code, identifiers, and proper names where
210
+ they are part of the canonical form (for example, “Strunk & White”).
211
+ - **Section headings:** Use Title Case (Chicago Manual of Style rules) for H1 `#` and H2
212
+ `##` headings (as in this document).
213
+ For H3 `###` and H4 `####`, title case is optional but should be applied consistently.
214
+
215
+ ### Auto-Formatting and Emojis
216
+
217
+ > These two conventions are tbd extensions not yet in upstream practical-prose; see the
218
+ > PR addendum proposing them upstream.
219
+
220
+ - **Auto-formatting:** Always use auto-formatting on every file type that supports it.
221
+ Defer to the language- or format-specific rules for exact style.
222
+ - **Emojis:** Do not use emojis gratuitously — only when they add clarity through a
223
+ consistent semantic vocabulary.
224
+ Use ✅ and ❌ for success and failure (or ✔︎ and ✘ if the codebase already uses them),
225
+ and ⚠️ and ‼️ for user-facing warnings and errors (or ∆ and ‼︎ to match an existing
226
+ codebase). You may use 📈 for reports and quantitative summaries, ⏰ for timings and
227
+ scheduling, and 🧪 for tests and experiments.
228
+ Apply whatever set you choose consistently.
229
+ Do not put emojis in code comments, where they add distraction without systematic
230
+ meaning.
231
+
232
+ <!-- This document follows common-doc-guidelines.md.
233
+ See github.com/jlevy/practical-prose and review guidelines before editing.
234
+ -->
@@ -2215,3 +2215,7 @@ constraints:
2215
2215
  | **10-50 KB** | Separate document or file storage | Use detail tables for on-demand fetch |
2216
2216
  | **50-900 KB** | **Must** use detail table or file storage | Approaching 1 MiB document limit |
2217
2217
  | **>900 KB** | **Must** use file storage with compression | Brotli compression for HTML/text (3:1 ratio) |
2218
+
2219
+ <!-- This document follows common-doc-guidelines.md.
2220
+ See github.com/jlevy/practical-prose and review guidelines before editing.
2221
+ -->
@@ -941,3 +941,7 @@ const mockAgentId = '12345;agents' as Id<'agents'>; // OK - looks like real Con
941
941
  entirely
942
942
 
943
943
  3. **Test IDs should follow Convex format** - if test ids `'12345;tableName'` pattern
944
+
945
+ <!-- This document follows common-doc-guidelines.md.
946
+ See github.com/jlevy/practical-prose and review guidelines before editing.
947
+ -->
@@ -835,3 +835,7 @@ Avoid `unsafe-eval` and `unsafe-inline`.
835
835
 
836
836
  - [Launchpad #1944468: Electron applications all crash upon launch](https://bugs.launchpad.net/bugs/1944468)
837
837
  — Ubuntu-specific Electron issues
838
+
839
+ <!-- This document follows common-doc-guidelines.md.
840
+ See github.com/jlevy/practical-prose and review guidelines before editing.
841
+ -->
@@ -561,3 +561,7 @@ grep -rn -A2 "} catch {" --include="*.ts" | grep -B1 "throw new"
561
561
  **Problematic patterns**:
562
562
  - `throw new CLIError('Failed to do X')` - Loses WHY it failed
563
563
  - `throw new Error('Operation failed')` - Generic message hides root cause
564
+
565
+ <!-- This document follows common-doc-guidelines.md.
566
+ See github.com/jlevy/practical-prose and review guidelines before editing.
567
+ -->
@@ -35,3 +35,7 @@ author: Joshua Levy (github.com/jlevy) with LLM assistance
35
35
  // Usage:
36
36
  const tradeCount = Math.min(trades.length, EXECUTION_STATS_LIMITS.maxTradeCount);
37
37
  ```
38
+
39
+ <!-- This document follows common-doc-guidelines.md.
40
+ See github.com/jlevy/practical-prose and review guidelines before editing.
41
+ -->
@@ -94,3 +94,7 @@ These are language-agnostic rules on comments:
94
94
  and at the top of files.
95
95
 
96
96
  - See language-specific comment rules for more details.
97
+
98
+ <!-- This document follows common-doc-guidelines.md.
99
+ See github.com/jlevy/practical-prose and review guidelines before editing.
100
+ -->
@@ -53,3 +53,7 @@ Therefore:
53
53
  That is useless generalization.
54
54
  Instead, specifically say what you’ve done, e.g., “I’ve added types, including
55
55
  generics, to all the methods in `Foo` and fixed all linter errors.”
56
+
57
+ <!-- This document follows common-doc-guidelines.md.
58
+ See github.com/jlevy/practical-prose and review guidelines before editing.
59
+ -->
@@ -145,3 +145,7 @@ Tests in the project are broken down into three types:
145
145
  Are not run on every commit as they can have costs or side effects or be slow.
146
146
  Requires all API keys.
147
147
  File names end with e2e.test.ts
148
+
149
+ <!-- This document follows common-doc-guidelines.md.
150
+ See github.com/jlevy/practical-prose and review guidelines before editing.
151
+ -->
@@ -25,3 +25,7 @@ author: Joshua Levy (github.com/jlevy) with LLM assistance
25
25
 
26
26
  - Test edge cases and boundaries: Include tests for empty inputs, nulls, maximums,
27
27
  minimums, and error conditions—not just happy paths.
28
+
29
+ <!-- This document follows common-doc-guidelines.md.
30
+ See github.com/jlevy/practical-prose and review guidelines before editing.
31
+ -->
@@ -812,3 +812,7 @@ Golden session testing works well alongside other testing strategies:
812
812
  - ScalaTest Matchers: https://www.scalatest.org/user_guide/using_matchers
813
813
 
814
814
  - Concordion (Java): https://concordion.org/
815
+
816
+ <!-- This document follows common-doc-guidelines.md.
817
+ See github.com/jlevy/practical-prose and review guidelines before editing.
818
+ -->