forge-workflow 0.0.3 → 0.0.5

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 (209) hide show
  1. package/.claude/commands/dev.md +340 -314
  2. package/.claude/commands/plan.md +521 -478
  3. package/.claude/commands/premerge.md +176 -179
  4. package/.claude/commands/research.md +42 -42
  5. package/.claude/commands/review.md +442 -442
  6. package/.claude/commands/rollback.md +721 -721
  7. package/.claude/commands/ship.md +164 -134
  8. package/.claude/commands/sonarcloud.md +152 -152
  9. package/.claude/commands/status.md +48 -77
  10. package/.claude/commands/validate.md +282 -237
  11. package/.claude/commands/verify.md +221 -221
  12. package/.claude/rules/greptile-review-process.md +285 -285
  13. package/.claude/rules/workflow.md +105 -105
  14. package/.claude/scripts/greptile-resolve.sh +526 -526
  15. package/.claude/scripts/load-env.sh +32 -32
  16. package/.cline/workflows/dev.md +337 -311
  17. package/.cline/workflows/plan.md +518 -475
  18. package/.cline/workflows/premerge.md +173 -176
  19. package/.cline/workflows/research.md +39 -39
  20. package/.cline/workflows/review.md +439 -439
  21. package/.cline/workflows/rollback.md +718 -718
  22. package/.cline/workflows/ship.md +161 -131
  23. package/.cline/workflows/sonarcloud.md +146 -146
  24. package/.cline/workflows/status.md +45 -74
  25. package/.cline/workflows/validate.md +279 -234
  26. package/.cline/workflows/verify.md +218 -218
  27. package/.codex/config.toml +11 -11
  28. package/.codex/skills/dev/SKILL.md +340 -314
  29. package/.codex/skills/plan/SKILL.md +521 -478
  30. package/.codex/skills/premerge/SKILL.md +176 -179
  31. package/.codex/skills/research/SKILL.md +42 -42
  32. package/.codex/skills/review/SKILL.md +442 -442
  33. package/.codex/skills/rollback/SKILL.md +721 -721
  34. package/.codex/skills/ship/SKILL.md +164 -134
  35. package/.codex/skills/sonarcloud/SKILL.md +149 -149
  36. package/.codex/skills/status/SKILL.md +48 -77
  37. package/.codex/skills/validate/SKILL.md +282 -237
  38. package/.codex/skills/verify/SKILL.md +221 -221
  39. package/.cursor/commands/dev.md +337 -311
  40. package/.cursor/commands/plan.md +518 -475
  41. package/.cursor/commands/premerge.md +173 -176
  42. package/.cursor/commands/research.md +39 -39
  43. package/.cursor/commands/review.md +439 -439
  44. package/.cursor/commands/rollback.md +718 -718
  45. package/.cursor/commands/ship.md +161 -131
  46. package/.cursor/commands/sonarcloud.md +146 -146
  47. package/.cursor/commands/status.md +45 -74
  48. package/.cursor/commands/validate.md +279 -234
  49. package/.cursor/commands/verify.md +218 -218
  50. package/.cursor/rules/permissions-guidance.mdc +37 -37
  51. package/.forge/hooks/check-tdd.js +240 -240
  52. package/.github/PLUGIN_TEMPLATE.json +32 -32
  53. package/.github/prompts/dev.prompt.md +342 -316
  54. package/.github/prompts/plan.prompt.md +523 -480
  55. package/.github/prompts/premerge.prompt.md +178 -181
  56. package/.github/prompts/research.prompt.md +44 -44
  57. package/.github/prompts/review.prompt.md +444 -444
  58. package/.github/prompts/rollback.prompt.md +723 -723
  59. package/.github/prompts/ship.prompt.md +166 -136
  60. package/.github/prompts/sonarcloud.prompt.md +151 -151
  61. package/.github/prompts/status.prompt.md +50 -79
  62. package/.github/prompts/validate.prompt.md +284 -239
  63. package/.github/prompts/verify.prompt.md +223 -223
  64. package/.github/workflows/beads-to-github.yml +56 -0
  65. package/.github/workflows/github-to-beads.yml +97 -0
  66. package/.kilocode/workflows/dev.md +341 -315
  67. package/.kilocode/workflows/plan.md +522 -479
  68. package/.kilocode/workflows/premerge.md +177 -180
  69. package/.kilocode/workflows/research.md +43 -43
  70. package/.kilocode/workflows/review.md +443 -443
  71. package/.kilocode/workflows/rollback.md +722 -722
  72. package/.kilocode/workflows/ship.md +165 -135
  73. package/.kilocode/workflows/sonarcloud.md +150 -150
  74. package/.kilocode/workflows/status.md +49 -78
  75. package/.kilocode/workflows/validate.md +283 -238
  76. package/.kilocode/workflows/verify.md +222 -222
  77. package/.mcp.json.example +12 -12
  78. package/.opencode/commands/dev.md +340 -314
  79. package/.opencode/commands/plan.md +521 -478
  80. package/.opencode/commands/premerge.md +176 -179
  81. package/.opencode/commands/research.md +42 -42
  82. package/.opencode/commands/review.md +442 -442
  83. package/.opencode/commands/rollback.md +721 -721
  84. package/.opencode/commands/ship.md +164 -134
  85. package/.opencode/commands/sonarcloud.md +149 -149
  86. package/.opencode/commands/status.md +48 -77
  87. package/.opencode/commands/validate.md +282 -237
  88. package/.opencode/commands/verify.md +221 -221
  89. package/.roo/commands/dev.md +341 -315
  90. package/.roo/commands/plan.md +522 -479
  91. package/.roo/commands/premerge.md +177 -180
  92. package/.roo/commands/research.md +43 -43
  93. package/.roo/commands/review.md +443 -443
  94. package/.roo/commands/rollback.md +722 -722
  95. package/.roo/commands/ship.md +165 -135
  96. package/.roo/commands/sonarcloud.md +150 -150
  97. package/.roo/commands/status.md +49 -78
  98. package/.roo/commands/validate.md +283 -238
  99. package/.roo/commands/verify.md +222 -222
  100. package/AGENTS.md +175 -169
  101. package/CLAUDE.md +100 -99
  102. package/LICENSE +21 -21
  103. package/README.md +429 -414
  104. package/bin/forge-cmd.js +313 -313
  105. package/bin/{forge-validate.js → forge-preflight.js} +309 -303
  106. package/bin/forge.js +4596 -4232
  107. package/docs/AGENT_INSTALL_PROMPT.md +342 -342
  108. package/docs/BEADS_GITHUB_SYNC.md +251 -0
  109. package/docs/ENHANCED_ONBOARDING.md +602 -602
  110. package/docs/EXAMPLES.md +482 -482
  111. package/docs/GREPTILE_SETUP.md +400 -400
  112. package/docs/MANUAL_REVIEW_GUIDE.md +106 -106
  113. package/docs/ROADMAP.md +359 -359
  114. package/docs/SETUP.md +663 -632
  115. package/docs/TOOLCHAIN.md +630 -630
  116. package/docs/VALIDATION.md +363 -363
  117. package/install.sh +40 -1058
  118. package/lefthook.yml +39 -39
  119. package/lib/agents/README.md +198 -198
  120. package/lib/agents/claude.plugin.json +28 -28
  121. package/lib/agents/cline.plugin.json +22 -22
  122. package/lib/agents/codex.plugin.json +19 -19
  123. package/lib/agents/copilot.plugin.json +24 -24
  124. package/lib/agents/cursor.plugin.json +25 -25
  125. package/lib/agents/kilocode.plugin.json +22 -22
  126. package/lib/agents/opencode.plugin.json +20 -20
  127. package/lib/agents/roo.plugin.json +23 -23
  128. package/lib/agents-config.js +2112 -2112
  129. package/lib/beads-health-check.js +143 -0
  130. package/lib/beads-setup.js +341 -0
  131. package/lib/beads-sync-scaffold.js +260 -0
  132. package/lib/commands/dev.js +513 -513
  133. package/lib/commands/plan.js +692 -692
  134. package/lib/commands/recommend.js +119 -119
  135. package/lib/commands/ship.js +377 -377
  136. package/lib/commands/status.js +378 -378
  137. package/lib/commands/validate.js +602 -602
  138. package/lib/context-merge.js +359 -359
  139. package/lib/dep-guard/analyzer.js +294 -294
  140. package/lib/dep-guard/behavior-detector.js +98 -98
  141. package/lib/dep-guard/contract-detector.js +162 -162
  142. package/lib/dep-guard/import-detector.js +498 -498
  143. package/lib/dep-guard/path-utils.js +13 -13
  144. package/lib/dep-guard/rubric.js +120 -120
  145. package/lib/dep-guard/task-parser.js +318 -318
  146. package/lib/detect-agent.js +191 -0
  147. package/lib/detect-worktree.js +47 -0
  148. package/lib/file-hash.js +26 -0
  149. package/lib/husky-migration.js +450 -0
  150. package/lib/lefthook-check.js +65 -0
  151. package/lib/pat-setup.js +207 -0
  152. package/lib/plugin-catalog.js +350 -350
  153. package/lib/plugin-manager.js +166 -166
  154. package/lib/plugin-recommender.js +141 -141
  155. package/lib/project-discovery.js +491 -491
  156. package/lib/setup-action-log.js +139 -0
  157. package/lib/setup-summary-renderer.js +106 -0
  158. package/lib/setup-utils.js +96 -0
  159. package/lib/setup.js +192 -118
  160. package/lib/smart-merge.js +64 -0
  161. package/lib/symlink-utils.js +81 -0
  162. package/lib/workflow-profiles.js +197 -197
  163. package/package.json +131 -129
  164. package/scripts/beads-context.sh +291 -0
  165. package/scripts/beads-context.test.js +563 -0
  166. package/scripts/behavioral-judge.sh +378 -0
  167. package/scripts/benchmark.js +85 -0
  168. package/scripts/branch-protection.js +183 -0
  169. package/scripts/check-agents.js +172 -0
  170. package/scripts/commitlint.js +42 -0
  171. package/scripts/conflict-detect.sh +323 -0
  172. package/scripts/dep-guard-analyze.js +71 -0
  173. package/scripts/dep-guard.sh +811 -0
  174. package/scripts/eval_win.py +249 -0
  175. package/scripts/file-index.sh +399 -0
  176. package/scripts/github-beads-sync/comment.mjs +64 -0
  177. package/scripts/github-beads-sync/config.mjs +148 -0
  178. package/scripts/github-beads-sync/github-api.mjs +131 -0
  179. package/scripts/github-beads-sync/index.mjs +332 -0
  180. package/scripts/github-beads-sync/label-mapper.mjs +54 -0
  181. package/scripts/github-beads-sync/mapping.mjs +78 -0
  182. package/scripts/github-beads-sync/reverse-sync-cli.mjs +31 -0
  183. package/scripts/github-beads-sync/reverse-sync.mjs +138 -0
  184. package/scripts/github-beads-sync/run-bd.mjs +159 -0
  185. package/scripts/github-beads-sync/sanitize.mjs +121 -0
  186. package/scripts/github-beads-sync.config.json +26 -0
  187. package/scripts/improve-command.js +375 -0
  188. package/scripts/lib/eval-runner.js +229 -0
  189. package/scripts/lib/eval-schema.js +135 -0
  190. package/scripts/lib/eval-storage.js +78 -0
  191. package/scripts/lib/grading.js +203 -0
  192. package/scripts/lib/transcript-parser.js +63 -0
  193. package/scripts/lint.js +47 -0
  194. package/scripts/migrate-to-bun-test.js +412 -0
  195. package/scripts/run-command-eval.js +236 -0
  196. package/scripts/smart-status.sh +782 -0
  197. package/scripts/sync-commands.js +571 -0
  198. package/scripts/sync-utils.sh +460 -0
  199. package/scripts/test-dashboard.js +123 -0
  200. package/scripts/test.js +44 -0
  201. package/scripts/validate.sh +94 -0
  202. package/skills/parallel-deep-research/SKILL.md +108 -108
  203. package/skills/parallel-deep-research/evals/README.md +27 -27
  204. package/skills/parallel-deep-research/evals/evals.json +62 -62
  205. package/skills/sonarcloud-analysis/SKILL.md +171 -171
  206. package/skills/sonarcloud-analysis/evals/README.md +27 -27
  207. package/skills/sonarcloud-analysis/evals/evals.json +50 -50
  208. package/skills/sonarcloud-analysis/references/api-reference.md +466 -466
  209. package/docs/WORKFLOW.md +0 -400
