forge-workflow 0.0.10 → 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 (454) 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 +150 -61
  8. package/CHANGELOG.md +681 -0
  9. package/CLAUDE.md +9 -118
  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 +461 -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/forge/TOOLCHAIN.md +670 -0
  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/{TOOLCHAIN.md → reference/TOOLCHAIN.md} +62 -47
  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 +121 -0
  81. package/lib/beads-sync-scaffold.js +25 -101
  82. package/lib/codex-skills.js +51 -1
  83. package/lib/commands/_issue.js +741 -77
  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 +17 -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 +0 -1
  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 +838 -972
  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 +158 -21
  140. package/lib/commands/sync.js +34 -46
  141. package/lib/commands/team.js +4 -1
  142. package/lib/commands/test.js +43 -27
  143. package/lib/commands/update.js +2 -2
  144. package/lib/commands/upgrade.js +47 -0
  145. package/lib/commands/validate.js +43 -18
  146. package/lib/commands/worktree.js +307 -100
  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 +2 -2
  151. package/lib/deprecated-sync-cleanup.js +362 -0
  152. package/lib/detect-agent.js +2 -28
  153. package/lib/detect-worktree.js +35 -9
  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 +382 -11
  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/kernel/backing-issue.js +305 -0
  174. package/lib/kernel/broker.js +1218 -0
  175. package/lib/kernel/cli-broker-factory.js +130 -0
  176. package/lib/kernel/conflict-signal.js +82 -0
  177. package/lib/kernel/evaluators.js +195 -0
  178. package/lib/kernel/fs-class.js +495 -0
  179. package/lib/kernel/issue-command-contract.js +559 -0
  180. package/lib/kernel/issue-id-resolver.js +186 -0
  181. package/lib/kernel/lease-enforcer.js +158 -0
  182. package/lib/kernel/migrations.js +333 -0
  183. package/lib/kernel/planning-buckets-schema.js +109 -0
  184. package/lib/kernel/projection-jsonl-writer.js +450 -0
  185. package/lib/kernel/readiness-model.js +329 -0
  186. package/lib/kernel/schema.js +356 -0
  187. package/lib/kernel/sqlite-driver.js +2504 -0
  188. package/lib/kernel/taxonomy-validator.js +394 -0
  189. package/lib/lefthook-check.js +3 -2
  190. package/lib/lefthook-wiring.js +413 -0
  191. package/lib/mcp-config-renderer.js +288 -0
  192. package/lib/memory/graphiti-mcp.js +106 -0
  193. package/lib/memory/router.js +387 -0
  194. package/lib/memory/typed-api.js +102 -0
  195. package/lib/memory-digest.js +195 -0
  196. package/lib/merge-rules.js +395 -0
  197. package/lib/migrate-dry-run.js +466 -0
  198. package/lib/orientation.js +863 -0
  199. package/lib/package-manager-remediation.js +103 -0
  200. package/lib/package-root.js +381 -0
  201. package/lib/patch-intent.js +890 -0
  202. package/lib/plugin-catalog.js +3 -4
  203. package/lib/plugin-manager.js +0 -5
  204. package/lib/pr-bundle.js +186 -0
  205. package/lib/pr-monitor/differ.js +195 -0
  206. package/lib/pr-monitor/events.js +0 -0
  207. package/lib/pr-monitor/gather.js +124 -0
  208. package/lib/pr-monitor/journal.js +299 -0
  209. package/lib/pr-monitor/monitor.js +146 -0
  210. package/lib/pr-monitor/render-sticky.js +157 -0
  211. package/lib/pr-monitor/watch-lifecycle.js +95 -0
  212. package/lib/pr-monitor/watch.js +247 -0
  213. package/lib/pr-pull.js +1273 -0
  214. package/lib/pr-shepherd.js +494 -0
  215. package/lib/pr-state-validator.js +59 -0
  216. package/lib/preflight/gates.js +237 -0
  217. package/lib/preflight/runner.js +116 -0
  218. package/lib/project-discovery.js +0 -53
  219. package/lib/project-memory.js +99 -497
  220. package/lib/protected-path-manifest.js +281 -0
  221. package/lib/protected-state-surfaces.js +387 -0
  222. package/lib/release-readiness.js +2089 -0
  223. package/lib/reset.js +59 -45
  224. package/lib/review-adapter.js +68 -0
  225. package/lib/rules-sync.js +260 -0
  226. package/lib/runtime-health.js +241 -20
  227. package/lib/safety-config-renderer.js +268 -0
  228. package/lib/setup-action-log.js +1 -7
  229. package/lib/setup.js +27 -65
  230. package/lib/shell-utils.js +76 -6
  231. package/lib/skills-sync.js +330 -0
  232. package/lib/smart-status/scoring.js +17 -3
  233. package/lib/status/beads-snapshot.js +45 -2
  234. package/lib/status/presenter.js +169 -18
  235. package/lib/status/snapshot.js +186 -0
  236. package/lib/sync-backend.js +202 -0
  237. package/lib/untrusted-content.js +52 -0
  238. package/lib/upgrade-safety.js +199 -0
  239. package/lib/workflow/enforce-stage.js +296 -47
  240. package/lib/workflow/stage-transition.js +115 -0
  241. package/lib/workflow/stages.js +30 -6
  242. package/lib/workflow/state-manager.js +11 -22
  243. package/lib/workflow/state.js +23 -1
  244. package/lib/workflow-profiles.js +17 -5
  245. package/package.json +37 -35
  246. package/rules/documentation.md +19 -0
  247. package/rules/kernel-tracking.md +26 -0
  248. package/rules/security.md +22 -0
  249. package/rules/tdd.md +20 -0
  250. package/rules/workflow.md +27 -0
  251. package/scripts/auto-backing-issue.js +47 -0
  252. package/scripts/beads-context.sh +81 -57
  253. package/scripts/beads-upgrade-smoke.sh +24 -3
  254. package/scripts/bootstrap-windows-tools.sh +78 -0
  255. package/scripts/branch-protection.js +2 -3
  256. package/scripts/check-agents.js +34 -137
  257. package/scripts/commitlint.js +3 -1
  258. package/scripts/conflict-detect.sh +3 -0
  259. package/scripts/dep-guard.sh +22 -3
  260. package/scripts/file-index.sh +3 -0
  261. package/scripts/forge-team/lib/claim.sh +34 -18
  262. package/scripts/forge-team/lib/dashboard.sh +61 -86
  263. package/scripts/forge-team/lib/epic.sh +99 -263
  264. package/scripts/forge-team/lib/hooks.sh +26 -28
  265. package/scripts/forge-team/lib/identity.sh +4 -4
  266. package/scripts/forge-team/lib/sync-github.sh +49 -84
  267. package/scripts/forge-team/lib/verify.sh +93 -83
  268. package/scripts/forge-team/lib/workload.sh +41 -65
  269. package/scripts/forge-team/tests/claim.test.sh +25 -19
  270. package/scripts/forge-team/tests/dashboard.test.sh +31 -46
  271. package/scripts/forge-team/tests/epic.test.sh +52 -71
  272. package/scripts/forge-team/tests/hooks.test.sh +38 -50
  273. package/scripts/forge-team/tests/identity.test.sh +3 -3
  274. package/scripts/forge-team/tests/integration.test.sh +44 -66
  275. package/scripts/forge-team/tests/sync-github.test.sh +50 -83
  276. package/scripts/forge-team/tests/verify.test.sh +37 -46
  277. package/scripts/forge-team/tests/workflow-integration.test.sh +4 -4
  278. package/scripts/forge-team/tests/workload.test.sh +32 -66
  279. package/scripts/gen-command-manifest.js +153 -0
  280. package/scripts/gen-embedded-assets.mjs +129 -0
  281. package/scripts/install.ps1 +139 -0
  282. package/scripts/install.sh +268 -0
  283. package/scripts/lib/release-asset.mjs +84 -0
  284. package/scripts/parity-check.mjs +145 -0
  285. package/scripts/parity-check.test.mjs +58 -0
  286. package/scripts/pin-agentic-workflow-images.js +112 -0
  287. package/scripts/pr-coordinator.sh +3 -0
  288. package/scripts/preflight-sonar.eslint.config.mjs +44 -0
  289. package/scripts/preflight.sh +21 -94
  290. package/scripts/protected-state-check.js +104 -0
  291. package/scripts/smart-status.sh +60 -57
  292. package/scripts/spikes/config-race-bench.js +111 -0
  293. package/scripts/spikes/harness-capability-matrix.js +13 -0
  294. package/scripts/spikes/patch-anchor-stability-bench.js +125 -0
  295. package/scripts/spikes/protected-path-manifest.js +20 -0
  296. package/scripts/spikes/skill-auto-invoke-parity.js +292 -0
  297. package/scripts/sync-agent-skills.js +62 -0
  298. package/scripts/sync-utils.sh +3 -0
  299. package/scripts/test-ci-shard.js +13 -6
  300. package/scripts/test.js +95 -12
  301. package/skills/claim-safety/SKILL.md +102 -0
  302. package/skills/claim-safety/evals/evals.json +46 -0
  303. package/{.github/prompts/dev.prompt.md → skills/dev/SKILL.md} +44 -50
  304. package/skills/dev/evals/evals.json +50 -0
  305. package/skills/hermes-forge/SKILL.md +185 -0
  306. package/skills/hermes-forge/evals/evals.json +46 -0
  307. package/skills/issue-basics/SKILL.md +111 -0
  308. package/skills/issue-basics/evals/evals.json +46 -0
  309. package/skills/kernel/SKILL.md +166 -0
  310. package/skills/kernel/evals/evals.json +50 -0
  311. package/skills/memory/SKILL.md +102 -0
  312. package/skills/parallel-deep-research/SKILL.md +14 -11
  313. package/skills/parallel-deep-research/evals/evals.json +11 -27
  314. package/{.github/prompts/plan.prompt.md → skills/plan/SKILL.md} +132 -157
  315. package/skills/plan/evals/evals.json +42 -0
  316. package/skills/research/SKILL.md +195 -0
  317. package/skills/research/evals/evals.json +42 -0
  318. package/{.github/prompts/review.prompt.md → skills/review/SKILL.md} +98 -62
  319. package/skills/review/evals/evals.json +42 -0
  320. package/skills/rollback/SKILL.md +110 -0
  321. package/skills/rollback/evals/evals.json +46 -0
  322. package/skills/rollback/references/methods.md +204 -0
  323. package/{.cursor/commands/rollback.md → skills/rollback/references/workflow-integration.md} +10 -284
  324. package/skills/shepherd/SKILL.md +66 -0
  325. package/skills/shepherd/evals/evals.json +42 -0
  326. package/{.github/prompts/ship.prompt.md → skills/ship/SKILL.md} +81 -45
  327. package/skills/ship/evals/evals.json +42 -0
  328. package/skills/smith/SKILL.md +142 -0
  329. package/skills/smith/evals/evals.json +46 -0
  330. package/skills/smith/references/autonomy-and-gates.md +94 -0
  331. package/{.github/prompts/sonarcloud.prompt.md → skills/sonarcloud/SKILL.md} +14 -3
  332. package/skills/sonarcloud/evals/evals.json +46 -0
  333. package/skills/sonarcloud-analysis/SKILL.md +18 -13
  334. package/skills/sonarcloud-analysis/evals/evals.json +11 -15
  335. package/{.github/prompts/status.prompt.md → skills/status/SKILL.md} +20 -10
  336. package/skills/status/evals/evals.json +50 -0
  337. package/skills/triage-ready/SKILL.md +121 -0
  338. package/skills/triage-ready/evals/evals.json +42 -0
  339. package/{.github/prompts/validate.prompt.md → skills/validate/SKILL.md} +52 -29
  340. package/skills/validate/evals/evals.json +42 -0
  341. package/skills/verify/SKILL.md +299 -0
  342. package/skills/verify/evals/evals.json +50 -0
  343. package/.claude/commands/dev.md +0 -345
  344. package/.claude/commands/plan.md +0 -566
  345. package/.claude/commands/premerge.md +0 -186
  346. package/.claude/commands/research.md +0 -42
  347. package/.claude/commands/review.md +0 -451
  348. package/.claude/commands/rollback.md +0 -721
  349. package/.claude/commands/ship.md +0 -213
  350. package/.claude/commands/sonarcloud.md +0 -152
  351. package/.claude/commands/status.md +0 -90
  352. package/.claude/commands/validate.md +0 -288
  353. package/.claude/commands/verify.md +0 -269
  354. package/.claude/rules/workflow.md +0 -121
  355. package/.cline/workflows/dev.md +0 -342
  356. package/.cline/workflows/plan.md +0 -563
  357. package/.cline/workflows/premerge.md +0 -183
  358. package/.cline/workflows/research.md +0 -39
  359. package/.cline/workflows/review.md +0 -448
  360. package/.cline/workflows/rollback.md +0 -718
  361. package/.cline/workflows/ship.md +0 -210
  362. package/.cline/workflows/sonarcloud.md +0 -146
  363. package/.cline/workflows/status.md +0 -87
  364. package/.cline/workflows/validate.md +0 -285
  365. package/.cline/workflows/verify.md +0 -266
  366. package/.codex/config.toml +0 -11
  367. package/.codex/skills/dev/SKILL.md +0 -345
  368. package/.codex/skills/plan/SKILL.md +0 -566
  369. package/.codex/skills/premerge/SKILL.md +0 -186
  370. package/.codex/skills/research/SKILL.md +0 -42
  371. package/.codex/skills/review/SKILL.md +0 -451
  372. package/.codex/skills/rollback/SKILL.md +0 -721
  373. package/.codex/skills/ship/SKILL.md +0 -213
  374. package/.codex/skills/sonarcloud/SKILL.md +0 -149
  375. package/.codex/skills/status/SKILL.md +0 -90
  376. package/.codex/skills/validate/SKILL.md +0 -288
  377. package/.codex/skills/verify/SKILL.md +0 -269
  378. package/.cursor/commands/dev.md +0 -342
  379. package/.cursor/commands/plan.md +0 -563
  380. package/.cursor/commands/premerge.md +0 -183
  381. package/.cursor/commands/research.md +0 -39
  382. package/.cursor/commands/review.md +0 -448
  383. package/.cursor/commands/ship.md +0 -210
  384. package/.cursor/commands/sonarcloud.md +0 -146
  385. package/.cursor/commands/status.md +0 -87
  386. package/.cursor/commands/validate.md +0 -285
  387. package/.cursor/commands/verify.md +0 -266
  388. package/.cursorrules +0 -149
  389. package/.github/prompts/premerge.prompt.md +0 -188
  390. package/.github/prompts/research.prompt.md +0 -44
  391. package/.github/prompts/rollback.prompt.md +0 -723
  392. package/.github/prompts/verify.prompt.md +0 -271
  393. package/.github/workflows/beads-to-github.yml +0 -89
  394. package/.github/workflows/github-to-beads.yml +0 -100
  395. package/.kilocode/workflows/dev.md +0 -346
  396. package/.kilocode/workflows/plan.md +0 -567
  397. package/.kilocode/workflows/premerge.md +0 -187
  398. package/.kilocode/workflows/research.md +0 -43
  399. package/.kilocode/workflows/review.md +0 -452
  400. package/.kilocode/workflows/rollback.md +0 -722
  401. package/.kilocode/workflows/ship.md +0 -214
  402. package/.kilocode/workflows/sonarcloud.md +0 -150
  403. package/.kilocode/workflows/status.md +0 -91
  404. package/.kilocode/workflows/validate.md +0 -289
  405. package/.kilocode/workflows/verify.md +0 -270
  406. package/.opencode/commands/dev.md +0 -345
  407. package/.opencode/commands/plan.md +0 -566
  408. package/.opencode/commands/premerge.md +0 -186
  409. package/.opencode/commands/research.md +0 -42
  410. package/.opencode/commands/review.md +0 -451
  411. package/.opencode/commands/rollback.md +0 -721
  412. package/.opencode/commands/ship.md +0 -213
  413. package/.opencode/commands/sonarcloud.md +0 -149
  414. package/.opencode/commands/status.md +0 -90
  415. package/.opencode/commands/validate.md +0 -288
  416. package/.opencode/commands/verify.md +0 -269
  417. package/.roo/commands/dev.md +0 -346
  418. package/.roo/commands/plan.md +0 -567
  419. package/.roo/commands/premerge.md +0 -187
  420. package/.roo/commands/research.md +0 -43
  421. package/.roo/commands/review.md +0 -452
  422. package/.roo/commands/rollback.md +0 -722
  423. package/.roo/commands/ship.md +0 -214
  424. package/.roo/commands/sonarcloud.md +0 -150
  425. package/.roo/commands/status.md +0 -91
  426. package/.roo/commands/validate.md +0 -289
  427. package/.roo/commands/verify.md +0 -270
  428. package/docs/BEADS_GITHUB_SYNC.md +0 -281
  429. package/docs/GREPTILE_SETUP.md +0 -400
  430. package/docs/MANUAL_REVIEW_GUIDE.md +0 -106
  431. package/docs/SETUP.md +0 -663
  432. package/docs/VALIDATION.md +0 -363
  433. package/lib/agents/cline.plugin.json +0 -29
  434. package/lib/agents/copilot.plugin.json +0 -24
  435. package/lib/agents/kilocode.plugin.json +0 -22
  436. package/lib/agents/opencode.plugin.json +0 -23
  437. package/lib/agents/roo.plugin.json +0 -30
  438. package/lib/beads-bootstrap.js +0 -225
  439. package/lib/beads-health-check.js +0 -188
  440. package/lib/commands/commands-reset.js +0 -147
  441. package/opencode.json +0 -67
  442. package/scripts/beads-context.test.js +0 -584
  443. package/scripts/github-beads-sync/comment.mjs +0 -64
  444. package/scripts/github-beads-sync/config.mjs +0 -148
  445. package/scripts/github-beads-sync/github-api.mjs +0 -131
  446. package/scripts/github-beads-sync/index.mjs +0 -356
  447. package/scripts/github-beads-sync/label-mapper.mjs +0 -54
  448. package/scripts/github-beads-sync/mapping.mjs +0 -132
  449. package/scripts/github-beads-sync/reverse-sync-cli.mjs +0 -31
  450. package/scripts/github-beads-sync/reverse-sync.mjs +0 -162
  451. package/scripts/github-beads-sync/run-bd.mjs +0 -161
  452. package/scripts/github-beads-sync/sanitize.mjs +0 -121
  453. package/scripts/github-beads-sync.config.json +0 -26
  454. package/scripts/sync-commands.js +0 -600
