forge-workflow 0.0.10 → 0.1.0-beta.3

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 (468) 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 +82 -5
  5. package/.forge/hooks/forge-native-hook.js +431 -0
  6. package/.forge/protected-paths.yaml +157 -0
  7. package/AGENTS.md +151 -61
  8. package/CHANGELOG.md +709 -0
  9. package/CLAUDE.md +9 -118
  10. package/QUICKSTART.md +175 -0
  11. package/README.md +275 -365
  12. package/bin/forge-cmd.js +120 -9
  13. package/bin/forge-preflight.js +26 -5
  14. package/bin/forge.js +532 -489
  15. package/docs/INDEX.md +93 -0
  16. package/docs/PROJECT_DESIGN.md +685 -0
  17. package/docs/architecture/index.md +66 -0
  18. package/docs/architecture/notes/README.md +35 -0
  19. package/docs/architecture/subsystems/README.md +46 -0
  20. package/docs/forge/TOOLCHAIN.md +670 -0
  21. package/docs/forge/VALIDATION.md +82 -0
  22. package/docs/{AGENT_INSTALL_PROMPT.md → guides/AGENT_INSTALL_PROMPT.md} +3 -3
  23. package/docs/guides/BEADS_GITHUB_SYNC.md +32 -0
  24. package/docs/{ENHANCED_ONBOARDING.md → guides/ENHANCED_ONBOARDING.md} +16 -12
  25. package/docs/guides/GREPTILE_SETUP.md +46 -0
  26. package/docs/guides/MANUAL_REVIEW_GUIDE.md +58 -0
  27. package/docs/guides/MIGRATION.md +56 -0
  28. package/docs/guides/SETUP.md +121 -0
  29. package/docs/guides/SUPPORT.md +190 -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 +214 -0
  35. package/docs/reference/DECISION_DRIFT_GUARDS.md +97 -0
  36. package/docs/{EXAMPLES.md → reference/EXAMPLES.md} +7 -5
  37. package/docs/reference/FORGE_KERNEL_STORAGE_MODEL.md +135 -0
  38. package/docs/reference/HERMES_INTEGRATION.md +118 -0
  39. package/docs/reference/INSIGHTS_RECAP.md +63 -0
  40. package/docs/reference/INSTALL.md +164 -0
  41. package/docs/reference/KERNEL_TAXONOMY_VALIDATION.md +161 -0
  42. package/docs/reference/PROTECTED_PATH_MANIFEST.md +25 -0
  43. package/docs/reference/RELEASE.md +68 -0
  44. package/docs/reference/RESEARCH_TEMPLATE.md +292 -0
  45. package/docs/{ROADMAP.md → reference/ROADMAP.md} +12 -9
  46. package/docs/reference/SKILLS.md +35 -0
  47. package/docs/reference/STATUS_BOARD.md +80 -0
  48. package/docs/reference/TEMPLATES.md +106 -0
  49. package/docs/{TOOLCHAIN.md → reference/TOOLCHAIN.md} +62 -47
  50. package/docs/reference/VALIDATION.md +82 -0
  51. package/docs/reference/agent-permissions.md +169 -0
  52. package/docs/reference/beads-to-kernel-migration-ux.md +61 -0
  53. package/docs/reference/control-plane-guarantees.md +125 -0
  54. package/docs/reference/dependency-chain.md +331 -0
  55. package/docs/reference/forge-kernel-issue-command-contract.md +161 -0
  56. package/docs/reference/forge-kernel-schema.md +72 -0
  57. package/docs/reference/kernel-conflict-evaluators.md +27 -0
  58. package/docs/reference/patch-md-format.md +77 -0
  59. package/docs/reference/protected-state-surfaces.md +59 -0
  60. package/docs/reference/shepherd.md +155 -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/activation/ensure-forge-home.js +135 -0
  67. package/lib/adapter-cli.js +307 -0
  68. package/lib/adapters/beads-issue-adapter.js +127 -0
  69. package/lib/adapters/beads-kernel-compat.js +1109 -0
  70. package/lib/adapters/greptile-review-adapter.js +141 -0
  71. package/lib/adapters/kernel-issue-adapter.js +101 -0
  72. package/lib/adapters/pr-state-adapter.js +484 -0
  73. package/lib/adoption-profiles.js +139 -0
  74. package/lib/agents/README.md +2 -6
  75. package/lib/agents/claude.plugin.json +3 -8
  76. package/lib/agents/codex.plugin.json +9 -1
  77. package/lib/agents/cursor.plugin.json +2 -6
  78. package/lib/agents/hermes.plugin.json +22 -0
  79. package/lib/agents-config.js +39 -1236
  80. package/lib/audit-evidence.js +282 -0
  81. package/lib/beads-detect.js +60 -0
  82. package/lib/beads-nudge.js +91 -0
  83. package/lib/beads-setup.js +121 -0
  84. package/lib/beads-sync-scaffold.js +25 -101
  85. package/lib/codex-skills.js +51 -1
  86. package/lib/commands/_aliases.js +248 -0
  87. package/lib/commands/_issue.js +780 -77
  88. package/lib/commands/_manifest.js +93 -0
  89. package/lib/commands/_registry.js +99 -34
  90. package/lib/commands/_resolve-command-opts.js +230 -0
  91. package/lib/commands/_serve-security.js +270 -0
  92. package/lib/commands/adapter.js +12 -0
  93. package/lib/commands/add.js +118 -0
  94. package/lib/commands/audit.js +70 -0
  95. package/lib/commands/blocked.js +5 -0
  96. package/lib/commands/board.js +64 -0
  97. package/lib/commands/claim.js +21 -2
  98. package/lib/commands/claims.js +7 -0
  99. package/lib/commands/clean.js +485 -75
  100. package/lib/commands/close.js +2 -2
  101. package/lib/commands/comment.js +5 -0
  102. package/lib/commands/control.js +148 -0
  103. package/lib/commands/create.js +2 -2
  104. package/lib/commands/dev.js +185 -7
  105. package/lib/commands/doc-gate.js +336 -0
  106. package/lib/commands/doctor.js +156 -0
  107. package/lib/commands/explain.js +15 -0
  108. package/lib/commands/export.js +237 -0
  109. package/lib/commands/gate.js +209 -0
  110. package/lib/commands/hooks.js +377 -0
  111. package/lib/commands/inbox.js +118 -0
  112. package/lib/commands/init.js +604 -0
  113. package/lib/commands/insights.js +79 -0
  114. package/lib/commands/issue.js +12 -1
  115. package/lib/commands/issues.js +17 -0
  116. package/lib/commands/lint.js +5 -0
  117. package/lib/commands/list.js +2 -2
  118. package/lib/commands/memory.js +81 -0
  119. package/lib/commands/merge.js +312 -0
  120. package/lib/commands/migrate.js +362 -0
  121. package/lib/commands/new.js +12 -0
  122. package/lib/commands/options.js +241 -0
  123. package/lib/commands/orient.js +13 -0
  124. package/lib/commands/orphans.js +5 -0
  125. package/lib/commands/patch.js +67 -0
  126. package/lib/commands/plan.js +481 -29
  127. package/lib/commands/pr.js +88 -0
  128. package/lib/commands/preflight.js +211 -0
  129. package/lib/commands/prime.js +13 -0
  130. package/lib/commands/push.js +135 -2
  131. package/lib/commands/ready.js +2 -2
  132. package/lib/commands/recall.js +171 -0
  133. package/lib/commands/recap.js +75 -0
  134. package/lib/commands/recommend.js +0 -1
  135. package/lib/commands/release.js +104 -0
  136. package/lib/commands/remember.js +140 -0
  137. package/lib/commands/role.js +99 -0
  138. package/lib/commands/serve.js +581 -0
  139. package/lib/commands/setup.js +900 -971
  140. package/lib/commands/shepherd.js +501 -0
  141. package/lib/commands/ship.js +59 -1
  142. package/lib/commands/show.js +2 -2
  143. package/lib/commands/stage.js +192 -0
  144. package/lib/commands/stale.js +5 -0
  145. package/lib/commands/status.js +158 -21
  146. package/lib/commands/sync.js +34 -46
  147. package/lib/commands/team.js +4 -1
  148. package/lib/commands/test.js +43 -27
  149. package/lib/commands/update.js +2 -2
  150. package/lib/commands/upgrade.js +47 -0
  151. package/lib/commands/validate.js +43 -18
  152. package/lib/commands/worktree.js +362 -99
  153. package/lib/config-writer.js +202 -0
  154. package/lib/control-plane.js +236 -0
  155. package/lib/core/runtime-graph.js +977 -0
  156. package/lib/dep-guard/keyword-ripple.js +2 -2
  157. package/lib/deprecated-sync-cleanup.js +362 -0
  158. package/lib/detect-agent.js +2 -28
  159. package/lib/detect-worktree.js +35 -9
  160. package/lib/doc-gate/declaration.js +177 -0
  161. package/lib/doc-gate/detect.js +289 -0
  162. package/lib/doc-gate/gate.js +375 -0
  163. package/lib/doc-gate/okf-config.js +128 -0
  164. package/lib/doc-gate/okf.js +429 -0
  165. package/lib/docs-command.js +1161 -6
  166. package/lib/forge-issues.js +382 -11
  167. package/lib/forge-lock.js +262 -0
  168. package/lib/gate-events.js +192 -0
  169. package/lib/global-flags.js +104 -0
  170. package/lib/greptile-match.js +7 -63
  171. package/lib/grounding/context-events.js +230 -0
  172. package/lib/grounding/read-first.js +112 -0
  173. package/lib/harness-capability-matrix.js +380 -0
  174. package/lib/hook-global-installer.js +347 -0
  175. package/lib/hook-renderer.js +541 -0
  176. package/lib/inbox.js +391 -0
  177. package/lib/insights.js +397 -0
  178. package/lib/issue-adapter.js +156 -0
  179. package/lib/issue-backend.js +145 -0
  180. package/lib/issue-render.js +220 -0
  181. package/lib/kernel/backing-issue.js +311 -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/owned-kernel.js +43 -0
  192. package/lib/kernel/planning-buckets-schema.js +109 -0
  193. package/lib/kernel/projection-jsonl-writer.js +450 -0
  194. package/lib/kernel/readiness-model.js +329 -0
  195. package/lib/kernel/schema.js +356 -0
  196. package/lib/kernel/sqlite-driver.js +2540 -0
  197. package/lib/kernel/taxonomy-validator.js +394 -0
  198. package/lib/lefthook-check.js +3 -2
  199. package/lib/lefthook-wiring.js +413 -0
  200. package/lib/mcp-config-renderer.js +288 -0
  201. package/lib/memory/graphiti-mcp.js +106 -0
  202. package/lib/memory/router.js +387 -0
  203. package/lib/memory/typed-api.js +102 -0
  204. package/lib/memory-digest.js +195 -0
  205. package/lib/merge-rules.js +395 -0
  206. package/lib/migrate-dry-run.js +466 -0
  207. package/lib/orientation.js +863 -0
  208. package/lib/package-manager-remediation.js +103 -0
  209. package/lib/package-root.js +381 -0
  210. package/lib/patch-intent.js +890 -0
  211. package/lib/plugin-catalog.js +3 -4
  212. package/lib/plugin-manager.js +0 -5
  213. package/lib/pr-bundle.js +186 -0
  214. package/lib/pr-monitor/auto-actions.js +175 -0
  215. package/lib/pr-monitor/differ.js +195 -0
  216. package/lib/pr-monitor/digest.js +206 -0
  217. package/lib/pr-monitor/events.js +0 -0
  218. package/lib/pr-monitor/gather.js +124 -0
  219. package/lib/pr-monitor/journal.js +299 -0
  220. package/lib/pr-monitor/monitor.js +146 -0
  221. package/lib/pr-monitor/render-sticky.js +192 -0
  222. package/lib/pr-monitor/upsert-sticky.js +169 -0
  223. package/lib/pr-monitor/watch-lifecycle.js +95 -0
  224. package/lib/pr-monitor/watch.js +247 -0
  225. package/lib/pr-pull.js +1314 -0
  226. package/lib/pr-shepherd.js +494 -0
  227. package/lib/pr-state-validator.js +59 -0
  228. package/lib/preflight/gates.js +237 -0
  229. package/lib/preflight/runner.js +116 -0
  230. package/lib/project-discovery.js +0 -53
  231. package/lib/project-memory.js +99 -497
  232. package/lib/protected-path-manifest.js +281 -0
  233. package/lib/protected-state-surfaces.js +387 -0
  234. package/lib/release-readiness.js +2105 -0
  235. package/lib/reset.js +59 -45
  236. package/lib/review-adapter.js +68 -0
  237. package/lib/rules-sync.js +260 -0
  238. package/lib/runtime-health.js +241 -20
  239. package/lib/safety-config-renderer.js +268 -0
  240. package/lib/setup-action-log.js +1 -7
  241. package/lib/setup.js +27 -65
  242. package/lib/shell-utils.js +76 -6
  243. package/lib/skills-sync.js +330 -0
  244. package/lib/smart-status/scoring.js +17 -3
  245. package/lib/status/beads-snapshot.js +45 -2
  246. package/lib/status/presenter.js +169 -18
  247. package/lib/status/snapshot.js +186 -0
  248. package/lib/sync-backend.js +202 -0
  249. package/lib/untrusted-content.js +52 -0
  250. package/lib/upgrade-safety.js +251 -0
  251. package/lib/workflow/enforce-stage.js +351 -45
  252. package/lib/workflow/stage-transition.js +115 -0
  253. package/lib/workflow/stages.js +30 -6
  254. package/lib/workflow/state-manager.js +11 -22
  255. package/lib/workflow/state.js +23 -1
  256. package/lib/workflow-profiles.js +17 -5
  257. package/package.json +37 -35
  258. package/rules/documentation.md +19 -0
  259. package/rules/kernel-tracking.md +26 -0
  260. package/rules/security.md +22 -0
  261. package/rules/tdd.md +20 -0
  262. package/rules/workflow.md +27 -0
  263. package/scripts/auto-backing-issue.js +47 -0
  264. package/scripts/beads-context.sh +81 -57
  265. package/scripts/beads-upgrade-smoke.sh +24 -3
  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.sh +22 -3
  272. package/scripts/file-index.sh +3 -0
  273. package/scripts/forge-team/lib/claim.sh +34 -18
  274. package/scripts/forge-team/lib/dashboard.sh +61 -86
  275. package/scripts/forge-team/lib/epic.sh +99 -263
  276. package/scripts/forge-team/lib/hooks.sh +26 -28
  277. package/scripts/forge-team/lib/identity.sh +4 -4
  278. package/scripts/forge-team/lib/sync-github.sh +49 -84
  279. package/scripts/forge-team/lib/verify.sh +93 -83
  280. package/scripts/forge-team/lib/workload.sh +41 -65
  281. package/scripts/forge-team/tests/claim.test.sh +25 -19
  282. package/scripts/forge-team/tests/dashboard.test.sh +31 -46
  283. package/scripts/forge-team/tests/epic.test.sh +52 -71
  284. package/scripts/forge-team/tests/hooks.test.sh +38 -50
  285. package/scripts/forge-team/tests/identity.test.sh +3 -3
  286. package/scripts/forge-team/tests/integration.test.sh +44 -66
  287. package/scripts/forge-team/tests/sync-github.test.sh +50 -83
  288. package/scripts/forge-team/tests/verify.test.sh +37 -46
  289. package/scripts/forge-team/tests/workflow-integration.test.sh +4 -4
  290. package/scripts/forge-team/tests/workload.test.sh +32 -66
  291. package/scripts/gen-command-manifest.js +153 -0
  292. package/scripts/gen-embedded-assets.mjs +129 -0
  293. package/scripts/install.ps1 +139 -0
  294. package/scripts/install.sh +268 -0
  295. package/scripts/lib/release-asset.mjs +84 -0
  296. package/scripts/parity-check.mjs +145 -0
  297. package/scripts/parity-check.test.mjs +58 -0
  298. package/scripts/pin-agentic-workflow-images.js +112 -0
  299. package/scripts/pr-auto-actions.js +93 -0
  300. package/scripts/pr-coordinator.sh +3 -0
  301. package/scripts/pr-verdict-label.js +50 -0
  302. package/scripts/preflight-sonar.eslint.config.mjs +44 -0
  303. package/scripts/preflight.sh +21 -94
  304. package/scripts/protected-state-check.js +104 -0
  305. package/scripts/smart-status.sh +60 -57
  306. package/scripts/spikes/config-race-bench.js +111 -0
  307. package/scripts/spikes/harness-capability-matrix.js +13 -0
  308. package/scripts/spikes/patch-anchor-stability-bench.js +125 -0
  309. package/scripts/spikes/protected-path-manifest.js +20 -0
  310. package/scripts/spikes/skill-auto-invoke-parity.js +292 -0
  311. package/scripts/sync-agent-skills.js +62 -0
  312. package/scripts/sync-utils.sh +3 -0
  313. package/scripts/test-ci-shard.js +13 -6
  314. package/scripts/test.js +95 -12
  315. package/skills/claim-safety/SKILL.md +102 -0
  316. package/skills/claim-safety/evals/evals.json +46 -0
  317. package/{.github/prompts/dev.prompt.md → skills/dev/SKILL.md} +44 -50
  318. package/skills/dev/evals/evals.json +50 -0
  319. package/skills/hermes-forge/SKILL.md +185 -0
  320. package/skills/hermes-forge/evals/evals.json +46 -0
  321. package/skills/issue-basics/SKILL.md +111 -0
  322. package/skills/issue-basics/evals/evals.json +46 -0
  323. package/skills/kernel/SKILL.md +166 -0
  324. package/skills/kernel/evals/evals.json +50 -0
  325. package/skills/memory/SKILL.md +102 -0
  326. package/skills/parallel-deep-research/SKILL.md +14 -11
  327. package/skills/parallel-deep-research/evals/evals.json +11 -27
  328. package/{.github/prompts/plan.prompt.md → skills/plan/SKILL.md} +132 -157
  329. package/skills/plan/evals/evals.json +42 -0
  330. package/skills/research/SKILL.md +195 -0
  331. package/skills/research/evals/evals.json +42 -0
  332. package/{.github/prompts/review.prompt.md → skills/review/SKILL.md} +98 -62
  333. package/skills/review/evals/evals.json +42 -0
  334. package/skills/rollback/SKILL.md +110 -0
  335. package/skills/rollback/evals/evals.json +46 -0
  336. package/skills/rollback/references/methods.md +204 -0
  337. package/{.cursor/commands/rollback.md → skills/rollback/references/workflow-integration.md} +10 -284
  338. package/skills/shepherd/SKILL.md +66 -0
  339. package/skills/shepherd/evals/evals.json +42 -0
  340. package/{.github/prompts/ship.prompt.md → skills/ship/SKILL.md} +81 -45
  341. package/skills/ship/evals/evals.json +42 -0
  342. package/skills/smith/SKILL.md +142 -0
  343. package/skills/smith/evals/evals.json +46 -0
  344. package/skills/smith/references/autonomy-and-gates.md +94 -0
  345. package/{.github/prompts/sonarcloud.prompt.md → skills/sonarcloud/SKILL.md} +14 -3
  346. package/skills/sonarcloud/evals/evals.json +46 -0
  347. package/skills/sonarcloud-analysis/SKILL.md +18 -13
  348. package/skills/sonarcloud-analysis/evals/evals.json +11 -15
  349. package/{.github/prompts/status.prompt.md → skills/status/SKILL.md} +20 -10
  350. package/skills/status/evals/evals.json +50 -0
  351. package/skills/triage-ready/SKILL.md +121 -0
  352. package/skills/triage-ready/evals/evals.json +42 -0
  353. package/{.github/prompts/validate.prompt.md → skills/validate/SKILL.md} +52 -29
  354. package/skills/validate/evals/evals.json +42 -0
  355. package/skills/verify/SKILL.md +299 -0
  356. package/skills/verify/evals/evals.json +50 -0
  357. package/.claude/commands/dev.md +0 -345
  358. package/.claude/commands/plan.md +0 -566
  359. package/.claude/commands/premerge.md +0 -186
  360. package/.claude/commands/research.md +0 -42
  361. package/.claude/commands/review.md +0 -451
  362. package/.claude/commands/rollback.md +0 -721
  363. package/.claude/commands/ship.md +0 -213
  364. package/.claude/commands/sonarcloud.md +0 -152
  365. package/.claude/commands/status.md +0 -90
  366. package/.claude/commands/validate.md +0 -288
  367. package/.claude/commands/verify.md +0 -269
  368. package/.claude/rules/workflow.md +0 -121
  369. package/.cline/workflows/dev.md +0 -342
  370. package/.cline/workflows/plan.md +0 -563
  371. package/.cline/workflows/premerge.md +0 -183
  372. package/.cline/workflows/research.md +0 -39
  373. package/.cline/workflows/review.md +0 -448
  374. package/.cline/workflows/rollback.md +0 -718
  375. package/.cline/workflows/ship.md +0 -210
  376. package/.cline/workflows/sonarcloud.md +0 -146
  377. package/.cline/workflows/status.md +0 -87
  378. package/.cline/workflows/validate.md +0 -285
  379. package/.cline/workflows/verify.md +0 -266
  380. package/.codex/config.toml +0 -11
  381. package/.codex/skills/dev/SKILL.md +0 -345
  382. package/.codex/skills/plan/SKILL.md +0 -566
  383. package/.codex/skills/premerge/SKILL.md +0 -186
  384. package/.codex/skills/research/SKILL.md +0 -42
  385. package/.codex/skills/review/SKILL.md +0 -451
  386. package/.codex/skills/rollback/SKILL.md +0 -721
  387. package/.codex/skills/ship/SKILL.md +0 -213
  388. package/.codex/skills/sonarcloud/SKILL.md +0 -149
  389. package/.codex/skills/status/SKILL.md +0 -90
  390. package/.codex/skills/validate/SKILL.md +0 -288
  391. package/.codex/skills/verify/SKILL.md +0 -269
  392. package/.cursor/commands/dev.md +0 -342
  393. package/.cursor/commands/plan.md +0 -563
  394. package/.cursor/commands/premerge.md +0 -183
  395. package/.cursor/commands/research.md +0 -39
  396. package/.cursor/commands/review.md +0 -448
  397. package/.cursor/commands/ship.md +0 -210
  398. package/.cursor/commands/sonarcloud.md +0 -146
  399. package/.cursor/commands/status.md +0 -87
  400. package/.cursor/commands/validate.md +0 -285
  401. package/.cursor/commands/verify.md +0 -266
  402. package/.cursorrules +0 -149
  403. package/.github/prompts/premerge.prompt.md +0 -188
  404. package/.github/prompts/research.prompt.md +0 -44
  405. package/.github/prompts/rollback.prompt.md +0 -723
  406. package/.github/prompts/verify.prompt.md +0 -271
  407. package/.github/workflows/beads-to-github.yml +0 -89
  408. package/.github/workflows/github-to-beads.yml +0 -100
  409. package/.kilocode/workflows/dev.md +0 -346
  410. package/.kilocode/workflows/plan.md +0 -567
  411. package/.kilocode/workflows/premerge.md +0 -187
  412. package/.kilocode/workflows/research.md +0 -43
  413. package/.kilocode/workflows/review.md +0 -452
  414. package/.kilocode/workflows/rollback.md +0 -722
  415. package/.kilocode/workflows/ship.md +0 -214
  416. package/.kilocode/workflows/sonarcloud.md +0 -150
  417. package/.kilocode/workflows/status.md +0 -91
  418. package/.kilocode/workflows/validate.md +0 -289
  419. package/.kilocode/workflows/verify.md +0 -270
  420. package/.opencode/commands/dev.md +0 -345
  421. package/.opencode/commands/plan.md +0 -566
  422. package/.opencode/commands/premerge.md +0 -186
  423. package/.opencode/commands/research.md +0 -42
  424. package/.opencode/commands/review.md +0 -451
  425. package/.opencode/commands/rollback.md +0 -721
  426. package/.opencode/commands/ship.md +0 -213
  427. package/.opencode/commands/sonarcloud.md +0 -149
  428. package/.opencode/commands/status.md +0 -90
  429. package/.opencode/commands/validate.md +0 -288
  430. package/.opencode/commands/verify.md +0 -269
  431. package/.roo/commands/dev.md +0 -346
  432. package/.roo/commands/plan.md +0 -567
  433. package/.roo/commands/premerge.md +0 -187
  434. package/.roo/commands/research.md +0 -43
  435. package/.roo/commands/review.md +0 -452
  436. package/.roo/commands/rollback.md +0 -722
  437. package/.roo/commands/ship.md +0 -214
  438. package/.roo/commands/sonarcloud.md +0 -150
  439. package/.roo/commands/status.md +0 -91
  440. package/.roo/commands/validate.md +0 -289
  441. package/.roo/commands/verify.md +0 -270
  442. package/docs/BEADS_GITHUB_SYNC.md +0 -281
  443. package/docs/GREPTILE_SETUP.md +0 -400
  444. package/docs/MANUAL_REVIEW_GUIDE.md +0 -106
  445. package/docs/SETUP.md +0 -663
  446. package/docs/VALIDATION.md +0 -363
  447. package/lib/agents/cline.plugin.json +0 -29
  448. package/lib/agents/copilot.plugin.json +0 -24
  449. package/lib/agents/kilocode.plugin.json +0 -22
  450. package/lib/agents/opencode.plugin.json +0 -23
  451. package/lib/agents/roo.plugin.json +0 -30
  452. package/lib/beads-bootstrap.js +0 -225
  453. package/lib/beads-health-check.js +0 -188
  454. package/lib/commands/commands-reset.js +0 -147
  455. package/opencode.json +0 -67
  456. package/scripts/beads-context.test.js +0 -584
  457. package/scripts/github-beads-sync/comment.mjs +0 -64
  458. package/scripts/github-beads-sync/config.mjs +0 -148
  459. package/scripts/github-beads-sync/github-api.mjs +0 -131
  460. package/scripts/github-beads-sync/index.mjs +0 -356
  461. package/scripts/github-beads-sync/label-mapper.mjs +0 -54
  462. package/scripts/github-beads-sync/mapping.mjs +0 -132
  463. package/scripts/github-beads-sync/reverse-sync-cli.mjs +0 -31
  464. package/scripts/github-beads-sync/reverse-sync.mjs +0 -162
  465. package/scripts/github-beads-sync/run-bd.mjs +0 -161
  466. package/scripts/github-beads-sync/sanitize.mjs +0 -121
  467. package/scripts/github-beads-sync.config.json +0 -26
  468. package/scripts/sync-commands.js +0 -600
