get-tbd 0.2.3 → 0.3.0

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 (83) hide show
  1. package/README.md +38 -6
  2. package/dist/bin.mjs +3494 -949
  3. package/dist/bin.mjs.map +1 -1
  4. package/dist/cli.mjs +1827 -1312
  5. package/dist/cli.mjs.map +1 -1
  6. package/dist/{config-1ouUTKQr.mjs → config-B1w3pAkY.mjs} +142 -290
  7. package/dist/config-B1w3pAkY.mjs.map +1 -0
  8. package/dist/config-DXhifxOw.mjs +3 -0
  9. package/dist/doc-cache-CamtXfi4.mjs +1035 -0
  10. package/dist/doc-cache-CamtXfi4.mjs.map +1 -0
  11. package/dist/doc-cache-CiBwpDTf.mjs +3 -0
  12. package/dist/doc-fork-BMjqzfAs.mjs +3 -0
  13. package/dist/doc-fork-CoPi1G1N.mjs +304 -0
  14. package/dist/doc-fork-CoPi1G1N.mjs.map +1 -0
  15. package/dist/docref-C7g0sjvL.mjs +167 -0
  16. package/dist/docref-C7g0sjvL.mjs.map +1 -0
  17. package/dist/docs/README.md +38 -6
  18. package/dist/docs/SKILL.md +13 -4
  19. package/dist/docs/guidelines/backward-compatibility-rules.md +1 -0
  20. package/dist/docs/guidelines/bun-monorepo-patterns.md +1 -0
  21. package/dist/docs/guidelines/cli-agent-skill-patterns.md +124 -38
  22. package/dist/docs/guidelines/commit-conventions.md +1 -0
  23. package/dist/docs/guidelines/common-doc-guidelines.md +1 -0
  24. package/dist/docs/guidelines/convex-limits-best-practices.md +1 -0
  25. package/dist/docs/guidelines/convex-rules.md +1 -0
  26. package/dist/docs/guidelines/electron-app-development-patterns.md +1 -0
  27. package/dist/docs/guidelines/error-handling-rules.md +1 -0
  28. package/dist/docs/guidelines/general-coding-rules.md +1 -0
  29. package/dist/docs/guidelines/general-comment-rules.md +1 -0
  30. package/dist/docs/guidelines/general-eng-agent-principles.md +1 -0
  31. package/dist/docs/guidelines/general-tdd-guidelines.md +1 -0
  32. package/dist/docs/guidelines/general-testing-rules.md +1 -0
  33. package/dist/docs/guidelines/golden-testing-guidelines.md +1 -0
  34. package/dist/docs/guidelines/pnpm-monorepo-patterns.md +1 -0
  35. package/dist/docs/guidelines/python-cli-patterns.md +1 -0
  36. package/dist/docs/guidelines/python-modern-guidelines.md +1 -0
  37. package/dist/docs/guidelines/python-rules.md +1 -0
  38. package/dist/docs/guidelines/release-notes-guidelines.md +1 -0
  39. package/dist/docs/guidelines/supply-chain-hardening.md +3 -2
  40. package/dist/docs/guidelines/tbd-sync-troubleshooting.md +1 -0
  41. package/dist/docs/guidelines/typescript-cli-tool-rules.md +1 -0
  42. package/dist/docs/guidelines/typescript-code-coverage.md +1 -0
  43. package/dist/docs/guidelines/typescript-rules.md +1 -0
  44. package/dist/docs/guidelines/typescript-sorting-patterns.md +1 -0
  45. package/dist/docs/guidelines/typescript-yaml-handling-rules.md +1 -0
  46. package/dist/docs/references/docmap-format.md +64 -0
  47. package/dist/docs/references/docref-format.md +71 -0
  48. package/dist/docs/shortcuts/standard/checkout-third-party-repo.md +17 -4
  49. package/dist/docs/shortcuts/standard/new-shortcut.md +5 -5
  50. package/dist/docs/shortcuts/standard/plan-implementation-with-beads.md +1 -1
  51. package/dist/docs/shortcuts/standard/suggest-upstream-improvements.md +69 -0
  52. package/dist/docs/shortcuts/standard/sync-failure-recovery.md +1 -1
  53. package/dist/docs/shortcuts/standard/welcome-user.md +28 -0
  54. package/dist/docs/shortcuts/system/skill-baseline.md +13 -4
  55. package/dist/docs/tbd-design.md +141 -0
  56. package/dist/docs/tbd-docs.md +169 -5
  57. package/dist/docs/tbd-prime.md +0 -1
  58. package/dist/docs/templates/qa-playbook.md +3 -1
  59. package/dist/docs/templates/research-brief.md +2 -2
  60. package/dist/fork-manifest-ByU7U2do.mjs +253 -0
  61. package/dist/fork-manifest-ByU7U2do.mjs.map +1 -0
  62. package/dist/fork-manifest-C7lGRq-6.mjs +3 -0
  63. package/dist/{id-mapping-mtoSP9Qt.mjs → id-mapping-D0iitY-F.mjs} +1 -1
  64. package/dist/{id-mapping-687_UEsy.mjs → id-mapping-DAIeLKzm.mjs} +8 -200
  65. package/dist/id-mapping-DAIeLKzm.mjs.map +1 -0
  66. package/dist/index.d.mts +90 -13
  67. package/dist/index.mjs +3 -3
  68. package/dist/lockfile-BR0laSDy.mjs +198 -0
  69. package/dist/lockfile-BR0laSDy.mjs.map +1 -0
  70. package/dist/paths-C1DpnZJW.mjs +405 -0
  71. package/dist/paths-C1DpnZJW.mjs.map +1 -0
  72. package/dist/{schemas-f0EcuAVu.mjs → schemas-lCwRk30L.mjs} +19 -6
  73. package/dist/schemas-lCwRk30L.mjs.map +1 -0
  74. package/dist/{src-DTyyuaG_.mjs → src-CxKOynr1.mjs} +3 -3
  75. package/dist/src-CxKOynr1.mjs.map +1 -0
  76. package/dist/tbd +3494 -949
  77. package/dist/yaml-utils-BPy991by.mjs.map +1 -1
  78. package/package.json +1 -1
  79. package/dist/config-1ouUTKQr.mjs.map +0 -1
  80. package/dist/config-YRRW9l89.mjs +0 -3
  81. package/dist/id-mapping-687_UEsy.mjs.map +0 -1
  82. package/dist/schemas-f0EcuAVu.mjs.map +0 -1
  83. package/dist/src-DTyyuaG_.mjs.map +0 -1