@@ -1,7 +1,18 @@
1
1
  ---
2
2
  name: sonarcloud
3
- description: Pull issues, metrics, quality gates, and analysis data from SonarCloud
4
- tools: []
3
+ description: >
4
+ Query SonarCloud code-quality data via the `/sonarcloud` slash command — the fast in-context
5
+ lookup for a project, branch, or PR. Handles `issues`, `metrics`, `gate` (pass/fail + failed
6
+ conditions), `health`, `pr <number>`, `hotspots`, `history`, plus `--branch`, `--severity`,
7
+ `--type`, `--new-code` filters. Use the moment the user types `/sonarcloud ...` or asks in
8
+ plain language: "what does SonarCloud say about this PR", "check the SonarCloud quality gate
9
+ before I ship", "SonarCloud blocker/critical bugs on develop", "new-code SonarCloud issues
10
+ on PR 214". Only READS/reports — does NOT fix findings or reply-to/resolve PR threads (that
11
+ is `review`); it is the lightweight command surface, NOT the deep-analysis session
12
+ correlating findings with local source or history trends (that is `sonarcloud-analysis`).
13
+ Not for local SAST scans of your own code, nor the Forge issue tracker (`forge issue ...`,
14
+ "open/ready issues") — here those bare words always mean SonarCloud.
15
+ allowed-tools: Bash, Read, Grep, Glob, WebFetch
5
16
  ---
