forge-dev-framework 1.1.0 → 1.2.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/.claude/commands/forge/README.md +156 -189
- package/.claude/commands/forge/add-phase.md +4 -3
- package/.claude/commands/forge/complete-milestone.md +1 -1
- package/.claude/commands/forge/convert.md +31 -0
- package/.claude/commands/forge/debug.md +12 -154
- package/.claude/commands/forge/discuss.md +60 -107
- package/.claude/commands/forge/execute.md +67 -142
- package/.claude/commands/forge/generate.md +8 -107
- package/.claude/commands/forge/help.md +9 -114
- package/.claude/commands/forge/init.md +10 -74
- package/.claude/commands/forge/insert-phase.md +4 -3
- package/.claude/commands/forge/new-milestone.md +1 -1
- package/.claude/commands/forge/new-project.md +12 -91
- package/.claude/commands/forge/pause-work.md +2 -2
- package/.claude/commands/forge/plan.md +114 -129
- package/.claude/commands/forge/quick.md +17 -106
- package/.claude/commands/forge/remove-phase.md +3 -2
- package/.claude/commands/forge/resume.md +22 -0
- package/.claude/commands/forge/team-add.md +24 -0
- package/.claude/commands/forge/team-create.md +22 -0
- package/.claude/commands/forge/team-remove.md +24 -0
- package/.claude/commands/forge/team-start.md +22 -0
- package/.claude/commands/forge/team-view.md +18 -0
- package/.claude/commands/forge/verify.md +68 -147
- package/.claude/hooks/forge-context-cleanup.cjs +79 -0
- package/.claude/hooks/forge-event-guard.cjs +36 -0
- package/.claude/hooks/forge-size-guard.cjs +55 -0
- package/.claude/rules/api-patterns.md +13 -98
- package/.claude/rules/context-efficiency.md +10 -0
- package/.claude/rules/security-baseline.md +18 -204
- package/.claude/rules/testing-standards.md +16 -177
- package/.claude/rules/ui-conventions.md +17 -142
- package/bin/forge.js +5 -3
- package/dist/bin/forge.js +5 -3
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +15 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/convert.d.ts +6 -0
- package/dist/commands/convert.d.ts.map +1 -0
- package/dist/commands/convert.js +132 -0
- package/dist/commands/convert.js.map +1 -0
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +3 -2
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/index.d.ts +4 -4
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +4 -4
- package/dist/commands/index.js.map +1 -1
- package/dist/generators/gsd-converter.d.ts +100 -0
- package/dist/generators/gsd-converter.d.ts.map +1 -0
- package/dist/generators/gsd-converter.js +335 -0
- package/dist/generators/gsd-converter.js.map +1 -0
- package/dist/templates/.claude/rules/api-patterns.md.template +212 -0
- package/dist/templates/.claude/rules/security-baseline.md.template +322 -0
- package/dist/templates/.claude/rules/testing-standards.md.template +280 -0
- package/dist/templates/.claude/rules/ui-conventions.md.template +264 -0
- package/dist/templates/.planning/forge.config.json.template +75 -0
- package/dist/templates/CLAUDE.md.template +161 -0
- package/dist/templates/PLAN.md.template +177 -0
- package/dist/templates/PROJECT.md.template +156 -0
- package/dist/templates/REQUIREMENTS.md.template +221 -0
- package/dist/templates/ROADMAP.md.template +130 -0
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -2
- package/dist/types/index.js.map +1 -1
- package/dist/utils/index.d.ts +5 -5
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +5 -5
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/template-client.d.ts.map +1 -1
- package/dist/utils/template-client.js +3 -2
- package/dist/utils/template-client.js.map +1 -1
- package/package.json +6 -4
- package/.claude/commands/forge/resume-work.md +0 -122
- package/dist/git/__tests__/worktree.test.d.ts +0 -5
- package/dist/git/__tests__/worktree.test.d.ts.map +0 -1
- package/dist/git/__tests__/worktree.test.js +0 -121
- package/dist/git/__tests__/worktree.test.js.map +0 -1
- package/dist/git/codeowners.d.ts +0 -101
- package/dist/git/codeowners.d.ts.map +0 -1
- package/dist/git/codeowners.js +0 -216
- package/dist/git/codeowners.js.map +0 -1
- package/dist/git/commit.d.ts +0 -135
- package/dist/git/commit.d.ts.map +0 -1
- package/dist/git/commit.js +0 -223
- package/dist/git/commit.js.map +0 -1
- package/dist/git/hooks/commit-msg.d.ts +0 -8
- package/dist/git/hooks/commit-msg.d.ts.map +0 -1
- package/dist/git/hooks/commit-msg.js +0 -34
- package/dist/git/hooks/commit-msg.js.map +0 -1
- package/dist/git/hooks/pre-commit.d.ts +0 -8
- package/dist/git/hooks/pre-commit.d.ts.map +0 -1
- package/dist/git/hooks/pre-commit.js +0 -34
- package/dist/git/hooks/pre-commit.js.map +0 -1
- package/dist/git/pre-commit-hooks.d.ts +0 -117
- package/dist/git/pre-commit-hooks.d.ts.map +0 -1
- package/dist/git/pre-commit-hooks.js +0 -270
- package/dist/git/pre-commit-hooks.js.map +0 -1
- package/dist/git/wipe-protocol.d.ts +0 -281
- package/dist/git/wipe-protocol.d.ts.map +0 -1
- package/dist/git/wipe-protocol.js +0 -237
- package/dist/git/wipe-protocol.js.map +0 -1
- package/dist/git/worktree.d.ts +0 -69
- package/dist/git/worktree.d.ts.map +0 -1
- package/dist/git/worktree.js +0 -202
- package/dist/git/worktree.js.map +0 -1
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# {{projectName}} - Project Constitution
|
|
2
|
+
|
|
3
|
+
> **Immutable Configuration** — This file defines the technical foundation. Changes require explicit team approval.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Tech Stack
|
|
8
|
+
|
|
9
|
+
{{#if techStack.backend}}
|
|
10
|
+
### Backend
|
|
11
|
+
- **Language:** {{techStack.backend.language}}
|
|
12
|
+
- **Framework:** {{techStack.backend.framework}}
|
|
13
|
+
- **Runtime:** {{techStack.backend.runtime}}
|
|
14
|
+
{{/if}}
|
|
15
|
+
|
|
16
|
+
{{#if techStack.frontend}}
|
|
17
|
+
### Frontend
|
|
18
|
+
- **Language:** {{techStack.frontend.language}}
|
|
19
|
+
- **Framework:** {{techStack.frontend.framework}}
|
|
20
|
+
- **Build:** {{techStack.frontend.build}}
|
|
21
|
+
{{/if}}
|
|
22
|
+
|
|
23
|
+
{{#if techStack.database}}
|
|
24
|
+
### Database
|
|
25
|
+
- **Primary:** {{techStack.database.primary}}
|
|
26
|
+
{{#if techStack.database.cache}}
|
|
27
|
+
- **Cache:** {{techStack.database.cache}}
|
|
28
|
+
{{/if}}
|
|
29
|
+
{{/if}}
|
|
30
|
+
|
|
31
|
+
{{#if techStack.infrastructure}}
|
|
32
|
+
### Infrastructure
|
|
33
|
+
- **Hosting:** {{techStack.infrastructure.hosting}}
|
|
34
|
+
- **CI/CD:** {{techStack.infrastructure.cicd}}
|
|
35
|
+
{{/if}}
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Core Patterns
|
|
40
|
+
|
|
41
|
+
{{#each patterns}}
|
|
42
|
+
### {{this.name}}
|
|
43
|
+
{{this.description}}
|
|
44
|
+
|
|
45
|
+
{{#if this.example}}
|
|
46
|
+
**Example:**
|
|
47
|
+
```{{this.lang}}
|
|
48
|
+
{{this.example}}
|
|
49
|
+
```
|
|
50
|
+
{{/if}}
|
|
51
|
+
{{/each}}
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Hard Rules
|
|
56
|
+
|
|
57
|
+
{{#each rules}}
|
|
58
|
+
### {{this.category}}
|
|
59
|
+
{{#each this.items}}
|
|
60
|
+
- **{{this.title}}:** {{this.description}}
|
|
61
|
+
{{/each}}
|
|
62
|
+
{{/each}}
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Code Conventions
|
|
67
|
+
|
|
68
|
+
### File Organization
|
|
69
|
+
{{#if codeStructure}}
|
|
70
|
+
{{codeStructure}}
|
|
71
|
+
{{/if}}
|
|
72
|
+
|
|
73
|
+
### Naming Conventions
|
|
74
|
+
{{#if namingConventions}}
|
|
75
|
+
{{namingConventions}}
|
|
76
|
+
{{/if}}
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Import Aliases
|
|
81
|
+
|
|
82
|
+
{{#if importAliases}}
|
|
83
|
+
| Alias | Path |
|
|
84
|
+
|-------|------|
|
|
85
|
+
{{#each importAliases}}
|
|
86
|
+
| `@/{{this.from}}` | `{{this.to}}` |
|
|
87
|
+
{{/each}}
|
|
88
|
+
{{/if}}
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Environment Variables
|
|
93
|
+
|
|
94
|
+
{{#if envVars}}
|
|
95
|
+
| Variable | Required | Description |
|
|
96
|
+
|----------|----------|-------------|
|
|
97
|
+
{{#each envVars}}
|
|
98
|
+
| `{{this.name}}` | {{this.required}} | {{this.description}} |
|
|
99
|
+
{{/each}}
|
|
100
|
+
{{/if}}
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Testing Standards
|
|
105
|
+
|
|
106
|
+
{{#if testing}}
|
|
107
|
+
### Test Organization
|
|
108
|
+
{{testing.structure}}
|
|
109
|
+
|
|
110
|
+
### Coverage Requirements
|
|
111
|
+
{{testing.coverage}}
|
|
112
|
+
|
|
113
|
+
### Test Command
|
|
114
|
+
```bash
|
|
115
|
+
{{testing.command}}
|
|
116
|
+
```
|
|
117
|
+
{{/if}}
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Git Conventions
|
|
122
|
+
|
|
123
|
+
### Commit Format
|
|
124
|
+
```
|
|
125
|
+
{{#if commitFormat}}
|
|
126
|
+
{{commitFormat}}
|
|
127
|
+
{{else}}
|
|
128
|
+
<type>(<scope>): <description>
|
|
129
|
+
|
|
130
|
+
[optional body]
|
|
131
|
+
|
|
132
|
+
[optional footer]
|
|
133
|
+
{{/if}}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Commit Types
|
|
137
|
+
{{#if commitTypes}}
|
|
138
|
+
{{#each commitTypes}}
|
|
139
|
+
- **{{this.type}}:** {{this.description}}
|
|
140
|
+
{{/each}}
|
|
141
|
+
{{/if}}
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Deployment
|
|
146
|
+
|
|
147
|
+
{{#if deployment}}
|
|
148
|
+
### Strategy
|
|
149
|
+
{{deployment.strategy}}
|
|
150
|
+
|
|
151
|
+
### Environment Promotion
|
|
152
|
+
{{#each deployment.environments}}
|
|
153
|
+
1. **{{this.name}}:** {{this.description}}
|
|
154
|
+
{{/each}}
|
|
155
|
+
{{/if}}
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
> **Token Budget:** ~2000 tokens max
|
|
160
|
+
> **Last Updated:** {{timestamp}}
|
|
161
|
+
> **Version:** {{version}}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# Execution Plan — {{projectName}}
|
|
2
|
+
|
|
3
|
+
> Phase: {{currentPhase}} | Status: {{status}}
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Phase Overview
|
|
8
|
+
|
|
9
|
+
### {{phaseName}}
|
|
10
|
+
|
|
11
|
+
{{phaseDescription}}
|
|
12
|
+
|
|
13
|
+
**Duration:** {{phaseDuration}}
|
|
14
|
+
**Owner:** {{phaseOwner}}
|
|
15
|
+
**Dependencies:** {{#if phaseDependencies}}{{phaseDependencies}}{{else}}None{{/if}}
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Task Breakdown
|
|
20
|
+
|
|
21
|
+
{{#each tasks}}
|
|
22
|
+
### {{this.id}}: {{this.name}}
|
|
23
|
+
|
|
24
|
+
**Owner:** {{this.owner}}
|
|
25
|
+
**Type:** {{this.type}}
|
|
26
|
+
**Priority:** {{this.priority}}
|
|
27
|
+
**Status:** {{this.status}}
|
|
28
|
+
|
|
29
|
+
#### Description
|
|
30
|
+
{{this.description}}
|
|
31
|
+
|
|
32
|
+
#### Dependencies
|
|
33
|
+
{{#if this.dependencies}}
|
|
34
|
+
- {{this.dependencies}}
|
|
35
|
+
{{else}}
|
|
36
|
+
None
|
|
37
|
+
{{/if}}
|
|
38
|
+
|
|
39
|
+
#### Files
|
|
40
|
+
{{#if this.files}}
|
|
41
|
+
- Input: {{this.inputs}}
|
|
42
|
+
- Output: {{this.outputs}}
|
|
43
|
+
{{/if}}
|
|
44
|
+
|
|
45
|
+
#### Contracts
|
|
46
|
+
{{#if this.contracts}}
|
|
47
|
+
- {{this.contracts}}
|
|
48
|
+
{{else}}
|
|
49
|
+
None
|
|
50
|
+
{{/if}}
|
|
51
|
+
|
|
52
|
+
#### Acceptance Criteria
|
|
53
|
+
{{#each this.acceptance}}
|
|
54
|
+
- {{this}}
|
|
55
|
+
{{/each}}
|
|
56
|
+
|
|
57
|
+
#### Verification
|
|
58
|
+
```bash
|
|
59
|
+
{{this.verify}}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
{{/each}}
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Dependency Graph
|
|
69
|
+
|
|
70
|
+
```mermaid
|
|
71
|
+
graph TD
|
|
72
|
+
{{#each dependencies}}
|
|
73
|
+
{{this.id}}[{{this.label}}]
|
|
74
|
+
{{#each this.deps}}
|
|
75
|
+
{{../id}} --> {{this}}
|
|
76
|
+
{{/each}}
|
|
77
|
+
{{/each}}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Critical Path
|
|
81
|
+
{{#if criticalPath}}
|
|
82
|
+
The following tasks form the critical path:
|
|
83
|
+
{{#each criticalPath}}
|
|
84
|
+
{{@index}}. {{this}}
|
|
85
|
+
{{/each}}
|
|
86
|
+
{{/if}}
|
|
87
|
+
|
|
88
|
+
### Parallel Execution Opportunities
|
|
89
|
+
{{#if parallelTasks}}
|
|
90
|
+
These tasks can be executed in parallel:
|
|
91
|
+
{{#each parallelTasks}}
|
|
92
|
+
- **{{this.name}}:** {{this.description}}
|
|
93
|
+
{{/each}}
|
|
94
|
+
{{/if}}
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Resource Allocation
|
|
99
|
+
|
|
100
|
+
| Role | Agent | Tasks | Hours |
|
|
101
|
+
|------|-------|-------|-------|
|
|
102
|
+
{{#each resources}}
|
|
103
|
+
| {{this.role}} | {{this.agent}} | {{this.taskCount}} | {{this.estimatedHours}} |
|
|
104
|
+
{{/each}}
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Contracts & Interfaces
|
|
109
|
+
|
|
110
|
+
{{#if contracts}}
|
|
111
|
+
{{#each contracts}}
|
|
112
|
+
### {{this.name}}
|
|
113
|
+
- **Path:** `{{this.path}}`
|
|
114
|
+
- **Format:** {{this.format}}
|
|
115
|
+
- **Version:** {{this.version}}
|
|
116
|
+
- **Provider:** {{this.provider}}
|
|
117
|
+
- **Consumers:** {{this.consumers}}
|
|
118
|
+
|
|
119
|
+
{{/each}}
|
|
120
|
+
{{/if}}
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Execution Strategy
|
|
125
|
+
|
|
126
|
+
### Parallel Strategy
|
|
127
|
+
{{#if parallelStrategy}}
|
|
128
|
+
{{parallelStrategy}}
|
|
129
|
+
{{/if}}
|
|
130
|
+
|
|
131
|
+
### Rollout Plan
|
|
132
|
+
{{#if rolloutPlan}}
|
|
133
|
+
{{rolloutPlan}}
|
|
134
|
+
{{/if}}
|
|
135
|
+
|
|
136
|
+
### Testing Strategy
|
|
137
|
+
{{#if testingStrategy}}
|
|
138
|
+
{{testingStrategy}}
|
|
139
|
+
{{/if}}
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Risk Mitigation
|
|
144
|
+
|
|
145
|
+
{{#if risks}}
|
|
146
|
+
{{#each risks}}
|
|
147
|
+
### {{this.name}}
|
|
148
|
+
- **Risk:** {{this.description}}
|
|
149
|
+
- **Impact:** {{this.impact}}
|
|
150
|
+
- **Mitigation:** {{this.mitigation}}
|
|
151
|
+
- **Contingency:** {{this.contingency}}
|
|
152
|
+
|
|
153
|
+
{{/each}}
|
|
154
|
+
{{/if}}
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Success Criteria
|
|
159
|
+
|
|
160
|
+
This phase is complete when:
|
|
161
|
+
|
|
162
|
+
{{#each successCriteria}}
|
|
163
|
+
{{@index}}. {{this}}
|
|
164
|
+
{{/each}}
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Notes
|
|
169
|
+
|
|
170
|
+
{{#if notes}}
|
|
171
|
+
{{notes}}
|
|
172
|
+
{{/if}}
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
> **Token Budget:** ~6000 tokens max
|
|
177
|
+
> **Last Updated:** {{timestamp}}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# {{projectName}}
|
|
2
|
+
|
|
3
|
+
> {{tagline}}
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Vision
|
|
8
|
+
|
|
9
|
+
{{vision}}
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Problem Statement
|
|
14
|
+
|
|
15
|
+
{{problemStatement}}
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Solution Overview
|
|
20
|
+
|
|
21
|
+
{{solution}}
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Tech Stack
|
|
26
|
+
|
|
27
|
+
{{#if techStack.backend}}
|
|
28
|
+
### Backend
|
|
29
|
+
- **Language:** {{techStack.backend.language}}
|
|
30
|
+
- **Framework:** {{techStack.backend.framework}}
|
|
31
|
+
- **Runtime:** {{techStack.backend.runtime}}
|
|
32
|
+
{{#if techStack.backend.keyLibraries}}
|
|
33
|
+
- **Key Libraries:** {{techStack.backend.keyLibraries}}
|
|
34
|
+
{{/if}}
|
|
35
|
+
{{/if}}
|
|
36
|
+
|
|
37
|
+
{{#if techStack.frontend}}
|
|
38
|
+
### Frontend
|
|
39
|
+
- **Language:** {{techStack.frontend.language}}
|
|
40
|
+
- **Framework:** {{techStack.frontend.framework}}
|
|
41
|
+
- **Build:** {{techStack.frontend.build}}
|
|
42
|
+
- **Styling:** {{techStack.frontend.styling}}
|
|
43
|
+
{{#if techStack.frontend.stateManagement}}
|
|
44
|
+
- **State Management:** {{techStack.frontend.stateManagement}}
|
|
45
|
+
{{/if}}
|
|
46
|
+
{{/if}}
|
|
47
|
+
|
|
48
|
+
{{#if techStack.database}}
|
|
49
|
+
### Data
|
|
50
|
+
- **Primary:** {{techStack.database.primary}}
|
|
51
|
+
{{#if techStack.database.orm}}
|
|
52
|
+
- **ORM:** {{techStack.database.orm}}
|
|
53
|
+
{{/if}}
|
|
54
|
+
{{#if techStack.database.migrations}}
|
|
55
|
+
- **Migrations:** {{techStack.database.migrations}}
|
|
56
|
+
{{/if}}
|
|
57
|
+
{{/if}}
|
|
58
|
+
|
|
59
|
+
{{#if techStack.infrastructure}}
|
|
60
|
+
### Infrastructure
|
|
61
|
+
- **Hosting:** {{techStack.infrastructure.hosting}}
|
|
62
|
+
- **CI/CD:** {{techStack.infrastructure.cicd}}
|
|
63
|
+
{{#if techStack.infrastructure.monitoring}}
|
|
64
|
+
- **Monitoring:** {{techStack.infrastructure.monitoring}}
|
|
65
|
+
{{/if}}
|
|
66
|
+
{{/if}}
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Architecture Overview
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
{{architectureDiagram}}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### System Boundaries
|
|
77
|
+
{{#each systemBoundaries}}
|
|
78
|
+
- **{{this.name}}:** {{this.description}}
|
|
79
|
+
{{/each}}
|
|
80
|
+
|
|
81
|
+
### Data Flow
|
|
82
|
+
{{#if dataFlow}}
|
|
83
|
+
{{dataFlow}}
|
|
84
|
+
{{/if}}
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Core Features
|
|
89
|
+
|
|
90
|
+
{{#each features}}
|
|
91
|
+
### {{this.name}}
|
|
92
|
+
{{this.description}}
|
|
93
|
+
|
|
94
|
+
{{#if this.acceptanceCriteria}}
|
|
95
|
+
**Acceptance Criteria:**
|
|
96
|
+
{{#each this.acceptanceCriteria}}
|
|
97
|
+
- {{this}}
|
|
98
|
+
{{/each}}
|
|
99
|
+
{{/if}}
|
|
100
|
+
|
|
101
|
+
{{/each}}
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Non-Functional Requirements
|
|
106
|
+
|
|
107
|
+
{{#if nfrs}}
|
|
108
|
+
### Performance
|
|
109
|
+
{{#each nfrs.performance}}
|
|
110
|
+
- {{this}}
|
|
111
|
+
{{/each}}
|
|
112
|
+
|
|
113
|
+
### Security
|
|
114
|
+
{{#each nfrs.security}}
|
|
115
|
+
- {{this}}
|
|
116
|
+
{{/each}}
|
|
117
|
+
|
|
118
|
+
### Scalability
|
|
119
|
+
{{#each nfrs.scalability}}
|
|
120
|
+
- {{this}}
|
|
121
|
+
{{/each}}
|
|
122
|
+
|
|
123
|
+
### Availability
|
|
124
|
+
{{#each nfrs.availability}}
|
|
125
|
+
- {{this}}
|
|
126
|
+
{{/each}}
|
|
127
|
+
{{/if}}
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Success Metrics
|
|
132
|
+
|
|
133
|
+
{{#each successMetrics}}
|
|
134
|
+
- **{{this.name}}:** {{this.description}} (Target: {{this.target}})
|
|
135
|
+
{{/each}}
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Known Constraints
|
|
140
|
+
|
|
141
|
+
{{#each constraints}}
|
|
142
|
+
- **{{this.type}}:** {{this.description}}
|
|
143
|
+
{{/each}}
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Out of Scope (Future Phases)
|
|
148
|
+
|
|
149
|
+
{{#each outOfScope}}
|
|
150
|
+
- {{this}}
|
|
151
|
+
{{/each}}
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
> **Version:** {{version}}
|
|
156
|
+
> **Last Updated:** {{timestamp}}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
# Requirements — {{projectName}}
|
|
2
|
+
|
|
3
|
+
> Version: {{version}} | Phase: {{currentPhase}}
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Functional Requirements
|
|
8
|
+
|
|
9
|
+
{{#each features}}
|
|
10
|
+
### {{@index}}. {{this.name}}
|
|
11
|
+
|
|
12
|
+
{{this.description}}
|
|
13
|
+
|
|
14
|
+
#### User Stories
|
|
15
|
+
{{#each this.userStories}}
|
|
16
|
+
**As a** {{this.role}}
|
|
17
|
+
**I want** {{this.want}}
|
|
18
|
+
**So that** {{this.why}}
|
|
19
|
+
|
|
20
|
+
{{/each}}
|
|
21
|
+
|
|
22
|
+
#### Acceptance Criteria
|
|
23
|
+
{{#each this.acceptanceCriteria}}
|
|
24
|
+
**Given** {{this.given}}
|
|
25
|
+
**When** {{this.when}}
|
|
26
|
+
**Then** {{this.then}}
|
|
27
|
+
|
|
28
|
+
{{/each}}
|
|
29
|
+
|
|
30
|
+
#### Dependencies
|
|
31
|
+
{{#if this.dependencies}}
|
|
32
|
+
- Depends on: {{this.dependencies}}
|
|
33
|
+
{{/if}}
|
|
34
|
+
|
|
35
|
+
{{#if this.apiContracts}}
|
|
36
|
+
**API Contracts:** `{{this.apiContracts}}`
|
|
37
|
+
{{/if}}
|
|
38
|
+
|
|
39
|
+
{{/each}}
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Non-Functional Requirements
|
|
44
|
+
|
|
45
|
+
### Performance
|
|
46
|
+
{{#each nfrs.performance}}
|
|
47
|
+
- {{this}}
|
|
48
|
+
|
|
49
|
+
{{/each}}
|
|
50
|
+
|
|
51
|
+
### Security
|
|
52
|
+
{{#each nfrs.security}}
|
|
53
|
+
- {{this}}
|
|
54
|
+
|
|
55
|
+
{{/each}}
|
|
56
|
+
|
|
57
|
+
### Reliability
|
|
58
|
+
{{#each nfrs.reliability}}
|
|
59
|
+
- {{this}}
|
|
60
|
+
|
|
61
|
+
{{/each}}
|
|
62
|
+
|
|
63
|
+
### Maintainability
|
|
64
|
+
{{#each nfrs.maintainability}}
|
|
65
|
+
- {{this}}
|
|
66
|
+
|
|
67
|
+
{{/each}}
|
|
68
|
+
|
|
69
|
+
### Scalability
|
|
70
|
+
{{#each nfrs.scalability}}
|
|
71
|
+
- {{this}}
|
|
72
|
+
|
|
73
|
+
{{/each}}
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Data Requirements
|
|
78
|
+
|
|
79
|
+
{{#if dataRequirements}}
|
|
80
|
+
### Entities
|
|
81
|
+
{{#each dataRequirements.entities}}
|
|
82
|
+
#### {{this.name}}
|
|
83
|
+
{{#each this.fields}}
|
|
84
|
+
- **{{this.name}}** ({{this.type}}){{#if this.required}} *required*{{/if}}: {{this.description}}
|
|
85
|
+
{{/each}}
|
|
86
|
+
|
|
87
|
+
{{/each}}
|
|
88
|
+
{{/if}}
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## API Requirements
|
|
93
|
+
|
|
94
|
+
{{#if apiRequirements}}
|
|
95
|
+
{{#each apiRequirements}}
|
|
96
|
+
### {{this.name}}
|
|
97
|
+
- **Endpoint:** `{{this.method}} {{this.path}}`
|
|
98
|
+
- **Description:** {{this.description}}
|
|
99
|
+
- **Authentication:** {{this.authentication}}
|
|
100
|
+
- **Rate Limit:** {{this.rateLimit}}
|
|
101
|
+
|
|
102
|
+
{{#if this.request}}
|
|
103
|
+
**Request:**
|
|
104
|
+
```{{this.request.format}}
|
|
105
|
+
{{this.request.schema}}
|
|
106
|
+
```
|
|
107
|
+
{{/if}}
|
|
108
|
+
|
|
109
|
+
{{#if this.response}}
|
|
110
|
+
**Response:**
|
|
111
|
+
```{{this.response.format}}
|
|
112
|
+
{{this.response.schema}}
|
|
113
|
+
```
|
|
114
|
+
{{/if}}
|
|
115
|
+
|
|
116
|
+
{{#if this.errors}}
|
|
117
|
+
**Error Responses:**
|
|
118
|
+
{{#each this.errors}}
|
|
119
|
+
- `{{this.code}}` — {{this.description}}
|
|
120
|
+
{{/each}}
|
|
121
|
+
{{/if}}
|
|
122
|
+
|
|
123
|
+
{{/each}}
|
|
124
|
+
{{/if}}
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## UI/UX Requirements
|
|
129
|
+
|
|
130
|
+
{{#if uiRequirements}}
|
|
131
|
+
### Design Principles
|
|
132
|
+
{{#each uiRequirements.principles}}
|
|
133
|
+
- {{this}}
|
|
134
|
+
{{/each}}
|
|
135
|
+
|
|
136
|
+
### Screen Requirements
|
|
137
|
+
{{#each uiRequirements.screens}}
|
|
138
|
+
#### {{this.name}}
|
|
139
|
+
{{this.description}}
|
|
140
|
+
|
|
141
|
+
**States:**
|
|
142
|
+
{{#each this.states}}
|
|
143
|
+
- {{this.name}}: {{this.description}}
|
|
144
|
+
{{/each}}
|
|
145
|
+
|
|
146
|
+
**Interactions:**
|
|
147
|
+
{{#each this.interactions}}
|
|
148
|
+
- {{this}}
|
|
149
|
+
{{/each}}
|
|
150
|
+
|
|
151
|
+
{{/each}}
|
|
152
|
+
{{/if}}
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Integration Requirements
|
|
157
|
+
|
|
158
|
+
{{#if integrations}}
|
|
159
|
+
{{#each integrations}}
|
|
160
|
+
### {{this.name}}
|
|
161
|
+
- **Type:** {{this.type}}
|
|
162
|
+
- **Purpose:** {{this.purpose}}
|
|
163
|
+
- **Contract:** `{{this.contractPath}}`
|
|
164
|
+
- **SLA:** {{this.sla}}
|
|
165
|
+
|
|
166
|
+
{{/each}}
|
|
167
|
+
{{/if}}
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Testing Requirements
|
|
172
|
+
|
|
173
|
+
{{#if testing}}
|
|
174
|
+
### Test Coverage
|
|
175
|
+
- Minimum: {{testing.coverage}}%
|
|
176
|
+
- Critical paths: 100%
|
|
177
|
+
|
|
178
|
+
### Test Types Required
|
|
179
|
+
{{#each.testing.types}}
|
|
180
|
+
- {{this}}
|
|
181
|
+
{{/each}}
|
|
182
|
+
|
|
183
|
+
### Performance Tests
|
|
184
|
+
{{#if testing.performance}}
|
|
185
|
+
{{testing.performance}}
|
|
186
|
+
{{/if}}
|
|
187
|
+
|
|
188
|
+
### Security Tests
|
|
189
|
+
{{#if testing.security}}
|
|
190
|
+
{{testing.security}}
|
|
191
|
+
{{/if}}
|
|
192
|
+
{{/if}}
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Compliance & Legal
|
|
197
|
+
|
|
198
|
+
{{#if compliance}}
|
|
199
|
+
{{#each compliance}}
|
|
200
|
+
- **{{this.area}}:** {{this.requirement}}
|
|
201
|
+
{{/each}}
|
|
202
|
+
{{/if}}
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Assumptions & Dependencies
|
|
207
|
+
|
|
208
|
+
### Assumptions
|
|
209
|
+
{{#each assumptions}}
|
|
210
|
+
- {{this}}
|
|
211
|
+
{{/each}}
|
|
212
|
+
|
|
213
|
+
### External Dependencies
|
|
214
|
+
{{#each dependencies}}
|
|
215
|
+
- **{{this.name}}** (v{{this.version}}) — {{this.purpose}}
|
|
216
|
+
{{/each}}
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
> **Token Budget:** ~4000 tokens max
|
|
221
|
+
> **Last Updated:** {{timestamp}}
|