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.
- package/README.md +5 -1
- package/dist/bin.mjs +3193 -2220
- package/dist/bin.mjs.map +1 -1
- package/dist/cli.mjs +1545 -821
- package/dist/cli.mjs.map +1 -1
- package/dist/{config-DVap9omo.mjs → config-BJz1m9eN.mjs} +179 -39
- package/dist/config-BJz1m9eN.mjs.map +1 -0
- package/dist/{config-BPHcePSm.mjs → config-DlCUMyCG.mjs} +1 -1
- package/dist/docs/README.md +5 -1
- package/dist/docs/SKILL.md +2 -2
- package/dist/docs/guidelines/backward-compatibility-rules.md +4 -0
- package/dist/docs/guidelines/bun-monorepo-patterns.md +20 -4
- package/dist/docs/guidelines/cli-agent-skill-patterns.md +120 -34
- package/dist/docs/guidelines/commit-conventions.md +4 -0
- package/dist/docs/guidelines/common-doc-guidelines.md +234 -0
- package/dist/docs/guidelines/convex-limits-best-practices.md +4 -0
- package/dist/docs/guidelines/convex-rules.md +4 -0
- package/dist/docs/guidelines/electron-app-development-patterns.md +4 -0
- package/dist/docs/guidelines/error-handling-rules.md +4 -0
- package/dist/docs/guidelines/general-coding-rules.md +4 -0
- package/dist/docs/guidelines/general-comment-rules.md +4 -0
- package/dist/docs/guidelines/general-eng-assistant-rules.md +4 -0
- package/dist/docs/guidelines/general-tdd-guidelines.md +4 -0
- package/dist/docs/guidelines/general-testing-rules.md +4 -0
- package/dist/docs/guidelines/golden-testing-guidelines.md +4 -0
- package/dist/docs/guidelines/pnpm-monorepo-patterns.md +27 -6
- package/dist/docs/guidelines/python-cli-patterns.md +4 -0
- package/dist/docs/guidelines/python-modern-guidelines.md +30 -0
- package/dist/docs/guidelines/python-rules.md +4 -0
- package/dist/docs/guidelines/release-notes-guidelines.md +4 -0
- package/dist/docs/guidelines/supply-chain-hardening.md +11 -7
- package/dist/docs/guidelines/tbd-sync-troubleshooting.md +10 -4
- package/dist/docs/guidelines/typescript-cli-tool-rules.md +27 -24
- package/dist/docs/guidelines/typescript-code-coverage.md +11 -7
- package/dist/docs/guidelines/typescript-rules.md +10 -6
- package/dist/docs/guidelines/typescript-sorting-patterns.md +4 -0
- package/dist/docs/guidelines/typescript-yaml-handling-rules.md +7 -3
- package/dist/docs/shortcuts/standard/agent-handoff.md +4 -0
- package/dist/docs/shortcuts/standard/checkout-third-party-repo.md +4 -0
- package/dist/docs/shortcuts/standard/code-cleanup-all.md +4 -0
- package/dist/docs/shortcuts/standard/code-cleanup-docstrings.md +4 -0
- package/dist/docs/shortcuts/standard/code-cleanup-tests.md +4 -0
- package/dist/docs/shortcuts/standard/code-review-and-commit.md +4 -0
- package/dist/docs/shortcuts/standard/coding-spike.md +4 -0
- package/dist/docs/shortcuts/standard/create-or-update-pr-simple.md +4 -0
- package/dist/docs/shortcuts/standard/create-or-update-pr-with-validation-plan.md +4 -0
- package/dist/docs/shortcuts/standard/implement-beads.md +4 -0
- package/dist/docs/shortcuts/standard/merge-upstream.md +4 -0
- package/dist/docs/shortcuts/standard/new-architecture-doc.md +4 -0
- package/dist/docs/shortcuts/standard/new-guideline.md +4 -0
- package/dist/docs/shortcuts/standard/new-plan-spec.md +4 -0
- package/dist/docs/shortcuts/standard/new-qa-playbook.md +4 -0
- package/dist/docs/shortcuts/standard/new-research-brief.md +4 -0
- package/dist/docs/shortcuts/standard/new-shortcut.md +4 -0
- package/dist/docs/shortcuts/standard/new-validation-plan.md +4 -0
- package/dist/docs/shortcuts/standard/plan-implementation-with-beads.md +4 -0
- package/dist/docs/shortcuts/standard/precommit-process.md +4 -0
- package/dist/docs/shortcuts/standard/review-code-python.md +4 -0
- package/dist/docs/shortcuts/standard/review-code-typescript.md +4 -0
- package/dist/docs/shortcuts/standard/review-code.md +4 -0
- package/dist/docs/shortcuts/standard/review-github-pr.md +4 -0
- package/dist/docs/shortcuts/standard/revise-all-architecture-docs.md +4 -0
- package/dist/docs/shortcuts/standard/revise-architecture-doc.md +4 -0
- package/dist/docs/shortcuts/standard/setup-github-cli.md +4 -0
- package/dist/docs/shortcuts/standard/sync-failure-recovery.md +4 -0
- package/dist/docs/shortcuts/standard/update-specs-status.md +4 -0
- package/dist/docs/shortcuts/standard/welcome-user.md +4 -0
- package/dist/docs/shortcuts/system/skill-baseline.md +2 -2
- package/dist/docs/tbd-closing.md +4 -0
- package/dist/docs/tbd-design.md +109 -68
- package/dist/docs/tbd-docs.md +20 -13
- package/dist/docs/tbd-prime.md +4 -0
- package/dist/docs/templates/architecture-doc.md +4 -0
- package/dist/docs/templates/plan-spec.md +4 -0
- package/dist/docs/templates/qa-playbook.md +4 -0
- package/dist/docs/templates/research-brief.md +4 -0
- package/dist/{id-mapping-CqrrLgeX.mjs → id-mapping-687_UEsy.mjs} +198 -124
- package/dist/id-mapping-687_UEsy.mjs.map +1 -0
- package/dist/{id-mapping-Ctfl_nc1.mjs → id-mapping-mtoSP9Qt.mjs} +1 -1
- package/dist/index.d.mts +53 -1
- package/dist/index.mjs +3 -3
- package/dist/{schemas-C8mOQykE.mjs → schemas-f0EcuAVu.mjs} +40 -3
- package/dist/schemas-f0EcuAVu.mjs.map +1 -0
- package/dist/{src-BK_EF6mk.mjs → src-CtZIHxYM.mjs} +3 -3
- package/dist/src-CtZIHxYM.mjs.map +1 -0
- package/dist/tbd +3193 -2220
- package/package.json +1 -1
- package/dist/config-DVap9omo.mjs.map +0 -1
- package/dist/docs/guidelines/general-style-rules.md +0 -38
- package/dist/docs/guidelines/writing-style-guidelines.md +0 -42
- package/dist/id-mapping-CqrrLgeX.mjs.map +0 -1
- package/dist/schemas-C8mOQykE.mjs.map +0 -1
- 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`
|
|
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
|
|
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
|
|
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)
|
|
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
|
|
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`
|
|
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`
|
|
403
|
-
*not* appear as a contiguous `.agents/skills` literal in the binary — a
|
|
404
|
-
inspection will miss it and see only `.agents/plugins/marketplace.json`;
|
|
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`
|
|
408
|
-
reads `.claude-plugin/marketplace.json`) — useful for *publishing a bundle*, but
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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`
|
|
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
|
|
814
|
-
- **Cross-language**: a prebuilt binary
|
|
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
|
|
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/`
|
|
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
|
|
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
|
|
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`
|
|
877
|
-
`npm install -g get-tbd`
|
|
878
|
-
gives an agent a working landing page, and `tbd setup` then
|
|
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
|
|
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
|
+
-->
|