6
17
 
7
18
  # SonarCloud Query Command
@@ -41,7 +52,7 @@ Pull code quality data from SonarCloud. Requires `SONARCLOUD_TOKEN` environment
41
52
  - Optional filters (branch, severity, type, new-code, etc.)
42
53
  2. Check for `SONARCLOUD_TOKEN` environment variable. If not set, inform user.
43
54
  3. Check for `SONARCLOUD_ORG` environment variable or ask user for organization key.
44
- 4. Execute the appropriate API call using curl or the TypeScript client at `next-app/src/lib/integrations/sonarcloud.ts`
55
+ 4. Execute the appropriate API call against the SonarCloud REST API (see the API Reference section below for endpoints)
45
56
  5. Format and present results clearly:
46
57
  - For issues: Group by severity/type, show file, line, message
47
58
  - For metrics: Show as table with metric name and value
@@ -0,0 +1,46 @@
1
+ [
2
+ {
3
+ "query": "/sonarcloud gate my-project",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "/sonarcloud pr befach-web 214 --new-code",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "What does SonarCloud say about this pull request? Just the quality gate and the blocker issues, quick.",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "Show SonarCloud bugs and vulnerabilities on the develop branch for the api project",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Any new-code SonarCloud issues on PR 88 before I ship?",
20
+ "should_trigger": true
21
+ },
22
+ {
23
+ "query": "Pull the SonarCloud coverage and code-smell numbers for my-project so I can eyeball them",
24
+ "should_trigger": true
25
+ },
26
+ {
27
+ "query": "Open an isolated SonarCloud deep-dive: correlate every flagged vulnerability with the actual source files, walk the analysis history for coverage trends, and hand back a synthesized technical-debt report",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "SonarCloud flagged issues on PR 214 — fix them, reply to each review thread, and mark them resolved",
32
+ "should_trigger": false
33
+ },
34
+ {
35
+ "query": "Run a SAST security scan over my code and list the vulnerabilities you find",
36
+ "should_trigger": false
37
+ },
38
+ {
39
+ "query": "Show me the open issues that are ready to work on next",
40
+ "should_trigger": false
41
+ },
42
+ {
43
+ "query": "Run lint and type-check and the test suite before I ship this branch",
44
+ "should_trigger": false
45
+ }
46
+ ]
@@ -1,13 +1,18 @@
1
1
  ---
