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,111 @@
1
+ ---
2
+ name: issue-basics
3
+ description: >
4
+ Everyday single-issue CRUD over the `forge issue` verbs:
5
+ create/update/show/list/search/close/reopen/comment, set priority/labels/assignee, claim or
6
+ release one issue, add/remove dependency edges, plus backlog `stats`. Use for ANY routine
7
+ one-off issue op: "create an issue/bug/task for X", "update/edit issue <id>", "close or
8
+ reopen this issue", "comment a handoff note on <id>", "list/filter open bugs by
9
+ status/label/priority", "bump this to P1", "reassign to alice", "mark <id> blocked by <id>".
10
+ Also the parity floor migrating off a Beads-style tracker (label/reopen/delete map to forge
11
+ equivalents). Single-operation plumbing only. Does NOT choose, rank, or explain the next
12
+ issue to work on or why it's blocked (use triage-ready); does NOT run
13
+ claim-then-prove-lease-ownership safety (use claim-safety); does NOT drive an issue through
14
+ the plan->dev->validate->ship pipeline or open a PR (use smith or stage skills); does NOT
15
+ report the current stage or what's in flight (use status).
16
+ allowed-tools: Read, Bash(forge:*)
17
+ ---
18
+
19
+ # Issue basics — the CRUD floor
20
+
21
+ Everyday issue operations over the Forge kernel. Every command here is a real
22
+ `forge issue` verb (confirm with `forge issue --help`). The kernel is the single
23
+ source of truth — never hand-edit the issue store.
24
+
25
+ Every `--json` reply is the same envelope: `{ ok, schema_version, command, data,
26
+ next_commands }` on success, or `{ ok:false, error:{ message, exit_code } }` on
27
+ failure. **Gate on `ok`** — do not parse `data` until you confirm `ok:true`.
28
+
29
+ ## The core loop
30
+
31
+ | Need | Command |
32
+ |------|---------|
33
+ | Create an issue | `forge issue create --title "…" --type <task\|bug\|epic\|decision>` |
34
+ | Inspect one issue | `forge issue show <id> [--json]` |
35
+ | List / filter issues | `forge issue list [--status … --type … --priority … --label …] [--json]` |
36
+ | Full-text search | `forge issue search "…" [--json]` |
37
+ | Backlog counts | `forge issue stats [--json]` |
38
+ | Claim work (DB-enforced lease) | `forge issue claim <id>` |
39
+ | Release a claim | `forge issue release <id>` |
40
+ | Update fields | `forge issue update <id> [flags]` |
41
+ | Add a handoff note | `forge issue comment <id> "…"` |
42
+ | Close (one or many) | `forge issue close <id...> --reason "…"` |
43
+ | Dependencies | `forge issue dep add\|remove <id> <blocks-id>` |
44
+
45
+ ## Create — the flags that matter
46
+
47
+ ```bash
48
+ forge issue create --title "Add rate limiting" --type task \
49
+ --priority P1 --label "feature,api,security" --assignee alice \
50
+ --acceptance "429 returned after N req/min; covered by a test"
51
+ ```
52
+
53
+ | Flag | Meaning | Default |
54
+ |------|---------|---------|
55
+ | `--title "…"` | Human title (a bare leading positional also works) | minted id |
56
+ | `--type <…>` | `task` · `bug` · `epic` · `decision` | `task` |
57
+ | `--priority <…>` | `P0`..`P4` (or bare `0`..`4`); `P0` is highest | unset |
58
+ | `--label "a,b"` | Comma-separated set — one flag, split on `,` (repeats do NOT accumulate) | none |
59
+ | `--body "…"` | Long description (`--description` is an accepted alias) | empty |
60
+ | `--assignee <who>` | Persistent assignee | unset |
61
+ | `--acceptance "…"` | Acceptance criteria (`--design`, `--notes` also persist) | unset |
62
+ | `--parent <id>` | Parent/epic id | none |
63
+
64
+ `--status` defaults to `open`. Status vocabulary: `open` · `in_progress` ·
65
+ `review` · `done` · `cancelled`. Unlike `--priority` and `--status` (which reject
66
+ unknown values), `--type` is stored verbatim — a non-canonical value like
67
+ `feature` is accepted without error but carries no kernel behaviour, so stick to
68
+ the four canonical types. Epics and decisions are excluded from the ready queue
69
+ (non-claimability is a queue convention, not enforcement — `forge issue claim`
70
+ currently returns `ok:true` on them too).
71
+
72
+ ## Update — same field flags, plus close
73
+
74
+ `forge issue update <id>` takes `--status`, `--title`, `--body`/`--description`,
75
+ `--priority`, `--label` (reparents the whole set), `--parent`, `--assignee`,
76
+ `--acceptance`, `--design`, `--notes`. `forge issue close <id> --reason "…"`
77
+ records the reason on the close event and accepts multiple ids in one call.
78
+
79
+ ## Migrating from a Beads-style tracker — verb disposition
80
+
81
+ Nothing you relied on silently disappears; a few verbs map onto a `forge` flag or
82
+ are intentionally unsupported:
83
+
84
+ | Old verb | Forge equivalent |
85
+ |----------|------------------|
86
+ | `label` (add/remove) | **No subcommand** — pass the full set via `--label "a,b"` on `create`/`update` (last-value-wins). |
87
+ | `reopen` | `forge issue update <id> --status open`. |
88
+ | `delete` | **Unsupported by design** — the kernel is append-only/event-sourced. Use `forge issue close <id> --reason "…"` instead. |
89
+
90
+ ## Reliability
91
+
92
+ - **Check `ok` before trusting output.** On `ok:false`, read `error.message` and
93
+ fix the input rather than retrying blindly.
94
+ - **Claim before you mutate shared work.** `forge issue claim <id>` takes a
95
+ DB-enforced lease; hand off to the `claim-safety` procedure before acting on a
96
+ claimed issue you intend to change. `forge issue release <id>` if you abandon it.
97
+ - **Record decisions as comments, not memory.** `forge issue comment <id> "…"`
98
+ survives the session; scratch notes do not.
99
+
100
+ ## Fork points
101
+
102
+ Editable conventions — set these once for your team and this skill enforces them.
103
+ It is a canonical source you fork, not a fixed policy.
104
+
105
+ | Knob | Default | How to change |
106
+ |------|---------|---------------|
107
+ | **Default type** | `task` (kernel default) | Decide your create convention — e.g. always pass `--label feature` for user-facing work (feature is a label, not a canonical type), `--type bug` for regressions. |
108
+ | **Default priority** | unset | Adopt a house scale (e.g. new work opens at `P2`, incidents at `P0`) and always pass `--priority`. |
109
+ | **Fields required on create** | `--title` only | Require `--acceptance` (and `--label`/`--assignee`) on every create so issues are actionable from birth. |
110
+ | **Id / reference convention** | kernel-minted ids | Standardize how you cite issues in commits/PRs (e.g. `Closes <id>`) and whether you pass an explicit `--id`. |
111
+ | **Label taxonomy** | free-form | Pin an allowed label set your team agrees on and pass it consistently via `--label "a,b"`. |
@@ -0,0 +1,46 @@
1
+ [
2
+ {
3
+ "query": "Open a bug ticket for the checkout 500 error and mark it P0",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "Add a note to forge-abc123 documenting why we chose JWT",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "Show me all open issues tagged backend",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "Reopen forge-77, it wasn't actually fixed",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Add a dependency so forge-12 is blocked by forge-9",
20
+ "should_trigger": true
21
+ },
22
+ {
23
+ "query": "Claim forge-abc so I can start on it",
24
+ "should_trigger": true
25
+ },
26
+ {
27
+ "query": "What's the next ready issue I should pick up?",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Explain why forge-55 is still blocked and what to unblock first",
32
+ "should_trigger": false
33
+ },
34
+ {
35
+ "query": "Claim this issue and confirm I hold the lease before I change anything",
36
+ "should_trigger": false
37
+ },
38
+ {
39
+ "query": "Drive forge-30 all the way through to a merged PR",
40
+ "should_trigger": false
41
+ },
42
+ {
43
+ "query": "Where am I in the workflow right now and what's in flight?",
44
+ "should_trigger": false
45
+ }
46
+ ]
@@ -0,0 +1,166 @@
1
+ ---
2
+ name: kernel
3
+ description: >
4
+ Forge kernel — umbrella index/router for a Forge project. Reach for this FIRST when
5
+ orienting rather than executing: at session start, when you need the map of how the system
6
+ fits together, or when unsure WHICH skill or `forge` verb a task belongs to. It indexes
7
+ `smith` (end-to-end orchestrator), the stage ladder (plan → dev → validate → ship → review →
8
+ verify), the utility/issue skills, and the day-to-day `forge` CLI verbs. Trigger on "how
9
+ does the Forge workflow work", "which forge command or skill for X", "I'm new here, how is
10
+ Forge set up", or "should this be a Forge issue or a TodoWrite". Index layer only — hand off
11
+ the doing: rank/pick the next ready issue → `triage-ready`; current stage / "where am I" /
12
+ active or stale work → `status`; create/update/close/search one issue → `issue-basics`;
13
+ claim-then-prove ownership before mutating → `claim-safety`; drive one issue from plan to a
14
+ merged PR under gates → `smith`; token-bounded state for the Hermes harness →
15
+ `hermes-forge`.
16
+ allowed-tools: Read, Bash(forge:*)
17
+ ---
18
+
19
+ # Forge kernel surface
20
+
21
+ Forge is a TDD-first workflow harness. The agent-facing surface is **skills + the
22
+ `forge` CLI** — there are no slash-command files. This umbrella skill is the
23
+ entry point: it tells you which stage skill to use and which `forge` verb runs
24
+ each day-to-day operation. Every skill is a thin guide over a real `forge`
25
+ command; the CLI remains the implementation, the skills are the surface.
26
+
27
+ ## Stage skills (the TDD ladder)
28
+
29
+ The default workflow is a configurable ladder of per-stage skills. Use the whole
30
+ flow when it fits, or invoke an individual stage when the active plan permits a
31
+ smaller path.
32
+
33
+ | Stage | Skill | Purpose |
34
+ |-------|-------|---------|
35
+ | utility | `status` | Check current context, active work, recent completions |
36
+ | 1 | `plan` | Design intent → research → branch + worktree + task list |
37
+ | 2 | `dev` | Subagent-driven TDD per task (implementer → spec → quality review) |
38
+ | 3 | `validate` | Type check, lint, code review, security, tests — all fresh output |
39
+ | 4 | `ship` | Push branch and open the PR with design-doc reference |
40
+ | 5 | `review` | Address ALL PR feedback (GitHub Actions, Greptile, SonarCloud) |
41
+ | 6 | `verify` | Post-merge health check (CI on main, close issues) |
42
+
43
+ **Pre-merge gate** (not a numbered stage): before merge, finish the doc updates on
44
+ the feature branch and confirm CI is green, then hand off the PR for manual merge.
45
+ The gate is embedded in `ship` and `review` — it is not a standalone skill.
46
+
47
+ Utility skills outside the linear ladder: `research` (deep web research),
48
+ `rollback` (safe revert operations), `sonarcloud` (code-quality queries),
49
+ `shepherd` (cross-harness PR monitoring).
50
+
51
+ Procedure skills (reusable operations any stage/agent embeds): `claim-safety`
52
+ (claim an issue and PROVE you own the lease via `forge issue owns <id>` before
53
+ mutating it — a claim returning ok:true does not by itself prove ownership).
54
+
55
+ ```
56
+ status → plan → dev → validate → ship → review → verify
57
+ ```
58
+
59
+ ## Orchestrator super-skill
60
+
61
+ `smith` is the flagship: a thin orchestrator that COMPOSES the skills above into
62
+ the right path for a piece of work — pick (`triage-ready`) → claim
63
+ (`claim-safety`) → `plan` → `dev` → `validate` → `ship` → `review` → `verify` —
64
+ driving autonomously between human gates and pausing AT them. The human gates are
65
+ durable kernel EVENTS (`forge gate check|approve|reject|status <issue> <gate>`;
66
+ gates `gate.intent` · `gate.plan-approval` · `gate.merge`), so a gated run is
67
+ resume-safe across compaction. During planning `smith` calibrates how many gates
68
+ the work needs from its size × importance × complexity and proposes that tier at
69
+ the intent gate (the human confirms or overrides). Reach for `smith` to run a
70
+ whole issue end to end under human control; invoke an individual stage skill to
71
+ run a single step.
72
+
73
+ ## Kernel-native skills
74
+
75
+ Read-and-repair skills that work directly against the kernel's issue store. They
76
+ complement the ladder: reach for them to decide *what* to do and to run the
77
+ everyday issue operations, then route into a stage skill to execute.
78
+
79
+ | Skill | Purpose |
80
+ |-------|---------|
81
+ | `triage-ready` | Read-only "what should I work on" — ranks and *explains* the ready queue via `forge issue ready` / `blocked` / `stats` (never `board`), then hands off the pick. |
82
+ | `issue-basics` | The everyday CRUD floor — create/update/claim/release/comment/close/show/list/search/stats over the `forge issue` verbs, plus the label/reopen/delete disposition for teams migrating in. |
83
+
84
+ ## Day-to-day verbs (the `forge` CLI)
85
+
86
+ The kernel verbs are the operations you reach for inside any stage — find work,
87
+ claim it, fix in place, query the board, orient. They are grouped in four
88
+ families. Run them through Bash; never hand-edit the issue store.
89
+
90
+ ### A — Issue lifecycle (the core loop)
91
+
92
+ | Need | Command |
93
+ |------|---------|
94
+ | Find ready work | `forge ready [--json]` |
95
+ | Inspect an issue | `forge show <id> [--json]` |
96
+ | List / filter issues | `forge list [--status …] [--json]` |
97
+ | Create an issue | `forge create --title "…" --type <feature\|bug\|task>` |
98
+ | Claim work (DB-enforced lease) | `forge claim <id>` |
99
+ | Prove you own the lease | `forge issue owns <id>` — exit 0 iff you hold the live lease (see the `claim-safety` skill) |
100
+ | Release a claim | `forge release <id>` |
101
+ | Update fields | `forge update <id> --priority <n>` (etc.) |
102
+ | Add a handoff comment | `forge comment <id> "…"` |
103
+ | Close an issue | `forge close <id> --reason "…"` |
104
+ | Dependencies | `forge issue dep add\|remove <id> <id>` |
105
+ | Search / stats | `forge issue search "…"` · `forge issue stats` |
106
+ | Blocked work | `forge blocked` |
107
+
108
+ ### B — Memory / knowledge
109
+
110
+ `forge remember <note> [--tag <label>]... [--json]` and `forge recall` are live —
111
+ they persist and retrieve project-memory notes from a file-backed store. Only
112
+ `forge knowledge search` is not on the CLI yet; until it lands, capture durable
113
+ decisions as `forge remember` notes or issue comments (`forge comment`).
114
+
115
+ ### C — Board / planning / admin
116
+
117
+ | Need | Command |
118
+ |------|---------|
119
+ | Team board | `forge board [--json]` |
120
+ | Export the issue projection | `forge export [--import]` |
121
+ | Release-readiness gate | `forge release check --target <ref>` |
122
+ | Sync team state | `forge sync` |
123
+
124
+ ### D — Orientation / session
125
+
126
+ | Need | Command |
127
+ |------|---------|
128
+ | Prime a session | `forge prime [--json]` |
129
+ | Full orientation | `forge orient [--json]` |
130
+ | Recap an issue / context | `forge recap [<id>] [--json]` |
131
+
132
+ ## Forge issues vs. TodoWrite — decision table
133
+
134
+ | Situation | Use |
135
+ |-----------|-----|
136
+ | Work spans sessions, has blockers, or needs recovery after compaction | **Forge issues** (`forge create`/`claim`/`close`) |
137
+ | Cross-agent or cross-worktree coordination | **Forge issues** (DB-enforced leases) |
138
+ | Durable decisions, design rationale, handoff notes | **Forge issue comments** |
139
+ | Ephemeral, single-session checklist for the current task | **TodoWrite** |
140
+ | Steps you will finish and discard within this turn | **TodoWrite** |
141
+
142
+ When in doubt, prefer a Forge issue: it survives the session and is visible to
143
+ the team. TodoWrite is for scratch tracking only.
144
+
145
+ ## Session protocol
146
+
147
+ 1. **Orient first.** Start with the `status` skill (or `forge prime` /
148
+ `forge orient`) — never reconstruct project state from raw files.
149
+ 2. **Claim before you build — then prove it.** `forge claim <id>` takes the lease;
150
+ one issue at a time. A claim's ok:true does not by itself prove ownership, so
151
+ confirm with `forge issue owns <id>` before working and again before
152
+ `close`/`release` (the `claim-safety` skill). `forge release <id>` if you abandon it.
153
+ 3. **Work the ladder.** `plan` → `dev` → `validate` → `ship` → `review` →
154
+ `verify`, skipping stages only when the plan allows. The pre-merge doc gate
155
+ runs inside `ship` and `review` before merge — it is not a separate stage.
156
+ 4. **Record evidence as you go.** Progress and decisions go to
157
+ `forge comment <id> "…"`, not to memory.
158
+ 5. **Hand off cleanly.** Close completed issues (`forge close <id> --reason …`)
159
+ and `forge sync` so the team sees the result.
160
+
161
+ ## Core principles
162
+
163
+ - **TDD-first** — write tests before implementation (RED → GREEN → REFACTOR).
164
+ - **Research-first** — understand before building; document decisions.
165
+ - **Security built-in** — OWASP Top 10 analysis for every feature.
166
+ - **Documentation progressive** — update at each stage, verify at the end.
@@ -0,0 +1,50 @@
1
+ [
2
+ {
3
+ "query": "I just cloned this Forge repo and I'm not sure how any of it works — give me the lay of the land: what's the workflow, what skills exist, and where do I even start?",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "There are a bunch of forge skills and I can't tell which one to use for what — lay out how they fit together and when I'd reach for each.",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "Which forge CLI command adds a dependency between two issues, and what's the verb for proving I hold a claim? Just the reference, don't run anything.",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "Is this small cleanup worth filing as a Forge issue, or should I just throw it on a TodoWrite checklist for this session?",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Walk me through the Forge stage ladder from planning to post-merge verify and what each stage owns.",
20
+ "should_trigger": true
21
+ },
22
+ {
23
+ "query": "Give me the reference of all the day-to-day forge issue and board verbs — I want the index, not to execute a command yet.",
24
+ "should_trigger": true
25
+ },
26
+ {
27
+ "query": "What should I pick up next? Rank the ready queue and tell me the top unblocked issue and why.",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Where am I in the workflow right now, what's my active work, and has anything gone stale?",
32
+ "should_trigger": false
33
+ },
34
+ {
35
+ "query": "Create a bug issue titled 'login times out after 30s', priority 1, and link it under the auth epic.",
36
+ "should_trigger": false
37
+ },
38
+ {
39
+ "query": "Claim forge-4h9 for me and confirm I actually hold the lease before I start editing.",
40
+ "should_trigger": false
41
+ },
42
+ {
43
+ "query": "Take forge-7c2 all the way from planning through a merged PR, pausing for my approval at the plan and the merge.",
44
+ "should_trigger": false
45
+ },
46
+ {
47
+ "query": "In the Hermes harness, give me the token-bounded project state to work from — treat forge orient as the source of truth.",
48
+ "should_trigger": false
49
+ }
50
+ ]
@@ -0,0 +1,102 @@
1
+ ---
2
+ name: memory
3
+ description: >
4
+ Capture and retrieve durable project memory the right way -- and, when the graph
5
+ backend is enabled, use temporal knowledge-graph memory. Reach for this whenever
6
+ you are about to write down a lasting fact, decision, convention, or gotcha ("remember
7
+ that...", "note for later", "save this"), or when you need to recall what was learned
8
+ before ("what did we decide about X", "have we seen this"). It explains WHEN to use
9
+ `forge remember` / `forge recall` versus a per-issue `forge issue comment`, how the
10
+ two public backends work (local JSONL default, opt-in Graphiti; kernel is internal-only),
11
+ and -- when Graphiti is enabled -- how to add episodes and search facts via the graphiti-memory MCP tools
12
+ (add_memory, search_memory_facts, search_nodes) with group_id scoping and provenance.
13
+ The local backend is always the offline floor. Not for: issue create/list/close ops
14
+ (issue-basics), workflow status (status), or transient scratch notes.
15
+ allowed-tools: Bash, Read, Grep, Glob
16
+ ---
17
+
18
+ # Memory
19
+
20
+ Durable project memory for agents. This skill teaches you where a fact belongs,
21
+ which backend is active, and how to use graph memory when it is enabled.
22
+
23
+ ## The one rule
24
+
25
+ Persistent, project-level knowledge goes to **`forge remember`** — never to a
26
+ `MEMORY.md` file, never to a scratch note that dies with the session. Retrieve it
27
+ with **`forge recall`**. Both verbs route through one backend router; the default
28
+ is a local file store, so they always work offline with zero setup.
29
+
30
+ ## When to use what
31
+
32
+ - **`forge remember "<note>"`** — a lasting fact that outlives this issue: a
33
+ convention, a decision and its rationale, a non-obvious gotcha, an environment
34
+ quirk, a "we tried X, it failed because Y". Add `--tag <label>` for retrieval.
35
+ - **`forge recall "<query>"`** — before assuming, check what is already known.
36
+ Search first; do not re-derive knowledge the project already recorded.
37
+ - **`forge issue comment <id> "<note>"`** — progress or context that belongs to
38
+ ONE issue's lifecycle (status, a blocker, a hand-off). Issue-scoped, not global.
39
+ - **Rule of thumb:** would a future session on a *different* issue want this? →
40
+ `remember`. Is it only meaningful inside this issue? → `issue comment`.
41
+
42
+ ## Backends (config: `memory.backend` in `.forge/config.yaml`)
43
+
44
+ The router picks a backend; `remember`/`recall` behave the same from your side.
45
+ The public backends are exactly two:
46
+
47
+ - **`local`** (DEFAULT) — flat JSONL at `.forge/memory/notes.jsonl`. Instant,
48
+ offline, no dependencies, travels with the repo in git. This is the floor and
49
+ is always available.
50
+ - **`graphiti`** — opt-in temporal **knowledge graph** served to agents over MCP.
51
+ Richer recall (relational, temporal, provenance-tracked) but needs a graph DB
52
+ and an LLM. See "Graph memory" below. When selected, the CLI still writes to
53
+ the local store as a safety floor; the graph is consumed by agents via MCP.
54
+
55
+ Check the active backend with `forge doctor` — it reports the memory backend and,
56
+ for graphiti, whether the configured MCP server path is present (read-only,
57
+ non-fatal).
58
+
59
+ ## Graph memory (when `memory.backend: graphiti`)
60
+
61
+ Graphiti turns notes into a **bi-temporal knowledge graph**: you add *episodes*
62
+ (text/JSON), an LLM extracts *entities* (nodes) and *facts* (edges), and every
63
+ fact keeps two timelines — when it was true in the world and when the system
64
+ learned it. Superseded facts are **invalidated, not deleted**, so you can ask
65
+ "what is true now" or "what was true at time T", with a pointer back to the
66
+ source episode (provenance).
67
+
68
+ When enabled and the `graphiti-memory` MCP server is wired into your agent, use
69
+ its tools directly:
70
+
71
+ - **`add_memory`** — record a durable fact/decision as an episode. Pass a clear
72
+ `name`, the content, and the project `group_id` (namespaces one project's
73
+ memory). Ingestion is LLM-backed, so treat it as async — confirm it queued,
74
+ don't block on it. Prefer this for facts that *evolve* (status, ownership,
75
+ versions, preferences).
76
+ - **`search_memory_facts`** — retrieve relationships/facts (edges) for a query,
77
+ with validity windows. Use this before assuming a fact; it returns *current*
78
+ truth plus history.
79
+ - **`search_nodes`** — find entities (people, services, components) and their
80
+ summaries.
81
+ - Scope every call with the project's `group_id` so memory stays per-project.
82
+ - Respect provenance: facts trace back to episodes — cite them when it matters.
83
+
84
+ If graph memory is unreachable or unconfigured, fall back to `forge remember`
85
+ (local) — never lose the note. `forge doctor` surfaces a clear error when the
86
+ graphiti backend is selected but not configured.
87
+
88
+ ## Good memory hygiene
89
+
90
+ - Write **atomic** facts, not essays — one decision or gotcha per note.
91
+ - Include the **why**, not just the what (rationale ages better than commands).
92
+ - Tag consistently so recall is precise.
93
+ - Recall **before** you act on an assumption; record **after** you learn something.
94
+
95
+ ## Setup pointers
96
+
97
+ - Local is the default — nothing to install.
98
+ - To opt into graph memory: set `memory.backend: graphiti` (plus a
99
+ `memory.graphiti` block) in `.forge/config.yaml`, then run FalkorDB + the
100
+ Graphiti MCP server. Wiring the server into each agent's MCP config is a
101
+ follow-up step. Full how-to (graph DB, LLM/embedder, privacy/cost):
102
+ `docs/guides/memory-backends.md`. Design rationale: `docs/work/2026-07-06-graphiti-memory/research.md`.
@@ -1,17 +1,18 @@
1
1
  ---
