forge-workflow 0.0.9 → 0.1.0-beta.2

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 (479) hide show
  1. package/.claude/rules/{greptile-review-process.md → review-process.md} +56 -41
  2. package/.claude/scripts/{greptile-resolve.sh → review-resolve.sh} +13 -3
  3. package/.cursor/rules/permissions-guidance.mdc +2 -2
  4. package/.forge/hooks/check-tdd.js +3 -0
  5. package/.forge/hooks/forge-native-hook.js +245 -0
  6. package/.forge/protected-paths.yaml +157 -0
  7. package/AGENTS.md +151 -61
  8. package/CHANGELOG.md +681 -0
  9. package/CLAUDE.md +9 -106
  10. package/QUICKSTART.md +171 -0
  11. package/README.md +271 -363
  12. package/bin/forge-cmd.js +120 -9
  13. package/bin/forge-preflight.js +26 -5
  14. package/bin/forge.js +466 -489
  15. package/docs/INDEX.md +93 -0
  16. package/docs/PROJECT_DESIGN.md +685 -0
  17. package/docs/architecture/index.md +66 -0
  18. package/docs/architecture/notes/README.md +35 -0
  19. package/docs/architecture/subsystems/README.md +46 -0
  20. package/docs/{TOOLCHAIN.md → forge/TOOLCHAIN.md} +56 -47
  21. package/docs/forge/VALIDATION.md +82 -0
  22. package/docs/{AGENT_INSTALL_PROMPT.md → guides/AGENT_INSTALL_PROMPT.md} +3 -3
  23. package/docs/guides/BEADS_GITHUB_SYNC.md +32 -0
  24. package/docs/{ENHANCED_ONBOARDING.md → guides/ENHANCED_ONBOARDING.md} +16 -12
  25. package/docs/guides/GREPTILE_SETUP.md +46 -0
  26. package/docs/guides/MANUAL_REVIEW_GUIDE.md +58 -0
  27. package/docs/guides/MIGRATION.md +56 -0
  28. package/docs/guides/SETUP.md +118 -0
  29. package/docs/guides/SUPPORT.md +185 -0
  30. package/docs/guides/WORKFLOW_TEMPLATES.md +74 -0
  31. package/docs/guides/memory-backends.md +183 -0
  32. package/docs/reference/ADAPTERS.md +128 -0
  33. package/docs/reference/AGENT_SKILL_PARITY.md +175 -0
  34. package/docs/reference/COMMANDS.md +205 -0
  35. package/docs/reference/DECISION_DRIFT_GUARDS.md +97 -0
  36. package/docs/{EXAMPLES.md → reference/EXAMPLES.md} +7 -5
  37. package/docs/reference/FORGE_KERNEL_STORAGE_MODEL.md +135 -0
  38. package/docs/reference/HERMES_INTEGRATION.md +118 -0
  39. package/docs/reference/INSIGHTS_RECAP.md +63 -0
  40. package/docs/reference/INSTALL.md +164 -0
  41. package/docs/reference/KERNEL_TAXONOMY_VALIDATION.md +161 -0
  42. package/docs/reference/PROTECTED_PATH_MANIFEST.md +25 -0
  43. package/docs/reference/RELEASE.md +68 -0
  44. package/docs/reference/RESEARCH_TEMPLATE.md +292 -0
  45. package/docs/{ROADMAP.md → reference/ROADMAP.md} +12 -9
  46. package/docs/reference/SKILLS.md +35 -0
  47. package/docs/reference/STATUS_BOARD.md +80 -0
  48. package/docs/reference/TEMPLATES.md +106 -0
  49. package/docs/reference/TOOLCHAIN.md +658 -0
  50. package/docs/reference/VALIDATION.md +82 -0
  51. package/docs/reference/agent-permissions.md +169 -0
  52. package/docs/reference/beads-to-kernel-migration-ux.md +61 -0
  53. package/docs/reference/control-plane-guarantees.md +125 -0
  54. package/docs/reference/dependency-chain.md +331 -0
  55. package/docs/reference/forge-kernel-issue-command-contract.md +161 -0
  56. package/docs/reference/forge-kernel-schema.md +72 -0
  57. package/docs/reference/kernel-conflict-evaluators.md +27 -0
  58. package/docs/reference/patch-md-format.md +77 -0
  59. package/docs/reference/protected-state-surfaces.md +59 -0
  60. package/docs/reference/shepherd.md +115 -0
  61. package/docs/reference/superpowers-analysis.md +320 -0
  62. package/docs/reference/superpowers-integration-options.md +404 -0
  63. package/docs/reference/test-environment.md +519 -0
  64. package/docs/reference/upgrade-safety.md +59 -0
  65. package/lefthook.yml +18 -0
  66. package/lib/adapter-cli.js +307 -0
  67. package/lib/adapters/beads-issue-adapter.js +127 -0
  68. package/lib/adapters/beads-kernel-compat.js +1042 -0
  69. package/lib/adapters/greptile-review-adapter.js +141 -0
  70. package/lib/adapters/kernel-issue-adapter.js +101 -0
  71. package/lib/adapters/pr-state-adapter.js +484 -0
  72. package/lib/adoption-profiles.js +126 -0
  73. package/lib/agents/README.md +2 -6
  74. package/lib/agents/claude.plugin.json +3 -8
  75. package/lib/agents/codex.plugin.json +9 -1
  76. package/lib/agents/cursor.plugin.json +2 -6
  77. package/lib/agents/hermes.plugin.json +22 -0
  78. package/lib/agents-config.js +39 -1236
  79. package/lib/audit-evidence.js +282 -0
  80. package/lib/beads-setup.js +225 -28
  81. package/lib/beads-sync-scaffold.js +36 -107
  82. package/lib/codex-skills.js +51 -1
  83. package/lib/commands/_issue.js +744 -70
  84. package/lib/commands/_manifest.js +91 -0
  85. package/lib/commands/_registry.js +85 -34
  86. package/lib/commands/_resolve-command-opts.js +261 -0
  87. package/lib/commands/_serve-security.js +270 -0
  88. package/lib/commands/adapter.js +12 -0
  89. package/lib/commands/add.js +118 -0
  90. package/lib/commands/audit.js +70 -0
  91. package/lib/commands/blocked.js +5 -0
  92. package/lib/commands/board.js +64 -0
  93. package/lib/commands/claim.js +21 -2
  94. package/lib/commands/claims.js +7 -0
  95. package/lib/commands/clean.js +485 -75
  96. package/lib/commands/close.js +2 -2
  97. package/lib/commands/comment.js +5 -0
  98. package/lib/commands/control.js +148 -0
  99. package/lib/commands/create.js +2 -2
  100. package/lib/commands/dev.js +185 -7
  101. package/lib/commands/doc-gate.js +336 -0
  102. package/lib/commands/doctor.js +156 -0
  103. package/lib/commands/explain.js +15 -0
  104. package/lib/commands/export.js +237 -0
  105. package/lib/commands/gate.js +192 -0
  106. package/lib/commands/hooks.js +242 -0
  107. package/lib/commands/inbox.js +118 -0
  108. package/lib/commands/init.js +598 -0
  109. package/lib/commands/insights.js +79 -0
  110. package/lib/commands/issue.js +12 -1
  111. package/lib/commands/issues.js +66 -0
  112. package/lib/commands/lint.js +5 -0
  113. package/lib/commands/list.js +2 -2
  114. package/lib/commands/merge.js +312 -0
  115. package/lib/commands/migrate.js +523 -0
  116. package/lib/commands/new.js +12 -0
  117. package/lib/commands/options.js +241 -0
  118. package/lib/commands/orient.js +13 -0
  119. package/lib/commands/orphans.js +5 -0
  120. package/lib/commands/patch.js +67 -0
  121. package/lib/commands/plan.js +436 -24
  122. package/lib/commands/preflight.js +211 -0
  123. package/lib/commands/prime.js +13 -0
  124. package/lib/commands/push.js +69 -2
  125. package/lib/commands/ready.js +2 -2
  126. package/lib/commands/recall.js +116 -0
  127. package/lib/commands/recap.js +61 -0
  128. package/lib/commands/recommend.js +22 -2
  129. package/lib/commands/release.js +91 -0
  130. package/lib/commands/remember.js +74 -0
  131. package/lib/commands/role.js +99 -0
  132. package/lib/commands/serve.js +581 -0
  133. package/lib/commands/setup.js +851 -979
  134. package/lib/commands/shepherd.js +436 -0
  135. package/lib/commands/ship.js +23 -1
  136. package/lib/commands/show.js +2 -2
  137. package/lib/commands/stage.js +192 -0
  138. package/lib/commands/stale.js +5 -0
  139. package/lib/commands/status.js +329 -11
  140. package/lib/commands/sync.js +34 -46
  141. package/lib/commands/team.js +15 -2
  142. package/lib/commands/test.js +58 -7
  143. package/lib/commands/update.js +2 -2
  144. package/lib/commands/upgrade.js +47 -0
  145. package/lib/commands/validate.js +56 -25
  146. package/lib/commands/worktree.js +308 -128
  147. package/lib/config-writer.js +202 -0
  148. package/lib/control-plane.js +236 -0
  149. package/lib/core/runtime-graph.js +946 -0
  150. package/lib/dep-guard/keyword-ripple.js +184 -0
  151. package/lib/deprecated-sync-cleanup.js +362 -0
  152. package/lib/detect-agent.js +2 -28
  153. package/lib/detect-worktree.js +42 -17
  154. package/lib/doc-gate/declaration.js +177 -0
  155. package/lib/doc-gate/detect.js +289 -0
  156. package/lib/doc-gate/gate.js +375 -0
  157. package/lib/doc-gate/okf-config.js +128 -0
  158. package/lib/doc-gate/okf.js +429 -0
  159. package/lib/docs-command.js +1161 -6
  160. package/lib/forge-issues.js +697 -0
  161. package/lib/forge-lock.js +262 -0
  162. package/lib/gate-events.js +193 -0
  163. package/lib/global-flags.js +74 -0
  164. package/lib/greptile-match.js +7 -63
  165. package/lib/harness-capability-matrix.js +380 -0
  166. package/lib/hook-global-installer.js +347 -0
  167. package/lib/hook-renderer.js +451 -0
  168. package/lib/inbox.js +391 -0
  169. package/lib/insights.js +397 -0
  170. package/lib/issue-adapter.js +156 -0
  171. package/lib/issue-backend.js +145 -0
  172. package/lib/issue-render.js +220 -0
  173. package/lib/issue-sync/authority.js +100 -0
  174. package/lib/issue-sync/github-pull.js +184 -0
  175. package/lib/issue-sync/import-primitives.js +98 -0
  176. package/lib/issue-sync/legacy-link-bridge.js +436 -0
  177. package/lib/issue-sync/link-store.js +292 -0
  178. package/lib/issue-sync/project-github.js +123 -0
  179. package/lib/issue-sync/reconcile.js +195 -0
  180. package/lib/issue-sync/schema.js +126 -0
  181. package/lib/kernel/backing-issue.js +305 -0
  182. package/lib/kernel/broker.js +1218 -0
  183. package/lib/kernel/cli-broker-factory.js +130 -0
  184. package/lib/kernel/conflict-signal.js +82 -0
  185. package/lib/kernel/evaluators.js +195 -0
  186. package/lib/kernel/fs-class.js +495 -0
  187. package/lib/kernel/issue-command-contract.js +559 -0
  188. package/lib/kernel/issue-id-resolver.js +186 -0
  189. package/lib/kernel/lease-enforcer.js +158 -0
  190. package/lib/kernel/migrations.js +333 -0
  191. package/lib/kernel/planning-buckets-schema.js +109 -0
  192. package/lib/kernel/projection-jsonl-writer.js +450 -0
  193. package/lib/kernel/readiness-model.js +329 -0
  194. package/lib/kernel/schema.js +356 -0
  195. package/lib/kernel/sqlite-driver.js +2504 -0
  196. package/lib/kernel/taxonomy-validator.js +394 -0
  197. package/lib/lefthook-check.js +8 -4
  198. package/lib/lefthook-wiring.js +413 -0
  199. package/lib/mcp-config-renderer.js +288 -0
  200. package/lib/memory/graphiti-mcp.js +106 -0
  201. package/lib/memory/router.js +387 -0
  202. package/lib/memory/typed-api.js +102 -0
  203. package/lib/memory-digest.js +195 -0
  204. package/lib/merge-rules.js +395 -0
  205. package/lib/migrate-dry-run.js +466 -0
  206. package/lib/orientation.js +863 -0
  207. package/lib/package-manager-remediation.js +103 -0
  208. package/lib/package-root.js +381 -0
  209. package/lib/patch-intent.js +890 -0
  210. package/lib/plugin-catalog.js +3 -4
  211. package/lib/plugin-manager.js +0 -5
  212. package/lib/pr-bundle.js +186 -0
  213. package/lib/pr-monitor/differ.js +195 -0
  214. package/lib/pr-monitor/events.js +0 -0
  215. package/lib/pr-monitor/gather.js +124 -0
  216. package/lib/pr-monitor/journal.js +299 -0
  217. package/lib/pr-monitor/monitor.js +146 -0
  218. package/lib/pr-monitor/render-sticky.js +157 -0
  219. package/lib/pr-monitor/watch-lifecycle.js +95 -0
  220. package/lib/pr-monitor/watch.js +247 -0
  221. package/lib/pr-pull.js +1273 -0
  222. package/lib/pr-shepherd.js +494 -0
  223. package/lib/pr-state-validator.js +59 -0
  224. package/lib/preflight/gates.js +237 -0
  225. package/lib/preflight/runner.js +116 -0
  226. package/lib/project-discovery.js +0 -53
  227. package/lib/project-memory.js +166 -0
  228. package/lib/protected-path-manifest.js +281 -0
  229. package/lib/protected-state-surfaces.js +387 -0
  230. package/lib/release-readiness.js +2089 -0
  231. package/lib/reset.js +59 -45
  232. package/lib/review-adapter.js +68 -0
  233. package/lib/rules-sync.js +260 -0
  234. package/lib/runtime-health.js +332 -23
  235. package/lib/safety-config-renderer.js +268 -0
  236. package/lib/setup-action-log.js +1 -7
  237. package/lib/setup.js +27 -65
  238. package/lib/shell-utils.js +76 -6
  239. package/lib/skills-sync.js +330 -0
  240. package/lib/smart-status/conflicts.js +205 -0
  241. package/lib/smart-status/scoring.js +191 -0
  242. package/lib/status/beads-snapshot.js +145 -0
  243. package/lib/status/presenter.js +216 -0
  244. package/lib/status/snapshot.js +186 -0
  245. package/lib/sync-backend.js +202 -0
  246. package/lib/untrusted-content.js +52 -0
  247. package/lib/upgrade-safety.js +199 -0
  248. package/lib/workflow/enforce-stage.js +298 -47
  249. package/lib/workflow/stage-transition.js +115 -0
  250. package/lib/workflow/stages.js +30 -6
  251. package/lib/workflow/state-manager.js +159 -14
  252. package/lib/workflow/state.js +23 -1
  253. package/lib/workflow-profiles.js +17 -5
  254. package/package.json +46 -36
  255. package/rules/documentation.md +19 -0
  256. package/rules/kernel-tracking.md +26 -0
  257. package/rules/security.md +22 -0
  258. package/rules/tdd.md +20 -0
  259. package/rules/workflow.md +27 -0
  260. package/scripts/auto-backing-issue.js +47 -0
  261. package/scripts/beads-context.sh +165 -22
  262. package/scripts/beads-migrate-to-dolt.sh +7 -0
  263. package/scripts/beads-upgrade-smoke.sh +284 -0
  264. package/scripts/behavioral-judge.sh +115 -11
  265. package/scripts/benchmark.js +349 -63
  266. package/scripts/bootstrap-windows-tools.sh +78 -0
  267. package/scripts/branch-protection.js +2 -3
  268. package/scripts/check-agents.js +34 -137
  269. package/scripts/commitlint.js +3 -1
  270. package/scripts/conflict-detect.sh +3 -0
  271. package/scripts/dep-guard-analyze.js +52 -17
  272. package/scripts/dep-guard-keyword-ripple.js +29 -0
  273. package/scripts/dep-guard-render-review.js +86 -0
  274. package/scripts/dep-guard.sh +64 -232
  275. package/scripts/file-index.sh +3 -0
  276. package/scripts/forge-team/lib/claim.sh +34 -18
  277. package/scripts/forge-team/lib/dashboard.sh +61 -86
  278. package/scripts/forge-team/lib/epic.sh +99 -263
  279. package/scripts/forge-team/lib/hooks.sh +26 -28
  280. package/scripts/forge-team/lib/identity.sh +4 -4
  281. package/scripts/forge-team/lib/sync-github.sh +144 -47
  282. package/scripts/forge-team/lib/verify.sh +93 -83
  283. package/scripts/forge-team/lib/workload.sh +41 -65
  284. package/scripts/forge-team/tests/claim.test.sh +25 -19
  285. package/scripts/forge-team/tests/dashboard.test.sh +31 -46
  286. package/scripts/forge-team/tests/epic.test.sh +52 -71
  287. package/scripts/forge-team/tests/hooks.test.sh +38 -50
  288. package/scripts/forge-team/tests/identity.test.sh +3 -3
  289. package/scripts/forge-team/tests/integration.test.sh +44 -66
  290. package/scripts/forge-team/tests/sync-github.test.sh +183 -79
  291. package/scripts/forge-team/tests/verify.test.sh +37 -46
  292. package/scripts/forge-team/tests/workflow-integration.test.sh +4 -4
  293. package/scripts/forge-team/tests/workload.test.sh +32 -66
  294. package/scripts/gen-command-manifest.js +153 -0
  295. package/scripts/gen-embedded-assets.mjs +129 -0
  296. package/scripts/install.ps1 +139 -0
  297. package/scripts/install.sh +268 -0
  298. package/scripts/lib/beads-migrate-to-dolt.mjs +503 -0
  299. package/scripts/lib/release-asset.mjs +84 -0
  300. package/scripts/parity-check.mjs +145 -0
  301. package/scripts/parity-check.test.mjs +58 -0
  302. package/scripts/pin-agentic-workflow-images.js +112 -0
  303. package/scripts/pr-coordinator.sh +3 -0
  304. package/scripts/preflight-sonar.eslint.config.mjs +44 -0
  305. package/scripts/preflight.sh +108 -0
  306. package/scripts/protected-state-check.js +104 -0
  307. package/scripts/smart-status-score.js +31 -0
  308. package/scripts/smart-status-sessions.js +51 -0
  309. package/scripts/smart-status.sh +117 -369
  310. package/scripts/spikes/config-race-bench.js +111 -0
  311. package/scripts/spikes/harness-capability-matrix.js +13 -0
  312. package/scripts/spikes/patch-anchor-stability-bench.js +125 -0
  313. package/scripts/spikes/protected-path-manifest.js +20 -0
  314. package/scripts/spikes/skill-auto-invoke-parity.js +292 -0
  315. package/scripts/sync-agent-skills.js +62 -0
  316. package/scripts/sync-agentic-workflow.js +48 -0
  317. package/scripts/sync-utils.sh +3 -0
  318. package/scripts/test-ci-shard.js +251 -0
  319. package/scripts/test-dashboard.js +188 -52
  320. package/scripts/test-full-suite.js +186 -0
  321. package/scripts/test-profile.js +278 -0
  322. package/scripts/test.js +302 -28
  323. package/scripts/validate.js +143 -0
  324. package/scripts/validate.sh +18 -1
  325. package/skills/claim-safety/SKILL.md +102 -0
  326. package/skills/claim-safety/evals/evals.json +46 -0
  327. package/{.github/prompts/dev.prompt.md → skills/dev/SKILL.md} +46 -52
  328. package/skills/dev/evals/evals.json +50 -0
  329. package/skills/hermes-forge/SKILL.md +185 -0
  330. package/skills/hermes-forge/evals/evals.json +46 -0
  331. package/skills/issue-basics/SKILL.md +111 -0
  332. package/skills/issue-basics/evals/evals.json +46 -0
  333. package/skills/kernel/SKILL.md +166 -0
  334. package/skills/kernel/evals/evals.json +50 -0
  335. package/skills/memory/SKILL.md +102 -0
  336. package/skills/parallel-deep-research/SKILL.md +14 -11
  337. package/skills/parallel-deep-research/evals/evals.json +11 -27
  338. package/{.github/prompts/plan.prompt.md → skills/plan/SKILL.md} +134 -159
  339. package/skills/plan/evals/evals.json +42 -0
  340. package/skills/research/SKILL.md +195 -0
  341. package/skills/research/evals/evals.json +42 -0
  342. package/{.github/prompts/review.prompt.md → skills/review/SKILL.md} +98 -62
  343. package/skills/review/evals/evals.json +42 -0
  344. package/skills/rollback/SKILL.md +110 -0
  345. package/skills/rollback/evals/evals.json +46 -0
  346. package/skills/rollback/references/methods.md +204 -0
  347. package/{.cursor/commands/rollback.md → skills/rollback/references/workflow-integration.md} +10 -284
  348. package/skills/shepherd/SKILL.md +66 -0
  349. package/skills/shepherd/evals/evals.json +42 -0
  350. package/skills/ship/SKILL.md +251 -0
  351. package/skills/ship/evals/evals.json +42 -0
  352. package/skills/smith/SKILL.md +142 -0
  353. package/skills/smith/evals/evals.json +46 -0
  354. package/skills/smith/references/autonomy-and-gates.md +94 -0
  355. package/{.github/prompts/sonarcloud.prompt.md → skills/sonarcloud/SKILL.md} +14 -3
  356. package/skills/sonarcloud/evals/evals.json +46 -0
  357. package/skills/sonarcloud-analysis/SKILL.md +18 -13
  358. package/skills/sonarcloud-analysis/evals/evals.json +11 -15
  359. package/skills/status/SKILL.md +102 -0
  360. package/skills/status/evals/evals.json +50 -0
  361. package/skills/triage-ready/SKILL.md +121 -0
  362. package/skills/triage-ready/evals/evals.json +42 -0
  363. package/{.github/prompts/validate.prompt.md → skills/validate/SKILL.md} +52 -29
  364. package/skills/validate/evals/evals.json +42 -0
  365. package/skills/verify/SKILL.md +299 -0
  366. package/skills/verify/evals/evals.json +50 -0
  367. package/.claude/commands/dev.md +0 -345
  368. package/.claude/commands/plan.md +0 -566
  369. package/.claude/commands/premerge.md +0 -186
  370. package/.claude/commands/research.md +0 -42
  371. package/.claude/commands/review.md +0 -451
  372. package/.claude/commands/rollback.md +0 -721
  373. package/.claude/commands/ship.md +0 -213
  374. package/.claude/commands/sonarcloud.md +0 -152
  375. package/.claude/commands/status.md +0 -90
  376. package/.claude/commands/validate.md +0 -288
  377. package/.claude/commands/verify.md +0 -269
  378. package/.claude/rules/workflow.md +0 -121
  379. package/.cline/workflows/dev.md +0 -342
  380. package/.cline/workflows/plan.md +0 -563
  381. package/.cline/workflows/premerge.md +0 -183
  382. package/.cline/workflows/research.md +0 -39
  383. package/.cline/workflows/review.md +0 -448
  384. package/.cline/workflows/rollback.md +0 -718
  385. package/.cline/workflows/ship.md +0 -210
  386. package/.cline/workflows/sonarcloud.md +0 -146
  387. package/.cline/workflows/status.md +0 -87
  388. package/.cline/workflows/validate.md +0 -285
  389. package/.cline/workflows/verify.md +0 -266
  390. package/.codex/config.toml +0 -11
  391. package/.codex/skills/dev/SKILL.md +0 -345
  392. package/.codex/skills/plan/SKILL.md +0 -566
  393. package/.codex/skills/premerge/SKILL.md +0 -186
  394. package/.codex/skills/research/SKILL.md +0 -42
  395. package/.codex/skills/review/SKILL.md +0 -451
  396. package/.codex/skills/rollback/SKILL.md +0 -721
  397. package/.codex/skills/ship/SKILL.md +0 -213
  398. package/.codex/skills/sonarcloud/SKILL.md +0 -149
  399. package/.codex/skills/status/SKILL.md +0 -90
  400. package/.codex/skills/validate/SKILL.md +0 -288
  401. package/.codex/skills/verify/SKILL.md +0 -269
  402. package/.cursor/commands/dev.md +0 -342
  403. package/.cursor/commands/plan.md +0 -563
  404. package/.cursor/commands/premerge.md +0 -183
  405. package/.cursor/commands/research.md +0 -39
  406. package/.cursor/commands/review.md +0 -448
  407. package/.cursor/commands/ship.md +0 -210
  408. package/.cursor/commands/sonarcloud.md +0 -146
  409. package/.cursor/commands/status.md +0 -87
  410. package/.cursor/commands/validate.md +0 -285
  411. package/.cursor/commands/verify.md +0 -266
  412. package/.cursorrules +0 -149
  413. package/.github/prompts/premerge.prompt.md +0 -188
  414. package/.github/prompts/research.prompt.md +0 -44
  415. package/.github/prompts/rollback.prompt.md +0 -723
  416. package/.github/prompts/ship.prompt.md +0 -215
  417. package/.github/prompts/status.prompt.md +0 -92
  418. package/.github/prompts/verify.prompt.md +0 -271
  419. package/.github/workflows/beads-to-github.yml +0 -56
  420. package/.github/workflows/github-to-beads.yml +0 -97
  421. package/.kilocode/workflows/dev.md +0 -346
  422. package/.kilocode/workflows/plan.md +0 -567
  423. package/.kilocode/workflows/premerge.md +0 -187
  424. package/.kilocode/workflows/research.md +0 -43
  425. package/.kilocode/workflows/review.md +0 -452
  426. package/.kilocode/workflows/rollback.md +0 -722
  427. package/.kilocode/workflows/ship.md +0 -214
  428. package/.kilocode/workflows/sonarcloud.md +0 -150
  429. package/.kilocode/workflows/status.md +0 -91
  430. package/.kilocode/workflows/validate.md +0 -289
  431. package/.kilocode/workflows/verify.md +0 -270
  432. package/.opencode/commands/dev.md +0 -345
  433. package/.opencode/commands/plan.md +0 -566
  434. package/.opencode/commands/premerge.md +0 -186
  435. package/.opencode/commands/research.md +0 -42
  436. package/.opencode/commands/review.md +0 -451
  437. package/.opencode/commands/rollback.md +0 -721
  438. package/.opencode/commands/ship.md +0 -213
  439. package/.opencode/commands/sonarcloud.md +0 -149
  440. package/.opencode/commands/status.md +0 -90
  441. package/.opencode/commands/validate.md +0 -288
  442. package/.opencode/commands/verify.md +0 -269
  443. package/.roo/commands/dev.md +0 -346
  444. package/.roo/commands/plan.md +0 -567
  445. package/.roo/commands/premerge.md +0 -187
  446. package/.roo/commands/research.md +0 -43
  447. package/.roo/commands/review.md +0 -452
  448. package/.roo/commands/rollback.md +0 -722
  449. package/.roo/commands/ship.md +0 -214
  450. package/.roo/commands/sonarcloud.md +0 -150
  451. package/.roo/commands/status.md +0 -91
  452. package/.roo/commands/validate.md +0 -289
  453. package/.roo/commands/verify.md +0 -270
  454. package/docs/BEADS_GITHUB_SYNC.md +0 -255
  455. package/docs/GREPTILE_SETUP.md +0 -400
  456. package/docs/MANUAL_REVIEW_GUIDE.md +0 -106
  457. package/docs/SETUP.md +0 -663
  458. package/docs/VALIDATION.md +0 -363
  459. package/lib/agents/cline.plugin.json +0 -29
  460. package/lib/agents/copilot.plugin.json +0 -24
  461. package/lib/agents/kilocode.plugin.json +0 -22
  462. package/lib/agents/opencode.plugin.json +0 -23
  463. package/lib/agents/roo.plugin.json +0 -30
  464. package/lib/beads-health-check.js +0 -143
  465. package/lib/commands/commands-reset.js +0 -147
  466. package/opencode.json +0 -67
  467. package/scripts/beads-context.test.js +0 -567
  468. package/scripts/github-beads-sync/comment.mjs +0 -64
  469. package/scripts/github-beads-sync/config.mjs +0 -148
  470. package/scripts/github-beads-sync/github-api.mjs +0 -131
  471. package/scripts/github-beads-sync/index.mjs +0 -332
  472. package/scripts/github-beads-sync/label-mapper.mjs +0 -54
  473. package/scripts/github-beads-sync/mapping.mjs +0 -78
  474. package/scripts/github-beads-sync/reverse-sync-cli.mjs +0 -31
  475. package/scripts/github-beads-sync/reverse-sync.mjs +0 -138
  476. package/scripts/github-beads-sync/run-bd.mjs +0 -161
  477. package/scripts/github-beads-sync/sanitize.mjs +0 -121
  478. package/scripts/github-beads-sync.config.json +0 -26
  479. package/scripts/sync-commands.js +0 -600
