forge-workflow 0.0.9 → 0.1.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (479) hide show
  1. package/.claude/rules/{greptile-review-process.md → review-process.md} +56 -41
  2. package/.claude/scripts/{greptile-resolve.sh → review-resolve.sh} +13 -3
  3. package/.cursor/rules/permissions-guidance.mdc +2 -2
  4. package/.forge/hooks/check-tdd.js +3 -0
  5. package/.forge/hooks/forge-native-hook.js +245 -0
  6. package/.forge/protected-paths.yaml +157 -0
  7. package/AGENTS.md +151 -61
  8. package/CHANGELOG.md +681 -0
  9. package/CLAUDE.md +9 -106
  10. package/QUICKSTART.md +171 -0
  11. package/README.md +271 -363
  12. package/bin/forge-cmd.js +120 -9
  13. package/bin/forge-preflight.js +26 -5
  14. package/bin/forge.js +466 -489
  15. package/docs/INDEX.md +93 -0
  16. package/docs/PROJECT_DESIGN.md +685 -0
  17. package/docs/architecture/index.md +66 -0
  18. package/docs/architecture/notes/README.md +35 -0
  19. package/docs/architecture/subsystems/README.md +46 -0
  20. package/docs/{TOOLCHAIN.md → forge/TOOLCHAIN.md} +56 -47
  21. package/docs/forge/VALIDATION.md +82 -0
  22. package/docs/{AGENT_INSTALL_PROMPT.md → guides/AGENT_INSTALL_PROMPT.md} +3 -3
  23. package/docs/guides/BEADS_GITHUB_SYNC.md +32 -0
  24. package/docs/{ENHANCED_ONBOARDING.md → guides/ENHANCED_ONBOARDING.md} +16 -12
  25. package/docs/guides/GREPTILE_SETUP.md +46 -0
  26. package/docs/guides/MANUAL_REVIEW_GUIDE.md +58 -0
  27. package/docs/guides/MIGRATION.md +56 -0
  28. package/docs/guides/SETUP.md +118 -0
  29. package/docs/guides/SUPPORT.md +185 -0
  30. package/docs/guides/WORKFLOW_TEMPLATES.md +74 -0
  31. package/docs/guides/memory-backends.md +183 -0
  32. package/docs/reference/ADAPTERS.md +128 -0
  33. package/docs/reference/AGENT_SKILL_PARITY.md +175 -0
  34. package/docs/reference/COMMANDS.md +205 -0
  35. package/docs/reference/DECISION_DRIFT_GUARDS.md +97 -0
  36. package/docs/{EXAMPLES.md → reference/EXAMPLES.md} +7 -5
  37. package/docs/reference/FORGE_KERNEL_STORAGE_MODEL.md +135 -0
  38. package/docs/reference/HERMES_INTEGRATION.md +118 -0
  39. package/docs/reference/INSIGHTS_RECAP.md +63 -0
  40. package/docs/reference/INSTALL.md +164 -0
  41. package/docs/reference/KERNEL_TAXONOMY_VALIDATION.md +161 -0
  42. package/docs/reference/PROTECTED_PATH_MANIFEST.md +25 -0
  43. package/docs/reference/RELEASE.md +68 -0
  44. package/docs/reference/RESEARCH_TEMPLATE.md +292 -0
  45. package/docs/{ROADMAP.md → reference/ROADMAP.md} +12 -9
  46. package/docs/reference/SKILLS.md +35 -0
  47. package/docs/reference/STATUS_BOARD.md +80 -0
  48. package/docs/reference/TEMPLATES.md +106 -0
  49. package/docs/reference/TOOLCHAIN.md +658 -0
  50. package/docs/reference/VALIDATION.md +82 -0
  51. package/docs/reference/agent-permissions.md +169 -0
  52. package/docs/reference/beads-to-kernel-migration-ux.md +61 -0
  53. package/docs/reference/control-plane-guarantees.md +125 -0
  54. package/docs/reference/dependency-chain.md +331 -0
  55. package/docs/reference/forge-kernel-issue-command-contract.md +161 -0
  56. package/docs/reference/forge-kernel-schema.md +72 -0
  57. package/docs/reference/kernel-conflict-evaluators.md +27 -0
  58. package/docs/reference/patch-md-format.md +77 -0
  59. package/docs/reference/protected-state-surfaces.md +59 -0
  60. package/docs/reference/shepherd.md +115 -0
  61. package/docs/reference/superpowers-analysis.md +320 -0
  62. package/docs/reference/superpowers-integration-options.md +404 -0
  63. package/docs/reference/test-environment.md +519 -0
  64. package/docs/reference/upgrade-safety.md +59 -0
  65. package/lefthook.yml +18 -0
  66. package/lib/adapter-cli.js +307 -0
  67. package/lib/adapters/beads-issue-adapter.js +127 -0
  68. package/lib/adapters/beads-kernel-compat.js +1042 -0
  69. package/lib/adapters/greptile-review-adapter.js +141 -0
  70. package/lib/adapters/kernel-issue-adapter.js +101 -0
  71. package/lib/adapters/pr-state-adapter.js +484 -0
  72. package/lib/adoption-profiles.js +126 -0
  73. package/lib/agents/README.md +2 -6
  74. package/lib/agents/claude.plugin.json +3 -8
  75. package/lib/agents/codex.plugin.json +9 -1
  76. package/lib/agents/cursor.plugin.json +2 -6
  77. package/lib/agents/hermes.plugin.json +22 -0
  78. package/lib/agents-config.js +39 -1236
  79. package/lib/audit-evidence.js +282 -0
  80. package/lib/beads-setup.js +225 -28
  81. package/lib/beads-sync-scaffold.js +36 -107
  82. package/lib/codex-skills.js +51 -1
  83. package/lib/commands/_issue.js +744 -70
  84. package/lib/commands/_manifest.js +91 -0
  85. package/lib/commands/_registry.js +85 -34
  86. package/lib/commands/_resolve-command-opts.js +261 -0
  87. package/lib/commands/_serve-security.js +270 -0
  88. package/lib/commands/adapter.js +12 -0
  89. package/lib/commands/add.js +118 -0
  90. package/lib/commands/audit.js +70 -0
  91. package/lib/commands/blocked.js +5 -0
  92. package/lib/commands/board.js +64 -0
  93. package/lib/commands/claim.js +21 -2
  94. package/lib/commands/claims.js +7 -0
  95. package/lib/commands/clean.js +485 -75
  96. package/lib/commands/close.js +2 -2
  97. package/lib/commands/comment.js +5 -0
  98. package/lib/commands/control.js +148 -0
  99. package/lib/commands/create.js +2 -2
  100. package/lib/commands/dev.js +185 -7
  101. package/lib/commands/doc-gate.js +336 -0
  102. package/lib/commands/doctor.js +156 -0
  103. package/lib/commands/explain.js +15 -0
  104. package/lib/commands/export.js +237 -0
  105. package/lib/commands/gate.js +192 -0
  106. package/lib/commands/hooks.js +242 -0
  107. package/lib/commands/inbox.js +118 -0
  108. package/lib/commands/init.js +598 -0
  109. package/lib/commands/insights.js +79 -0
  110. package/lib/commands/issue.js +12 -1
  111. package/lib/commands/issues.js +66 -0
  112. package/lib/commands/lint.js +5 -0
  113. package/lib/commands/list.js +2 -2
  114. package/lib/commands/merge.js +312 -0
  115. package/lib/commands/migrate.js +523 -0
  116. package/lib/commands/new.js +12 -0
  117. package/lib/commands/options.js +241 -0
  118. package/lib/commands/orient.js +13 -0
  119. package/lib/commands/orphans.js +5 -0
  120. package/lib/commands/patch.js +67 -0
  121. package/lib/commands/plan.js +436 -24
  122. package/lib/commands/preflight.js +211 -0
  123. package/lib/commands/prime.js +13 -0
  124. package/lib/commands/push.js +69 -2
  125. package/lib/commands/ready.js +2 -2
  126. package/lib/commands/recall.js +116 -0
  127. package/lib/commands/recap.js +61 -0
  128. package/lib/commands/recommend.js +22 -2
  129. package/lib/commands/release.js +91 -0
  130. package/lib/commands/remember.js +74 -0
  131. package/lib/commands/role.js +99 -0
  132. package/lib/commands/serve.js +581 -0
  133. package/lib/commands/setup.js +851 -979
  134. package/lib/commands/shepherd.js +436 -0
  135. package/lib/commands/ship.js +23 -1
  136. package/lib/commands/show.js +2 -2
  137. package/lib/commands/stage.js +192 -0
  138. package/lib/commands/stale.js +5 -0
  139. package/lib/commands/status.js +329 -11
  140. package/lib/commands/sync.js +34 -46
  141. package/lib/commands/team.js +15 -2
  142. package/lib/commands/test.js +58 -7
  143. package/lib/commands/update.js +2 -2
  144. package/lib/commands/upgrade.js +47 -0
  145. package/lib/commands/validate.js +56 -25
  146. package/lib/commands/worktree.js +308 -128
  147. package/lib/config-writer.js +202 -0
  148. package/lib/control-plane.js +236 -0
  149. package/lib/core/runtime-graph.js +946 -0
  150. package/lib/dep-guard/keyword-ripple.js +184 -0
  151. package/lib/deprecated-sync-cleanup.js +362 -0
  152. package/lib/detect-agent.js +2 -28
  153. package/lib/detect-worktree.js +42 -17
  154. package/lib/doc-gate/declaration.js +177 -0
  155. package/lib/doc-gate/detect.js +289 -0
  156. package/lib/doc-gate/gate.js +375 -0
  157. package/lib/doc-gate/okf-config.js +128 -0
  158. package/lib/doc-gate/okf.js +429 -0
  159. package/lib/docs-command.js +1161 -6
  160. package/lib/forge-issues.js +697 -0
  161. package/lib/forge-lock.js +262 -0
  162. package/lib/gate-events.js +193 -0
  163. package/lib/global-flags.js +74 -0
  164. package/lib/greptile-match.js +7 -63
  165. package/lib/harness-capability-matrix.js +380 -0
  166. package/lib/hook-global-installer.js +347 -0
  167. package/lib/hook-renderer.js +451 -0
  168. package/lib/inbox.js +391 -0
  169. package/lib/insights.js +397 -0
  170. package/lib/issue-adapter.js +156 -0
  171. package/lib/issue-backend.js +145 -0
  172. package/lib/issue-render.js +220 -0
  173. package/lib/issue-sync/authority.js +100 -0
  174. package/lib/issue-sync/github-pull.js +184 -0
  175. package/lib/issue-sync/import-primitives.js +98 -0
  176. package/lib/issue-sync/legacy-link-bridge.js +436 -0
  177. package/lib/issue-sync/link-store.js +292 -0
  178. package/lib/issue-sync/project-github.js +123 -0
  179. package/lib/issue-sync/reconcile.js +195 -0
  180. package/lib/issue-sync/schema.js +126 -0
  181. package/lib/kernel/backing-issue.js +305 -0
  182. package/lib/kernel/broker.js +1218 -0
  183. package/lib/kernel/cli-broker-factory.js +130 -0
  184. package/lib/kernel/conflict-signal.js +82 -0
  185. package/lib/kernel/evaluators.js +195 -0
  186. package/lib/kernel/fs-class.js +495 -0
  187. package/lib/kernel/issue-command-contract.js +559 -0
  188. package/lib/kernel/issue-id-resolver.js +186 -0
  189. package/lib/kernel/lease-enforcer.js +158 -0
  190. package/lib/kernel/migrations.js +333 -0
  191. package/lib/kernel/planning-buckets-schema.js +109 -0
  192. package/lib/kernel/projection-jsonl-writer.js +450 -0
  193. package/lib/kernel/readiness-model.js +329 -0
  194. package/lib/kernel/schema.js +356 -0
  195. package/lib/kernel/sqlite-driver.js +2504 -0
  196. package/lib/kernel/taxonomy-validator.js +394 -0
  197. package/lib/lefthook-check.js +8 -4
  198. package/lib/lefthook-wiring.js +413 -0
  199. package/lib/mcp-config-renderer.js +288 -0
  200. package/lib/memory/graphiti-mcp.js +106 -0
  201. package/lib/memory/router.js +387 -0
  202. package/lib/memory/typed-api.js +102 -0
  203. package/lib/memory-digest.js +195 -0
  204. package/lib/merge-rules.js +395 -0
  205. package/lib/migrate-dry-run.js +466 -0
  206. package/lib/orientation.js +863 -0
  207. package/lib/package-manager-remediation.js +103 -0
  208. package/lib/package-root.js +381 -0
  209. package/lib/patch-intent.js +890 -0
  210. package/lib/plugin-catalog.js +3 -4
  211. package/lib/plugin-manager.js +0 -5
  212. package/lib/pr-bundle.js +186 -0
  213. package/lib/pr-monitor/differ.js +195 -0
  214. package/lib/pr-monitor/events.js +0 -0
  215. package/lib/pr-monitor/gather.js +124 -0
  216. package/lib/pr-monitor/journal.js +299 -0
  217. package/lib/pr-monitor/monitor.js +146 -0
  218. package/lib/pr-monitor/render-sticky.js +157 -0
  219. package/lib/pr-monitor/watch-lifecycle.js +95 -0
  220. package/lib/pr-monitor/watch.js +247 -0
  221. package/lib/pr-pull.js +1273 -0
  222. package/lib/pr-shepherd.js +494 -0
  223. package/lib/pr-state-validator.js +59 -0
  224. package/lib/preflight/gates.js +237 -0
  225. package/lib/preflight/runner.js +116 -0
  226. package/lib/project-discovery.js +0 -53
  227. package/lib/project-memory.js +166 -0
  228. package/lib/protected-path-manifest.js +281 -0
  229. package/lib/protected-state-surfaces.js +387 -0
  230. package/lib/release-readiness.js +2089 -0
  231. package/lib/reset.js +59 -45
  232. package/lib/review-adapter.js +68 -0
  233. package/lib/rules-sync.js +260 -0
  234. package/lib/runtime-health.js +332 -23
  235. package/lib/safety-config-renderer.js +268 -0
  236. package/lib/setup-action-log.js +1 -7
  237. package/lib/setup.js +27 -65
  238. package/lib/shell-utils.js +76 -6
  239. package/lib/skills-sync.js +330 -0
  240. package/lib/smart-status/conflicts.js +205 -0
  241. package/lib/smart-status/scoring.js +191 -0
  242. package/lib/status/beads-snapshot.js +145 -0
  243. package/lib/status/presenter.js +216 -0
  244. package/lib/status/snapshot.js +186 -0
  245. package/lib/sync-backend.js +202 -0
  246. package/lib/untrusted-content.js +52 -0
  247. package/lib/upgrade-safety.js +199 -0
  248. package/lib/workflow/enforce-stage.js +298 -47
  249. package/lib/workflow/stage-transition.js +115 -0
  250. package/lib/workflow/stages.js +30 -6
  251. package/lib/workflow/state-manager.js +159 -14
  252. package/lib/workflow/state.js +23 -1
  253. package/lib/workflow-profiles.js +17 -5
  254. package/package.json +46 -36
  255. package/rules/documentation.md +19 -0
  256. package/rules/kernel-tracking.md +26 -0
  257. package/rules/security.md +22 -0
  258. package/rules/tdd.md +20 -0
  259. package/rules/workflow.md +27 -0
  260. package/scripts/auto-backing-issue.js +47 -0
  261. package/scripts/beads-context.sh +165 -22
  262. package/scripts/beads-migrate-to-dolt.sh +7 -0
  263. package/scripts/beads-upgrade-smoke.sh +284 -0
  264. package/scripts/behavioral-judge.sh +115 -11
  265. package/scripts/benchmark.js +349 -63
  266. package/scripts/bootstrap-windows-tools.sh +78 -0
  267. package/scripts/branch-protection.js +2 -3
  268. package/scripts/check-agents.js +34 -137
  269. package/scripts/commitlint.js +3 -1
  270. package/scripts/conflict-detect.sh +3 -0
  271. package/scripts/dep-guard-analyze.js +52 -17
  272. package/scripts/dep-guard-keyword-ripple.js +29 -0
  273. package/scripts/dep-guard-render-review.js +86 -0
  274. package/scripts/dep-guard.sh +64 -232
  275. package/scripts/file-index.sh +3 -0
  276. package/scripts/forge-team/lib/claim.sh +34 -18
  277. package/scripts/forge-team/lib/dashboard.sh +61 -86
  278. package/scripts/forge-team/lib/epic.sh +99 -263
  279. package/scripts/forge-team/lib/hooks.sh +26 -28
  280. package/scripts/forge-team/lib/identity.sh +4 -4
  281. package/scripts/forge-team/lib/sync-github.sh +144 -47
  282. package/scripts/forge-team/lib/verify.sh +93 -83
  283. package/scripts/forge-team/lib/workload.sh +41 -65
  284. package/scripts/forge-team/tests/claim.test.sh +25 -19
  285. package/scripts/forge-team/tests/dashboard.test.sh +31 -46
  286. package/scripts/forge-team/tests/epic.test.sh +52 -71
  287. package/scripts/forge-team/tests/hooks.test.sh +38 -50
  288. package/scripts/forge-team/tests/identity.test.sh +3 -3
  289. package/scripts/forge-team/tests/integration.test.sh +44 -66
  290. package/scripts/forge-team/tests/sync-github.test.sh +183 -79
  291. package/scripts/forge-team/tests/verify.test.sh +37 -46
  292. package/scripts/forge-team/tests/workflow-integration.test.sh +4 -4
  293. package/scripts/forge-team/tests/workload.test.sh +32 -66
  294. package/scripts/gen-command-manifest.js +153 -0
  295. package/scripts/gen-embedded-assets.mjs +129 -0
  296. package/scripts/install.ps1 +139 -0
  297. package/scripts/install.sh +268 -0
  298. package/scripts/lib/beads-migrate-to-dolt.mjs +503 -0
  299. package/scripts/lib/release-asset.mjs +84 -0
  300. package/scripts/parity-check.mjs +145 -0
  301. package/scripts/parity-check.test.mjs +58 -0
  302. package/scripts/pin-agentic-workflow-images.js +112 -0
  303. package/scripts/pr-coordinator.sh +3 -0
  304. package/scripts/preflight-sonar.eslint.config.mjs +44 -0
  305. package/scripts/preflight.sh +108 -0
  306. package/scripts/protected-state-check.js +104 -0
  307. package/scripts/smart-status-score.js +31 -0
  308. package/scripts/smart-status-sessions.js +51 -0
  309. package/scripts/smart-status.sh +117 -369
  310. package/scripts/spikes/config-race-bench.js +111 -0
  311. package/scripts/spikes/harness-capability-matrix.js +13 -0
  312. package/scripts/spikes/patch-anchor-stability-bench.js +125 -0
  313. package/scripts/spikes/protected-path-manifest.js +20 -0
  314. package/scripts/spikes/skill-auto-invoke-parity.js +292 -0
  315. package/scripts/sync-agent-skills.js +62 -0
  316. package/scripts/sync-agentic-workflow.js +48 -0
  317. package/scripts/sync-utils.sh +3 -0
  318. package/scripts/test-ci-shard.js +251 -0
  319. package/scripts/test-dashboard.js +188 -52
  320. package/scripts/test-full-suite.js +186 -0
  321. package/scripts/test-profile.js +278 -0
  322. package/scripts/test.js +302 -28
  323. package/scripts/validate.js +143 -0
  324. package/scripts/validate.sh +18 -1
  325. package/skills/claim-safety/SKILL.md +102 -0
  326. package/skills/claim-safety/evals/evals.json +46 -0
  327. package/{.github/prompts/dev.prompt.md → skills/dev/SKILL.md} +46 -52
  328. package/skills/dev/evals/evals.json +50 -0
  329. package/skills/hermes-forge/SKILL.md +185 -0
  330. package/skills/hermes-forge/evals/evals.json +46 -0
  331. package/skills/issue-basics/SKILL.md +111 -0
  332. package/skills/issue-basics/evals/evals.json +46 -0
  333. package/skills/kernel/SKILL.md +166 -0
  334. package/skills/kernel/evals/evals.json +50 -0
  335. package/skills/memory/SKILL.md +102 -0
  336. package/skills/parallel-deep-research/SKILL.md +14 -11
  337. package/skills/parallel-deep-research/evals/evals.json +11 -27
  338. package/{.github/prompts/plan.prompt.md → skills/plan/SKILL.md} +134 -159
  339. package/skills/plan/evals/evals.json +42 -0
  340. package/skills/research/SKILL.md +195 -0
  341. package/skills/research/evals/evals.json +42 -0
  342. package/{.github/prompts/review.prompt.md → skills/review/SKILL.md} +98 -62
  343. package/skills/review/evals/evals.json +42 -0
  344. package/skills/rollback/SKILL.md +110 -0
  345. package/skills/rollback/evals/evals.json +46 -0
  346. package/skills/rollback/references/methods.md +204 -0
  347. package/{.cursor/commands/rollback.md → skills/rollback/references/workflow-integration.md} +10 -284
  348. package/skills/shepherd/SKILL.md +66 -0
  349. package/skills/shepherd/evals/evals.json +42 -0
  350. package/skills/ship/SKILL.md +251 -0
  351. package/skills/ship/evals/evals.json +42 -0
  352. package/skills/smith/SKILL.md +142 -0
  353. package/skills/smith/evals/evals.json +46 -0
  354. package/skills/smith/references/autonomy-and-gates.md +94 -0
  355. package/{.github/prompts/sonarcloud.prompt.md → skills/sonarcloud/SKILL.md} +14 -3
  356. package/skills/sonarcloud/evals/evals.json +46 -0
  357. package/skills/sonarcloud-analysis/SKILL.md +18 -13
  358. package/skills/sonarcloud-analysis/evals/evals.json +11 -15
  359. package/skills/status/SKILL.md +102 -0
  360. package/skills/status/evals/evals.json +50 -0
  361. package/skills/triage-ready/SKILL.md +121 -0
  362. package/skills/triage-ready/evals/evals.json +42 -0
  363. package/{.github/prompts/validate.prompt.md → skills/validate/SKILL.md} +52 -29
  364. package/skills/validate/evals/evals.json +42 -0
  365. package/skills/verify/SKILL.md +299 -0
  366. package/skills/verify/evals/evals.json +50 -0
  367. package/.claude/commands/dev.md +0 -345
  368. package/.claude/commands/plan.md +0 -566
  369. package/.claude/commands/premerge.md +0 -186
  370. package/.claude/commands/research.md +0 -42
  371. package/.claude/commands/review.md +0 -451
  372. package/.claude/commands/rollback.md +0 -721
  373. package/.claude/commands/ship.md +0 -213
  374. package/.claude/commands/sonarcloud.md +0 -152
  375. package/.claude/commands/status.md +0 -90
  376. package/.claude/commands/validate.md +0 -288
  377. package/.claude/commands/verify.md +0 -269
  378. package/.claude/rules/workflow.md +0 -121
  379. package/.cline/workflows/dev.md +0 -342
  380. package/.cline/workflows/plan.md +0 -563
  381. package/.cline/workflows/premerge.md +0 -183
  382. package/.cline/workflows/research.md +0 -39
  383. package/.cline/workflows/review.md +0 -448
  384. package/.cline/workflows/rollback.md +0 -718
  385. package/.cline/workflows/ship.md +0 -210
  386. package/.cline/workflows/sonarcloud.md +0 -146
  387. package/.cline/workflows/status.md +0 -87
  388. package/.cline/workflows/validate.md +0 -285
  389. package/.cline/workflows/verify.md +0 -266
  390. package/.codex/config.toml +0 -11
  391. package/.codex/skills/dev/SKILL.md +0 -345
  392. package/.codex/skills/plan/SKILL.md +0 -566
  393. package/.codex/skills/premerge/SKILL.md +0 -186
  394. package/.codex/skills/research/SKILL.md +0 -42
  395. package/.codex/skills/review/SKILL.md +0 -451
  396. package/.codex/skills/rollback/SKILL.md +0 -721
  397. package/.codex/skills/ship/SKILL.md +0 -213
  398. package/.codex/skills/sonarcloud/SKILL.md +0 -149
  399. package/.codex/skills/status/SKILL.md +0 -90
  400. package/.codex/skills/validate/SKILL.md +0 -288
  401. package/.codex/skills/verify/SKILL.md +0 -269
  402. package/.cursor/commands/dev.md +0 -342
  403. package/.cursor/commands/plan.md +0 -563
  404. package/.cursor/commands/premerge.md +0 -183
  405. package/.cursor/commands/research.md +0 -39
  406. package/.cursor/commands/review.md +0 -448
  407. package/.cursor/commands/ship.md +0 -210
  408. package/.cursor/commands/sonarcloud.md +0 -146
  409. package/.cursor/commands/status.md +0 -87
  410. package/.cursor/commands/validate.md +0 -285
  411. package/.cursor/commands/verify.md +0 -266
  412. package/.cursorrules +0 -149
  413. package/.github/prompts/premerge.prompt.md +0 -188
  414. package/.github/prompts/research.prompt.md +0 -44
  415. package/.github/prompts/rollback.prompt.md +0 -723
  416. package/.github/prompts/ship.prompt.md +0 -215
  417. package/.github/prompts/status.prompt.md +0 -92
  418. package/.github/prompts/verify.prompt.md +0 -271
  419. package/.github/workflows/beads-to-github.yml +0 -56
  420. package/.github/workflows/github-to-beads.yml +0 -97
  421. package/.kilocode/workflows/dev.md +0 -346
  422. package/.kilocode/workflows/plan.md +0 -567
  423. package/.kilocode/workflows/premerge.md +0 -187
  424. package/.kilocode/workflows/research.md +0 -43
  425. package/.kilocode/workflows/review.md +0 -452
  426. package/.kilocode/workflows/rollback.md +0 -722
  427. package/.kilocode/workflows/ship.md +0 -214
  428. package/.kilocode/workflows/sonarcloud.md +0 -150
  429. package/.kilocode/workflows/status.md +0 -91
  430. package/.kilocode/workflows/validate.md +0 -289
  431. package/.kilocode/workflows/verify.md +0 -270
  432. package/.opencode/commands/dev.md +0 -345
  433. package/.opencode/commands/plan.md +0 -566
  434. package/.opencode/commands/premerge.md +0 -186
  435. package/.opencode/commands/research.md +0 -42
  436. package/.opencode/commands/review.md +0 -451
  437. package/.opencode/commands/rollback.md +0 -721
  438. package/.opencode/commands/ship.md +0 -213
  439. package/.opencode/commands/sonarcloud.md +0 -149
  440. package/.opencode/commands/status.md +0 -90
  441. package/.opencode/commands/validate.md +0 -288
  442. package/.opencode/commands/verify.md +0 -269
  443. package/.roo/commands/dev.md +0 -346
  444. package/.roo/commands/plan.md +0 -567
  445. package/.roo/commands/premerge.md +0 -187
  446. package/.roo/commands/research.md +0 -43
  447. package/.roo/commands/review.md +0 -452
  448. package/.roo/commands/rollback.md +0 -722
  449. package/.roo/commands/ship.md +0 -214
  450. package/.roo/commands/sonarcloud.md +0 -150
  451. package/.roo/commands/status.md +0 -91
  452. package/.roo/commands/validate.md +0 -289
  453. package/.roo/commands/verify.md +0 -270
  454. package/docs/BEADS_GITHUB_SYNC.md +0 -255
  455. package/docs/GREPTILE_SETUP.md +0 -400
  456. package/docs/MANUAL_REVIEW_GUIDE.md +0 -106
  457. package/docs/SETUP.md +0 -663
  458. package/docs/VALIDATION.md +0 -363
  459. package/lib/agents/cline.plugin.json +0 -29
  460. package/lib/agents/copilot.plugin.json +0 -24
  461. package/lib/agents/kilocode.plugin.json +0 -22
  462. package/lib/agents/opencode.plugin.json +0 -23
  463. package/lib/agents/roo.plugin.json +0 -30
  464. package/lib/beads-health-check.js +0 -143
  465. package/lib/commands/commands-reset.js +0 -147
  466. package/opencode.json +0 -67
  467. package/scripts/beads-context.test.js +0 -567
  468. package/scripts/github-beads-sync/comment.mjs +0 -64
  469. package/scripts/github-beads-sync/config.mjs +0 -148
  470. package/scripts/github-beads-sync/github-api.mjs +0 -131
  471. package/scripts/github-beads-sync/index.mjs +0 -332
  472. package/scripts/github-beads-sync/label-mapper.mjs +0 -54
  473. package/scripts/github-beads-sync/mapping.mjs +0 -78
  474. package/scripts/github-beads-sync/reverse-sync-cli.mjs +0 -31
  475. package/scripts/github-beads-sync/reverse-sync.mjs +0 -138
  476. package/scripts/github-beads-sync/run-bd.mjs +0 -161
  477. package/scripts/github-beads-sync/sanitize.mjs +0 -121
  478. package/scripts/github-beads-sync.config.json +0 -26
  479. package/scripts/sync-commands.js +0 -600
