@ikon85/agent-workflow-kit 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/.agents/skills/ask-matt/SKILL.md +139 -0
  2. package/.agents/skills/ask-matt/THIRD-PARTY-NOTICES.md +29 -0
  3. package/.agents/skills/audit-skills/SKILL.md +145 -0
  4. package/.agents/skills/board-to-waves/SKILL.md +135 -0
  5. package/.agents/skills/code-review/SKILL.md +64 -0
  6. package/.agents/skills/codebase-design/DEEPENING.md +37 -0
  7. package/.agents/skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
  8. package/.agents/skills/codebase-design/SKILL.md +114 -0
  9. package/.agents/skills/codebase-design/THIRD-PARTY-NOTICES.md +29 -0
  10. package/.agents/skills/codex-adapter-sync/SKILL.md +151 -0
  11. package/.agents/skills/decision-gate/SKILL.md +67 -0
  12. package/.agents/skills/diagnose/SKILL.md +136 -0
  13. package/.agents/skills/diagnose/THIRD-PARTY-NOTICES.md +29 -0
  14. package/.agents/skills/diagnose/scripts/hitl-loop.template.sh +41 -0
  15. package/.agents/skills/domain-modeling/ADR-FORMAT.md +47 -0
  16. package/.agents/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
  17. package/.agents/skills/domain-modeling/SKILL.md +76 -0
  18. package/.agents/skills/domain-modeling/THIRD-PARTY-NOTICES.md +29 -0
  19. package/.agents/skills/git-worktree-recover/SKILL.md +176 -0
  20. package/.agents/skills/grill-me/SKILL.md +54 -0
  21. package/.agents/skills/grill-me/THIRD-PARTY-NOTICES.md +29 -0
  22. package/.agents/skills/grill-with-docs/ADR-FORMAT.md +47 -0
  23. package/.agents/skills/grill-with-docs/CONTEXT-FORMAT.md +60 -0
  24. package/.agents/skills/grill-with-docs/SKILL.md +137 -0
  25. package/.agents/skills/grill-with-docs/THIRD-PARTY-NOTICES.md +29 -0
  26. package/.agents/skills/implement/SKILL.md +15 -0
  27. package/.agents/skills/implement/THIRD-PARTY-NOTICES.md +29 -0
  28. package/.agents/skills/improve-codebase-architecture/ADR-FORMAT.md +47 -0
  29. package/.agents/skills/improve-codebase-architecture/CONTEXT-FORMAT.md +60 -0
  30. package/.agents/skills/improve-codebase-architecture/DEEPENING.md +37 -0
  31. package/.agents/skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
  32. package/.agents/skills/improve-codebase-architecture/INTERFACE-DESIGN.md +46 -0
  33. package/.agents/skills/improve-codebase-architecture/LANGUAGE.md +53 -0
  34. package/.agents/skills/improve-codebase-architecture/SKILL.md +88 -0
  35. package/.agents/skills/improve-codebase-architecture/THIRD-PARTY-NOTICES.md +29 -0
  36. package/.agents/skills/kit-release/SKILL.md +56 -0
  37. package/.agents/skills/local-ci/SKILL.md +94 -0
  38. package/.agents/skills/orchestrate-wave/SKILL.md +261 -0
  39. package/.agents/skills/orchestrate-wave/references/builder-contract.md +67 -0
  40. package/.agents/skills/prototype/LOGIC.md +79 -0
  41. package/.agents/skills/prototype/SKILL.md +30 -0
  42. package/.agents/skills/prototype/THIRD-PARTY-NOTICES.md +29 -0
  43. package/.agents/skills/prototype/UI.md +112 -0
  44. package/.agents/skills/research/SKILL.md +12 -0
  45. package/.agents/skills/research/THIRD-PARTY-NOTICES.md +29 -0
  46. package/.agents/skills/resolving-merge-conflicts/SKILL.md +14 -0
  47. package/.agents/skills/resolving-merge-conflicts/THIRD-PARTY-NOTICES.md +29 -0
  48. package/.agents/skills/retro/SKILL.md +209 -0
  49. package/.agents/skills/scale-check/SKILL.md +141 -0
  50. package/.agents/skills/security-audit/SKILL.md +67 -0
  51. package/.agents/skills/setup-workflow/SKILL.md +187 -0
  52. package/.agents/skills/setup-workflow/THIRD-PARTY-NOTICES.md +29 -0
  53. package/.agents/skills/setup-workflow/board-sync.md +111 -0
  54. package/.agents/skills/setup-workflow/code-review.md +26 -0
  55. package/.agents/skills/setup-workflow/domain.md +51 -0
  56. package/.agents/skills/setup-workflow/issue-tracker-github.md +35 -0
  57. package/.agents/skills/setup-workflow/issue-tracker-gitlab.md +34 -0
  58. package/.agents/skills/setup-workflow/issue-tracker-local.md +30 -0
  59. package/.agents/skills/setup-workflow/orchestrate-wave-seed.md +44 -0
  60. package/.agents/skills/setup-workflow/spec-completeness-seed.md +44 -0
  61. package/.agents/skills/setup-workflow/spec-self-critique-seed.md +43 -0
  62. package/.agents/skills/setup-workflow/triage-labels.md +18 -0
  63. package/.agents/skills/setup-workflow/workflow-overview.md +33 -0
  64. package/.agents/skills/spec-self-critique/SKILL.md +152 -0
  65. package/.agents/skills/spec-self-critique/scenarios.md +82 -0
  66. package/.agents/skills/tdd/SKILL.md +120 -0
  67. package/.agents/skills/tdd/THIRD-PARTY-NOTICES.md +29 -0
  68. package/.agents/skills/tdd/deep-modules.md +33 -0
  69. package/.agents/skills/tdd/interface-design.md +31 -0
  70. package/.agents/skills/tdd/mocking.md +59 -0
  71. package/.agents/skills/tdd/refactoring.md +10 -0
  72. package/.agents/skills/tdd/tests.md +61 -0
  73. package/.agents/skills/to-issues/SKILL.md +325 -0
  74. package/.agents/skills/to-issues/THIRD-PARTY-NOTICES.md +29 -0
  75. package/.agents/skills/to-prd/PROGRAM-PRD-FORMAT.md +162 -0
  76. package/.agents/skills/to-prd/SKILL.md +180 -0
  77. package/.agents/skills/to-prd/THIRD-PARTY-NOTICES.md +29 -0
  78. package/.agents/skills/to-waves/SKILL.md +260 -0
  79. package/.agents/skills/to-waves/SLICE-METADATA-FORMAT.md +74 -0
  80. package/.agents/skills/triage/AGENT-BRIEF.md +168 -0
  81. package/.agents/skills/triage/OUT-OF-SCOPE.md +101 -0
  82. package/.agents/skills/triage/SKILL.md +122 -0
  83. package/.agents/skills/triage/THIRD-PARTY-NOTICES.md +29 -0
  84. package/.agents/skills/verify-spike/SKILL.md +39 -0
  85. package/.agents/skills/wayfinder/SKILL.md +127 -0
  86. package/.agents/skills/wayfinder/THIRD-PARTY-NOTICES.md +29 -0
  87. package/.agents/skills/wrapup/SKILL.md +71 -0
  88. package/.agents/skills/wrapup/SOURCES.txt +6 -0
  89. package/.agents/skills/zoom-out/SKILL.md +7 -0
  90. package/.agents/skills/zoom-out/THIRD-PARTY-NOTICES.md +29 -0
  91. package/.claude/hooks/_hook_utils.py +184 -0
  92. package/.claude/hooks/drift-guard.py +176 -0
  93. package/.claude/hooks/skill-drift-hint.py +122 -0
  94. package/.claude/hooks/sync-board-status.py +191 -0
  95. package/.claude/skills/ask-matt/SKILL.md +139 -0
  96. package/.claude/skills/ask-matt/THIRD-PARTY-NOTICES.md +29 -0
  97. package/.claude/skills/audit-skills/SKILL.md +145 -0
  98. package/.claude/skills/board-to-waves/SKILL.md +148 -0
  99. package/.claude/skills/code-review/SKILL.md +64 -0
  100. package/.claude/skills/codebase-design/DEEPENING.md +37 -0
  101. package/.claude/skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
  102. package/.claude/skills/codebase-design/SKILL.md +114 -0
  103. package/.claude/skills/codebase-design/THIRD-PARTY-NOTICES.md +29 -0
  104. package/.claude/skills/codex-build/SKILL.md +126 -0
  105. package/.claude/skills/codex-build/THIRD-PARTY-NOTICES.md +35 -0
  106. package/.claude/skills/codex-review/SKILL.md +145 -0
  107. package/.claude/skills/codex-review/THIRD-PARTY-NOTICES.md +31 -0
  108. package/.claude/skills/decision-gate/SKILL.md +67 -0
  109. package/.claude/skills/diagnose/SKILL.md +136 -0
  110. package/.claude/skills/diagnose/THIRD-PARTY-NOTICES.md +29 -0
  111. package/.claude/skills/diagnose/scripts/hitl-loop.template.sh +41 -0
  112. package/.claude/skills/domain-modeling/ADR-FORMAT.md +47 -0
  113. package/.claude/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
  114. package/.claude/skills/domain-modeling/SKILL.md +76 -0
  115. package/.claude/skills/domain-modeling/THIRD-PARTY-NOTICES.md +29 -0
  116. package/.claude/skills/git-guardrails-claude-code/SKILL.md +96 -0
  117. package/.claude/skills/git-guardrails-claude-code/THIRD-PARTY-NOTICES.md +29 -0
  118. package/.claude/skills/git-guardrails-claude-code/scripts/block-dangerous-git.sh +28 -0
  119. package/.claude/skills/git-worktree-recover/SKILL.md +182 -0
  120. package/.claude/skills/grill-me/SKILL.md +54 -0
  121. package/.claude/skills/grill-me/THIRD-PARTY-NOTICES.md +29 -0
  122. package/.claude/skills/grill-me-codex/SKILL.md +158 -0
  123. package/.claude/skills/grill-me-codex/THIRD-PARTY-NOTICES.md +32 -0
  124. package/.claude/skills/grill-with-docs/ADR-FORMAT.md +47 -0
  125. package/.claude/skills/grill-with-docs/CONTEXT-FORMAT.md +60 -0
  126. package/.claude/skills/grill-with-docs/SKILL.md +137 -0
  127. package/.claude/skills/grill-with-docs/THIRD-PARTY-NOTICES.md +29 -0
  128. package/.claude/skills/grill-with-docs-codex/ADR-FORMAT.md +47 -0
  129. package/.claude/skills/grill-with-docs-codex/CONTEXT-FORMAT.md +60 -0
  130. package/.claude/skills/grill-with-docs-codex/SKILL.md +233 -0
  131. package/.claude/skills/grill-with-docs-codex/THIRD-PARTY-NOTICES.md +33 -0
  132. package/.claude/skills/implement/SKILL.md +15 -0
  133. package/.claude/skills/implement/THIRD-PARTY-NOTICES.md +29 -0
  134. package/.claude/skills/improve-codebase-architecture/ADR-FORMAT.md +47 -0
  135. package/.claude/skills/improve-codebase-architecture/CONTEXT-FORMAT.md +60 -0
  136. package/.claude/skills/improve-codebase-architecture/DEEPENING.md +37 -0
  137. package/.claude/skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
  138. package/.claude/skills/improve-codebase-architecture/INTERFACE-DESIGN.md +46 -0
  139. package/.claude/skills/improve-codebase-architecture/LANGUAGE.md +53 -0
  140. package/.claude/skills/improve-codebase-architecture/SKILL.md +88 -0
  141. package/.claude/skills/improve-codebase-architecture/THIRD-PARTY-NOTICES.md +29 -0
  142. package/.claude/skills/kit-release/SKILL.md +56 -0
  143. package/.claude/skills/local-ci/SKILL.md +94 -0
  144. package/.claude/skills/orchestrate-wave/SKILL.md +269 -0
  145. package/.claude/skills/orchestrate-wave/references/builder-contract.md +67 -0
  146. package/.claude/skills/prototype/LOGIC.md +79 -0
  147. package/.claude/skills/prototype/SKILL.md +30 -0
  148. package/.claude/skills/prototype/THIRD-PARTY-NOTICES.md +29 -0
  149. package/.claude/skills/prototype/UI.md +112 -0
  150. package/.claude/skills/research/SKILL.md +12 -0
  151. package/.claude/skills/research/THIRD-PARTY-NOTICES.md +29 -0
  152. package/.claude/skills/resolving-merge-conflicts/SKILL.md +14 -0
  153. package/.claude/skills/resolving-merge-conflicts/THIRD-PARTY-NOTICES.md +29 -0
  154. package/.claude/skills/retro/SKILL.md +209 -0
  155. package/.claude/skills/scale-check/SKILL.md +141 -0
  156. package/.claude/skills/security-audit/SKILL.md +67 -0
  157. package/.claude/skills/setup-pre-commit/SKILL.md +104 -0
  158. package/.claude/skills/setup-pre-commit/scripts/pre-commit.template.sh +35 -0
  159. package/.claude/skills/setup-workflow/SKILL.md +187 -0
  160. package/.claude/skills/setup-workflow/THIRD-PARTY-NOTICES.md +29 -0
  161. package/.claude/skills/setup-workflow/board-sync.md +111 -0
  162. package/.claude/skills/setup-workflow/code-review.md +26 -0
  163. package/.claude/skills/setup-workflow/domain.md +51 -0
  164. package/.claude/skills/setup-workflow/issue-tracker-github.md +35 -0
  165. package/.claude/skills/setup-workflow/issue-tracker-gitlab.md +34 -0
  166. package/.claude/skills/setup-workflow/issue-tracker-local.md +30 -0
  167. package/.claude/skills/setup-workflow/orchestrate-wave-seed.md +44 -0
  168. package/.claude/skills/setup-workflow/spec-completeness-seed.md +44 -0
  169. package/.claude/skills/setup-workflow/spec-self-critique-seed.md +43 -0
  170. package/.claude/skills/setup-workflow/triage-labels.md +18 -0
  171. package/.claude/skills/setup-workflow/workflow-overview.md +33 -0
  172. package/.claude/skills/skill-manifest.json +389 -0
  173. package/.claude/skills/spec-self-critique/SKILL.md +152 -0
  174. package/.claude/skills/spec-self-critique/scenarios.md +82 -0
  175. package/.claude/skills/tdd/SKILL.md +120 -0
  176. package/.claude/skills/tdd/THIRD-PARTY-NOTICES.md +29 -0
  177. package/.claude/skills/tdd/deep-modules.md +33 -0
  178. package/.claude/skills/tdd/interface-design.md +31 -0
  179. package/.claude/skills/tdd/mocking.md +59 -0
  180. package/.claude/skills/tdd/refactoring.md +10 -0
  181. package/.claude/skills/tdd/tests.md +61 -0
  182. package/.claude/skills/to-issues/SKILL.md +325 -0
  183. package/.claude/skills/to-issues/THIRD-PARTY-NOTICES.md +29 -0
  184. package/.claude/skills/to-prd/PROGRAM-PRD-FORMAT.md +162 -0
  185. package/.claude/skills/to-prd/SKILL.md +180 -0
  186. package/.claude/skills/to-prd/THIRD-PARTY-NOTICES.md +29 -0
  187. package/.claude/skills/to-waves/SKILL.md +260 -0
  188. package/.claude/skills/to-waves/SLICE-METADATA-FORMAT.md +74 -0
  189. package/.claude/skills/triage/AGENT-BRIEF.md +168 -0
  190. package/.claude/skills/triage/OUT-OF-SCOPE.md +101 -0
  191. package/.claude/skills/triage/SKILL.md +122 -0
  192. package/.claude/skills/triage/THIRD-PARTY-NOTICES.md +29 -0
  193. package/.claude/skills/verify-spike/SKILL.md +39 -0
  194. package/.claude/skills/wayfinder/SKILL.md +127 -0
  195. package/.claude/skills/wayfinder/THIRD-PARTY-NOTICES.md +29 -0
  196. package/.claude/skills/wrapup/SKILL.md +81 -0
  197. package/.claude/skills/wrapup/SOURCES.txt +6 -0
  198. package/.claude/skills/write-a-skill/GLOSSARY.md +201 -0
  199. package/.claude/skills/write-a-skill/SKILL.md +88 -0
  200. package/.claude/skills/write-a-skill/THIRD-PARTY-NOTICES.md +29 -0
  201. package/.claude/skills/zoom-out/SKILL.md +7 -0
  202. package/.claude/skills/zoom-out/THIRD-PARTY-NOTICES.md +29 -0
  203. package/LICENSE +28 -0
  204. package/PROVENANCE.md +39 -0
  205. package/README.md +619 -0
  206. package/agent-workflow-kit.package.json +1939 -0
  207. package/docs/agents/board-sync.md +71 -0
  208. package/docs/agents/code-review.md +14 -0
  209. package/docs/agents/domain.md +7 -0
  210. package/docs/agents/issue-tracker.md +12 -0
  211. package/docs/agents/security-audit-runbook-template.md +205 -0
  212. package/docs/agents/skills/orchestrate-wave.md +13 -0
  213. package/docs/agents/skills/spec-self-critique.md +18 -0
  214. package/docs/agents/triage-labels.md +10 -0
  215. package/docs/agents/wave-anchor-template.md +88 -0
  216. package/docs/conventions/spec-completeness.md +23 -0
  217. package/docs/index.html +56 -0
  218. package/docs/methodology.html +488 -0
  219. package/docs/methodology.svg +93 -0
  220. package/docs/workflow.png +0 -0
  221. package/package.json +40 -0
  222. package/scripts/anchor_table.py +343 -0
  223. package/scripts/board-sync.py +1232 -0
  224. package/scripts/board_config.py +147 -0
  225. package/scripts/board_fields.py +192 -0
  226. package/scripts/build-kit.mjs +116 -0
  227. package/scripts/build-kit.test.mjs +59 -0
  228. package/scripts/check-kit-staleness.mjs +45 -0
  229. package/scripts/check-kit-staleness.test.mjs +19 -0
  230. package/scripts/execute-ready-check.py +516 -0
  231. package/scripts/issue_deps.py +79 -0
  232. package/scripts/kit-release.mjs +100 -0
  233. package/scripts/kit-release.test.mjs +67 -0
  234. package/scripts/lib/audit-refs.mjs +146 -0
  235. package/scripts/lib/scrub.mjs +113 -0
  236. package/scripts/lib/scrub.test.mjs +187 -0
  237. package/scripts/loc_offender_core.py +196 -0
  238. package/scripts/loc_offender_gate.py +182 -0
  239. package/scripts/node_kind.py +68 -0
  240. package/scripts/portability_profile_scan.py +53 -0
  241. package/scripts/pr-body-check.py +263 -0
  242. package/scripts/program_graph.py +125 -0
  243. package/scripts/program_graph_parse.py +275 -0
  244. package/scripts/program_graph_validate.py +256 -0
  245. package/scripts/program_sync.py +160 -0
  246. package/scripts/release-delta-guard.mjs +96 -0
  247. package/scripts/release-delta-guard.test.mjs +53 -0
  248. package/scripts/test_board_sync_create_idempotency.py +104 -0
  249. package/scripts/test_dist_kit_smoke.py +199 -0
  250. package/scripts/test_kit_docs_language_census.py +178 -0
  251. package/scripts/test_skill_code_review_seed.py +89 -0
  252. package/scripts/test_skill_frontmatter_lint.py +226 -0
  253. package/scripts/test_skill_gh_lint.py +124 -0
  254. package/scripts/test_skill_language_census.py +254 -0
  255. package/scripts/test_skill_portability_lint.py +773 -0
  256. package/scripts/test_skill_publish_audit.py +300 -0
  257. package/scripts/test_skill_selfcontainment_lint.py +255 -0
  258. package/scripts/test_skill_setup_workflow_seeds.py +200 -0
  259. package/scripts/test_skill_stale_name_lint.py +126 -0
  260. package/scripts/test_skill_surface_refs.py +300 -0
  261. package/scripts/test_skill_trailing_artifact_lint.py +71 -0
  262. package/scripts/wrapup-land.py +573 -0
  263. package/src/cli.mjs +70 -0
  264. package/src/commands/diff.mjs +6 -0
  265. package/src/commands/init.mjs +59 -0
  266. package/src/commands/uninstall.mjs +43 -0
  267. package/src/commands/update.mjs +95 -0
  268. package/src/lib/atomicWrite.mjs +49 -0
  269. package/src/lib/bundle.mjs +133 -0
  270. package/src/lib/hash.mjs +13 -0
  271. package/src/lib/manifest.mjs +58 -0
  272. package/src/lib/sentinel.mjs +20 -0
  273. package/src/lib/settings.mjs +23 -0
