get-tbd 0.1.30 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.md +5 -1
  2. package/dist/bin.mjs +3193 -2220
  3. package/dist/bin.mjs.map +1 -1
  4. package/dist/cli.mjs +1545 -821
  5. package/dist/cli.mjs.map +1 -1
  6. package/dist/{config-DVap9omo.mjs → config-BJz1m9eN.mjs} +179 -39
  7. package/dist/config-BJz1m9eN.mjs.map +1 -0
  8. package/dist/{config-BPHcePSm.mjs → config-DlCUMyCG.mjs} +1 -1
  9. package/dist/docs/README.md +5 -1
  10. package/dist/docs/SKILL.md +2 -2
  11. package/dist/docs/guidelines/backward-compatibility-rules.md +4 -0
  12. package/dist/docs/guidelines/bun-monorepo-patterns.md +20 -4
  13. package/dist/docs/guidelines/cli-agent-skill-patterns.md +120 -34
  14. package/dist/docs/guidelines/commit-conventions.md +4 -0
  15. package/dist/docs/guidelines/common-doc-guidelines.md +234 -0
  16. package/dist/docs/guidelines/convex-limits-best-practices.md +4 -0
  17. package/dist/docs/guidelines/convex-rules.md +4 -0
  18. package/dist/docs/guidelines/electron-app-development-patterns.md +4 -0
  19. package/dist/docs/guidelines/error-handling-rules.md +4 -0
  20. package/dist/docs/guidelines/general-coding-rules.md +4 -0
  21. package/dist/docs/guidelines/general-comment-rules.md +4 -0
  22. package/dist/docs/guidelines/general-eng-assistant-rules.md +4 -0
  23. package/dist/docs/guidelines/general-tdd-guidelines.md +4 -0
  24. package/dist/docs/guidelines/general-testing-rules.md +4 -0
  25. package/dist/docs/guidelines/golden-testing-guidelines.md +4 -0
  26. package/dist/docs/guidelines/pnpm-monorepo-patterns.md +27 -6
  27. package/dist/docs/guidelines/python-cli-patterns.md +4 -0
  28. package/dist/docs/guidelines/python-modern-guidelines.md +30 -0
  29. package/dist/docs/guidelines/python-rules.md +4 -0
  30. package/dist/docs/guidelines/release-notes-guidelines.md +4 -0
  31. package/dist/docs/guidelines/supply-chain-hardening.md +11 -7
  32. package/dist/docs/guidelines/tbd-sync-troubleshooting.md +10 -4
  33. package/dist/docs/guidelines/typescript-cli-tool-rules.md +27 -24
  34. package/dist/docs/guidelines/typescript-code-coverage.md +11 -7
  35. package/dist/docs/guidelines/typescript-rules.md +10 -6
  36. package/dist/docs/guidelines/typescript-sorting-patterns.md +4 -0
  37. package/dist/docs/guidelines/typescript-yaml-handling-rules.md +7 -3
  38. package/dist/docs/shortcuts/standard/agent-handoff.md +4 -0
  39. package/dist/docs/shortcuts/standard/checkout-third-party-repo.md +4 -0
  40. package/dist/docs/shortcuts/standard/code-cleanup-all.md +4 -0
  41. package/dist/docs/shortcuts/standard/code-cleanup-docstrings.md +4 -0
  42. package/dist/docs/shortcuts/standard/code-cleanup-tests.md +4 -0
  43. package/dist/docs/shortcuts/standard/code-review-and-commit.md +4 -0
  44. package/dist/docs/shortcuts/standard/coding-spike.md +4 -0
  45. package/dist/docs/shortcuts/standard/create-or-update-pr-simple.md +4 -0
  46. package/dist/docs/shortcuts/standard/create-or-update-pr-with-validation-plan.md +4 -0
  47. package/dist/docs/shortcuts/standard/implement-beads.md +4 -0
  48. package/dist/docs/shortcuts/standard/merge-upstream.md +4 -0
  49. package/dist/docs/shortcuts/standard/new-architecture-doc.md +4 -0
  50. package/dist/docs/shortcuts/standard/new-guideline.md +4 -0
  51. package/dist/docs/shortcuts/standard/new-plan-spec.md +4 -0
  52. package/dist/docs/shortcuts/standard/new-qa-playbook.md +4 -0
  53. package/dist/docs/shortcuts/standard/new-research-brief.md +4 -0
  54. package/dist/docs/shortcuts/standard/new-shortcut.md +4 -0
  55. package/dist/docs/shortcuts/standard/new-validation-plan.md +4 -0
  56. package/dist/docs/shortcuts/standard/plan-implementation-with-beads.md +4 -0
  57. package/dist/docs/shortcuts/standard/precommit-process.md +4 -0
  58. package/dist/docs/shortcuts/standard/review-code-python.md +4 -0
  59. package/dist/docs/shortcuts/standard/review-code-typescript.md +4 -0
  60. package/dist/docs/shortcuts/standard/review-code.md +4 -0
  61. package/dist/docs/shortcuts/standard/review-github-pr.md +4 -0
  62. package/dist/docs/shortcuts/standard/revise-all-architecture-docs.md +4 -0
  63. package/dist/docs/shortcuts/standard/revise-architecture-doc.md +4 -0
  64. package/dist/docs/shortcuts/standard/setup-github-cli.md +4 -0
  65. package/dist/docs/shortcuts/standard/sync-failure-recovery.md +4 -0
  66. package/dist/docs/shortcuts/standard/update-specs-status.md +4 -0
  67. package/dist/docs/shortcuts/standard/welcome-user.md +4 -0
  68. package/dist/docs/shortcuts/system/skill-baseline.md +2 -2
  69. package/dist/docs/tbd-closing.md +4 -0
  70. package/dist/docs/tbd-design.md +109 -68
  71. package/dist/docs/tbd-docs.md +20 -13
  72. package/dist/docs/tbd-prime.md +4 -0
  73. package/dist/docs/templates/architecture-doc.md +4 -0
  74. package/dist/docs/templates/plan-spec.md +4 -0
  75. package/dist/docs/templates/qa-playbook.md +4 -0
  76. package/dist/docs/templates/research-brief.md +4 -0
  77. package/dist/{id-mapping-CqrrLgeX.mjs → id-mapping-687_UEsy.mjs} +198 -124
  78. package/dist/id-mapping-687_UEsy.mjs.map +1 -0
  79. package/dist/{id-mapping-Ctfl_nc1.mjs → id-mapping-mtoSP9Qt.mjs} +1 -1
  80. package/dist/index.d.mts +53 -1
  81. package/dist/index.mjs +3 -3
  82. package/dist/{schemas-C8mOQykE.mjs → schemas-f0EcuAVu.mjs} +40 -3
  83. package/dist/schemas-f0EcuAVu.mjs.map +1 -0
  84. package/dist/{src-BK_EF6mk.mjs → src-CtZIHxYM.mjs} +3 -3
  85. package/dist/src-CtZIHxYM.mjs.map +1 -0
  86. package/dist/tbd +3193 -2220
  87. package/package.json +1 -1
  88. package/dist/config-DVap9omo.mjs.map +0 -1
  89. package/dist/docs/guidelines/general-style-rules.md +0 -38
  90. package/dist/docs/guidelines/writing-style-guidelines.md +0 -42
  91. package/dist/id-mapping-CqrrLgeX.mjs.map +0 -1
  92. package/dist/schemas-C8mOQykE.mjs.map +0 -1
  93. package/dist/src-BK_EF6mk.mjs.map +0 -1
