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.
Files changed (107) hide show
  1. package/.claude/commands/forge/README.md +156 -189
  2. package/.claude/commands/forge/add-phase.md +4 -3
  3. package/.claude/commands/forge/complete-milestone.md +1 -1
  4. package/.claude/commands/forge/convert.md +31 -0
  5. package/.claude/commands/forge/debug.md +12 -154
  6. package/.claude/commands/forge/discuss.md +60 -107
  7. package/.claude/commands/forge/execute.md +67 -142
  8. package/.claude/commands/forge/generate.md +8 -107
  9. package/.claude/commands/forge/help.md +9 -114
  10. package/.claude/commands/forge/init.md +10 -74
  11. package/.claude/commands/forge/insert-phase.md +4 -3
  12. package/.claude/commands/forge/new-milestone.md +1 -1
  13. package/.claude/commands/forge/new-project.md +12 -91
  14. package/.claude/commands/forge/pause-work.md +2 -2
  15. package/.claude/commands/forge/plan.md +114 -129
  16. package/.claude/commands/forge/quick.md +17 -106
  17. package/.claude/commands/forge/remove-phase.md +3 -2
  18. package/.claude/commands/forge/resume.md +22 -0
  19. package/.claude/commands/forge/team-add.md +24 -0
  20. package/.claude/commands/forge/team-create.md +22 -0
  21. package/.claude/commands/forge/team-remove.md +24 -0
  22. package/.claude/commands/forge/team-start.md +22 -0
  23. package/.claude/commands/forge/team-view.md +18 -0
  24. package/.claude/commands/forge/verify.md +68 -147
  25. package/.claude/hooks/forge-context-cleanup.cjs +79 -0
  26. package/.claude/hooks/forge-event-guard.cjs +36 -0
  27. package/.claude/hooks/forge-size-guard.cjs +55 -0
  28. package/.claude/rules/api-patterns.md +13 -98
  29. package/.claude/rules/context-efficiency.md +10 -0
  30. package/.claude/rules/security-baseline.md +18 -204
  31. package/.claude/rules/testing-standards.md +16 -177
  32. package/.claude/rules/ui-conventions.md +17 -142
  33. package/bin/forge.js +5 -3
  34. package/dist/bin/forge.js +5 -3
  35. package/dist/cli/index.d.ts.map +1 -1
  36. package/dist/cli/index.js +15 -1
  37. package/dist/cli/index.js.map +1 -1
  38. package/dist/commands/convert.d.ts +6 -0
  39. package/dist/commands/convert.d.ts.map +1 -0
  40. package/dist/commands/convert.js +132 -0
  41. package/dist/commands/convert.js.map +1 -0
  42. package/dist/commands/generate.d.ts.map +1 -1
  43. package/dist/commands/generate.js +3 -2
  44. package/dist/commands/generate.js.map +1 -1
  45. package/dist/commands/index.d.ts +4 -4
  46. package/dist/commands/index.d.ts.map +1 -1
  47. package/dist/commands/index.js +4 -4
  48. package/dist/commands/index.js.map +1 -1
  49. package/dist/generators/gsd-converter.d.ts +100 -0
  50. package/dist/generators/gsd-converter.d.ts.map +1 -0
  51. package/dist/generators/gsd-converter.js +335 -0
  52. package/dist/generators/gsd-converter.js.map +1 -0
  53. package/dist/templates/.claude/rules/api-patterns.md.template +212 -0
  54. package/dist/templates/.claude/rules/security-baseline.md.template +322 -0
  55. package/dist/templates/.claude/rules/testing-standards.md.template +280 -0
  56. package/dist/templates/.claude/rules/ui-conventions.md.template +264 -0
  57. package/dist/templates/.planning/forge.config.json.template +75 -0
  58. package/dist/templates/CLAUDE.md.template +161 -0
  59. package/dist/templates/PLAN.md.template +177 -0
  60. package/dist/templates/PROJECT.md.template +156 -0
  61. package/dist/templates/REQUIREMENTS.md.template +221 -0
  62. package/dist/templates/ROADMAP.md.template +130 -0
  63. package/dist/types/index.d.ts +2 -2
  64. package/dist/types/index.d.ts.map +1 -1
  65. package/dist/types/index.js +2 -2
  66. package/dist/types/index.js.map +1 -1
  67. package/dist/utils/index.d.ts +5 -5
  68. package/dist/utils/index.d.ts.map +1 -1
  69. package/dist/utils/index.js +5 -5
  70. package/dist/utils/index.js.map +1 -1
  71. package/dist/utils/template-client.d.ts.map +1 -1
  72. package/dist/utils/template-client.js +3 -2
  73. package/dist/utils/template-client.js.map +1 -1
  74. package/package.json +6 -4
  75. package/.claude/commands/forge/resume-work.md +0 -122
  76. package/dist/git/__tests__/worktree.test.d.ts +0 -5
  77. package/dist/git/__tests__/worktree.test.d.ts.map +0 -1
  78. package/dist/git/__tests__/worktree.test.js +0 -121
  79. package/dist/git/__tests__/worktree.test.js.map +0 -1
  80. package/dist/git/codeowners.d.ts +0 -101
  81. package/dist/git/codeowners.d.ts.map +0 -1
  82. package/dist/git/codeowners.js +0 -216
  83. package/dist/git/codeowners.js.map +0 -1
  84. package/dist/git/commit.d.ts +0 -135
  85. package/dist/git/commit.d.ts.map +0 -1
  86. package/dist/git/commit.js +0 -223
  87. package/dist/git/commit.js.map +0 -1
  88. package/dist/git/hooks/commit-msg.d.ts +0 -8
  89. package/dist/git/hooks/commit-msg.d.ts.map +0 -1
  90. package/dist/git/hooks/commit-msg.js +0 -34
  91. package/dist/git/hooks/commit-msg.js.map +0 -1
  92. package/dist/git/hooks/pre-commit.d.ts +0 -8
  93. package/dist/git/hooks/pre-commit.d.ts.map +0 -1
  94. package/dist/git/hooks/pre-commit.js +0 -34
  95. package/dist/git/hooks/pre-commit.js.map +0 -1
  96. package/dist/git/pre-commit-hooks.d.ts +0 -117
  97. package/dist/git/pre-commit-hooks.d.ts.map +0 -1
  98. package/dist/git/pre-commit-hooks.js +0 -270
  99. package/dist/git/pre-commit-hooks.js.map +0 -1
  100. package/dist/git/wipe-protocol.d.ts +0 -281
  101. package/dist/git/wipe-protocol.d.ts.map +0 -1
  102. package/dist/git/wipe-protocol.js +0 -237
  103. package/dist/git/wipe-protocol.js.map +0 -1
  104. package/dist/git/worktree.d.ts +0 -69
  105. package/dist/git/worktree.d.ts.map +0 -1
  106. package/dist/git/worktree.js +0 -202
  107. package/dist/git/worktree.js.map +0 -1
