specsmd 0.0.0-dev.51 → 0.0.0-dev.53
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/flows/fire/agents/builder/agent.md +9 -2
- package/flows/fire/agents/builder/skills/run-execute/SKILL.md +9 -0
- package/flows/fire/agents/builder/skills/run-execute/templates/plan.md.hbs +61 -0
- package/flows/fire/agents/builder/skills/walkthrough-generate/SKILL.md +1 -1
- package/flows/fire/agents/builder/skills/walkthrough-generate/templates/walkthrough.md.hbs +77 -0
- package/flows/fire/agents/planner/skills/design-doc-generate/SKILL.md +2 -1
- package/flows/fire/agents/planner/skills/design-doc-generate/templates/design.md.hbs +76 -0
- package/flows/fire/agents/planner/skills/intent-capture/SKILL.md +1 -1
- package/flows/fire/agents/planner/skills/intent-capture/templates/brief.md.hbs +40 -0
- package/flows/fire/agents/planner/skills/work-item-decompose/SKILL.md +2 -1
- package/flows/fire/agents/planner/skills/work-item-decompose/templates/work-item.md.hbs +40 -0
- package/flows/fire/memory-bank.yaml +1 -0
- package/lib/constants.js +8 -2
- package/lib/installer.js +2 -1
- package/package.json +1 -1
|
@@ -153,14 +153,21 @@ Each run creates a folder with its artifacts:
|
|
|
153
153
|
|
|
154
154
|
```
|
|
155
155
|
.specs-fire/runs/{run-id}/
|
|
156
|
+
├── plan.md # Approved implementation plan (confirm/validate modes)
|
|
156
157
|
├── run.md # Run log (metadata, files changed, decisions)
|
|
157
158
|
└── walkthrough.md # Implementation walkthrough (for human review)
|
|
158
159
|
```
|
|
159
160
|
|
|
161
|
+
**The trio**:
|
|
162
|
+
- **plan.md** — What we intended to do (approved at checkpoint)
|
|
163
|
+
- **run.md** — What happened during execution
|
|
164
|
+
- **walkthrough.md** — Human-readable summary after completion
|
|
165
|
+
|
|
160
166
|
| Artifact | Location | Template |
|
|
161
167
|
|----------|----------|----------|
|
|
162
|
-
|
|
|
163
|
-
|
|
|
168
|
+
| Plan | `.specs-fire/runs/{run-id}/plan.md` | `skills/run-execute/templates/plan.md.hbs` |
|
|
169
|
+
| Run Log | `.specs-fire/runs/{run-id}/run.md` | (generated by script) |
|
|
170
|
+
| Walkthrough | `.specs-fire/runs/{run-id}/walkthrough.md` | `skills/walkthrough-generate/templates/walkthrough.md.hbs` |
|
|
164
171
|
|
|
165
172
|
---
|
|
166
173
|
|
|
@@ -105,6 +105,10 @@ Before executing scripts, ensure required dependencies are installed:
|
|
|
105
105
|
<action>Adjust plan</action>
|
|
106
106
|
<goto step="3b"/>
|
|
107
107
|
</check>
|
|
108
|
+
<check if="response == y">
|
|
109
|
+
<action>Save approved plan using template: templates/plan.md.hbs</action>
|
|
110
|
+
<action>Write to: .specs-fire/runs/{run-id}/plan.md</action>
|
|
111
|
+
</check>
|
|
108
112
|
<goto step="5"/>
|
|
109
113
|
</step>
|
|
110
114
|
|
|
@@ -136,6 +140,11 @@ Before executing scripts, ensure required dependencies are installed:
|
|
|
136
140
|
<action>Adjust plan</action>
|
|
137
141
|
<goto step="3c"/>
|
|
138
142
|
</check>
|
|
143
|
+
<check if="response == y">
|
|
144
|
+
<action>Save approved plan using template: templates/plan.md.hbs</action>
|
|
145
|
+
<action>Write to: .specs-fire/runs/{run-id}/plan.md</action>
|
|
146
|
+
<action>Include reference to design doc in plan</action>
|
|
147
|
+
</check>
|
|
139
148
|
<goto step="5"/>
|
|
140
149
|
</step>
|
|
141
150
|
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
run: {{run_id}}
|
|
3
|
+
work_item: {{work_item_id}}
|
|
4
|
+
intent: {{intent_id}}
|
|
5
|
+
mode: {{mode}}
|
|
6
|
+
checkpoint: {{checkpoint_type}}
|
|
7
|
+
approved_at: {{approved_at}}
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Implementation Plan: {{title}}
|
|
11
|
+
|
|
12
|
+
## Approach
|
|
13
|
+
|
|
14
|
+
{{approach}}
|
|
15
|
+
|
|
16
|
+
## Files to Create
|
|
17
|
+
|
|
18
|
+
| File | Purpose |
|
|
19
|
+
|------|---------|
|
|
20
|
+
{{#each files_to_create}}
|
|
21
|
+
| `{{this.path}}` | {{this.purpose}} |
|
|
22
|
+
{{/each}}
|
|
23
|
+
{{#unless files_to_create}}
|
|
24
|
+
| (none) | |
|
|
25
|
+
{{/unless}}
|
|
26
|
+
|
|
27
|
+
## Files to Modify
|
|
28
|
+
|
|
29
|
+
| File | Changes |
|
|
30
|
+
|------|---------|
|
|
31
|
+
{{#each files_to_modify}}
|
|
32
|
+
| `{{this.path}}` | {{this.changes}} |
|
|
33
|
+
{{/each}}
|
|
34
|
+
{{#unless files_to_modify}}
|
|
35
|
+
| (none) | |
|
|
36
|
+
{{/unless}}
|
|
37
|
+
|
|
38
|
+
{{#if tests}}
|
|
39
|
+
## Tests
|
|
40
|
+
|
|
41
|
+
| Test File | Coverage |
|
|
42
|
+
|-----------|----------|
|
|
43
|
+
{{#each tests}}
|
|
44
|
+
| `{{this.path}}` | {{this.coverage}} |
|
|
45
|
+
{{/each}}
|
|
46
|
+
{{/if}}
|
|
47
|
+
|
|
48
|
+
{{#if technical_details}}
|
|
49
|
+
## Technical Details
|
|
50
|
+
|
|
51
|
+
{{technical_details}}
|
|
52
|
+
{{/if}}
|
|
53
|
+
|
|
54
|
+
{{#if design_doc}}
|
|
55
|
+
## Based on Design Doc
|
|
56
|
+
|
|
57
|
+
Reference: `{{design_doc}}`
|
|
58
|
+
{{/if}}
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
*Plan approved at checkpoint. Execution follows.*
|
|
@@ -61,7 +61,7 @@ Generate implementation walkthrough for human review after run completion.
|
|
|
61
61
|
</step>
|
|
62
62
|
|
|
63
63
|
<step n="5" title="Generate Walkthrough">
|
|
64
|
-
<action
|
|
64
|
+
<action>Generate walkthrough using template: templates/walkthrough.md.hbs</action>
|
|
65
65
|
<action>Save to: .specs-fire/runs/{run-id}/walkthrough.md</action>
|
|
66
66
|
<output>
|
|
67
67
|
Walkthrough generated: .specs-fire/runs/{run-id}/walkthrough.md
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
run: {{run_id}}
|
|
3
|
+
work_item: {{work_item_id}}
|
|
4
|
+
intent: {{intent_id}}
|
|
5
|
+
generated: {{generated}}
|
|
6
|
+
mode: {{mode}}
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Implementation Walkthrough: {{title}}
|
|
10
|
+
|
|
11
|
+
## Summary
|
|
12
|
+
|
|
13
|
+
{{summary}}
|
|
14
|
+
|
|
15
|
+
## Files Changed
|
|
16
|
+
|
|
17
|
+
### Created
|
|
18
|
+
|
|
19
|
+
| File | Purpose |
|
|
20
|
+
|------|---------|
|
|
21
|
+
{{#each files_created}}
|
|
22
|
+
| `{{this.path}}` | {{this.purpose}} |
|
|
23
|
+
{{/each}}
|
|
24
|
+
{{#unless files_created}}
|
|
25
|
+
| (none) | |
|
|
26
|
+
{{/unless}}
|
|
27
|
+
|
|
28
|
+
### Modified
|
|
29
|
+
|
|
30
|
+
| File | Changes |
|
|
31
|
+
|------|---------|
|
|
32
|
+
{{#each files_modified}}
|
|
33
|
+
| `{{this.path}}` | {{this.changes}} |
|
|
34
|
+
{{/each}}
|
|
35
|
+
{{#unless files_modified}}
|
|
36
|
+
| (none) | |
|
|
37
|
+
{{/unless}}
|
|
38
|
+
|
|
39
|
+
## Key Implementation Details
|
|
40
|
+
|
|
41
|
+
{{#each implementation_details}}
|
|
42
|
+
### {{@index}}. {{this.title}}
|
|
43
|
+
|
|
44
|
+
{{this.description}}
|
|
45
|
+
|
|
46
|
+
{{/each}}
|
|
47
|
+
|
|
48
|
+
## Decisions Made
|
|
49
|
+
|
|
50
|
+
| Decision | Choice | Rationale |
|
|
51
|
+
|----------|--------|-----------|
|
|
52
|
+
{{#each decisions}}
|
|
53
|
+
| {{this.decision}} | {{this.choice}} | {{this.rationale}} |
|
|
54
|
+
{{/each}}
|
|
55
|
+
{{#unless decisions}}
|
|
56
|
+
| (none) | | |
|
|
57
|
+
{{/unless}}
|
|
58
|
+
|
|
59
|
+
## How to Verify
|
|
60
|
+
|
|
61
|
+
{{#each verification_steps}}
|
|
62
|
+
{{@index}}. **{{this.title}}**
|
|
63
|
+
```bash
|
|
64
|
+
{{this.command}}
|
|
65
|
+
```
|
|
66
|
+
Expected: {{this.expected}}
|
|
67
|
+
|
|
68
|
+
{{/each}}
|
|
69
|
+
|
|
70
|
+
## Test Coverage
|
|
71
|
+
|
|
72
|
+
- Tests added: {{tests_added}}
|
|
73
|
+
- Coverage: {{coverage}}%
|
|
74
|
+
- Status: {{test_status}}
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
*Generated by FIRE Run {{run_id}}*
|
|
@@ -119,7 +119,8 @@ Generate design documents for Validate mode work items (Checkpoint 1).
|
|
|
119
119
|
|
|
120
120
|
<step n="9" title="Handle Response">
|
|
121
121
|
<check if="response == y">
|
|
122
|
-
<action>
|
|
122
|
+
<action>Generate design doc using template: templates/design.md.hbs</action>
|
|
123
|
+
<action>Save to: .specs-fire/intents/{intent-id}/work-items/{id}-design.md</action>
|
|
123
124
|
<action>Mark checkpoint 1 as passed</action>
|
|
124
125
|
<output>
|
|
125
126
|
Design approved. Ready for implementation planning.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
work_item: {{work_item_id}}
|
|
3
|
+
intent: {{intent_id}}
|
|
4
|
+
created: {{created}}
|
|
5
|
+
mode: validate
|
|
6
|
+
checkpoint_1: {{checkpoint_status}}
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Design: {{title}}
|
|
10
|
+
|
|
11
|
+
## Summary
|
|
12
|
+
|
|
13
|
+
{{summary}}
|
|
14
|
+
|
|
15
|
+
## Key Decisions
|
|
16
|
+
|
|
17
|
+
| Decision | Choice | Rationale |
|
|
18
|
+
|----------|--------|-----------|
|
|
19
|
+
{{#each decisions}}
|
|
20
|
+
| {{this.decision}} | {{this.choice}} | {{this.rationale}} |
|
|
21
|
+
{{/each}}
|
|
22
|
+
|
|
23
|
+
{{#if domain_model}}
|
|
24
|
+
## Domain Model
|
|
25
|
+
|
|
26
|
+
### Entities
|
|
27
|
+
{{#each domain_model.entities}}
|
|
28
|
+
- **{{this.name}}**: {{this.description}}
|
|
29
|
+
{{/each}}
|
|
30
|
+
|
|
31
|
+
### Value Objects
|
|
32
|
+
{{#each domain_model.value_objects}}
|
|
33
|
+
- **{{this.name}}**: {{this.description}}
|
|
34
|
+
{{/each}}
|
|
35
|
+
{{/if}}
|
|
36
|
+
|
|
37
|
+
## Technical Approach
|
|
38
|
+
|
|
39
|
+
### Component Diagram
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
{{component_diagram}}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
{{#if api_endpoints}}
|
|
46
|
+
### API Endpoints
|
|
47
|
+
|
|
48
|
+
{{#each api_endpoints}}
|
|
49
|
+
- `{{this.method}} {{this.path}}` - {{this.description}}
|
|
50
|
+
{{/each}}
|
|
51
|
+
{{/if}}
|
|
52
|
+
|
|
53
|
+
{{#if database_changes}}
|
|
54
|
+
### Database Changes
|
|
55
|
+
|
|
56
|
+
```sql
|
|
57
|
+
{{database_changes}}
|
|
58
|
+
```
|
|
59
|
+
{{/if}}
|
|
60
|
+
|
|
61
|
+
## Risks & Mitigations
|
|
62
|
+
|
|
63
|
+
| Risk | Impact | Mitigation |
|
|
64
|
+
|------|--------|------------|
|
|
65
|
+
{{#each risks}}
|
|
66
|
+
| {{this.risk}} | {{this.impact}} | {{this.mitigation}} |
|
|
67
|
+
{{/each}}
|
|
68
|
+
|
|
69
|
+
## Implementation Checklist
|
|
70
|
+
|
|
71
|
+
{{#each checklist}}
|
|
72
|
+
- [ ] {{this}}
|
|
73
|
+
{{/each}}
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
*Checkpoint 1 approved: {{approved_at}}*
|
|
@@ -85,7 +85,7 @@ Capture user intent through guided conversation.
|
|
|
85
85
|
|
|
86
86
|
<step n="4" title="Generate Intent Brief">
|
|
87
87
|
<action>Create intent ID from title (kebab-case)</action>
|
|
88
|
-
<action>Generate intent brief using template</action>
|
|
88
|
+
<action>Generate intent brief using template: templates/brief.md.hbs</action>
|
|
89
89
|
<action>Create directory: .specs-fire/intents/{intent-id}/</action>
|
|
90
90
|
<action>Save: .specs-fire/intents/{intent-id}/brief.md</action>
|
|
91
91
|
</step>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: {{id}}
|
|
3
|
+
title: {{title}}
|
|
4
|
+
status: {{status}}
|
|
5
|
+
created: {{created}}
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Intent: {{title}}
|
|
9
|
+
|
|
10
|
+
## Goal
|
|
11
|
+
|
|
12
|
+
{{goal}}
|
|
13
|
+
|
|
14
|
+
## Users
|
|
15
|
+
|
|
16
|
+
{{users}}
|
|
17
|
+
|
|
18
|
+
## Problem
|
|
19
|
+
|
|
20
|
+
{{problem}}
|
|
21
|
+
|
|
22
|
+
## Success Criteria
|
|
23
|
+
|
|
24
|
+
{{#each success_criteria}}
|
|
25
|
+
- {{this}}
|
|
26
|
+
{{/each}}
|
|
27
|
+
|
|
28
|
+
## Constraints
|
|
29
|
+
|
|
30
|
+
{{#each constraints}}
|
|
31
|
+
- {{this}}
|
|
32
|
+
{{/each}}
|
|
33
|
+
|
|
34
|
+
## Notes
|
|
35
|
+
|
|
36
|
+
{{#if notes}}
|
|
37
|
+
{{notes}}
|
|
38
|
+
{{else}}
|
|
39
|
+
(none)
|
|
40
|
+
{{/if}}
|
|
@@ -132,7 +132,8 @@ Break an intent into discrete, executable work items.
|
|
|
132
132
|
<step n="7" title="Save Work Items">
|
|
133
133
|
<check if="approved">
|
|
134
134
|
<action>Create .specs-fire/intents/{intent-id}/work-items/</action>
|
|
135
|
-
<action>For each work item,
|
|
135
|
+
<action>For each work item, generate using template: templates/work-item.md.hbs</action>
|
|
136
|
+
<action>Save each to: .specs-fire/intents/{intent-id}/work-items/{work-item-id}.md</action>
|
|
136
137
|
<action>Update state.yaml with work items list</action>
|
|
137
138
|
</check>
|
|
138
139
|
</step>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: {{id}}
|
|
3
|
+
title: {{title}}
|
|
4
|
+
intent: {{intent}}
|
|
5
|
+
complexity: {{complexity}}
|
|
6
|
+
mode: {{mode}}
|
|
7
|
+
status: {{status}}
|
|
8
|
+
depends_on: [{{#each depends_on}}{{this}}{{#unless @last}}, {{/unless}}{{/each}}]
|
|
9
|
+
created: {{created}}
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Work Item: {{title}}
|
|
13
|
+
|
|
14
|
+
## Description
|
|
15
|
+
|
|
16
|
+
{{description}}
|
|
17
|
+
|
|
18
|
+
## Acceptance Criteria
|
|
19
|
+
|
|
20
|
+
{{#each acceptance_criteria}}
|
|
21
|
+
- [ ] {{this}}
|
|
22
|
+
{{/each}}
|
|
23
|
+
|
|
24
|
+
## Technical Notes
|
|
25
|
+
|
|
26
|
+
{{#if technical_notes}}
|
|
27
|
+
{{technical_notes}}
|
|
28
|
+
{{else}}
|
|
29
|
+
(none)
|
|
30
|
+
{{/if}}
|
|
31
|
+
|
|
32
|
+
## Dependencies
|
|
33
|
+
|
|
34
|
+
{{#if depends_on}}
|
|
35
|
+
{{#each depends_on}}
|
|
36
|
+
- {{this}}
|
|
37
|
+
{{/each}}
|
|
38
|
+
{{else}}
|
|
39
|
+
(none)
|
|
40
|
+
{{/if}}
|
|
@@ -79,6 +79,7 @@ schema:
|
|
|
79
79
|
work-item: ".specs-fire/intents/{intent-id}/work-items/{work-item-id}.md"
|
|
80
80
|
runs: ".specs-fire/runs/"
|
|
81
81
|
run-folder: ".specs-fire/runs/{run-id}/"
|
|
82
|
+
plan: ".specs-fire/runs/{run-id}/plan.md"
|
|
82
83
|
run-log: ".specs-fire/runs/{run-id}/run.md"
|
|
83
84
|
walkthrough: ".specs-fire/runs/{run-id}/walkthrough.md"
|
|
84
85
|
standards: ".specs-fire/standards/"
|
package/lib/constants.js
CHANGED
|
@@ -14,7 +14,7 @@ const THEME_COLORS = {
|
|
|
14
14
|
const FLOWS = {
|
|
15
15
|
fire: {
|
|
16
16
|
name: 'FIRE',
|
|
17
|
-
description: 'Rapid execution - Solo devs or small teams, brownfield, 0-2 adaptive checkpoints',
|
|
17
|
+
description: 'Rapid execution - Solo devs or small teams, brownfield/monorepo, 0-2 adaptive checkpoints',
|
|
18
18
|
path: 'fire'
|
|
19
19
|
},
|
|
20
20
|
aidlc: {
|
|
@@ -29,7 +29,13 @@ const FLOWS = {
|
|
|
29
29
|
}
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
+
const LINKS = {
|
|
33
|
+
website: 'https://specs.md',
|
|
34
|
+
flows: 'https://specs.md/flows'
|
|
35
|
+
};
|
|
36
|
+
|
|
32
37
|
module.exports = {
|
|
33
38
|
THEME_COLORS,
|
|
34
|
-
FLOWS
|
|
39
|
+
FLOWS,
|
|
40
|
+
LINKS
|
|
35
41
|
};
|
package/lib/installer.js
CHANGED
|
@@ -4,7 +4,7 @@ const prompts = require('prompts');
|
|
|
4
4
|
const yaml = require('js-yaml');
|
|
5
5
|
const CLIUtils = require('./cli-utils');
|
|
6
6
|
const InstallerFactory = require('./InstallerFactory');
|
|
7
|
-
const { FLOWS } = require('./constants');
|
|
7
|
+
const { FLOWS, LINKS } = require('./constants');
|
|
8
8
|
const analytics = require('./analytics');
|
|
9
9
|
|
|
10
10
|
// Use theme from CLIUtils for consistent styling
|
|
@@ -125,6 +125,7 @@ async function install() {
|
|
|
125
125
|
// Step 3: Select Flow
|
|
126
126
|
console.log('');
|
|
127
127
|
CLIUtils.displayStep(3, 4, 'Select SDLC flow');
|
|
128
|
+
console.log(theme.dim(` Learn more about flows: ${LINKS.flows}\n`));
|
|
128
129
|
const flowChoices = Object.entries(FLOWS).map(([key, flow]) => ({
|
|
129
130
|
title: `${flow.name} - ${flow.description}${flow.message || ''}`,
|
|
130
131
|
value: key,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specsmd",
|
|
3
|
-
"version": "0.0.0-dev.
|
|
3
|
+
"version": "0.0.0-dev.53",
|
|
4
4
|
"description": "Multi-agent orchestration system for AI-native software development. Delivers AI-DLC, Agile, and custom SDLC flows as markdown-based agent systems.",
|
|
5
5
|
"main": "lib/installer.js",
|
|
6
6
|
"bin": {
|