2
2
  name: sonarcloud-analysis
3
3
  description: >
4
- Pull issues, metrics, quality gates, and analysis data from SonarCloud. ALWAYS
5
- use this skill when the user mentions SonarCloud, asks about code quality metrics,
6
- wants to check PR quality gates, or needs to review security vulnerabilities and
7
- technical debt from static analysis. Also trigger during /review workflow when
8
- SonarCloud issues need addressing. Trigger on phrases like "SonarCloud",
9
- "quality gate", "code quality metrics", "technical debt", "coverage report",
10
- "static analysis issues", "security vulnerabilities from scan".
4
+ SonarCloud deep-dive via its REST API: pull open issues (bugs, vulnerabilities, code
5
+ smells), coverage/duplication metrics, quality-gate pass/fail with failed thresholds,
6
+ security hotspots, and measure/analysis history for a whole project, branch, or PR, then
7
+ return a ranked summary. Use whenever the user names SonarCloud or asks about code-quality
8
+ metrics, technical debt, a red/failing quality gate, or static-analysis
9
+ vulnerabilities/hotspots — e.g. 'why is the SonarCloud gate failing on this PR' or 'pull
10
+ every BLOCKER vulnerability with file and line'. NOT for: the thin `/sonarcloud <query>
11
+ <project>` slash command for a quick lookup (sibling 'sonarcloud'); replying to/resolving PR
12
+ review threads across Greptile, CodeRabbit, or GitHub Actions ('review'); running local
13
+ lint/type-check/test/security scans pre-ship ('validate'); implementing or patching a
14
+ flagged issue ('dev'); or an external market/competitor report on SonarSource or DevSecOps
15
+ vendors ('parallel-deep-research').
11
16
  category: Code Quality
12
17
  tags: [sonarcloud, code-quality, issues, metrics, security]
13
18
  context: fork
@@ -77,12 +82,12 @@ export SONARCLOUD_ORG="your-org"
77
82
  export SONARCLOUD_PROJECT="your-project"
78
83
 
79
84
  # Common queries
80
- curl -H "Authorization: Bearer $TOKEN" \
81
- "https://sonarcloud.io/api/issues/search?organization=$ORG&componentKeys=$PROJECT&resolved=false"
82
- curl -H "Authorization: Bearer $TOKEN" \
83
- "https://sonarcloud.io/api/measures/component?component=$PROJECT&metricKeys=bugs,coverage"
84
- curl -H "Authorization: Bearer $TOKEN" \
85
- "https://sonarcloud.io/api/qualitygates/project_status?projectKey=$PROJECT"
85
+ curl -H "Authorization: Bearer $SONARCLOUD_TOKEN" \
86
+ "https://sonarcloud.io/api/issues/search?organization=$SONARCLOUD_ORG&componentKeys=$SONARCLOUD_PROJECT&resolved=false"
87
+ curl -H "Authorization: Bearer $SONARCLOUD_TOKEN" \
88
+ "https://sonarcloud.io/api/measures/component?component=$SONARCLOUD_PROJECT&metricKeys=bugs,coverage"
89
+ curl -H "Authorization: Bearer $SONARCLOUD_TOKEN" \
90
+ "https://sonarcloud.io/api/qualitygates/project_status?projectKey=$SONARCLOUD_PROJECT"
86
91
  ```
