Tom Boucher
81f9534b5a
feat(adr-0002): command contract validation module + prose @-ref cleanup + workflow extraction
ADR-0002: commands/gsd/*.md contract now enforced at two layers:
LINT (scripts/lint-command-contract.cjs — new CI step):
- name: present, starts with gsd: or gsd-
- description: non-empty
- allowed-tools: non-empty, all entries canonical
- execution_context @-refs: resolve on disk, no trailing prose on same line
- handles both @~/ and $HOME/ path prefixes
TEST (tests/command-contract.test.cjs — 361 assertions):
- Behavioral contract for all 65 command files
- Replaces scattered coverage in enh-2790 + bug-3135
- Per-command per-rule test — one failure names the exact file + rule
CI (.github/workflows/test.yml):
- 'Lint — command contract (ADR-0002)' step added to lint-tests job
PROSE @-REF CLEANUP (39 command files, ~900 tokens/invocation recovered):
- Removed redundant @~/.claude/get-shit-done/... paths from <process> prose
- execution_context block is now the single authoritative load declaration
- Routing commands (sketch, spike, update, pause-work, etc.) keep routing
instructions; only the inert path token is stripped
WORKFLOW EXTRACTION (debug.md + thread.md, ~15,000 chars / ~3,750 tokens):
- get-shit-done/workflows/debug.md: full process extracted from commands/gsd/debug.md
- get-shit-done/workflows/thread.md: full process extracted from commands/gsd/thread.md
- Command files reduced to frontmatter + objective + execution_context + context
- debug.md: 9,603 → 1,703 chars; thread.md: 7,868 → 585 chars
RENAME:
- get-shit-done/workflows/extract_learnings.md → extract-learnings.md
(aligns with hyphen convention of all other workflow files)
DOCS:
- docs/INVENTORY.md: count 85→87, new rows, rename row, fix add-todo --backlog attribution
- docs/INVENTORY-MANIFEST.json: +debug.md +thread.md +extract-learnings.md -extract_learnings.md
Closes ADR-0002 implementation.
2026-05-05 15:18:13 -04:00
..
2026-04-26 13:33:35 -04:00
2026-04-27 12:31:32 -04:00
2026-05-05 15:02:38 -04:00
2026-04-25 10:59:33 -04:00
2026-04-25 10:59:33 -04:00
2026-05-02 23:12:50 -04:00
2026-05-05 15:02:23 -04:00
2026-04-25 10:59:33 -04:00
2026-04-26 13:33:35 -04:00
2026-05-02 17:23:44 -04:00
2026-04-25 10:59:33 -04:00
2026-04-30 00:43:47 -04:00
2026-05-02 23:12:50 -04:00
2026-04-27 12:31:43 -04:00
2026-05-02 23:12:50 -04:00
2026-05-02 23:12:50 -04:00
2026-04-27 12:31:43 -04:00
2026-05-05 15:18:13 -04:00
2026-04-27 12:31:43 -04:00
2026-05-02 23:12:50 -04:00
2026-04-27 12:31:43 -04:00
2026-04-25 10:59:33 -04:00
2026-05-04 23:13:33 -04:00
2026-05-01 13:36:44 -04:00
2026-04-26 13:33:35 -04:00
2026-04-26 13:33:52 -04:00
2026-04-25 10:59:33 -04:00
2026-05-05 15:02:26 -04:00
2026-05-01 09:32:21 -04:00
2026-05-04 22:54:01 -04:00
2026-05-05 15:18:13 -04:00
2026-04-25 10:59:33 -04:00
2026-04-25 16:47:55 -04:00
2026-04-20 18:21:35 -04:00
2026-04-30 01:04:41 -04:00
2026-05-05 10:51:10 -04:00
2026-04-27 12:31:43 -04:00
2026-04-25 10:59:33 -04:00
2026-04-29 21:52:20 -04:00
2026-04-25 10:59:33 -04:00
2026-04-25 10:59:33 -04:00
2026-05-02 23:12:50 -04:00
2026-04-26 13:33:35 -04:00
2026-04-27 12:31:43 -04:00
2026-04-27 12:31:43 -04:00
2026-04-27 12:31:43 -04:00
2026-05-04 23:13:33 -04:00
2026-05-02 23:12:50 -04:00
2026-05-04 22:54:01 -04:00
2026-03-12 11:35:45 -06:00
2026-04-25 10:59:33 -04:00
2026-04-27 12:31:43 -04:00
2026-04-27 12:31:43 -04:00
2026-05-04 23:13:33 -04:00
2026-04-25 14:18:34 -04:00
2026-04-27 12:31:43 -04:00
2026-04-25 10:59:33 -04:00
2026-05-02 00:29:45 -04:00
2026-05-04 22:47:16 -04:00
2026-05-04 23:18:41 -04:00
2026-05-02 00:29:34 -04:00
2026-04-27 12:31:43 -04:00
2026-04-25 10:59:33 -04:00
2026-05-04 22:52:30 -04:00
2026-04-27 12:31:43 -04:00
2026-04-26 13:33:35 -04:00
2026-05-05 15:02:19 -04:00
2026-04-25 10:59:33 -04:00
2026-04-26 13:33:54 -04:00
2026-04-25 10:59:33 -04:00
2026-05-01 11:25:10 -04:00
2026-04-27 12:31:43 -04:00
2026-04-27 12:31:43 -04:00
2026-05-01 11:06:24 -04:00
2026-04-25 10:59:33 -04:00
2026-04-27 12:31:43 -04:00
2026-05-01 11:25:10 -04:00
2026-04-25 10:59:33 -04:00
2026-04-25 10:59:33 -04:00
2026-05-05 15:18:13 -04:00
2026-05-02 23:12:50 -04:00
2026-05-04 23:13:33 -04:00
2026-04-27 12:31:43 -04:00
2026-04-25 10:59:33 -04:00
2026-04-25 10:59:33 -04:00
2026-05-05 15:01:59 -04:00
2026-04-26 13:33:35 -04:00
2026-04-23 00:26:53 -04:00
2026-04-27 12:31:43 -04:00