@@ -0,0 +1,280 @@
1
+ # Testing Standards — {{projectName}}
2
+
3
+ > **Scope:** All testing activities | **Loaded On-Demand**
4
+
5
+ ---
6
+
7
+ ## Testing Philosophy
8
+
9
+ {{#if testingPhilosophy}}
10
+ {{testingPhilosophy}}
11
+ {{else}}
12
+ - **Tests are documentation** — Readability matters
13
+ - **Fast feedback** — Unit tests should run in < 1 second
14
+ - **Test behavior, not implementation** — Black-box over white-box
15
+ - **Arrange-Act-Assert** — Clear test structure
16
+ - **One assertion per test** — When possible
17
+ {{/if}}
18
+
19
+ ---
20
+
21
+ ## Test Structure
22
+
23
+ ### File Organization
24
+ {{#if testStructure}}
25
+ {{testStructure}}
26
+ {{else}}
27
+ ```
28
+ src/
29
+ ├── features/auth/
30
+ │ ├── auth.service.ts
31
+ │ ├── auth.service.test.ts # Unit tests
32
+ │ ├── auth.controller.ts
33
+ │ └── auth.controller.test.ts # Integration tests
34
+ ├── __tests__/
35
+ │ ├── e2e/ # End-to-end tests
36
+ │ └── fixtures/ # Test data, factories
37
+ └── test/
38
+ ├── setup.ts # Global test setup
39
+ └── teardown.ts # Global test teardown
40
+ ```
41
+ {{/if}}
42
+
43
+ ### Test File Naming
44
+ {{#if testNaming}}
45
+ {{testNaming}}
46
+ {{else}}
47
+ - Unit tests: `*.test.ts` or `*.spec.ts`
48
+ - E2E tests: `*.e2e.test.ts`
49
+ - Co-locate tests with source code
50
+ {{/if}}
51
+
52
+ ---
53
+
54
+ ## Unit Tests
55
+
56
+ ### What to Test
57
+ {{#if unitTestScope}}
58
+ {{unitTestScope}}
59
+ {{else}}
60
+ - **Business logic** — Pure functions, services
61
+ - **Utilities** — Helpers, formatters
62
+ - **Components** — React/Vue/Svelte components
63
+ - **Hooks** — Custom React hooks
64
+
65
+ ### What NOT to Test
66
+ - Third-party libraries (trust them)
67
+ - Implementation details (private methods)
68
+ - Trivial getters/setters
69
+ {{/if}}
70
+
71
+ ### Test Template
72
+ ```typescript
73
+ describe('{{feature}}', () => {
74
+ describe('{{scenario}}', () => {
75
+ it('{{expected outcome}}', () => {
76
+ // Arrange
77
+ const input = {
78
+ // setup
79
+ };
80
+
81
+ // Act
82
+ const result = doSomething(input);
83
+
84
+ // Assert
85
+ expect(result).toBe(expected);
86
+ });
87
+ });
88
+ });
89
+ ```
90
+
91
+ ### Coverage Requirements
92
+ {{#if coverage}}
93
+ {{coverage}}
94
+ {{else}}
95
+ - Minimum: {{coverage.min}}% overall
96
+ - Critical paths: 100%
97
+ - New code: 100% before merge
98
+ {{/if}}
99
+
100
+ ---
101
+
102
+ ## Integration Tests
103
+
104
+ ### Scope
105
+ {{#if integrationScope}}
106
+ {{integrationScope}}
107
+ {{else}}
108
+ - API endpoints with real database (in-memory)
109
+ - Database interactions and migrations
110
+ - Authentication/authorization flows
111
+ - External service integrations (mocked)
112
+ {{/if}}
113
+
114
+ ### Database Testing
115
+ {{#if dbTesting}}
116
+ {{dbTesting}}
117
+ {{else}}
118
+ - Use in-memory database for tests
119
+ - Migrate up/down in `beforeAll`/`afterAll`
120
+ - Seed test data in `beforeEach`
121
+ - Clean tables in `afterEach`
122
+ {{/if}}
123
+
124
+ ---
125
+
126
+ ## End-to-End Tests
127
+
128
+ ### Framework
129
+ {{#if e2eFramework}}
130
+ {{e2eFramework}}
131
+ {{else}}
132
+ - Use {{e2eTool}} (Playwright/Cypress)
133
+ - Test critical user journeys
134
+ - Run in CI before deployment
135
+ {{/if}}
136
+
137
+ ### E2E Test Checklist
138
+ {{#if e2eChecklist}}
139
+ {{e2eChecklist}}
140
+ {{else}}
141
+ {{#each e2eScenarios}}
142
+ - {{this}}
143
+ {{/each}}
144
+ {{/if}}
145
+
146
+ ---
147
+
148
+ ## Test Data Management
149
+
150
+ ### Factories & Fixtures
151
+ {{#if testFactories}}
152
+ {{testFactories}}
153
+ {{else}}
154
+ Use factories for test data:
155
+
156
+ ```typescript
157
+ // test/factories/user.factory.ts
158
+ export const userFactory = (overrides = {}) => ({
159
+ id: 'user-1',
160
+ email: 'test@example.com',
161
+ name: 'Test User',
162
+ role: 'user',
163
+ ...overrides,
164
+ });
165
+ ```
166
+ {{/if}}
167
+
168
+ ### Seeding Strategy
169
+ {{#if seedingStrategy}}
170
+ {{seedingStrategy}}
171
+ {{else}}
172
+ - Use deterministic IDs
173
+ - Clean database between tests
174
+ - Use transactions when possible
175
+ {{/if}}
176
+
177
+ ---
178
+
179
+ ## Mocking & Stubbing
180
+
181
+ ### Mocking Guidelines
182
+ {{#if mockingGuidelines}}
183
+ {{mockingGuidelines}}
184
+ {{else}}
185
+ - Mock external services only
186
+ - Prefer real implementations over mocks
187
+ - Clear mocks in `afterEach`
188
+ - Verify mock calls when relevant
189
+ {{/if}}
190
+
191
+ ### Example
192
+ ```typescript
193
+ jest.mock('./external-api', () => ({
194
+ getData: jest.fn().mockResolvedValue({ data: 'mock' }),
195
+ }));
196
+
197
+ // In test
198
+ await expect(action()).resolves.toEqual(expected);
199
+ expect(externalApi.getData).toHaveBeenCalledWith(expectedArgs);
200
+ ```
201
+
202
+ ---
203
+
204
+ ## Performance Tests
205
+
206
+ {{#if performanceTests}}
207
+ {{performanceTests}}
208
+ {{else}}
209
+ - Load test API endpoints (k6, artillery)
210
+ - Benchmark critical functions
211
+ - Test database query performance
212
+ - Set performance budgets in CI
213
+ {{/if}}
214
+
215
+ ---
216
+
217
+ ## Security Tests
218
+
219
+ {{#if securityTests}}
220
+ {{securityTests}}
221
+ {{else}}
222
+ - Test authentication bypass attempts
223
+ - Test authorization checks
224
+ - Test input validation (SQL injection, XSS)
225
+ - Test rate limiting
226
+ - Run SAST/DAST scans in CI
227
+ {{/if}}
228
+
229
+ ---
230
+
231
+ ## Test Commands
232
+
233
+ {{#if testCommands}}
234
+ {{testCommands}}
235
+ {{else}}
236
+ ```bash
237
+ # Run all tests
238
+ npm test
239
+
240
+ # Run with coverage
241
+ npm test -- --coverage
242
+
243
+ # Run watch mode
244
+ npm test -- --watch
245
+
246
+ # Run specific test file
247
+ npm test -- auth.service.test
248
+
249
+ # Run E2E tests
250
+ npm run test:e2e
251
+
252
+ # Run performance tests
253
+ npm run test:performance
254
+ ```
255
+ {{/if}}
256
+
257
+ ---
258
+
259
+ ## CI/CD Integration
260
+
261
+ {{#if ciTesting}}
262
+ {{ciTesting}}
263
+ {{else}}
264
+ ### Required Checks
265
+ - Unit tests pass
266
+ - Coverage threshold met
267
+ - E2E tests pass (on main branch)
268
+ - Security scan passes
269
+ - Linting passes
270
+
271
+ ### Test Results
272
+ - Upload coverage reports
273
+ - Visualize test trends
274
+ - Report flaky tests
275
+ {{/if}}
276
+
277
+ ---
278
+
279
+ > **Token Budget:** ~1000 tokens max
280
+ > **Loaded On-Demand** — Only when working on tests
@@ -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
+ }