@@ -90,9 +90,10 @@ The architecture prioritizes fast iteration during early development while maint
90
90
  clear path to split packages later without breaking changes.
91
91
 
92
92
  The recommended stack uses **pnpm workspaces** for dependency management, **tsdown** for
93
- building ESM/CJS dual outputs with TypeScript declarations, **Changesets** for
94
- versioning and release automation, **publint** for validating package publishability,
95
- and **lefthook** for fast local git hooks.
93
+ building ESM/CJS dual outputs with TypeScript declarations, **Changesets**
94
+ (multi-package monorepos) or **tag-triggered OIDC publishing** (single-package repos)
95
+ for versioning and release automation, **publint** for validating package
96
+ publishability, and **lefthook** for fast local git hooks.
96
97
  This approach supports private development via GitHub Packages or direct GitHub
97
98
  installs, with a seamless transition to public npm publishing when ready.
98
99
 
@@ -671,7 +672,8 @@ package. Essential for any published package.
671
672
 
672
673
  #### Changesets
673
674
 
674
- **Status**: Strongly Recommended
675
+ **Status**: Recommended for multi-package monorepos (for a single published package,
676
+ prefer the tag-triggered approach below)
675
677
 
676
678
  **Details**:
677
679
 
@@ -729,8 +731,10 @@ Changesets provides:
729
731
 
730
732
  - Publishes to npm when that PR is merged
731
733
 
732
- **Assessment**: Changesets is the de facto standard for monorepo versioning.
733
- It integrates seamlessly with pnpm and GitHub Actions.
734
+ **Assessment**: Changesets is the de facto standard for *multi-package* monorepo
735
+ versioning and integrates seamlessly with pnpm and GitHub Actions.
736
+ For a repo that publishes a single package, its per-PR ceremony rarely pays off — prefer
737
+ the tag-triggered approach below (see the LLM-era note).
734
738
 
735
739
  **References**:
736
740
 
@@ -759,6 +763,19 @@ No NPM_TOKEN needed, no “Version Packages” PR workflow.
759
763
  3. Commit, tag (e.g., `v1.2.3`), and push
760
764
  4. GitHub Action publishes automatically on tag push
761
765
 
766
+ > **When to prefer this over Changesets (LLM-era note):** For a **single published
767
+ > package**, Changesets’ main wins (multi-package coordination and per-PR changelog
768
+ > accumulation) mostly evaporate, while its ceremony (a `.changeset/*.md` per PR, a
769
+ > bump-type decision per PR, the `changeset version` step, a “Version Packages” PR)
770
+ > stays. When releases are cut by an agent/maintainer who assembles notes from clean
771
+ > conventional commits at release time (see a release-notes template), tag-triggered
772
+ > publishing is simpler and has fewer moving parts: clean commits → bump + `## X.Y.Z`
773
+ > CHANGELOG section → tag → auto-publish.
774
+ > `tbd` itself uses this approach (project-local `docs/publishing.md` for the per-repo
775
+ > playbook; the workflow itself is the GitHub Action triggered by the `v*` tag).
776
+ > Keep Changesets when you publish several interdependent packages or want contributors
777
+ > to declare intent in each PR.
778
+
762
779
  **One-time setup**:
763
780
 
764
781
  1. Publish package manually once: `npm publish --access public`
@@ -3554,3 +3571,7 @@ ncu --dep dev --format group
3554
3571
  # Upgrade with peer dependency handling
3555
3572
  ncu --target minor -u && pnpm install --force
3556
3573
  ```
3574
+
3575
+ <!-- This document follows common-doc-guidelines.md.
3576
+ See github.com/jlevy/practical-prose and review guidelines before editing.
3577
+ -->
@@ -83,3 +83,7 @@ Use `uv-dynamic-versioning` for git-based versions:
83
83
  4. Separate handlers from command definitions for testability
84
84
  5. Use TypedDict or dataclasses for type-safe options
85
85
  6. Test with Typer’s CliRunner for isolated, fast tests
86
+
87
+ <!-- This document follows common-doc-guidelines.md.
88
+ See github.com/jlevy/practical-prose and review guidelines before editing.
89
+ -->
@@ -182,3 +182,33 @@ class MyThing:
182
182
  str(MyThing(file_path="/tmp/file.txt", title="Something " + "blah " * 50, url="https://www.example.com", body="..."))
183
183
  # -> "MyThing(title='Something blah blah blah blah blah blah blah blah blah blah blah…', file_path=/tmp/file.txt, url=https://www.example.com)"
184
184
  ```