@@ -1,722 +0,0 @@
1
- ---
2
- description: Safely rollback changes with USER section preservation
3
- mode: code
4
- ---
5
-
6
- Comprehensive rollback system with multiple methods and automatic USER content preservation.
7
-
8
- # Rollback
9
-
10
- This command provides safe rollback operations with comprehensive validation and USER section preservation.
11
-
12
- ## Usage
13
-
14
- ```bash
15
- bunx forge rollback
16
- ```
17
-
18
- Interactive menu with 6 options:
19
- 1. **Rollback last commit** - Quick undo of most recent change
20
- 2. **Rollback specific commit** - Target any commit by hash
21
- 3. **Rollback merged PR** - Revert an entire PR merge
22
- 4. **Rollback specific files** - Restore only certain files
23
- 5. **Rollback entire branch** - Revert multiple commits
24
- 6. **Preview rollback** - Dry run mode (shows changes without executing)
25
-
26
- ## How It Works
27
-
28
- ### Safety Features
29
-
30
- **1. Working Directory Check**
31
- - Requires clean working directory (no uncommitted changes)
32
- - Prevents accidental data loss
33
- - Prompts to commit or stash changes first
34
-
35
- **2. Input Validation**
36
- - Commit hashes: Must match `/^[0-9a-f]{4,40}$/i` or be 'HEAD'
37
- - File paths: Validated to be within project (prevents path traversal)
38
- - Methods: Whitelisted to 'commit', 'pr', 'partial', 'branch'
39
- - Shell metacharacters: Rejected (`;`, `|`, `&`, `$`, `` ` ``, `(`, `)`, `<`, `>`, `\n`, `\r`)
40
-
41
- **3. USER Section Preservation**
42
- - Automatically extracts USER sections before rollback
43
- - Restores USER sections after rollback
44
- - Preserves custom commands in `.claude/commands/custom/`
45
- - Amends rollback commit to include restored content
46
-
47
- **4. Dry Run Mode**
48
- - Preview affected files without executing
49
- - Shows what would change
50
- - No git operations performed
51
-
52
- **5. Non-Destructive**
53
- - Uses `git revert` (creates new commit)
54
- - Never uses `git reset --hard` (destructive)
55
- - Preserves full git history
56
- - Can be undone with another rollback
57
-
58
- ### USER Section Preservation
59
-
60
- **What Gets Preserved**:
61
- ```markdown
62
- <!-- USER:START -->
63
- Your custom content here
64
- <!-- USER:END -->
65
-
66
- <!-- USER:START:custom-name -->
67
- Named USER section
68
- <!-- USER:END:custom-name -->
69
- ```
70
-
71
- **Process**:
72
- 1. Extract all USER sections from AGENTS.md, CLAUDE.md, etc.
73
- 2. Backup custom commands from `.claude/commands/custom/`
74
- 3. Execute rollback operation
75
- 4. Restore USER sections to current file content
76
- 5. Restore custom command files
77
- 6. Amend rollback commit to include restored content
78
-
79
- **Result**: Your customizations survive rollback operations.
80
-
81
- ## Rollback Methods
82
-
83
- ### 1. Rollback Last Commit
84
-
85
- **Use when**: Quick undo of most recent change
86
-
87
- **How it works**:
88
- ```bash
89
- git revert HEAD --no-edit
90
- ```
91
-
92
- **Example**:
93
- ```bash
94
- bunx forge rollback
95
- # Select: 1. Rollback last commit
96
-
97
- ✓ Working directory is clean
98
- ✓ Extracting USER sections...
99
- ✓ Executing: git revert HEAD --no-edit
100
- ✓ Restoring USER sections...
101
- ✓ Amended commit to preserve USER content
102
-
103
- Rollback complete!
104
- Commit: a1b2c3d "Revert: add authentication feature"
105
- Files affected: 5
106
- ```
107
-
108
- ### 2. Rollback Specific Commit
109
-
110
- **Use when**: Need to revert a commit from earlier in history
111
-
112
- **How it works**:
113
- ```bash
114
- git revert <commit-hash> --no-edit
115
- ```
116
-
117
- **Example**:
118
- ```bash
119
- bunx forge rollback
120
- # Select: 2. Rollback specific commit
121
- # Enter: a1b2c3d
122
-
123
- ✓ Validating commit hash...
124
- ✓ Working directory is clean
125
- ✓ Extracting USER sections...
126
- ✓ Executing: git revert a1b2c3d --no-edit
127
- ✓ Restoring USER sections...
128
- ✓ Amended commit to preserve USER content
129
-
130
- Rollback complete!
131
- Commit: x9y8z7w "Revert: a1b2c3d"
132
- Files affected: 8
133
- ```
134
-
135
- **Input validation**:
136
- - Accepts 4-40 character hex strings
137
- - Accepts 'HEAD'
138
- - Rejects shell metacharacters
139
- - Rejects invalid formats
140
-
141
- ### 3. Rollback Merged PR
142
-
143
- **Use when**: Need to revert an entire merged pull request
144
-
145
- **How it works**:
146
- ```bash
147
- git revert -m 1 <merge-commit-hash> --no-edit
148
- ```
149
-
150
- **Example**:
151
- ```bash
152
- bunx forge rollback
153
- # Select: 3. Rollback merged PR
154
- # Enter: def456 (merge commit hash)
155
-
156
- ✓ Validating commit hash...
157
- ✓ Working directory is clean
158
- ✓ Extracting USER sections...
159
- ✓ Executing: git revert -m 1 def456 --no-edit
160
- ✓ Restoring USER sections...
161
- ✓ Amended commit to preserve USER content
162
- ✓ Beads integration: Issue #123 marked as 'reverted'
163
-
164
- Rollback complete!
165
- Commit: m1n2o3p "Revert: Merge pull request #123"
166
- Files affected: 15
167
- Beads issue: #123 status → reverted
168
- ```
169
-
170
- **Beads Integration**:
171
- - Parses commit message for issue number (`#123`)
172
- - If found, runs: `bd update <id> --status reverted --comment "PR reverted"`
173
- - Silently skips if Beads not installed
174
- - Updates issue tracking automatically
175
-
176
- ### 4. Rollback Specific Files
177
-
178
- **Use when**: Only certain files need to be restored
179
-
180
- **How it works**:
181
- ```bash
182
- git checkout HEAD~1 -- <file1> <file2> ...
183
- git commit -m "Rollback: <files>"
184
- ```
185
-
186
- **Example**:
187
- ```bash
188
- bunx forge rollback
189
- # Select: 4. Rollback specific files
190
- # Enter: AGENTS.md,CLAUDE.md
191
-
192
- ✓ Validating file paths...
193
- ✓ Working directory is clean
194
- ✓ Extracting USER sections...
195
- ✓ Executing: git checkout HEAD~1 -- AGENTS.md CLAUDE.md
196
- ✓ Committing changes...
197
- ✓ Restoring USER sections...
198
- ✓ Amended commit to preserve USER content
199
-
200
- Rollback complete!
201
- Commit: q4r5s6t "Rollback: AGENTS.md, CLAUDE.md"
202
- Files affected: 2
203
- ```
204
-
205
- **Path validation**:
206
- - Comma-separated file paths
207
- - Validates paths are within project root
208
- - Prevents path traversal (`../../../etc/passwd`)
209
- - Rejects shell metacharacters
210
- - Uses `path.resolve()` + `startsWith()` check
211
-
212
- ### 5. Rollback Entire Branch
213
-
214
- **Use when**: Need to revert a range of commits
215
-
216
- **How it works**:
217
- ```bash
218
- git revert <start-commit>..<end-commit> --no-edit
219
- ```
220
-
221
- **Example**:
222
- ```bash
223
- bunx forge rollback
224
- # Select: 5. Rollback entire branch
225
- # Enter: abc123..def456
226
-
227
- ✓ Validating commit range...
228
- ✓ Working directory is clean
229
- ✓ Extracting USER sections...
230
- ✓ Executing: git revert abc123..def456 --no-edit
231
- ✓ Restoring USER sections...
232
- ✓ Amended commit to preserve USER content
233
-
234
- Rollback complete!
235
- Commits reverted: 7
236
- Files affected: 24
237
- ```
238
-
239
- **Range validation**:
240
- - Format: `start..end`
241
- - Both commits must be valid hashes (4-40 chars)
242
- - Rejects invalid formats
243
- - Checks for `..` separator
244
-
245
- ### 6. Preview Rollback (Dry Run)
246
-
247
- **Use when**: Want to see what would change without executing
248
-
249
- **How it works**:
250
- - Prompts for method and target
251
- - Validates inputs
252
- - Shows affected files
253
- - No git operations performed
254
-
255
- **Example**:
256
- ```bash
257
- bunx forge rollback
258
- # Select: 6. Preview rollback (dry run)
259
- # Enter method: partial
260
- # Enter target: AGENTS.md,package.json
261
-
262
- ✓ Validating inputs...
263
- ✓ DRY RUN MODE - No changes will be made
264
-
265
- Preview of rollback:
266
- Method: partial
267
- Target: AGENTS.md, package.json
268
-
269
- Files that would be affected:
270
- - AGENTS.md
271
- - package.json
272
-
273
- USER sections that would be preserved:
274
- - AGENTS.md: 2 sections
275
-
276
- Custom commands that would be preserved:
277
- - .claude/commands/custom/my-workflow.md
278
-
279
- No changes made (dry run).
280
- ```
281
-
282
- ## Integration with Workflow
283
-
284
- ### When to Use Rollback
285
-
286
- **During Development** (`/dev`):
287
- - Implemented wrong approach
288
- - Tests reveal fundamental issues
289
- - Need to start over with different strategy
290
-
291
- **After Shipping** (`/ship`):
292
- - PR feedback requires complete redesign
293
- - CI/CD failures indicate architecture problems
294
- - Breaking changes need to be reverted
295
-
296
- **After Merging** (`/premerge` + user merge):
297
- - Production issues discovered
298
- - Need to revert feature entirely
299
- - Rollback PR merge commit
300
-
301
- **Recovery Scenarios**:
302
- - Accidentally committed sensitive data (rollback + force push)
303
- - Merge conflict resolution went wrong
304
- - Refactor broke existing functionality
305
-
306
- ### Workflow Integration
307
-
308
- ```bash
309
- # Standard workflow
310
- /status → /plan → /dev → /validate → /ship → /review → /premerge → /verify
311
-
312
- # Recovery workflow
313
- /dev → (issues discovered) → bunx forge rollback → /dev (retry)
314
- /ship → (CI fails) → bunx forge rollback → /dev (fix) → /ship
315
- /verify → (production issues) → bunx forge rollback → /plan (redesign)
316
- ```
317
-
318
- ### Example: Failed Feature Implementation
319
-
320
- ```bash
321
- # 1. Development phase - implement feature
322
- /dev
323
- # ... implementation ...
324
- git commit -m "feat: add payment integration"
325
-
326
- # 2. Check phase - tests fail
327
- /validate
328
- # ERROR: Security vulnerability in payment handling
329
-
330
- # 3. Rollback the implementation
331
- bunx forge rollback
332
- # Select: 1. Rollback last commit
333
-
334
- # 4. Plan with security in mind
335
- /plan payment-integration
336
-
337
- # 5. Implement correctly
338
- /dev
339
- # ... proper implementation with security ...
340
-
341
- # 6. Verify and ship
342
- /validate → /ship
343
- ```
344
-
345
- ## Beads Integration
346
-
347
- If Beads is installed (`bun install -g @beads/bd`), rollback automatically updates issue tracking.
348
-
349
- ### PR Rollback → Issue Status
350
-
351
- When rolling back a merged PR:
352
- 1. Parse commit message for issue number (`#123`, `fixes #456`, etc.)
353
- 2. If issue number found:
354
- ```bash
355
- bd update <id> --status reverted --comment "PR reverted by rollback"
356
- ```
357
- 3. Silently skip if:
358
- - Beads not installed
359
- - No issue number in commit message
360
- - Issue doesn't exist
361
-
362
- ### Manual Beads Update
363
-
364
- If automatic detection doesn't work:
365
- ```bash
366
- # After rollback
367
- bd update 123 --status reverted --comment "Rolled back due to production issues"
368
- ```
369
-
370
- ## Troubleshooting
371
-
372
- ### Error: "Working directory not clean"
373
-
374
- **Cause**: Uncommitted changes in working directory
375
-
376
- **Solution**:
377
- ```bash
378
- # Option 1: Commit changes
379
- git add .
380
- git commit -m "wip: current work"
381
-
382
- # Option 2: Stash changes
383
- git stash
384
-
385
- # Then retry rollback
386
- bunx forge rollback
387
- ```
388
-
389
- ### Error: "Invalid commit hash format"
390
-
391
- **Cause**: Commit hash doesn't match required pattern
392
-
393
- **Valid formats**:
394
- - `HEAD` (special keyword)
395
- - `a1b2c3d` (4-40 character hex string)
396
- - `abc123def456` (longer hash)
397
-
398
- **Invalid formats**:
399
- - `abc;rm -rf /` (contains shell metacharacter)
400
- - `12` (too short, < 4 chars)
401
- - `not-a-hash` (not hexadecimal)
402
-
403
- **Solution**:
404
- ```bash
405
- # Get valid commit hash
406
- git log --oneline
407
- # Copy full or abbreviated hash (4+ chars)
408
- ```
409
-
410
- ### Error: "Path outside project"
411
-
412
- **Cause**: File path resolves to outside project root
413
-
414
- **Examples**:
415
- - `../../../etc/passwd` (path traversal)
416
- - `/absolute/path/outside/project`
417
-
418
- **Solution**:
419
- ```bash
420
- # Use relative paths within project
421
- bunx forge rollback
422
- # Select: 4. Rollback specific files
423
- # Enter: src/auth.js,docs/API.md (relative paths)
424
- ```
425
-
426
- ### Error: "Invalid characters in path"
427
-
428
- **Cause**: File path contains shell metacharacters
429
-
430
- **Rejected characters**: `;`, `|`, `&`, `$`, `` ` ``, `(`, `)`, `<`, `>`, `\n`, `\r`
431
-
432
- **Solution**:
433
- ```bash
434
- # Remove special characters from filename
435
- mv "file;name.js" "filename.js"
436
-
437
- # Or escape properly (not recommended)
438
- ```
439
-
440
- ### Error: "Branch range must use format: start..end"
441
-
442
- **Cause**: Branch range doesn't include `..` separator
443
-
444
- **Valid formats**:
445
- - `abc123..def456`
446
- - `a1b2c3d..x9y8z7w`
447
-
448
- **Invalid formats**:
449
- - `abc123-def456` (wrong separator)
450
- - `abc123` (no range)
451
-
452
- **Solution**:
453
- ```bash
454
- # Use correct format
455
- bunx forge rollback
456
- # Select: 5. Rollback entire branch
457
- # Enter: <start-commit>..<end-commit>
458
- ```
459
-
460
- ### Merge Conflicts During Rollback
461
-
462
- **Cause**: Revert conflicts with subsequent changes
463
-
464
- **Solution**:
465
- ```bash
466
- # 1. Rollback creates conflict markers
467
- git status
468
- # On branch: main
469
- # Unmerged paths:
470
- # both modified: src/auth.js
471
-
472
- # 2. Resolve conflicts manually
473
- # Edit src/auth.js, remove markers
474
-
475
- # 3. Complete the revert
476
- git add src/auth.js
477
- git revert --continue
478
-
479
- # 4. USER sections restored automatically
480
- ```
481
-
482
- ### USER Sections Not Restored
483
-
484
- **Cause**: Markers missing or malformed
485
-
486
- **Check markers**:
487
- ```bash
488
- grep -n "USER:START" AGENTS.md
489
- grep -n "USER:END" AGENTS.md
490
- ```
491
-
492
- **Valid markers**:
493
- ```markdown
494
- <!-- USER:START -->
495
- Content
496
- <!-- USER:END -->
497
-
498
- <!-- USER:START:name -->
499
- Named section
500
- <!-- USER:END:name -->
501
- ```
502
-
503
- **Invalid markers**:
504
- ```markdown
505
- <!-- USER START --> (missing colon)
506
- <!-- USER:START (missing closing -->)
507
- <!-- USER:END --> (no matching START)
508
- ```
509
-
510
- **Solution**:
511
- ```bash
512
- # Fix markers before rollback
513
- # Ensure all USER:START have matching USER:END
514
- ```
515
-
516
- ## Safety Notes
517
-
518
- ### Input Validation
519
-
520
- All inputs are validated **before** use in git commands:
521
-
522
- **Commit hashes**:
523
- ```javascript
524
- if (target !== 'HEAD' && !/^[0-9a-f]{4,40}$/i.test(target)) {
525
- return { valid: false, error: 'Invalid commit hash format' };
526
- }
527
- ```
528
-
529
- **File paths**:
530
- ```javascript
531
- const resolved = path.resolve(projectRoot, file);
532
- if (!resolved.startsWith(projectRoot)) {
533
- return { valid: false, error: 'Path outside project' };
534
- }
535
- ```
536
-
537
- **Shell metacharacters**:
538
- ```javascript
539
- if (/[;|&$`()<>\r\n]/.test(file)) {
540
- return { valid: false, error: 'Invalid characters in path' };
541
- }
542
- ```
543
-
544
- ### Non-Destructive Operations
545
-
546
- **Uses**:
547
- - `git revert` (creates new commit, preserves history)
548
- - `git checkout HEAD~1 -- <files>` (restores specific files)
549
-
550
- **Never uses**:
551
- - `git reset --hard` (destroys commits)
552
- - `git push --force` (overwrites remote)
553
- - `git clean -f` (deletes untracked files)
554
-
555
- ### Data Preservation
556
-
557
- **Always preserved**:
558
- - USER sections in all files
559
- - Custom commands in `.claude/commands/custom/`
560
- - Git history (revert creates new commits)
561
- - Untracked files (not affected)
562
-
563
- **Never lost**:
564
- - Your customizations
565
- - Work in progress (if committed/stashed)
566
- - Remote branches (local operation only)
567
-
568
- ### Recommended Workflow
569
-
570
- ```bash
571
- # 1. Always commit work before rollback
572
- git add .
573
- git commit -m "wip: current state"
574
-
575
- # 2. Use dry run to preview
576
- bunx forge rollback
577
- # Select: 6. Preview rollback (dry run)
578
-
579
- # 3. Execute rollback
580
- bunx forge rollback
581
- # Select appropriate method
582
-
583
- # 4. Verify USER sections preserved
584
- grep -A5 "USER:START" AGENTS.md
585
-
586
- # 5. Push if needed (after verification)
587
- git push
588
- ```
589
-
590
- ## Examples
591
-
592
- ### Example 1: Quick Undo Last Commit
593
-
594
- ```bash
595
- # Scenario: Just committed but realized approach is wrong
596
-
597
- git log --oneline
598
- # abc123d (HEAD) feat: add caching layer
599
- # def456e fix: validation bug
600
-
601
- bunx forge rollback
602
- # 1. Rollback last commit
603
-
604
- # Output:
605
- # ✓ Working directory is clean
606
- # ✓ Extracting USER sections...
607
- # ✓ Executing: git revert HEAD --no-edit
608
- # ✓ Restoring USER sections...
609
- # ✓ Rollback complete!
610
-
611
- git log --oneline
612
- # xyz789f (HEAD) Revert: feat: add caching layer
613
- # abc123d feat: add caching layer
614
- # def456e fix: validation bug
615
- ```
616
-
617
- ### Example 2: Revert Merged PR
618
-
619
- ```bash
620
- # Scenario: PR #123 caused production issues
621
-
622
- git log --oneline
623
- # merge789 (HEAD) Merge pull request #123
624
- # feat456a feat: add real-time updates
625
- # bugfix123 fix: websocket connection
626
-
627
- bunx forge rollback
628
- # 3. Rollback merged PR
629
- # Enter: merge789
630
-
631
- # Output:
632
- # ✓ Validating commit hash...
633
- # ✓ Working directory is clean
634
- # ✓ Extracting USER sections...
635
- # ✓ Executing: git revert -m 1 merge789 --no-edit
636
- # ✓ Restoring USER sections...
637
- # ✓ Beads: Issue #123 → status: reverted
638
- # ✓ Rollback complete!
639
-
640
- bd show 123
641
- # ID: 123
642
- # Title: Add real-time updates
643
- # Status: reverted
644
- # Comments:
645
- # - PR reverted by rollback
646
- ```
647
-
648
- ### Example 3: Restore Specific Files
649
-
650
- ```bash
651
- # Scenario: Accidentally updated wrong files in last commit
652
-
653
- git show HEAD --name-only
654
- # commit abc123
655
- # feat: update documentation
656
- # AGENTS.md (should not have changed)
657
- # docs/API.md
658
- # README.md
659
-
660
- bunx forge rollback
661
- # 4. Rollback specific files
662
- # Enter: AGENTS.md
663
-
664
- # Output:
665
- # ✓ Validating file paths...
666
- # ✓ Working directory is clean
667
- # ✓ Extracting USER sections...
668
- # ✓ Executing: git checkout HEAD~1 -- AGENTS.md
669
- # ✓ Committing changes...
670
- # ✓ Restoring USER sections...
671
- # ✓ Rollback complete!
672
- # Files affected: 1
673
-
674
- git status
675
- # On branch: main
676
- # nothing to commit, working tree clean
677
- # (AGENTS.md restored to previous version)
678
- ```
679
-
680
- ### Example 4: Dry Run Preview
681
-
682
- ```bash
683
- # Scenario: Want to see what rollback would do
684
-
685
- bunx forge rollback
686
- # 6. Preview rollback (dry run)
687
- # Method: commit
688
- # Target: HEAD
689
-
690
- # Output:
691
- # ✓ Validating inputs...
692
- # ✓ DRY RUN MODE - No changes will be made
693
- #
694
- # Preview of rollback:
695
- # Method: commit
696
- # Target: HEAD
697
- #
698
- # Files that would be affected:
699
- # - src/auth/middleware.js
700
- # - src/auth/validators.js
701
- # - tests/auth.test.js
702
- #
703
- # USER sections that would be preserved:
704
- # - AGENTS.md: 2 sections
705
- # - CLAUDE.md: 1 section
706
- #
707
- # Custom commands that would be preserved:
708
- # - .claude/commands/custom/deploy.md
709
- #
710
- # No changes made (dry run).
711
-
712
- # Decision: Proceed with rollback
713
- bunx forge rollback
714
- # 1. Rollback last commit
715
- ```
716
-
717
- ## See Also
718
-
719
- - [/dev](.claude/commands/dev.md) - TDD development workflow
720
- - [/validate](.claude/commands/validate.md) - Validation before shipping
721
- - [AGENTS.md](../../AGENTS.md) - Complete workflow guide
722
- - [Beads](https://github.com/beadshq/beads) - Issue tracking integration