forge-workflow 0.0.1
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.
- package/.claude/commands/dev.md +314 -0
- package/.claude/commands/plan.md +389 -0
- package/.claude/commands/premerge.md +179 -0
- package/.claude/commands/research.md +42 -0
- package/.claude/commands/review.md +442 -0
- package/.claude/commands/rollback.md +721 -0
- package/.claude/commands/ship.md +134 -0
- package/.claude/commands/sonarcloud.md +152 -0
- package/.claude/commands/status.md +77 -0
- package/.claude/commands/validate.md +237 -0
- package/.claude/commands/verify.md +221 -0
- package/.claude/rules/greptile-review-process.md +285 -0
- package/.claude/rules/workflow.md +105 -0
- package/.claude/scripts/greptile-resolve.sh +526 -0
- package/.claude/scripts/load-env.sh +32 -0
- package/.forge/hooks/check-tdd.js +240 -0
- package/.github/PLUGIN_TEMPLATE.json +32 -0
- package/.mcp.json.example +12 -0
- package/AGENTS.md +169 -0
- package/CLAUDE.md +99 -0
- package/LICENSE +21 -0
- package/README.md +414 -0
- package/bin/forge-cmd.js +313 -0
- package/bin/forge-validate.js +303 -0
- package/bin/forge.js +4228 -0
- package/docs/AGENT_INSTALL_PROMPT.md +342 -0
- package/docs/ENHANCED_ONBOARDING.md +602 -0
- package/docs/EXAMPLES.md +482 -0
- package/docs/GREPTILE_SETUP.md +400 -0
- package/docs/MANUAL_REVIEW_GUIDE.md +106 -0
- package/docs/ROADMAP.md +359 -0
- package/docs/SETUP.md +632 -0
- package/docs/TOOLCHAIN.md +849 -0
- package/docs/VALIDATION.md +363 -0
- package/docs/WORKFLOW.md +400 -0
- package/docs/planning/PROGRESS.md +396 -0
- package/docs/plans/.gitkeep +0 -0
- package/docs/plans/2026-02-27-forge-test-suite-v2-decisions.md +21 -0
- package/docs/plans/2026-02-27-forge-test-suite-v2-design.md +362 -0
- package/docs/plans/2026-02-27-forge-test-suite-v2-tasks.md +343 -0
- package/docs/plans/2026-03-02-superpowers-gaps-decisions.md +26 -0
- package/docs/plans/2026-03-02-superpowers-gaps-design.md +239 -0
- package/docs/plans/2026-03-02-superpowers-gaps-tasks.md +260 -0
- package/docs/plans/2026-03-04-agent-command-parity-design.md +163 -0
- package/docs/plans/2026-03-04-verify-worktree-cleanup-decisions.md +7 -0
- package/docs/plans/2026-03-04-verify-worktree-cleanup-design.md +165 -0
- package/docs/plans/2026-03-05-forge-uto-decisions.md +6 -0
- package/docs/plans/2026-03-05-forge-uto-design.md +116 -0
- package/docs/plans/2026-03-05-forge-uto-tasks.md +244 -0
- package/docs/plans/2026-03-10-command-creator-and-eval-decisions.md +52 -0
- package/docs/plans/2026-03-10-command-creator-and-eval-design.md +350 -0
- package/docs/plans/2026-03-10-command-creator-and-eval-tasks.md +426 -0
- package/docs/plans/2026-03-10-stale-workflow-refs-decisions.md +8 -0
- package/docs/plans/2026-03-10-stale-workflow-refs-design.md +80 -0
- package/docs/plans/2026-03-10-stale-workflow-refs-tasks.md +90 -0
- package/docs/plans/2026-03-14-beads-plan-context-decisions.md +9 -0
- package/docs/plans/2026-03-14-beads-plan-context-design.md +171 -0
- package/docs/plans/2026-03-14-beads-plan-context-tasks.md +160 -0
- package/docs/plans/2026-03-14-skill-eval-loop-decisions.md +33 -0
- package/docs/plans/2026-03-14-skill-eval-loop-design.md +118 -0
- package/docs/plans/2026-03-14-skill-eval-loop-results.md +78 -0
- package/docs/plans/2026-03-14-skill-eval-loop-tasks.md +160 -0
- package/docs/plans/2026-03-15-agent-command-parity-v2-decisions.md +11 -0
- package/docs/plans/2026-03-15-agent-command-parity-v2-design.md +145 -0
- package/docs/plans/2026-03-15-agent-command-parity-v2-tasks.md +211 -0
- package/docs/research/TEMPLATE.md +292 -0
- package/docs/research/advanced-testing.md +297 -0
- package/docs/research/agent-permissions.md +167 -0
- package/docs/research/dependency-chain.md +328 -0
- package/docs/research/forge-workflow-v2.md +550 -0
- package/docs/research/plugin-architecture.md +772 -0
- package/docs/research/pr4-cli-automation.md +326 -0
- package/docs/research/premerge-verify-restructure.md +205 -0
- package/docs/research/skills-restructure.md +508 -0
- package/docs/research/sonarcloud-perfection-plan.md +166 -0
- package/docs/research/sonarcloud-quality-gate.md +184 -0
- package/docs/research/superpowers-integration.md +403 -0
- package/docs/research/superpowers.md +319 -0
- package/docs/research/test-environment.md +519 -0
- package/install.sh +1062 -0
- package/lefthook.yml +39 -0
- package/lib/agents/README.md +198 -0
- package/lib/agents/claude.plugin.json +28 -0
- package/lib/agents/cline.plugin.json +22 -0
- package/lib/agents/codex.plugin.json +19 -0
- package/lib/agents/copilot.plugin.json +24 -0
- package/lib/agents/cursor.plugin.json +25 -0
- package/lib/agents/kilocode.plugin.json +22 -0
- package/lib/agents/opencode.plugin.json +20 -0
- package/lib/agents/roo.plugin.json +23 -0
- package/lib/agents-config.js +2112 -0
- package/lib/commands/dev.js +513 -0
- package/lib/commands/plan.js +696 -0
- package/lib/commands/recommend.js +119 -0
- package/lib/commands/ship.js +377 -0
- package/lib/commands/status.js +378 -0
- package/lib/commands/validate.js +602 -0
- package/lib/context-merge.js +359 -0
- package/lib/plugin-catalog.js +360 -0
- package/lib/plugin-manager.js +166 -0
- package/lib/plugin-recommender.js +141 -0
- package/lib/project-discovery.js +491 -0
- package/lib/setup.js +118 -0
- package/lib/workflow-profiles.js +203 -0
- package/package.json +115 -0
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
# Validation & Enforcement
|
|
2
|
+
|
|
3
|
+
Forge includes built-in validation and TDD enforcement to ensure quality and consistency.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Git Hooks](#git-hooks)
|
|
8
|
+
- [Validation CLI](#validation-cli)
|
|
9
|
+
- [Validators by Stage](#validators-by-stage)
|
|
10
|
+
- [Override Mechanisms](#override-mechanisms)
|
|
11
|
+
- [Configuration](#configuration)
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Git Hooks
|
|
16
|
+
|
|
17
|
+
Forge uses [Lefthook](https://github.com/evilmartians/lefthook) for fast, language-agnostic git hooks.
|
|
18
|
+
|
|
19
|
+
### Pre-Commit Hook
|
|
20
|
+
|
|
21
|
+
**Purpose**: Enforce TDD by blocking commits of source code without tests.
|
|
22
|
+
|
|
23
|
+
**Trigger**: Before every commit
|
|
24
|
+
|
|
25
|
+
**Checks**:
|
|
26
|
+
- Detects staged source files (`.js`, `.ts`, `.py`, `.go`, `.java`, `.rb`, etc.)
|
|
27
|
+
- Verifies corresponding test files exist (`.test.js`, `.spec.ts`, etc.)
|
|
28
|
+
- Excludes config files, test files, and documentation
|
|
29
|
+
|
|
30
|
+
**Behavior**:
|
|
31
|
+
When source code lacks tests, offers guided recovery:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
⚠️ Looks like you're committing source code without tests:
|
|
35
|
+
|
|
36
|
+
- src/user-service.js
|
|
37
|
+
|
|
38
|
+
📋 TDD Reminder:
|
|
39
|
+
Write tests BEFORE implementation (RED-GREEN-REFACTOR)
|
|
40
|
+
|
|
41
|
+
What would you like to do?
|
|
42
|
+
1. Unstage source files (keep tests staged)
|
|
43
|
+
2. Continue anyway (I have a good reason)
|
|
44
|
+
3. Abort commit (let me add tests)
|
|
45
|
+
|
|
46
|
+
Your choice (1-3):
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Override**:
|
|
50
|
+
```bash
|
|
51
|
+
git commit --no-verify # Skip in emergencies
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Pre-Push Hook
|
|
55
|
+
|
|
56
|
+
**Purpose**: Ensure all tests pass before pushing to remote.
|
|
57
|
+
|
|
58
|
+
**Trigger**: Before every push
|
|
59
|
+
|
|
60
|
+
**Checks**:
|
|
61
|
+
- Runs `bun test`
|
|
62
|
+
- Verifies all tests pass
|
|
63
|
+
|
|
64
|
+
**Override**:
|
|
65
|
+
```bash
|
|
66
|
+
LEFTHOOK=0 git push # Skip all hooks
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Validation CLI
|
|
72
|
+
|
|
73
|
+
The `forge-validate` CLI checks prerequisites for each workflow stage.
|
|
74
|
+
|
|
75
|
+
### Usage
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
forge-validate <command>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Commands
|
|
82
|
+
|
|
83
|
+
| Command | Purpose | When to Use |
|
|
84
|
+
|---------|---------|-------------|
|
|
85
|
+
| `status` | Check project prerequisites | Setup, onboarding |
|
|
86
|
+
| `dev` | Validate before `/dev` | Before implementation |
|
|
87
|
+
| `ship` | Validate before `/ship` | Before creating PR |
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Validators by Stage
|
|
92
|
+
|
|
93
|
+
### `forge-validate status`
|
|
94
|
+
|
|
95
|
+
**Purpose**: Check basic project setup
|
|
96
|
+
|
|
97
|
+
**Checks**:
|
|
98
|
+
- ✓ Git repository initialized
|
|
99
|
+
- ✓ `package.json` exists
|
|
100
|
+
- ✓ Test framework configured (`bun test` script)
|
|
101
|
+
- ✓ Node.js installed
|
|
102
|
+
|
|
103
|
+
**Example**:
|
|
104
|
+
```bash
|
|
105
|
+
$ forge-validate status
|
|
106
|
+
|
|
107
|
+
Checking project prerequisites...
|
|
108
|
+
|
|
109
|
+
Validation Results:
|
|
110
|
+
|
|
111
|
+
✓ Git repository
|
|
112
|
+
✓ package.json exists
|
|
113
|
+
✓ Test framework configured
|
|
114
|
+
✓ Node.js installed
|
|
115
|
+
|
|
116
|
+
✅ All checks passed!
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
### `forge-validate dev`
|
|
122
|
+
|
|
123
|
+
**Purpose**: Validate before starting implementation (`/dev`)
|
|
124
|
+
|
|
125
|
+
**Checks**:
|
|
126
|
+
- ✓ On feature branch (`feat/*`, `fix/*`, `docs/*`)
|
|
127
|
+
- ✓ Plan file exists (`.claude/plans/*.md`)
|
|
128
|
+
- ✓ Research file exists (`docs/research/*.md`)
|
|
129
|
+
- ✓ Test directory exists
|
|
130
|
+
|
|
131
|
+
**Example**:
|
|
132
|
+
```bash
|
|
133
|
+
$ forge-validate dev
|
|
134
|
+
|
|
135
|
+
Validating prerequisites for /dev stage...
|
|
136
|
+
|
|
137
|
+
Validation Results:
|
|
138
|
+
|
|
139
|
+
✓ On feature branch
|
|
140
|
+
✓ Plan file exists
|
|
141
|
+
✓ Research file exists
|
|
142
|
+
✓ Test directory exists
|
|
143
|
+
|
|
144
|
+
✅ All checks passed!
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Failed Example**:
|
|
148
|
+
```bash
|
|
149
|
+
$ forge-validate dev
|
|
150
|
+
|
|
151
|
+
Validating prerequisites for /dev stage...
|
|
152
|
+
|
|
153
|
+
Validation Results:
|
|
154
|
+
|
|
155
|
+
✗ On feature branch
|
|
156
|
+
Not on a feature branch. Create one: git checkout -b feat/your-feature
|
|
157
|
+
✓ Plan file exists
|
|
158
|
+
✗ Research file exists
|
|
159
|
+
No research file found in docs/research/. Run: /research
|
|
160
|
+
|
|
161
|
+
❌ Some checks failed. Please fix the issues above.
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
### `forge-validate ship`
|
|
167
|
+
|
|
168
|
+
**Purpose**: Validate before creating PR (`/ship`)
|
|
169
|
+
|
|
170
|
+
**Checks**:
|
|
171
|
+
- ✓ Tests exist (`.test.js`, `.spec.ts` files)
|
|
172
|
+
- ✓ Tests pass (`bun test` succeeds)
|
|
173
|
+
- ✓ Documentation updated (`README.md` or `docs/`)
|
|
174
|
+
- ✓ No uncommitted changes
|
|
175
|
+
|
|
176
|
+
**Example**:
|
|
177
|
+
```bash
|
|
178
|
+
$ forge-validate ship
|
|
179
|
+
|
|
180
|
+
Validating prerequisites for /ship stage...
|
|
181
|
+
|
|
182
|
+
Validation Results:
|
|
183
|
+
|
|
184
|
+
✓ Tests exist
|
|
185
|
+
✓ Tests pass
|
|
186
|
+
✓ Documentation updated
|
|
187
|
+
✓ No uncommitted changes
|
|
188
|
+
|
|
189
|
+
✅ All checks passed!
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Override Mechanisms
|
|
195
|
+
|
|
196
|
+
### Git Hooks
|
|
197
|
+
|
|
198
|
+
**Emergency Override** (use sparingly):
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
# Skip pre-commit hook
|
|
202
|
+
git commit --no-verify -m "Emergency hotfix"
|
|
203
|
+
|
|
204
|
+
# Skip pre-push hook
|
|
205
|
+
LEFTHOOK=0 git push
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
**When to use**:
|
|
209
|
+
- Emergency hotfixes
|
|
210
|
+
- Work-in-progress commits (before pushing)
|
|
211
|
+
- Non-code commits (docs, config)
|
|
212
|
+
|
|
213
|
+
**When NOT to use**:
|
|
214
|
+
- Regular development
|
|
215
|
+
- Public repositories
|
|
216
|
+
- Production deployments
|
|
217
|
+
|
|
218
|
+
### Validation CLI
|
|
219
|
+
|
|
220
|
+
The CLI provides guidance but doesn't block actions. You can proceed manually if checks fail.
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## Configuration
|
|
225
|
+
|
|
226
|
+
### Lefthook Configuration
|
|
227
|
+
|
|
228
|
+
Edit `lefthook.yml` to customize hooks:
|
|
229
|
+
|
|
230
|
+
```yaml
|
|
231
|
+
pre-commit:
|
|
232
|
+
commands:
|
|
233
|
+
tdd-check:
|
|
234
|
+
run: node .forge/hooks/check-tdd.js
|
|
235
|
+
stage_fixed: false
|
|
236
|
+
tags: tdd
|
|
237
|
+
glob: "*.{js,ts,jsx,tsx,py,go,java,rb}"
|
|
238
|
+
|
|
239
|
+
pre-push:
|
|
240
|
+
commands:
|
|
241
|
+
tests:
|
|
242
|
+
run: bun test
|
|
243
|
+
tags: tests
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Options**:
|
|
247
|
+
- `run`: Command to execute
|
|
248
|
+
- `stage_fixed`: Auto-stage modified files (false = safer)
|
|
249
|
+
- `tags`: Categorize hooks
|
|
250
|
+
- `glob`: File patterns to trigger hook
|
|
251
|
+
|
|
252
|
+
### Custom Test Patterns
|
|
253
|
+
|
|
254
|
+
Edit `.forge/hooks/check-tdd.js` to add custom test patterns:
|
|
255
|
+
|
|
256
|
+
```javascript
|
|
257
|
+
// Around line 72
|
|
258
|
+
const testPatterns = [
|
|
259
|
+
`${basename}.test${ext}`,
|
|
260
|
+
`${basename}.spec${ext}`,
|
|
261
|
+
`test/${basename}.test${ext}`,
|
|
262
|
+
`tests/${basename}.test${ext}`,
|
|
263
|
+
`__tests__/${basename}.test${ext}`,
|
|
264
|
+
// Add custom patterns here
|
|
265
|
+
`${dir}/__tests__/${basename}${ext}`,
|
|
266
|
+
`spec/${basename}_spec${ext}`, // RSpec style
|
|
267
|
+
];
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Validation CLI Customization
|
|
271
|
+
|
|
272
|
+
Edit `bin/forge-validate.js` to add custom validators:
|
|
273
|
+
|
|
274
|
+
```javascript
|
|
275
|
+
function validateCustomStage() {
|
|
276
|
+
console.log('Validating custom stage...\n');
|
|
277
|
+
|
|
278
|
+
check('Custom check', () => {
|
|
279
|
+
// Your validation logic
|
|
280
|
+
return true;
|
|
281
|
+
}, 'Custom error message');
|
|
282
|
+
|
|
283
|
+
return printResults();
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Installation
|
|
290
|
+
|
|
291
|
+
Hooks are automatically installed when you run:
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
# Install lefthook (one-time)
|
|
295
|
+
bun add -d lefthook
|
|
296
|
+
|
|
297
|
+
# Set up Forge
|
|
298
|
+
bunx forge setup
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
The hooks will be automatically installed in your project's `.git/hooks/` directory.
|
|
302
|
+
|
|
303
|
+
**Manual installation** (if needed):
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
# If you prefer global installation
|
|
307
|
+
bun install -g lefthook
|
|
308
|
+
|
|
309
|
+
# Install hooks
|
|
310
|
+
lefthook install
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## Troubleshooting
|
|
316
|
+
|
|
317
|
+
### Hooks not running
|
|
318
|
+
|
|
319
|
+
```bash
|
|
320
|
+
# Check lefthook installation
|
|
321
|
+
lefthook version
|
|
322
|
+
|
|
323
|
+
# Reinstall hooks
|
|
324
|
+
lefthook install
|
|
325
|
+
|
|
326
|
+
# Check git hooks directory
|
|
327
|
+
ls -la .git/hooks/
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
### False positives
|
|
331
|
+
|
|
332
|
+
If the hook incorrectly flags a file:
|
|
333
|
+
|
|
334
|
+
1. **Short-term**: Use `--no-verify` to skip
|
|
335
|
+
2. **Long-term**: Update exclusion patterns in `.forge/hooks/check-tdd.js`
|
|
336
|
+
|
|
337
|
+
### Tests failing on push
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
# Run tests locally
|
|
341
|
+
bun test
|
|
342
|
+
|
|
343
|
+
# Fix failures, then
|
|
344
|
+
git push
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
## Best Practices
|
|
350
|
+
|
|
351
|
+
1. **Write tests first**: Let the hooks guide you to TDD
|
|
352
|
+
2. **Don't abuse overrides**: Only use `--no-verify` in emergencies
|
|
353
|
+
3. **Keep tests fast**: Pre-push hooks run on every push
|
|
354
|
+
4. **Document exceptions**: If you override, explain why in commit message
|
|
355
|
+
5. **Update validators**: Customize for your project's needs
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
## See Also
|
|
360
|
+
|
|
361
|
+
- [Workflow Guide](WORKFLOW.md) - Complete 9-stage workflow
|
|
362
|
+
- [TDD Guide](../CLAUDE.md) - TDD principles and practices
|
|
363
|
+
- [Lefthook Docs](https://github.com/evilmartians/lefthook) - Full hook configuration
|