@@ -2,10 +2,17 @@
2
2
  title: Agent Skills and CLI Integration Patterns
3
3
  description: How to write skills and agent-integrated CLIs that work across Claude Code, Codex, and the broader coding-agent ecosystem—a simple baseline plus references for advanced, multi-subcommand tools
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: general
5
6
  ---
6
7
  # Agent Skills and CLI Integration Patterns
7
8
 
8
- **Last Updated**: 2026-06-04 (§4.6 adds the “attention routing” framingthe slopdocs vs.
9
+ **Last Updated**: 2026-06-13 (issue #173: named the L2b variantan L2 self-installer
10
+ that also writes a managed `AGENTS.md` block, `pprose` reference—reframed
11
+ format-versioning as artifact-driven rather than L3-only, added the §6.7 generator-side
12
+ dev-build pin rule, dropped the redundant `surface=` tag from the marker examples, added
13
+ multi-block collapse in §2, and refreshed §6.6 for Cursor’s native `.agents/skills/`
14
+ scanning and the spread of native per-agent skill dirs.
15
+ Earlier 2026-06-04: §4.6 adds the “attention routing” framing—the slopdocs vs.
9
16
  hiding-details failure modes—as a contained section, and the §3.1 mechanism callback
10
17
  points at it. Earlier 2026-06-02: §6.8 now covers Anthropic’s official and community
11
18
  plugin marketplaces—the reviewed, gated submission channel—and the `/plugin` install
@@ -126,9 +133,10 @@ So:
126
133
  - **Maximum reach across many agents** → layer them: AGENTS.md, SKILL.md, CLI, and MCP.
127
134
  (§1)
128
135
  - **Self-installs into agents?** → climb the integration ladder (§6.0): L0 pure skill →
129
- L1 skill + pinned `npx`/`uvx` → L2 self-install into skill dirs only (`qmd`) L3 full
130
- platform with managed `AGENTS.md`, hooks, and format versioning (`tbd`). Most tools
131
- are L1; stop as low as you can.
136
+ L1 skill and pinned `npx`/`uvx` → L2 self-install into skill dirs (`qmd`; its **L2b**
137
+ variant also writes a managed `AGENTS.md` block, `pprose`) L3 full platform with
138
+ hooks, `prime`/`setup`, and format-versioned migration (`tbd`). Most tools are L1;
139
+ stop as low as you can.
132
140
 
133
141
  Everything below is reference material.
134
142
  You do not need most of it for most tools.
@@ -202,7 +210,7 @@ Version the managed block by carrying the format on the **begin marker line itse
202
210
  generated content without touching user-authored text:
203
211
 
204
212
  ```markdown
205
- <!-- BEGIN MYCLI INTEGRATION format=f02 surface=agents-md -->
213
+ <!-- BEGIN MYCLI INTEGRATION format=f02 -->
206
214
  ## mycli
207
215
 
208
216
  - Run `mycli prime` for current project context.
@@ -215,6 +223,17 @@ Keep the begin/end marker *names* stable (`<!-- BEGIN MYCLI INTEGRATION`)—matc
215
223
  prefix so detection finds both legacy blocks (no `format=`, treated as `f01`) and
216
224
  current ones. Only the `format=fNN` value changes when the block’s shape changes.
217
225
 
226
+ The marker carries only `format=fNN`. An artifact’s type is clear from its **location**
227
+ (a `SKILL.md` under a skill dir, or this BEGIN/END block in `AGENTS.md`), so no in-file
228
+ `surface=` tag is needed, and the portable and Claude `SKILL.md` copies stay
229
+ byte-identical.
230
+ On install, if several managed blocks have accumulated (for example after
231
+ a marker-prefix rename across versions), collapse them: replace every matching block
232
+ with one current block at the position of the first, and preserve everything outside the
233
+ markers.
234
+ Collapse only finds blocks whose begin-prefix the installer recognizes, so match
235
+ a small set of known legacy prefixes, not just the current one.
236
+
218
237
  * * *
219
238
 
220
239
  ## 3. The Agent Skills Standard (SKILL.md)
@@ -503,7 +522,7 @@ Four rungs, lightest first:
503
522
  install command. The agent follows the body directly.
504
523
  Garry Tan’s **gstack** (23 plain skills) is L0. Install by committing to a discovery
505
524
  dir or `npx skills add`.
506
- - **L1—skill + delegated CLI (zero-install).** Ship a `SKILL.md` that points at a CLI
525
+ - **L1—skill and delegated CLI (zero-install).** Ship a `SKILL.md` that points at a CLI
507
526
  invoked through a **version-pinned** zero-install runner—`npx --yes pkg@<ver>`,
508
527
  `uvx --from pkg@<ver>`, or `pipx run pkg==<ver>` (§6.7). No install command, no
509
528
  managed `AGENTS.md` block, no hooks, no format versioning.
@@ -522,26 +541,42 @@ Four rungs, lightest first:
522
541
  and **stops there**: no managed `AGENTS.md` block, no hooks, no `prime`/`setup`
523
542
  context machinery. Because it never touches a human-authored project-instruction file
524
543
  and always full-overwrites its own generated skill, it does **not** need the §6.6
525
- format-version / migration apparatus—a re-install is just a clean overwrite.
526
- **`qmd`** (Tobi Lütke’s Markdown search tool) is the reference: `qmd skill install` /
527
- `--global`, an embedded skill with a build-time drift test, a
544
+ format-version and migration apparatus—a re-install is just a clean overwrite.
545
+ **`qmd`** (Tobi Lütke’s Markdown search tool) is the reference: `qmd skill install`
546
+ and `--global`, an embedded skill with a build-time drift test, a
528
547
  `.claude-plugin/marketplace.json`, and an MCP server—all without writing to
529
- `AGENTS.md` at all.
548
+ `AGENTS.md` at all. One useful variant sits between L2 and L3—call it **L2b**: an L2
549
+ self-installer that *also* writes a compact managed `AGENTS.md` block (an always-on
550
+ bootstrap naming the tool, its trigger, and the pinned runner), but still no hooks,
551
+ `prime`/`setup`, or DocCache.
552
+ That block is the one L3 surface a small tool can adopt on its own; because it is
553
+ merged into a human-authored file rather than overwritten whole, an L2b tool **does**
554
+ need the §6.6 format-stamp and forward-compatibility guard.
555
+ **`pprose`** (Practical Prose) is the reference, writing `.agents/skills/`, the
556
+ `.claude/skills/` mirror, and a `format=fNN`-stamped `AGENTS.md` block with the same
557
+ refuse-to-clobber-newer guard `tbd` uses.
530
558
  - **L3—full self-installing CLI platform.** Everything in L2 **plus** a managed
531
559
  `AGENTS.md` block, lifecycle hooks (`SessionStart`/`PreCompact`), `prime` and `setup`
532
- commands, format-versioned migration with a forward-compatibility guard (§6.6), and
533
- usually a knowledge-injection meta-skill (§6.2) backed by a path-ordered DocCache
534
- (§6.3). Take this on only for a tool with many capabilities, cross-session state, or a
535
- curated knowledge library.
536
- **`tbd`** is the reference implementation; **Beads/`bd`** follows the same shape.
537
- Such platforms are typically **project-only and version-pinned per repo** (§6.6.2):
538
- the tool is part of the project’s reproducible toolchain, so global scope is usually
539
- not worth offering. `qmd` (L2) offers global/dual scope precisely because it is a
540
- general-purpose utility that carries no per-project config.
541
-
542
- The self-upgrade and format-versioning rules in §6.6 apply **only to L3**—L0–L2 never
543
- need them. If in doubt, you are L1: `tbd` is an L3 reference implementation, `qmd` an L2
544
- one, and most CLIs are neither.
560
+ commands, format-versioned migration across every managed surface (§6.6), and usually
561
+ a knowledge-injection meta-skill (§6.2) backed by a path-ordered DocCache (§6.3). Take
562
+ this on only for a tool with many capabilities, cross-session state, or a curated
563
+ knowledge library. **`tbd`** is the reference implementation; **Beads/`bd`** follows
564
+ the same shape. Such platforms are typically **project-only and version-pinned per
565
+ repo** (§6.6.2): the tool is part of the project’s reproducible toolchain, so global
566
+ scope is usually not worth offering.
567
+ `qmd` (L2) offers global/dual scope precisely because it is a general-purpose utility
568
+ that carries no per-project config.
569
+
570
+ Format-versioning is **artifact-driven, not rung-driven**: the §6.6 format-stamp and
571
+ forward-compatibility guard apply to **any rung that writes a generated artifact it may
572
+ later need to upgrade or refuse to clobber**—in practice a managed `AGENTS.md` block
573
+ (the L2b variant, or L3) or a committed generated skill shared across tool versions.
574
+ A tool that only overwrites its own discovery-dir skill whole (plain L0–L2) never needs
575
+ them.
576
+ What stays strictly L3 is the rest of the platform: hooks, `prime`/`setup`, and the
577
+ meta-skill/DocCache machinery.
578
+ If in doubt, you are L1: `tbd` is an L3 reference implementation, `pprose` the L2b
579
+ variant, `qmd` a plain L2 one, and most CLIs are none of these.
545
580
 
546
581
  ### 6.1 Two kinds of commands
547
582
 
@@ -622,7 +657,7 @@ Rules: reference commands **explicitly** (`mycli command arg`, never “see the
622
657
  - **`--json` on every command**—one output path that renders human or machine output.
623
658
  - **`--brief`/`--quiet`** for constrained contexts and scripts.
624
659
  - **Idempotent `setup --auto`** (non-interactive) vs.
625
- `setup --interactive` for humans; never let an agent get stuck on a prompt.
660
+ a guided setup for humans; never let an agent get stuck on a prompt.
626
661
  - **Actionable errors** that include the next command to run.
627
662
  - **Discoverable help**: an `IMPORTANT:` epilog pointing at a context-restore command
628
663
  (e.g., `mycli prime`), and a “Getting Started” one-liner.
@@ -669,17 +704,25 @@ only where a target agent requires it:
669
704
  - `.agents/skills/<tool>/SKILL.md`—the portable project skill.
670
705
  **Be precise about who reads this path natively vs.
671
706
  who reaches it via an installer**, rather than claiming a flat “all agents read it”:
672
- - **Scans repo-root `.agents/skills/` natively** (verified): **Codex** (source above)
673
- and **Gemini CLI** (documents `.agents/skills/` as a workspace/user alias).
674
- **pi** / **OpenCode** scan project Agent Skills dirs.
707
+ - **Scans repo-root `.agents/skills/` natively** (verified): **Codex** (source above),
708
+ **Cursor** (its Agent Skills docs list `.agents/skills/`, `.cursor/skills/`, and the
709
+ `~/` global variants, plus `.claude/skills/` and `.codex/skills/` for
710
+ compatibility), and **Gemini CLI** (documents `.agents/skills/` as a workspace/user
711
+ alias). **pi** and **OpenCode** scan project Agent Skills dirs.
675
712
  - **Reached via the cross-agent installer**: `npx skills add` copies the same
676
713
  `SKILL.md` into `.agents/skills/` and **symlinks it into each agent’s own dir**
677
- (Cursor, Copilot, Cline, Amp, Windsurf, …). For those agents the *installer*, not
678
- the agent, is what binds `.agents/skills/` to their native location—so “works with
679
- Cursor/Copilot/…” means “via skills.sh”, not “Cursor scans `.agents/skills/`
680
- itself.”
714
+ (Copilot, Cline, Amp, Windsurf, …). For an agent that does not scan
715
+ `.agents/skills/` itself, the *installer*, not the agent, binds it to that agent’s
716
+ native location, so “works with Copilot/…” means “via skills.sh”, not “the agent
717
+ scans `.agents/skills/` itself.”
681
718
  - **Claude Code does NOT scan `.agents/`** at all—it reads only `.claude/skills/`
682
719
  (next bullet), which is why the mirror is required, not optional.
720
+ - **Native per-agent skill dirs are multiplying** (community catalogs, mid-2026;
721
+ verify per agent): beyond `.claude/skills/`, agents document their own dirs such as
722
+ `.cursor/skills/`, `.github/skills/` (Copilot), `.gemini/skills/`,
723
+ `.opencode/skills/`, `.windsurf/skills/`, and `.agent/skills/` (Google Antigravity).
724
+ Emitting only the portable `.agents/skills/` and the Claude mirror and letting
725
+ `npx skills add` fan out the rest scales better than writing each one.
683
726
  - When in doubt, verify against the agent’s source/docs before asserting native
684
727
  scanning.
685
728
  - `.claude/skills/<tool>/SKILL.md`—Claude Code compatibility mirror (required: Claude
@@ -693,7 +736,7 @@ tbd should write a CLI-managed `SKILL.md` to `.agents/skills/tbd/`, mirror it to
693
736
  also feeds Cursor, Codex, and Factory), preserving user content outside the markers:
694
737
 
695
738
  ```markdown
696
- <!-- BEGIN MYCLI INTEGRATION format=f02 surface=agents-md -->
739
+ <!-- BEGIN MYCLI INTEGRATION format=f02 -->
697
740
  ## mycli
698
741
 
699
742
  - Run `mycli prime` for current project context.
@@ -770,10 +813,14 @@ Do not make Codex hooks call scripts stored under `.claude/`—that couples Code
770
813
  Claude setup. If a script must move out of `.claude/scripts/`, update the tbd-owned hook
771
814
  commands (or leave a wrapper) so existing Claude hooks keep working.
772
815
 
773
- **Upgrade existing installs deliberately (L3 only).** A self-installing tool whose skill
774
- content evolves *will* leave older generated files in users’ repos.
775
- (An L2 tool that only writes discovery-dir skills can skip all of this: a re-install is
776
- a clean full overwrite, with no managed `AGENTS.md` block or hooks to migrate.)
816
+ **Upgrade managed generated artifacts deliberately.** A self-installing tool whose
817
+ generated content evolves *will* leave older artifacts in users’ repos.
818
+ (A tool that only writes fully-overwritten discovery-dir skills—plain L2 or below—can
819
+ skip all of this: a re-install is a clean full overwrite, with no managed `AGENTS.md`
820
+ block or hooks to migrate.
821
+ The L2b variant, which merges a managed `AGENTS.md` block into a human-authored file,
822
+ **does** need the format stamp and forward-compatibility guard even though it is not
823
+ L3—this is the artifact-driven rule from §6.0, not an L3-only one.)
777
824
  Treat generated integration files like config migrations:
778
825
 
779
826
  Reserve an `fNN` **format bump** for changes big enough to need an explicit migration: a
@@ -815,7 +862,8 @@ it; it does not license the tool to mutate the repo on its own.
815
862
  `AGENTS.md` block, generated skills, tool-owned hooks, `.codex/` config), re-running
816
863
  cleanly with no change when already current.
817
864
  - Treat old marked `AGENTS.md` blocks with no metadata as legacy generated content and
818
- replace only the managed region.
865
+ replace only the managed region, collapsing any duplicate stale blocks to one current
866
+ block at the first block’s position (§2).
819
867
  - Detect tool-owned hook entries by command/path/signature, replace only those entries,
820
868
  and preserve unrelated user hooks.
821
869
  - **Forward-compatibility guard.** When the tool finds a generated artifact whose
@@ -1062,6 +1110,20 @@ This is a supply-chain control, not just ergonomics: an unpinned runner re-resol
1062
1110
  the latest published version on every run and bypasses any cool-off window.
1063
1111
  See `tbd guidelines supply-chain-hardening` for the cross-ecosystem policy.
1064
1112
 
1113
+ **Bake a pin the generator can actually resolve.** The rules above are consumer-side:
1114
+ they assume the generating tool can pin to its own running version.
1115
+ A tool installing from an editable or dev checkout cannot.
1116
+ Its running version is an unpublished dev, pre-release, or local build
1117
+ (`0.1.1.dev49+abc1234`, npm `0.0.0-dev.<sha>` or `x.y.z-canary`) that `uvx pkg@<that>`
1118
+ or `npx pkg@<that>` will never resolve, so baking it ships a skill that fails the moment
1119
+ a teammate runs it—one works-on-my-machine install poisons the clone.
1120
+ Bake the running version only when it is a real, resolvable published release; otherwise
1121
+ fall back to a known-good published pin.
1122
+ `pprose` does this with a `DISCOVERY_VERSION` constant (its last real PyPI release)
1123
+ gated by a PEP 440 release check (`is_pypi_release`), and enforces at release time that
1124
+ the constant equals the release tag.
1125
+ This is the generator-side mirror of the consumer-side pin rule.
1126
+
1065
1127
  **Current tooling (May 2026)**
1066
1128
 
1067
1129
  - **Node / TypeScript**: zero-install via `npx <pkg>@<ver>` (`-y` to skip the prompt),
@@ -1354,6 +1416,10 @@ going:
1354
1416
  This is tbd’s validated approach.
1355
1417
  - Path-ordered resource cache for project/user shadowing; generate `--list` dynamically.
1356
1418
  - Context-injection loop with explicit `cli command arg` references; depth ≤ 3.
1419
+ - Self-installing tools climb the §6.0 ladder and stop at the lowest rung.
1420
+ A managed `AGENTS.md` block (the L2b variant) is the one L3 surface worth adopting
1421
+ alone, but any rung that writes one must format-stamp it and refuse to clobber a newer
1422
+ block.
1357
1423
 
1358
1424
  **Reach and surface**
1359
1425
 
@@ -1370,6 +1436,8 @@ going:
1370
1436
  - Scope `allowed-tools` tightly; gate destructive skills; design for sandboxes.
1371
1437
  - Idempotent multi-agent install with marker-bounded sections; version source files, not
1372
1438
  fully generated install artifacts; mark generated files “DO NOT EDIT.”
1439
+ - Pin a generated runner to a resolvable published release; never bake a dev or
1440
+ pre-release version a teammate’s `uvx`/`npx` cannot resolve (§6.7).
1373
1441
 
1374
1442
  * * *
1375
1443
 
@@ -1392,16 +1460,26 @@ going:
1392
1460
  - [ ] `AGENTS.md` with build/test/style/conventions (concise)
1393
1461
  - [ ] Managed `AGENTS.md` block uses a stable begin/end marker with a `format=fNN` field
1394
1462
  on the begin line
1463
+ - [ ] Marker carries only `format=fNN` (artifact type is clear from location, no
1464
+ `surface=` tag); duplicate stale blocks collapsed to one on install (the L2b variant
1465
+ and L3)
1395
1466
  - [ ] `CLAUDE.md` strategy decided (symlink to `AGENTS.md`, copy, or separate)
1396
1467
 
1397
1468
  **CLI tool (if applicable)**
1398
1469
  - [ ] `--json` on all commands; `--brief`/`--quiet`; actionable errors
1470
+
1399
1471
  - [ ] Idempotent `setup --auto`; `init` for surgical config
1472
+
1400
1473
  - [ ] Help epilog with `IMPORTANT:` + Getting Started one-liner
1474
+
1401
1475
  - [ ] `prime` (status/context) and `skill` (pure docs) commands
1476
+
1402
1477
  - [ ] Invocation strategy chosen (§6.7): local-first plus pinned zero-install fallback
1403
1478
  by default, or global install + `SessionStart` bootstrap for cloud/ephemeral agents
1404
1479
 
1480
+ - [ ] Generated skill bakes a resolvable published pin, not the running dev or
1481
+ pre-release version (§6.7)
1482
+
1405
1483
  **Advanced (many subcommands / knowledge library)**
1406
1484
  - [ ] Meta-skill composition (header + baseline + dynamic directory)
1407
1485
  - [ ] Informational commands (`guidelines`/`shortcut`/`template`) with `--list`
@@ -1486,8 +1564,16 @@ going:
1486
1564
  https://clau.de/plugin-directory-submission)
1487
1565
  - gstack: https://github.com/garrytan/gstack
1488
1566
  - Beads (bd): https://github.com/gastownhall/beads
1489
- - qmd (L2 reference: self-installing skill, discovery-dirs only, CLI + MCP + plugin):
1567
+ - qmd (L2 reference: self-installing skill, discovery-dirs only, CLI, MCP, and plugin):
1490
1568
  https://github.com/tobi/qmd
1569
+ - pprose (L2b variant reference: self-installing skill plus a format-stamped,
1570
+ marker-bounded `AGENTS.md` block, no hooks/prime/setup):
1571
+ https://github.com/jlevy/practical-prose
1572
+ - taste-skill (L0 reference: pure-prompt skill collection distributed via skills.sh, a
1573
+ Claude plugin marketplace, `copilot-instructions.md`, and `llms.txt`):
1574
+ https://github.com/Leonxlnx/taste-skill
1575
+ - anthropics/skills (L0 reference: skill collection bundled as Claude plugins):
1576
+ https://github.com/anthropics/skills
1491
1577
 
1492
1578
  ### Security
1493
1579
 
@@ -2,6 +2,7 @@
2
2
  title: Commit Conventions
3
3
  description: Conventional Commits format with extensions for agentic workflows
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: general
5
6
  ---
6
7
  # Commit Conventions
7
8
 
@@ -2,6 +2,7 @@
2
2
  title: Common Documentation Guidelines
3
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
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: general
5
6
  ---
6
7
  # Common Documentation Guidelines
7
8
 
@@ -2,6 +2,7 @@
2
2
  title: Convex Limits and Best Practices
3
3
  description: Comprehensive reference for Convex platform limits, workarounds, and performance best practices
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: convex
5
6
  ---
6
7
  # Research Brief: Convex Database Limits, Best Practices, and Workarounds
7
8
 
@@ -2,6 +2,7 @@
2
2
  title: Convex Rules
3
3
  description: Guidelines and best practices for building Convex projects, including database schema design, queries, mutations, and real-world examples
4
4
  author: Convex team
5
+ category: convex
5
6
  ---
6
7
  # Convex Guidelines
7
8
 
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: Electron App Development Patterns
3
3
  description: Guidelines for Electron development ecosystems including npm, pnpm, and Bun, with security baselines and framework comparisons
4
+ category: electron
4
5
  ---
5
6
  # Electron App Development Patterns
6
7
 
@@ -2,6 +2,7 @@
2
2
  title: Error Handling Rules
3
3
  description: Rules for handling errors, failures, and exceptional conditions
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: general
5
6
  ---
6
7
  # Error Handling Rules
7
8
 
@@ -2,6 +2,7 @@
2
2
  title: General Coding Rules
3
3
  description: Rules for constants, magic numbers, and general coding practices
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: general
5
6
  ---
6
7
  # General Coding Rules
7
8
 
@@ -2,6 +2,7 @@
2
2
  title: General Comment Rules
3
3
  description: Language-agnostic rules for writing clean, maintainable comments
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: general
5
6
  ---
6
7
  # General Comment Rules
7
8
 
@@ -2,6 +2,7 @@
2
2
  title: Engineering Agent Principles
3
3
  description: Core principles for AI agents acting as senior engineers—objectivity and communication conduct plus the engineering process (detailed understanding, verification, end-to-end ownership, scope discipline, tracking future work, and acting versus seeking clarification)
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: general
5
6
  ---
6
7
  # Engineering Agent Principles
7
8
 
@@ -2,6 +2,7 @@
2
2
  title: TDD Guidelines
3
3
  description: Test-Driven Development methodology and best practices
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: general
5
6
  ---
6
7
  # Test-Driven Development (TDD) Guidelines
7
8
 
@@ -2,6 +2,7 @@
2
2
  title: General Testing Rules
3
3
  description: Rules for writing minimal, effective tests with maximum coverage
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: general
5
6
  ---
6
7
  ## General Testing Rules
7
8
 
@@ -2,6 +2,7 @@
2
2
  title: Golden Testing Guidelines
3
3
  description: Guidelines for implementing golden/snapshot testing for complex systems
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: general
5
6
  ---
6
7
  # Golden Testing Guidelines
7
8
 
@@ -2,6 +2,7 @@
2
2
  title: pnpm Monorepo Patterns
3
3
  description: Modern patterns for pnpm-based TypeScript monorepo architecture
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: typescript
5
6
  ---
6
7
  # pnpm Monorepo Patterns
7
8
 
@@ -2,6 +2,7 @@
2
2
  title: Python CLI Patterns
3
3
  description: Modern patterns for Python CLI application architecture
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: python
5
6
  ---
6
7
  # Python CLI Patterns
7
8
 
@@ -2,6 +2,7 @@
2
2
  title: Python Modern Guidelines
3
3
  description: Guidelines for modern Python projects using uv, with a few more opinionated practices
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: python
5
6
  ---
6
7
  # Python Modern Guidelines
7
8
 
@@ -2,6 +2,7 @@
2
2
  title: Python Rules
3
3
  description: General Python coding rules and best practices
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: python
5
6
  ---
6
7
  # Python Rules
7
8
 
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: Release Notes Guidelines
3
3
  description: Guidelines for writing clear, accurate release notes
4
+ category: general
4
5
  ---
5
6
  # Release Notes Guidelines
6
7
 
@@ -2,6 +2,7 @@
2
2
  title: Supply-Chain Hardening
3
3
  description: Strongly recommended for EVERY repo—apply it if a repo has not been hardened yet. Cross-ecosystem policy for installing dependencies safely (the 14-day cool-off, disabled install scripts, lockfile discipline, untrusted-repo handling). Use whenever a user mentions hardening, security, supply chain, or setting up a new repo; before adding/upgrading dependencies; when auditing for compromised packages; or when reviewing install/build/run commands across npm/pnpm, PyPI, Cargo, or Go.
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: general
5
6
  ---
6
7
  # Supply-Chain Hardening
7
8
 
@@ -244,8 +245,8 @@ process.exit(violations > 0 ? 1 : 0);
244
245
 
245
246
  **Exception bookkeeping**: when you pin a fresh version under the exception process,
246
247
  leave a marker next to the pin (JSONC comment in `package.json`, or a `CHANGELOG.md`
247
- note for strict JSON parsers): `// Exception: CVE-2026-XXXX patch within 14d window.
248
- Reviewed <date>.`
248
+ note for strict JSON parsers):
249
+ `// Exception: CVE-2026-XXXX patch within 14d window. Reviewed <date>.`
249
250
 
