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.
- package/README.md +38 -6
- package/dist/bin.mjs +3494 -949
- package/dist/bin.mjs.map +1 -1
- package/dist/cli.mjs +1827 -1312
- package/dist/cli.mjs.map +1 -1
- package/dist/{config-1ouUTKQr.mjs → config-B1w3pAkY.mjs} +142 -290
- package/dist/config-B1w3pAkY.mjs.map +1 -0
- package/dist/config-DXhifxOw.mjs +3 -0
- package/dist/doc-cache-CamtXfi4.mjs +1035 -0
- package/dist/doc-cache-CamtXfi4.mjs.map +1 -0
- package/dist/doc-cache-CiBwpDTf.mjs +3 -0
- package/dist/doc-fork-BMjqzfAs.mjs +3 -0
- package/dist/doc-fork-CoPi1G1N.mjs +304 -0
- package/dist/doc-fork-CoPi1G1N.mjs.map +1 -0
- package/dist/docref-C7g0sjvL.mjs +167 -0
- package/dist/docref-C7g0sjvL.mjs.map +1 -0
- package/dist/docs/README.md +38 -6
- package/dist/docs/SKILL.md +13 -4
- package/dist/docs/guidelines/backward-compatibility-rules.md +1 -0
- package/dist/docs/guidelines/bun-monorepo-patterns.md +1 -0
- package/dist/docs/guidelines/cli-agent-skill-patterns.md +124 -38
- package/dist/docs/guidelines/commit-conventions.md +1 -0
- package/dist/docs/guidelines/common-doc-guidelines.md +1 -0
- package/dist/docs/guidelines/convex-limits-best-practices.md +1 -0
- package/dist/docs/guidelines/convex-rules.md +1 -0
- package/dist/docs/guidelines/electron-app-development-patterns.md +1 -0
- package/dist/docs/guidelines/error-handling-rules.md +1 -0
- package/dist/docs/guidelines/general-coding-rules.md +1 -0
- package/dist/docs/guidelines/general-comment-rules.md +1 -0
- package/dist/docs/guidelines/general-eng-agent-principles.md +1 -0
- package/dist/docs/guidelines/general-tdd-guidelines.md +1 -0
- package/dist/docs/guidelines/general-testing-rules.md +1 -0
- package/dist/docs/guidelines/golden-testing-guidelines.md +1 -0
- package/dist/docs/guidelines/pnpm-monorepo-patterns.md +1 -0
- package/dist/docs/guidelines/python-cli-patterns.md +1 -0
- package/dist/docs/guidelines/python-modern-guidelines.md +1 -0
- package/dist/docs/guidelines/python-rules.md +1 -0
- package/dist/docs/guidelines/release-notes-guidelines.md +1 -0
- package/dist/docs/guidelines/supply-chain-hardening.md +3 -2
- package/dist/docs/guidelines/tbd-sync-troubleshooting.md +1 -0
- package/dist/docs/guidelines/typescript-cli-tool-rules.md +1 -0
- package/dist/docs/guidelines/typescript-code-coverage.md +1 -0
- package/dist/docs/guidelines/typescript-rules.md +1 -0
- package/dist/docs/guidelines/typescript-sorting-patterns.md +1 -0
- package/dist/docs/guidelines/typescript-yaml-handling-rules.md +1 -0
- package/dist/docs/references/docmap-format.md +64 -0
- package/dist/docs/references/docref-format.md +71 -0
- package/dist/docs/shortcuts/standard/checkout-third-party-repo.md +17 -4
- package/dist/docs/shortcuts/standard/new-shortcut.md +5 -5
- package/dist/docs/shortcuts/standard/plan-implementation-with-beads.md +1 -1
- package/dist/docs/shortcuts/standard/suggest-upstream-improvements.md +69 -0
- package/dist/docs/shortcuts/standard/sync-failure-recovery.md +1 -1
- package/dist/docs/shortcuts/standard/welcome-user.md +28 -0
- package/dist/docs/shortcuts/system/skill-baseline.md +13 -4
- package/dist/docs/tbd-design.md +141 -0
- package/dist/docs/tbd-docs.md +169 -5
- package/dist/docs/tbd-prime.md +0 -1
- package/dist/docs/templates/qa-playbook.md +3 -1
- package/dist/docs/templates/research-brief.md +2 -2
- package/dist/fork-manifest-ByU7U2do.mjs +253 -0
- package/dist/fork-manifest-ByU7U2do.mjs.map +1 -0
- package/dist/fork-manifest-C7lGRq-6.mjs +3 -0
- package/dist/{id-mapping-mtoSP9Qt.mjs → id-mapping-D0iitY-F.mjs} +1 -1
- package/dist/{id-mapping-687_UEsy.mjs → id-mapping-DAIeLKzm.mjs} +8 -200
- package/dist/id-mapping-DAIeLKzm.mjs.map +1 -0
- package/dist/index.d.mts +90 -13
- package/dist/index.mjs +3 -3
- package/dist/lockfile-BR0laSDy.mjs +198 -0
- package/dist/lockfile-BR0laSDy.mjs.map +1 -0
- package/dist/paths-C1DpnZJW.mjs +405 -0
- package/dist/paths-C1DpnZJW.mjs.map +1 -0
- package/dist/{schemas-f0EcuAVu.mjs → schemas-lCwRk30L.mjs} +19 -6
- package/dist/schemas-lCwRk30L.mjs.map +1 -0
- package/dist/{src-DTyyuaG_.mjs → src-CxKOynr1.mjs} +3 -3
- package/dist/src-CxKOynr1.mjs.map +1 -0
- package/dist/tbd +3494 -949
- package/dist/yaml-utils-BPy991by.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/config-1ouUTKQr.mjs.map +0 -1
- package/dist/config-YRRW9l89.mjs +0 -3
- package/dist/id-mapping-687_UEsy.mjs.map +0 -1
- package/dist/schemas-f0EcuAVu.mjs.map +0 -1
- 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-
|
|
9
|
+
**Last Updated**: 2026-06-13 (issue #173: named the L2b variant—an 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
|
|
130
|
-
|
|
131
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
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
|
-
|
|
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
|
-
|
|
674
|
-
|
|
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
|
-
(
|
|
678
|
-
|
|
679
|
-
|
|
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
|
|
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
|
|
774
|
-
content evolves *will* leave older
|
|
775
|
-
(
|
|
776
|
-
a clean full overwrite, with no managed `AGENTS.md`
|
|
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
|
|
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: 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: 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: 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):
|
|
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: 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
|
|
|
@@ -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
|
+
-->
|