185
+
186
+ ## Releasing (tag-triggered, no changesets)
187
+
188
+ For publishing Python packages to PyPI, follow the
189
+ [`simple-modern-uv`](https://github.com/jlevy/simple-modern-uv) template’s model — it is
190
+ the standard for tbd’s Python projects.
191
+ The same clean principles as the TypeScript guidance apply: no changesets, releases cut
192
+ from clean conventional commits.
193
+
194
+ - **Dynamic versioning from the git tag** via
195
+ [`uv-dynamic-versioning`](https://github.com/ninoseki/uv-dynamic-versioning) — the tag
196
+ *is* the version (no manual `version =` bump in `pyproject.toml`, no version commit).
197
+ - **Release/tag-triggered publish**: a `publish.yml` workflow runs on
198
+ `on: release: types: [published]` (or a `v*` tag), builds with `uv build`, and
199
+ publishes with `uv publish --trusted-publishing always` — **PyPI Trusted Publishing
200
+ (OIDC), no API token**.
201
+ - **Supply-chain cool-off in CI**: set `UV_EXCLUDE_NEWER` to a 14-days-ago cutoff so the
202
+ build never resolves a brand-new (potentially yanked/compromised) release.
203
+ - **Release notes** are written per `release-notes-guidelines` from the commits since
204
+ the last tag — there is no per-PR changeset file.
205
+ - Expose the version at runtime with `importlib.metadata.version("<pkg>")`.
206
+
207
+ So a release is just: clean commits → create the GitHub release/tag `vX.Y.Z` → CI builds
208
+ and publishes.
209
+ See `template/docs/publishing.md` in `simple-modern-uv` for the first-time
210
+ Trusted Publisher setup.
211
+
212
+ <!-- This document follows common-doc-guidelines.md.
213
+ See github.com/jlevy/practical-prose and review guidelines before editing.
214
+ -->
@@ -258,3 +258,7 @@ These are general rules that *must* be followed on this project for Python code.
258
258
  - Exported/public variables, functions, or methods SHOULD have concise docstrings.
259
259
  Internal/local variables, functions, and methods DO NOT need docstrings unless their
260
260
  purpose is not obvious.
261
+
262
+ <!-- This document follows common-doc-guidelines.md.
263
+ See github.com/jlevy/practical-prose and review guidelines before editing.
264
+ -->
@@ -138,3 +138,7 @@ Before finalizing release notes:
138
138
 
139
139
  **Full commit history**: https://github.com/org/repo/compare/v0.1.12...v0.1.13
140
140
  ```
141
+
142
+ <!-- This document follows common-doc-guidelines.md.
143
+ See github.com/jlevy/practical-prose and review guidelines before editing.
144
+ -->
@@ -52,7 +52,7 @@ planned upgrade.
52
52
  | pnpm 11+ | `minimumReleaseAge: 20160` in `pnpm-workspace.yaml` (pnpm 11 ignores `NPM_CONFIG_*`; env prefix is `PNPM_CONFIG_*`) |
53
53
  | uv | `UV_EXCLUDE_NEWER="14 days"` |
54
54
  | pip 26.1+ | `PIP_UPLOADED_PRIOR_TO="P14D"` |
55
- | Cargo / Go | no native gate: commit the lockfile, pass `--locked` (Cargo) / keep `go.sum` + `-mod=readonly` (Go), and require human review before re-resolving; gate automated bumps with Renovate/Dependabot release-age policy |
55
+ | Cargo / Go | no native gate: commit the lockfile, pass `--locked` (Cargo) / keep `go.sum` and `-mod=readonly` (Go), and require human review before re-resolving; gate automated bumps with Renovate/Dependabot release-age policy |
56
56
 
57
57
  At upgrade-decision time, `npm-check-updates --cooldown 14` (pin the `ncu` version)
58
58
  gates which upgrades are even offered.
@@ -75,8 +75,8 @@ To check one version’s age: `npm view <pkg> time.<ver>`.
75
75
  5. **Don’t update for its own sake.** The safest update is the one you skip — each bump
76
76
  is fresh attack surface.
77
77
  Bump only for a concrete reason ("show me the commit we need"); prefer fewer,
78
- vendored/pinned dependencies; let audits + CVE monitoring tell you when a real update
79
- is warranted.
78
+ vendored/pinned dependencies; let audits and CVE monitoring tell you when a real
79
+ update is warranted.
80
80
  6. **No unpinned zero-install runners.** Avoid `npx` / `pnpm dlx` / `bunx` / `uvx` /
81
81
  `go run <remote>` without an explicit `@version` pin and a review of the resolved
82
82
  `package@version` — they fetch and execute the latest code, bypassing the cool-off.
@@ -208,10 +208,10 @@ Reviewed <date>.`
208
208
 
209
209
  ## What This Does and Doesn’t Cover
210
210
 
211
- A cool-off + disabled scripts neutralizes the dominant **fast-yanked-incident** pattern.
212
- It does **not** stop: long-lived typosquats that survive past the window; a lockfile
213
- that already captured a bad version; payloads that fire on import/build rather than
214
- install; or **publish-pipeline compromises** (the May 2026 @antv worm shipped from
211
+ A cool-off plus disabled scripts neutralizes the dominant **fast-yanked-incident**
212
+ pattern. It does **not** stop: long-lived typosquats that survive past the window; a
213
+ lockfile that already captured a bad version; payloads that fire on import/build rather
214
+ than install; or **publish-pipeline compromises** (the May 2026 @antv worm shipped from
215
215
  legitimate CI with a forged “verified” provenance badge — a green badge is not proof).
216
216
  Those need lockfile review, typosquat checks, build-time controls, and — if you publish
217
217
  packages — the publish-side controls in the guidebook’s `hardening-ci-cd.md` (OIDC
@@ -235,3 +235,7 @@ provenance monitoring).
235
235
  StepSecurity, Socket, Unit 42).
236
236
  - Monorepo enforcement: `tbd guidelines pnpm-monorepo-patterns`,
237
237
  `tbd guidelines bun-monorepo-patterns`.
238
+
239
+ <!-- This document follows common-doc-guidelines.md.
240
+ See github.com/jlevy/practical-prose and review guidelines before editing.
241
+ -->
@@ -163,7 +163,8 @@ The `.tbd/.gitignore` file contains a `!workspaces/` negation pattern to prevent
163
163
  - Conflicting changes at field level
164
164
 
165
165
  **Solutions:**
166
- 1. Check attic for conflict details: `ls .tbd/data-sync-worktree/.tbd/data-sync/attic/`
166
+ 1. Check attic for conflict details:
167
+ `ls "$(git rev-parse --path-format=absolute --git-common-dir)/tbd/data-sync-worktree/.tbd/data-sync/attic/"`
167
168
  2. Review conflict files to understand what was lost
168
169
  3. Manually merge if needed
169
170
  4. Re-import with fresh workspace if appropriate
@@ -195,7 +196,7 @@ The `.tbd/.gitignore` file contains a `!workspaces/` negation pattern to prevent
195
196
  1. Run `tbd doctor --fix` to auto-repair
196
197
  2. If that fails, manually repair:
197
198
  ```bash
198
- rm -rf .tbd/data-sync-worktree
199
+ rm -rf "$(git rev-parse --path-format=absolute --git-common-dir)/tbd/data-sync-worktree"
199
200
  git worktree prune
200
201
  tbd doctor --fix
201
202
  ```
@@ -204,7 +205,8 @@ The `.tbd/.gitignore` file contains a `!workspaces/` negation pattern to prevent
204
205
  ### Worktree shows “detached HEAD”
205
206
 
206
207
  **Symptoms:**
207
- - `git -C .tbd/data-sync-worktree status` shows detached HEAD
208
+ - `git -C "$(git rev-parse --path-format=absolute --git-common-dir)/tbd/data-sync-worktree" status`
209
+ shows detached HEAD
208
210
  - Commits not going to tbd-sync branch
209
211
 
210
212
  **Solutions:**
@@ -224,7 +226,7 @@ tbd sync --status
224
226
  tbd workspace list
225
227
 
226
228
  # View worktree branch
227
- git -C .tbd/data-sync-worktree branch
229
+ git -C "$(git rev-parse --path-format=absolute --git-common-dir)/tbd/data-sync-worktree" branch
228
230
 
229
231
  # Compare local vs remote
230
232
  git log tbd-sync --oneline -5
@@ -258,3 +260,7 @@ tbd sync
258
260
  - `--no-outbox`: Skip automatic import from outbox on success
259
261
 
260
262
  See `tbd shortcut sync-failure-recovery` for the full workflow.
263
+
264
+ <!-- This document follows common-doc-guidelines.md.
265
+ See github.com/jlevy/practical-prose and review guidelines before editing.
266
+ -->
@@ -7,17 +7,17 @@ author: Joshua Levy (github.com/jlevy) with LLM assistance
7
7
 
8
8
  **Last Updated**: 2026-05-21
9
9
 
10
- **Tracks**: Commander.js `^15.0.0` (ESM-only, requires Node v22.12.0+),
11
- picocolors `^1.1.1` (stable; no recent changes), Node.js 24 LTS / Node 26 Current.
10
+ **Tracks**: Commander.js `^15.0.0` (ESM-only, requires Node v22.12.0+), picocolors
11
+ `^1.1.1` (stable; no recent changes), Node.js 24 LTS / Node 26 Current.
12
12
  Commander 14 moves to security-only maintenance until May 2027.
13
13
 
14
14
  **Related**:
15
15
 
16
16
  - [TypeScript Rules](./typescript-rules.md)
17
17
  - [Supply-Chain Mitigation](./pnpm-monorepo-patterns.md#supply-chain-mitigation) —
18
- follow the 14-day package-age rule for every CLI dependency. Bundlers and
19
- CLI dependencies that execute at install time (`postinstall` scripts) are a
20
- primary attack surface.
18
+ follow the 14-day package-age rule for every CLI dependency.
19
+ Bundlers and CLI dependencies that execute at install time (`postinstall` scripts) are
20
+ a primary attack surface.
21
21
 
22
22
  These rules apply to all CLI tools, command-line scripts, and terminal utilities.
23
23
  Examples may be inspired by modern TypeScript repos, but guidance here is intentionally
@@ -107,9 +107,9 @@ generic and reusable across projects.
107
107
  ## Commander.js Patterns
108
108
 
109
109
  - **Use Commander.js for all CLI tools:** Import from `commander` and follow established
110
- patterns for command registration and option handling. **Target Commander 15+
111
- (ESM-only, requires Node v22.12.0+).** Commander 14 is security-maintenance
112
- only until May 2027; do not start new projects on it.
110
+ patterns for command registration and option handling.
111
+ **Target Commander 15+ (ESM-only, requires Node v22.12.0+).** Commander 14 is
112
+ security-maintenance only until May 2027; do not start new projects on it.
113
113
 
114
114
  - **Apply colored help globally, not per-command:** Use Commander v14+ `configureHelp()`
115
115
  with style functions, applied recursively to all commands at program initialization.
@@ -565,30 +565,29 @@ When supporting environment variables, especially those used by SDK libraries (l
565
565
  `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, etc.), also support `.env` loading so CLIs work
566
566
  seamlessly in local dev and in remote environments.
567
567
 
568
- - **Prefer Node.js native `--env-file` for Node ≥20.6**: Production-ready on
569
- Node 24 LTS. Pass `--env-file=.env.local --env-file=.env` on the CLI
570
- invocation; later files do not override earlier ones, so list higher-priority
571
- first. No dependency required:
568
+ - **Prefer Node.js native `--env-file` for Node ≥20.6**: Production-ready on Node 24
569
+ LTS. Pass `--env-file=.env.local --env-file=.env` on the CLI invocation; later files
570
+ do not override earlier ones, so list higher-priority first.
571
+ No dependency required:
572
572
 
573
573
  ```bash
574
574
  node --env-file=.env.local --env-file=.env ./dist/bin.js
575
575
  ```
576
576
 
577
- Make this the default for new projects. Reserve `dotenv` for advanced needs
578
- (variable expansion, multiline values, custom precedence logic, or runtime
579
- conditional loading from inside the CLI).
577
+ Make this the default for new projects.
578
+ Reserve `dotenv` for advanced needs (variable expansion, multiline values, custom
579
+ precedence logic, or runtime conditional loading from inside the CLI).
580
580
 
581
- - **Use `dotenv` only when needed:** Add `dotenv` only if your CLI must load
582
- env files programmatically — e.g., it reads them after parsing command-line
583
- flags, performs variable expansion, or supports custom file paths the user
584
- cannot pre-bake into the `node` invocation.
581
+ - **Use `dotenv` only when needed:** Add `dotenv` only if your CLI must load env files
582
+ programmatically — e.g., it reads them after parsing command-line flags, performs
583
+ variable expansion, or supports custom file paths the user cannot pre-bake into the
584
+ `node` invocation.
585
585
 
586
- - **Load `.env.local` and `.env` automatically (recommended):** Whichever
587
- mechanism you use, support both `.env.local` (higher priority, gitignored)
588
- and `.env` (lower priority, committed defaults only).
586
+ - **Load `.env.local` and `.env` automatically (recommended):** Whichever mechanism you
587
+ use, support both `.env.local` (higher priority, gitignored) and `.env` (lower
588
+ priority, committed defaults only).
589
589
 
590
- - **Manual `dotenv` loading:** When you do need `dotenv`, load with explicit
591
- precedence:
590
+ - **Manual `dotenv` loading:** When you do need `dotenv`, load with explicit precedence:
592
591
 
593
592
  ```ts
594
593
  import dotenv from 'dotenv';
@@ -739,3 +738,7 @@ runtimes, Cloudflare Workers, etc.).
739
738
 
740
739
  - **Make scripts composable:** Design scripts to work well in pipelines and automation.
741
740
  Consider how they’ll be used in CI/CD and shell scripts.
741
+
742
+ <!-- This document follows common-doc-guidelines.md.
743
+ See github.com/jlevy/practical-prose and review guidelines before editing.
744
+ -->
@@ -7,8 +7,8 @@ author: Joshua Levy (github.com/jlevy) with LLM assistance
7
7
 
8
8
  **Last Updated**: 2026-05-21
9
9
 
10
- **Tracks**: Vitest `^4.1.7`, `@vitest/coverage-v8` `^4.1.7`. Vitest 5.0 is in
11
- beta — do not adopt yet.
10
+ **Tracks**: Vitest `^4.1.7`, `@vitest/coverage-v8` `^4.1.7`. Vitest 5.0 is in beta — do
11
+ not adopt yet.
12
12
 
13
13
  **Related**:
14
14
 
@@ -86,16 +86,16 @@ Low branch coverage often indicates untested error paths and edge cases.
86
86
  pnpm add -D vitest@^4.1 @vitest/coverage-v8@^4.1
87
87
  ```
88
88
 
89
- Follow the [14-day package-age rule](./pnpm-monorepo-patterns.md#supply-chain-mitigation)
90
- on every upgrade: use `ncu --cooldown 14` or
91
- `pnpm install --frozen-lockfile`.
89
+ Follow the
90
+ [14-day package-age rule](./pnpm-monorepo-patterns.md#supply-chain-mitigation) on every
91
+ upgrade: use `ncu --cooldown 14` or `pnpm install --frozen-lockfile`.
92
92
 
93
93
  ### Vitest 4.x changes that affect coverage
94
94
 
95
95
  - **`coverage.all` was removed** in Vitest 4. Use `coverage.include` and
96
96
  `coverage.exclude` to define exactly which files are reported.
97
- - Coverage reporters and v8 provider now ship as part of `@vitest/coverage-v8`
98
- aligned with the Vitest major version — pin them together.
97
+ - Coverage reporters and v8 provider now ship as part of `@vitest/coverage-v8` aligned
98
+ with the Vitest major version — pin them together.
99
99
 
100
100
  ### Example Configuration
101
101
 
@@ -194,3 +194,7 @@ Vitest automatically fails when thresholds are not met if configured.
194
194
  - **Don’t test implementation details**: Focus on public APIs and behavior
195
195
  - **Don’t ignore branch coverage**: TypeScript’s type system creates many branches
196
196
  - **Don’t exclude too much**: Be selective about exclusions
197
+
198
+ <!-- This document follows common-doc-guidelines.md.
199
+ See github.com/jlevy/practical-prose and review guidelines before editing.
200
+ -->
@@ -9,9 +9,9 @@ alwaysApply: true
9
9
 
10
10
  **Last Updated**: 2026-05-21
11
11
 
12
- **Tracks**: TypeScript `^6.0.3` (stable). TypeScript 7.0 Beta
13
- (`@typescript/native-preview`, binary `tsgo`) is available but **not yet
14
- production-ready** — do not adopt for shipped builds.
12
+ **Tracks**: TypeScript `^6.0.3` (stable).
13
+ TypeScript 7.0 Beta (`@typescript/native-preview`, binary `tsgo`) is available but **not
14
+ yet production-ready** — do not adopt for shipped builds.
15
15
 
16
16
  **Related**:
17
17
 
@@ -21,9 +21,9 @@ production-ready** — do not adopt for shipped builds.
21
21
  - [TypeScript Code Coverage](./typescript-code-coverage.md)
22
22
  - [pnpm Monorepo Patterns](./pnpm-monorepo-patterns.md) and
23
23
  [Bun Monorepo Patterns](./bun-monorepo-patterns.md)
24
- - [Supply-Chain Mitigation](./pnpm-monorepo-patterns.md#supply-chain-mitigation) —
25
- the 14-day package-age rule applies to every TypeScript dependency
26
- (`zod`, `commander`, `vitest`, `eslint`, type packages, etc.).
24
+ - [Supply-Chain Mitigation](./pnpm-monorepo-patterns.md#supply-chain-mitigation) — the
25
+ 14-day package-age rule applies to every TypeScript dependency (`zod`, `commander`,
26
+ `vitest`, `eslint`, type packages, etc.).
27
27
 
28
28
  ## Coding Style
29
29
 
@@ -424,3 +424,7 @@ production-ready** — do not adopt for shipped builds.
424
424
  import { writeFile } from 'atomically';
425
425
  await writeFile(filePath, content);
426
426
  ```
427
+
428
+ <!-- This document follows common-doc-guidelines.md.
429
+ See github.com/jlevy/practical-prose and review guidelines before editing.
430
+ -->
@@ -232,3 +232,7 @@ items.sort(
232
232
  .result(),
233
233
  );
234
234
  ```
235
+
236
+ <!-- This document follows common-doc-guidelines.md.
237
+ See github.com/jlevy/practical-prose and review guidelines before editing.
238
+ -->
@@ -8,9 +8,9 @@ globs: "*.ts"
8
8
 
9
9
  **Last Updated**: 2026-05-21
10
10
 
11
- **Tracks**: `yaml@^2.8.4` (latest stable; 2026-05-02). The `yaml@3.0.0-1`
12
- release is tagged `next` (pre-release) — do not adopt yet. Zod 4.x is the
13
- recommended validation companion.
11
+ **Tracks**: `yaml@^2.8.4` (latest stable; 2026-05-02). The `yaml@3.0.0-1` release is
12
+ tagged `next` (pre-release) — do not adopt yet.
13
+ Zod 4.x is the recommended validation companion.
14
14
 
15
15
  **Related**:
16
16
 
@@ -205,3 +205,7 @@ const output = `---\n${stringifyYaml(data)}---\n\n${content}`;
205
205
 
206
206
  - For general TypeScript rules, see `tbd guidelines typescript-rules`
207
207
  - For error handling patterns, see `tbd guidelines error-handling-rules`
208
+
209
+ <!-- This document follows common-doc-guidelines.md.
210
+ See github.com/jlevy/practical-prose and review guidelines before editing.
211
+ -->
@@ -57,3 +57,7 @@ References: packages/llm-pricing/ - see scripts/generate-llms-data.ts and src/_g
57
57
 
58
58
  Setup: Run `pnpm install` after pulling (new dependencies added).
59
59
  ```
60
+
61
+ <!-- This document follows common-doc-guidelines.md.
62
+ See github.com/jlevy/practical-prose and review guidelines before editing.
63
+ -->
@@ -48,3 +48,7 @@ need.
48
48
  - The `attic/` directory is gitignored—cloned repos won’t pollute your project
49
49
  - You can clone multiple repos into attic/ as needed
50
50
  - Delete cloned repos when done to save disk space
51
+
52
+ <!-- This document follows common-doc-guidelines.md.
53
+ See github.com/jlevy/practical-prose and review guidelines before editing.
54
+ -->
@@ -88,3 +88,7 @@ cycle afterwords, fixing all build or test issues.
88
88
  - Batch database queries instead of individual fetches in loops
89
89
 
90
90
  - Consolidate nested sequential queries into single `Promise.all` call
91
+
92
+ <!-- This document follows common-doc-guidelines.md.
93
+ See github.com/jlevy/practical-prose and review guidelines before editing.
94
+ -->
@@ -75,3 +75,7 @@ export function formatContextMarkdown(
75
75
  4. Review existing docstrings and remove any that are redundant or obvious
76
76
 
77
77
  5. Run linting to ensure no syntax errors
78
+
79
+ <!-- This document follows common-doc-guidelines.md.
80
+ See github.com/jlevy/practical-prose and review guidelines before editing.
81
+ -->
@@ -56,3 +56,7 @@ Keep tests that:
56
56
  4. Remove trivial tests while preserving meaningful coverage
57
57
 
58
58
  5. Run the full test suite to ensure no regressions
59
+
60
+ <!-- This document follows common-doc-guidelines.md.
61
+ See github.com/jlevy/practical-prose and review guidelines before editing.
62
+ -->
@@ -42,3 +42,7 @@ Create a to-do list with the following items then perform all of them:
42
42
  CI watch.
43
43
  - Only proceed when you see all checks have passed.
44
44
  - Confirm to the user that CI has passed.
45
+
46
+ <!-- This document follows common-doc-guidelines.md.
47
+ See github.com/jlevy/practical-prose and review guidelines before editing.
48
+ -->
@@ -52,3 +52,7 @@ Create a to-do list with the following items then perform all of them:
52
52
  ```
53
53
 
54
54
  9. Report findings and recommend next steps.
55
+
56
+ <!-- This document follows common-doc-guidelines.md.
57
+ See github.com/jlevy/practical-prose and review guidelines before editing.
58
+ -->
@@ -55,3 +55,7 @@ Create a to-do list with the following items then perform all of them:
55
55
  - Only proceed when you see all checks have passed in the final summary.
56
56
 
57
57
  8. Confirm to the user that CI has passed and the PR is ready for review.
58
+
59
+ <!-- This document follows common-doc-guidelines.md.
60
+ See github.com/jlevy/practical-prose and review guidelines before editing.
61
+ -->
@@ -74,3 +74,7 @@ Create a to-do list with the following items then perform all of them:
74
74
  - Only proceed when you see all checks have passed in the final summary.
75
75
 
76
76
  8. Confirm to the user that CI has passed and the PR is ready for review.
77
+
78
+ <!-- This document follows common-doc-guidelines.md.
79
+ See github.com/jlevy/practical-prose and review guidelines before editing.
80
+ -->
@@ -28,3 +28,7 @@ Create a to-do list with the following items then perform all of them:
28
28
  4. Repeat this for all beads where you know how to fix them.
29
29
  If unsure about a bead, let the user know at the end of all work which beads had
30
30
  problems.
31
+
32
+ <!-- This document follows common-doc-guidelines.md.
33
+ See github.com/jlevy/practical-prose and review guidelines before editing.
34
+ -->
@@ -28,3 +28,7 @@ Merge upstream changes from origin/main into the current branch.
28
28
  6. **Verify**: Run formatting, linting, and tests
29
29
  - Fix any issues introduced by the merge
30
30
  - Commit the merge result
31
+
32
+ <!-- This document follows common-doc-guidelines.md.
33
+ See github.com/jlevy/practical-prose and review guidelines before editing.
34
+ -->
@@ -29,3 +29,7 @@ Create a to-do list with the following items then perform all of them:
29
29
  If designing new architecture, iterate with the user on the design.
30
30
 
31
31
  5. Summarize the architecture and ask the user to review.
32
+
33
+ <!-- This document follows common-doc-guidelines.md.
34
+ See github.com/jlevy/practical-prose and review guidelines before editing.
35
+ -->
@@ -122,3 +122,7 @@ description: Best practices for designing TypeScript APIs including naming, type
122
122
  | `{lang}-{topic}-rules` | `typescript-cli-tool-rules` | Specialized patterns |
123
123
  | `{domain}-rules` | `convex-rules` | Framework/platform rules |
124
124
  | `general-{topic}-rules` | `general-testing-rules` | Language-agnostic rules |
125
+
126
+ <!-- This document follows common-doc-guidelines.md.
127
+ See github.com/jlevy/practical-prose and review guidelines before editing.
128
+ -->
@@ -47,3 +47,7 @@ Create a to-do list with the following items then perform all of them:
47
47
 
48
48
  5. To list beads linked to a spec, use `tbd list --spec` (see `tbd list --help` for
49
49
  details on filtering and path matching).
50
+
51
+ <!-- This document follows common-doc-guidelines.md.
52
+ See github.com/jlevy/practical-prose and review guidelines before editing.
53
+ -->
@@ -57,3 +57,7 @@ Create a to-do list with the following items then perform all of them:
57
57
  - Mark phases ✅/❌ in the status table after each run
58
58
  - Add test results with dates in the “Test Results” section
59
59
  - Archive or update playbooks when they become stale
60
+
61
+ <!-- This document follows common-doc-guidelines.md.
62
+ See github.com/jlevy/practical-prose and review guidelines before editing.
63
+ -->
@@ -28,3 +28,7 @@ Create a to-do list with the following items then perform all of them:
28
28
  Ask the user for guidance when you need clarification or hit decision points.
29
29
 
30
30
  5. Summarize findings and ask the user to review.
31
+
32
+ <!-- This document follows common-doc-guidelines.md.
33
+ See github.com/jlevy/practical-prose and review guidelines before editing.
34
+ -->
@@ -77,3 +77,7 @@ For official shortcuts added to `packages/tbd/docs/shortcuts/standard/`:
77
77
  - **Guidelines**: Rules to reference (knowledge)
78
78
 
79
79
  See `tbd shortcut new-guideline` for creating guidelines.
80
+
81
+ <!-- This document follows common-doc-guidelines.md.
82
+ See github.com/jlevy/practical-prose and review guidelines before editing.
83
+ -->
@@ -85,3 +85,7 @@ This serves as both a testing checklist and a summary for PR reviewers, showing:
85
85
  - Both
86
86
 
87
87
  6. **Summarize** what’s validated vs what remains for the user to review.
88
+
89
+ <!-- This document follows common-doc-guidelines.md.
90
+ See github.com/jlevy/practical-prose and review guidelines before editing.
91
+ -->
@@ -54,3 +54,7 @@ If unclear, ask the user if they want you to create a spec first using
54
54
  - **Blocker** (`tbd dep add`): Sequential ordering.
55
55
  A bead cannot start until its blockers are complete.
56
56
  Use for tasks that genuinely depend on prior work.
57
+
58
+ <!-- This document follows common-doc-guidelines.md.
59
+ See github.com/jlevy/practical-prose and review guidelines before editing.
60
+ -->
@@ -62,3 +62,7 @@ Create a to-do list with the following items then perform all of them:
62
62
  (See `tbd guidelines commit-conventions` for details.)
63
63
  If all checks pass, commit directly.
64
64
  Only ask the user if there are unresolved problems.
65
+
66
+ <!-- This document follows common-doc-guidelines.md.
67
+ See github.com/jlevy/practical-prose and review guidelines before editing.
68
+ -->
@@ -32,3 +32,7 @@ Create a to-do list with the following items then perform all of them:
32
32
  - List Python-specific issues found (if any) with file:line references
33
33
  - Suggest specific fixes
34
34
  - Note any Python patterns that should be addressed
35
+
36
+ <!-- This document follows common-doc-guidelines.md.
37
+ See github.com/jlevy/practical-prose and review guidelines before editing.
38
+ -->
@@ -32,3 +32,7 @@ Create a to-do list with the following items then perform all of them:
32
32
  - List TypeScript-specific issues found (if any) with file:line references
33
33
  - Suggest specific fixes
34
34
  - Note any TypeScript patterns that should be addressed
35
+
36
+ <!-- This document follows common-doc-guidelines.md.
37
+ See github.com/jlevy/practical-prose and review guidelines before editing.
38
+ -->
@@ -107,3 +107,7 @@ Create a to-do list with the following items then perform all of them:
107
107
  - Otherwise, present the review and ask:
108
108
  - **Fix issues**: Create tbd beads for issues and begin fixing
109
109
  - **Report only**: Just output the review (no changes)
110
+
111
+ <!-- This document follows common-doc-guidelines.md.
112
+ See github.com/jlevy/practical-prose and review guidelines before editing.
113
+ -->
@@ -139,3 +139,7 @@ Create a to-do list with the following items then perform all of them:
139
139
  - List any beads created (if fixing with beads)
140
140
  - Confirm CI status
141
141
  - Provide the PR URL
142
+
143
+ <!-- This document follows common-doc-guidelines.md.
144
+ See github.com/jlevy/practical-prose and review guidelines before editing.
145
+ -->
@@ -20,3 +20,7 @@ Run `tbd prime` for more on using tbd and current status.
20
20
  4. Work through each child bead, close when done
21
21
 
22
22
  5. Close epic with summary
23
+
24
+ <!-- This document follows common-doc-guidelines.md.
25
+ See github.com/jlevy/practical-prose and review guidelines before editing.
26
+ -->