250
251
  ## Untrusted Repos and Modes
251
252
 
@@ -2,6 +2,7 @@
2
2
  title: tbd Sync and Workspace Troubleshooting
3
3
  description: Common issues and solutions for tbd sync and workspace operations
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: general
5
6
  ---
6
7
  ## Common Sync Issues
7
8
 
@@ -2,6 +2,7 @@
2
2
  title: TypeScript CLI Tool Rules
3
3
  description: Rules for building CLI tools with Commander.js, picocolors, and TypeScript
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: typescript
5
6
  ---
6
7
  # CLI Tool Development Rules
7
8
 
@@ -2,6 +2,7 @@
2
2
  title: TypeScript Code Coverage
3
3
  description: Best practices for code coverage in TypeScript with Vitest and v8 provider
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: typescript
5
6
  ---
6
7
  # Code Coverage Best Practices for TypeScript with Vitest
7
8
 
@@ -4,6 +4,7 @@ description: TypeScript coding rules and best practices
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
5
  globs: "*.ts"
6
6
  alwaysApply: true
7
+ category: typescript
7
8
  ---
8
9
  # TypeScript Rules
9
10
 
@@ -2,6 +2,7 @@
2
2
  title: TypeScript Sorting Patterns
3
3
  description: Deterministic sorting patterns and comparison chains for TypeScript
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: typescript
5
6
  ---