@@ -1,78 +1,49 @@
1
- ---
2
- description: Check current stage and context
3
- mode: code
4
- ---
5
-
6
- Check where you are in the project and what work is in progress.
7
-
8
- # Status Check
9
-
10
- This command helps you understand the current state of the project before starting new work.
11
-
12
- ## Usage
13
-
14
- ```bash
15
- /status
16
- ```
17
-
18
- ## What This Command Does
19
-
20
- ### Step 1: Check Project Health
21
- ```bash
22
- bd stats
23
- ```
24
- - How many open / in-progress / completed issues?
25
- - Any blocked issues?
26
-
27
- ### Step 2: Check Active Work
28
- ```bash
29
- # Active Beads issues
30
- bd list --status in_progress
31
- ```
32
-
33
- For each in-progress issue, show compact progress:
34
- ```bash
35
- bash scripts/beads-context.sh parse-progress <issue-id>
36
- ```
37
- Display the compact output (e.g., "3/7 tasks done | Last: Validation logic (def5678)")
38
-
39
- Hint: `bd show <id>` for full context on any issue.
40
-
41
- ### Step 3: Review Recent Work
42
- ```bash
43
- # Recent commits
44
- git log --oneline -10
45
-
46
- # Recently completed Beads
47
- bd list --status completed --limit 5
48
- ```
49
-
50
- ### Step 4: Determine Context
51
- - **New feature**: No active work, ready to start fresh
52
- - **Continuing work**: In-progress issues found, resume where left off
53
- - **Review needed**: Work marked complete, needs review/merge
54
-
55
- ## Example Output
56
-
57
- ```
58
- ✓ Project Health: 3 open, 1 in-progress, 12 completed
59
-
60
- Active Work:
61
- - forge-ctc: Clean up stale workflow refs (in_progress)
62
- 3/7 tasks done | Last: Validation logic (def5678)
63
- → bd show forge-ctc for full context
64
-
65
- Recent Completions:
66
- - forge-uto: Sync AGENTS.md with agent cleanup (closed 2 days ago)
67
- - forge-abc: Auth refresh tokens (closed 5 days ago)
68
-
69
- Context: Continuing work
70
-
71
- Next: Resume with /dev or /validate (check issue status)
72
- ```
73
-
74
- ## Next Steps
75
-
76
- - **If starting new work**: Run `/plan <feature-name>`
77
- - **If continuing work**: Resume with appropriate phase command
78
- - **If reviewing**: Run `/review <pr-number>` or `/premerge <pr-number>`
1
+ ---
2
+ description: Check current stage and context
3
+ mode: code
4
+ ---
5
+
6
+ Check where you are in the project and what work is in progress.
7
+
8
+ # Status Check
9
+
10
+ This command helps you understand the current state of the project before starting new work.
11
+
12
+ ## Usage
13
+
14
+ ```bash
15
+ /status
16
+ ```
17
+
18
+ ## What This Command Does
19
+
20
+ ## Step 0: Sync team state
21
+
22
+ ```bash
23
+ # Sync team state before showing status
24
+ bash scripts/sync-utils.sh auto-sync
25
+ ```
26
+
27
+ ### Step 1: Smart Status (ranked issues with conflict detection)
28
+ ```bash
29
+ bash scripts/smart-status.sh
30
+ ```
31
+ This script dynamically computes and displays all issues ranked by composite score (priority, dependency impact, type, staleness, epic proximity). Output includes active sessions, conflict risk annotations, and grouped categories. No manual querying needed — the script handles everything.
32
+
33
+ For full context on any issue: `bd show <id>`
34
+
35
+ ### Step 2: Review Recent Commits
36
+ ```bash
37
+ git log --oneline -10
38
+ ```
39
+
40
+ ### Step 3: Determine Context
41
+ - **New feature**: No active work, ready to start fresh
42
+ - **Continuing work**: In-progress issues found, resume where left off
43
+ - **Review needed**: Work marked complete, needs review/merge
44
+
45
+ ## Next Steps
46
+
47
+ - **If starting new work**: Run `/plan <feature-name>`
48
+ - **If continuing work**: Resume with appropriate phase command
49
+ - **If reviewing**: Run `/review <pr-number>` or `/premerge <pr-number>`
@@ -1,238 +1,283 @@
1
- ---
2
- description: Complete validation (type/lint/tests/security)
3
- mode: code
4
- ---
5
-
6
- Run comprehensive validation including type checking, linting, code review, security review, and tests.
7
-
8
- # Validate
9
-
10
- This command validates all code before creating a pull request.
11
-
12
- ## Usage
13
-
14
- ```bash
15
- /validate
16
- ```
17
-
18
- Or use the unified validation script:
19
-
20
- ```bash
21
- bun run check # Runs all validation steps automatically (check is the npm script name; /validate is the workflow command)
22
- ```
23
-
24
- ## What This Command Does
25
-
26
- **Quick Start**: Run `bun run check` to execute the full validation pipeline (implemented in `scripts/validate.sh`). The npm script is named `check`; the workflow command is `/validate`. See individual steps below for details.
27
-
28
- ### Step 1: Type Check
29
- ```bash
30
- # Run your project's type check command
31
- bun run typecheck # or: npm run typecheck, tsc, etc.
32
- ```
33
- - Verify all TypeScript types are valid
34
- - No `any` types allowed
35
- - Strict mode enforcement
36
-
37
- ### Step 2: Lint
38
- ```bash
39
- # Run your project's lint command
40
- bun run lint # or: npm run lint, eslint ., etc.
41
- ```
42
- - Linting rules
43
- - Code style consistency
44
- - Best practices compliance
45
-
46
- ### Step 3: Code Review (if available)
47
- ```bash
48
- /code-review:code-review
49
- ```
50
- - Static code analysis
51
- - Code quality check
52
- - Potential issues flagged
53
-
54
- ### Step 4: Security Review
55
-
56
- **OWASP Top 10 Checklist**:
57
- - A01: Broken Access Control
58
- - A02: Cryptographic Failures
59
- - A03: Injection
60
- - A04: Insecure Design
61
- - A05: Security Misconfiguration
62
- - A06: Vulnerable Components
63
- - A07: Authentication Failures
64
- - A08: Data Integrity Failures
65
- - A09: Logging & Monitoring Failures
66
- - A10: Server-Side Request Forgery
67
-
68
- **Automated Security Scan**:
69
- ```bash
70
- # Run your project's security scan
71
- npm audit # or: bun audit, snyk test, etc.
72
- ```
73
-
74
- **Manual Review**:
75
- - Review security test scenarios (from design doc — `## Technical Research` section)
76
- - Verify security mitigations implemented
77
- - Check for sensitive data exposure
78
-
79
- ### Step 5: Tests
80
- ```bash
81
- # Run your project's test command
82
- bun test # or: npm run test, jest, vitest, etc.
83
- ```
84
- - All tests passing
85
- - Includes security test scenarios
86
- - TDD tests from /dev phase
87
-
88
- > **💭 Plan-Act-Reflect Checkpoint**
89
- > Before declaring validation complete:
90
- > - Are all security test scenarios from your design doc actually implemented and passing?
91
- > - Did you verify OWASP Top 10 mitigations, not just check a box?
92
- > - Are there edge cases or integration scenarios you haven't tested?
93
- >
94
- > **If unsure**: Re-read the `## Technical Research` section in `docs/plans/YYYY-MM-DD-<slug>-design.md`
95
-
96
- ## On Validation Failure: 4-Phase Debug Mode
97
-
98
- > **Iron Law: NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST**
99
- >
100
- > Every fix attempt without a diagnosed root cause wastes time and masks the real problem.
101
-
102
- ### Phase D1: Reproduce
103
-
104
- Confirm the failure is deterministic. Capture the exact error.
105
-
106
- - Run the failing command fresh — do not rely on cached output
107
- - Record: exact command, exact error message, exact line number
108
- - If intermittent: run 3 times, document frequency
109
-
110
- ### Phase D2: Root-Cause Trace
111
-
112
- Trace to the source, not the symptom. **Fix at source, not at symptom.**
113
-
114
- - Read the stack trace — where does it originate?
115
- - Is it a test bug, an implementation bug, or a config bug?
116
- - What changed recently that could have caused this?
117
- - Read the actual failing line and surrounding context
118
-
119
- ### Phase D3: Fix
120
-
121
- ONE minimal fix. ONE change at a time.
122
-
123
- 1. Write the failing test FIRST (if not already a test failure)
124
- 2. Make the smallest possible change to fix the root cause
125
- 3. Do not fix multiple things in one commit
126
- 4. Do not "also improve" unrelated code while fixing
127
-
128
- ### Phase D4: Verify
129
-
130
- Re-run full validation from the beginning.
131
-
132
- - Do not declare fixed until you have run the full validate suite
133
- - Show fresh output — not "it should be fine now"
134
- - All checks must pass, not just the one that was failing
135
-
136
- <HARD-GATE: 3+ fix attempts>
137
- STOP. Question architecture before Fix #4.
138
-
139
- If you have attempted 3+ fixes without resolution:
140
- 1. Step back — is the approach fundamentally wrong?
141
- 2. Read the original spec/design doc
142
- 3. Ask: "Am I fixing symptoms or the real problem?"
143
- 4. Consider: revert all changes and start fresh with better understanding
144
-
145
- "Quick fix for now" is not a valid fix strategy.
146
- </HARD-GATE>
147
-
148
- ### Red Flags — STOP if you hear yourself saying:
149
-
150
- - "Quick fix for now"
151
- - "It's probably X"
152
- - "I don't fully understand but this might work"
153
- - "Should be fixed now"
154
- - "It was passing earlier"
155
- - "I'm confident this is right"
156
-
157
- **None of these are evidence. Run the command. Show the output.**
158
-
159
- ### Step 6: Handle Failures
160
-
161
- If any check fails:
162
- ```bash
163
- # Create Beads issue for problems
164
- bd create "Fix <issue-description>"
165
-
166
- # Mark current issue as blocked
167
- bd update <current-id> --status blocked --comment "Blocked by <new-issue-id>"
168
-
169
- # Output what needs fixing
170
- ```
171
-
172
- If all pass:
173
-
174
- ```
175
- <HARD-GATE: /validate exit>
176
- Do NOT output any variation of "check complete", "ready to ship", or proceed to /ship
177
- until ALL FOUR show fresh output in this session:
178
-
179
- 1. Type check: [command run] [actual output] exit 0 confirmed
180
- 2. Lint: [command run] → [actual output] → 0 errors, 0 warnings confirmed
181
- 3. Tests: [command run] → [actual output] → N/N passing confirmed
182
- 4. Security scan: [command run] → [actual output] → no critical issues confirmed
183
-
184
- "Should pass", "was passing earlier", and "I'm confident" are not evidence.
185
- Run the commands. Show the output. THEN declare done.
186
-
187
- 5. Stage transition: Run `bash scripts/beads-context.sh stage-transition <id> validate ship` → exit 0 confirmed
188
- </HARD-GATE>
189
- ```
190
-
191
- ## Example Output (Success)
192
-
193
- ```
194
- ✓ Type check: Passed
195
- Lint: Passed
196
- Code review: No issues
197
- Security Review:
198
- - OWASP Top 10: All mitigations verified
199
- - Automated scan: No vulnerabilities
200
- - Manual review: Security tests passing
201
- ✓ Tests: 15/15 passing (TDD complete)
202
-
203
- Ready for /ship
204
- ```
205
-
206
- ## Example Output (Failure)
207
-
208
- ```
209
- Tests: 2/15 failing
210
- - validation.test.ts: Assertion failed
211
- - auth.test.ts: Timeout exceeded
212
-
213
- ✓ Beads issue created: bd-k8m3 "Fix validation test"
214
- Current issue marked: Blocked by bd-k8m3
215
-
216
- Fix issues then re-run /validate
217
- ```
218
-
219
- ## Integration with Workflow
220
-
221
- ```
222
- Utility: /status → Understand current context before starting
223
- Stage 1: /plan → Design intent → research → branch + worktree + task list
224
- Stage 2: /dev Implement each task with subagent-driven TDD
225
- Stage 3: /validate → Type check, lint, tests, security all fresh output (you are here)
226
- Stage 4: /ship Push + create PR
227
- Stage 5: /review Address GitHub Actions, Greptile, SonarCloud
228
- Stage 6: /premerge → Update docs, hand off PR to user
229
- Stage 7: /verify → Post-merge CI check on main
230
- ```
231
-
232
- ## Tips
233
-
234
- - **All checks must pass**: Don't proceed to /ship with failures
235
- - **Security is mandatory**: OWASP Top 10 review required for all features
236
- - **Create issues for failures**: Track problems in Beads
237
- - **TDD helps**: Tests should already pass from /dev phase
238
- - **Fix before shipping**: Resolve all issues before creating PR
1
+ ---
2
+ description: Complete validation (type/lint/tests/security)
3
+ mode: code
4
+ ---
5
+
6
+ > **Note:** Three things share the "validate" name in Forge:
7
+ > - `/validate` (this command): Workflow Stage 3 — rebases onto the base branch, then runs type/lint/test/security checks
8
+ > - `forge-preflight` (formerly forge-validate): CLI tool — checks prerequisites before a stage
9
+ > - `bun run check` (scripts/validate.sh): Local quality gate — runs type/lint/test/security checks only (does NOT rebase; assumes branch is already current with the base branch)
10
+
11
+ Run comprehensive validation including type checking, linting, code review, security review, and tests.
12
+
13
+ # Validate
14
+
15
+ This command validates all code before creating a pull request.
16
+
17
+ ## Usage
18
+
19
+ ```bash
20
+ /validate
21
+ ```
22
+
23
+ Or use the validation script (checks only — no rebase):
24
+
25
+ ```bash
26
+ bun run check # Runs lint/test/security checks only. Does NOT rebase onto the base branch.
27
+ # Use /validate for the full workflow (rebase + checks).
28
+ ```
29
+
30
+ ```
31
+ <HARD-GATE: /validate entry rebase onto latest base branch>
32
+ Before running ANY validation checks:
33
+
34
+ 0. Resolve the base branch dynamically (do NOT hardcode master or main):
35
+ BASE=$(git remote show origin 2>/dev/null | grep 'HEAD branch' | awk '{print $NF}')
36
+ if [ -z "$BASE" ] || [ "$BASE" = "(unknown)" ]; then BASE="master"; fi
37
+
38
+ This handles repos using main, master, or any other default branch.
39
+ Falls back to "master" when HEAD is unresolved (detached remote, empty repo).
40
+
41
+ 1. Fetch latest base branch:
42
+ git fetch origin "$BASE" || { echo "✗ Fetch failed — cannot verify branch freshness"; exit 1; }
43
+
44
+ The `|| { ...; exit 1; }` guard ensures fetch failures are never silently skipped.
45
+
46
+ 2. Check if branch is behind:
47
+ BEHIND=$(git rev-list --count HEAD..origin/"$BASE")
48
+
49
+ 3. If BEHIND > 0:
50
+ a. Run: git rebase origin/"$BASE" || REBASE_FAILED=1
51
+ b. If rebase succeeds (REBASE_FAILED unset): print "✓ Rebased onto latest $BASE ($BEHIND commits integrated)"
52
+ c. If rebase fails (REBASE_FAILED=1 — conflicts or any other error):
53
+ - Capture conflicting files BEFORE aborting: git diff --name-only --diff-filter=U
54
+ - Run: git rebase --abort
55
+ - Print the captured conflicting file list
56
+ - Print: "✗ Rebase conflict — resolve manually, then re-run /validate"
57
+ - STOP. Do NOT proceed to any validation checks.
58
+
59
+ 4. If BEHIND = 0:
60
+ Print "✓ Branch is up-to-date with $BASE" and continue.
61
+
62
+ Rationale: Without this step, validation checks run against stale code that doesn't
63
+ include recent base branch changes. Integration issues are only caught after the PR is
64
+ created, wasting CI cycles and review time. Rebasing here ensures /validate results
65
+ reflect the true state of what will be merged.
66
+ </HARD-GATE>
67
+ ```
68
+
69
+ ## What This Command Does
70
+
71
+ **Quick Start**: Run `bun run check` to execute the full validation pipeline (implemented in `scripts/validate.sh`). The npm script is named `check`; the workflow command is `/validate`. See individual steps below for details.
72
+
73
+ ### Step 1: Type Check
74
+ ```bash
75
+ # Run your project's type check command
76
+ bun run typecheck # or: npm run typecheck, tsc, etc.
77
+ ```
78
+ - Verify all TypeScript types are valid
79
+ - No `any` types allowed
80
+ - Strict mode enforcement
81
+
82
+ ### Step 2: Lint
83
+ ```bash
84
+ # Run your project's lint command
85
+ bun run lint # or: npm run lint, eslint ., etc.
86
+ ```
87
+ - Linting rules
88
+ - Code style consistency
89
+ - Best practices compliance
90
+
91
+ ### Step 3: Code Review (if available)
92
+ ```bash
93
+ /code-review:code-review
94
+ ```
95
+ - Static code analysis
96
+ - Code quality check
97
+ - Potential issues flagged
98
+
99
+ ### Step 4: Security Review
100
+
101
+ **OWASP Top 10 Checklist**:
102
+ - A01: Broken Access Control
103
+ - A02: Cryptographic Failures
104
+ - A03: Injection
105
+ - A04: Insecure Design
106
+ - A05: Security Misconfiguration
107
+ - A06: Vulnerable Components
108
+ - A07: Authentication Failures
109
+ - A08: Data Integrity Failures
110
+ - A09: Logging & Monitoring Failures
111
+ - A10: Server-Side Request Forgery
112
+
113
+ **Automated Security Scan**:
114
+ ```bash
115
+ # Run your project's security scan
116
+ npm audit # or: bun audit, snyk test, etc.
117
+ ```
118
+
119
+ **Manual Review**:
120
+ - Review security test scenarios (from design doc — `## Technical Research` section)
121
+ - Verify security mitigations implemented
122
+ - Check for sensitive data exposure
123
+
124
+ ### Step 5: Tests
125
+ ```bash
126
+ # Run your project's test command
127
+ bun test # or: npm run test, jest, vitest, etc.
128
+ ```
129
+ - All tests passing
130
+ - Includes security test scenarios
131
+ - TDD tests from /dev phase
132
+
133
+ > **💭 Plan-Act-Reflect Checkpoint**
134
+ > Before declaring validation complete:
135
+ > - Are all security test scenarios from your design doc actually implemented and passing?
136
+ > - Did you verify OWASP Top 10 mitigations, not just check a box?
137
+ > - Are there edge cases or integration scenarios you haven't tested?
138
+ >
139
+ > **If unsure**: Re-read the `## Technical Research` section in `docs/plans/YYYY-MM-DD-<slug>-design.md`
140
+
141
+ ## On Validation Failure: 4-Phase Debug Mode
142
+
143
+ > **Iron Law: NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST**
144
+ >
145
+ > Every fix attempt without a diagnosed root cause wastes time and masks the real problem.
146
+
147
+ ### Phase D1: Reproduce
148
+
149
+ Confirm the failure is deterministic. Capture the exact error.
150
+
151
+ - Run the failing command fresh — do not rely on cached output
152
+ - Record: exact command, exact error message, exact line number
153
+ - If intermittent: run 3 times, document frequency
154
+
155
+ ### Phase D2: Root-Cause Trace
156
+
157
+ Trace to the source, not the symptom. **Fix at source, not at symptom.**
158
+
159
+ - Read the stack trace — where does it originate?
160
+ - Is it a test bug, an implementation bug, or a config bug?
161
+ - What changed recently that could have caused this?
162
+ - Read the actual failing line and surrounding context
163
+
164
+ ### Phase D3: Fix
165
+
166
+ ONE minimal fix. ONE change at a time.
167
+
168
+ 1. Write the failing test FIRST (if not already a test failure)
169
+ 2. Make the smallest possible change to fix the root cause
170
+ 3. Do not fix multiple things in one commit
171
+ 4. Do not "also improve" unrelated code while fixing
172
+
173
+ ### Phase D4: Verify
174
+
175
+ Re-run full validation from the beginning.
176
+
177
+ - Do not declare fixed until you have run the full validate suite
178
+ - Show fresh output — not "it should be fine now"
179
+ - All checks must pass, not just the one that was failing
180
+
181
+ <HARD-GATE: 3+ fix attempts>
182
+ STOP. Question architecture before Fix #4.
183
+
184
+ If you have attempted 3+ fixes without resolution:
185
+ 1. Step back is the approach fundamentally wrong?
186
+ 2. Read the original spec/design doc
187
+ 3. Ask: "Am I fixing symptoms or the real problem?"
188
+ 4. Consider: revert all changes and start fresh with better understanding
189
+
190
+ "Quick fix for now" is not a valid fix strategy.
191
+ </HARD-GATE>
192
+
193
+ ### Red Flags — STOP if you hear yourself saying:
194
+
195
+ - "Quick fix for now"
196
+ - "It's probably X"
197
+ - "I don't fully understand but this might work"
198
+ - "Should be fixed now"
199
+ - "It was passing earlier"
200
+ - "I'm confident this is right"
201
+
202
+ **None of these are evidence. Run the command. Show the output.**
203
+
204
+ ### Step 6: Handle Failures
205
+
206
+ If any check fails:
207
+ ```bash
208
+ # Create Beads issue for problems
209
+ bd create "Fix <issue-description>"
210
+
211
+ # Mark current issue as blocked
212
+ bd update <current-id> --status blocked --comment "Blocked by <new-issue-id>"
213
+
214
+ # Output what needs fixing
215
+ ```
216
+
217
+ If all pass:
218
+
219
+ ```
220
+ <HARD-GATE: /validate exit>
221
+ Do NOT output any variation of "check complete", "ready to ship", or proceed to /ship
222
+ until ALL FOUR show fresh output in this session:
223
+
224
+ 1. Type check: [command run] [actual output] exit 0 confirmed
225
+ 2. Lint: [command run] [actual output] 0 errors, 0 warnings confirmed
226
+ 3. Tests: [command run] [actual output] N/N passing confirmed
227
+ 4. Security scan: [command run] [actual output] no critical issues confirmed
228
+
229
+ "Should pass", "was passing earlier", and "I'm confident" are not evidence.
230
+ Run the commands. Show the output. THEN declare done.
231
+
232
+ 5. Stage transition: Run `bash scripts/beads-context.sh stage-transition <id> validate ship` → exit 0 confirmed
233
+ </HARD-GATE>
234
+ ```
235
+
236
+ ## Example Output (Success)
237
+
238
+ ```
239
+ ✓ Type check: Passed
240
+ ✓ Lint: Passed
241
+ ✓ Code review: No issues
242
+ ✓ Security Review:
243
+ - OWASP Top 10: All mitigations verified
244
+ - Automated scan: No vulnerabilities
245
+ - Manual review: Security tests passing
246
+ ✓ Tests: 15/15 passing (TDD complete)
247
+
248
+ Ready for /ship
249
+ ```
250
+
251
+ ## Example Output (Failure)
252
+
253
+ ```
254
+ ✗ Tests: 2/15 failing
255
+ - validation.test.ts: Assertion failed
256
+ - auth.test.ts: Timeout exceeded
257
+
258
+ ✓ Beads issue created: bd-k8m3 "Fix validation test"
259
+ ✓ Current issue marked: Blocked by bd-k8m3
260
+
261
+ Fix issues then re-run /validate
262
+ ```
263
+
264
+ ## Integration with Workflow
265
+
266
+ ```
267
+ Utility: /status → Understand current context before starting
268
+ Stage 1: /plan → Design intent → research → branch + worktree + task list
269
+ Stage 2: /dev → Implement each task with subagent-driven TDD
270
+ Stage 3: /validate → Type check, lint, tests, security — all fresh output (you are here)
271
+ Stage 4: /ship → Push + create PR
272
+ Stage 5: /review → Address GitHub Actions, Greptile, SonarCloud
273
+ Stage 6: /premerge → Update docs, hand off PR to user
274
+ Stage 7: /verify → Post-merge CI check on main
275
+ ```
276
+
277
+ ## Tips
278
+
279
+ - **All checks must pass**: Don't proceed to /ship with failures
280
+ - **Security is mandatory**: OWASP Top 10 review required for all features
281
+ - **Create issues for failures**: Track problems in Beads
282
+ - **TDD helps**: Tests should already pass from /dev phase
283
+ - **Fix before shipping**: Resolve all issues before creating PR