87
92
 
88
93
  ## Endpoints
@@ -1,50 +1,46 @@
1
1
  [
2
2
  {
3
- "query": "Check the SonarCloud quality gate status for our latest PR I want to see if there are any blockers before we can merge, especially around security vulnerabilities and code coverage",
3
+ "query": "Why is our quality gate red on this pull request? Break down exactly which conditions failed and by how much.",
4
4
  "should_trigger": true
5
5
  },
6
6
  {
7
- "query": "Pull the SonarCloud analysis results for our project — show me all the critical and major security vulnerabilities found in the last scan, with file locations and remediation guidance",
7
+ "query": "How much technical debt has piled up in the codebase, and which files carry the worst maintainability rating?",
8
8
  "should_trigger": true
9
9
  },
10
10
  {
11
- "query": "We're in /review and SonarCloud flagged some issues — get the full list of code smells, bugs, and vulnerabilities from the latest analysis so I can address them before the quality gate passes",
11
+ "query": "Give me the coverage and duplication numbers for the develop branch and flag the modules that regressed.",
12
12
  "should_trigger": true
13
13
  },
14
14
  {
15
- "query": "What's our current technical debt ratio in SonarCloud? Show me the metrics dashboard — maintainability rating, reliability rating, security rating, and coverage percentage",
15
+ "query": "List every unresolved BLOCKER and CRITICAL vulnerability SonarCloud found, with file and line, so I know what to fix first.",
16
16
  "should_trigger": true
17
17
  },
18
18
  {
19
- "query": "The SonarCloud quality gate is failing on our PR — pull the specific issues that are blocking it and show me what needs to be fixed, sorted by severity",
19
+ "query": "Pull the security hotspots that still need review and summarize the risk for each.",
20
20
  "should_trigger": true
21
21
  },
22
22
  {
23
- "query": "Get the SonarCloud code coverage report for our project I want to see which modules have low coverage and identify the files that need more tests before our next release",
23
+ "query": "Show me how our reliability and security ratings have trended over the last month of analyses.",
24
24
  "should_trigger": true
25
25
  },
26
26
  {
27
- "query": "Implement a new REST API endpoint for user profile management with CRUD operations, input validation, and proper error handling",
27
+ "query": "/sonarcloud issues checkout-service --severity BLOCKER",
28
28
  "should_trigger": false
29
29
  },
30
30
  {
31
- "query": "Search for best practices around implementing OAuth2 PKCE flow in a Node.js application",
31
+ "query": "Go through all the open PR review threads from Greptile and CodeRabbit, reply to each explaining the fix, and mark them resolved.",
32
32
  "should_trigger": false
33
33
  },
34
34
  {
35
- "query": "Write a comprehensive market analysis of the DevSecOps tools landscape covering SAST, DAST, and SCA vendors",
35
+ "query": "Run lint, type-check, the test suite, and the security scanner and give me fresh output before I ship this branch.",
36
36
  "should_trigger": false
37
37
  },
38
38
  {
39
- "query": "Scrape https://docs.sonarcloud.io and extract the full list of supported languages and analysis rules",
39
+ "query": "Fix the SQL-injection vulnerability SonarCloud flagged in login.ts and add a regression test.",
40
40
  "should_trigger": false
41
41
  },
42
42
  {
43
- "query": "Build a structured company profile for SonarSource return JSON with founding year, funding, products, and competitive positioning",
44
- "should_trigger": false
45
- },
46
- {
47
- "query": "Add proper citations to docs/research/security-audit-findings.md following our project's citation standards",
43
+ "query": "Produce a competitive market report comparing SonarCloud, Snyk, and Codacy for our tooling decision.",
48
44
  "should_trigger": false
49
45
  }
50
46
  ]
@@ -1,14 +1,24 @@
1
1
  ---
2
2
  name: status
3
- description: Check current stage and context
4
- tools: []
3
+ description: >
4
+ Report where the project stands and what work is in flight -- the Forge status snapshot.
5
+ Reach for this at session start or whenever the user says "/status", "where am I", "what's
6
+ in progress", "catch me up", "resume work", or "what changed recently". It surfaces the workflow stage, your active/claimed issues, all issues ranked by
7
+ composite score with conflict-risk flags, stale already-merged issues (which it closes), and
8
+ recent commits. Use it to ORIENT and decide the next move -- it reports state; it does not
9
+ plan, develop, or claim issues. Not for: routing to a stage skill or documenting the full
10
+ issue-verb surface (kernel); ranking and EXPLAINING a single next-ready or blocked issue to
11
+ hand off (triage-ready); everyday create/update/list/close/comment/search issue ops
12
+ (issue-basics); the Hermes harness's token-bounded orient/recap contract (hermes-forge); or
13
+ the post-merge CI health check that closes issues after a merge lands (verify).
14
+ allowed-tools: Bash, Read, Grep, Glob
5
15
  ---
6
16
 
7
17
  Check where you are in the project and what work is in progress.
8
18
 
9
19
  # Status Check
10
20
 
11
- This command helps you understand the current state of the project before starting new work.
21
+ This skill helps you understand the current state of the project before starting new work.
12
22
 
13
23
  ## Usage
14
24
 
@@ -16,7 +26,7 @@ This command helps you understand the current state of the project before starti
16
26
  /status
17
27
  ```
18
28
 
19
- ## What This Command Does
29
+ ## What This Skill Does
20
30
 
21
31
  ## Step 0: Sync team state
22
32
 
@@ -32,7 +42,7 @@ bash scripts/smart-status.sh
32
42
  ```
33
43
  This command dynamically computes and displays all issues ranked by composite score (priority, dependency impact, type, staleness, epic proximity). Output includes active sessions, conflict risk annotations, and grouped categories. No manual querying needed.
34
44
 
35
- For full context on any issue: `bd show <id>`
45
+ For full context on any issue: `forge show <id>`
36
46
 
37
47
  ### Step 1b: Reconcile stale in-progress issues
38
48
 
@@ -44,15 +54,15 @@ DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's|
44
54
  if [ -z "$DEFAULT_BRANCH" ]; then
45
55
  if git rev-parse --verify main >/dev/null 2>&1; then DEFAULT_BRANCH="main"
46
56
  elif git rev-parse --verify master >/dev/null 2>&1; then DEFAULT_BRANCH="master"
