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
@@ -0,0 +1,94 @@
1
+ # Autonomy calibration & human gates — reference
2
+
3
+ Read this when you are calibrating how much to involve the human on a specific
4
+ issue, or when you need the exact gate commands and IDs. `SKILL.md` carries the
5
+ procedure; this file carries the lookup tables and the reasoning behind them.
6
+
7
+ ## The three human gates
8
+
9
+ Forge registers three human gates in the runtime graph as **approval-satisfied
10
+ events** (`requires: []`), additive to the evidence exit-gates. They are the
11
+ points where smith pauses and hands control to the human.
12
+
13
+ | Gate | Fires | What the human is deciding |
14
+ |------|-------|----------------------------|
15
+ | `gate.intent` | before planning / brainstorm | Do we agree on the goal, and on the autonomy tier smith proposed, before any design work? |
16
+ | `gate.plan-approval` | after the design doc + task DAG exist, before `dev` | Is this plan the right one (approve), or should it be redirected? |
17
+ | `gate.merge` | after `review`, before merge | Is the PR good to merge? |
18
+
19
+ The evidence exit-gates — `gate.plan-exit`, `gate.dev-exit`,
20
+ `gate.validate-exit`, `gate.ship-entry` — are a different kind: they are
21
+ satisfied by artifacts *inside* the stage skills (a design doc, TDD tests,
22
+ validation output), not by a human. Smith relies on each stage skill's own exit
23
+ checks for those and does not gate on them itself.
24
+
25
+ ### Why gates are events, not prose
26
+
27
+ Each approval is written to the issue's event stream as a durable
28
+ `gate.approved` / `gate.rejected` record. That is what makes a gated run
29
+ **resume-safe**: if smith is interrupted by a crash or a context compaction, it
30
+ re-reads the event with `check` / `status` on resume and knows whether it may
31
+ proceed — instead of re-asking the human or guessing from memory. Prose in a
32
+ transcript cannot survive a compaction; an event can.
33
+
34
+ ### Gate commands
35
+
36
+ ```bash
37
+ forge gate check <issue> <gate> # exit 0 iff the gate is DISABLED or APPROVED
38
+ forge gate approve <issue> <gate> [--reason] # human records approval (durable event)
39
+ forge gate reject <issue> <gate> --reason # human sends the work back
40
+ forge gate status <issue> [--json] # list this issue's gate events (who/when)
41
+ forge gate enable|disable <gate-id> # repo default toggle: workflow.gates.<id>.enabled
42
+ ```
43
+
44
+ `check` is the enforcement primitive smith calls before advancing past a gate. It
45
+ exits 0 when the gate is disabled for the repo *or* an approval event exists, so a
46
+ disabled gate simply falls through — that is how a lean tier skips a checkpoint.
47
+
48
+ ## Autonomy calibration — stakes → gate density
49
+
50
+ Match checkpoint density to what is at stake. A one-line docs fix and a risky
51
+ refactor need very different amounts of oversight: forcing the docs fix through a
52
+ full brainstorm wastes everyone's time, while letting the refactor run unattended
53
+ risks a large wrong turn. Smith reads the issue's **size × importance ×
54
+ complexity**, proposes a tier at `gate.intent`, and the human confirms or
55
+ overrides.
56
+
57
+ | Tier | Stakes read | Enforced human gates | Extra checkpoints |
58
+ |------|-------------|----------------------|-------------------|
59
+ | **Lean** | small · simple · low-importance (docs typo, one-line fix) | just `gate.merge`, or none under CI | skip the intent brainstorm; lean on CI + the evidence exit-gates |
60
+ | **Standard** (default) | an ordinary feature or bug | `gate.intent` · `gate.plan-approval` · `gate.merge` | the evidence exit-gates as configured |
61
+ | **High** | large · important · or complex (critical feature, risky refactor) | all three human gates, enabled | per-milestone / per-task human check-ins (pause + `forge comment`), an explicit pre-ship review pass |
62
+
63
+ ### How a tier is enacted
64
+
65
+ The tier maps to *which gate events are required* for this issue. The human enacts
66
+ add/drop with `forge gate enable|disable <gate-id>` (the repo default), and smith
67
+ enforces every *enabled* gate via `check`. Because approvals are per-issue events,
68
+ the human can add or drop a checkpoint mid-flight and smith re-reads it on the next
69
+ step — the calibration is not frozen at planning time.
70
+
71
+ ### Why uncertainty adds gates rather than removing them
72
+
73
+ Smith only *proposes* a tier; it never lowers oversight on its own. When its read
74
+ of size/importance/complexity is low-confidence, it defaults to **more**
75
+ checkpoints, because an unwanted extra approval is a few seconds of the human's
76
+ time, while a missed one can mean a large amount of wasted or wrong work. The
77
+ human always wins the final say.
78
+
79
+ ## Composition map — smith invents nothing
80
+
81
+ Every step is an existing skill or `forge` verb; smith only sequences them.
82
+
83
+ | Step | Composed skill / verb |
84
+ |------|-----------------------|
85
+ | Pick work | `triage-ready` (`forge issue ready` / `blocked` / `stats`) |
86
+ | Claim + prove ownership | `claim-safety` (`forge claim` → `forge issue owns`) |
87
+ | Human gates | `forge gate check` / `approve` / `reject` / `status` |
88
+ | Plan | `plan` (intent brainstorm → design doc → task DAG) |
89
+ | Build | `dev` (per-task implementer → spec → quality TDD) |
90
+ | Validate | `validate` (types · lint · security · tests) |
91
+ | Ship | `ship` (push + PR) |
92
+ | Review | `review` (address CI / bot feedback) |
93
+ | Verify | `verify` (post-merge health) |
94
+ | Release readiness | `forge release check --target <version> --json` |
@@ -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
  ]
