forge-dev-framework 1.0.1 → 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 +281 -0
- package/.claude/commands/forge/add-phase.md +90 -0
- package/.claude/commands/forge/complete-milestone.md +130 -0
- package/.claude/commands/forge/config.md +115 -0
- package/.claude/commands/forge/convert.md +31 -0
- package/.claude/commands/forge/debug.md +31 -0
- package/.claude/commands/forge/discuss.md +78 -0
- package/.claude/commands/forge/execute.md +85 -0
- package/.claude/commands/forge/generate.md +21 -0
- package/.claude/commands/forge/help.md +18 -0
- package/.claude/commands/forge/init.md +21 -0
- package/.claude/commands/forge/insert-phase.md +99 -0
- package/.claude/commands/forge/new-milestone.md +114 -0
- package/.claude/commands/forge/new-project.md +24 -0
- package/.claude/commands/forge/pause-work.md +111 -0
- package/.claude/commands/forge/plan.md +129 -0
- package/.claude/commands/forge/quick.md +41 -0
- package/.claude/commands/forge/remove-phase.md +92 -0
- package/.claude/commands/forge/resume.md +22 -0
- package/.claude/commands/forge/status.md +87 -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 +95 -0
- 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/README.md +1 -0
- 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/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,264 @@
|
|
|
1
|
+
# UI Conventions — {{projectName}}
|
|
2
|
+
|
|
3
|
+
> **Scope:** Frontend UI development | **Loaded On-Demand**
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Design Principles
|
|
8
|
+
|
|
9
|
+
{{#if designPrinciples}}
|
|
10
|
+
{{#each designPrinciples}}
|
|
11
|
+
- {{this}}
|
|
12
|
+
{{/each}}
|
|
13
|
+
{{else}}
|
|
14
|
+
- **Clarity over cleverness** — UI should be self-explanatory
|
|
15
|
+
- **Progressive disclosure** — Show complexity only when needed
|
|
16
|
+
- **Responsive by default** — Mobile-first approach
|
|
17
|
+
- **Accessibility first** — WCAG 2.1 AA compliance minimum
|
|
18
|
+
{{/if}}
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Component Structure
|
|
23
|
+
|
|
24
|
+
### File Organization
|
|
25
|
+
{{#if componentStructure}}
|
|
26
|
+
{{componentStructure}}
|
|
27
|
+
{{else}}
|
|
28
|
+
```
|
|
29
|
+
src/
|
|
30
|
+
├── components/
|
|
31
|
+
│ ├── ui/ # Reusable UI primitives
|
|
32
|
+
│ ├── features/ # Feature-specific components
|
|
33
|
+
│ └── layouts/ # Layout components
|
|
34
|
+
├── hooks/ # Custom React hooks
|
|
35
|
+
├── lib/ # Utility functions
|
|
36
|
+
└── styles/ # Global styles
|
|
37
|
+
```
|
|
38
|
+
{{/if}}
|
|
39
|
+
|
|
40
|
+
### Component Naming
|
|
41
|
+
{{#if componentNaming}}
|
|
42
|
+
{{componentNaming}}
|
|
43
|
+
{{else}}
|
|
44
|
+
- Use PascalCase: `UserProfile.tsx`, `DataTable.tsx`
|
|
45
|
+
- One component per file
|
|
46
|
+
- Co-locate related files:
|
|
47
|
+
- `UserProfile.tsx`
|
|
48
|
+
- `UserProfile.test.tsx`
|
|
49
|
+
- `UserProfile.stories.tsx`
|
|
50
|
+
- `user-profile.module.css`
|
|
51
|
+
{{/if}}
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Styling Conventions
|
|
56
|
+
|
|
57
|
+
{{#if styling}}
|
|
58
|
+
{{styling}}
|
|
59
|
+
{{else}}
|
|
60
|
+
### CSS Approach
|
|
61
|
+
- Use CSS Modules or Tailwind (configured in project)
|
|
62
|
+
- No inline styles (except dynamic values)
|
|
63
|
+
- Scoped styles only
|
|
64
|
+
|
|
65
|
+
### Tailwind Conventions (if applicable)
|
|
66
|
+
- Use utility classes for layout, spacing, colors
|
|
67
|
+
- Create `@apply` components for repeated patterns
|
|
68
|
+
- Don't override component props with arbitrary values
|
|
69
|
+
|
|
70
|
+
### Theme Variables
|
|
71
|
+
```css
|
|
72
|
+
:root {
|
|
73
|
+
--color-primary: ...;
|
|
74
|
+
--color-success: ...;
|
|
75
|
+
--color-error: ...;
|
|
76
|
+
--spacing-unit: ...;
|
|
77
|
+
--radius-sm: ...;
|
|
78
|
+
--radius-md: ...;
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
{{/if}}
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Form Patterns
|
|
86
|
+
|
|
87
|
+
{{#if formPatterns}}
|
|
88
|
+
{{formPatterns}}
|
|
89
|
+
{{else}}
|
|
90
|
+
### Form Validation
|
|
91
|
+
- Client-side validation before submission
|
|
92
|
+
- Show inline errors immediately
|
|
93
|
+
- Disable submit button during submission
|
|
94
|
+
- Clear errors on input change
|
|
95
|
+
|
|
96
|
+
### Error Display
|
|
97
|
+
- Red outline + error text below field
|
|
98
|
+
- Group errors at top for complex forms
|
|
99
|
+
- Highlight first error field on load
|
|
100
|
+
|
|
101
|
+
### Success Feedback
|
|
102
|
+
- Toast notification on success
|
|
103
|
+
- Redirect or clear form as appropriate
|
|
104
|
+
{{/if}}
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Loading States
|
|
109
|
+
|
|
110
|
+
{{#if loadingStates}}
|
|
111
|
+
{{loadingStates}}
|
|
112
|
+
{{else}}
|
|
113
|
+
### Skeleton Loading
|
|
114
|
+
- Use skeleton screens for lists, tables
|
|
115
|
+
- Maintain same layout as loaded state
|
|
116
|
+
- Smooth fade-in when content loads
|
|
117
|
+
|
|
118
|
+
### Button States
|
|
119
|
+
- Show spinner + "Loading..." text
|
|
120
|
+
- Disable button during action
|
|
121
|
+
- Maintain button width to prevent layout shift
|
|
122
|
+
{{/if}}
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Empty States
|
|
127
|
+
|
|
128
|
+
{{#if emptyStates}}
|
|
129
|
+
{{emptyStates}}
|
|
130
|
+
{{else}}
|
|
131
|
+
Every list/table must handle:
|
|
132
|
+
1. **Loading** — Skeleton or spinner
|
|
133
|
+
2. **Empty** — Friendly message + action button
|
|
134
|
+
3. **Error** — Error message + retry button
|
|
135
|
+
4. **No Results** — Message when filters return zero results
|
|
136
|
+
|
|
137
|
+
Example:
|
|
138
|
+
```
|
|
139
|
+
┌─────────────────────────────┐
|
|
140
|
+
│ No users found │
|
|
141
|
+
│ │
|
|
142
|
+
│ Try adjusting your filters │
|
|
143
|
+
│ or create a new user │
|
|
144
|
+
│ │
|
|
145
|
+
│ [Create New User] │
|
|
146
|
+
└─────────────────────────────┘
|
|
147
|
+
```
|
|
148
|
+
{{/if}}
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Responsive Breakpoints
|
|
153
|
+
|
|
154
|
+
{{#if breakpoints}}
|
|
155
|
+
{{breakpoints}}
|
|
156
|
+
{{else}}
|
|
157
|
+
- Mobile: < 640px
|
|
158
|
+
- Tablet: 640px — 1024px
|
|
159
|
+
- Desktop: > 1024px
|
|
160
|
+
- Large Desktop: > 1280px
|
|
161
|
+
|
|
162
|
+
Test on real devices or browser dev tools.
|
|
163
|
+
{{/if}}
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Accessibility
|
|
168
|
+
|
|
169
|
+
{{#if accessibility}}
|
|
170
|
+
{{accessibility}}
|
|
171
|
+
{{else}}
|
|
172
|
+
### Minimum Requirements
|
|
173
|
+
- Keyboard navigation for all interactive elements
|
|
174
|
+
- ARIA labels for icon-only buttons
|
|
175
|
+
- Focus indicators on all focusable elements
|
|
176
|
+
- Screen reader text for status messages
|
|
177
|
+
- Color contrast minimum 4.5:1
|
|
178
|
+
|
|
179
|
+
### Testing
|
|
180
|
+
- Test with keyboard only
|
|
181
|
+
- Test with screen reader (NVDA/VoiceOver)
|
|
182
|
+
- Use axe DevTools extension
|
|
183
|
+
{{/if}}
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Data Display
|
|
188
|
+
|
|
189
|
+
### Tables
|
|
190
|
+
{{#if tablePatterns}}
|
|
191
|
+
{{tablePatterns}}
|
|
192
|
+
{{else}}
|
|
193
|
+
- Sortable headers
|
|
194
|
+
- Pagination (20 rows default)
|
|
195
|
+
- Column filtering for complex tables
|
|
196
|
+
- Row actions menu (⋮)
|
|
197
|
+
- Responsive: card view on mobile
|
|
198
|
+
|
|
199
|
+
### Status Indicators
|
|
200
|
+
Use consistent colors:
|
|
201
|
+
- 🟢 Green — Active, Success, Online
|
|
202
|
+
- 🟡 Yellow — Pending, Warning, Away
|
|
203
|
+
- 🔴 Red — Error, Failed, Offline
|
|
204
|
+
- 🔵 Blue — Info, Neutral
|
|
205
|
+
- ⚪ Gray — Disabled, Inactive
|
|
206
|
+
{{/if}}
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Performance
|
|
211
|
+
|
|
212
|
+
{{#if performance}}
|
|
213
|
+
{{performance}}
|
|
214
|
+
{{else}}
|
|
215
|
+
### Code Splitting
|
|
216
|
+
- Route-based splitting (automatic)
|
|
217
|
+
- Lazy load heavy components
|
|
218
|
+
- Preload critical resources
|
|
219
|
+
|
|
220
|
+
### Rendering
|
|
221
|
+
- Use `React.memo` for expensive components
|
|
222
|
+
- Debounce search inputs (300ms)
|
|
223
|
+
- Virtualize long lists (> 100 items)
|
|
224
|
+
{{/if}}
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Icon Usage
|
|
229
|
+
|
|
230
|
+
{{#if icons}}
|
|
231
|
+
{{icons}}
|
|
232
|
+
{{else}}
|
|
233
|
+
- Use {{iconSet}} for icons
|
|
234
|
+
- Standard icon sizes: sm (16px), md (20px), lg (24px), xl (32px)
|
|
235
|
+
- Match icon size to adjacent text
|
|
236
|
+
- Add aria-label for icon-only buttons
|
|
237
|
+
{{/if}}
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Typography
|
|
242
|
+
|
|
243
|
+
{{#if typography}}
|
|
244
|
+
{{typography}}
|
|
245
|
+
{{else}}
|
|
246
|
+
### Font Hierarchy
|
|
247
|
+
- Heading 1: 32px (page titles)
|
|
248
|
+
- Heading 2: 24px (section titles)
|
|
249
|
+
- Heading 3: 18px (card titles)
|
|
250
|
+
- Body: 16px (default)
|
|
251
|
+
- Small: 14px (labels, metadata)
|
|
252
|
+
- XSmall: 12px (captions, timestamps)
|
|
253
|
+
|
|
254
|
+
### Font Weights
|
|
255
|
+
- Regular (400) — body text
|
|
256
|
+
- Medium (500) — labels, buttons
|
|
257
|
+
- Semibold (600) — headings, emphasized text
|
|
258
|
+
- Bold (700) — rarely used
|
|
259
|
+
{{/if}}
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
> **Token Budget:** ~1000 tokens max
|
|
264
|
+
> **Loaded On-Demand** — Only when working on UI code
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../src/schemas/forge.config.schema.json",
|
|
3
|
+
"project": {
|
|
4
|
+
"name": "{{projectName}}",
|
|
5
|
+
"version": "{{version}}",
|
|
6
|
+
"status": "initialized"
|
|
7
|
+
},
|
|
8
|
+
"mode": "{{mode}}",
|
|
9
|
+
"depth": "{{depth}}",
|
|
10
|
+
"maxTeammates": {{maxTeammates}},
|
|
11
|
+
"taskLimit": {{taskLimit}},
|
|
12
|
+
|
|
13
|
+
"agentProfile": "{{agentProfile}}",
|
|
14
|
+
"workflow": {
|
|
15
|
+
"research": {{workflow.research}},
|
|
16
|
+
"planCheck": {{workflow.planCheck}},
|
|
17
|
+
"tribunal": {{workflow.tribunal}},
|
|
18
|
+
"contractFirst": {{workflow.contractFirst}}
|
|
19
|
+
},
|
|
20
|
+
|
|
21
|
+
"git": {
|
|
22
|
+
"strategy": "{{git.strategy}}",
|
|
23
|
+
"branchTemplate": "{{git.branchTemplate}}",
|
|
24
|
+
"squashOnShip": {{git.squashOnShip}}
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
"paths": {
|
|
28
|
+
"artifacts": "./",
|
|
29
|
+
"state": "./state",
|
|
30
|
+
"events": "./state/events",
|
|
31
|
+
"contracts": "./contracts",
|
|
32
|
+
"planning": "./.planning",
|
|
33
|
+
"worktrees": "./.worktrees"
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
"templates": {
|
|
37
|
+
"claude": "./src/templates/CLAUDE.md.template",
|
|
38
|
+
"project": "./src/templates/PROJECT.md.template",
|
|
39
|
+
"requirements": "./src/templates/REQUIREMENTS.md.template",
|
|
40
|
+
"roadmap": "./src/templates/ROADMAP.md.template",
|
|
41
|
+
"plan": "./src/templates/PLAN.md.template",
|
|
42
|
+
"rules": "./src/templates/.claude/rules",
|
|
43
|
+
"config": "./src/templates/.planning/forge.config.json.template"
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
"tokenLimits": {
|
|
47
|
+
"claude": 2000,
|
|
48
|
+
"requirements": 4000,
|
|
49
|
+
"plan": 6000,
|
|
50
|
+
"rules": 1000
|
|
51
|
+
},
|
|
52
|
+
|
|
53
|
+
"roles": {
|
|
54
|
+
"team-lead": {
|
|
55
|
+
"name": "Team Lead",
|
|
56
|
+
"description": "Coordinates the team, manages state, approves artifacts"
|
|
57
|
+
},
|
|
58
|
+
"backend": {
|
|
59
|
+
"name": "Backend Specialist",
|
|
60
|
+
"description": "Owns /src/api, /src/db, API contracts"
|
|
61
|
+
},
|
|
62
|
+
"frontend": {
|
|
63
|
+
"name": "Frontend Specialist",
|
|
64
|
+
"description": "Owns /src/ui, /src/components, frontend contracts"
|
|
65
|
+
},
|
|
66
|
+
"qa": {
|
|
67
|
+
"name": "QA Specialist",
|
|
68
|
+
"description": "Owns /tests, /e2e, quality assurance"
|
|
69
|
+
},
|
|
70
|
+
"templates": {
|
|
71
|
+
"name": "Templates Specialist",
|
|
72
|
+
"description": "Owns /src/templates, /src/generators, artifact generation"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -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}}
|