forge-workflow 0.0.4 → 0.0.6
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 +345 -340
- package/.claude/commands/plan.md +566 -521
- package/.claude/commands/premerge.md +186 -176
- package/.claude/commands/research.md +42 -42
- package/.claude/commands/review.md +448 -442
- package/.claude/commands/rollback.md +721 -721
- package/.claude/commands/ship.md +212 -164
- package/.claude/commands/sonarcloud.md +152 -152
- package/.claude/commands/status.md +90 -48
- package/.claude/commands/validate.md +288 -282
- package/.claude/commands/verify.md +269 -221
- package/.claude/rules/greptile-review-process.md +285 -285
- package/.claude/rules/workflow.md +121 -105
- package/.claude/scripts/greptile-resolve.sh +558 -526
- package/.claude/scripts/load-env.sh +32 -32
- package/.cline/workflows/dev.md +342 -337
- package/.cline/workflows/plan.md +563 -518
- package/.cline/workflows/premerge.md +183 -173
- package/.cline/workflows/research.md +39 -39
- package/.cline/workflows/review.md +445 -439
- package/.cline/workflows/rollback.md +718 -718
- package/.cline/workflows/ship.md +209 -161
- package/.cline/workflows/sonarcloud.md +146 -146
- package/.cline/workflows/status.md +87 -45
- package/.cline/workflows/validate.md +285 -279
- package/.cline/workflows/verify.md +266 -218
- package/.codex/config.toml +11 -11
- package/.codex/skills/dev/SKILL.md +345 -340
- package/.codex/skills/plan/SKILL.md +566 -521
- package/.codex/skills/premerge/SKILL.md +186 -176
- package/.codex/skills/research/SKILL.md +42 -42
- package/.codex/skills/review/SKILL.md +448 -442
- package/.codex/skills/rollback/SKILL.md +721 -721
- package/.codex/skills/ship/SKILL.md +212 -164
- package/.codex/skills/sonarcloud/SKILL.md +149 -149
- package/.codex/skills/status/SKILL.md +90 -48
- package/.codex/skills/validate/SKILL.md +288 -282
- package/.codex/skills/verify/SKILL.md +269 -221
- package/.cursor/commands/dev.md +342 -337
- package/.cursor/commands/plan.md +563 -518
- package/.cursor/commands/premerge.md +183 -173
- package/.cursor/commands/research.md +39 -39
- package/.cursor/commands/review.md +445 -439
- package/.cursor/commands/rollback.md +718 -718
- package/.cursor/commands/ship.md +209 -161
- package/.cursor/commands/sonarcloud.md +146 -146
- package/.cursor/commands/status.md +87 -45
- package/.cursor/commands/validate.md +285 -279
- package/.cursor/commands/verify.md +266 -218
- package/.cursor/rules/permissions-guidance.mdc +37 -37
- package/.forge/hooks/check-tdd.js +240 -240
- package/.github/PLUGIN_TEMPLATE.json +32 -32
- package/.github/prompts/dev.prompt.md +347 -342
- package/.github/prompts/plan.prompt.md +568 -523
- package/.github/prompts/premerge.prompt.md +188 -178
- package/.github/prompts/research.prompt.md +44 -44
- package/.github/prompts/review.prompt.md +450 -444
- package/.github/prompts/rollback.prompt.md +723 -723
- package/.github/prompts/ship.prompt.md +214 -166
- package/.github/prompts/sonarcloud.prompt.md +151 -151
- package/.github/prompts/status.prompt.md +92 -50
- package/.github/prompts/validate.prompt.md +290 -284
- package/.github/prompts/verify.prompt.md +271 -223
- package/.github/workflows/beads-to-github.yml +56 -0
- package/.github/workflows/github-to-beads.yml +97 -0
- package/.kilocode/workflows/dev.md +346 -341
- package/.kilocode/workflows/plan.md +567 -522
- package/.kilocode/workflows/premerge.md +187 -177
- package/.kilocode/workflows/research.md +43 -43
- package/.kilocode/workflows/review.md +449 -443
- package/.kilocode/workflows/rollback.md +722 -722
- package/.kilocode/workflows/ship.md +213 -165
- package/.kilocode/workflows/sonarcloud.md +150 -150
- package/.kilocode/workflows/status.md +91 -49
- package/.kilocode/workflows/validate.md +289 -283
- package/.kilocode/workflows/verify.md +270 -222
- package/.mcp.json.example +12 -12
- package/.opencode/commands/dev.md +345 -340
- package/.opencode/commands/plan.md +566 -521
- package/.opencode/commands/premerge.md +186 -176
- package/.opencode/commands/research.md +42 -42
- package/.opencode/commands/review.md +448 -442
- package/.opencode/commands/rollback.md +721 -721
- package/.opencode/commands/ship.md +212 -164
- package/.opencode/commands/sonarcloud.md +149 -149
- package/.opencode/commands/status.md +90 -48
- package/.opencode/commands/validate.md +288 -282
- package/.opencode/commands/verify.md +269 -221
- package/.roo/commands/dev.md +346 -341
- package/.roo/commands/plan.md +567 -522
- package/.roo/commands/premerge.md +187 -177
- package/.roo/commands/research.md +43 -43
- package/.roo/commands/review.md +449 -443
- package/.roo/commands/rollback.md +722 -722
- package/.roo/commands/ship.md +213 -165
- package/.roo/commands/sonarcloud.md +150 -150
- package/.roo/commands/status.md +91 -49
- package/.roo/commands/validate.md +289 -283
- package/.roo/commands/verify.md +270 -222
- package/AGENTS.md +272 -175
- package/CLAUDE.md +110 -100
- package/README.md +429 -416
- package/bin/forge-cmd.js +317 -313
- package/bin/forge-preflight.js +322 -309
- package/bin/forge.js +4765 -4303
- package/docs/AGENT_INSTALL_PROMPT.md +342 -342
- package/docs/BEADS_GITHUB_SYNC.md +251 -251
- package/docs/ENHANCED_ONBOARDING.md +612 -602
- package/docs/EXAMPLES.md +482 -482
- package/docs/GREPTILE_SETUP.md +400 -400
- package/docs/MANUAL_REVIEW_GUIDE.md +106 -106
- package/docs/ROADMAP.md +359 -359
- package/docs/SETUP.md +663 -631
- package/docs/TOOLCHAIN.md +653 -630
- package/docs/VALIDATION.md +363 -363
- package/install.sh +40 -1056
- package/lefthook.yml +50 -39
- package/lib/agents/README.md +198 -198
- package/lib/agents/claude.plugin.json +28 -28
- package/lib/agents/cline.plugin.json +22 -22
- package/lib/agents/codex.plugin.json +19 -19
- package/lib/agents/copilot.plugin.json +24 -24
- package/lib/agents/cursor.plugin.json +25 -25
- package/lib/agents/kilocode.plugin.json +22 -22
- package/lib/agents/opencode.plugin.json +20 -20
- package/lib/agents/roo.plugin.json +23 -23
- package/lib/agents-config.js +2112 -2112
- package/lib/beads-health-check.js +143 -0
- package/lib/beads-setup.js +341 -0
- package/lib/beads-sync-scaffold.js +260 -0
- package/lib/commands/_registry.js +134 -0
- package/lib/commands/clean.js +181 -0
- package/lib/commands/dev.js +571 -513
- package/lib/commands/plan.js +692 -692
- package/lib/commands/push.js +196 -0
- package/lib/commands/recommend.js +119 -119
- package/lib/commands/ship.js +377 -377
- package/lib/commands/status.js +378 -378
- package/lib/commands/sync.js +55 -0
- package/lib/commands/team.js +37 -0
- package/lib/commands/test.js +207 -0
- package/lib/commands/validate.js +602 -602
- package/lib/commands/worktree.js +310 -0
- package/lib/context-merge.js +359 -359
- package/lib/dep-guard/analyzer.js +294 -294
- package/lib/dep-guard/behavior-detector.js +98 -98
- package/lib/dep-guard/contract-detector.js +162 -162
- package/lib/dep-guard/import-detector.js +498 -498
- package/lib/dep-guard/path-utils.js +13 -13
- package/lib/dep-guard/rubric.js +120 -120
- package/lib/dep-guard/task-parser.js +318 -318
- package/lib/detect-agent.js +191 -191
- package/lib/detect-worktree.js +47 -47
- package/lib/docs-command.js +51 -0
- package/lib/docs-copy.js +50 -0
- package/lib/file-hash.js +26 -26
- package/lib/freshness-token.js +148 -0
- package/lib/greptile-match.js +80 -0
- package/lib/husky-migration.js +450 -0
- package/lib/lefthook-check.js +65 -0
- package/lib/pat-setup.js +207 -0
- package/lib/plugin-catalog.js +350 -350
- package/lib/plugin-manager.js +166 -166
- package/lib/plugin-recommender.js +141 -141
- package/lib/project-discovery.js +491 -491
- package/lib/reset.js +309 -0
- package/lib/setup-action-log.js +139 -139
- package/lib/setup-summary-renderer.js +106 -106
- package/lib/setup-utils.js +96 -0
- package/lib/setup.js +192 -192
- package/lib/smart-merge.js +64 -0
- package/lib/symlink-utils.js +81 -0
- package/lib/task-ownership.js +117 -0
- package/lib/workflow-profiles.js +197 -197
- package/package.json +131 -128
- package/scripts/beads-context.sh +426 -0
- package/scripts/beads-context.test.js +567 -0
- package/scripts/behavioral-judge.sh +378 -0
- package/scripts/benchmark.js +85 -0
- package/scripts/branch-protection.js +183 -0
- package/scripts/check-agents.js +172 -0
- package/scripts/check-forge-token.js +98 -0
- package/scripts/commitlint.js +42 -0
- package/scripts/conflict-detect.sh +323 -0
- package/scripts/dep-guard-analyze.js +71 -0
- package/scripts/dep-guard.sh +789 -0
- package/scripts/eval_win.py +249 -0
- package/scripts/file-index.sh +493 -0
- package/scripts/forge-team/index.sh +86 -0
- package/scripts/forge-team/lib/agent-prompt.sh +52 -0
- package/scripts/forge-team/lib/claim.sh +256 -0
- package/scripts/forge-team/lib/dashboard.sh +341 -0
- package/scripts/forge-team/lib/epic.sh +332 -0
- package/scripts/forge-team/lib/hooks.sh +253 -0
- package/scripts/forge-team/lib/identity.sh +235 -0
- package/scripts/forge-team/lib/sync-github.sh +317 -0
- package/scripts/forge-team/lib/verify.sh +284 -0
- package/scripts/forge-team/lib/workload.sh +296 -0
- package/scripts/forge-team/tests/agent-prompt.test.sh +72 -0
- package/scripts/forge-team/tests/claim.test.sh +179 -0
- package/scripts/forge-team/tests/dashboard.test.sh +170 -0
- package/scripts/forge-team/tests/dispatcher.test.sh +79 -0
- package/scripts/forge-team/tests/epic.test.sh +176 -0
- package/scripts/forge-team/tests/hooks.test.sh +239 -0
- package/scripts/forge-team/tests/identity.test.sh +176 -0
- package/scripts/forge-team/tests/integration.test.sh +371 -0
- package/scripts/forge-team/tests/sync-github.test.sh +209 -0
- package/scripts/forge-team/tests/verify.test.sh +314 -0
- package/scripts/forge-team/tests/workflow-integration.test.sh +43 -0
- package/scripts/forge-team/tests/workload.test.sh +209 -0
- package/scripts/github-beads-sync/comment.mjs +64 -0
- package/scripts/github-beads-sync/config.mjs +148 -0
- package/scripts/github-beads-sync/github-api.mjs +131 -0
- package/scripts/github-beads-sync/index.mjs +332 -0
- package/scripts/github-beads-sync/label-mapper.mjs +54 -0
- package/scripts/github-beads-sync/mapping.mjs +78 -0
- package/scripts/github-beads-sync/reverse-sync-cli.mjs +31 -0
- package/scripts/github-beads-sync/reverse-sync.mjs +138 -0
- package/scripts/github-beads-sync/run-bd.mjs +159 -0
- package/scripts/github-beads-sync/sanitize.mjs +121 -0
- package/scripts/github-beads-sync.config.json +26 -0
- package/scripts/improve-command.js +375 -0
- package/scripts/lib/eval-runner.js +268 -0
- package/scripts/lib/eval-schema.js +135 -0
- package/scripts/lib/eval-storage.js +78 -0
- package/scripts/lib/grading.js +203 -0
- package/scripts/lib/jsonl-lock.sh +48 -0
- package/scripts/lib/sanitize.sh +116 -0
- package/scripts/lib/transcript-parser.js +63 -0
- package/scripts/lint.js +47 -0
- package/scripts/migrate-to-bun-test.js +412 -0
- package/scripts/pr-coordinator.sh +706 -0
- package/scripts/run-command-eval.js +236 -0
- package/scripts/smart-status.sh +809 -0
- package/scripts/sync-commands.js +571 -0
- package/scripts/sync-utils.sh +455 -0
- package/scripts/test-dashboard.js +123 -0
- package/scripts/test.js +46 -0
- package/scripts/validate.sh +94 -0
- package/skills/parallel-deep-research/SKILL.md +108 -108
- package/skills/parallel-deep-research/evals/README.md +27 -27
- package/skills/parallel-deep-research/evals/evals.json +62 -62
- package/skills/sonarcloud-analysis/SKILL.md +171 -171
- package/skills/sonarcloud-analysis/evals/README.md +27 -27
- package/skills/sonarcloud-analysis/evals/evals.json +50 -50
- package/skills/sonarcloud-analysis/references/api-reference.md +466 -466
- package/.cursor/hooks/state/continual-learning-index.json +0 -19
- package/.cursor/hooks/state/continual-learning.json +0 -8
package/AGENTS.md
CHANGED
|
@@ -1,175 +1,272 @@
|
|
|
1
|
-
# Project Workflow Instructions
|
|
2
|
-
|
|
3
|
-
## 7-Stage TDD-First Workflow
|
|
4
|
-
|
|
5
|
-
This project enforces a **strict TDD-first development workflow** with 7 stages:
|
|
6
|
-
|
|
7
|
-
| Stage | Command | Purpose | Required For |
|
|
8
|
-
|-------|-------------|-----------------------------------------------------------|--------------|
|
|
9
|
-
| 1 | `/plan` | Design intent → research → branch + worktree + task list | Critical, Standard, Refactor |
|
|
10
|
-
| 2 | `/dev` | Subagent-driven TDD per task (spec + quality review) | All types |
|
|
11
|
-
| 3 | `/validate` | Validate + 4-phase debug mode on failure | All types |
|
|
12
|
-
| 4 | `/ship` | Create PR with documentation | All types |
|
|
13
|
-
| 5 | `/review` | Address ALL PR feedback | Critical, Standard |
|
|
14
|
-
| 6 | `/premerge` | Complete docs on feature branch, hand off PR | All types |
|
|
15
|
-
| 7 | `/verify` | Post-merge health check (CI, deployments) | All types |
|
|
16
|
-
|
|
17
|
-
**Utility**: `/status` — Context check before starting work (not a numbered stage)
|
|
18
|
-
|
|
19
|
-
## Automatic Change Classification
|
|
20
|
-
|
|
21
|
-
When the user requests work, **you MUST automatically classify** the change type:
|
|
22
|
-
|
|
23
|
-
### Critical (Full 7-stage workflow)
|
|
24
|
-
**Triggers:** Security, authentication, payments, breaking changes, new architecture, data migrations
|
|
25
|
-
**Example:** "Add OAuth login", "Migrate database schema", "Implement payment gateway"
|
|
26
|
-
**Workflow:** plan → dev → validate → ship → review → premerge → verify
|
|
27
|
-
|
|
28
|
-
### Standard (6-stage workflow)
|
|
29
|
-
**Triggers:** Normal features, enhancements, new components
|
|
30
|
-
**Example:** "Add user profile page", "Create notification system"
|
|
31
|
-
**Workflow:** plan → dev → validate → ship → review → premerge
|
|
32
|
-
|
|
33
|
-
### Simple (3-stage workflow, skip plan)
|
|
34
|
-
**Triggers:** Bug fixes, UI tweaks, small changes, minor refactors
|
|
35
|
-
**Example:** "Fix button color", "Update validation message", "Adjust padding"
|
|
36
|
-
**Workflow:** dev → validate → ship
|
|
37
|
-
|
|
38
|
-
### Hotfix (Emergency 3-stage workflow)
|
|
39
|
-
**Triggers:** Production emergencies, critical bugs affecting users
|
|
40
|
-
**Example:** "Production payment processing down", "Security vulnerability fix"
|
|
41
|
-
**Workflow:** dev → validate → ship (immediate merge allowed)
|
|
42
|
-
|
|
43
|
-
### Docs (Documentation-only workflow)
|
|
44
|
-
**Triggers:** Documentation updates, README changes, comment improvements
|
|
45
|
-
**Example:** "Update README", "Add API documentation"
|
|
46
|
-
**Workflow:** verify → ship
|
|
47
|
-
|
|
48
|
-
### Refactor (5-stage workflow for safe cleanup)
|
|
49
|
-
**Triggers:** Code cleanup, performance optimization, technical debt reduction
|
|
50
|
-
**Example:** "Refactor auth service", "Extract utility functions"
|
|
51
|
-
**Workflow:** plan → dev → validate → ship → premerge
|
|
52
|
-
|
|
53
|
-
## Enforcement Philosophy
|
|
54
|
-
|
|
55
|
-
**Conversational, not blocking** - Offer solutions when prerequisites are missing:
|
|
56
|
-
|
|
57
|
-
❌ **Don't:** "ERROR: Research required for critical features"
|
|
58
|
-
✅ **Do:** "Before implementation, I should research OAuth best practices. I can:
|
|
59
|
-
1. Auto-research now with parallel-deep-research (~5 min)
|
|
60
|
-
2. Use your research if you have it
|
|
61
|
-
3. Skip (not recommended for security features)
|
|
62
|
-
|
|
63
|
-
What would you prefer?"
|
|
64
|
-
|
|
65
|
-
**Create accountability for skips:**
|
|
66
|
-
|
|
67
|
-
"Skipping tests creates technical debt. I'll:
|
|
68
|
-
✓ Allow this commit
|
|
69
|
-
✓ Create follow-up Beads issue for tests
|
|
70
|
-
✓ Document in commit message as [tech-debt]
|
|
71
|
-
|
|
72
|
-
Proceed?"
|
|
73
|
-
|
|
74
|
-
**Dynamic commands — no hardcoded examples:**
|
|
75
|
-
|
|
76
|
-
Command files (`.claude/commands/*.md` and agent equivalents) must never hardcode example output when a script generates that output dynamically. Reference the script and describe what it does — don't duplicate its output with fake data that becomes stale.
|
|
77
|
-
|
|
78
|
-
## TDD Development (Stage 2: /dev)
|
|
79
|
-
|
|
80
|
-
**Subagent-driven per-task implementation loop:**
|
|
81
|
-
|
|
82
|
-
1. **Read task list** → Pre-made task list from `/plan` Phase 3 at `docs/plans/YYYY-MM-DD-<slug>-tasks.md`
|
|
83
|
-
2. **Dispatch implementer subagent per task** → Fresh context, complete task text, relevant design doc sections
|
|
84
|
-
3. **TDD inside implementer** → RED-GREEN-REFACTOR enforced by HARD-GATE:
|
|
85
|
-
- RED: Write failing test first (must run test and show failing output)
|
|
86
|
-
- GREEN: Implement minimal code to pass (must show passing output)
|
|
87
|
-
- REFACTOR: Clean up while keeping tests green
|
|
88
|
-
4. **Spec compliance review** → Spec reviewer checks every task before quality review
|
|
89
|
-
5. **Code quality review** → Quality reviewer checks after spec compliance ✅
|
|
90
|
-
6. **Decision gate** → 7-dimension impact scoring when spec gap found; score routes to PROCEED/SPEC-REVIEWER/BLOCKED
|
|
91
|
-
|
|
92
|
-
**Example execution:**
|
|
93
|
-
```
|
|
94
|
-
/dev starts:
|
|
95
|
-
✓ Read task list: docs/plans/2026-02-26-stripe-billing-tasks.md (8 tasks)
|
|
96
|
-
✓ Created decisions log: docs/plans/2026-02-26-stripe-billing-decisions.md
|
|
97
|
-
|
|
98
|
-
Task 1: Types and interfaces
|
|
99
|
-
✓ Implementer: test written → failing → implementation → passing → committed
|
|
100
|
-
✓ Spec review: ✅
|
|
101
|
-
✓ Quality review: ✅
|
|
102
|
-
Decision gates: 0
|
|
103
|
-
|
|
104
|
-
Task 2: Validation logic
|
|
105
|
-
✓ Implementer: test written → failing → implementation → passing
|
|
106
|
-
⚠️ Decision gate fired (score: 2/14 — PROCEED)
|
|
107
|
-
Gap: Error message format not specified in design doc
|
|
108
|
-
Choice: Use { code, message } object (conservative, documented)
|
|
109
|
-
✓ Spec review: ✅
|
|
110
|
-
✓ Quality review: ✅
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
## State Management (Single Source of Truth)
|
|
114
|
-
|
|
115
|
-
> GitHub issue lifecycle may sync to Beads via CI -- see [docs/BEADS_GITHUB_SYNC.md](docs/BEADS_GITHUB_SYNC.md).
|
|
116
|
-
|
|
117
|
-
**All workflow state stored in Beads metadata** (survives compaction):
|
|
118
|
-
|
|
119
|
-
```json
|
|
120
|
-
{
|
|
121
|
-
"id": "bd-x7y2",
|
|
122
|
-
"type": "critical",
|
|
123
|
-
"currentStage": "dev",
|
|
124
|
-
"completedStages": ["plan"],
|
|
125
|
-
"skippedStages": [],
|
|
126
|
-
"workflowDecisions": {
|
|
127
|
-
"classification": "critical",
|
|
128
|
-
"reason": "Payment processing, PCI compliance required",
|
|
129
|
-
"userOverride": false
|
|
130
|
-
},
|
|
131
|
-
"parallelTracks": [
|
|
132
|
-
{
|
|
133
|
-
"name": "API endpoints",
|
|
134
|
-
"agent": "backend-architect",
|
|
135
|
-
"status": "in_progress",
|
|
136
|
-
"tddPhase": "GREEN"
|
|
137
|
-
}
|
|
138
|
-
]
|
|
139
|
-
}
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
## Git Hooks (Automatic Enforcement)
|
|
143
|
-
|
|
144
|
-
**Pre-commit hook enforces TDD:**
|
|
145
|
-
- Blocks commits if source code modified without test files
|
|
146
|
-
- Offers guided recovery (add tests now, skip with tech debt tracking, emergency override)
|
|
147
|
-
- No AI decision required - automatic validation
|
|
148
|
-
|
|
149
|
-
**Pre-push hook validates tests:**
|
|
150
|
-
- All tests must pass before push
|
|
151
|
-
- Can skip for hotfixes with documentation
|
|
152
|
-
|
|
153
|
-
## Documentation Index (Context Pointers)
|
|
154
|
-
|
|
155
|
-
**Detailed command instructions** are located in:
|
|
156
|
-
- [.claude/commands/status.md](.claude/commands/status.md) - How to check current context (utility)
|
|
157
|
-
- [.claude/commands/plan.md](.claude/commands/plan.md) - How to plan features (3 phases: design intent + research + branch/worktree/tasks)
|
|
158
|
-
- [.claude/commands/dev.md](.claude/commands/dev.md) - How to implement with subagent-driven TDD and decision gate
|
|
159
|
-
- [.claude/commands/validate.md](.claude/commands/validate.md) - How to run validation (with HARD-GATE exit)
|
|
160
|
-
- [.claude/commands/ship.md](.claude/commands/ship.md) - How to create PRs
|
|
161
|
-
- [.claude/commands/review.md](.claude/commands/review.md) - How to address PR feedback (with HARD-GATE exit)
|
|
162
|
-
- [.claude/commands/premerge.md](.claude/commands/premerge.md) - How to complete docs and hand off PR for merge
|
|
163
|
-
- [.claude/commands/verify.md](.claude/commands/verify.md) - How to verify post-merge health
|
|
164
|
-
|
|
165
|
-
**Planning documents** (created by `/plan`, consumed by `/dev`):
|
|
166
|
-
- `docs/plans/YYYY-MM-DD-<slug>-design.md` - Design intent + technical research
|
|
167
|
-
- `docs/plans/YYYY-MM-DD-<slug>-tasks.md` - Task list with TDD steps
|
|
168
|
-
- `docs/plans/YYYY-MM-DD-<slug>-decisions.md` - Decisions log from /dev
|
|
169
|
-
|
|
170
|
-
**Comprehensive workflow guide:**
|
|
171
|
-
- This file (AGENTS.md) is the single source of truth for the complete workflow
|
|
172
|
-
- [docs/TOOLCHAIN.md](docs/TOOLCHAIN.md) - Tool setup and configuration
|
|
173
|
-
- [docs/VALIDATION.md](docs/VALIDATION.md) - Enforcement and validation details
|
|
174
|
-
|
|
175
|
-
**Load these files when you need detailed instructions for a specific stage.**
|
|
1
|
+
# Project Workflow Instructions
|
|
2
|
+
|
|
3
|
+
## 7-Stage TDD-First Workflow
|
|
4
|
+
|
|
5
|
+
This project enforces a **strict TDD-first development workflow** with 7 stages:
|
|
6
|
+
|
|
7
|
+
| Stage | Command | Purpose | Required For |
|
|
8
|
+
|-------|-------------|-----------------------------------------------------------|--------------|
|
|
9
|
+
| 1 | `/plan` | Design intent → research → branch + worktree + task list | Critical, Standard, Refactor |
|
|
10
|
+
| 2 | `/dev` | Subagent-driven TDD per task (spec + quality review) | All types |
|
|
11
|
+
| 3 | `/validate` | Validate + 4-phase debug mode on failure | All types |
|
|
12
|
+
| 4 | `/ship` | Create PR with documentation | All types |
|
|
13
|
+
| 5 | `/review` | Address ALL PR feedback | Critical, Standard |
|
|
14
|
+
| 6 | `/premerge` | Complete docs on feature branch, hand off PR | All types |
|
|
15
|
+
| 7 | `/verify` | Post-merge health check (CI, deployments) | All types |
|
|
16
|
+
|
|
17
|
+
**Utility**: `/status` — Context check before starting work (not a numbered stage)
|
|
18
|
+
|
|
19
|
+
## Automatic Change Classification
|
|
20
|
+
|
|
21
|
+
When the user requests work, **you MUST automatically classify** the change type:
|
|
22
|
+
|
|
23
|
+
### Critical (Full 7-stage workflow)
|
|
24
|
+
**Triggers:** Security, authentication, payments, breaking changes, new architecture, data migrations
|
|
25
|
+
**Example:** "Add OAuth login", "Migrate database schema", "Implement payment gateway"
|
|
26
|
+
**Workflow:** plan → dev → validate → ship → review → premerge → verify
|
|
27
|
+
|
|
28
|
+
### Standard (6-stage workflow)
|
|
29
|
+
**Triggers:** Normal features, enhancements, new components
|
|
30
|
+
**Example:** "Add user profile page", "Create notification system"
|
|
31
|
+
**Workflow:** plan → dev → validate → ship → review → premerge
|
|
32
|
+
|
|
33
|
+
### Simple (3-stage workflow, skip plan)
|
|
34
|
+
**Triggers:** Bug fixes, UI tweaks, small changes, minor refactors
|
|
35
|
+
**Example:** "Fix button color", "Update validation message", "Adjust padding"
|
|
36
|
+
**Workflow:** dev → validate → ship
|
|
37
|
+
|
|
38
|
+
### Hotfix (Emergency 3-stage workflow)
|
|
39
|
+
**Triggers:** Production emergencies, critical bugs affecting users
|
|
40
|
+
**Example:** "Production payment processing down", "Security vulnerability fix"
|
|
41
|
+
**Workflow:** dev → validate → ship (immediate merge allowed)
|
|
42
|
+
|
|
43
|
+
### Docs (Documentation-only workflow)
|
|
44
|
+
**Triggers:** Documentation updates, README changes, comment improvements
|
|
45
|
+
**Example:** "Update README", "Add API documentation"
|
|
46
|
+
**Workflow:** verify → ship
|
|
47
|
+
|
|
48
|
+
### Refactor (5-stage workflow for safe cleanup)
|
|
49
|
+
**Triggers:** Code cleanup, performance optimization, technical debt reduction
|
|
50
|
+
**Example:** "Refactor auth service", "Extract utility functions"
|
|
51
|
+
**Workflow:** plan → dev → validate → ship → premerge
|
|
52
|
+
|
|
53
|
+
## Enforcement Philosophy
|
|
54
|
+
|
|
55
|
+
**Conversational, not blocking** - Offer solutions when prerequisites are missing:
|
|
56
|
+
|
|
57
|
+
❌ **Don't:** "ERROR: Research required for critical features"
|
|
58
|
+
✅ **Do:** "Before implementation, I should research OAuth best practices. I can:
|
|
59
|
+
1. Auto-research now with parallel-deep-research (~5 min)
|
|
60
|
+
2. Use your research if you have it
|
|
61
|
+
3. Skip (not recommended for security features)
|
|
62
|
+
|
|
63
|
+
What would you prefer?"
|
|
64
|
+
|
|
65
|
+
**Create accountability for skips:**
|
|
66
|
+
|
|
67
|
+
"Skipping tests creates technical debt. I'll:
|
|
68
|
+
✓ Allow this commit
|
|
69
|
+
✓ Create follow-up Beads issue for tests
|
|
70
|
+
✓ Document in commit message as [tech-debt]
|
|
71
|
+
|
|
72
|
+
Proceed?"
|
|
73
|
+
|
|
74
|
+
**Dynamic commands — no hardcoded examples:**
|
|
75
|
+
|
|
76
|
+
Command files (`.claude/commands/*.md` and agent equivalents) must never hardcode example output when a script generates that output dynamically. Reference the script and describe what it does — don't duplicate its output with fake data that becomes stale.
|
|
77
|
+
|
|
78
|
+
## TDD Development (Stage 2: /dev)
|
|
79
|
+
|
|
80
|
+
**Subagent-driven per-task implementation loop:**
|
|
81
|
+
|
|
82
|
+
1. **Read task list** → Pre-made task list from `/plan` Phase 3 at `docs/plans/YYYY-MM-DD-<slug>-tasks.md`
|
|
83
|
+
2. **Dispatch implementer subagent per task** → Fresh context, complete task text, relevant design doc sections
|
|
84
|
+
3. **TDD inside implementer** → RED-GREEN-REFACTOR enforced by HARD-GATE:
|
|
85
|
+
- RED: Write failing test first (must run test and show failing output)
|
|
86
|
+
- GREEN: Implement minimal code to pass (must show passing output)
|
|
87
|
+
- REFACTOR: Clean up while keeping tests green
|
|
88
|
+
4. **Spec compliance review** → Spec reviewer checks every task before quality review
|
|
89
|
+
5. **Code quality review** → Quality reviewer checks after spec compliance ✅
|
|
90
|
+
6. **Decision gate** → 7-dimension impact scoring when spec gap found; score routes to PROCEED/SPEC-REVIEWER/BLOCKED
|
|
91
|
+
|
|
92
|
+
**Example execution:**
|
|
93
|
+
```
|
|
94
|
+
/dev starts:
|
|
95
|
+
✓ Read task list: docs/plans/2026-02-26-stripe-billing-tasks.md (8 tasks)
|
|
96
|
+
✓ Created decisions log: docs/plans/2026-02-26-stripe-billing-decisions.md
|
|
97
|
+
|
|
98
|
+
Task 1: Types and interfaces
|
|
99
|
+
✓ Implementer: test written → failing → implementation → passing → committed
|
|
100
|
+
✓ Spec review: ✅
|
|
101
|
+
✓ Quality review: ✅
|
|
102
|
+
Decision gates: 0
|
|
103
|
+
|
|
104
|
+
Task 2: Validation logic
|
|
105
|
+
✓ Implementer: test written → failing → implementation → passing
|
|
106
|
+
⚠️ Decision gate fired (score: 2/14 — PROCEED)
|
|
107
|
+
Gap: Error message format not specified in design doc
|
|
108
|
+
Choice: Use { code, message } object (conservative, documented)
|
|
109
|
+
✓ Spec review: ✅
|
|
110
|
+
✓ Quality review: ✅
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## State Management (Single Source of Truth)
|
|
114
|
+
|
|
115
|
+
> GitHub issue lifecycle may sync to Beads via CI -- see [docs/BEADS_GITHUB_SYNC.md](docs/BEADS_GITHUB_SYNC.md).
|
|
116
|
+
|
|
117
|
+
**All workflow state stored in Beads metadata** (survives compaction):
|
|
118
|
+
|
|
119
|
+
```json
|
|
120
|
+
{
|
|
121
|
+
"id": "bd-x7y2",
|
|
122
|
+
"type": "critical",
|
|
123
|
+
"currentStage": "dev",
|
|
124
|
+
"completedStages": ["plan"],
|
|
125
|
+
"skippedStages": [],
|
|
126
|
+
"workflowDecisions": {
|
|
127
|
+
"classification": "critical",
|
|
128
|
+
"reason": "Payment processing, PCI compliance required",
|
|
129
|
+
"userOverride": false
|
|
130
|
+
},
|
|
131
|
+
"parallelTracks": [
|
|
132
|
+
{
|
|
133
|
+
"name": "API endpoints",
|
|
134
|
+
"agent": "backend-architect",
|
|
135
|
+
"status": "in_progress",
|
|
136
|
+
"tddPhase": "GREEN"
|
|
137
|
+
}
|
|
138
|
+
]
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Git Hooks (Automatic Enforcement)
|
|
143
|
+
|
|
144
|
+
**Pre-commit hook enforces TDD:**
|
|
145
|
+
- Blocks commits if source code modified without test files
|
|
146
|
+
- Offers guided recovery (add tests now, skip with tech debt tracking, emergency override)
|
|
147
|
+
- No AI decision required - automatic validation
|
|
148
|
+
|
|
149
|
+
**Pre-push hook validates tests:**
|
|
150
|
+
- All tests must pass before push
|
|
151
|
+
- Can skip for hotfixes with documentation
|
|
152
|
+
|
|
153
|
+
## Documentation Index (Context Pointers)
|
|
154
|
+
|
|
155
|
+
**Detailed command instructions** are located in:
|
|
156
|
+
- [.claude/commands/status.md](.claude/commands/status.md) - How to check current context (utility)
|
|
157
|
+
- [.claude/commands/plan.md](.claude/commands/plan.md) - How to plan features (3 phases: design intent + research + branch/worktree/tasks)
|
|
158
|
+
- [.claude/commands/dev.md](.claude/commands/dev.md) - How to implement with subagent-driven TDD and decision gate
|
|
159
|
+
- [.claude/commands/validate.md](.claude/commands/validate.md) - How to run validation (with HARD-GATE exit)
|
|
160
|
+
- [.claude/commands/ship.md](.claude/commands/ship.md) - How to create PRs
|
|
161
|
+
- [.claude/commands/review.md](.claude/commands/review.md) - How to address PR feedback (with HARD-GATE exit)
|
|
162
|
+
- [.claude/commands/premerge.md](.claude/commands/premerge.md) - How to complete docs and hand off PR for merge
|
|
163
|
+
- [.claude/commands/verify.md](.claude/commands/verify.md) - How to verify post-merge health
|
|
164
|
+
|
|
165
|
+
**Planning documents** (created by `/plan`, consumed by `/dev`):
|
|
166
|
+
- `docs/plans/YYYY-MM-DD-<slug>-design.md` - Design intent + technical research
|
|
167
|
+
- `docs/plans/YYYY-MM-DD-<slug>-tasks.md` - Task list with TDD steps
|
|
168
|
+
- `docs/plans/YYYY-MM-DD-<slug>-decisions.md` - Decisions log from /dev
|
|
169
|
+
|
|
170
|
+
**Comprehensive workflow guide:**
|
|
171
|
+
- This file (AGENTS.md) is the single source of truth for the complete workflow
|
|
172
|
+
- [docs/TOOLCHAIN.md](docs/TOOLCHAIN.md) - Tool setup and configuration
|
|
173
|
+
- [docs/VALIDATION.md](docs/VALIDATION.md) - Enforcement and validation details
|
|
174
|
+
|
|
175
|
+
**Load these files when you need detailed instructions for a specific stage.**
|
|
176
|
+
|
|
177
|
+
## Descriptive Context Convention
|
|
178
|
+
|
|
179
|
+
Every stage transition should carry structured context so the next stage (or a new session) can resume without re-reading the full design doc. This convention is **advisory** — warnings are informational, not blocking.
|
|
180
|
+
|
|
181
|
+
### Required Fields at Each Stage Exit
|
|
182
|
+
|
|
183
|
+
| Stage Exit | Summary | Decisions | Artifacts | Next |
|
|
184
|
+
|------------|---------|-----------|-----------|------|
|
|
185
|
+
| /plan | Design approach chosen | Key trade-offs resolved | Design doc, task list paths | First dev task focus |
|
|
186
|
+
| /dev | Tasks completed, gate count | Spec gaps encountered | Changed files, test files | Validation priorities |
|
|
187
|
+
| /validate | All checks pass/fail summary | Failures diagnosed | Scripts/commands run | Ship readiness |
|
|
188
|
+
| /ship | PR created, checks pending | Template sections filled | PR URL, branch name | Review focus areas |
|
|
189
|
+
| /review | All feedback addressed | Comment resolutions | Fixed files, commit SHAs | Doc update needs |
|
|
190
|
+
| /premerge | Docs updated, CI green | N/A | Updated doc files | Merge instructions |
|
|
191
|
+
|
|
192
|
+
### Validation Command
|
|
193
|
+
|
|
194
|
+
Run at each stage exit to check for missing context:
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
bash scripts/beads-context.sh validate <beads-issue-id>
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
This checks: (1) issue has a description, (2) at least one stage transition exists, (3) most recent transition has a summary, (4) design metadata is set if past the plan stage. Exits 0 when context checks run (even if warnings are found); exits 1 only if the issue cannot be retrieved.
|
|
201
|
+
|
|
202
|
+
### Field Definitions
|
|
203
|
+
|
|
204
|
+
- **Summary**: 1-2 sentence recap of what was accomplished in this stage. Example: `--summary "All 5 tasks done, 1 decision gate fired"`
|
|
205
|
+
- **Decisions**: Key choices made during this stage that affect downstream work. Example: `--decisions "Used streaming parser over DOM for memory efficiency"`
|
|
206
|
+
- **Artifacts**: File paths or URLs produced by this stage. Example: `--artifacts "lib/parser.js test/parser.test.js docs/plans/2026-03-26-parser-design.md"`
|
|
207
|
+
- **Next**: Guidance for the next stage on what to focus on. Example: `--next "Run lint first — streaming approach may trigger no-await rule"`
|
|
208
|
+
|
|
209
|
+
### Usage in Stage Transitions
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
# Basic (backward compatible)
|
|
213
|
+
bash scripts/beads-context.sh stage-transition <id> dev validate
|
|
214
|
+
|
|
215
|
+
# With context fields (recommended)
|
|
216
|
+
bash scripts/beads-context.sh stage-transition <id> dev validate \
|
|
217
|
+
--summary "All 5 tasks done, 0 gates fired" \
|
|
218
|
+
--decisions "Used approach A per design doc" \
|
|
219
|
+
--artifacts "lib/foo.js test/foo.test.js" \
|
|
220
|
+
--next "Run type check and lint"
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Enforcement Level
|
|
224
|
+
|
|
225
|
+
This convention is **advisory only**. The `validate` subcommand prints warnings but always exits 0. It does not block any stage transition. The goal is to build good habits, not to create friction.
|
|
226
|
+
|
|
227
|
+
<!-- BEGIN BEADS INTEGRATION v:1 profile:minimal hash:ca08a54f -->
|
|
228
|
+
## Beads Issue Tracker
|
|
229
|
+
|
|
230
|
+
This project uses **bd (beads)** for issue tracking. Run `bd prime` to see full workflow context and commands.
|
|
231
|
+
|
|
232
|
+
### Quick Reference
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
bd ready # Find available work
|
|
236
|
+
bd show <id> # View issue details
|
|
237
|
+
bd update <id> --claim # Claim work
|
|
238
|
+
bd close <id> # Complete work
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Rules
|
|
242
|
+
|
|
243
|
+
- Use `bd` for ALL task tracking — do NOT use TodoWrite, TaskCreate, or markdown TODO lists. Exception: `/plan` Phase 3 generates task lists at `docs/plans/YYYY-MM-DD-<slug>-tasks.md` — these are approved artifacts consumed by `/dev`, but `bd` remains the source of truth for issue state. GitHub issues may be used for external/public tracking; CI may sync GitHub issue lifecycle to Beads (see `docs/BEADS_GITHUB_SYNC.md`).
|
|
244
|
+
- Run `bd prime` for detailed command reference and session close protocol
|
|
245
|
+
- Use `bd remember` for persistent knowledge — do NOT use MEMORY.md files
|
|
246
|
+
|
|
247
|
+
## Session Completion
|
|
248
|
+
|
|
249
|
+
**When ending a work session**, you MUST complete ALL steps below. Work is NOT complete until `git push` succeeds.
|
|
250
|
+
|
|
251
|
+
**MANDATORY WORKFLOW:**
|
|
252
|
+
|
|
253
|
+
1. **File issues for remaining work** - Create issues for anything that needs follow-up
|
|
254
|
+
2. **Run quality gates** (if code changed) - Tests, linters, builds
|
|
255
|
+
3. **Update issue status** - Close finished work, update in-progress items
|
|
256
|
+
4. **PUSH TO REMOTE** - This is MANDATORY:
|
|
257
|
+
```bash
|
|
258
|
+
git pull --rebase
|
|
259
|
+
bd dolt push # requires Dolt-backed Beads — run 'bd init' if missing
|
|
260
|
+
git push
|
|
261
|
+
git status # MUST show "up to date with origin"
|
|
262
|
+
```
|
|
263
|
+
5. **Clean up** - Clear stashes, prune remote branches
|
|
264
|
+
6. **Verify** - All changes committed AND pushed
|
|
265
|
+
7. **Hand off** - Provide context for next session
|
|
266
|
+
|
|
267
|
+
**CRITICAL RULES:**
|
|
268
|
+
- Work is NOT complete until `git push` succeeds
|
|
269
|
+
- NEVER stop before pushing - that leaves work stranded locally
|
|
270
|
+
- NEVER say "ready to push when you are" - YOU must push
|
|
271
|
+
- If push fails, resolve and retry until it succeeds
|
|
272
|
+
<!-- END BEADS INTEGRATION -->
|