@@ -0,0 +1,102 @@
1
+ ---
2
+ name: status
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
15
+ ---
16
+
17
+ Check where you are in the project and what work is in progress.
18
+
19
+ # Status Check
20
+
21
+ This skill helps you understand the current state of the project before starting new work.
22
+
23
+ ## Usage
24
+
25
+ ```bash
26
+ /status
27
+ ```
28
+
29
+ ## What This Skill Does
30
+
31
+ ## Step 0: Sync team state
32
+
33
+ ```bash
34
+ # Sync team state before showing status
35
+ forge sync || true
36
+ ```
37
+
38
+ ### Step 1: Smart Status (ranked issues with conflict detection)
39
+
40
+ ```bash
41
+ bash scripts/smart-status.sh
42
+ ```
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.
44
+
45
+ For full context on any issue: `forge show <id>`
46
+
47
+ ### Step 1b: Reconcile stale in-progress issues
48
+
49
+ Check if any in-progress issues were already merged but not closed (can happen if `/verify` was skipped or backup was restored from stale snapshot):
50
+
51
+ ```bash
52
+ # Detect default branch dynamically (prefer main over master)
53
+ DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's|refs/remotes/origin/||')
54
+ if [ -z "$DEFAULT_BRANCH" ]; then
55
+ if git rev-parse --verify main >/dev/null 2>&1; then DEFAULT_BRANCH="main"
56
+ elif git rev-parse --verify master >/dev/null 2>&1; then DEFAULT_BRANCH="master"
57
+ else echo "ERROR: No main or master branch found -- skipping stale reconciliation" >&2; DEFAULT_BRANCH=""; fi
58
+ fi
59
+
60
+ # For each in_progress issue, check if its PR was already merged
61
+ if [ -n "$DEFAULT_BRANCH" ]; then
62
+ forge list --status=in_progress --json 2>/dev/null | jq -r '.[].id' | while read id; do
63
+ # Search git log for the issue ID in commit messages (fixed-strings for literal match)
64
+ if git log --oneline --first-parent "$DEFAULT_BRANCH" --fixed-strings --grep="$id" | grep -q .; then
65
+ echo "STALE: $id -- found in git history, likely already merged"
66
+ fi
67
+ done
68
+ fi
69
+ ```
70
+
71
+ If stale issues are found, close them:
72
+ ```bash
73
+ forge close <id> --force --reason="Already merged -- detected during status reconciliation"
74
+ ```
75
+
76
+ ### Step 2: Review Recent Commits
77
+ ```bash
78
+ git log --oneline -10
79
+ ```
80
+
81
+ ### Step 3: Determine Context
82
+ - **New feature**: No active work, ready to start fresh
83
+ - **Continuing work**: In-progress issues found, resume where left off
84
+ - **Review needed**: Work marked complete, needs review/merge
85
+
86
+ ### Team context
87
+
88
+ Show current developer's active work and team overview:
89
+
90
+ ```bash
91
+ # Show my active issues
92
+ forge team workload --me 2>&1 || true
93
+
94
+ # One-line team summary
95
+ forge team dashboard 2>&1 | head -5 || true
96
+ ```
97
+
98
+ ## Next Steps
99
+
100
+ - **If starting new work**: Run `/plan <feature-name>`
101
+ - **If continuing work**: Resume with appropriate phase command
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
+ ]