@@ -1,567 +0,0 @@
1
- ---
2
- description: Design intent → research → branch + worktree + task list
3
- mode: code
4
- ---
5
-
6
- Plan a feature from scratch: brainstorm design intent, research technical approach, then set up branch, worktree, and a complete task list ready for /dev.
7
-
8
- # Plan
9
-
10
- This command runs in **3 phases**. Each phase ends with a HARD-GATE. Do not skip phases.
11
-
12
- ---
13
-
14
- ```
15
- <HARD-GATE: /plan entry — worktree isolation>
16
- Before ANY planning work begins:
17
-
18
- 1. Run: git branch --show-current
19
- 2. If the current branch is NOT master/main:
20
- - STOP. Do not begin Phase 1.
21
- - Tell the user: "You are on '<branch>'. Planning must start from a clean worktree on master.
22
- Run: git checkout master — then re-run /plan."
23
- 3. If on master, create the worktree NOW before asking any questions:
24
- a. bd worktree create .worktrees/<slug> --branch feat/<slug>
25
- b. cd .worktrees/<slug>
26
- 4. Confirm: "Working in isolated worktree: .worktrees/<slug> (branch: feat/<slug>)"
27
- 5. Create the epic issue and record the stage transition:
28
- ```bash
29
- bd create --title="<feature-name>" --type=epic
30
- bd update <id> --status=in_progress
31
- bash scripts/beads-context.sh stage-transition <id> none plan
32
- ```
33
- 6. ONLY THEN begin Phase 1.
34
-
35
- Rationale: Planning commits (design docs, task lists) belong only to this feature's branch.
36
- If planning runs in the main directory on a non-master branch, those commits contaminate
37
- whatever branch is currently checked out. The worktree ensures zero cross-contamination
38
- between parallel features or sessions.
39
- </HARD-GATE>
40
- ```
41
-
42
- ---
43
-
44
- ## Usage
45
-
46
- ```bash
47
- /plan <feature-slug>
48
- /plan <feature-slug> --strategic # Major architecture change: creates design doc PR before Phase 2
49
- /plan <feature-slug> --continue # After --strategic PR is merged: run Phase 2 + 3
50
- ```
51
-
52
- ---
53
-
54
-
55
- ### Multi-developer conflict check (soft block)
56
-
57
- Before proceeding to Phase 1, check for cross-developer conflicts:
58
-
59
- ```bash
60
- # Auto-sync to get latest team state
61
- bash scripts/sync-utils.sh auto-sync
62
-
63
- # Check for conflicts with this issue's planned work area
64
- bash scripts/conflict-detect.sh --issue <beads-id>
65
- ```
66
-
67
- If exit code 2 (validation error): show error message, abort — do not show conflict prompt.
68
-
69
- If exit code 1 (conflicts found):
70
- - Display the conflict output to the developer
71
- - Ask: "Other developers are working in overlapping areas. Proceed anyway? (y/n)"
72
- - If `n`: exit cleanly, no side effects
73
- - If `y`: log override via `bd comments add <id> "Conflict override: proceeding despite overlap with <conflicting-issues>"`, then continue to Phase 1
74
- - Audit: record conflict override per OWASP A09
75
-
76
- If exit code 0: proceed silently to Phase 1.
77
-
78
- ---
79
-
80
- ### Parallel PR coordination check (soft block)
81
-
82
- Before proceeding to Phase 1, check for merge conflicts and dependency issues with in-flight PRs:
83
-
84
- ```bash
85
- # Run merge simulation if on a feature branch
86
- current_branch="$(git branch --show-current)"
87
- if [[ "$current_branch" != "master" ]] && [[ "$current_branch" != "main" ]]; then
88
- bash scripts/pr-coordinator.sh merge-sim "$current_branch" 2>&1 || true
89
- fi
90
-
91
- # Show current merge queue
92
- bash scripts/pr-coordinator.sh merge-order 2>&1 || true
93
-
94
- # Check for stale worktrees (informational)
95
- bash scripts/pr-coordinator.sh stale-worktrees 2>&1 || true
96
- ```
97
-
98
- If merge conflicts or unmet dependencies are found:
99
- - Display the findings to the developer
100
- - Ask: "In-flight PRs have potential conflicts. Proceed with planning anyway? (y/n)"
101
- - If `n`: exit cleanly, no side effects
102
- - If `y`: log override via `bd comments add <id> "PR coordination override: proceeding despite in-flight conflicts"`, then continue to Phase 1
103
-
104
- ---
105
-
106
- ### Team identity verification
107
-
108
- Before starting planning, verify team identity is mapped:
109
-
110
- ```bash
111
- bash scripts/forge-team/index.sh verify 2>&1 || true
112
- ```
113
-
114
- If verify reports issues, address them before proceeding (the output will include `FORGE_AGENT_7f3a:PROMPT:` directives with exact commands to run).
115
-
116
- ---
117
-
118
- ## Phase 1: Design Intent (Brainstorming)
119
-
120
- **Goal**: Capture WHAT to build — purpose, constraints, success criteria, edge cases, approach.
121
-
122
- ### Step 0: Dependency ripple check (advisory)
123
-
124
- Before exploring context or asking questions, check for potential conflicts with in-flight work:
125
-
126
- ```bash
127
- # If a Beads issue ID is known (e.g., from /status or bd ready):
128
- bash scripts/dep-guard.sh check-ripple <beads-issue-id>
129
-
130
- # If no issue exists yet (first-time plan):
131
- bd list --status=open,in_progress
132
- ```
133
-
134
- Review the output. If overlaps are detected:
135
- - Consider whether the overlapping issue should be a dependency
136
- - Note any shared areas for the design Q&A
137
- - This check is **advisory only** — always proceed to Step 1 regardless of findings
138
-
139
- #### Ripple Analyst Agent (spawned when contract overlaps found)
140
-
141
- When `check-ripple` detects overlapping issues AND contract metadata is available, spawn a Ripple Analyst subagent with this prompt:
142
-
143
- **Input to agent**:
144
- - Current issue's contract changes (from `extract-contracts` output)
145
- - Consumer code snippets (from `find-consumers` output for each changed contract)
146
- - Overlapping issue's title, description, and contract metadata
147
-
148
- **Agent instructions**:
149
- 1. For each overlapping contract, imagine 2-3 concrete break scenarios:
150
- - "If [contract X] changes [specific behavior], then [consumer Y] will [specific failure]"
151
- 2. Rate overall impact as one of:
152
- - **NONE**: No real conflict despite keyword overlap
153
- - **LOW**: Consumers need trivial adjustment (add parameter, rename call)
154
- - **HIGH**: Consumer needs significant rework (parsing logic, data handling changes)
155
- - **CRITICAL**: Consumer is in an active in_progress issue's task list
156
- 3. **When uncertain, default to HIGH** — conservative over permissive
157
- 4. Recommend one action:
158
- - Add dependency (`bd dep add <source> <target>`)
159
- - Coordinate with other issue's developer
160
- - Scope down current feature to avoid overlap
161
- - Proceed as-is (no real conflict)
162
-
163
- **Output format**:
164
- ```
165
- Impact: [NONE|LOW|HIGH|CRITICAL]
166
- Confidence: [high|medium|low]
167
-
168
- Break scenarios:
169
- 1. [scenario description]
170
- 2. [scenario description]
171
-
172
- Recommendation: [action]
173
- Reason: [why this action]
174
- ```
175
-
176
- This agent is advisory only. The developer always makes the final decision.
177
-
178
- ### Step 1: Explore project context
179
-
180
- Before asking any questions, read relevant files:
181
- - Recent commits related to this area
182
- - Existing code in affected modules
183
- - Any related docs, tests, or prior research
184
-
185
- ### Step 2: Ask clarifying questions — one at a time
186
-
187
- Ask each question in sequence. Wait for user response. Use multiple choice where possible.
188
-
189
- Questions to cover (adapt to feature, don't ask mechanical copies):
190
- 1. **Purpose** — What problem does this solve? Who benefits?
191
- 2. **Constraints** — What must this NOT do? What are the hard limits?
192
- 3. **Success criteria** — How will we know it's done? What is the minimum viable result?
193
- 4. **Edge cases** — What happens when [key dependency] fails / [input] is missing / [state] is ambiguous?
194
- 5. **Technical preferences** — Library A or B? Pattern X or Y? (when real options exist)
195
-
196
- ### Step 3: Propose approaches
197
-
198
- Propose 2-3 concrete approaches with:
199
- - Trade-offs (speed vs safety, complexity vs flexibility)
200
- - A clear recommendation with reasoning
201
- - Get user approval on the chosen approach
202
-
203
- ### Step 4: Write design doc
204
-
205
- Save to `docs/plans/YYYY-MM-DD-<slug>-design.md` with these sections:
206
- - **Feature**: slug, date, status
207
- - **Purpose**: what problem it solves
208
- - **Success criteria**: measurable, specific
209
- - **Out of scope**: explicit boundaries
210
- - **Approach selected**: which option and why
211
- - **Constraints**: hard limits
212
- - **Edge cases**: decisions made during Q&A
213
- - **Ambiguity policy**: Use 7-dimension rubric scoring per /dev decision gate. >= 80% confidence: proceed and document. < 80%: stop and ask.
214
-
215
- Commit the design doc:
216
- ```bash
217
- git add docs/plans/YYYY-MM-DD-<slug>-design.md
218
- git commit -m "docs: add design doc for <slug>"
219
- ```
220
-
221
- ---
222
-
223
- **--strategic flag** (for major architecture changes):
224
-
225
- After committing the design doc, push to a proposal branch and open PR:
226
- ```bash
227
- git checkout -b feat/<slug>-proposal
228
- git push -u origin feat/<slug>-proposal
229
- gh pr create --title "Design: <feature-name>" \
230
- --body "Design doc for review. See docs/plans/YYYY-MM-DD-<slug>-design.md"
231
- ```
232
-
233
- **STOP here.** Present the PR URL. Wait for the user to merge the proposal PR.
234
- After merge, run `/plan <slug> --continue` to proceed to Phase 2 + 3.
235
-
236
- ---
237
-
238
- ```
239
- <HARD-GATE: Phase 1 exit>
240
- Do NOT begin Phase 2 (web research) until:
241
- 1. User has approved the design in this session
242
- 2. Design doc exists at docs/plans/YYYY-MM-DD-<slug>-design.md
243
- 3. Design doc includes: success criteria, edge cases, out-of-scope, ambiguity policy
244
- 4. Design doc is committed to git
245
- </HARD-GATE>
246
- ```
247
-
248
- ---
249
-
250
- ## Phase 2: Technical Research
251
-
252
- **Goal**: Find HOW to build it — best practices, known issues, security risks, TDD scenarios.
253
-
254
- Record the phase transition before starting research:
255
- ```bash
256
- bash scripts/beads-context.sh stage-transition <id> plan research
257
- ```
258
-
259
- Run these in parallel:
260
-
261
- ### Web research (parallel-deep-research skill)
262
- ```
263
- Skill("parallel-deep-research")
264
- ```
265
- Search for:
266
- - "[tech stack] [feature] best practices [year]"
267
- - "[library/framework] [feature] implementation patterns"
268
- - "Known issues / gotchas with [approach selected]"
269
-
270
- ### OWASP Top 10 analysis
271
-
272
- For this feature's risk surface, document each relevant OWASP category:
273
- - What the risk is
274
- - Whether it applies to this feature
275
- - What mitigation will be implemented
276
-
277
- ### Codebase exploration (Explore agent)
278
- - Similar existing patterns to reuse
279
- - Files this feature will affect
280
- - Existing test infrastructure to leverage
281
-
282
- ### DRY check (mandatory — use actual search tools)
283
-
284
- Before finalizing the approach, run Grep/Glob/Read searches for existing implementations of the planned function or pattern. Do not rely on memory or assumptions — execute the searches.
285
-
286
- ```
287
- Grep(searchTerm) # e.g., the function or concept name
288
- Glob("**/*.js") # narrow to affected file types if needed
289
- Read(matchedFile) # inspect any match in context
290
- ```
291
-
292
- If a match is found:
293
- - Update the design doc's "Approach selected" section to say "extend existing [file/function]" — not "create new".
294
- - Note the existing file path and line number in the design doc.
295
-
296
- If no match is found: proceed. The DRY gate is cleared.
297
-
298
- ### Blast-radius search (mandatory for remove/rename/replace features)
299
-
300
- If this feature involves **removing**, **renaming**, or **replacing** a concept, tool, or dependency:
301
-
302
- 1. Grep the ENTIRE codebase for the thing being removed/renamed:
303
- ```
304
- Grep("<thing-being-removed>") # exact name
305
- Grep("<thing-being-removed>", -i) # case-insensitive variant
306
- Glob("**/*<thing>*") # files named after it
307
- ```
308
-
309
- 2. For EVERY match found:
310
- - Note the file path and line number in the design doc
311
- - Add a cleanup task to the task list (Phase 3)
312
- - Flag matches in unexpected packages or config files explicitly
313
-
314
- 3. Common hiding spots to check:
315
- - `package.json` (scripts, dependencies, description)
316
- - `install.sh` / setup scripts
317
- - CI/CD workflows (`.github/workflows/`)
318
- - Agent config files (`lib/agents/`, `.cursorrules`, etc.)
319
- - Documentation (`docs/`, `README.md`, `AGENTS.md`)
320
- - Import statements and require() calls
321
-
322
- If no removal/rename is involved, this section is skipped.
323
-
324
- ### TDD test scenarios
325
-
326
- Identify at minimum 3 test scenarios:
327
- - Happy path
328
- - Error / failure path
329
- - Edge case from Phase 1
330
-
331
- Append all research findings to the design doc under a `## Technical Research` section (not a separate file).
332
-
333
- ---
334
-
335
- ```
336
- <HARD-GATE: Phase 2 exit>
337
- Do NOT begin Phase 3 (setup) until:
338
- 1. OWASP analysis is documented in design doc
339
- 2. At least 3 TDD test scenarios are identified
340
- 3. Approach selection is confirmed (which library/pattern to use)
341
- 4. If feature involves removal/rename: blast-radius search completed, all references added to task list
342
- </HARD-GATE>
343
- ```
344
-
345
- ---
346
-
347
- ## Phase 3: Setup + Task List
348
-
349
- **Goal**: Create branch, worktree, and a complete task list ready for /dev.
350
-
351
- Record the phase transition before starting setup:
352
- ```bash
353
- bash scripts/beads-context.sh stage-transition <id> research setup
354
- ```
355
-
356
- ### Step 1: Link child issues to the epic
357
-
358
- The epic was created in the Entry HARD-GATE (Phase 1 entry). If this feature requires child issues (sub-tasks tracked separately), create them now and link to the epic:
359
-
360
- ```bash
361
- bd create --title="<sub-task-name>" --type=feature --parent=<epic-id>
362
- ```
363
-
364
- ### Step 2: Branch + worktree
365
-
366
- **ALWAYS branch from master, never from the current branch.** If the working directory is on any branch other than master, the new feature branch would inherit all unmerged changes from that branch — contaminating the new feature's history.
367
-
368
- **Note**: If the Entry HARD-GATE already created the branch and worktree (and you are already inside `.worktrees/<slug>`), skip Steps 2b–2d — they are already done.
369
-
370
- ```bash
371
- # Step 2a: Check if branch and worktree were already created by Entry HARD-GATE
372
- CURRENT=$(git branch --show-current)
373
- if [ "$CURRENT" = "feat/<slug>" ]; then
374
- echo "✓ Branch feat/<slug> already exists (Entry HARD-GATE created it) — skipping 2b–2d"
375
- else
376
- # Step 2b: Verify .worktrees/ is gitignored — add if missing
377
- git check-ignore -v .worktrees/ || echo ".worktrees/" >> .gitignore
378
-
379
- # Step 2c: Create a Beads-aware worktree rooted on master
380
- git checkout master
381
- bd worktree create .worktrees/<slug> --branch feat/<slug>
382
- cd .worktrees/<slug>
383
- fi
384
- ```
385
-
386
- **Why this matters**: Multiple parallel features or sessions each get their own isolated worktree. Changes to one feature never bleed into another. The main working directory can stay on any branch without affecting new feature branches.
387
-
388
- ### Step 3: Project setup in worktree
389
-
390
- Auto-detect and run install:
391
- ```bash
392
- # e.g., bun install / npm install / pip install -r requirements.txt
393
- ```
394
-
395
- ### Step 4: Baseline test run
396
-
397
- ```bash
398
- # Run full test suite in worktree
399
- bun test # or project test command
400
- ```
401
-
402
- If tests fail: report which tests are failing and ask user whether to investigate or proceed anyway. Do not silently proceed past failing baseline tests.
403
-
404
- ### Step 5: Task list creation
405
-
406
- Read the design doc. Break implementation into granular tasks.
407
-
408
- **Task format** (each task MUST have ALL of these):
409
- ```
410
- Task N: <descriptive title>
411
- File(s): <exact file paths>
412
- What to implement: <complete description — not "add feature X", but what specifically>
413
- TDD steps:
414
- 1. Write test: <test file path, what assertion, what input/output>
415
- 2. Run test: confirm it fails with [specific expected error message]
416
- 3. Implement: <exact function/class/component to write>
417
- 4. Run test: confirm it passes
418
- 5. Commit: `<type>: <message>`
419
- Expected output: <what running the test/code produces when done>
420
- ```
421
-
422
- **Ordering rules**:
423
- - Foundational/shared modules FIRST (types, utils, constants)
424
- - Feature logic SECOND
425
- - Integration/wiring THIRD
426
- - Uncertain/ambiguous tasks LAST (so they can be deferred if blocked)
427
- - **File ownership**: Each task MUST include an `OWNS:` line listing files it will modify
428
- - No two tasks in the same wave can own the same file
429
- - Cross-wave ownership is allowed (sequential execution prevents conflicts)
430
-
431
- **YAGNI filter** (after initial task draft, before saving):
432
-
433
- For each task, confirm it maps to a specific requirement, success criterion, or edge case in the design doc. Run `applyYAGNIFilter({ task, designDoc })` for each task.
434
-
435
- - Tasks that match → keep as-is.
436
- - Tasks with no anchor → flagged as "potential scope creep". Present flagged tasks to the user: "These tasks have no anchor in the design doc. Keep (specify which requirement it serves) or remove?"
437
- - If ALL tasks are flagged → return `allFlagged: true` and tell the user: "Design doc doesn't cover all tasks — needs amendment." Do not save the task list until the design doc is updated or tasks are removed.
438
-
439
- **Before finalizing**: flag any tasks that touch areas not fully specified in the design doc. Present flagged tasks to user for quick clarification before saving.
440
-
441
- Save to `docs/plans/YYYY-MM-DD-<slug>-tasks.md`.
442
-
443
- ### Step 5b: Beads context
444
-
445
- After saving the task list, attach design context and acceptance criteria to the Beads issue so downstream stages (`/dev`, `/validate`, `/review`) can retrieve it without re-reading the design doc.
446
-
447
- ```bash
448
- # Link design metadata (task count + task file path) to the Beads issue
449
- bash scripts/beads-context.sh set-design <id> <task-count> docs/plans/YYYY-MM-DD-<slug>-tasks.md
450
-
451
- # Record the success criteria from the design doc on the issue
452
- bash scripts/beads-context.sh set-acceptance <id> "<success-criteria from design doc>"
453
- ```
454
-
455
- Both commands must exit with code 0. If either fails, investigate (wrong issue ID? missing script?) before continuing.
456
-
457
- ### Step 5c: Contract extraction and logic-level dependency review
458
-
459
- After saving the task list and Beads context, extract and store contract metadata, then run the logic-level Phase 3 dependency review:
460
-
461
- ```bash
462
- # Extract contracts — only call store-contracts if extract succeeds (exit 0)
463
- if bash scripts/dep-guard.sh extract-contracts docs/plans/YYYY-MM-DD-<slug>-tasks.md > /tmp/contracts.txt; then
464
- bash scripts/dep-guard.sh store-contracts <id> "$(cat /tmp/contracts.txt)"
465
- else
466
- echo "No contracts found — skipping store-contracts"
467
- fi
468
-
469
- # Re-run ripple check using Beads JSON + logic-level analysis
470
- bash scripts/dep-guard.sh check-ripple <id>
471
- ```
472
-
473
- `extract-contracts` exits 1 when no contracts are found (not an error — just nothing to store). `store-contracts` must exit 0 if called.
474
-
475
- `check-ripple` is now advisory but logic-aware. It should:
476
- - read Beads issue data via JSON
477
- - analyze import/call-chain, contract, and behavioral dependency signals
478
- - show rubric score, confidence, issue pairs, and proposed dependency updates with pros/cons
479
- - stop for user approval whenever a dependency mutation is proposed
480
-
481
- If the user approves a dependency mutation, apply it explicitly:
482
-
483
- ```bash
484
- bash scripts/dep-guard.sh apply-decision <id> <dependent-id> <depends-on-id> "<approval rationale>"
485
- ```
486
-
487
- That approval step must validate with `bd dep cycles`, show `bd graph`, summarize `bd ready`, and persist the decision via `bd set-state` plus `bd comments`. Beads remains the canonical machine-readable decision record; the plan docs hold only the concise summary.
488
-
489
- ### Step 6: User review
490
-
491
- Present the full task list. Allow the user to reorder, split, or remove tasks.
492
-
493
- ---
494
-
495
- ```
496
- <HARD-GATE: /plan exit>
497
- Do NOT proceed to /dev until ALL are confirmed:
498
- 1. git branch --show-current output shows feat/<slug>
499
- 2. git worktree list shows .worktrees/<slug>
500
- 3. Baseline tests ran — either passing OR user confirmed to proceed past failures
501
- 4. Beads issue is created with status=in_progress
502
- 5. Task list exists at docs/plans/YYYY-MM-DD-<slug>-tasks.md
503
- 6. User has confirmed task list is correct
504
- 7. `beads-context.sh set-design` ran successfully (exit code 0)
505
- 8. `beads-context.sh set-acceptance` ran successfully (exit code 0)
506
- 9. `dep-guard.sh store-contracts` ran successfully (exit code 0) — or skipped if no contracts found
507
- 10. `dep-guard.sh check-ripple` ran successfully and any proposed dependency mutation was reviewed with the user before calling `apply-decision`
508
- </HARD-GATE>
509
- ```
510
-
511
- After all HARD-GATE items pass, validate context and record the stage transition:
512
-
513
- ```bash
514
- bash scripts/beads-context.sh validate <id>
515
- bash scripts/beads-context.sh stage-transition <id> plan dev \
516
- --summary "<design approach chosen, task count>" \
517
- --decisions "<key trade-offs resolved during Q&A>" \
518
- --artifacts "docs/plans/YYYY-MM-DD-<slug>-design.md docs/plans/YYYY-MM-DD-<slug>-tasks.md" \
519
- --next "<first dev task focus area>"
520
- ```
521
-
522
- ---
523
-
524
- ## Example Output (Phase 3 complete)
525
-
526
- ```
527
- ✓ Phase 1: Design intent captured
528
- - Design doc: docs/plans/<date>-<slug>-design.md
529
- - Approach: <selected approach> (selected over <alternatives>)
530
- - Ambiguity policy: Rubric scoring (>= 80% proceed, < 80% ask)
531
-
532
- ✓ Phase 2: Technical research complete
533
- - OWASP Top 10: <N> risks identified, <N> mitigations planned
534
- - TDD scenarios: <N> identified
535
- - Sources: <N> references
536
-
537
- ✓ Phase 3: Setup complete
538
- - Beads: <issue-id> (in_progress)
539
- - Branch: feat/<slug>
540
- - Worktree: .worktrees/<slug> (baseline: <N>/<N> tests passing)
541
- - Task list: docs/plans/<date>-<slug>-tasks.md (<N> tasks)
542
-
543
- ⏸️ Task list ready for review. Confirm to proceed.
544
-
545
- After confirming, run: /dev
546
- ```
547
-
548
- ## Integration with Workflow
549
-
550
- ```
551
- Utility: /status → Understand current context before starting
552
- Stage 1: /plan → Design intent → research → branch + worktree + task list (you are here)
553
- Stage 2: /dev → Implement each task with subagent-driven TDD
554
- Stage 3: /validate → Type check, lint, tests, security — all fresh output
555
- Stage 4: /ship → Push + create PR
556
- Stage 5: /review → Address GitHub Actions, Greptile, SonarCloud
557
- Stage 6: /premerge → Update docs, hand off PR to user
558
- Stage 7: /verify → Post-merge CI check on main
559
- ```
560
-
561
- ## Tips
562
-
563
- - **Phase 1 quality = /dev autonomy**: Every ambiguity resolved in Phase 1 is a decision gate that won't fire during /dev
564
- - **One question at a time**: Don't dump all questions at once — dialogue produces better design decisions than a questionnaire
565
- - **Task granularity**: Target 2-5 minutes per task. If a task takes longer, split it
566
- - **Uncertain tasks go last**: Anything ambiguous at the end of the task list can be deferred if blocked without stopping other work
567
- - **Baseline failures matter**: Pre-existing test failures hide regressions. Fix or explicitly document them before /dev starts