@@ -1,255 +0,0 @@
1
- # GitHub <-> Beads Issue Sync
2
-
3
- Automatic synchronization between GitHub Issues and Beads issue tracking.
4
-
5
- **GitHub Issues** = human/team/public interface.
6
- **Beads** = issue engine behind Forge (`forge ready`, `forge close`).
7
-
8
- Neither side needs to know about the other. Contributors file issues on GitHub; AI agents pick up work via Beads. Status changes propagate automatically.
9
-
10
- For human and agent workflows, prefer the Forge wrapper commands (`forge ready`,
11
- `forge create`, `forge close`, `forge sync`). The workflow automation shown below
12
- still calls `bd` directly as an internal implementation detail.
13
-
14
- ---
15
-
16
- ## Architecture
17
-
18
- ### Phase 1: GitHub -> Beads (CI-driven)
19
-
20
- ```mermaid
21
- sequenceDiagram
22
- participant U as User
23
- participant GH as GitHub Issues
24
- participant WF as GitHub Actions
25
- participant BD as Beads CLI
26
- participant Repo as .beads/ + mapping
27
-
28
- U->>GH: Opens issue #42
29
- GH->>WF: issues.opened trigger
30
- WF->>WF: Guard checks (bot? skip label? no-beads?)
31
- WF->>WF: Idempotency check (existing bot comment?)
32
- WF->>BD: bd create --title "..." --type bug --priority 1
33
- BD->>Repo: Write .beads/issues.jsonl
34
- WF->>Repo: Write .github/beads-mapping.json {"42": "forge-abc"}
35
- WF->>GH: Post bot comment <!-- beads-sync:42 -->
36
- WF->>Repo: git commit + push
37
-
38
- U->>GH: Closes issue #42
39
- GH->>WF: issues.closed trigger
40
- WF->>Repo: Read mapping: "42" -> "forge-abc"
41
- WF->>BD: bd close forge-abc --reason "Closed via GitHub #42"
42
- WF->>Repo: git commit + push
43
- ```
44
-
45
- ### Phase 2: Beads -> GitHub (push-triggered)
46
-
47
- ```mermaid
48
- sequenceDiagram
49
- participant AI as AI Agent
50
- participant BD as Beads CLI
51
- participant Repo as .beads/
52
- participant WF as GitHub Actions
53
- participant GH as GitHub Issues
54
-
55
- AI->>BD: forge close forge-abc
56
- BD->>Repo: Update issues.jsonl
57
- AI->>Repo: git push
58
- Repo->>WF: push trigger (paths: .beads/**)
59
- WF->>WF: Guard: skip if commit msg starts with "chore(beads):"
60
- WF->>Repo: Diff issues.jsonl for closed transitions
61
- WF->>GH: gh api PATCH /issues/42 state=closed
62
- ```
63
-
64
- ### Loop Prevention
65
-
66
- Three guards prevent infinite ping-pong:
67
-
68
- 1. **Bot detection** -- workflows skip events from `github-actions[bot]`
69
- 2. **Commit message prefix** -- Phase 2 workflow skips commits starting with `chore(beads):`
70
- 3. **Opt-out label** -- `skip-beads-sync` label on any issue disables sync entirely
71
-
72
- ---
73
-
74
- ## Setup
75
-
76
- ### Via Forge Setup (recommended)
77
-
78
- ```bash
79
- bunx forge setup
80
- # During interactive prompts:
81
- # "Enable GitHub <-> Beads sync? (y/n)" -> y
82
- ```
83
-
84
- This scaffolds:
85
- - `.github/workflows/github-to-beads.yml`
86
- - `.github/workflows/beads-to-github.yml` (Phase 2)
87
- - `.github/beads-mapping.json`
88
- - `scripts/github-beads-sync/` (Node modules)
89
- - `scripts/github-beads-sync.config.json`
90
-
91
- ### Manual Setup
92
-
93
- 1. Copy workflow files from `templates/` into `.github/workflows/`
94
- 2. Copy `scripts/github-beads-sync/` and `scripts/github-beads-sync.config.json`
95
- 3. Create `.github/beads-mapping.json` with `{}`
96
- 4. Ensure Beads is initialized: `bd init`
97
- 5. Commit and push to enable the workflows
98
-
99
- ---
100
-
101
- ## Configuration Reference
102
-
103
- All settings live in `scripts/github-beads-sync.config.json`.
104
-
105
- ### Label and Type Mapping
106
-
107
- | Field | Type | Default | Description |
108
- |-------|------|---------|-------------|
109
- | `labelToType` | `object` | `{"bug":"bug", "enhancement":"feature", "documentation":"task", "question":"task"}` | Maps GitHub labels to Beads issue types. First matching label wins. |
110
- | `labelToPriority` | `object` | `{"P0":0, "critical":0, "P1":1, "high":1, "P2":2, "medium":2, "P3":3, "low":3, "P4":4, "backlog":4}` | Maps GitHub labels to Beads priority levels (0-4). First matching label wins. |
111
- | `defaultType` | `string` | `"task"` | Beads type when no label matches `labelToType`. |
112
- | `defaultPriority` | `number` | `2` | Beads priority when no label matches `labelToPriority`. |
113
- | `mapAssignee` | `boolean` | `true` | Whether to copy GitHub assignee to Beads issue on creation. |
114
-
115
- ### Security Gates (Public Repos)
116
-
117
- | Field | Type | Default | Description |
118
- |-------|------|---------|-------------|
119
- | `publicRepoGate` | `string` | `"none"` | Access control for public repos. See [Security](#security) section. |
120
- | `gateLabelName` | `string` | `"beads-track"` | Required label when `publicRepoGate` is `"label"`. |
121
- | `gateAssociations` | `string[]` | `["MEMBER", "COLLABORATOR", "OWNER"]` | Allowed author associations when `publicRepoGate` is `"author_association"`. |
122
-
123
- ### Example: Custom Configuration
124
-
125
- ```json
126
- {
127
- "labelToType": {
128
- "bug": "bug",
129
- "feature": "feature",
130
- "chore": "chore",
131
- "spike": "task"
132
- },
133
- "labelToPriority": {
134
- "urgent": 0,
135
- "important": 1,
136
- "normal": 2,
137
- "nice-to-have": 3
138
- },
139
- "defaultType": "task",
140
- "defaultPriority": 2,
141
- "mapAssignee": true,
142
- "publicRepoGate": "author_association",
143
- "gateAssociations": ["MEMBER", "COLLABORATOR", "OWNER"]
144
- }
145
- ```
146
-
147
- ---
148
-
149
- ## Security
150
-
151
- ### Public Repo Gate
152
-
153
- On public repos, anyone can open an issue -- which triggers a commit to your default branch via the sync workflow. The `publicRepoGate` setting controls who can trigger sync:
154
-
155
- | Value | Behavior | Recommended For |
156
- |-------|----------|-----------------|
157
- | `"none"` | All issues sync (default). | Private repos, trusted teams. |
158
- | `"author_association"` | Only issues from authors in `gateAssociations` sync. | Public repos with known contributors. |
159
- | `"label"` | Only issues with the `gateLabelName` label sync. A maintainer must add the label. | Public repos accepting external issues. |
160
-
161
- ### Input Sanitization
162
-
163
- - Issue titles and bodies are **never interpolated in shell commands**. The sync scripts use Node `execFile` with array arguments (no shell).
164
- - Workflow files pass event data via `env:` blocks, never via `${{ }}` in `run:` blocks (prevents GitHub Actions injection).
165
- - Only title, URL, mapped type, and priority are stored in Beads -- raw issue body is not committed.
166
-
167
- ### SHA-Pinned Actions
168
-
169
- All third-party actions in the workflow files are pinned to full commit SHAs, not tags. This prevents supply-chain attacks via tag mutation.
170
-
171
- ```yaml
172
- # Good: SHA-pinned
173
- - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
174
-
175
- # Bad: tag-only (never used)
176
- - uses: actions/checkout@v4
177
- ```
178
-
179
- ---
180
-
181
- ## Opt-Out
182
-
183
- Two ways to prevent an issue from syncing:
184
-
185
- 1. **Label**: Add `skip-beads-sync` to the GitHub issue. The workflow checks labels before processing.
186
- 2. **Body keyword**: Include `no-beads` anywhere in the issue body. Useful for quick one-off exclusions.
187
-
188
- Both are checked at the `issues.opened` trigger. If added after creation, they prevent close-sync but not the already-created Beads issue.
189
-
190
- ---
191
-
192
- ## Troubleshooting
193
-
194
- ### Sync not triggering
195
-
196
- - **Check workflow is enabled**: Go to Actions tab in GitHub, verify `github-to-beads` workflow exists and is active.
197
- - **Check branch**: Workflows must exist on the default branch (usually `main` or `master`).
198
- - **Check permissions**: The workflow needs `contents: write` and `issues: write` permissions.
199
-
200
- ### Duplicate Beads issues
201
-
202
- - The workflow checks for an existing `<!-- beads-sync:N -->` bot comment before creating. If the comment was deleted, a duplicate may be created.
203
- - Fix: Check `.github/beads-mapping.json` for the existing mapping and manually remove the duplicate Beads issue with `bd delete`.
204
-
205
- ### Loop detection firing incorrectly
206
-
207
- - If legitimate commits starting with `chore(beads):` are being skipped by the Phase 2 workflow, rename the commit prefix in the workflow file.
208
- - The bot-actor check uses `github.actor` -- ensure your CI bot user matches the expected name.
209
-
210
- ### Mapping file conflicts
211
-
212
- - If two issues are created simultaneously, the `git push` for the second may fail due to a stale mapping file.
213
- - The workflow retries with `git pull --rebase` up to 3 times. If it still fails, the workflow run will show as failed -- re-run it manually.
214
-
215
- ### `bd` command not found in CI
216
-
217
- - The workflow installs Beads fresh each run: `bun add -g @beads/bd`.
218
- - If this fails, check that the workflow uses a runner with Node/Bun available.
219
-
220
- ---
221
-
222
- ## Fork Behavior
223
-
224
- Sync does **not** work in forks. The `GITHUB_TOKEN` provided to forked repo workflows is scoped to the fork and cannot write to the upstream repo's `.beads/` directory or post comments on upstream issues.
225
-
226
- When a fork PR uses `Closes #N`, GitHub closes the issue on the **upstream** repo on merge. This triggers the upstream's `issues.closed` workflow, which handles the Beads close normally.
227
-
228
- ---
229
-
230
- ## GitHub Projects Integration
231
-
232
- This plugin creates well-labeled GitHub issues but does **not** manage GitHub Projects boards. Use GitHub's built-in automation instead:
233
-
234
- ### Setting Up Auto-Add to Project
235
-
236
- 1. Go to your GitHub Project (Projects tab on your profile or org)
237
- 2. Click the `...` menu, then **Workflows**
238
- 3. Enable **"Auto-add to project"**
239
- 4. Set the filter, for example: `is:issue is:open label:bug,enhancement`
240
- 5. All matching issues (including those created by the sync) will auto-appear on your board
241
-
242
- ### Recommended Project Views
243
-
244
- - **Board view**: Columns for `Open`, `In Progress`, `Done` -- map to Beads statuses
245
- - **Table view**: Add `Labels`, `Assignees`, `Priority` fields for triage
246
- - **Filter by label**: Use the labels mapped in your config to create focused views
247
-
248
- This approach is more flexible than automating board placement -- you control the filters and views entirely within GitHub's UI.
249
-
250
- ---
251
-
252
- ## Related Documentation
253
-
254
- - [Design doc](plans/2026-03-21-github-beads-sync-design.md) -- full design decisions, OWASP analysis, and edge cases
255
- - [Toolchain reference](TOOLCHAIN.md) -- Beads CLI commands, installation, and troubleshooting
@@ -1,400 +0,0 @@
1
- # Greptile Code Review - Branch Protection Setup
2
-
3
- **✅ Greptile is already working on your repository!**
4
-
5
- Greptile provides AI-powered code review as a **GitHub App** that automatically analyzes every PR.
6
-
7
- ---
8
-
9
- ## Current Status
10
-
11
- 🎉 **Greptile is Fully Operational!**
12
-
13
- Your repository has both Greptile features working:
14
- - ✅ **Greptile Review** (GitHub App) - Provides detailed code review comments
15
- - ✅ **Greptile Quality Gate** (Workflow) - Enforces minimum score of 4.0/5 before merge
16
- - ✅ Both integrated into branch protection for master branch
17
-
18
- ---
19
-
20
- ## Branch Protection Status
21
-
22
- ### ✅ Fully Configured!
23
-
24
- Branch protection for `master` now requires:
25
-
26
- 1. **Greptile Review** (GitHub App check) - Must pass
27
- 2. **Greptile Quality Gate (≥4/5)** (Custom workflow) - Must pass with score ≥ 4.0
28
- 3. **Other Required Checks**: ESLint, CodeQL, dependency-review
29
- 4. **PR Reviews**: At least 1 approving review required
30
- 5. **Conversation Resolution**: All review threads must be resolved
31
-
32
- **Result**: PRs cannot be merged unless:
33
- - Greptile Review completes successfully
34
- - Greptile confidence score is at least 4.0/5
35
- - All other quality checks pass
36
- - Code has been reviewed and approved
37
-
38
- ---
39
-
40
- ## How Greptile Works
41
-
42
- ### GitHub App Integration
43
-
44
- - **Automatic**: Runs on every PR (no manual trigger needed)
45
- - **No Workflow Needed**: Works as a GitHub App, not a GitHub Action
46
- - **No API Key Required**: Authorized through GitHub App installation
47
-
48
- ### Review Process
49
-
50
- ```
51
- PR created/updated
52
-
53
- Greptile automatically analyzes code
54
-
55
- Posts detailed feedback as comments
56
-
57
- Updates "Greptile Review" check status
58
-
59
- Pass: ✅ Can merge
60
- Fail: ❌ Blocked (if required in branch protection)
61
- ```
62
-
63
- ### What Greptile Checks
64
-
65
- - 🐛 **Bugs & Edge Cases**: Potential runtime errors, null pointers, race conditions
66
- - 🔒 **Security**: Vulnerabilities, injection risks, auth issues
67
- - 📊 **Code Quality**: Complexity, duplication, naming conventions
68
- - ⚡ **Performance**: Inefficient algorithms, memory leaks
69
- - 📝 **Best Practices**: Error handling, type safety, modern patterns
70
- - 🧪 **Testing**: Missing test coverage, test quality
71
-
72
- ---
73
-
74
- ## Understanding Greptile Feedback
75
-
76
- ### Confidence Score
77
-
78
- Greptile provides a confidence score (0-5) in the PR description that reflects overall code quality:
79
-
80
- 📊 **Confidence Score Format**: "Confidence Score: X/5" or "Confidence Score: X out of 5"
81
- 🎯 **Quality Gate Threshold**: Minimum 4.0/5 required to merge
82
- ✅ **Detailed inline comments** on specific lines of code
83
- ✅ **Issue severity** indicators (critical, major, minor)
84
- ✅ **Actionable suggestions** with example fixes
85
-
86
- ### Example from Your PR #13
87
-
88
- Greptile identified and you fixed:
89
- - ✅ Windows path validation bug
90
- - ✅ Duplicate function definitions
91
- - ✅ Incorrect fetch timeout implementation
92
- - ✅ Security vulnerabilities (command injection)
93
- - ✅ JSON parse crash issues
94
- - ✅ Unused variables
95
-
96
- **Result**: 16/16 issues addressed! 🎉
97
-
98
- ---
99
-
100
- ## Addressing Greptile Feedback
101
-
102
- ### Workflow
103
-
104
- 1. **Read Comments**
105
- - Greptile posts inline comments on changed files
106
- - Each explains the issue and suggests fixes
107
-
108
- 2. **Fix Issues**
109
- ```bash
110
- # Make changes based on feedback
111
- git add .
112
- git commit -m "fix: address Greptile feedback"
113
- git push
114
- ```
115
-
116
- 3. **Auto Re-analysis**
117
- - Greptile automatically reviews again after push
118
- - Verifies fixes
119
- - Updates check status
120
-
121
- 4. **Resolve Conversations**
122
- - Click "Resolve conversation" on each fixed comment
123
- - Helps track progress
124
-
125
- ---
126
-
127
- ## Branch Protection Behavior
128
-
129
- ### When "Greptile Review" is Required:
130
-
131
- ```
132
- ✅ All issues addressed → Check: SUCCESS → ✅ Can merge
133
- ❌ Outstanding issues → Check: PENDING → ❌ Blocked
134
- 🔄 Analysis in progress → Check: PENDING → ❌ Blocked
135
- ```
136
-
137
- ### Emergency Override
138
-
139
- If you **must** merge despite Greptile feedback:
140
-
141
- 1. **Get approval** from tech lead/architect
142
- 2. **Document in PR description**:
143
- ```markdown
144
- **Emergency Bypass**: Production hotfix for [critical-issue]
145
- **Greptile Status**: Bypassed
146
- **Justification**: [detailed reason]
147
- **Follow-up**: Issue #123 created to address feedback
148
- ```
149
- 3. **Temporarily disable branch protection** (admin only)
150
- 4. **Merge**
151
- 5. **Re-enable protection immediately**
152
- 6. **Create follow-up issue** to address Greptile feedback
153
-
154
- ---
155
-
156
- ## Configuration
157
-
158
- ### No Setup Required! ✅
159
-
160
- Since Greptile is a GitHub App:
161
-
162
- - ❌ No API keys needed in secrets
163
- - ❌ No workflow files needed
164
- - ❌ No manual configuration
165
-
166
- It just works automatically!
167
-
168
- ### Managing the GitHub App
169
-
170
- **View installed apps**:
171
- ```
172
- https://github.com/settings/installations
173
- ```
174
-
175
- **Repository-specific settings** (admin only):
176
- ```
177
- https://github.com/harshanandak/forge/settings/installations
178
- ```
179
-
180
- You can:
181
- - Enable/disable Greptile for specific repos
182
- - Adjust review frequency
183
- - Configure notification settings
184
-
185
- ---
186
-
187
- ## Customization (Optional)
188
-
189
- ### Repository Configuration
190
-
191
- Create `.greptile/config.yml` in repo root:
192
-
193
- ```yaml
194
- # Greptile configuration
195
- review:
196
- # File patterns to ignore
197
- exclude:
198
- - "*.md"
199
- - "test/**"
200
- - "docs/**"
201
- - "*.test.js"
202
- - "dist/**"
203
-
204
- # Focus areas (prioritize these checks)
205
- focus:
206
- - security
207
- - bugs
208
- - performance
209
-
210
- # Review depth
211
- depth: thorough # quick, normal, thorough
212
- ```
213
-
214
- ### Per-PR Instructions
215
-
216
- Add comments in PR description to guide Greptile:
217
-
218
- ```markdown
219
- @greptile focus on security and performance
220
- @greptile ignore docs/ and test files
221
- @greptile be extra strict on src/auth/
222
- ```
223
-
224
- ---
225
-
226
- ## Troubleshooting
227
-
228
- ### "Greptile Review check not appearing in branch protection"
229
-
230
- **Cause**: Check hasn't completed at least once on any PR.
231
-
232
- **Fix**:
233
- 1. It's currently running on PR #13
234
- 2. Wait for it to complete
235
- 3. Then refresh branch protection settings page
236
- 4. "Greptile Review" should now appear in the list
237
-
238
- ### "Greptile didn't review my PR"
239
-
240
- **Possible causes**:
241
- - GitHub App not installed or disabled
242
- - PR is a draft (some apps skip drafts)
243
- - Repository not in allowed list
244
-
245
- **Fix**:
246
- 1. Visit: https://github.com/harshanandak/forge/settings/installations
247
- 2. Verify Greptile is installed and enabled
248
- 3. Check repository access permissions
249
- 4. Convert draft to ready for review if applicable
250
-
251
- ### "How do I request a re-review?"
252
-
253
- **Methods**:
254
- 1. **Push new commit** - Triggers automatic re-analysis
255
- 2. **Comment on PR**: `@greptile please review` or `@greptile recheck`
256
- 3. **Close and reopen PR** - Forces fresh analysis
257
-
258
- ### "Can I see why Greptile flagged something?"
259
-
260
- **Yes!**
261
- 1. Go to "Files changed" tab in PR
262
- 2. Find Greptile's comment thread
263
- 3. Each comment explains:
264
- - What the issue is
265
- - Why it's problematic
266
- - How to fix it
267
- - Often includes code examples
268
-
269
- ---
270
-
271
- ## Best Practices
272
-
273
- ### 1. Address Feedback Incrementally
274
-
275
- Don't batch all fixes into one commit:
276
- - Fix issues as you see them
277
- - Commit after each logical fix
278
- - Easier to review and debug
279
-
280
- ### 2. Use as Learning Tool
281
-
282
- Greptile explains *why* something is an issue:
283
- - Read the explanations, don't just apply fixes blindly
284
- - Share interesting findings with your team
285
- - Update coding standards based on patterns
286
-
287
- ### 3. Combine with Human Review
288
-
289
- | Review Type | What It Catches |
290
- |-------------|-----------------|
291
- | 🤖 Greptile | Technical bugs, security, complexity, patterns |
292
- | 👥 Human | Business logic, UX, architecture, context |
293
-
294
- **Both are essential!** They catch different types of issues.
295
-
296
- ### 4. Don't Fight the AI Unnecessarily
297
-
298
- If Greptile flags something:
299
- - There's usually a valid reason
300
- - Read the explanation carefully
301
- - If you disagree, comment why (helps improve Greptile)
302
- - Propose alternative if you have a better approach
303
-
304
- ### 5. Track Common Patterns
305
-
306
- Notice recurring issues across PRs?
307
- - Document in coding standards
308
- - Add to .greptile/config.yml to auto-enforce
309
- - Share with team in README or CONTRIBUTING.md
310
- - Consider pre-commit hooks for common issues
311
-
312
- ---
313
-
314
- ## Verification Checklist
315
-
316
- Use this to confirm Greptile is set up correctly:
317
-
318
- ```
319
- ✅ Greptile GitHub App is installed
320
- ✅ Greptile has access to your repository
321
- ✅ "Greptile Review" check runs on PRs
322
- ✅ Greptile posts code review comments
323
- ✅ "Greptile Review" appears in branch protection options
324
- ✅ "Greptile Review" is selected as required check
325
- ✅ Branch protection rule is saved
326
- ✅ Test: Create PR → Greptile reviews → Merge blocked if issues
327
- ```
328
-
329
- ---
330
-
331
- ## FAQ
332
-
333
- **Q: Does Greptile use a scoring system (like 4.0/5.0)?**
334
- A: Yes! Greptile Review provides a confidence score (0-5) in the PR description. Our custom Quality Gate workflow enforces a minimum score of 4.0/5 before allowing merges.
335
-
336
- **Q: Will it review every single commit?**
337
- A: It reviews at the PR level. Runs when PR is opened and when new commits are pushed.
338
-
339
- **Q: Does it slow down development?**
340
- A: No! Reviews typically complete in 1-2 minutes. Runs in parallel with other checks.
341
-
342
- **Q: Can I disable it for specific PRs?**
343
- A: Yes, via PR description: `@greptile skip` (but only if not required in branch protection)
344
-
345
- **Q: Is it free?**
346
- A: Greptile has free and paid tiers. Check https://greptile.com/pricing for current plans.
347
-
348
- **Q: Does it replace code review?**
349
- A: No! It augments human review by catching technical issues, allowing humans to focus on architecture, business logic, and UX.
350
-
351
- **Q: What languages does it support?**
352
- A: Most modern languages including JavaScript, TypeScript, Python, Go, Java, Rust, etc.
353
-
354
- **Q: Can I customize what it checks for?**
355
- A: Yes, via `.greptile/config.yml` configuration file.
356
-
357
- ---
358
-
359
- ## Next Steps
360
-
361
- 1. ✅ **DONE** - Greptile Review is active and running
362
- 2. ✅ **DONE** - Greptile Quality Gate (≥4/5) is enforced in branch protection
363
- 3. ✅ **DONE** - All required checks configured for master branch
364
- 4. 🎯 **Create new PRs** and watch the quality gate in action
365
- 5. 📚 **Document** your team's policy for handling Greptile feedback
366
- 6. 🎉 **Celebrate** improved code quality!
367
-
368
- ---
369
-
370
- ## Additional Resources
371
-
372
- - **Greptile Documentation**: https://docs.greptile.com
373
- - **GitHub App Settings**: https://github.com/settings/installations
374
- - **Branch Protection Guide**: [../.github/BRANCH_PROTECTION_GUIDE.md](../.github/BRANCH_PROTECTION_GUIDE.md)
375
- - **Your PRs**: Check the [pull requests page](https://github.com/harshanandak/forge/pulls) for examples
376
-
377
- ---
378
-
379
- ## Summary
380
-
381
- **What Greptile Is:**
382
- - ✅ GitHub App providing detailed code reviews
383
- - ✅ Custom Quality Gate workflow enforcing minimum score 4.0/5
384
- - ✅ AI-powered code analysis on every PR
385
- - ✅ Detailed, actionable feedback with confidence scores
386
-
387
- **What's Now Active:**
388
- - ✅ Greptile Review (GitHub App) is installed and running
389
- - ✅ Greptile Quality Gate (≥4/5) is enforced in branch protection
390
- - ✅ PRs to master require score ≥ 4.0/5 to merge
391
- - ✅ All review comments must be resolved before merge
392
-
393
- **Result:**
394
- - 🚀 Higher code quality with enforced standards
395
- - 🐛 Fewer bugs in production
396
- - 📊 Objective quality metrics (4.0/5 minimum)
397
- - 🛡️ Automated security and best practice checks
398
- - 📚 Team learning from AI feedback
399
-
400
- Enjoy your new AI code reviewer with quality enforcement! 🤖✨