2
2
  name: parallel-deep-research
3
3
  description: >
4
- Produces comprehensive research reports that go far beyond what built-in web
5
- search can achieve. Sends research tasks to Parallel AI's pro/ultra processors
6
- which spend 3-25 minutes autonomously crawling, reading, and synthesizing dozens
7
- of sources returning structured reports with citations. Built-in WebSearch
8
- can only run a few queries; this skill runs an entire research pipeline externally.
9
- No binary install requires PARALLEL_API_KEY in .env.local. ALWAYS use this
10
- skill instead of doing multiple WebSearch calls when the user needs a comprehensive
11
- report, market analysis, competitive landscape, industry deep-dive, strategic
12
- recommendations, or multi-source synthesis. This is the RIGHT tool for any
13
- research task that would require more than 3-4 web searches to answer properly.
14
- Also trigger during /plan Phase 2 research and /research workflows.
4
+ Heavyweight EXTERNAL research reports market, industry, competitive, strategic via
5
+ Parallel AI's paid pro/ultra processors that crawl and synthesize dozens of sources into one
6
+ long cited report. Use when the user wants a market analysis, competitive landscape,
7
+ industry deep-dive, multi-vendor/technology comparison, strategic recommendations, or market
8
+ sizing/growth outlook any multi-source synthesis needing more than 3-4 web searches.
9
+ Typical phrasings: "market analysis of X", "competitive landscape comparing A/B/C",
10
+ "industry deep-dive on...", "deep research report on...", "strategic report with predictions
11
+ for 2027". WRONG tool for quick facts, a single-page fetch, one-URL scraping, or small
12
+ structured-field extraction — use built-in WebSearch/WebFetch. Also NOT the Forge RESEARCH
13
+ or PLAN stage: "run the research stage", "do Phase 2", or codebase/OWASP/DRY investigation
14
+ into a design doc route to `research` and `plan` (they may INVOKE this skill). Requires
15
+ PARALLEL_API_KEY.
15
16
  compatibility: Requires PARALLEL_API_KEY in .env.local. Uses curl. Takes 3-25 minutes.
