create-sdd-project 0.2.4 → 0.3.0
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/README.md +10 -10
- package/lib/config.js +1 -1
- package/lib/generator.js +7 -28
- package/lib/init-generator.js +24 -35
- package/lib/init-wizard.js +1 -1
- package/package.json +1 -1
- package/template/.claude/agents/backend-developer.md +1 -1
- package/template/.claude/agents/frontend-developer.md +1 -1
- package/template/.claude/settings.json +1 -1
- package/template/.claude/skills/bug-workflow/SKILL.md +2 -2
- package/template/.claude/skills/development-workflow/SKILL.md +18 -18
- package/template/.claude/skills/development-workflow/references/add-feature-template.md +16 -0
- package/template/.claude/skills/development-workflow/references/branching-strategy.md +1 -1
- package/template/.claude/skills/development-workflow/references/complexity-guide.md +6 -6
- package/template/.claude/skills/development-workflow/references/failure-handling.md +3 -3
- package/template/.claude/skills/development-workflow/references/pr-template.md +3 -3
- package/template/.claude/skills/development-workflow/references/ticket-template.md +3 -3
- package/template/.claude/skills/development-workflow/references/workflow-example.md +7 -7
- package/template/.claude/skills/project-memory/SKILL.md +9 -9
- package/template/.gemini/agents/backend-developer.md +1 -1
- package/template/.gemini/agents/frontend-developer.md +1 -1
- package/template/.gemini/commands/add-feature.toml +2 -0
- package/template/.gemini/commands/next-task.toml +2 -2
- package/template/.gemini/commands/show-progress.toml +2 -2
- package/template/.gemini/commands/start-task.toml +1 -1
- package/template/.gemini/skills/bug-workflow/SKILL.md +4 -4
- package/template/.gemini/skills/development-workflow/SKILL.md +18 -18
- package/template/.gemini/skills/development-workflow/references/add-feature-template.md +16 -0
- package/template/.gemini/skills/development-workflow/references/branching-strategy.md +1 -1
- package/template/.gemini/skills/development-workflow/references/complexity-guide.md +6 -6
- package/template/.gemini/skills/development-workflow/references/failure-handling.md +3 -3
- package/template/.gemini/skills/development-workflow/references/pr-template.md +3 -3
- package/template/.gemini/skills/development-workflow/references/ticket-template.md +3 -3
- package/template/.gemini/skills/development-workflow/references/workflow-example.md +7 -7
- package/template/.gemini/skills/project-memory/SKILL.md +8 -8
- package/template/AGENTS.md +5 -5
- package/template/CLAUDE.md +2 -2
- package/template/ai-specs/specs/base-standards.mdc +8 -8
- package/template/docs/project_notes/product-tracker.md +56 -0
- package/template/.claude/skills/development-workflow/references/sprint-init-template.md +0 -82
- package/template/.gemini/commands/init-sprint.toml +0 -2
- package/template/.gemini/skills/development-workflow/references/sprint-init-template.md +0 -82
- package/template/docs/project_notes/sprint-0-tracker.md +0 -66
package/README.md
CHANGED
|
@@ -36,8 +36,8 @@ Scans your project, detects your stack and architecture, and installs SDD files
|
|
|
36
36
|
Open in your AI coding tool and run:
|
|
37
37
|
|
|
38
38
|
```
|
|
39
|
-
|
|
40
|
-
start task
|
|
39
|
+
add feature "your first feature"
|
|
40
|
+
start task F001
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
The workflow skill guides you through each step with checkpoints based on your autonomy level.
|
|
@@ -55,7 +55,7 @@ SDD DevFlow combines three proven practices:
|
|
|
55
55
|
### Why use SDD DevFlow?
|
|
56
56
|
|
|
57
57
|
- **AI agents work better with structure.** Without guardrails, AI coding assistants produce inconsistent results. SDD provides the methodology, standards, and workflow that make AI output predictable and high-quality.
|
|
58
|
-
- **Institutional memory across sessions.**
|
|
58
|
+
- **Institutional memory across sessions.** Product tracker, bug logs, and decision records survive context compaction and session boundaries.
|
|
59
59
|
- **Scales from solo to team.** Start at L1 (full control) while learning, scale to L4 (full auto) for repetitive tasks.
|
|
60
60
|
- **Works with your stack.** Not opinionated about frameworks — detects and adapts to Express, Fastify, NestJS, Next.js, Nuxt, Vue, Angular, and many more.
|
|
61
61
|
|
|
@@ -79,7 +79,7 @@ SDD DevFlow combines three proven practices:
|
|
|
79
79
|
|
|
80
80
|
| Skill | Trigger | What it does |
|
|
81
81
|
|-------|---------|-------------|
|
|
82
|
-
| `development-workflow` | `start task
|
|
82
|
+
| `development-workflow` | `start task F001`, `next task`, `add feature` | Orchestrates the complete 7-step workflow |
|
|
83
83
|
| `bug-workflow` | `report bug`, `fix bug`, `hotfix needed` | Bug triage, investigation, and resolution |
|
|
84
84
|
| `project-memory` | `set up project memory`, `log a bug fix` | Maintains institutional knowledge |
|
|
85
85
|
|
|
@@ -87,7 +87,7 @@ SDD DevFlow combines three proven practices:
|
|
|
87
87
|
|
|
88
88
|
```
|
|
89
89
|
0. SPEC → spec-creator drafts specs → Spec Approval
|
|
90
|
-
1. SETUP → Branch, ticket,
|
|
90
|
+
1. SETUP → Branch, ticket, product tracker → Ticket Approval
|
|
91
91
|
2. PLAN → Planner creates implementation plan → Plan Approval
|
|
92
92
|
3. IMPLEMENT → Developer agent, TDD
|
|
93
93
|
4. FINALIZE → Tests/lint/build, validator → Commit Approval
|
|
@@ -104,7 +104,7 @@ SDD DevFlow combines three proven practices:
|
|
|
104
104
|
|
|
105
105
|
| Level | Name | Human Checkpoints | Best For |
|
|
106
106
|
|-------|------|-------------------|----------|
|
|
107
|
-
| L1 | Full Control | All 5 | First
|
|
107
|
+
| L1 | Full Control | All 5 | First feature, learning SDD |
|
|
108
108
|
| L2 | Trusted | Plan + Merge | Normal development **(default)** |
|
|
109
109
|
| L3 | Autopilot | Merge only | Well-defined, repetitive tasks |
|
|
110
110
|
| L4 | Full Auto | None (CI/CD gates only) | Bulk simple tasks |
|
|
@@ -115,7 +115,7 @@ Quality gates (tests, lint, build, validators) **always run** regardless of leve
|
|
|
115
115
|
|
|
116
116
|
Tracks institutional knowledge across sessions in `docs/project_notes/`:
|
|
117
117
|
|
|
118
|
-
- **
|
|
118
|
+
- **product-tracker.md** — Feature backlog + Active Session (context recovery after compaction)
|
|
119
119
|
- **bugs.md** — Bug log with solutions and prevention notes
|
|
120
120
|
- **decisions.md** — Architectural Decision Records (ADRs)
|
|
121
121
|
- **key_facts.md** — Project configuration, ports, URLs, branching strategy
|
|
@@ -123,7 +123,7 @@ Tracks institutional knowledge across sessions in `docs/project_notes/`:
|
|
|
123
123
|
### Automated Hooks (Claude Code)
|
|
124
124
|
|
|
125
125
|
- **Quick Scan** — After developer agents finish, a fast grep-based scan (~2s, no API calls) checks for debug code, secrets, and TODOs
|
|
126
|
-
- **Compaction Recovery** — After context compaction, injects a reminder to read the
|
|
126
|
+
- **Compaction Recovery** — After context compaction, injects a reminder to read the product tracker for context recovery
|
|
127
127
|
|
|
128
128
|
### Multi-Tool Support
|
|
129
129
|
|
|
@@ -189,7 +189,7 @@ project/
|
|
|
189
189
|
│
|
|
190
190
|
└── docs/
|
|
191
191
|
├── project_notes/ # Project memory
|
|
192
|
-
│ ├──
|
|
192
|
+
│ ├── product-tracker.md
|
|
193
193
|
│ ├── key_facts.md
|
|
194
194
|
│ ├── bugs.md
|
|
195
195
|
│ └── decisions.md
|
|
@@ -237,7 +237,7 @@ Then look for `<!-- CONFIG: ... -->` comments in the files to customize.
|
|
|
237
237
|
## Roadmap
|
|
238
238
|
|
|
239
239
|
- **Agent Teams**: Parallel execution of independent tasks (waiting for Claude Code Agent Teams to stabilize)
|
|
240
|
-
- **PM Agent + L5 Autonomous**: AI-driven
|
|
240
|
+
- **PM Agent + L5 Autonomous**: AI-driven feature orchestration with human review at milestone boundaries
|
|
241
241
|
- **Retrofit Testing**: Automated test generation for existing projects with low coverage
|
|
242
242
|
|
|
243
243
|
## License
|
package/lib/config.js
CHANGED
|
@@ -78,7 +78,7 @@ const AI_TOOLS = [
|
|
|
78
78
|
];
|
|
79
79
|
|
|
80
80
|
const AUTONOMY_LEVELS = [
|
|
81
|
-
{ level: 1, name: 'Full Control', desc: 'Human approves every checkpoint (first
|
|
81
|
+
{ level: 1, name: 'Full Control', desc: 'Human approves every checkpoint (first feature, learning SDD)' },
|
|
82
82
|
{ level: 2, name: 'Trusted', desc: 'Human reviews plans + merges only (normal development)', default: true },
|
|
83
83
|
{ level: 3, name: 'Autopilot', desc: 'Human only approves merges (well-defined, repetitive tasks)' },
|
|
84
84
|
{ level: 4, name: 'Full Auto', desc: 'No human checkpoints, CI/CD gates only (bulk simple tasks)' },
|
package/lib/generator.js
CHANGED
|
@@ -41,11 +41,7 @@ function generate(config) {
|
|
|
41
41
|
step(`Setting branching: ${config.branching}`);
|
|
42
42
|
updateBranching(dest, config);
|
|
43
43
|
|
|
44
|
-
// 6.
|
|
45
|
-
step('Setting sprint dates to today');
|
|
46
|
-
updateSprintDates(dest);
|
|
47
|
-
|
|
48
|
-
// 7. Remove agents/specs based on project type
|
|
44
|
+
// 6. Remove agents/specs based on project type
|
|
49
45
|
if (config.projectType === 'backend') {
|
|
50
46
|
step('Removing frontend agents (backend only)');
|
|
51
47
|
removeFrontendFiles(dest, config);
|
|
@@ -54,7 +50,7 @@ function generate(config) {
|
|
|
54
50
|
removeBackendFiles(dest, config);
|
|
55
51
|
}
|
|
56
52
|
|
|
57
|
-
//
|
|
53
|
+
// 7. Remove AI tool config if single tool selected
|
|
58
54
|
if (config.aiTools === 'claude') {
|
|
59
55
|
step('Removing Gemini config (Claude only)');
|
|
60
56
|
fs.rmSync(path.join(dest, '.gemini'), { recursive: true, force: true });
|
|
@@ -76,7 +72,7 @@ function generate(config) {
|
|
|
76
72
|
console.log(`\nDone! Next steps:`);
|
|
77
73
|
console.log(` cd ${path.relative(process.cwd(), dest)}`);
|
|
78
74
|
console.log(` git init && git add -A && git commit -m "chore: initialize SDD DevFlow project"`);
|
|
79
|
-
console.log(` # Open in your AI coding tool and run:
|
|
75
|
+
console.log(` # Open in your AI coding tool and run: add feature "your first feature"\n`);
|
|
80
76
|
}
|
|
81
77
|
|
|
82
78
|
// --- Helpers ---
|
|
@@ -230,19 +226,6 @@ function updateBranching(dest, config) {
|
|
|
230
226
|
// Nothing else to update — branching is read from key_facts.md at runtime
|
|
231
227
|
}
|
|
232
228
|
|
|
233
|
-
function updateSprintDates(dest) {
|
|
234
|
-
const file = path.join(dest, 'docs', 'project_notes', 'sprint-0-tracker.md');
|
|
235
|
-
const today = new Date().toISOString().split('T')[0];
|
|
236
|
-
// Calculate 2-week sprint end
|
|
237
|
-
const endDate = new Date();
|
|
238
|
-
endDate.setDate(endDate.getDate() + 14);
|
|
239
|
-
const end = endDate.toISOString().split('T')[0];
|
|
240
|
-
|
|
241
|
-
replaceInFile(file, [
|
|
242
|
-
[/\[YYYY-MM-DD\] to \[YYYY-MM-DD\]/, `${today} to ${end}`],
|
|
243
|
-
]);
|
|
244
|
-
}
|
|
245
|
-
|
|
246
229
|
function removeFrontendFiles(dest, config) {
|
|
247
230
|
// Remove frontend agents
|
|
248
231
|
for (const agent of FRONTEND_AGENTS) {
|
|
@@ -262,11 +245,7 @@ function removeFrontendFiles(dest, config) {
|
|
|
262
245
|
['├── frontend/ ← Frontend (has its own package.json)\n', ''],
|
|
263
246
|
]);
|
|
264
247
|
|
|
265
|
-
//
|
|
266
|
-
const trackerFile = path.join(dest, 'docs', 'project_notes', 'sprint-0-tracker.md');
|
|
267
|
-
replaceInFile(trackerFile, [
|
|
268
|
-
[/\n### Frontend\n\n\|.*\n\|.*\n\|.*\n/, '\n'],
|
|
269
|
-
]);
|
|
248
|
+
// Product tracker already defaults to backend — no change needed
|
|
270
249
|
}
|
|
271
250
|
|
|
272
251
|
function removeBackendFiles(dest, config) {
|
|
@@ -288,10 +267,10 @@ function removeBackendFiles(dest, config) {
|
|
|
288
267
|
['├── backend/ ← Backend (has its own package.json)\n', ''],
|
|
289
268
|
]);
|
|
290
269
|
|
|
291
|
-
//
|
|
292
|
-
const trackerFile = path.join(dest, 'docs', 'project_notes', '
|
|
270
|
+
// Update product tracker default feature type to frontend
|
|
271
|
+
const trackerFile = path.join(dest, 'docs', 'project_notes', 'product-tracker.md');
|
|
293
272
|
replaceInFile(trackerFile, [
|
|
294
|
-
[
|
|
273
|
+
['| backend | pending', '| frontend | pending'],
|
|
295
274
|
]);
|
|
296
275
|
}
|
|
297
276
|
|
package/lib/init-generator.js
CHANGED
|
@@ -72,7 +72,7 @@ function generateInit(config) {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
// 3. Copy and configure docs/
|
|
75
|
-
step('Creating docs/project_notes/ (
|
|
75
|
+
step('Creating docs/project_notes/ (product tracker, memory)');
|
|
76
76
|
ensureDir(path.join(dest, 'docs', 'project_notes'));
|
|
77
77
|
ensureDir(path.join(dest, 'docs', 'specs'));
|
|
78
78
|
ensureDir(path.join(dest, 'docs', 'tickets'));
|
|
@@ -99,14 +99,14 @@ function generateInit(config) {
|
|
|
99
99
|
skipped
|
|
100
100
|
);
|
|
101
101
|
|
|
102
|
-
//
|
|
103
|
-
const trackerPath = path.join(dest, 'docs', 'project_notes', '
|
|
102
|
+
// product-tracker.md — configure and add retrofit tasks
|
|
103
|
+
const trackerPath = path.join(dest, 'docs', 'project_notes', 'product-tracker.md');
|
|
104
104
|
if (!fs.existsSync(trackerPath)) {
|
|
105
|
-
const template = fs.readFileSync(path.join(templateDir, 'docs', 'project_notes', '
|
|
106
|
-
const configured =
|
|
105
|
+
const template = fs.readFileSync(path.join(templateDir, 'docs', 'project_notes', 'product-tracker.md'), 'utf8');
|
|
106
|
+
const configured = configureProductTracker(template, scan);
|
|
107
107
|
fs.writeFileSync(trackerPath, configured, 'utf8');
|
|
108
108
|
} else {
|
|
109
|
-
skipped.push('docs/project_notes/
|
|
109
|
+
skipped.push('docs/project_notes/product-tracker.md');
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
// docs/specs/
|
|
@@ -195,7 +195,7 @@ function generateInit(config) {
|
|
|
195
195
|
|
|
196
196
|
// Show review notes
|
|
197
197
|
console.log('');
|
|
198
|
-
console.log(' ⚠ REVIEW BEFORE YOUR FIRST
|
|
198
|
+
console.log(' ⚠ REVIEW BEFORE YOUR FIRST FEATURE:');
|
|
199
199
|
if (config.projectType !== 'frontend') {
|
|
200
200
|
console.log(' - ai-specs/specs/backend-standards.mdc — Architecture section adapted from scan');
|
|
201
201
|
}
|
|
@@ -214,7 +214,7 @@ function generateInit(config) {
|
|
|
214
214
|
} else {
|
|
215
215
|
console.log(` 📝 Test coverage appears low (${fileCount} test files found).`);
|
|
216
216
|
}
|
|
217
|
-
console.log(' Consider
|
|
217
|
+
console.log(' Consider adding retrofit testing as your first feature.');
|
|
218
218
|
}
|
|
219
219
|
|
|
220
220
|
// Prisma schema note
|
|
@@ -226,7 +226,7 @@ function generateInit(config) {
|
|
|
226
226
|
// Done
|
|
227
227
|
console.log(`\nDone! Next steps:`);
|
|
228
228
|
console.log(` git add -A && git commit -m "chore: add SDD DevFlow to existing project"`);
|
|
229
|
-
console.log(` # Open in your AI coding tool and run:
|
|
229
|
+
console.log(` # Open in your AI coding tool and run: add feature "your first feature"\n`);
|
|
230
230
|
}
|
|
231
231
|
|
|
232
232
|
// --- Helpers ---
|
|
@@ -646,40 +646,29 @@ function configureKeyFacts(template, config, scan) {
|
|
|
646
646
|
return content;
|
|
647
647
|
}
|
|
648
648
|
|
|
649
|
-
// ---
|
|
649
|
+
// --- Product Tracker Configuration ---
|
|
650
650
|
|
|
651
|
-
function
|
|
651
|
+
function configureProductTracker(template, scan) {
|
|
652
652
|
let content = template;
|
|
653
653
|
|
|
654
|
-
//
|
|
655
|
-
const
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
654
|
+
// Determine default feature type based on detected stack
|
|
655
|
+
const featureType = !scan.backend.detected && scan.frontend.detected
|
|
656
|
+
? 'frontend'
|
|
657
|
+
: scan.backend.detected && scan.frontend.detected
|
|
658
|
+
? 'fullstack'
|
|
659
|
+
: 'backend';
|
|
660
660
|
|
|
661
|
-
//
|
|
662
|
-
if (
|
|
663
|
-
content = content.replace(
|
|
664
|
-
/\n### Frontend\n\n\| # \| Task \| Status \| Notes \|\n\|---\|------\|--------\|-------\|\n\| F0\.1 \| \[Task description\] \| ⬚ \| \|\n/,
|
|
665
|
-
''
|
|
666
|
-
);
|
|
667
|
-
}
|
|
668
|
-
if (!scan.backend.detected) {
|
|
669
|
-
content = content.replace(
|
|
670
|
-
/\n### Backend\n\n\| # \| Task \| Status \| Notes \|\n\|---\|------\|--------\|-------\|\n\| B0\.1 \| \[Task description\] \| ⬚ \| \|\n/,
|
|
671
|
-
''
|
|
672
|
-
);
|
|
661
|
+
// Update default feature type in the placeholder row
|
|
662
|
+
if (featureType !== 'backend') {
|
|
663
|
+
content = content.replace('| backend | pending', `| ${featureType} | pending`);
|
|
673
664
|
}
|
|
674
665
|
|
|
675
|
-
// Add retrofit testing
|
|
666
|
+
// Add retrofit testing as first feature if coverage is low
|
|
676
667
|
if (scan.tests.estimatedCoverage === 'none' || scan.tests.estimatedCoverage === 'low') {
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
// Insert before Status Legend
|
|
668
|
+
// Use regex to match the F001 placeholder row resiliently (handles column changes)
|
|
680
669
|
content = content.replace(
|
|
681
|
-
|
|
682
|
-
|
|
670
|
+
/\| F001 \|[^\n]*\n/,
|
|
671
|
+
`| F001 | Retrofit: audit and improve test coverage | ${featureType} | pending | — | Recommended — low test coverage detected |\n| F002 | [Feature description] | ${featureType} | pending | — | |\n`
|
|
683
672
|
);
|
|
684
673
|
}
|
|
685
674
|
|
package/lib/init-wizard.js
CHANGED
|
@@ -220,7 +220,7 @@ async function runInitWizard(scanResult) {
|
|
|
220
220
|
|
|
221
221
|
console.log('\n Files to be created:');
|
|
222
222
|
console.log(' ai-specs/specs/ (4 files — standards adapted to your stack)');
|
|
223
|
-
console.log(' docs/project_notes/ (4 files —
|
|
223
|
+
console.log(' docs/project_notes/ (4 files — product tracker, memory)');
|
|
224
224
|
console.log(' docs/specs/ (API spec, UI components)');
|
|
225
225
|
console.log(' docs/tickets/ (.gitkeep)');
|
|
226
226
|
if (config.aiTools !== 'gemini') {
|
package/package.json
CHANGED
|
@@ -57,4 +57,4 @@ Follow the DDD layer order from the plan:
|
|
|
57
57
|
- **ALWAYS** run `npm test` after each TDD cycle to verify
|
|
58
58
|
- **NEVER** skip tests for "simple" code
|
|
59
59
|
- **NEVER** modify code outside the scope of the current ticket
|
|
60
|
-
- **ALWAYS** verify implementation matches the approved spec. If a deviation is needed, document it in the
|
|
60
|
+
- **ALWAYS** verify implementation matches the approved spec. If a deviation is needed, document it in the product tracker's Active Session and ask for approval
|
|
@@ -65,4 +65,4 @@ Follow the logical order from the plan:
|
|
|
65
65
|
- **ALWAYS** run `npm test` after each TDD cycle to verify
|
|
66
66
|
- **NEVER** skip tests for "simple" components
|
|
67
67
|
- **NEVER** modify code outside the scope of the current ticket
|
|
68
|
-
- **ALWAYS** verify implementation matches the approved spec. If a deviation is needed, document it in the
|
|
68
|
+
- **ALWAYS** verify implementation matches the approved spec. If a deviation is needed, document it in the product tracker's Active Session and ask for approval
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"hooks": [
|
|
20
20
|
{
|
|
21
21
|
"type": "command",
|
|
22
|
-
"command": "echo '{\"additionalContext\": \"Context was compacted. BEFORE doing anything else: read the
|
|
22
|
+
"command": "echo '{\"additionalContext\": \"Context was compacted. BEFORE doing anything else: read the product tracker Active Session section (docs/project_notes/product-tracker.md) for context recovery. Follow the Session Recovery protocol in CLAUDE.md.\"}'",
|
|
23
23
|
"statusMessage": "Injecting recovery context..."
|
|
24
24
|
}
|
|
25
25
|
]
|
|
@@ -23,7 +23,7 @@ description: "Handles bug discovery, triage, investigation, and resolution. Invo
|
|
|
23
23
|
|----------|----------|------|
|
|
24
24
|
| Critical | Immediate (<1h) | **C: Hotfix** — Confirm → Branch from main → Minimal fix → Test → Deploy → Document → Post-mortem |
|
|
25
25
|
| High | Same day | **B: Standard** — Triage → Branch → Investigate → Fix (TDD) → Validate → Document → PR |
|
|
26
|
-
| Medium | Within
|
|
26
|
+
| Medium | Within cycle | **A: Quick** — Triage → Investigate → Fix → Test → Document → Commit |
|
|
27
27
|
| Low | Backlog | **A: Quick** or escalate to backlog |
|
|
28
28
|
|
|
29
29
|
**Escalate to `development-workflow`** when: >1 day work, architectural changes needed, or significant refactoring required.
|
|
@@ -99,7 +99,7 @@ Run `production-code-validator`. Ensure no debug code, proper error handling.
|
|
|
99
99
|
|
|
100
100
|
| File | When |
|
|
101
101
|
|------|------|
|
|
102
|
-
| `
|
|
102
|
+
| `product-tracker.md` | Bug being worked on (Active Session) |
|
|
103
103
|
| `bugs.md` | Always |
|
|
104
104
|
| `decisions.md` | If architectural decision made |
|
|
105
105
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: development-workflow
|
|
3
|
-
description: "Orchestrates the complete development workflow for each
|
|
3
|
+
description: "Orchestrates the complete development workflow for each feature. Invoke with: 'start task F001', 'show progress', 'next task', or 'add feature'."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Development Workflow Skill
|
|
@@ -8,7 +8,7 @@ description: "Orchestrates the complete development workflow for each task. Invo
|
|
|
8
8
|
## Quick Reference
|
|
9
9
|
|
|
10
10
|
0. **Spec** — `spec-creator` drafts/updates specs → SPEC APPROVAL (Std/Cplx)
|
|
11
|
-
1. **Setup** — Branch, ticket,
|
|
11
|
+
1. **Setup** — Branch, ticket, product tracker → TICKET APPROVAL (Std/Cplx)
|
|
12
12
|
2. **Plan** — Planner agent writes implementation plan → PLAN APPROVAL (Std/Cplx)
|
|
13
13
|
3. **Implement** — Developer agent, TDD, real-time spec sync
|
|
14
14
|
4. **Finalize** — Tests/lint/build, `production-code-validator` → COMMIT APPROVAL
|
|
@@ -19,19 +19,19 @@ description: "Orchestrates the complete development workflow for each task. Invo
|
|
|
19
19
|
|
|
20
20
|
## Commands
|
|
21
21
|
|
|
22
|
-
- `start task
|
|
23
|
-
- `next task` — Start the next pending
|
|
24
|
-
- `show
|
|
25
|
-
- `
|
|
22
|
+
- `start task F001` — Begin working on a specific feature
|
|
23
|
+
- `next task` — Start the next pending feature from product tracker
|
|
24
|
+
- `show progress` — View feature completion status
|
|
25
|
+
- `add feature "description"` — Add a new feature to the product tracker
|
|
26
26
|
|
|
27
27
|
---
|
|
28
28
|
|
|
29
29
|
## On Skill Start
|
|
30
30
|
|
|
31
|
-
1. Read the
|
|
31
|
+
1. Read the product tracker (`docs/project_notes/product-tracker.md`) → **Active Session** section for context recovery
|
|
32
32
|
2. Read `CLAUDE.md` section 2 → **Autonomy Level**
|
|
33
33
|
3. Read `docs/project_notes/key_facts.md` → **Branching Strategy**
|
|
34
|
-
4. If resuming an active
|
|
34
|
+
4. If resuming an active feature → continue from the step recorded in the tracker's Active Session
|
|
35
35
|
|
|
36
36
|
---
|
|
37
37
|
|
|
@@ -47,7 +47,7 @@ Read the **Autonomy Level** from `CLAUDE.md` section 2.
|
|
|
47
47
|
| Commit Approval (Step 4) | Required | Auto | Auto | Auto |
|
|
48
48
|
| Merge Approval (Step 5) | Required | Required | Required | Auto |
|
|
49
49
|
|
|
50
|
-
- **Auto** = proceed without asking; log in
|
|
50
|
+
- **Auto** = proceed without asking; log in product tracker → "Auto-Approved Decisions" table
|
|
51
51
|
- **Required** = ask user explicitly; do NOT continue without approval
|
|
52
52
|
- **Quality gates always run** regardless of level (tests, lint, build, validators)
|
|
53
53
|
|
|
@@ -83,11 +83,11 @@ Ask user to classify complexity before starting. See `references/complexity-guid
|
|
|
83
83
|
|
|
84
84
|
See `references/branching-strategy.md` for details.
|
|
85
85
|
|
|
86
|
-
1. Verify
|
|
87
|
-
2. Create feature branch: `feature
|
|
86
|
+
1. Verify product tracker exists, no active feature, dependencies met
|
|
87
|
+
2. Create feature branch: `feature/<feature-id>-<short-description>`
|
|
88
88
|
3. **Std/Cplx:** Generate ticket from `references/ticket-template.md` → fill `## Spec` section
|
|
89
89
|
4. **Complex:** Also review `decisions.md` for related ADRs
|
|
90
|
-
5. Update
|
|
90
|
+
5. Update product tracker → Active Session: feature, step `1/6 (Setup)`, branch, complexity
|
|
91
91
|
|
|
92
92
|
**→ CHECKPOINT: Ticket Approval** (Std/Cplx only — Simple skips to Step 3)
|
|
93
93
|
|
|
@@ -95,7 +95,7 @@ See `references/branching-strategy.md` for details.
|
|
|
95
95
|
|
|
96
96
|
## Step 2: Plan (Standard/Complex only)
|
|
97
97
|
|
|
98
|
-
1. Use Task tool with planner agent (`backend-planner` for
|
|
98
|
+
1. Use Task tool with planner agent (`backend-planner` for backend features, `frontend-planner` for frontend features)
|
|
99
99
|
2. Agent writes Implementation Plan into ticket's `## Implementation Plan`
|
|
100
100
|
3. Update tracker: step `2/6 (Plan)`
|
|
101
101
|
|
|
@@ -115,7 +115,7 @@ See `references/branching-strategy.md` for details.
|
|
|
115
115
|
- UI components → `docs/specs/ui-components.md` (MANDATORY)
|
|
116
116
|
- Env variables → `.env.example` | ADRs → `decisions.md`
|
|
117
117
|
|
|
118
|
-
**Spec deviation** → document in
|
|
118
|
+
**Spec deviation** → document in product tracker Active Session and ask for approval.
|
|
119
119
|
|
|
120
120
|
Update tracker: step `3/6 (Implement)`, context summary.
|
|
121
121
|
|
|
@@ -154,7 +154,7 @@ Update tracker: step `5/6 (Review)`
|
|
|
154
154
|
## Step 6: Complete
|
|
155
155
|
|
|
156
156
|
1. Delete feature branch (local + remote)
|
|
157
|
-
2. Update
|
|
157
|
+
2. Update product tracker: feature → done, add to Completion Log, update progress
|
|
158
158
|
3. Record bugs in `bugs.md`, decisions in `decisions.md`
|
|
159
159
|
4. Clear Active Session → "No active work"
|
|
160
160
|
|
|
@@ -177,18 +177,18 @@ Update tracker: step `5/6 (Review)`
|
|
|
177
177
|
- `references/ticket-template.md` — Ticket format
|
|
178
178
|
- `references/pr-template.md` — PR template
|
|
179
179
|
- `references/branching-strategy.md` — Branching guide
|
|
180
|
-
- `references/
|
|
180
|
+
- `references/add-feature-template.md` — Add feature to tracker
|
|
181
181
|
- `references/complexity-guide.md` — Complexity classification
|
|
182
182
|
- `references/workflow-example.md` — Full worked example
|
|
183
183
|
- `references/failure-handling.md` — Recovery & rollbacks
|
|
184
184
|
|
|
185
185
|
## Constraints
|
|
186
186
|
|
|
187
|
-
- **One
|
|
187
|
+
- **One feature at a time** — never start a new feature before completing current
|
|
188
188
|
- **TDD mandatory** — all code needs tests
|
|
189
189
|
- **Type safety** — fully typed, no `any`
|
|
190
190
|
- **English only** — all technical artifacts
|
|
191
191
|
- **Memory first** — check `project_notes/` before changes
|
|
192
|
-
- **
|
|
192
|
+
- **Product tracker** — keep Active Session updated at every step
|
|
193
193
|
- **Correct agents** — Backend → `backend-planner` + `backend-developer`, Frontend → `frontend-planner` + `frontend-developer`
|
|
194
194
|
- **Correct base branch** — check `key_facts.md` before creating branches
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Add Feature Template
|
|
2
|
+
|
|
3
|
+
Use this template when running `add feature "description"`.
|
|
4
|
+
|
|
5
|
+
## How to Add a Feature
|
|
6
|
+
|
|
7
|
+
1. Read the product tracker (`docs/project_notes/product-tracker.md`)
|
|
8
|
+
2. Determine the next feature ID (F001, F002, ...)
|
|
9
|
+
3. Add a row to the Features table
|
|
10
|
+
4. Use `start task F001` to begin working on it
|
|
11
|
+
|
|
12
|
+
## Feature ID Convention
|
|
13
|
+
|
|
14
|
+
- **Format:** F001, F002, F003... (sequential)
|
|
15
|
+
- **Type:** backend, frontend, fullstack, infra
|
|
16
|
+
- **Branch:** `feature/<id>-<short-desc>` (e.g., `feature/F001-external-api`)
|
|
@@ -19,23 +19,23 @@ Before starting any task, ask the user to classify its complexity using **contex
|
|
|
19
19
|
|
|
20
20
|
## Examples
|
|
21
21
|
|
|
22
|
-
**Example 1 -
|
|
22
|
+
**Example 1 - Feature might overlap with existing work:**
|
|
23
23
|
```
|
|
24
|
-
What complexity level for
|
|
24
|
+
What complexity level for F003 (Implement refresh token rotation)?
|
|
25
25
|
|
|
26
26
|
1. Simple (Recommended)
|
|
27
|
-
Verify existing implementation in
|
|
27
|
+
Verify existing implementation in F001, add tests if missing
|
|
28
28
|
|
|
29
29
|
2. Standard
|
|
30
30
|
Add additional rotation logic or edge cases
|
|
31
31
|
|
|
32
|
-
3. Skip
|
|
33
|
-
Already done in
|
|
32
|
+
3. Skip F003
|
|
33
|
+
Already done in F001, move to F004 (auth controller)
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
**Example 2 - Standard new feature:**
|
|
37
37
|
```
|
|
38
|
-
What complexity level for
|
|
38
|
+
What complexity level for F002 (Create auth middleware)?
|
|
39
39
|
|
|
40
40
|
1. Simple
|
|
41
41
|
Straightforward middleware, minimal logic
|
|
@@ -68,14 +68,14 @@
|
|
|
68
68
|
|
|
69
69
|
**Recovery:**
|
|
70
70
|
1. **Identify** the blocking task/resource
|
|
71
|
-
2. **Document** the block in
|
|
71
|
+
2. **Document** the block in product tracker "Active Session" section
|
|
72
72
|
3. **Options:**
|
|
73
73
|
- Wait for blocker to resolve
|
|
74
74
|
- Switch to different task
|
|
75
75
|
- Create mock/stub to continue
|
|
76
76
|
|
|
77
|
-
**Update
|
|
78
|
-
- Change
|
|
77
|
+
**Update product tracker:**
|
|
78
|
+
- Change feature status to Blocked
|
|
79
79
|
|
|
80
80
|
---
|
|
81
81
|
|
|
@@ -14,10 +14,10 @@ gh pr create --base main --title "<type>(<scope>): <description>" --body "$(cat
|
|
|
14
14
|
|
|
15
15
|
[One paragraph: what this PR does and why]
|
|
16
16
|
|
|
17
|
-
##
|
|
17
|
+
## Feature Reference
|
|
18
18
|
|
|
19
|
-
- **
|
|
20
|
-
- **Ticket:** [docs/tickets/
|
|
19
|
+
- **Feature:** [F001]
|
|
20
|
+
- **Ticket:** [docs/tickets/feature-id.md]
|
|
21
21
|
|
|
22
22
|
## Changes
|
|
23
23
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# [
|
|
1
|
+
# [FEATURE-ID]: [Feature Title]
|
|
2
2
|
|
|
3
|
-
**
|
|
4
|
-
**Status:** In Progress | **Branch:** feature/
|
|
3
|
+
**Feature:** [ID] | **Type:** [Backend/Frontend/Fullstack]-[Feature/Bugfix/Refactor] | **Priority:** [High/Medium/Low]
|
|
4
|
+
**Status:** In Progress | **Branch:** feature/[FEATURE-ID]-[short-description]
|
|
5
5
|
**Created:** [YYYY-MM-DD] | **Dependencies:** [List or "None"]
|
|
6
6
|
|
|
7
7
|
---
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# Workflow Example:
|
|
1
|
+
# Workflow Example: Feature F001 (Simple, L2 Trusted, github-flow)
|
|
2
2
|
|
|
3
3
|
## On Skill Start
|
|
4
4
|
|
|
5
|
-
1. Read
|
|
5
|
+
1. Read product tracker → Active Session → No active feature
|
|
6
6
|
2. `CLAUDE.md` → Autonomy Level 2 (Trusted)
|
|
7
7
|
3. `key_facts.md` → branching: github-flow (base: `main`)
|
|
8
8
|
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
14
|
git checkout main && git pull
|
|
15
|
-
git checkout -b feature/
|
|
15
|
+
git checkout -b feature/F001-express-setup
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
Update
|
|
18
|
+
Update product tracker → Active Session: F001, step `1/6`, branch, complexity: Simple.
|
|
19
19
|
|
|
20
20
|
## Step 2: Plan — Skipped (Simple task)
|
|
21
21
|
|
|
@@ -72,7 +72,7 @@ git commit -m "feat(backend): initialize Express + TypeScript project
|
|
|
72
72
|
## Step 5: Review
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
|
-
git push -u origin feature/
|
|
75
|
+
git push -u origin feature/F001-express-setup
|
|
76
76
|
gh pr create --base main --title "feat(backend): initialize Express + TypeScript project" --body "..."
|
|
77
77
|
gh pr merge --squash
|
|
78
78
|
```
|
|
@@ -81,7 +81,7 @@ gh pr merge --squash
|
|
|
81
81
|
|
|
82
82
|
```bash
|
|
83
83
|
git checkout main && git pull
|
|
84
|
-
git branch -d feature/
|
|
84
|
+
git branch -d feature/F001-express-setup
|
|
85
85
|
```
|
|
86
86
|
|
|
87
|
-
Update
|
|
87
|
+
Update product tracker: F001 → done, add to Completion Log, clear Active Session.
|