47
- else echo "ERROR: No main or master branch found skipping stale reconciliation" >&2; DEFAULT_BRANCH=""; fi
57
+ else echo "ERROR: No main or master branch found -- skipping stale reconciliation" >&2; DEFAULT_BRANCH=""; fi
48
58
  fi
49
59
 
50
60
  # For each in_progress issue, check if its PR was already merged
51
61
  if [ -n "$DEFAULT_BRANCH" ]; then
52
- bd list --status=in_progress --json 2>/dev/null | jq -r '.[].id' | while read id; do
62
+ forge list --status=in_progress --json 2>/dev/null | jq -r '.[].id' | while read id; do
53
63
  # Search git log for the issue ID in commit messages (fixed-strings for literal match)
54
64
  if git log --oneline --first-parent "$DEFAULT_BRANCH" --fixed-strings --grep="$id" | grep -q .; then
55
- echo "STALE: $id found in git history, likely already merged"
65
+ echo "STALE: $id -- found in git history, likely already merged"
56
66
  fi
57
67
  done
58
68
  fi
@@ -60,7 +70,7 @@ fi
60
70
 
61
71
  If stale issues are found, close them:
62
72
  ```bash
63
- bd close <id> --force --reason="Already merged detected during status reconciliation"
73
+ forge close <id> --force --reason="Already merged -- detected during status reconciliation"
64
74
  ```
65
75
 
66
76
  ### Step 2: Review Recent Commits
@@ -89,4 +99,4 @@ forge team dashboard 2>&1 | head -5 || true
89
99
 
90
100
  - **If starting new work**: Run `/plan <feature-name>`
91
101
  - **If continuing work**: Resume with appropriate phase command
92
- - **If reviewing**: Run `/review <pr-number>` or `/premerge <pr-number>`
102
+ - **If reviewing**: Run `/review <pr-number>` (the pre-merge doc gate is embedded in `/ship` and `/review`)
@@ -0,0 +1,50 @@
1
+ [
2
+ {
3
+ "query": "/status",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "where am I on this project right now?",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "catch me up -- what's in progress and what got merged recently?",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "I stepped away for a few days, give me the current state of the work before I dive back in",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "show me my active issues and which stage we're at",
20
+ "should_trigger": true
21
+ },
22
+ {
23
+ "query": "are there any in-progress issues that were already merged and should be closed?",
24
+ "should_trigger": true
25
+ },
26
+ {
27
+ "query": "what's the single best next issue to start, and explain why that one?",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "why is issue forge-456 blocked -- what's it waiting on?",
32
+ "should_trigger": false
33
+ },
34
+ {
35
+ "query": "route me to the correct Forge stage skill for opening a PR",
36
+ "should_trigger": false
37
+ },
38
+ {
39
+ "query": "create an issue titled 'fix flaky login test' and tag it a bug",
40
+ "should_trigger": false
41
+ },
42
+ {
43
+ "query": "the PR just merged to master -- confirm CI is green and close the linked issues",
44
+ "should_trigger": false
45
+ },
46
+ {
47
+ "query": "keep an eye on PR #88 until its checks and review threads settle",
48
+ "should_trigger": false
49
+ }
50
+ ]
@@ -0,0 +1,121 @@
1
+ ---
2
+ name: triage-ready
3
+ description: >
4
+ Surfaces, ranks, and EXPLAINS the single best next issue in a Forge project — strictly
5
+ read-only. Recomputes the live ready queue and explains what is blocked via `forge issue
6
+ ready`/`blocked`/`stats`/`show`, always against the live kernel, never `forge board`.
7
+ Recommends ONE issue with a one-line reason, then hands off; never claims, comments, closes,
8
+ or mutates. Use when the user asks "what should I work on", "what's next", "what's ready",
9
+ "pick/triage my next task", "top of the ready queue", "which issue should I start", "why is
10
+ this issue blocked", or "what's blocking the most work". NOT for claiming or taking
11
+ ownership of the pick (use claim-safety), not for everyday issue
12
+ create/update/list/search/close/comment/dep CRUD (use issue-basics), not for reporting the
13
+ current workflow stage or "where am I / what's in flight" (use status), not for orienting a
14
+ whole session or routing to stage skills (use kernel), not for driving an issue to a merged
15
+ PR (use smith).
16
+ allowed-tools: Read, Bash(forge:*)
17
+ ---
18
+
19
+ # Triage: what should I work on next
20
+
21
+ A read-only orientation skill. It answers "what is the single best thing to work
22
+ on right now, and *why*?" and hands the pick off to `claim-safety` / `dev` — it
23
+ never mutates the store itself.
24
+
25
+ Readiness in the Forge kernel is a **derived read model**: an issue is ready only
26
+ when every dependency is satisfied, it is unclaimed (no live lease), it is a
27
+ claimable type (epics and decisions never enter the queue), and no defer window
28
+ holds it back. Because it is derived, **always recompute it** — never trust a
29
+ cached "status == ready". Recompute means: run the query fresh each time.
30
+
31
+ ## Do NOT use `board`
32
+
33
+ `forge board` reads a legacy snapshot store, not the live kernel, so its readiness
34
+ can be stale or wrong. This skill uses `forge issue ready`, `forge issue blocked`,
35
+ and `forge issue stats` exclusively.
36
+
37
+ ## Procedure
38
+
39
+ ### 1. Take the pulse
40
+
41
+ ```bash
42
+ forge issue stats --json
43
+ ```
44
+
45
+ Returns `data.counts` (`open`/`done`/`cancelled` — keys are present only when
46
+ non-zero, and there is no `in_progress` bucket: claimed work stays in status
47
+ `open` and is surfaced via `active_claims`), `ready_count`, `blocked_count`, and
48
+ `active_claims`. A high `blocked_count` relative to
49
+ `ready_count` is your signal that dependency repair (not new work) is the real
50
+ bottleneck — hand off to `dependency-planning` / `backlog-hygiene`.
51
+
52
+ ### 2. Rank the ready queue
53
+
54
+ ```bash
55
+ forge issue ready --json
56
+ ```
57
+
58
+ `data.issues[]` comes back ordered by `rank` (priority ascending, then id), each
59
+ carrying `id`, `title`, `type`, `priority` (`P0`..`P4`), `rank`, `blocked`,
60
+ `claimed_by`, `parent_id`, `labels[]`, and `dependencies[]`. The top item is your
61
+ default pick. Surface the top few (see Fork points for how many), not the whole
62
+ list.
63
+
64
+ ### 3. Explain WHY the top item is ready
65
+
66
+ Do not just name it — justify it. Pull its full record:
67
+
68
+ ```bash
69
+ forge issue show <id> --json
70
+ ```
71
+
72
+ State the reason in one sentence, drawn from the record:
73
+
74
+ - **Priority / rank** — `P0` at `rank` 0 outranks everything below it.
75
+ - **Dependencies satisfied** — every id in `dependencies[]` is closed/done, so
76
+ nothing gates it (`blocked: false`).
77
+ - **Unclaimed** — `claimed_by` is `null`, so no other agent holds the lease.
78
+ - **Claimable type** — it is a `task`/`feature`/`bug`, not an `epic`/`decision`.
79
+
80
+ ### 4. Explain why the runners-up are NOT ready
81
+
82
+ ```bash
83
+ forge issue blocked --json
84
+ ```
85
+
86
+ For a blocked item, name the specific unmet dependency (from its `dependencies[]`
87
+ cross-referenced against `forge issue show`) — e.g. "blocked by `forge-x` which is
88
+ still `open`". This turns triage into an actionable map: the fastest way to unlock
89
+ the most work is usually to finish the shared blocker.
90
+
91
+ ### 5. Hand off
92
+
93
+ Recommend ONE issue with its one-line justification, then stop. The caller claims
94
+ it (via `claim-safety`) and executes (via `dev`). Triage does not claim, comment,
95
+ or close — it is strictly read-only.
96
+
97
+ ## Reliability
98
+
99
+ - **Recompute, never cache.** Readiness is derived; re-run `forge issue ready`
100
+ every session rather than remembering a prior "ready" verdict.
101
+ - **Respect non-claimable types.** Epics and decisions never appear in `ready`
102
+ (the queue surfaces only claimable types — `task`/`bug`), so do not hand them
103
+ off as work. There is no `claimable` field in the CLI JSON; this is behavioral,
104
+ not a flag you can read.
105
+ - **Check the envelope.** Every `--json` reply carries `ok`; on `ok:false` read
106
+ `error.message` and retry the query rather than guessing at state.
107
+ - **Read-only.** This skill runs only `stats`/`ready`/`blocked`/`show`. If a fix is
108
+ needed, hand off — never mutate here.
109
+
110
+ ## Fork points
111
+
112
+ Editable knobs — change these to carve your own triage policy. This skill is a
113
+ canonical source you fork, not a fixed ladder.
114
+
115
+ | Knob | Default | How to change |
116
+ |------|---------|---------------|
117
+ | **Readiness query / filters** | `forge issue ready` (whole queue) | Narrow to a slice, e.g. `forge issue list --status open --priority P0 --json` or post-filter `ready` output by `labels[]`/`type` to focus one workstream. |
118
+ | **How many items to surface** | Top 3 by `rank` | Raise for a broad standup view, lower to 1 for a strict "next task only" hand-off. |
119
+ | **Stale threshold** | `forge issue stale --days 14` | Change `--days` to flag idle in-progress work sooner/later; surface stale claims as a caveat before recommending fresh work. |
120
+ | **Priority ordering** | Kernel `rank` (priority, then id) | Re-rank the `ready` list by your own weights — epic proximity (`parent_id`), label, or age — before picking. |
121
+ | **Blocked-explain depth** | One hop (direct unmet deps) | Trace transitively via repeated `forge issue show` when you need the full blocking chain; hand to `graph-forensics` for deep `explain`. |
@@ -0,0 +1,42 @@
1
+ [
2
+ {
3
+ "query": "I just sat down at this repo — what's the highest-priority thing I can actually start right now?",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "Give me the top few off the ready queue and tell me why the first one is unblocked.",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "Why can't I start forge-2agy.2.2 yet? What's holding it up?",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "The backlog feels stuck — is it mostly blocked, and which one dependency would unlock the most work?",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Pick my next task and justify the choice, don't grab it yet.",
20
+ "should_trigger": true
21
+ },
22
+ {
23
+ "query": "Claim forge-abc123 for me and confirm I actually hold the lease before I start editing.",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "Create a P1 bug titled 'login returns 500' and add a comment linking the repro.",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Where am I in the workflow right now and what work is in flight?",
32
+ "should_trigger": false
33
+ },
34
+ {
35
+ "query": "Search every issue mentioning 'oauth' and list the open ones.",
36
+ "should_trigger": false
37
+ },
38
+ {
39
+ "query": "Take forge-xyz all the way through to a merged PR.",
40
+ "should_trigger": false
41
+ }
42
+ ]
@@ -1,19 +1,30 @@
1
1
  ---