16
17
  metadata:
17
18
  author: harshanandak
@@ -22,6 +23,8 @@ metadata:
22
23
 
23
24
  Comprehensive research reports with multi-source synthesis. Use `pro` (3-9 min, $0.10) or `ultra` (5-25 min, $0.30) for deep analysis.
24
25
 
26
+ > **Safety:** The `input` is transmitted to Parallel AI's external service and may be logged or retained. Never include secrets, API keys/tokens, PII, or private/proprietary repo content — send only information safe to share with a third party.
27
+ >
25
28
  > **CLI alternative (recommended)**: Install `parallel-cli` for official skill:
26
29
  > `npx skills add parallel-web/parallel-agent-skills --skill parallel-deep-research`
27
30
 
@@ -1,62 +1,46 @@
1
1
  [
2
2
  {
3
- "query": "I need a comprehensive market analysis of the developer tools space — cover the top 20 players, their funding, market positioning, and where the industry is heading over the next 3-5 years. Include data from Gartner, Forrester, and any recent VC investment reports",
3
+ "query": "I need a comprehensive market analysis of the developer-tools space — top 20 players, their funding, market positioning, and where the industry is heading over the next 3-5 years, pulling from Gartner, Forrester, and recent VC investment reports",
4
4
  "should_trigger": true
5
5
  },
6
6
  {
7
- "query": "Write a deep research report on the state of WebAssembly adoption in production — synthesize case studies from companies using WASM, performance benchmarks vs native code, ecosystem maturity analysis, and strategic recommendations for when to adopt it",
7
+ "query": "Write a deep research report on WebAssembly adoption in production — synthesize company case studies, performance benchmarks vs native code, ecosystem maturity, and clear recommendations for when to adopt it",
8
8
  "should_trigger": true
9
9
  },
10
10
  {
11
- "query": "Our CTO wants a competitive landscape analysis comparing Convex, Supabase, Firebase, and PlanetScale for our backend rewrite. Need comprehensive feature comparison, pricing analysis at our scale (50K DAU), community health metrics, and risk assessment for each",
11
+ "query": "Competitive landscape comparing Convex, Supabase, Firebase, and PlanetScale for our backend rewrite full feature comparison, pricing at 50K DAU, community-health metrics, and a per-vendor risk assessment",
12
12
  "should_trigger": true
13
13
  },
14
14
  {
15
- "query": "Create a strategic report on the AI code generation market — analyze GitHub Copilot, Cursor, Claude Code, and emerging competitors. Cover adoption rates, developer satisfaction surveys, enterprise pricing trends, and predictions for 2027",
15
+ "query": "Give me an industry deep-dive on the observability market — Datadog vs Grafana Cloud vs New Relic across features, pricing, scalability, and OpenTelemetry support, with customer migration stories and TCO analysis for a 500-node cluster",
16
16
  "should_trigger": true
17
17
  },
18
18
  {
19
- "query": "I'm doing /plan Phase 2 research — produce a comprehensive analysis of event-driven architecture patterns in microservices, covering Kafka vs RabbitMQ vs NATS, with production case studies, failure mode analysis, and recommendations for our 100K events/sec throughput requirement",
19
+ "query": "For our architecture decision, produce a heavily-sourced report on event-driven patterns Kafka vs RabbitMQ vs NATS at 100K events/sec, with production case studies and failure-mode analysis",
20
20
  "should_trigger": true
21
21
  },
22
22
  {
23
- "query": "Write an industry deep-dive into the observability market compare Datadog, Grafana Cloud, and New Relic across features, pricing, scalability, and OpenTelemetry support. Include customer migration stories and TCO analysis for a 500-node cluster",
24
- "should_trigger": true
25
- },
26
- {
27
- "query": "Research and synthesize the current state of edge computing for real-time AI inference — cover hardware options, cloud provider edge offerings, latency benchmarks, and case studies from autonomous vehicles and IoT deployments",
28
- "should_trigger": true
29
- },
30
- {
31
- "query": "Quick search: what's the current price of Bitcoin and what were Anthropic's latest announcements?",
32
- "should_trigger": false
33
- },
34
- {
35
- "query": "Find the official migration guide URL for ESLint's new flat config format",
36
- "should_trigger": false
37
- },
38
- {
39
- "query": "Search for recent blog posts about Bun 2.0 features and release date",
23
+ "query": "Quick what's the current price of Bitcoin and what were Anthropic's latest announcements?",
40
24
  "should_trigger": false
41
25
  },
42
26
  {
43
- "query": "Go to https://stripe.com/docs/api and extract the authentication section with all the code examples",
27
+ "query": "Go to https://stripe.com/docs/api and extract the authentication section with all its code examples",
44
28
  "should_trigger": false
45
29
  },
46
30
  {
47
- "query": "Scrape https://openai.com/pricing and extract the per-token costs for each model tier",
31
+ "query": "Scrape https://openai.com/pricing and pull out the per-token cost for each model tier",
48
32
  "should_trigger": false
49
33
  },
50
34
  {
51
- "query": "Build a structured company profile for Databricksreturn JSON with founding year, funding rounds, valuation, employee count, and tech stack",
35
+ "query": "Run the /research stage for the auth-refactor feature investigate how our codebase currently handles session tokens, flag OWASP and DRY concerns, and write the findings into the design doc",
52
36
  "should_trigger": false
53
37
  },
54
38
  {
55
- "query": "Fix the TypeScript compilation error in src/services/auth.tsit's complaining about missing type for the session token",
39
+ "query": "Kick off the plan stage for adding rate limiting brainstorm the design one question at a time, then set up the branch, worktree, and task list",
56
40
  "should_trigger": false
57
41
  },
58
42
  {
59
- "query": "Add unit tests for the rate limiter middleware in src/middleware/rateLimit.ts",
43
+ "query": "Fix the TypeScript compilation error in src/services/auth.ts about the missing session-token type",
60
44
  "should_trigger": false
61
45
  }
62
46
  ]