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.
Files changed (109) hide show
  1. package/.claude/commands/forge/README.md +281 -0
  2. package/.claude/commands/forge/add-phase.md +90 -0
  3. package/.claude/commands/forge/complete-milestone.md +130 -0
  4. package/.claude/commands/forge/config.md +115 -0
  5. package/.claude/commands/forge/convert.md +31 -0
  6. package/.claude/commands/forge/debug.md +31 -0
  7. package/.claude/commands/forge/discuss.md +78 -0
  8. package/.claude/commands/forge/execute.md +85 -0
  9. package/.claude/commands/forge/generate.md +21 -0
  10. package/.claude/commands/forge/help.md +18 -0
  11. package/.claude/commands/forge/init.md +21 -0
  12. package/.claude/commands/forge/insert-phase.md +99 -0
  13. package/.claude/commands/forge/new-milestone.md +114 -0
  14. package/.claude/commands/forge/new-project.md +24 -0
  15. package/.claude/commands/forge/pause-work.md +111 -0
  16. package/.claude/commands/forge/plan.md +129 -0
  17. package/.claude/commands/forge/quick.md +41 -0
  18. package/.claude/commands/forge/remove-phase.md +92 -0
  19. package/.claude/commands/forge/resume.md +22 -0
  20. package/.claude/commands/forge/status.md +87 -0
  21. package/.claude/commands/forge/team-add.md +24 -0
  22. package/.claude/commands/forge/team-create.md +22 -0
  23. package/.claude/commands/forge/team-remove.md +24 -0
  24. package/.claude/commands/forge/team-start.md +22 -0
  25. package/.claude/commands/forge/team-view.md +18 -0
  26. package/.claude/commands/forge/verify.md +95 -0
  27. package/.claude/hooks/forge-context-cleanup.cjs +79 -0
  28. package/.claude/hooks/forge-event-guard.cjs +36 -0
  29. package/.claude/hooks/forge-size-guard.cjs +55 -0
  30. package/.claude/rules/api-patterns.md +13 -98
  31. package/.claude/rules/context-efficiency.md +10 -0
  32. package/.claude/rules/security-baseline.md +18 -204
  33. package/.claude/rules/testing-standards.md +16 -177
  34. package/.claude/rules/ui-conventions.md +17 -142
  35. package/README.md +1 -0
  36. package/bin/forge.js +5 -3
  37. package/dist/bin/forge.js +5 -3
  38. package/dist/cli/index.d.ts.map +1 -1
  39. package/dist/cli/index.js +15 -1
  40. package/dist/cli/index.js.map +1 -1
  41. package/dist/commands/convert.d.ts +6 -0
  42. package/dist/commands/convert.d.ts.map +1 -0
  43. package/dist/commands/convert.js +132 -0
  44. package/dist/commands/convert.js.map +1 -0
  45. package/dist/commands/generate.d.ts.map +1 -1
  46. package/dist/commands/generate.js +3 -2
  47. package/dist/commands/generate.js.map +1 -1
  48. package/dist/commands/index.d.ts +4 -4
  49. package/dist/commands/index.d.ts.map +1 -1
  50. package/dist/commands/index.js +4 -4
  51. package/dist/commands/index.js.map +1 -1
  52. package/dist/generators/gsd-converter.d.ts +100 -0
  53. package/dist/generators/gsd-converter.d.ts.map +1 -0
  54. package/dist/generators/gsd-converter.js +335 -0
  55. package/dist/generators/gsd-converter.js.map +1 -0
  56. package/dist/templates/.claude/rules/api-patterns.md.template +212 -0
  57. package/dist/templates/.claude/rules/security-baseline.md.template +322 -0
  58. package/dist/templates/.claude/rules/testing-standards.md.template +280 -0
  59. package/dist/templates/.claude/rules/ui-conventions.md.template +264 -0
  60. package/dist/templates/.planning/forge.config.json.template +75 -0
  61. package/dist/templates/CLAUDE.md.template +161 -0
  62. package/dist/templates/PLAN.md.template +177 -0
  63. package/dist/templates/PROJECT.md.template +156 -0
  64. package/dist/templates/REQUIREMENTS.md.template +221 -0
  65. package/dist/templates/ROADMAP.md.template +130 -0
  66. package/dist/types/index.d.ts +2 -2
  67. package/dist/types/index.d.ts.map +1 -1
  68. package/dist/types/index.js +2 -2
  69. package/dist/types/index.js.map +1 -1
  70. package/dist/utils/index.d.ts +5 -5
  71. package/dist/utils/index.d.ts.map +1 -1
  72. package/dist/utils/index.js +5 -5
  73. package/dist/utils/index.js.map +1 -1
  74. package/dist/utils/template-client.d.ts.map +1 -1
  75. package/dist/utils/template-client.js +3 -2
  76. package/dist/utils/template-client.js.map +1 -1
  77. package/package.json +6 -4
  78. package/dist/git/__tests__/worktree.test.d.ts +0 -5
  79. package/dist/git/__tests__/worktree.test.d.ts.map +0 -1
  80. package/dist/git/__tests__/worktree.test.js +0 -121
  81. package/dist/git/__tests__/worktree.test.js.map +0 -1
  82. package/dist/git/codeowners.d.ts +0 -101
  83. package/dist/git/codeowners.d.ts.map +0 -1
  84. package/dist/git/codeowners.js +0 -216
  85. package/dist/git/codeowners.js.map +0 -1
  86. package/dist/git/commit.d.ts +0 -135
  87. package/dist/git/commit.d.ts.map +0 -1
  88. package/dist/git/commit.js +0 -223
  89. package/dist/git/commit.js.map +0 -1
  90. package/dist/git/hooks/commit-msg.d.ts +0 -8
  91. package/dist/git/hooks/commit-msg.d.ts.map +0 -1
  92. package/dist/git/hooks/commit-msg.js +0 -34
  93. package/dist/git/hooks/commit-msg.js.map +0 -1
  94. package/dist/git/hooks/pre-commit.d.ts +0 -8
  95. package/dist/git/hooks/pre-commit.d.ts.map +0 -1
  96. package/dist/git/hooks/pre-commit.js +0 -34
  97. package/dist/git/hooks/pre-commit.js.map +0 -1
  98. package/dist/git/pre-commit-hooks.d.ts +0 -117
  99. package/dist/git/pre-commit-hooks.d.ts.map +0 -1
  100. package/dist/git/pre-commit-hooks.js +0 -270
  101. package/dist/git/pre-commit-hooks.js.map +0 -1
  102. package/dist/git/wipe-protocol.d.ts +0 -281
  103. package/dist/git/wipe-protocol.d.ts.map +0 -1
  104. package/dist/git/wipe-protocol.js +0 -237
  105. package/dist/git/wipe-protocol.js.map +0 -1
  106. package/dist/git/worktree.d.ts +0 -69
  107. package/dist/git/worktree.d.ts.map +0 -1
  108. package/dist/git/worktree.js +0 -202
  109. 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}}