2
2
  name: validate
3
- description: Complete validation (type/lint/tests/security)
4
- tools: []
3
+ description: >
4
+ Forge VALIDATE stage — the pre-pull-request quality gate. Rebases the branch onto the
5
+ current base branch, then runs type-checking, linting, code review, an OWASP Top 10 security
6
+ review plus dependency scan, and the full test suite, demanding fresh passing output in THIS
7
+ session before anything ships. Reach for this whenever a branch is code-complete and someone
8
+ says: validate my changes, run the quality gates, run the pre-PR checks, type-check and lint
9
+ before the PR, run the security scan, or run the full test suite before opening a PR — and
10
+ for the literal `/validate` command or `bun run check`. This is the gate that runs AFTER
11
+ code is written but BEFORE a PR exists, so discriminate carefully: it does not implement
12
+ features or write tests (that is `/dev`), it does not push the branch or open the PR (that
13
+ is `/ship`), it does not answer PR review feedback from Greptile / SonarCloud / CodeRabbit
14
+ (that is `/review`), and it is not the post-merge CI health check (that is `/verify`).
15
+ allowed-tools: Bash, Read, Grep, Glob
5
16
  ---
6
17
 
7
18
  > **Note:** Three things share the "validate" name in Forge:
8
- > - `/validate` (this command): Workflow Stage 3 — rebases onto the base branch, then runs type/lint/test/security checks
19
+ > - `/validate` (this command): default-template validation command — rebases onto the base branch, then runs type/lint/test/security checks
9
20
  > - `forge-preflight` (formerly forge-validate): CLI tool — checks prerequisites before a stage
10
- > - `bun run check` (scripts/validate.sh): Local quality gate — runs type/lint/test/security checks only (does NOT rebase; assumes branch is already current with the base branch)
21
+ > - `bun run check` (scripts/validate.js): Local quality gate — runs type/lint/test/security checks only (does NOT rebase; assumes branch is already current with the base branch)
11
22
 