package/README.md ADDED
@@ -0,0 +1,619 @@
1
+ # agent-workflow-kit
2
+
3
+ **A complete shipping loop for coding agents — plan → execute → land → learn.**
4
+
5
+ ## Maintainer build
6
+
7
+ The public repository is the source of truth. A fresh clone needs Node 20 or
8
+ newer, Python 3, and no Python packages:
9
+
10
+ ```sh
11
+ npm install --ignore-scripts
12
+ npm test
13
+ npm run kit:build
14
+ npm run kit:staleness
15
+ npm pack --dry-run
16
+ ```
17
+
18
+ `kit:build` assembles `dist-kit/` only from files in this checkout and writes a
19
+ sha256 manifest. `kit:staleness` compares that fresh manifest with the checked-in
20
+ install manifest. The frozen `v0.9.0` manifest remains under `test/fixtures/` as
21
+ the historical golden baseline; current builds intentionally include later SSOT
22
+ changes.
23
+
24
+ Maintainers prepare releases with `/kit-release`. It derives the shipped delta
25
+ from a fresh manifest, recommends Semver, applies only the confirmed target,
26
+ regenerates the checked-in manifest, and runs the full test and pack gates.
27
+ Landing remains owned by `/wrapup`; publishing the matching npm package and
28
+ GitHub release happens only through the configured post-merge release flow.
29
+
30
+ These are the skills, helper scripts, and conventions one team actually uses to
31
+ take work from a vague idea to a merged, verified PR with [Claude Code] and
32
+ [Codex]. One `npx` command drops them into any repo; `/setup-workflow` wires
33
+ them to your tracker and board. Edit anything — updates never clobber your changes.
34
+
35
+ [Claude Code]: https://claude.com/claude-code
36
+ [Codex]: https://developers.openai.com/codex/cli
37
+
38
+ ## Quickstart
39
+
40
+ ```sh
41
+ # from the root of the repo you want to add the workflow to
42
+ npx github:iKon85/agent-workflow-kit init
43
+ ```
44
+
45
+ 1. **`init`** copies the skills + helper scripts in, and seeds empty
46
+ project-layer stubs. It never overwrites a file you already have.
47
+ 2. **Run `/setup-workflow`** once (in Claude Code / Codex). A guided, idempotent
48
+ skill that detects your issue tracker, writes your label + domain + deploy
49
+ config, and — for a GitHub Projects board — discovers the field IDs into a
50
+ board profile. See [Configuration](#configuration).
51
+ 3. **Start working.** Trigger skills by name (`/grill-with-docs`, `/tdd`,
52
+ `/wrapup`, …) — the workflow below explains when each one earns its keep.
53
+ Unsure which one fits? Run **`/ask-matt`** — it routes you to the right skill.
54
+
55
+ ## The workflow it installs
56
+
57
+ The skills aren't a grab-bag — they're four phases of one loop, entered through a
58
+ single funnel no matter where your work starts. Each phase below names the failure
59
+ mode it removes and the skills that remove it.
60
+
61
+ ![The workflow loop: idea / plan / backlog / raw-issue all funnel through an optional grill into one uniform PRD, which to-issues decomposes into an atomic issue or a wave anchor; a gate clears any unknown, then Execute → Land → Learn, which compounds back into the next idea. Two further streams enter outside the funnel — a bug/anomaly through diagnose, and a code-fighting-the-structure change through zoom-out — both joining at Execute; a one-time repo-setup lane (setup-workflow, git-guardrails, setup-pre-commit) sits off the loop and installs the pre-commit/pre-push gate that Land relies on.](docs/workflow.png)
62
+
63
+ <!--
64
+ The image above is a pre-rendered PNG, not a live Mermaid block, on purpose:
65
+ GitHub's Mermaid renderer clips long node labels, and an <img>-embedded SVG
66
+ can't render Mermaid's foreignObject node text (shows blank). A rasterised PNG
67
+ renders identically everywhere.
68
+ Source of truth: tools/agent-workflow-kit/assets/workflow.mmd
69
+ Regenerate after editing the source:
70
+ npx -y @mermaid-js/mermaid-cli \
71
+ -i tools/agent-workflow-kit/assets/workflow.mmd \
72
+ -o tools/agent-workflow-kit/assets/workflow.png \
73
+ -t dark -b '#0d1117' -s 3
74
+ build-kit.mjs copies assets/workflow.png -> dist-kit/docs/workflow.png.
75
+ -->
76
+
77
+
78
+ ### 1. Plan — turn a vague idea into shaped, tracked work
79
+
80
+ > *Agents dive into code before the problem is sharp, then build the wrong thing
81
+ > well.* The plan phase makes you earn a clear spec first.
82
+
83
+ **One funnel, many doors, one shape.** There's no single front door. You enter
84
+ wherever your work actually starts — a vague idea, a plan you already wrote, a PRD
85
+ pasted from another tool, a raw issue, or a whole backlog — and every door funnels
86
+ into the *same shaped artefact*: a Draft-PRD that, once sliced, becomes either one
87
+ atomic issue or a wave anchor with child slices. What counts downstream is the
88
+ **shape of the artefact, never where it came from** — so each step can be entered
89
+ cold and *extracts or synthesizes* what's missing instead of assuming an earlier
90
+ step ran. The routing key is just *"is there an issue yet?"*: a loose artefact
91
+ (no issue) enters at `to-prd`; an existing issue or file-bundle enters at
92
+ `to-issues` directly.
93
+
94
+ - **Grill as deep as the work deserves — it's optional.** `grill-me` /
95
+ `grill-with-docs` interrogate the intent (and your domain docs) until the real
96
+ requirement surfaces, instead of latching onto the first framing. Skip it for a
97
+ mechanical change, run a light grill for a normal feature, add `+codex` (below)
98
+ for something high-stakes. Your call, per piece of work.
99
+ - **`to-prd`** turns whatever you bring — idea, plan, external spec — into a short
100
+ Draft-PRD issue, *extracting* the template sections from what already exists. A
101
+ required section it genuinely can't derive becomes an honest **Open points**
102
+ block, never a silent "looks complete" placeholder.
103
+ - **`to-issues`** slices the PRD into tracer-bullet verticals and picks the shape:
104
+ **1 slice → one atomic issue** the PR closes; **≥2 slices → a wave anchor** with
105
+ linked child slices. It re-derives readiness from the artefact itself, so it works
106
+ just as well started straight on a raw issue or file-bundle — any unresolved
107
+ *Open points* travel through as a build-blocking gate (the profile's
108
+ configurable `vorBau` heading, see [Configuration](#configuration)) that never
109
+ vanishes silently.
110
+ - **`board-to-waves`** clusters an existing backlog into themed campaigns when you
111
+ need to *find* the next wave rather than start fresh.
112
+ - **`triage`** keeps the inbox sane with a consistent label vocabulary.
113
+ - **`spec-self-critique`** red-teams your own spec before you commit to building it.
114
+ - **`verify-spike` / `decision-gate` — gate-before-build.** When `to-issues` cuts a
115
+ slice that hinges on an unknown it tags the slice instead of guessing: a single
116
+ yes/no fact against the real lib/runtime/DB runs as a **`verify-spike`** (throwaway
117
+ read-only harness, verdict + proof sunk to the issue); a bounded "which option"
118
+ trade-off or a research gap runs as a **`decision-gate`** (read-only weigh-up,
119
+ options × criteria table, reasoned pick sunk to an ADR/issue). The gate is its own
120
+ slice, sequenced *before* the build slice it blocks — clarify the one open point
121
+ cheaply instead of re-grilling the whole feature; genuinely hard-to-reverse calls
122
+ still escalate up to `+codex`.
123
+ - **`domain-modeling` / `codebase-design` — shared design vocabulary.** When a slice
124
+ is about *shaping* rather than shipping — pinning down the ubiquitous language and
125
+ ADRs (`domain-modeling`) or designing a deep module behind a clean seam
126
+ (`codebase-design`) — these give the grill and the design work a precise, consistent
127
+ vocabulary instead of ad-hoc terms.
128
+ - **`wayfinder` — when the idea is too big for one session.** Charts a foggy,
129
+ multi-session effort as a shared **map** issue with investigation tickets on
130
+ your tracker (native blocking renders the frontier visually), resolved one
131
+ per session until the way to the destination is clear — planning, not doing.
132
+ - **`research`** delegates primary-source reading legwork to a background
133
+ agent; the findings land as a cited Markdown note in the repo.
134
+
135
+ You approve the slice breakdown before anything is published — the funnel never
136
+ publishes behind your back.
137
+
138
+ ### 2. Execute — build it right, not just fast
139
+
140
+ > *"Make the tests pass" drifts into untested, sprawling, hard-to-review change.*
141
+ > The execute phase keeps the diff disciplined.
142
+
143
+ - **`tdd`** — a strict red → green → refactor loop; the test is written first
144
+ and must fail for the right reason.
145
+ - **`prototype`** — spike a throwaway when the path is genuinely unclear, so the
146
+ real implementation is informed.
147
+ - **`implement`** — drive a PRD or a set of issues to done: `tdd` at the agreed
148
+ seams, typecheck + single-file tests throughout, the full suite once at the end,
149
+ then a `code-review` pass before it lands.
150
+
151
+ **Two more skills are doors of their own, not funnel steps.** You reach for them
152
+ when the work *starts* broken or tangled rather than from a fresh idea, so they
153
+ enter outside the plan funnel and feed straight into Execute:
154
+
155
+ - **`diagnose`** — a disciplined root-cause hunt for bugs (reproduce → isolate →
156
+ fix → prove), not a guess-and-patch. Entered from a bug or anomaly, never the PRD
157
+ funnel; the fix it lands flows on into Execute.
158
+ - **`zoom-out` / `improve-codebase-architecture`** — step back from the diff to
159
+ the structure when a change is fighting the codebase. A recon stream that either
160
+ becomes a planned slice (back through `to-issues`) or guides a refactor in place.
161
+
162
+ ### 3. Land — ship without surprises
163
+
164
+ > *The risky part is the merge: half-checked PRs, broken hooks, context lost at
165
+ > handoff.* The land phase puts mechanical gates in front of the commit.
166
+
167
+ - **`wrapup`** — the land-and-clean closeout: make the branch landable, enforce
168
+ the PR body contract, merge the PR, reconcile the board, sweep merged branches,
169
+ and surface anything still open. It does not replace live verification; verify
170
+ the user outcome before landing.
171
+ - **The pre-commit / pre-push gate fires automatically** — TypeScript, lint, and
172
+ contract guards block a broken commit or push. You don't run a skill here; the
173
+ gate was installed once at setup (`git-guardrails` / `setup-pre-commit`, both
174
+ Claude only, see Configuration) and now guards every Land.
175
+ - **`resolving-merge-conflicts`** — a disciplined loop for an in-progress
176
+ merge/rebase conflict: understand each side's intent from history/PRs, preserve
177
+ both where possible, always resolve (never `--abort`), then re-run the checks.
178
+ - **Helper scripts** — `pr-body-check.py`, `execute-ready-check.py`, and
179
+ `board-sync.py` keep the PR and the issue tracker honest (see Configuration).
180
+
181
+ ### 4. Learn — compound the lessons instead of repeating them
182
+
183
+ > *The same mistake recurs because nothing captured it.* The learn phase turns
184
+ > friction into config.
185
+
186
+ - **`retro`** — an in-session post-mortem that proposes concrete changes to your
187
+ rules, skills, or hooks, each with per-patch approval.
188
+ - **`write-a-skill`** (Claude only) — turn a move you keep repeating into a
189
+ reusable skill.
190
+
191
+ ### Optional: cross-model review (via Codex)
192
+
193
+ An independent second model is a cheap way to catch what one model rationalizes.
194
+ **`grill-me-codex` / `grill-with-docs-codex`** run the grill through Codex,
195
+ **`codex-review`** gets a second-opinion plan review, and **`codex-build`**
196
+ flips the roles for an optional Act 3 (Codex implements the frozen spec in a
197
+ bounded workspace-write sandbox, Claude verifies the diff and proof). All four
198
+ are Claude only (invoked from Claude Code, which shells out to the Codex CLI)
199
+ and need the Codex CLI installed.
200
+
201
+ ### The altitude model
202
+
203
+ The four phases above are what you *do*. Underneath them sits a shape for
204
+ *what you're doing it to* — a plan travels through four altitudes, and each
205
+ hands a well-defined object to the level below:
206
+
207
+ | Altitude | What it is | Artefact |
208
+ |---|---|---|
209
+ | **Program** | The whole undertaking, described once with a wave plan attached. | one PRD issue |
210
+ | **Phase** | An acceptance bracket around a handful of waves. Optional. | a board field |
211
+ | **Wave** | The working unit: one outcome, a few slices, one gate — exactly the wave you already build with the flow above. | one anchor issue |
212
+ | **Slice** | One build session, one pull request, one visible result. | one sub-issue |
213
+
214
+ Two roads lead to the same wave. **Top-down:** `scale-check` names the size in
215
+ a few plain questions; a big undertaking gets grilled once into a Program PRD
216
+ with a wave plan, and `to-waves` unfolds it into named waves after you approve
217
+ a full preview in chat — zero board writes until you say yes. **Bottom-up:**
218
+ `board-to-waves` clusters loose issues into a wave candidate, which earns a
219
+ real number only when you promote it. Either road lands in the *identical*
220
+ wave anchor plus slice sub-issues, built through the same `tdd` → `wrapup` →
221
+ `retro` spine as every other wave.
222
+
223
+ When the slices are file-disjoint and their specs are locked, **`orchestrate-wave`**
224
+ lands the whole anchor end-to-end — often AFK: it dispatches an implementer per
225
+ slice into its own worktree, integrates serially, verifies centrally, and lands
226
+ the wave. It's the execute-and-land node of the wave ladder (`scale-check` →
227
+ `to-waves` / `board-to-waves` → `orchestrate-wave`); a single slice still just
228
+ goes to `tdd`.
229
+
230
+ ![The Program-to-Phase-to-Wave-to-Slice altitude ladder, and the two routes — a planned top-down Program route and a grown bottom-up board route — that both fund the same Wave-and-Slices build spine.](docs/methodology.svg)
231
+
232
+ The full walkthrough — every entry point, the build-layer skills, and the six
233
+ mechanics that keep a multi-wave plan honest (gates, drift propagation, the
234
+ revision loop, `program-sync`, and counted completeness) — lives on one page:
235
+ **[read the methodology →](https://ikon85.github.io/agent-workflow-kit/methodology.html)**
236
+ (also shipped as `docs/methodology.html` in your install, so it works offline too).
237
+
238
+ ## Configuration
239
+
240
+ The skills ship the *how*; your repo supplies the *what*. `init` only lays down
241
+ empty stubs — **`/setup-workflow` fills them**. It's a guided, idempotent skill
242
+ (not a script): it explores your repo, confirms with you section by section, and
243
+ writes:
244
+
245
+ | It writes | So that |
246
+ |---|---|
247
+ | `docs/agents/issue-tracker.md` | `to-issues` / `triage` know whether to call `gh`, `glab`, or follow your flow |
248
+ | `docs/agents/triage-labels.md` | triage uses *your* label vocabulary |
249
+ | `docs/agents/domain.md` | the domain skills find your `CONTEXT.md` / ADR layout |
250
+ | `docs/agents/board-sync.md` | the board scripts get your GitHub Projects field IDs (the **board profile**) |
251
+ | `## Agent skills` + `## Prod` in `CLAUDE.md` / `AGENTS.md` | the agent knows your skills and deploy target |
252
+
253
+ Each generated file carries a `setup-workflow` sentinel on its first line, so a
254
+ re-run only fills what's missing and **never overwrites content you've filled in**.
255
+
256
+ Two more one-time skills harden the repo when you adopt the kit — both **Claude
257
+ only**: **`git-guardrails`** installs the secret / branch / broken-build
258
+ guardrails, and **`setup-pre-commit`** wires the pre-commit gate. Run them once
259
+ — afterwards the gate fires automatically on every commit and push (see the
260
+ Land phase above).
261
+
262
+ ### The board profile
263
+
264
+ The board helper scripts carry **no hard-coded IDs**. They read everything
265
+ board-specific from a single fenced `json` block in `docs/agents/board-sync.md`,
266
+ marked `<!-- board-sync:profile -->`:
267
+
268
+ ```json
269
+ {
270
+ "repo": "<owner>/<repo>",
271
+ "project": { "number": 1, "owner": "<owner>", "nodeId": "<project-node-id>" },
272
+ "fields": {
273
+ "status": {
274
+ "id": "<status-field-id>",
275
+ "options": { "Spec": "<option-id>", "In Progress": "<option-id>", "Done": "<option-id>" },
276
+ "roles": { "spec": "Spec", "inProgress": "In Progress", "done": "Done" }
277
+ },
278
+ "wave": "<wave-field-id>",
279
+ "cluster": "<cluster-field-id>",
280
+ "specPath": "<field-id>",
281
+ "planPath": "<field-id>"
282
+ },
283
+ "labels": {
284
+ "readyForAgent": "ready-for-agent",
285
+ "typePrefix": "type:",
286
+ "clusterType": "type:cluster",
287
+ "waveStub": "wave-stub"
288
+ },
289
+ "branchPrefixes": ["feat", "fix", "chore", "docs"],
290
+ "prMarkers": { "partOf": "Part of", "retroMarker": "**Retro:**", "retroValues": ["ran", "skipped"] },
291
+ "headings": { "vorBau": "Clarify Before Build" }
292
+ }
293
+ ```
294
+
295
+ `/setup-workflow` discovers these values for you from `gh project field-list`;
296
+ you rarely touch this by hand. Point a script at an alternate profile with the
297
+ `BOARD_SYNC_PROFILE` environment variable. Labels, branch prefixes, and headings
298
+ are *yours* to rename — the scripts read whatever the profile says.
299
+
300
+ Status stage names are yours too: scripts and skills address stages by semantic
301
+ **role** (`fields.status.roles`: `idea/triaged/spec/inProgress/review/done` →
302
+ your option names, e.g. `board-sync.py add --status-role spec`), so a board in
303
+ any language works — map each role once, rename an option with one profile edit.
304
+
305
+ ### What's yours vs. the kit's
306
+
307
+ `init` records a sha256 of every file it installs. That's the line between the
308
+ two: **edit any skill or script freely** — `update` detects your edits and backs
309
+ them up rather than clobbering them. Your **project layer** (`docs/agents/*`, the
310
+ board profile, `CLAUDE.md`) is created once and never touched by `update`.
311
+
312
+ ## Updating & removing
313
+
314
+ ```sh
315
+ npx github:iKon85/agent-workflow-kit diff # preview an update (dry run, writes nothing)
316
+ npx github:iKon85/agent-workflow-kit update # apply it
317
+ npx github:iKon85/agent-workflow-kit uninstall # remove kit-installed files
318
+ ```
319
+
320
+ `update` is a three-way reconcile against the hashes `init` recorded:
321
+
322
+ - a file you **didn't** touch fast-forwards to the new version;
323
+ - a file you **did** edit is kept — the incoming version is backed up with a
324
+ timestamp and a diff is printed, never silently overwritten;
325
+ - a file removed upstream is offered for deletion (a hook still referenced by your
326
+ `settings.json` is kept regardless);
327
+ - new skills are added.
328
+
329
+ `uninstall` removes what the kit installed and retains anything you edited or
330
+ still reference. Flags: `--force` (overwrite pre-existing files on `init`),
331
+ `--yes` / `-y` (non-interactive).
332
+
333
+ ## Release notes
334
+
335
+ ### 0.10.0
336
+
337
+ - added: `.agents/skills/kit-release/SKILL.md`
338
+ - added: `.claude/skills/kit-release/SKILL.md`
339
+ - added: `scripts/kit-release.mjs`
340
+ - added: `scripts/release-delta-guard.mjs`
341
+ - changed: `.agents/skills/setup-workflow/workflow-overview.md`
342
+ - changed: `.claude/skills/setup-workflow/workflow-overview.md`
343
+
344
+ ### 0.9.0
345
+
346
+ - Re-syncs the vendored Chase AI `-codex` skills to upstream HEAD (fe37a70):
347
+ every `codex exec`/`resume` round now echoes the active model before Round 1
348
+ and runs under a 10-minute overall ceiling in addition to the existing 90s
349
+ liveness probe.
350
+ - New vendored skill: **`codex-build`** (optional Act 3 — Codex implements a
351
+ frozen spec, Claude verifies the diff and proof). Locally adapted: upstream's
352
+ `--yolo` full-access sandbox is replaced by a bounded workspace-write sandbox
353
+ with a declared allowed-write set enforced after every round.
354
+ - Aligns Act 1 of `grill-me-codex` / `grill-with-docs-codex` with the v1.1.0
355
+ grill skills (facts-vs-decisions rule + confirmation gate).
356
+ - Bumps the kit metadata to `0.9.0`. After this PR is merged, publish the
357
+ matching GitHub release/tag as a separate release step.
358
+
359
+ ### 0.8.0
360
+
361
+ - Re-syncs the vendored Matt Pocock skills to upstream **v1.1.0** (fork-and-own:
362
+ selective merge; local folder names kept for the upstream-renamed skills —
363
+ `to-prd` = upstream `to-spec`, `to-issues` = upstream `to-tickets`).
364
+ - Two new vendored skills: **`wayfinder`** (chart a huge, foggy effort as a
365
+ shared map of investigation tickets on your tracker, resolved one per session)
366
+ and **`research`** (delegate primary-source reading to a background agent;
367
+ findings land as a cited Markdown note in the repo).
368
+ - Backports the upstream wins: the negation failure mode in `write-a-skill`,
369
+ the facts-vs-decisions rule + confirmation gate in `grill-me` /
370
+ `grill-with-docs`, and a wide-refactor (expand–contract) section in
371
+ `to-issues`.
372
+ - `setup-workflow`'s issue-tracker templates gain **Wayfinding operations**
373
+ sections (map/ticket/blocking/frontier per tracker) that `wayfinder` consults.
374
+ - Bumps the kit metadata to `0.8.0`. After this PR is merged, publish the
375
+ matching GitHub release/tag as a separate release step.
376
+
377
+ ### 0.7.0
378
+
379
+ - Rounds out the execute/land/learn line with five new skills —
380
+ `orchestrate-wave` (AFK wave landing), `local-ci` (pre-PR local gate),
381
+ `git-worktree-recover`, `audit-skills` (anti-drift learn step), and
382
+ `security-audit` (two-model audit + runbook template) — plus the
383
+ `skill-drift-hint.py` SessionStart hook.
384
+ - English-normalizes the wave-anchor template and hardens
385
+ `execute-ready-check.py` heading detection. (Full notes: GitHub release v0.7.0.)
386
+
387
+ ### 0.6.2
388
+
389
+ - Profile-driven board-status **roles**: `fields.status.roles` maps semantic
390
+ stages to your board's own option names (any language); `board-sync.py`
391
+ gains `--status-role`; the status field is matched by ID.
392
+ (Full notes: GitHub release v0.6.2.)
393
+
394
+ ### 0.6.1
395
+
396
+ - Routing-doctrine sync for the published skills (`wrapup`,
397
+ `codex-adapter-sync`, wave-anchor model placeholders) — mechanical plumbing
398
+ routes to the cheap tier, judgment stays on the main thread.
399
+ (Full notes: GitHub release v0.6.1.)
400
+
401
+ ### 0.6.0
402
+
403
+ - Adds the **Program route**, a top-down altitude above the existing feature
404
+ funnel for greenfield / multi-wave work: `scale-check` (a plain-language
405
+ router — 3–6 questions to a Program / Feature / Direct-Slice / Bug verdict)
406
+ and `to-waves` (unfolds a Program-PRD's Wellenplan into named wave stubs +
407
+ slice leaves after a chat preview gate — graph-validated, counted, batch-
408
+ stamped Wave/Phase fields, idempotent/crash-recoverable re-run, and an adopt
409
+ path for issues a prior bottom-up grooming pass already created).
410
+ - Ships `board-sync.py validate-graph`, a pure, zero-write Program-Graph
411
+ preflight (cycles, cross-wave backward refs, gate-slice structural-suspicion
412
+ warnings, capacity, phase-option, and revision-coherence checks, plus two
413
+ counted completeness axes — scope coverage and the rollup chain) and
414
+ `program-sync`, which regenerates a Program-PRD's Wellenplan status column
415
+ from the board (its own grammar, alongside the existing `anchor-sync`).
416
+ - Adds `stamp-batch` (alias-batched GraphQL field writes for N items' Wave/
417
+ Phase fields in one request, chunked, with a per-alias failure report and a
418
+ repair command), `field-value` (reads a project field's current value —
419
+ the `promote` mismatch-guard's read side), and a Program-PRD refusal on
420
+ `promote` (a Program-PRD is never a promotion target).
421
+ - `execute-ready-check.py` now classifies by an explicit node kind (program /
422
+ wave-stub / anchor / leaf) instead of a single children+parent heuristic, so
423
+ a Wave-Anchor parented by a Program-PRD is no longer misjudged.
424
+ - `to-prd`, `to-issues`, and `board-to-waves` gain the matching Program-route
425
+ deltas: a third `mode=program` PRD shape, a `wave-stub`-label discriminator
426
+ so a not-yet-promoted wave stub is a valid Hard-Stop exception, and a
427
+ `board-to-waves` splitter that escalates an oversized candidate to the
428
+ Program route instead of spraying it into feature-sized stubs.
429
+ - Adds the optional `fields.phase` / `labels.programType` board-profile keys
430
+ (`fields.phase` mirrors `fields.status`'s `{id, options}` shape; a profile
431
+ without either key keeps loading unchanged) and documents the Phase-field
432
+ creation command plus two saved Views (`Program`, `Active Wave`) as one-time
433
+ manual setup steps `/setup-workflow` cannot provision by itself.
434
+ - Ships the kit's methodology documentation: a self-contained
435
+ `docs/methodology.html` walkthrough of the full altitude model (Program →
436
+ Phase → Wave → Slice) and both routes, plus a README methodology chapter
437
+ with a hand-designed static SVG diagram.
438
+ - Bumps the kit metadata to `0.6.0`. After this PR is merged, publish the
439
+ matching GitHub release/tag as a separate release step.
440
+
441
+ ### 0.5.0
442
+
443
+ - Normalizes every published skill body to English across Claude and Codex
444
+ surfaces, while keeping only audited contract literals and quoted user-input
445
+ examples in their original language.
446
+ - Adds a mechanical language census for the maintainer source repo, proving
447
+ **30 of 30** `publish:true` skills scan clean and documenting the small
448
+ allowlist for deliberate literals.
449
+ - Switches `setup-workflow`'s fresh-install defaults and the README board-profile
450
+ example to English (`Clarify Before Build`, `ran` / `skipped`) without
451
+ rewriting a consumer's already-filled project profile.
452
+ - Hardens skill frontmatter and descriptions: NOT clauses stay inside the
453
+ rendered description budget, plain YAML ` #` truncation is guarded, and the
454
+ `board-to-waves` / `to-prd` descriptions are fully parseable.
455
+ - Carries the post-audit authoring fixes that affect shipped skills, including a
456
+ portable `retro` memory path, clearer `verify-spike` / `decision-gate`
457
+ fallback rules, and tighter `widget-conventions` / `spec-self-critique`
458
+ boundaries.
459
+ - Bumps the kit metadata to `0.5.0`. After this PR is merged, publish the
460
+ matching GitHub release/tag as a separate release step.
461
+
462
+ ### 0.4.0
463
+
464
+ - Adds the model-invoked `code-review` skill (two-axis Standards×Spec review,
465
+ Fowler smell baseline, merge-base preflight) on both surfaces; the `ask-matt`
466
+ router and `implement` now point at real published ware.
467
+ - Codex-surface skills no longer escalate to Claude-only `-codex` targets, and
468
+ the router marks Claude-only skills explicitly, so a Codex consumer is never
469
+ routed to an unreachable skill.
470
+ - New guards: same-surface skill-reference existence, project-private mirror
471
+ structure-parity, a hardcoded-profile-value scan, and a build-staging vs
472
+ published-repo staleness check (`kit:staleness`).
473
+ - Hardened scripts: `board-sync.py` create surfaces the issue number + a repair
474
+ command on partial failure; `anchor-sync` fails loud on a header mismatch
475
+ instead of duplicating rows; the CLI writes its manifest atomically.
476
+ - Profile-driven prose: PR/issue markers and template headings reference the
477
+ board-profile keys instead of hardcoded literals, so a consumer's renamed
478
+ values pass their own checks; the seed and this README's profile example match.
479
+ - Onboarding: the seeded workflow overview lists every entry point including the
480
+ `ask-matt` router and the gate skills; Claude-only skills and hooks are marked.
481
+ - Bumps the kit metadata to `0.4.0`. After this PR is merged, publish the
482
+ matching GitHub release/tag as a separate release step.
483
+
484
+ ### 0.3.5
485
+
486
+ - Adds the `to-issues` member-reconcile rule for promoting `board-to-waves`
487
+ stubs that already carry native Member sub-issues, so old members are reused
488
+ or explicitly unlinked/closed instead of creating duplicate slice children.
489
+ - Ships `board-sync.py unlink`, a parent-checked and idempotent helper for
490
+ removing superseded sub-issue links without touching foreign parents.
491
+ - Tightens promoted-anchor labels by stripping `ready-for-agent` alongside
492
+ `wave-stub`, so an Anker is not accidentally treated as a buildable leaf.
493
+ - Bumps the kit metadata to `0.3.5`. After this PR is merged, publish the
494
+ matching GitHub release/tag as a separate release step.
495
+
496
+ ### 0.3.4
497
+
498
+ - Ships `board-sync.py anchor-sync` plus the `anchor_table.py` helper, so wave
499
+ anchors can regenerate Slices-table Status/Branch cells from the board instead
500
+ of relying on hand-ticked rows.
501
+ - Updates `wrapup` and the wave-anchor template to use the new anchor-sync flow,
502
+ including dry-run review, stable plan-column preservation, and appended rows for
503
+ mid-wave split sub-issues.
504
+ - Extends `setup-workflow` to seed a generic `## Workflow` overview in
505
+ `CLAUDE.md` / `AGENTS.md` when the consumer repo does not already have one.
506
+ - Tightens planning guidance: grill skills now point to a code-derived impact
507
+ census when a project provides one, and `retro` uses agent-neutral wording for
508
+ Claude/Codex surfaces while raising the memory-sweep trigger to 65 active files.
509
+ - Bumps the kit metadata to `0.3.4`. After this PR is merged, publish the
510
+ matching GitHub release/tag as a separate release step.
511
+
512
+ ### 0.3.3
513
+
514
+ - Adds a counted-completeness planning guard to `grill-me`,
515
+ `grill-with-docs`, and their Codex review variants. Cross-cutting changes now
516
+ get classified before plan lock as either a grep-able pattern rollout or a
517
+ concept rollout that needs a code-derived surface matrix.
518
+ - Makes "complete everywhere" claims evidence-based: plans should carry a fresh
519
+ census, guard test, or `X of Y` surface count instead of relying on memory.
520
+ This is aimed at avoiding partial migrations that only look complete from the
521
+ happy-path slice.
522
+ - Bumps the kit metadata to `0.3.3`. After this PR is merged, publish the
523
+ matching GitHub release/tag as a separate release step.
524
+
525
+ ### 0.3.2
526
+
527
+ - Publishes the latest workflow guidance for `retro`, `to-issues`, and
528
+ `grill-with-docs-codex`: generalize retro patches to the underlying class,
529
+ prove absence-before-build before cutting new build slices, require gate
530
+ discipline, and track deferred phases in multi-phase plans.
531
+ - Quotes YAML-sensitive Codex skill descriptions so Codex frontmatter validation
532
+ accepts descriptions with commas, colons, arrows, and quoted trigger phrases.
533
+ - Bumps the kit metadata to `0.3.2`. After this PR is merged, publish the
534
+ matching GitHub release/tag as a separate release step.
535
+
536
+ ### 0.3.1
537
+
538
+ - Uses run-scoped Codex temp output paths for cross-model review skills, so
539
+ parallel grill/review sessions do not collide on shared `/tmp` files.
540
+ - Raises the `retro` memory-sweep trigger to 60 active files to avoid false
541
+ positives on healthy, content-checked memory sets.
542
+ - Bumps the kit metadata to `0.3.1`. After this PR is merged, publish the
543
+ matching GitHub release/tag as a separate release step.
544
+
545
+ ## What's in the box
546
+
547
+ **41 skills** (Router: ask-matt — "which skill/flow fits?" · Plan: grill-me,
548
+ grill-with-docs, to-prd, to-issues, board-to-waves, triage, spec-self-critique,
549
+ verify-spike, decision-gate, scale-check, to-waves, wayfinder, research · Execute: tdd, prototype, implement, orchestrate-wave ·
550
+ Design/diagnose/refactor streams: diagnose, zoom-out,
551
+ improve-codebase-architecture, codebase-design, domain-modeling, security-audit · Land: wrapup,
552
+ resolving-merge-conflicts, code-review, local-ci, git-worktree-recover, kit-release · Learn: retro, audit-skills, write-a-skill · Setup:
553
+ setup-workflow, git-guardrails, setup-pre-commit · Codex cross-model: grill-me-codex,
554
+ grill-with-docs-codex, codex-review, codex-build),
555
+ installed for both surfaces — `.claude/skills`
556
+ (Claude Code) and `.agents/skills` (Codex) — plus `codex-adapter-sync`
557
+ (Codex-only: keeps the `.agents/skills` mirror in sync with the `.claude/skills`
558
+ source for dual-surface repos). **Claude only** (no `.agents/skills` mirror —
559
+ skip these on a Codex-first repo): `write-a-skill`, `git-guardrails-claude-code`,
560
+ `setup-pre-commit`, `grill-me-codex`, `grill-with-docs-codex`, `codex-review`,
561
+ `codex-build`.
562
+
563
+ **Helper scripts** — `board_config.py` (profile loader), `board-sync.py`,
564
+ `execute-ready-check.py`, `pr-body-check.py`, the handoff drift-guard, the
565
+ skill-drift-hint and board-status hooks (Claude only — wired via
566
+ `.claude/settings.json`, no Codex mirror), the opt-in LoC-offender gate, and the
567
+ wave-anchor + security-audit-runbook templates.
568
+
569
+ This kit deliberately ships without a test suite (a leaner `npx` payload) — the
570
+ scripts and skills are tested in the maintainer's private source repo they're
571
+ generated from. Customizing a guard? Add your own tests against the copy in
572
+ your repo.
573
+
574
+ ## Requirements
575
+
576
+ - **Node ≥ 20** to run the installer.
577
+ - **Claude Code** or **Codex** to run the skills.
578
+ - **GitHub `gh` CLI** for the board scripts (optional — skip if you don't use a
579
+ GitHub Projects board).
580
+ - **Codex CLI** for the `-codex` review skills (optional).
581
+
582
+ ## Credits
583
+
584
+ - Many skills are adapted from **Matt Pocock's skills**
585
+ (https://github.com/mattpocock/skills), MIT — each carries a
586
+ `THIRD-PARTY-NOTICES.md` with its upstream path.
587
+ - The `grill-*-codex` / `codex-review` / `codex-build` cross-model skills are by
588
+ **Chase AI** (https://github.com/chaseai-yt/grill-me-codex), MIT.
589
+ - `retro`, `wrapup`, `spec-self-critique`, `board-to-waves`, `verify-spike`,
590
+ `decision-gate`, `codex-adapter-sync`, `code-review`, `orchestrate-wave` are original work.
591
+
592
+ Full origin + license of every skill is in [PROVENANCE.md](PROVENANCE.md).
593
+
594
+ ## License
595
+
596
+ MIT — see [LICENSE](LICENSE).
597
+
598
+ ## A note on language
599
+
600
+ Every published skill's prose is English — a mechanical
601
+ census (`scripts/test_skill_language_census.py`) proves it: all publish:true
602
+ skills scan clean, with an explicit, auditable allowlist for the handful of
603
+ deliberate exceptions — quoted user-input trigger phrases, a bilingual PRD
604
+ example block, and a few cross-skill contract literals (board status values,
605
+ heading names) that other skills or the board tooling consume verbatim.
606
+
607
+ These conventions grew up in a German-speaking project, so the mechanics
608
+ still default to a project-adoptable language stance: seed defaults (e.g.
609
+ `setup-workflow`'s scaffolded convention files) are English, and a project
610
+ layer or filled-in convention file may be in whatever language that
611
+ project's team works in — the skills themselves don't hardcode a language,
612
+ they read from the project layer. Project-private skills (not shipped in
613
+ this kit) may stay in their home project's language; that's out of scope
614
+ for the kit's own English-first bar.
615
+
616
+ New publish-candidate skills are English-first: write new skill prose in
617
+ English from the start (see `write-a-skill`), even if the authoring
618
+ project's own working language is something else — matching the state this
619
+ census now proves for every existing published skill.