forge-orkes 0.3.8 → 0.3.10
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/package.json +1 -1
- package/template/.claude/agents/executor.md +37 -50
- package/template/.claude/agents/planner.md +33 -41
- package/template/.claude/agents/researcher.md +24 -26
- package/template/.claude/agents/reviewer.md +45 -53
- package/template/.claude/agents/verifier.md +30 -50
- package/template/.claude/skills/architecting/SKILL.md +32 -46
- package/template/.claude/skills/beads-integration/SKILL.md +27 -43
- package/template/.claude/skills/debugging/SKILL.md +34 -35
- package/template/.claude/skills/designing/SKILL.md +33 -52
- package/template/.claude/skills/discussing/SKILL.md +139 -180
- package/template/.claude/skills/executing/SKILL.md +85 -157
- package/template/.claude/skills/forge/SKILL.md +101 -148
- package/template/.claude/skills/initializing/SKILL.md +104 -144
- package/template/.claude/skills/planning/SKILL.md +65 -67
- package/template/.claude/skills/quick-tasking/SKILL.md +25 -31
- package/template/.claude/skills/researching/SKILL.md +22 -32
- package/template/.claude/skills/reviewing/SKILL.md +406 -0
- package/template/.claude/skills/securing/SKILL.md +19 -19
- package/template/.claude/skills/upgrading/SKILL.md +19 -27
- package/template/.claude/skills/verifying/SKILL.md +53 -81
- package/template/CLAUDE.md +7 -10
- package/template/.claude/skills/auditing/SKILL.md +0 -314
- package/template/.claude/skills/refactoring/SKILL.md +0 -168
|
@@ -5,11 +5,11 @@ description: "Run once per project to detect brownfield/greenfield, scan tech st
|
|
|
5
5
|
|
|
6
6
|
# Initializing: Project Setup
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Runs once when no `.forge/project.yml` exists. Detect **brownfield** vs **greenfield**, then run the matching init path.
|
|
9
9
|
|
|
10
10
|
## Detect Project Type
|
|
11
11
|
|
|
12
|
-
Check for
|
|
12
|
+
Check for existing codebase signals:
|
|
13
13
|
|
|
14
14
|
```
|
|
15
15
|
Check: package.json OR requirements.txt OR go.mod OR Cargo.toml (dependency manifest)
|
|
@@ -18,22 +18,22 @@ Check: src/ OR app/ OR lib/ (source directories)
|
|
|
18
18
|
Check: existing config files (tsconfig.json, .eslintrc, vite.config, etc.)
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
- **2+ signals
|
|
22
|
-
- **0-1 signals** → **Greenfield path**
|
|
21
|
+
- **2+ signals** → **Brownfield path**
|
|
22
|
+
- **0-1 signals** → **Greenfield path**
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
Confirm with user: *"This looks like an [existing project / new project]. Is that right?"*
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
28
28
|
## Brownfield Path: Discover Existing Project
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
Scan first, confirm with user second. Don't ask what you can discover.
|
|
31
31
|
|
|
32
32
|
### Discovery Step 0: Framework Detection
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
Check for: (1) meta-prompting frameworks with project knowledge to absorb, (2) companion tools to preserve.
|
|
35
35
|
|
|
36
|
-
**Meta-Framework Signatures
|
|
36
|
+
**Meta-Framework Signatures:**
|
|
37
37
|
|
|
38
38
|
```
|
|
39
39
|
# GSD (Get Shit Done)
|
|
@@ -59,7 +59,7 @@ Check: CLAUDE.md with framework-like routing tables
|
|
|
59
59
|
Check: Any structured agent/workflow system
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
**Companion Tool Signatures
|
|
62
|
+
**Companion Tool Signatures:**
|
|
63
63
|
|
|
64
64
|
```
|
|
65
65
|
# Beads (persistent cross-session memory)
|
|
@@ -70,57 +70,58 @@ Check: bd CLI available (Bash: which bd)
|
|
|
70
70
|
→ Beads is independent — it runs alongside Forge, not inside it.
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
-
**If a meta-framework is detected**,
|
|
73
|
+
**If a meta-framework is detected**, offer three options:
|
|
74
74
|
|
|
75
|
-
*"I found
|
|
75
|
+
*"I found [{framework name}] in this project with valuable project documentation. How would you like to handle it?"*
|
|
76
76
|
|
|
77
77
|
**Option A: Absorb & Convert** (recommended)
|
|
78
|
-
Read
|
|
79
|
-
- Project descriptions → `.forge/project.yml`
|
|
80
|
-
- Requirements → `.forge/requirements.yml`
|
|
81
|
-
- Roadmaps/plans → `.forge/roadmap.yml`
|
|
82
|
-
- Context/decisions → `.forge/context.md`
|
|
83
|
-
- Current state/progress → `.forge/state/index.yml` + `.forge/state/milestone-{id}.yml`
|
|
84
|
-
- Constitutional rules (if any) → `.forge/constitution.md`
|
|
85
|
-
- Design system rules (if any) → `.forge/design-system.md`
|
|
78
|
+
Read existing framework docs, extract project knowledge, convert to Forge format:
|
|
86
79
|
|
|
87
|
-
|
|
80
|
+
| Source | Target |
|
|
81
|
+
|--------|--------|
|
|
82
|
+
| Project descriptions | `.forge/project.yml` |
|
|
83
|
+
| Requirements | `.forge/requirements.yml` |
|
|
84
|
+
| Roadmaps/plans | `.forge/roadmap.yml` |
|
|
85
|
+
| Context/decisions | `.forge/context.md` |
|
|
86
|
+
| State/progress | `.forge/state/index.yml` + `.forge/state/milestone-{id}.yml` |
|
|
87
|
+
| Constitutional rules | `.forge/constitution.md` |
|
|
88
|
+
| Design system rules | `.forge/design-system.md` |
|
|
89
|
+
|
|
90
|
+
Go to **Framework Absorption** below.
|
|
88
91
|
|
|
89
92
|
**Option B: Archive & Start Fresh**
|
|
90
|
-
Move
|
|
93
|
+
Move framework files to `.forge/archive/{framework-name}/` for reference, then run standard brownfield discovery.
|
|
91
94
|
|
|
92
95
|
**Option C: Keep Both (Transition Period)**
|
|
93
|
-
Initialize Forge alongside the existing framework.
|
|
96
|
+
Initialize Forge alongside the existing framework. Remove the old framework later when confident.
|
|
94
97
|
|
|
95
98
|
---
|
|
96
99
|
|
|
97
100
|
### Framework Absorption (Option A)
|
|
98
101
|
|
|
99
|
-
When absorbing an existing framework, read its documentation and convert systematically.
|
|
100
|
-
|
|
101
102
|
**GSD Absorption Map:**
|
|
102
103
|
|
|
103
|
-
| GSD Source |
|
|
104
|
-
|
|
105
|
-
| `PROJECT.md` | Project name, description, tech stack, goals |
|
|
106
|
-
| `REQUIREMENTS.md` | Feature requirements, acceptance criteria
|
|
107
|
-
| `ROADMAP.md` | Phases, milestones, dependencies
|
|
108
|
-
| `STATE.md` | Current phase, progress, blockers |
|
|
109
|
-
| `CONTEXT.md` | NON-NEGOTIABLE decisions, DEFERRED ideas |
|
|
110
|
-
| `references/ui-brand.md` | Design system rules, brand guidelines |
|
|
111
|
-
| `references/verification-patterns.md` | Verification approach |
|
|
112
|
-
| `references/tdd.md` | Testing approach |
|
|
113
|
-
| Agent customizations | Custom
|
|
104
|
+
| GSD Source | Extract | Write to Forge |
|
|
105
|
+
|-----------|---------|---------------|
|
|
106
|
+
| `PROJECT.md` | Project name, description, tech stack, goals | `.forge/project.yml` |
|
|
107
|
+
| `REQUIREMENTS.md` | Feature requirements, acceptance criteria → YAML with IDs | `.forge/requirements.yml` |
|
|
108
|
+
| `ROADMAP.md` | Phases, milestones, dependencies → YAML with refs | `.forge/roadmap.yml` |
|
|
109
|
+
| `STATE.md` | Current phase, progress, blockers | `.forge/state/index.yml` + `.forge/state/milestone-{id}.yml` |
|
|
110
|
+
| `CONTEXT.md` | NON-NEGOTIABLE decisions, DEFERRED ideas | `.forge/context.md` |
|
|
111
|
+
| `references/ui-brand.md` | Design system rules, brand guidelines | `.forge/design-system.md` |
|
|
112
|
+
| `references/verification-patterns.md` | Verification approach | Constitution articles |
|
|
113
|
+
| `references/tdd.md` | Testing approach | Constitution articles |
|
|
114
|
+
| Agent customizations | Custom behaviors, tool restrictions | `.claude/agents/*.md` (if custom) |
|
|
114
115
|
|
|
115
116
|
**Spec-Kit Absorption Map:**
|
|
116
117
|
|
|
117
|
-
| Spec-Kit Source |
|
|
118
|
-
|
|
119
|
-
| `spec-driven.md` |
|
|
120
|
-
| `templates/spec-template.md` |
|
|
121
|
-
| `templates/constitution-template.md` |
|
|
122
|
-
| `extensions/` |
|
|
123
|
-
| Project specs (if filled in) |
|
|
118
|
+
| Spec-Kit Source | Extract | Write to Forge |
|
|
119
|
+
|----------------|---------|---------------|
|
|
120
|
+
| `spec-driven.md` | Governance patterns | `.forge/constitution.md` |
|
|
121
|
+
| `templates/spec-template.md` | Requirements format | `.forge/requirements.yml` |
|
|
122
|
+
| `templates/constitution-template.md` | Immutable gates | `.forge/constitution.md` |
|
|
123
|
+
| `extensions/` | Specialized skills | `.claude/skills/` (if relevant) |
|
|
124
|
+
| Project specs (if filled in) | Locked decisions | `.forge/context.md` |
|
|
124
125
|
|
|
125
126
|
**Generic Framework Absorption:**
|
|
126
127
|
|
|
@@ -136,17 +137,17 @@ For unknown frameworks, use the `researching` skill to:
|
|
|
136
137
|
2. For each Forge target file, synthesize content from the relevant sources
|
|
137
138
|
3. Convert prose to YAML where Forge expects YAML (project, requirements, roadmap, state)
|
|
138
139
|
4. Preserve markdown where Forge expects markdown (constitution, context, design-system)
|
|
139
|
-
5.
|
|
140
|
-
6. Move
|
|
141
|
-
7. Present a diff-style summary: *"Here's what I converted: [list].
|
|
140
|
+
5. If something doesn't map to a Forge file, note it in `.forge/context.md` under "Carried Forward"
|
|
141
|
+
6. Move originals to `.forge/archive/{framework-name}/`
|
|
142
|
+
7. Present a diff-style summary: *"Here's what I converted: [list]. Archived for reference: [list]. Anything to handle differently?"*
|
|
142
143
|
|
|
143
|
-
After absorption, **always** continue with the standard brownfield steps below
|
|
144
|
+
After absorption, **always** continue with the standard brownfield steps below — see the verification step next.
|
|
144
145
|
|
|
145
146
|
### Documentation vs. Codebase Verification
|
|
146
147
|
|
|
147
|
-
**Never trust framework documentation at face value.**
|
|
148
|
+
**Never trust framework documentation at face value.** The codebase is the source of truth.
|
|
148
149
|
|
|
149
|
-
After reading
|
|
150
|
+
After reading framework docs, cross-reference every claim against actual code:
|
|
150
151
|
|
|
151
152
|
```
|
|
152
153
|
For each claim in the documentation:
|
|
@@ -155,38 +156,24 @@ For each claim in the documentation:
|
|
|
155
156
|
3. Flag any discrepancies
|
|
156
157
|
```
|
|
157
158
|
|
|
158
|
-
**Common drift patterns
|
|
159
|
+
**Common drift patterns:**
|
|
159
160
|
|
|
160
161
|
| Documentation Says | Verify Against |
|
|
161
162
|
|-------------------|----------------|
|
|
162
|
-
| "Tech stack: React + PostgreSQL" | `package.json`
|
|
163
|
-
| "Uses PrimeReact for all UI" | `Grep: src/ for "from 'primereact"` —
|
|
164
|
-
| "Tests written for all features" | `Glob: src/**/*.test.*` — actual
|
|
165
|
-
| "Auth uses Clerk/Auth0/etc." | `Grep: src/ for auth imports` —
|
|
166
|
-
| "State management via Redux" | `package.json` +
|
|
163
|
+
| "Tech stack: React + PostgreSQL" | `package.json` deps, actual imports in `src/` |
|
|
164
|
+
| "Uses PrimeReact for all UI" | `Grep: src/ for "from 'primereact"` — any raw HTML tables, custom modals? |
|
|
165
|
+
| "Tests written for all features" | `Glob: src/**/*.test.*` — actual vs. claimed coverage |
|
|
166
|
+
| "Auth uses Clerk/Auth0/etc." | `Grep: src/ for auth imports` — custom auth code too? |
|
|
167
|
+
| "State management via Redux" | `package.json` + imports — switched to Zustand mid-project? |
|
|
167
168
|
| "API uses REST" | `Grep: src/ for GraphQL, tRPC, WebSocket` — mixed protocols? |
|
|
168
|
-
| Requirements list features A, B, C | Do routes/components for A, B, C
|
|
169
|
-
| Roadmap says "Phase 2 complete" | Are Phase 2 features
|
|
170
|
-
|
|
171
|
-
**When discrepancies are found:**
|
|
172
|
-
|
|
173
|
-
Present them to the user clearly:
|
|
169
|
+
| Requirements list features A, B, C | Do routes/components for A, B, C exist? Partially implemented? |
|
|
170
|
+
| Roadmap says "Phase 2 complete" | Are Phase 2 features wired and working, or stubs? |
|
|
174
171
|
|
|
175
|
-
|
|
172
|
+
**When discrepancies are found**, present them clearly and ask whether Forge config should match the code or whether features were removed/deferred.
|
|
176
173
|
|
|
177
|
-
|
|
178
|
-
- *REQUIREMENTS.md lists a 'notifications' feature but I can't find any notification code*
|
|
179
|
-
- *STATE.md says Phase 2 is complete, but the dashboard component looks like a stub (returns placeholder text)*
|
|
180
|
-
- *The docs mention PrimeReact exclusively, but I found 3 files using raw HTML tables instead of DataTable*
|
|
174
|
+
**Truth priority:** (1) What the code does, (2) What the user confirms, (3) What the docs say.
|
|
181
175
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
**Priority order for truth:**
|
|
185
|
-
1. **What the code actually does** — highest authority
|
|
186
|
-
2. **What the user confirms** — resolves ambiguity
|
|
187
|
-
3. **What the documentation says** — useful context, but may be stale
|
|
188
|
-
|
|
189
|
-
Write the verified state to Forge files. For any unresolved discrepancies, add them to `.forge/context.md` under a "Needs Resolution" section so they get addressed during planning.
|
|
176
|
+
Write verified state to Forge files. Unresolved discrepancies go in `.forge/context.md` under "Needs Resolution".
|
|
190
177
|
|
|
191
178
|
---
|
|
192
179
|
|
|
@@ -206,11 +193,7 @@ Bash: find src/ -type f | head -50 # understand file organization
|
|
|
206
193
|
Bash: wc -l src/**/*.{ts,tsx,js,jsx} 2>/dev/null | tail -1 # codebase size
|
|
207
194
|
```
|
|
208
195
|
|
|
209
|
-
|
|
210
|
-
- Language and framework
|
|
211
|
-
- Build tools and test framework
|
|
212
|
-
- Database (from dependencies or config)
|
|
213
|
-
- Project name and description (from package.json or README)
|
|
196
|
+
Auto-detect: language, framework, build tools, test framework, database, project name/description.
|
|
214
197
|
|
|
215
198
|
### Discovery Step 1.5: Verification Command Detection
|
|
216
199
|
|
|
@@ -220,35 +203,28 @@ Auto-detect verification commands from the project's package manifest and config
|
|
|
220
203
|
# Node.js projects — scan package.json scripts
|
|
221
204
|
Read: package.json → scripts
|
|
222
205
|
|
|
223
|
-
# Look for
|
|
224
|
-
#
|
|
225
|
-
#
|
|
226
|
-
# typecheck, type-check, tsc, check-types
|
|
227
|
-
# check (often runs multiple checks)
|
|
228
|
-
# build (catches type errors in compiled languages)
|
|
206
|
+
# Look for: test, test:unit, test:integration, test:e2e,
|
|
207
|
+
# lint, lint:fix, eslint, typecheck, type-check, tsc,
|
|
208
|
+
# check-types, check, build
|
|
229
209
|
|
|
230
210
|
# Python projects
|
|
231
211
|
Check: Makefile, tox.ini, pyproject.toml for test/lint commands
|
|
232
|
-
# e.g., pytest, ruff check, mypy
|
|
233
|
-
|
|
234
|
-
# Go projects
|
|
235
|
-
# Standard: go test ./..., go vet ./...
|
|
236
212
|
|
|
237
|
-
#
|
|
238
|
-
#
|
|
213
|
+
# Go projects — go test ./..., go vet ./...
|
|
214
|
+
# Rust projects — cargo test, cargo clippy
|
|
239
215
|
```
|
|
240
216
|
|
|
241
|
-
**
|
|
217
|
+
**Node.js auto-detection rules:**
|
|
242
218
|
|
|
243
|
-
| `package.json` script |
|
|
244
|
-
|
|
219
|
+
| `package.json` script | Verification command |
|
|
220
|
+
|----------------------|---------------------|
|
|
245
221
|
| `test` or `test:unit` | `npm test` or `npm run test:unit` |
|
|
246
222
|
| `lint` | `npm run lint` |
|
|
247
|
-
| `typecheck`
|
|
223
|
+
| `typecheck` / `type-check` / `check-types` | `npm run typecheck` (etc.) |
|
|
248
224
|
| `tsc` in scripts or `typescript` in devDeps | `npx tsc --noEmit` |
|
|
249
225
|
| `eslint` in devDeps but no `lint` script | `npx eslint .` |
|
|
250
226
|
|
|
251
|
-
**Advisory mode detection:**
|
|
227
|
+
**Advisory mode detection:** Run each command once to check baseline health. Commands that fail on the current codebase (before Forge changes anything) get `advisory: true` — they run but don't block. This prevents pre-existing tech debt from blocking execution.
|
|
252
228
|
|
|
253
229
|
```yaml
|
|
254
230
|
# Example auto-detected config:
|
|
@@ -264,14 +240,7 @@ verification:
|
|
|
264
240
|
max_retries: 2
|
|
265
241
|
```
|
|
266
242
|
|
|
267
|
-
Present findings to user
|
|
268
|
-
|
|
269
|
-
*"I detected these verification commands from your project:*
|
|
270
|
-
- *`npm run lint` — passes currently*
|
|
271
|
-
- *`npm test` — passes currently*
|
|
272
|
-
- *`npx tsc --noEmit` — currently failing (pre-existing type errors, will run in advisory mode)*
|
|
273
|
-
|
|
274
|
-
*These will run automatically after each task to catch regressions. Want to add, remove, or adjust any?"*
|
|
243
|
+
Present findings to user with pass/fail status and advisory flags. Ask if they want to add, remove, or adjust commands.
|
|
275
244
|
|
|
276
245
|
### Discovery Step 2: Design System Detection
|
|
277
246
|
|
|
@@ -288,11 +257,7 @@ Grep: src/ for icon usage: "pi pi-", "Material", "lucide-react"
|
|
|
288
257
|
Glob: **/*theme*, **/*variables.scss, **/tailwind.config*, **/globals.css
|
|
289
258
|
```
|
|
290
259
|
|
|
291
|
-
|
|
292
|
-
- Component library (and version from package.json)
|
|
293
|
-
- Icon set in use
|
|
294
|
-
- Layout system (PrimeFlex, Tailwind, MUI Grid, etc.)
|
|
295
|
-
- Theme approach (SCSS variables, CSS-in-JS, Tailwind config, design tokens)
|
|
260
|
+
Auto-detect: component library (+ version), icon set, layout system, theme approach.
|
|
296
261
|
|
|
297
262
|
### Discovery Step 3: Pattern Analysis
|
|
298
263
|
|
|
@@ -304,59 +269,54 @@ Grep: src/ for auth/session patterns
|
|
|
304
269
|
Bash: git log --oneline -20 # commit style
|
|
305
270
|
|
|
306
271
|
# Architecture patterns
|
|
307
|
-
Bash: ls -la src/ # top-level structure
|
|
272
|
+
Bash: ls -la src/ # top-level structure
|
|
308
273
|
Glob: src/**/index.{ts,tsx,js} # barrel exports
|
|
309
274
|
Grep: src/ for "import.*from.*@/" # path aliases
|
|
310
275
|
```
|
|
311
276
|
|
|
312
277
|
### Discovery Step 4: Present Findings
|
|
313
278
|
|
|
314
|
-
Present a structured summary
|
|
315
|
-
|
|
316
|
-
*"I've scanned your codebase. Here's what I found:*
|
|
279
|
+
Present a structured summary:
|
|
317
280
|
|
|
318
|
-
*Project: {name} — {description
|
|
281
|
+
*"Project: {name} — {description}*
|
|
319
282
|
*Stack: {language} + {framework} + {database}*
|
|
320
283
|
*UI: {component library} with {icon set}, layout via {layout system}*
|
|
321
|
-
*Testing: {test framework}, {X}
|
|
284
|
+
*Testing: {test framework}, {X} test files*
|
|
322
285
|
*Size: ~{N} source files, ~{N}K lines*
|
|
323
|
-
*Patterns: {commit style}, {folder structure
|
|
286
|
+
*Patterns: {commit style}, {folder structure}, {key conventions}*
|
|
324
287
|
|
|
325
288
|
*Does this look right? Anything I missed or got wrong?"*
|
|
326
289
|
|
|
327
290
|
### Discovery Step 5: Design System Mapping
|
|
328
291
|
|
|
329
292
|
If a component library was detected:
|
|
330
|
-
1. Check `.forge/templates/design-systems/` for
|
|
331
|
-
2. If found
|
|
332
|
-
3. If not
|
|
333
|
-
4.
|
|
293
|
+
1. Check `.forge/templates/design-systems/` for a starter config
|
|
294
|
+
2. If found → copy as starting point for `.forge/design-system.md`
|
|
295
|
+
3. If not → use `researching` skill to build a component mapping from docs
|
|
296
|
+
4. Cross-reference with actual usage: scan for which components are already used
|
|
334
297
|
5. Present mapping to user for validation
|
|
335
298
|
|
|
336
|
-
If no
|
|
337
|
-
- Ask: *"I see UI code but no component library. Are you using a design system, or is this custom HTML/CSS?"*
|
|
299
|
+
If no library detected but UI files exist, ask: *"I see UI code but no component library. Are you using a design system, or custom HTML/CSS?"*
|
|
338
300
|
|
|
339
301
|
### Discovery Step 6: Constitutional Inference
|
|
340
302
|
|
|
341
|
-
|
|
303
|
+
Suggest articles based on discovered patterns:
|
|
342
304
|
|
|
343
305
|
| Discovery | Suggested Articles |
|
|
344
306
|
|-----------|-------------------|
|
|
345
|
-
| Test files found | Article II: Test-First
|
|
307
|
+
| Test files found | Article II: Test-First |
|
|
346
308
|
| Component library detected | Article V: Design System Fidelity |
|
|
347
309
|
| Auth/session patterns found | Article VI: Security by Default |
|
|
348
|
-
| Established conventions detected | Article IV: Consistency
|
|
349
|
-
| package-lock.json or yarn.lock | Article I: Library-First
|
|
310
|
+
| Established conventions detected | Article IV: Consistency |
|
|
311
|
+
| package-lock.json or yarn.lock | Article I: Library-First |
|
|
350
312
|
| Logging/monitoring deps | Article IX: Observability |
|
|
351
313
|
|
|
352
|
-
Present grouped recommendations
|
|
314
|
+
Present grouped recommendations. User confirms, adds, or removes.
|
|
353
315
|
|
|
354
316
|
---
|
|
355
317
|
|
|
356
318
|
## Greenfield Path: Build from Description
|
|
357
319
|
|
|
358
|
-
For new projects, ask the user to describe what they're building.
|
|
359
|
-
|
|
360
320
|
### Greenfield Step 1: Project Basics
|
|
361
321
|
|
|
362
322
|
Ask the user to describe the project. From their description, fill in `.forge/project.yml`:
|
|
@@ -368,7 +328,7 @@ Ask the user to describe the project. From their description, fill in `.forge/pr
|
|
|
368
328
|
- Success criteria
|
|
369
329
|
- Known risks
|
|
370
330
|
|
|
371
|
-
|
|
331
|
+
Confirm: *"Does this capture your project correctly? Anything to add or change?"*
|
|
372
332
|
|
|
373
333
|
### Greenfield Step 2: Design System Setup
|
|
374
334
|
|
|
@@ -388,9 +348,9 @@ design_system:
|
|
|
388
348
|
|
|
389
349
|
Then:
|
|
390
350
|
1. Check `.forge/templates/design-systems/` for a starter config
|
|
391
|
-
2. If found → copy and customize
|
|
351
|
+
2. If found → copy and customize
|
|
392
352
|
3. If not → use `researching` skill to build a component mapping from docs
|
|
393
|
-
4. Write
|
|
353
|
+
4. Write mapping to `.forge/design-system.md`
|
|
394
354
|
|
|
395
355
|
**If no** (plain HTML/CSS, utility-only, or non-UI project):
|
|
396
356
|
- Set `design_system.library: none` in project.yml
|
|
@@ -399,10 +359,10 @@ Then:
|
|
|
399
359
|
|
|
400
360
|
### Greenfield Step 2.5: Verification Commands
|
|
401
361
|
|
|
402
|
-
Ask: *"What verification commands should run after each task?
|
|
362
|
+
Ask: *"What verification commands should run after each task?"*
|
|
403
363
|
|
|
404
|
-
|
|
|
405
|
-
|
|
364
|
+
| Stack | Suggested commands |
|
|
365
|
+
|-------|-------------------|
|
|
406
366
|
| TypeScript | `npx tsc --noEmit` |
|
|
407
367
|
| ESLint / Biome | `npm run lint` |
|
|
408
368
|
| Jest / Vitest / Mocha | `npm test` |
|
|
@@ -411,13 +371,13 @@ Ask: *"What verification commands should run after each task? Common options:"*
|
|
|
411
371
|
| Go | `go test ./...`, `go vet ./...` |
|
|
412
372
|
| Rust | `cargo test`, `cargo clippy` |
|
|
413
373
|
|
|
414
|
-
Pre-fill based on the tech stack
|
|
374
|
+
Pre-fill based on the chosen tech stack. User confirms or adjusts. Write to the `verification` section of `project.yml`.
|
|
415
375
|
|
|
416
|
-
If the user doesn't want verification gates: set `verification.commands: []
|
|
376
|
+
If the user doesn't want verification gates: set `verification.commands: []`.
|
|
417
377
|
|
|
418
378
|
### Greenfield Step 3: Constitutional Setup
|
|
419
379
|
|
|
420
|
-
Present the 9
|
|
380
|
+
Present the 9 articles grouped by domain:
|
|
421
381
|
|
|
422
382
|
**Code quality** (recommended for most projects):
|
|
423
383
|
- Article I: Library-First — prefer proven libraries over custom code
|
|
@@ -425,24 +385,24 @@ Present the 9 constitutional articles grouped by domain:
|
|
|
425
385
|
- Article III: Simplicity — simplest solution wins
|
|
426
386
|
- Article IV: Consistency — follow existing project patterns
|
|
427
387
|
|
|
428
|
-
**Design & UI** (
|
|
388
|
+
**Design & UI** (if project has UI):
|
|
429
389
|
- Article V: Design System Fidelity — use the design system, don't fight it
|
|
430
390
|
|
|
431
|
-
**Security & data** (
|
|
391
|
+
**Security & data** (if auth, user data, or APIs involved):
|
|
432
392
|
- Article VI: Security by Default — auth, validation, secrets are requirements
|
|
433
393
|
|
|
434
|
-
**Architecture** (
|
|
394
|
+
**Architecture** (based on project complexity):
|
|
435
395
|
- Article VII: Integration-First — real dependencies before mocks
|
|
436
396
|
- Article VIII: Documentation-Driven — decisions documented where code lives
|
|
437
397
|
- Article IX: Observability — logging, error reporting, health checks
|
|
438
398
|
|
|
439
|
-
Ask: *"Which
|
|
399
|
+
Ask: *"Which articles apply? I'd recommend [suggest based on stack]. You can also add project-specific articles."*
|
|
440
400
|
|
|
441
401
|
---
|
|
442
402
|
|
|
443
403
|
## Finalize Init (Both Paths)
|
|
444
404
|
|
|
445
|
-
1. Write `.forge/project.yml` with all gathered/discovered info (including `verification` section
|
|
405
|
+
1. Write `.forge/project.yml` with all gathered/discovered info (including `verification` section)
|
|
446
406
|
2. Write `.forge/constitution.md` with selected articles
|
|
447
407
|
3. Write `.forge/design-system.md` (if design system configured)
|
|
448
408
|
4. Initialize milestone-aware state:
|
|
@@ -470,6 +430,6 @@ Ask: *"Which of these articles apply? I'd recommend [suggest based on stack and
|
|
|
470
430
|
```
|
|
471
431
|
5. Copy remaining templates as needed
|
|
472
432
|
|
|
473
|
-
Confirm: *"Project initialized
|
|
433
|
+
Confirm: *"Project initialized: [summary]. Ready to start working?"*
|
|
474
434
|
|
|
475
|
-
|
|
435
|
+
Return control to the `forge` skill for tier detection and routing.
|