12
23
  Run comprehensive validation including type checking, linting, code review, security review, and tests.
13
24
 
14
25
  # Validate
15
26
 
16
- This command validates all code before creating a pull request.
27
+ This skill validates all code before creating a pull request.
17
28
 
18
29
  ## Usage
19
30
 
@@ -67,9 +78,9 @@ reflect the true state of what will be merged.
67
78
  </HARD-GATE>
68
79
  ```
69
80
 
70
- ## What This Command Does
81
+ ## What This Skill Does
71
82
 
72
- **Quick Start**: Run `bun run check` to execute the full validation pipeline (implemented in `scripts/validate.sh`). The npm script is named `check`; the workflow command is `/validate`. See individual steps below for details.
83
+ **Quick Start**: Run `bun run check` to execute the full validation pipeline (implemented in `scripts/validate.js`). The npm script is named `check`; the workflow command is `/validate`. See individual steps below for details.
73
84
 
74
85
  ### Step 1: Type Check
75
86
  ```bash
@@ -137,7 +148,7 @@ bun test # or: npm run test, jest, vitest, etc.
137
148
  > - Did you verify OWASP Top 10 mitigations, not just check a box?
138
149
  > - Are there edge cases or integration scenarios you haven't tested?
139
150
  >
140
- > **If unsure**: Re-read the `## Technical Research` section in `docs/plans/YYYY-MM-DD-<slug>-design.md`
151
+ > **If unsure**: Re-read the `## Technical Research` section in `docs/work/YYYY-MM-DD-<slug>/plan.md`
141
152
 
142
153
  ## On Validation Failure: 4-Phase Debug Mode
143
154
 
@@ -206,11 +217,12 @@ If you have attempted 3+ fixes without resolution:
206
217
 
207
218
  If any check fails:
208
219
  ```bash
209
- # Create Beads issue for problems
210
- bd create "Fix <issue-description>"
220
+ # Create Forge issue for problems
221
+ forge create "Fix <issue-description>"
211
222
 
212
223
  # Mark current issue as blocked
213
- bd update <current-id> --status blocked --comment "Blocked by <new-issue-id>"
224
+ forge update <current-id> --status blocked
225
+ forge comment <current-id> "Blocked by <new-issue-id>"
214
226
 
215
227
  # Output what needs fixing
216
228
  ```
@@ -230,13 +242,21 @@ until ALL FOUR show fresh output in this session:
230
242
  "Should pass", "was passing earlier", and "I'm confident" are not evidence.
231
243
  Run the commands. Show the output. THEN declare done.
232
244
 
233
- 5. Context check: Run `bash scripts/beads-context.sh validate <id>` and address any warnings
234
- 6. Stage transition: Run the following exit 0 confirmed:
235
- bash scripts/beads-context.sh stage-transition <id> validate ship \
236
- --summary "<all checks pass/fail summary>" \
237
- --decisions "<any failures diagnosed and fixed>" \
238
- --artifacts "<scripts and commands run>" \
239
- --next "<ship readiness notes>"
245
+ 5. Context check: confirm design + acceptance on the Forge issue (`forge issue show <id>`); if the beads-context helper is present, run `bash scripts/beads-context.sh validate <id>` and address any warnings
246
+ 6. Stage transition recorded (structured helper when present; kernel-native comment otherwise):
247
+ if [ -f scripts/beads-context.sh ]; then
248
+ bash scripts/beads-context.sh stage-transition <id> validate ship \
249
+ --summary "<all checks pass/fail summary>" \
250
+ --decisions "<any failures diagnosed and fixed>" \
251
+ --artifacts "<scripts and commands run>" \
252
+ --next "<ship readiness notes>"
253
+ else
254
+ forge comment <id> "Stage: validate complete → ready for ship
255
+ Summary: <all checks pass/fail summary>
256
+ Decisions: <any failures diagnosed and fixed>
257
+ Artifacts: <scripts and commands run>
258
+ Next: <ship readiness notes>"
259
+ fi
240
260
  </HARD-GATE>
241
261
  ```
242
262
 
@@ -262,8 +282,8 @@ Ready for /ship
262
282
  - validation.test.ts: Assertion failed
263
283
  - auth.test.ts: Timeout exceeded
264
284
 
265
- Beads issue created: bd-k8m3 "Fix validation test"
266
- ✓ Current issue marked: Blocked by bd-k8m3
285
+ Forge issue created: forge-k8m3 "Fix validation test"
286
+ ✓ Current issue marked: Blocked by forge-k8m3
267
287
 
268
288
  Fix issues then re-run /validate
269
289
  ```
@@ -271,20 +291,23 @@ Fix issues then re-run /validate
271
291
  ## Integration with Workflow
272
292
 
273
293
  ```
274
- Utility: /status Understand current context before starting
275
- Stage 1: /plan → Design intent → research → branch + worktree + task list
276
- Stage 2: /dev → Implement each task with subagent-driven TDD
277
- Stage 3: /validate Type check, lint, tests, security all fresh output (you are here)
278
- Stage 4: /ship Push + create PR
279
- Stage 5: /review → Address GitHub Actions, Greptile, SonarCloud
280
- Stage 6: /premerge → Update docs, hand off PR to user
281
- Stage 7: /verify → Post-merge CI check on main
294
+ Utility: /status -> Understand current context before starting
295
+
296
+ Default template:
297
+ /plan -> Optional default planner; external planners may satisfy /dev entry
298
+ /dev -> Implement each task with subagent-driven TDD
299
+ /validate -> Type check, lint, tests, security (you are here)
300
+ /ship -> Push + create PR
301
+ /review -> Address PR feedback
302
+ /verify -> Post-merge health check
303
+
304
+ Pre-merge gate: doc updates + CI-green checkpoint embedded in /ship and /review (not a separate stage).
282
305
  ```
283
306
 
284
307
  ## Tips
285
308
 
286
309
  - **All checks must pass**: Don't proceed to /ship with failures
287
310
  - **Security is mandatory**: OWASP Top 10 review required for all features
288
- - **Create issues for failures**: Track problems in Beads
311
+ - **Create issues for failures**: Track problems in the Forge issue tracker
289
312
  - **TDD helps**: Tests should already pass from /dev phase
290
313
  - **Fix before shipping**: Resolve all issues before creating PR