forge-orkes 0.3.9 → 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 +98 -142
- 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 +133 -164
- 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 +52 -80
|
@@ -5,30 +5,26 @@ description: "Sync Forge framework files from a local dev repo or NPM. Use when
|
|
|
5
5
|
|
|
6
6
|
# Upgrading: Local Dev Sync
|
|
7
7
|
|
|
8
|
-
Sync framework files from a local Forge source repo into the current project
|
|
8
|
+
Sync framework files from a local Forge source repo into the current project for testing without publishing to NPM.
|
|
9
9
|
|
|
10
|
-
For published upgrades, use `npx forge-orkes upgrade
|
|
10
|
+
For published upgrades, use `npx forge-orkes upgrade`.
|
|
11
11
|
|
|
12
12
|
## Step 1: Resolve Source Path
|
|
13
13
|
|
|
14
14
|
Check if `.forge/dev-source` exists in the project root.
|
|
15
15
|
|
|
16
|
-
- **
|
|
17
|
-
- **
|
|
18
|
-
- Validate the path has `packages/create-forge/template/`
|
|
19
|
-
- Save the path to `.forge/dev-source` for next time
|
|
16
|
+
- **Exists:** Read the path (first line, trimmed). Confirm it contains `packages/create-forge/template/`.
|
|
17
|
+
- **Missing:** Ask the user for the local Forge repo path, validate it has `packages/create-forge/template/`, save to `.forge/dev-source`.
|
|
20
18
|
|
|
21
|
-
|
|
19
|
+
Template directory: `{source}/packages/create-forge/template/`.
|
|
22
20
|
|
|
23
21
|
## Step 2: File Classification
|
|
24
22
|
|
|
25
|
-
Files are classified into three categories:
|
|
26
|
-
|
|
27
23
|
| Category | Paths | Behavior |
|
|
28
24
|
|----------|-------|----------|
|
|
29
|
-
| **Framework-owned** | `.claude/agents/*.md`, `.claude/skills/*/SKILL.md` | Overwrite
|
|
25
|
+
| **Framework-owned** | `.claude/agents/*.md`, `.claude/skills/*/SKILL.md` | Overwrite |
|
|
30
26
|
| **Merge-owned** | `CLAUDE.md`, `.claude/settings.json` | Never auto-overwrite |
|
|
31
|
-
| **Template-only** | `.forge/templates/**` | Overwrite
|
|
27
|
+
| **Template-only** | `.forge/templates/**` | Overwrite |
|
|
32
28
|
|
|
33
29
|
**Never touch** user-generated files: `.forge/project.yml`, `.forge/state/`, `.forge/constitution.md`, `.forge/context.md`, `.forge/requirements.yml`, `.forge/roadmap.yml`, `.forge/design-system.md`, `.forge/refactor-backlog.yml`.
|
|
34
30
|
|
|
@@ -36,34 +32,30 @@ Files are classified into three categories:
|
|
|
36
32
|
|
|
37
33
|
For each framework-owned file in the source template:
|
|
38
34
|
|
|
39
|
-
1. Read
|
|
40
|
-
2.
|
|
41
|
-
3.
|
|
42
|
-
4.
|
|
43
|
-
5.
|
|
44
|
-
6. If local has a file not in source → report as **removed from template** (don't delete — let user decide)
|
|
35
|
+
1. Read source and local content
|
|
36
|
+
2. Different → overwrite local, report **updated**
|
|
37
|
+
3. Same → report **unchanged**
|
|
38
|
+
4. Source has new file → copy, report **added**
|
|
39
|
+
5. Local has file not in source → report **removed from template** (don't delete -- let user decide)
|
|
45
40
|
|
|
46
41
|
## Step 4: Sync Template-Only Files
|
|
47
42
|
|
|
48
|
-
Same process as Step 3
|
|
43
|
+
Same process as Step 3 for `.forge/templates/**`.
|
|
49
44
|
|
|
50
45
|
## Step 5: Handle Merge-Owned Files
|
|
51
46
|
|
|
52
|
-
|
|
47
|
+
**`CLAUDE.md`:**
|
|
53
48
|
1. Read source and local versions
|
|
54
|
-
2. If different →
|
|
55
|
-
3. Present the summary to the user and let them decide how to merge
|
|
49
|
+
2. If different → summarize changes (new/removed/modified sections) and let the user decide how to merge. Do not overwrite.
|
|
56
50
|
|
|
57
|
-
|
|
51
|
+
**`.claude/settings.json`:**
|
|
58
52
|
1. Read source and local versions
|
|
59
|
-
2. Compare
|
|
60
|
-
3. If
|
|
61
|
-
4.
|
|
53
|
+
2. Compare `forge.*` keys only
|
|
54
|
+
3. If different → update `forge.*` keys in local, preserve user's `hooks` and custom keys
|
|
55
|
+
4. Set `forge.version` to match the source package version
|
|
62
56
|
|
|
63
57
|
## Step 6: Report
|
|
64
58
|
|
|
65
|
-
Present a summary:
|
|
66
|
-
|
|
67
59
|
```
|
|
68
60
|
Forge Local Sync Complete
|
|
69
61
|
─────────────────────────
|
|
@@ -1,86 +1,69 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: verifying
|
|
3
|
-
description: "
|
|
3
|
+
description: "Prove completed work delivers what was promised. Goal-backward verification with 3 levels: Observable Truths, Artifacts, and Key Links. Task completion ≠ goal achievement."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Verifying
|
|
7
7
|
|
|
8
|
-
Prove completed work
|
|
8
|
+
Prove completed work delivers what was promised. Task completion ≠ goal achievement.
|
|
9
9
|
|
|
10
10
|
## Core Question
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
Ask: "Does the user get what they were promised?"
|
|
12
|
+
Not "Did we complete all tasks?" but "Does the user get what they were promised?"
|
|
14
13
|
|
|
15
14
|
## Load Context
|
|
16
15
|
|
|
17
|
-
|
|
16
|
+
After `/clear`, load with fresh eyes — don't carry the executor's assumptions:
|
|
18
17
|
|
|
19
18
|
```
|
|
20
19
|
Read: .forge/state/milestone-{id}.yml → current phase, plans completed
|
|
21
20
|
Read: .forge/project.yml → tech stack (for running tests)
|
|
22
21
|
Read: .forge/phases/m{M}-{N}-{name}/plan-{NN}.md → must_haves (truths, artifacts, key_links)
|
|
23
|
-
Read: .forge/context.md → locked decisions
|
|
22
|
+
Read: .forge/context.md → locked decisions
|
|
24
23
|
Read: .forge/requirements.yml → requirement IDs for coverage check
|
|
25
24
|
```
|
|
26
25
|
|
|
27
|
-
This is critical — the verifier should assess the code with fresh eyes, not carry the executor's assumptions. Load must_haves from the plan files and verify against the actual codebase.
|
|
28
|
-
|
|
29
26
|
## 3-Level Goal-Backward Verification
|
|
30
27
|
|
|
31
28
|
### Level 1: Observable Truths
|
|
32
29
|
|
|
33
30
|
Read the plan's `must_haves.truths`. For each truth:
|
|
34
31
|
|
|
35
|
-
1. Design a test
|
|
32
|
+
1. Design a test that proves/disproves it
|
|
36
33
|
2. Run the test
|
|
37
|
-
3. Record
|
|
34
|
+
3. Record: **VERIFIED** | **FAILED** | **UNCERTAIN**
|
|
38
35
|
|
|
39
36
|
```markdown
|
|
40
37
|
| Truth | Test | Result |
|
|
41
38
|
|-------|------|--------|
|
|
42
|
-
| User can
|
|
43
|
-
|
|
|
44
|
-
| Profile photo uploads correctly | Upload image, check display | FAILED — 413 error on large files |
|
|
39
|
+
| User can edit their bio | Click edit, type, save, check persistence | VERIFIED |
|
|
40
|
+
| Profile photo uploads correctly | Upload image, check display | FAILED — 413 on large files |
|
|
45
41
|
```
|
|
46
42
|
|
|
47
43
|
### Level 2: Artifacts (Exists → Substantive → Wired)
|
|
48
44
|
|
|
49
|
-
Read the plan's `must_haves.artifacts`. For each
|
|
45
|
+
Read the plan's `must_haves.artifacts`. For each:
|
|
50
46
|
|
|
51
47
|
| Check | Question | Pass Criteria |
|
|
52
48
|
|-------|----------|---------------|
|
|
53
|
-
| **Exists** | Does the file exist? |
|
|
54
|
-
| **Substantive** |
|
|
55
|
-
| **Wired** |
|
|
49
|
+
| **Exists** | Does the file exist? | Present at specified path |
|
|
50
|
+
| **Substantive** | Real code, not a stub? | Exceeds min_lines, no placeholders, real logic |
|
|
51
|
+
| **Wired** | Imported and used? | Has importers, called in production paths |
|
|
56
52
|
|
|
57
53
|
```markdown
|
|
58
54
|
| Artifact | Exists | Substantive | Wired | Status |
|
|
59
55
|
|----------|--------|-------------|-------|--------|
|
|
60
56
|
| src/components/Profile.tsx | ✓ | ✓ (87 lines) | ✓ (imported in routes) | VERIFIED |
|
|
61
|
-
| src/api/users/[id].ts | ✓ | ✓ (43 lines) | ✓ (called by Profile) | VERIFIED |
|
|
62
57
|
| src/hooks/useProfile.ts | ✓ | ✗ (returns {}) | - | STUB |
|
|
63
58
|
```
|
|
64
59
|
|
|
65
60
|
### Stub Detection Red Flags
|
|
66
61
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
**React components:**
|
|
70
|
-
- `<div>Component</div>` or `<div>Placeholder</div>`
|
|
71
|
-
- `onClick={() => {}}` (empty handler)
|
|
72
|
-
- `onChange={() => console.log()}` (logging-only handler)
|
|
73
|
-
- Hardcoded data instead of API calls
|
|
62
|
+
**React components:** `<div>Placeholder</div>`, `onClick={() => {}}`, `onChange={() => console.log()}`, hardcoded data instead of API calls
|
|
74
63
|
|
|
75
|
-
**API endpoints:**
|
|
76
|
-
- `return Response.json({ message: "Not implemented" })`
|
|
77
|
-
- Empty arrays without database queries
|
|
78
|
-
- TODO comments in response path
|
|
64
|
+
**API endpoints:** `return Response.json({ message: "Not implemented" })`, empty arrays without DB queries, TODO in response path
|
|
79
65
|
|
|
80
|
-
**Wiring:**
|
|
81
|
-
- `fetch()` without await/then
|
|
82
|
-
- Query without returning result
|
|
83
|
-
- Form with only `preventDefault`
|
|
66
|
+
**Wiring:** `fetch()` without await/then, query without returning result, form with only `preventDefault`
|
|
84
67
|
|
|
85
68
|
### Level 3: Key Links
|
|
86
69
|
|
|
@@ -88,8 +71,8 @@ Read the plan's `must_haves.key_links`. Verify each connection:
|
|
|
88
71
|
|
|
89
72
|
| Pattern | How to Verify |
|
|
90
73
|
|---------|---------------|
|
|
91
|
-
| Component → API | Find fetch/axios call
|
|
92
|
-
| API → Database | Find ORM/query call
|
|
74
|
+
| Component → API | Find fetch/axios call pointing to API route |
|
|
75
|
+
| API → Database | Find ORM/query call returning data |
|
|
93
76
|
| Form → Handler | Find onSubmit with API call and response handling |
|
|
94
77
|
| State → Render | Find state variable used in JSX (not just declared) |
|
|
95
78
|
|
|
@@ -97,12 +80,11 @@ Read the plan's `must_haves.key_links`. Verify each connection:
|
|
|
97
80
|
| From | To | Via | Pattern | Status |
|
|
98
81
|
|------|----|-----|---------|--------|
|
|
99
82
|
| Profile.tsx | /api/users/[id] | fetch in useEffect | fetch.*api/users | VERIFIED |
|
|
100
|
-
| ProfileForm.tsx | /api/users/[id] | PUT on submit | method.*PUT | VERIFIED |
|
|
101
83
|
```
|
|
102
84
|
|
|
103
85
|
## Anti-Pattern Scan
|
|
104
86
|
|
|
105
|
-
After 3-level verification
|
|
87
|
+
After 3-level verification:
|
|
106
88
|
|
|
107
89
|
- [ ] No `TODO` or `FIXME` in production code paths
|
|
108
90
|
- [ ] No `console.log` as error handling
|
|
@@ -112,27 +94,24 @@ After 3-level verification, scan for common issues:
|
|
|
112
94
|
|
|
113
95
|
## Requirements Coverage
|
|
114
96
|
|
|
115
|
-
Cross-reference
|
|
97
|
+
Cross-reference against `.forge/requirements.yml`:
|
|
116
98
|
|
|
117
99
|
```markdown
|
|
118
100
|
| Requirement | Status | Evidence |
|
|
119
101
|
|-------------|--------|----------|
|
|
120
102
|
| FR-001 | Verified | Profile renders, tests pass |
|
|
121
|
-
| FR-002 | Verified | Edit flow works end-to-end |
|
|
122
103
|
| FR-003 | Partial | Upload works for small files, fails > 5MB |
|
|
123
104
|
```
|
|
124
105
|
|
|
125
106
|
## Verdict
|
|
126
107
|
|
|
127
|
-
Based on all verification levels:
|
|
128
|
-
|
|
129
108
|
### PASSED
|
|
130
109
|
All truths verified, all artifacts substantive and wired, all key links connected, requirements covered.
|
|
131
|
-
→ Route to `reviewing` skill for health audit + refactoring review
|
|
110
|
+
→ Route to `reviewing` skill for health audit + refactoring review.
|
|
132
111
|
|
|
133
112
|
### GAPS FOUND
|
|
134
113
|
Some truths failed or artifacts are stubs.
|
|
135
|
-
→ Document gaps
|
|
114
|
+
→ Document gaps:
|
|
136
115
|
|
|
137
116
|
```yaml
|
|
138
117
|
gaps:
|
|
@@ -150,8 +129,8 @@ gaps:
|
|
|
150
129
|
→ Return to `planning` skill in gap-closure mode.
|
|
151
130
|
|
|
152
131
|
### HUMAN VERIFICATION NEEDED
|
|
153
|
-
|
|
154
|
-
→ List
|
|
132
|
+
Items that can't be verified automatically (visual appearance, real-time behavior, external services).
|
|
133
|
+
→ List for manual check:
|
|
155
134
|
|
|
156
135
|
```markdown
|
|
157
136
|
## Human Verification Items
|
|
@@ -162,68 +141,61 @@ Some items can't be verified automatically (visual appearance, real-time behavio
|
|
|
162
141
|
|
|
163
142
|
## Re-Verification Mode
|
|
164
143
|
|
|
165
|
-
|
|
144
|
+
After gap closure:
|
|
166
145
|
1. Load previous verification results
|
|
167
146
|
2. Full 3-level check on previously failed items
|
|
168
|
-
3. Quick regression check on
|
|
169
|
-
4. Merge results
|
|
147
|
+
3. Quick regression check on passed items (exists + basic sanity)
|
|
148
|
+
4. Merge results, issue updated verdict
|
|
170
149
|
|
|
171
150
|
## Desire Paths Retrospective
|
|
172
151
|
|
|
173
|
-
After
|
|
152
|
+
After verification completes (PASSED or GAPS FOUND), run a quick retrospective on framework usage patterns. Update `.forge/state/index.yml → desire_paths` (global, not per-milestone).
|
|
174
153
|
|
|
175
154
|
### Collect Signals
|
|
176
155
|
|
|
177
|
-
|
|
156
|
+
**1. Deviation patterns**: Read `.forge/state/milestone-{id}.yml → deviations`. Repeating?
|
|
157
|
+
- Same Rule 1 fix in multiple places → plan template should include this check
|
|
158
|
+
- Same Rule 2 addition everywhere → constitution needs a new article
|
|
159
|
+
- Same Rule 3 issue → project setup is missing something
|
|
178
160
|
|
|
179
|
-
**
|
|
180
|
-
- Same Rule 1 fix in multiple places → maybe the plan template should include this check
|
|
181
|
-
- Same Rule 2 addition everywhere → maybe the constitution needs a new article
|
|
182
|
-
- Same Rule 3 issue → maybe the project setup is missing something
|
|
161
|
+
**2. Tier overrides**: User override tier detection? Log detected vs. chosen. Repeated overrides = wrong heuristics.
|
|
183
162
|
|
|
184
|
-
**
|
|
163
|
+
**3. Skipped steps**: User ask to skip workflow steps? Repeated skips = friction without value.
|
|
185
164
|
|
|
186
|
-
**
|
|
165
|
+
**4. Recurring friction**: Same problem from previous sessions? Check prior `desire_paths`. Increment counts.
|
|
187
166
|
|
|
188
|
-
**
|
|
167
|
+
**5. Agent struggles**: Agent need multiple attempts or human intervention? Log task type and failure pattern.
|
|
189
168
|
|
|
190
|
-
**
|
|
191
|
-
|
|
192
|
-
**6. User corrections**: Did the user correct the same thing multiple times? (e.g., "remember to use the Card component, not a div", "always add error boundaries"). These are implicit rules that should become explicit.
|
|
169
|
+
**6. User corrections**: User correct the same thing multiple times? Implicit rules that should become explicit.
|
|
193
170
|
|
|
194
171
|
### Surface Recommendations
|
|
195
172
|
|
|
196
|
-
When any pattern reaches **3+ occurrences**, surface it
|
|
197
|
-
|
|
198
|
-
*"I've noticed a recurring pattern: [{description}] has come up {N} times now. This suggests we should evolve the framework. Options:"*
|
|
173
|
+
When any pattern reaches **3+ occurrences**, surface it:
|
|
199
174
|
|
|
200
175
|
| Pattern Type | Suggested Evolution |
|
|
201
176
|
|-------------|-------------------|
|
|
202
|
-
| Repeated deviations | Add pre-check to planning
|
|
177
|
+
| Repeated deviations | Add pre-check to planning, or new constitutional article |
|
|
203
178
|
| Tier overrides | Adjust detection heuristics in forge skill |
|
|
204
|
-
| Skipped steps | Make step optional
|
|
205
|
-
| Recurring friction | Add
|
|
206
|
-
| Agent struggles | Add examples or anti-patterns to the skill
|
|
207
|
-
| User corrections | Add
|
|
179
|
+
| Skipped steps | Make step optional, or merge into another step |
|
|
180
|
+
| Recurring friction | Add guidance to relevant skill, or create a template |
|
|
181
|
+
| Agent struggles | Add examples or anti-patterns to the relevant skill |
|
|
182
|
+
| User corrections | Add rule to constitution, context.md, or relevant skill |
|
|
208
183
|
|
|
209
|
-
|
|
210
|
-
- *"
|
|
211
|
-
- *"
|
|
212
|
-
- *"
|
|
213
|
-
- *"Should I add a new constitutional article: 'Error Boundaries Required'?"*
|
|
184
|
+
Propose concrete actions:
|
|
185
|
+
- *"Add 'always use Card component for content containers' to design-system.md?"*
|
|
186
|
+
- *"Add null-check verification step to planning template?"*
|
|
187
|
+
- *"Make research phase optional for Standard tier in this project?"*
|
|
214
188
|
|
|
215
|
-
Only suggest
|
|
189
|
+
Only suggest at 3+ occurrences. One-off issues are noise.
|
|
216
190
|
|
|
217
191
|
## Phase Handoff
|
|
218
192
|
|
|
219
|
-
After
|
|
193
|
+
After PASSED verdict:
|
|
220
194
|
|
|
221
|
-
1. **
|
|
195
|
+
1. **Persist** — Confirm verification results documented, desire paths logged to `.forge/state/index.yml`
|
|
222
196
|
2. **Update state** — Set `current.status` to `reviewing` in `.forge/state/milestone-{id}.yml`
|
|
223
197
|
3. **Recommend context clear:**
|
|
224
198
|
|
|
225
|
-
*"Verification
|
|
226
|
-
|
|
227
|
-
*Ready to continue? Clear context and invoke `/forge` to resume."*
|
|
199
|
+
*"Verification passed. State written. `/clear` then `/forge` to continue with reviewing."*
|
|
228
200
|
|
|
229
|
-
|
|
201
|
+
If GAPS found, route back to planning in gap-closure mode. Context clear applies after re-verified PASSED verdict.
|