specsmd 0.0.0-dev.53 → 0.0.0-dev.54
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 +4 -1
- package/flows/fire/agents/builder/skills/run-execute/SKILL.md +19 -3
- package/flows/fire/agents/builder/skills/run-execute/templates/test-report.md.hbs +81 -0
- package/flows/fire/agents/orchestrator/skills/project-init/SKILL.md +15 -6
- package/flows/fire/agents/orchestrator/skills/project-init/templates/coding-standards.md.hbs +149 -0
- package/flows/fire/agents/orchestrator/skills/project-init/templates/system-architecture.md.hbs +101 -0
- package/flows/fire/agents/orchestrator/skills/project-init/templates/tech-stack.md.hbs +136 -0
- package/flows/fire/agents/orchestrator/skills/project-init/templates/testing-standards.md.hbs +94 -0
- package/flows/fire/memory-bank.yaml +10 -3
- package/package.json +1 -1
|
@@ -155,18 +155,21 @@ Each run creates a folder with its artifacts:
|
|
|
155
155
|
.specs-fire/runs/{run-id}/
|
|
156
156
|
├── plan.md # Approved implementation plan (confirm/validate modes)
|
|
157
157
|
├── run.md # Run log (metadata, files changed, decisions)
|
|
158
|
+
├── test-report.md # Test results, coverage, and acceptance validation
|
|
158
159
|
└── walkthrough.md # Implementation walkthrough (for human review)
|
|
159
160
|
```
|
|
160
161
|
|
|
161
|
-
**The
|
|
162
|
+
**The quartet**:
|
|
162
163
|
- **plan.md** — What we intended to do (approved at checkpoint)
|
|
163
164
|
- **run.md** — What happened during execution
|
|
165
|
+
- **test-report.md** — Test results and acceptance criteria validation
|
|
164
166
|
- **walkthrough.md** — Human-readable summary after completion
|
|
165
167
|
|
|
166
168
|
| Artifact | Location | Template |
|
|
167
169
|
|----------|----------|----------|
|
|
168
170
|
| Plan | `.specs-fire/runs/{run-id}/plan.md` | `skills/run-execute/templates/plan.md.hbs` |
|
|
169
171
|
| Run Log | `.specs-fire/runs/{run-id}/run.md` | (generated by script) |
|
|
172
|
+
| Test Report | `.specs-fire/runs/{run-id}/test-report.md` | `skills/run-execute/templates/test-report.md.hbs` |
|
|
170
173
|
| Walkthrough | `.specs-fire/runs/{run-id}/walkthrough.md` | `skills/walkthrough-generate/templates/walkthrough.md.hbs` |
|
|
171
174
|
|
|
172
175
|
---
|
|
@@ -66,7 +66,11 @@ Before executing scripts, ensure required dependencies are installed:
|
|
|
66
66
|
<step n="2" title="Load Context">
|
|
67
67
|
<action>Read work item from .specs-fire/intents/{intent}/work-items/{id}.md</action>
|
|
68
68
|
<action>Read intent brief for broader context</action>
|
|
69
|
-
<action>
|
|
69
|
+
<action>Load ALL project standards:</action>
|
|
70
|
+
<substep>.specs-fire/standards/tech-stack.md — Technology choices</substep>
|
|
71
|
+
<substep>.specs-fire/standards/coding-standards.md — Code style and patterns</substep>
|
|
72
|
+
<substep>.specs-fire/standards/testing-standards.md — Testing strategy and coverage</substep>
|
|
73
|
+
<substep>.specs-fire/standards/system-architecture.md — Architecture context and constraints</substep>
|
|
70
74
|
<action>Determine execution mode from work item</action>
|
|
71
75
|
</step>
|
|
72
76
|
|
|
@@ -163,6 +167,12 @@ Before executing scripts, ensure required dependencies are installed:
|
|
|
163
167
|
</step>
|
|
164
168
|
|
|
165
169
|
<step n="6" title="Run Tests">
|
|
170
|
+
<action>Load testing standards from .specs-fire/standards/testing-standards.md</action>
|
|
171
|
+
<action>Write tests following testing standards:</action>
|
|
172
|
+
<substep>Unit tests for new/modified functions</substep>
|
|
173
|
+
<substep>Integration tests for API endpoints or workflows</substep>
|
|
174
|
+
<substep>Follow test naming and structure conventions</substep>
|
|
175
|
+
|
|
166
176
|
<action>Run test suite</action>
|
|
167
177
|
<check if="tests fail">
|
|
168
178
|
<output>
|
|
@@ -171,7 +181,11 @@ Before executing scripts, ensure required dependencies are installed:
|
|
|
171
181
|
<action>Fix failing tests</action>
|
|
172
182
|
<action>Re-run tests</action>
|
|
173
183
|
</check>
|
|
174
|
-
|
|
184
|
+
|
|
185
|
+
<action>Validate acceptance criteria from work item</action>
|
|
186
|
+
<action>Measure coverage against target from testing-standards.md</action>
|
|
187
|
+
<action>Generate test report using template: templates/test-report.md.hbs</action>
|
|
188
|
+
<action>Save to: .specs-fire/runs/{run-id}/test-report.md</action>
|
|
175
189
|
</step>
|
|
176
190
|
|
|
177
191
|
<step n="7" title="Complete Run">
|
|
@@ -193,7 +207,9 @@ Before executing scripts, ensure required dependencies are installed:
|
|
|
193
207
|
Tests added: {count}
|
|
194
208
|
Coverage: {percentage}%
|
|
195
209
|
|
|
196
|
-
|
|
210
|
+
Artifacts:
|
|
211
|
+
- Test Report: .specs-fire/runs/{run-id}/test-report.md
|
|
212
|
+
- Walkthrough: .specs-fire/runs/{run-id}/walkthrough.md
|
|
197
213
|
|
|
198
214
|
Continue to next work item? [Y/n]
|
|
199
215
|
</output>
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
run: {{run_id}}
|
|
3
|
+
work_item: {{work_item_id}}
|
|
4
|
+
intent: {{intent_id}}
|
|
5
|
+
generated: {{generated_at}}
|
|
6
|
+
status: {{status}}
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Test Report: {{title}}
|
|
10
|
+
|
|
11
|
+
## Summary
|
|
12
|
+
|
|
13
|
+
| Category | Passed | Failed | Skipped | Coverage |
|
|
14
|
+
|----------|--------|--------|---------|----------|
|
|
15
|
+
| Unit | {{unit_passed}} | {{unit_failed}} | {{unit_skipped}} | {{unit_coverage}}% |
|
|
16
|
+
| Integration | {{integration_passed}} | {{integration_failed}} | {{integration_skipped}} | {{integration_coverage}}% |
|
|
17
|
+
| **Total** | {{total_passed}} | {{total_failed}} | {{total_skipped}} | {{total_coverage}}% |
|
|
18
|
+
|
|
19
|
+
## Acceptance Criteria Validation
|
|
20
|
+
|
|
21
|
+
{{#each acceptance_criteria}}
|
|
22
|
+
- {{#if this.passed}}✅{{else}}❌{{/if}} **{{this.criterion}}** — {{this.status}}
|
|
23
|
+
{{/each}}
|
|
24
|
+
|
|
25
|
+
## Tests Written
|
|
26
|
+
|
|
27
|
+
### Unit Tests
|
|
28
|
+
|
|
29
|
+
{{#each unit_tests}}
|
|
30
|
+
- `{{this.file}}` — {{this.description}}
|
|
31
|
+
{{/each}}
|
|
32
|
+
|
|
33
|
+
### Integration Tests
|
|
34
|
+
|
|
35
|
+
{{#each integration_tests}}
|
|
36
|
+
- `{{this.file}}` — {{this.description}}
|
|
37
|
+
{{/each}}
|
|
38
|
+
|
|
39
|
+
## Test Commands
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Run all tests
|
|
43
|
+
{{test_command}}
|
|
44
|
+
|
|
45
|
+
# Run with coverage
|
|
46
|
+
{{coverage_command}}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Coverage Details
|
|
50
|
+
|
|
51
|
+
{{#if coverage_details}}
|
|
52
|
+
| Module | Statements | Branches | Functions | Lines |
|
|
53
|
+
|--------|------------|----------|-----------|-------|
|
|
54
|
+
{{#each coverage_details}}
|
|
55
|
+
| `{{this.module}}` | {{this.statements}}% | {{this.branches}}% | {{this.functions}}% | {{this.lines}}% |
|
|
56
|
+
{{/each}}
|
|
57
|
+
{{else}}
|
|
58
|
+
Coverage details not available.
|
|
59
|
+
{{/if}}
|
|
60
|
+
|
|
61
|
+
## Issues Found
|
|
62
|
+
|
|
63
|
+
{{#if issues}}
|
|
64
|
+
| Issue | Severity | Status |
|
|
65
|
+
|-------|----------|--------|
|
|
66
|
+
{{#each issues}}
|
|
67
|
+
| {{this.description}} | {{this.severity}} | {{this.status}} |
|
|
68
|
+
{{/each}}
|
|
69
|
+
{{else}}
|
|
70
|
+
No issues found during testing.
|
|
71
|
+
{{/if}}
|
|
72
|
+
|
|
73
|
+
## Ready for Completion
|
|
74
|
+
|
|
75
|
+
- [{{#if all_tests_pass}}x{{else}} {{/if}}] All tests passing
|
|
76
|
+
- [{{#if coverage_met}}x{{else}} {{/if}}] Coverage target met ({{coverage_target}}%)
|
|
77
|
+
- [{{#if acceptance_met}}x{{else}} {{/if}}] All acceptance criteria validated
|
|
78
|
+
- [{{#if no_critical_issues}}x{{else}} {{/if}}] No critical issues open
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
*Generated by FIRE Run {{run_id}}*
|
|
@@ -104,8 +104,11 @@ Initialize a new FIRE project by detecting workspace type and setting up standar
|
|
|
104
104
|
<action>Create .specs-fire/runs/</action>
|
|
105
105
|
<action>Create .specs-fire/standards/</action>
|
|
106
106
|
<action>Generate .specs-fire/state.yaml (include autonomy_bias)</action>
|
|
107
|
-
<action>Generate
|
|
108
|
-
<
|
|
107
|
+
<action>Generate standards using templates:</action>
|
|
108
|
+
<substep>tech-stack.md — templates/tech-stack.md.hbs</substep>
|
|
109
|
+
<substep>coding-standards.md — templates/coding-standards.md.hbs</substep>
|
|
110
|
+
<substep>testing-standards.md — templates/testing-standards.md.hbs</substep>
|
|
111
|
+
<substep>system-architecture.md — templates/system-architecture.md.hbs</substep>
|
|
109
112
|
</step>
|
|
110
113
|
|
|
111
114
|
<step n="6" title="Complete">
|
|
@@ -120,7 +123,9 @@ Initialize a new FIRE project by detecting workspace type and setting up standar
|
|
|
120
123
|
├── runs/
|
|
121
124
|
└── standards/
|
|
122
125
|
├── tech-stack.md
|
|
123
|
-
|
|
126
|
+
├── coding-standards.md
|
|
127
|
+
├── testing-standards.md
|
|
128
|
+
└── system-architecture.md
|
|
124
129
|
```
|
|
125
130
|
|
|
126
131
|
Ready to capture your first intent.
|
|
@@ -136,6 +141,10 @@ Initialize a new FIRE project by detecting workspace type and setting up standar
|
|
|
136
141
|
|
|
137
142
|
## Output
|
|
138
143
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
144
|
+
| Artifact | Location | Template |
|
|
145
|
+
|----------|----------|----------|
|
|
146
|
+
| State | `.specs-fire/state.yaml` | — |
|
|
147
|
+
| Tech Stack | `.specs-fire/standards/tech-stack.md` | `templates/tech-stack.md.hbs` |
|
|
148
|
+
| Coding Standards | `.specs-fire/standards/coding-standards.md` | `templates/coding-standards.md.hbs` |
|
|
149
|
+
| Testing Standards | `.specs-fire/standards/testing-standards.md` | `templates/testing-standards.md.hbs` |
|
|
150
|
+
| System Architecture | `.specs-fire/standards/system-architecture.md` | `templates/system-architecture.md.hbs` |
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Coding Standards
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
{{overview}}
|
|
6
|
+
|
|
7
|
+
## Code Formatting
|
|
8
|
+
|
|
9
|
+
**Tool**: {{formatter}}
|
|
10
|
+
**Config**: {{formatter_config}}
|
|
11
|
+
**Enforcement**: {{formatter_enforcement}}
|
|
12
|
+
|
|
13
|
+
### Key Settings
|
|
14
|
+
|
|
15
|
+
{{#each formatter_settings}}
|
|
16
|
+
- **{{this.setting}}**: {{this.value}}
|
|
17
|
+
{{/each}}
|
|
18
|
+
|
|
19
|
+
## Linting
|
|
20
|
+
|
|
21
|
+
**Tool**: {{linter}}
|
|
22
|
+
**Base Config**: {{linter_base}}
|
|
23
|
+
**Strictness**: {{linter_strictness}}
|
|
24
|
+
|
|
25
|
+
### Key Rules
|
|
26
|
+
|
|
27
|
+
{{#each linter_rules}}
|
|
28
|
+
- `{{this.rule}}`: {{this.setting}} — {{this.rationale}}
|
|
29
|
+
{{/each}}
|
|
30
|
+
|
|
31
|
+
## Naming Conventions
|
|
32
|
+
|
|
33
|
+
### Variables and Functions
|
|
34
|
+
|
|
35
|
+
| Element | Convention | Example |
|
|
36
|
+
|---------|------------|---------|
|
|
37
|
+
{{#each naming_conventions}}
|
|
38
|
+
| {{this.element}} | {{this.convention}} | `{{this.example}}` |
|
|
39
|
+
{{/each}}
|
|
40
|
+
|
|
41
|
+
### Files and Folders
|
|
42
|
+
|
|
43
|
+
{{#each file_naming}}
|
|
44
|
+
- **{{this.type}}**: {{this.convention}} (e.g., `{{this.example}}`)
|
|
45
|
+
{{/each}}
|
|
46
|
+
|
|
47
|
+
## File Organization
|
|
48
|
+
|
|
49
|
+
### Project Structure
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
{{project_structure}}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Conventions
|
|
56
|
+
|
|
57
|
+
{{#each organization_conventions}}
|
|
58
|
+
- **{{this.item}}**: {{this.convention}}
|
|
59
|
+
{{/each}}
|
|
60
|
+
|
|
61
|
+
## Import Order
|
|
62
|
+
|
|
63
|
+
```{{language}}
|
|
64
|
+
{{import_order_example}}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Rules**:
|
|
68
|
+
{{#each import_rules}}
|
|
69
|
+
- {{this}}
|
|
70
|
+
{{/each}}
|
|
71
|
+
|
|
72
|
+
## Error Handling
|
|
73
|
+
|
|
74
|
+
### Pattern
|
|
75
|
+
|
|
76
|
+
**Approach**: {{error_pattern}}
|
|
77
|
+
|
|
78
|
+
### Guidelines
|
|
79
|
+
|
|
80
|
+
{{#each error_guidelines}}
|
|
81
|
+
- {{this}}
|
|
82
|
+
{{/each}}
|
|
83
|
+
|
|
84
|
+
### Example
|
|
85
|
+
|
|
86
|
+
```{{language}}
|
|
87
|
+
{{error_example}}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Logging
|
|
91
|
+
|
|
92
|
+
**Tool**: {{logging_tool}}
|
|
93
|
+
**Format**: {{logging_format}}
|
|
94
|
+
|
|
95
|
+
### Log Levels
|
|
96
|
+
|
|
97
|
+
| Level | Usage |
|
|
98
|
+
|-------|-------|
|
|
99
|
+
{{#each log_levels}}
|
|
100
|
+
| {{this.level}} | {{this.usage}} |
|
|
101
|
+
{{/each}}
|
|
102
|
+
|
|
103
|
+
### Guidelines
|
|
104
|
+
|
|
105
|
+
**Always log**:
|
|
106
|
+
{{#each log_always}}
|
|
107
|
+
- {{this}}
|
|
108
|
+
{{/each}}
|
|
109
|
+
|
|
110
|
+
**Never log**:
|
|
111
|
+
{{#each log_never}}
|
|
112
|
+
- {{this}}
|
|
113
|
+
{{/each}}
|
|
114
|
+
|
|
115
|
+
## Comments and Documentation
|
|
116
|
+
|
|
117
|
+
### When to Comment
|
|
118
|
+
|
|
119
|
+
{{#each comment_guidelines}}
|
|
120
|
+
- {{this}}
|
|
121
|
+
{{/each}}
|
|
122
|
+
|
|
123
|
+
### Documentation Format
|
|
124
|
+
|
|
125
|
+
**Functions**: {{doc_format_functions}}
|
|
126
|
+
**Classes**: {{doc_format_classes}}
|
|
127
|
+
|
|
128
|
+
## Code Patterns
|
|
129
|
+
|
|
130
|
+
### Preferred Patterns
|
|
131
|
+
|
|
132
|
+
{{#each preferred_patterns}}
|
|
133
|
+
#### {{this.name}}
|
|
134
|
+
|
|
135
|
+
{{this.description}}
|
|
136
|
+
|
|
137
|
+
```{{../language}}
|
|
138
|
+
{{this.example}}
|
|
139
|
+
```
|
|
140
|
+
{{/each}}
|
|
141
|
+
|
|
142
|
+
### Anti-Patterns to Avoid
|
|
143
|
+
|
|
144
|
+
{{#each anti_patterns}}
|
|
145
|
+
- **{{this.name}}**: {{this.why}}
|
|
146
|
+
{{/each}}
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
*Generated by FIRE project-init*
|
package/flows/fire/agents/orchestrator/skills/project-init/templates/system-architecture.md.hbs
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# System Architecture
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
{{overview}}
|
|
6
|
+
|
|
7
|
+
## System Context
|
|
8
|
+
|
|
9
|
+
{{system_context}}
|
|
10
|
+
|
|
11
|
+
### Context Diagram
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
{{context_diagram}}
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Users
|
|
18
|
+
|
|
19
|
+
{{#each users}}
|
|
20
|
+
- **{{this.name}}**: {{this.description}}
|
|
21
|
+
{{/each}}
|
|
22
|
+
|
|
23
|
+
### External Systems
|
|
24
|
+
|
|
25
|
+
{{#each external_systems}}
|
|
26
|
+
- **{{this.name}}**: {{this.purpose}}
|
|
27
|
+
{{/each}}
|
|
28
|
+
|
|
29
|
+
## Architecture Pattern
|
|
30
|
+
|
|
31
|
+
**Pattern**: {{architecture_pattern}}
|
|
32
|
+
**Rationale**: {{architecture_rationale}}
|
|
33
|
+
|
|
34
|
+
## Component Architecture
|
|
35
|
+
|
|
36
|
+
### Components
|
|
37
|
+
|
|
38
|
+
{{#each components}}
|
|
39
|
+
#### {{this.name}}
|
|
40
|
+
|
|
41
|
+
- **Purpose**: {{this.purpose}}
|
|
42
|
+
- **Responsibilities**: {{this.responsibilities}}
|
|
43
|
+
- **Dependencies**: {{this.dependencies}}
|
|
44
|
+
{{/each}}
|
|
45
|
+
|
|
46
|
+
### Component Diagram
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
{{component_diagram}}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Data Flow
|
|
53
|
+
|
|
54
|
+
{{data_flow_description}}
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
{{data_flow_diagram}}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Technology Stack
|
|
61
|
+
|
|
62
|
+
| Layer | Technology | Purpose |
|
|
63
|
+
|-------|------------|---------|
|
|
64
|
+
{{#each tech_stack}}
|
|
65
|
+
| {{this.layer}} | {{this.technology}} | {{this.purpose}} |
|
|
66
|
+
{{/each}}
|
|
67
|
+
|
|
68
|
+
## Non-Functional Requirements
|
|
69
|
+
|
|
70
|
+
### Performance
|
|
71
|
+
|
|
72
|
+
{{#each nfr_performance}}
|
|
73
|
+
- **{{this.metric}}**: {{this.target}}
|
|
74
|
+
{{/each}}
|
|
75
|
+
|
|
76
|
+
### Security
|
|
77
|
+
|
|
78
|
+
{{#each nfr_security}}
|
|
79
|
+
- {{this}}
|
|
80
|
+
{{/each}}
|
|
81
|
+
|
|
82
|
+
### Scalability
|
|
83
|
+
|
|
84
|
+
{{scalability_approach}}
|
|
85
|
+
|
|
86
|
+
## Constraints
|
|
87
|
+
|
|
88
|
+
{{#each constraints}}
|
|
89
|
+
- {{this}}
|
|
90
|
+
{{/each}}
|
|
91
|
+
|
|
92
|
+
## Key Decisions
|
|
93
|
+
|
|
94
|
+
| Decision | Choice | Rationale |
|
|
95
|
+
|----------|--------|-----------|
|
|
96
|
+
{{#each key_decisions}}
|
|
97
|
+
| {{this.decision}} | {{this.choice}} | {{this.rationale}} |
|
|
98
|
+
{{/each}}
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
*Generated by FIRE project-init*
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# Tech Stack
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
{{overview}}
|
|
6
|
+
|
|
7
|
+
## Core Technologies
|
|
8
|
+
|
|
9
|
+
### Language
|
|
10
|
+
|
|
11
|
+
**Primary**: {{primary_language}}
|
|
12
|
+
**Version**: {{language_version}}
|
|
13
|
+
|
|
14
|
+
### Framework
|
|
15
|
+
|
|
16
|
+
**Framework**: {{framework}}
|
|
17
|
+
**Version**: {{framework_version}}
|
|
18
|
+
**Rationale**: {{framework_rationale}}
|
|
19
|
+
|
|
20
|
+
### Runtime
|
|
21
|
+
|
|
22
|
+
**Runtime**: {{runtime}}
|
|
23
|
+
**Version**: {{runtime_version}}
|
|
24
|
+
|
|
25
|
+
## Data Layer
|
|
26
|
+
|
|
27
|
+
### Database
|
|
28
|
+
|
|
29
|
+
**Type**: {{database_type}}
|
|
30
|
+
**Database**: {{database}}
|
|
31
|
+
**Version**: {{database_version}}
|
|
32
|
+
|
|
33
|
+
### ORM / Data Access
|
|
34
|
+
|
|
35
|
+
**Tool**: {{orm}}
|
|
36
|
+
**Rationale**: {{orm_rationale}}
|
|
37
|
+
|
|
38
|
+
### Caching
|
|
39
|
+
|
|
40
|
+
{{#if caching}}
|
|
41
|
+
**Solution**: {{caching}}
|
|
42
|
+
{{else}}
|
|
43
|
+
Not configured.
|
|
44
|
+
{{/if}}
|
|
45
|
+
|
|
46
|
+
## API Layer
|
|
47
|
+
|
|
48
|
+
### API Style
|
|
49
|
+
|
|
50
|
+
**Style**: {{api_style}}
|
|
51
|
+
|
|
52
|
+
### Documentation
|
|
53
|
+
|
|
54
|
+
**Tool**: {{api_docs}}
|
|
55
|
+
|
|
56
|
+
## Frontend (if applicable)
|
|
57
|
+
|
|
58
|
+
{{#if frontend}}
|
|
59
|
+
### UI Framework
|
|
60
|
+
|
|
61
|
+
**Framework**: {{frontend.framework}}
|
|
62
|
+
**Version**: {{frontend.version}}
|
|
63
|
+
|
|
64
|
+
### Styling
|
|
65
|
+
|
|
66
|
+
**Approach**: {{frontend.styling}}
|
|
67
|
+
|
|
68
|
+
### State Management
|
|
69
|
+
|
|
70
|
+
**Solution**: {{frontend.state_management}}
|
|
71
|
+
{{else}}
|
|
72
|
+
Not applicable (backend-only or CLI project).
|
|
73
|
+
{{/if}}
|
|
74
|
+
|
|
75
|
+
## Infrastructure
|
|
76
|
+
|
|
77
|
+
### Hosting
|
|
78
|
+
|
|
79
|
+
**Platform**: {{hosting_platform}}
|
|
80
|
+
|
|
81
|
+
### Containerization
|
|
82
|
+
|
|
83
|
+
{{#if containerization}}
|
|
84
|
+
**Tool**: {{containerization}}
|
|
85
|
+
{{else}}
|
|
86
|
+
Not configured.
|
|
87
|
+
{{/if}}
|
|
88
|
+
|
|
89
|
+
### CI/CD
|
|
90
|
+
|
|
91
|
+
**Platform**: {{ci_platform}}
|
|
92
|
+
|
|
93
|
+
## Development Tools
|
|
94
|
+
|
|
95
|
+
### Package Manager
|
|
96
|
+
|
|
97
|
+
**Manager**: {{package_manager}}
|
|
98
|
+
|
|
99
|
+
### Build Tool
|
|
100
|
+
|
|
101
|
+
**Tool**: {{build_tool}}
|
|
102
|
+
|
|
103
|
+
### Linting
|
|
104
|
+
|
|
105
|
+
**Linter**: {{linter}}
|
|
106
|
+
**Config**: {{linter_config}}
|
|
107
|
+
|
|
108
|
+
### Formatting
|
|
109
|
+
|
|
110
|
+
**Formatter**: {{formatter}}
|
|
111
|
+
**Config**: {{formatter_config}}
|
|
112
|
+
|
|
113
|
+
## Dependencies
|
|
114
|
+
|
|
115
|
+
### Production Dependencies
|
|
116
|
+
|
|
117
|
+
{{#each prod_dependencies}}
|
|
118
|
+
- `{{this.name}}` ({{this.version}}) — {{this.purpose}}
|
|
119
|
+
{{/each}}
|
|
120
|
+
|
|
121
|
+
### Development Dependencies
|
|
122
|
+
|
|
123
|
+
{{#each dev_dependencies}}
|
|
124
|
+
- `{{this.name}}` ({{this.version}}) — {{this.purpose}}
|
|
125
|
+
{{/each}}
|
|
126
|
+
|
|
127
|
+
## Version Requirements
|
|
128
|
+
|
|
129
|
+
| Tool | Minimum Version | Recommended |
|
|
130
|
+
|------|-----------------|-------------|
|
|
131
|
+
{{#each version_requirements}}
|
|
132
|
+
| {{this.tool}} | {{this.minimum}} | {{this.recommended}} |
|
|
133
|
+
{{/each}}
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
*Generated by FIRE project-init*
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Testing Standards
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
{{overview}}
|
|
6
|
+
|
|
7
|
+
## Testing Framework
|
|
8
|
+
|
|
9
|
+
**Framework**: {{framework}}
|
|
10
|
+
**Runner**: {{runner}}
|
|
11
|
+
|
|
12
|
+
## Test Types
|
|
13
|
+
|
|
14
|
+
| Type | Tool | Location | When to Use |
|
|
15
|
+
|------|------|----------|-------------|
|
|
16
|
+
{{#each test_types}}
|
|
17
|
+
| {{this.type}} | {{this.tool}} | `{{this.location}}` | {{this.when}} |
|
|
18
|
+
{{/each}}
|
|
19
|
+
|
|
20
|
+
## Coverage Requirements
|
|
21
|
+
|
|
22
|
+
**Target**: {{coverage_target}}%
|
|
23
|
+
**Enforcement**: {{coverage_enforcement}}
|
|
24
|
+
|
|
25
|
+
**Critical paths that MUST have coverage:**
|
|
26
|
+
{{#each critical_paths}}
|
|
27
|
+
- {{this}}
|
|
28
|
+
{{/each}}
|
|
29
|
+
|
|
30
|
+
## Test Naming
|
|
31
|
+
|
|
32
|
+
**Pattern**: `{{naming_pattern}}`
|
|
33
|
+
|
|
34
|
+
**Examples**:
|
|
35
|
+
{{#each naming_examples}}
|
|
36
|
+
- `{{this.name}}` — {{this.description}}
|
|
37
|
+
{{/each}}
|
|
38
|
+
|
|
39
|
+
## Test Structure
|
|
40
|
+
|
|
41
|
+
```{{language}}
|
|
42
|
+
{{test_structure}}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Mock Strategy
|
|
46
|
+
|
|
47
|
+
**Approach**: {{mock_approach}}
|
|
48
|
+
|
|
49
|
+
**Guidelines**:
|
|
50
|
+
{{#each mock_guidelines}}
|
|
51
|
+
- {{this}}
|
|
52
|
+
{{/each}}
|
|
53
|
+
|
|
54
|
+
## Test Data
|
|
55
|
+
|
|
56
|
+
**Strategy**: {{test_data_strategy}}
|
|
57
|
+
|
|
58
|
+
**Guidelines**:
|
|
59
|
+
{{#each test_data_guidelines}}
|
|
60
|
+
- {{this}}
|
|
61
|
+
{{/each}}
|
|
62
|
+
|
|
63
|
+
## Running Tests
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Run all tests
|
|
67
|
+
{{run_all_command}}
|
|
68
|
+
|
|
69
|
+
# Run with coverage
|
|
70
|
+
{{run_coverage_command}}
|
|
71
|
+
|
|
72
|
+
# Run specific test file
|
|
73
|
+
{{run_single_command}}
|
|
74
|
+
|
|
75
|
+
# Run in watch mode
|
|
76
|
+
{{run_watch_command}}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## CI/CD Integration
|
|
80
|
+
|
|
81
|
+
{{#if ci_enabled}}
|
|
82
|
+
**Pipeline**: {{ci_pipeline}}
|
|
83
|
+
**Trigger**: {{ci_trigger}}
|
|
84
|
+
|
|
85
|
+
**Required gates**:
|
|
86
|
+
{{#each ci_gates}}
|
|
87
|
+
- {{this}}
|
|
88
|
+
{{/each}}
|
|
89
|
+
{{else}}
|
|
90
|
+
CI/CD integration not configured.
|
|
91
|
+
{{/if}}
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
*Generated by FIRE project-init*
|
|
@@ -11,7 +11,7 @@ structure:
|
|
|
11
11
|
- path: runs/
|
|
12
12
|
description: "Execution logs and walkthroughs per run"
|
|
13
13
|
- path: standards/
|
|
14
|
-
description: "Project standards (tech-stack, coding-standards)"
|
|
14
|
+
description: "Project standards (tech-stack, coding-standards, testing-standards)"
|
|
15
15
|
|
|
16
16
|
# Central state file (FIRE's source of truth)
|
|
17
17
|
state:
|
|
@@ -67,8 +67,10 @@ naming:
|
|
|
67
67
|
example: "run-001/"
|
|
68
68
|
note: "Sequential 3-digit number, folder per run"
|
|
69
69
|
contents:
|
|
70
|
-
- "
|
|
71
|
-
- "
|
|
70
|
+
- "plan.md" # Approved implementation plan (confirm/validate modes)
|
|
71
|
+
- "run.md" # Run log
|
|
72
|
+
- "test-report.md" # Test results and coverage
|
|
73
|
+
- "walkthrough.md" # Implementation walkthrough
|
|
72
74
|
|
|
73
75
|
# Schema Definition (Source of Truth for Agents)
|
|
74
76
|
schema:
|
|
@@ -81,8 +83,13 @@ schema:
|
|
|
81
83
|
run-folder: ".specs-fire/runs/{run-id}/"
|
|
82
84
|
plan: ".specs-fire/runs/{run-id}/plan.md"
|
|
83
85
|
run-log: ".specs-fire/runs/{run-id}/run.md"
|
|
86
|
+
test-report: ".specs-fire/runs/{run-id}/test-report.md"
|
|
84
87
|
walkthrough: ".specs-fire/runs/{run-id}/walkthrough.md"
|
|
85
88
|
standards: ".specs-fire/standards/"
|
|
89
|
+
tech-stack: ".specs-fire/standards/tech-stack.md"
|
|
90
|
+
coding-standards: ".specs-fire/standards/coding-standards.md"
|
|
91
|
+
testing-standards: ".specs-fire/standards/testing-standards.md"
|
|
92
|
+
system-architecture: ".specs-fire/standards/system-architecture.md"
|
|
86
93
|
|
|
87
94
|
# Agent Ownership
|
|
88
95
|
ownership:
|
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.54",
|
|
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": {
|