6
7
  # TypeScript Sorting Patterns
7
8
 
@@ -3,6 +3,7 @@ title: TypeScript YAML Handling Rules
3
3
  description: Best practices for parsing and serializing YAML in TypeScript
4
4
  author: Joshua Levy (github.com/jlevy) with LLM assistance
5
5
  globs: "*.ts"
6
+ category: typescript
6
7
  ---
7
8
  # TypeScript YAML Handling Rules
8
9
 
@@ -0,0 +1,64 @@
1
+ ---
2
+ title: Docmap Format
3
+ description: A minimal, machine-readable inventory of a collection of documents: a sitemap for docs, with docref as its addressing primitive
4
+ author: Joshua Levy (github.com/jlevy) with LLM assistance
5
+ category: general
6
+ ---
7
+ # Docmap Format (docmap/0.1)
8
+
9
+ A **docmap** is a machine-readable inventory of a collection of documents: one entry per
10
+ doc, each with an identity, a location, and presentation metadata.
11
+ It describes a collection; it says nothing about how the collection is assembled,
12
+ fetched, or kept fresh.
13
+ A docmap is a generated **view** of a collection, never an input to resolution: tools
14
+ that serve docs resolve by their own conventions and *emit* a docmap (as
15
+ `tbd docs list --json` does); future machinery that consumes docmaps as sources is
16
+ defined as operations *over* this format, not as part of it.
17
+
18
+ ## Shape
19
+
20
+ ```yaml
21
+ docmap: docmap/0.1
22
+ name: tbd-docs # optional collection name
23
+ documents:
24
+ - name: python-rules
25
+ type: guideline
26
+ path: guidelines/python-rules.md # location within the collection
27
+ source: internal:guidelines/python-rules.md # provenance docref
28
+ title: Python Coding Rules
29
+ description: Type hints, docstrings, exception handling
30
+ ```
31
+
32
+ Rules:
33
+
34
+ - **Identity**: `type` + `name`, unique within the map.
35
+ `type` is an open vocabulary (tbd uses `guideline` / `shortcut` / `template` /
36
+ `reference`).
37
+ - **Location**: every entry carries `path` and/or `source` (a
38
+ [docref](docref-format.md)). An inventory whose entries cannot be located is not an
39
+ inventory.
40
+ - **Path relativity**: for a docmap committed as a file, `path` is relative to the
41
+ docmap file’s own directory (the sitemap convention); generated docmaps state their
42
+ collection root out of band (tbd’s `--json` paths are repo-relative).
43
+ - **Presentation metadata**: `title` and `description` are the core fields.
44
+ - **Extension fields**: producers may attach anything else; tbd adds `state` and
45
+ `stale`; size metrics (`word_count`, `size_bytes`, token estimates) are likewise
46
+ extensions, not core.
47
+ **Consumers must ignore unknown fields.**
48
+
49
+ ## Versioning
50
+
51
+ The `docmap:` value is the format tag.
52
+ Readers accept `docmap/0.*` and reject other majors with a clear error: a different
53
+ major may change field semantics, and failing fast beats misreading.
54
+
55
+ ## Reference Implementation
56
+
57
+ `src/docmap/` in tbd: standalone, dependency-free schema, validation, and query helpers,
58
+ structured for extraction into its own package.
59
+ Producers may generate docmaps (every tbd list/inventory command emits one) or
60
+ hand-author them; any repo can commit a docmap to advertise its doc collection.
61
+
62
+ <!-- This document follows common-doc-guidelines.md.
63
+ See github.com/jlevy/practical-prose and review guidelines before editing.
64
+ -->