forge-orkes 0.8.0 → 0.9.1
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
CHANGED
|
@@ -23,16 +23,33 @@ Structured conversation: approach, trade-offs, decisions. Clarity, not artifacts
|
|
|
23
23
|
|
|
24
24
|
## Progressive Persistence
|
|
25
25
|
|
|
26
|
-
**Decisions persist immediately
|
|
26
|
+
**Decisions persist immediately. This is a hard gate — not a guideline.**
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
After each user response that confirms a decision:
|
|
29
29
|
|
|
30
|
-
1. **
|
|
31
|
-
2. **
|
|
32
|
-
3. **
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
1. **STOP** — do not continue the discussion
|
|
31
|
+
2. **Write to disk** — append to `.forge/context.md` (create from template if missing)
|
|
32
|
+
3. **THEN** continue to the next question
|
|
33
|
+
|
|
34
|
+
Never accumulate decisions in working memory. Never batch writes to convergence.
|
|
35
|
+
|
|
36
|
+
### Write Protocol
|
|
37
|
+
|
|
38
|
+
**On first decision of the session:**
|
|
39
|
+
- Check if `.forge/context.md` exists. If not → create it from `.forge/templates/context.md`
|
|
40
|
+
- Add a milestone heading inside `## Locked Decisions`: `### M{id} — {name} (drafting)` (use "M?" if no milestone yet)
|
|
41
|
+
|
|
42
|
+
**On each confirmed decision:**
|
|
43
|
+
- Append under the milestone heading: `- **[Topic]**: [Decision]. Reason: [Why]`
|
|
44
|
+
|
|
45
|
+
**On deferred ideas** (user says "not now" / "later" / "skip"):
|
|
46
|
+
- Append to `## Deferred Ideas` immediately: `- [Idea] — Deferred because: [reason]`
|
|
47
|
+
|
|
48
|
+
**On discretion areas** (left to agent judgment):
|
|
49
|
+
- Append to `## Discretion Areas` immediately
|
|
50
|
+
|
|
51
|
+
**At Phase Handoff:**
|
|
52
|
+
- Rename `(drafting)` → `(locked {date})` — decisions are already written, just finalize the heading
|
|
36
53
|
|
|
37
54
|
### Why
|
|
38
55
|
|
|
@@ -145,7 +162,13 @@ Apply Functionality Distillation (above), grounded in research findings.
|
|
|
145
162
|
|
|
146
163
|
**After each user response:** write confirmed behavioral decisions to `context.md` immediately.
|
|
147
164
|
|
|
148
|
-
### Step 5:
|
|
165
|
+
### Step 5: Pre-Convergence Audit
|
|
166
|
+
|
|
167
|
+
**Before summarizing, read `.forge/context.md` and verify all confirmed decisions are present.**
|
|
168
|
+
|
|
169
|
+
If any decision from the conversation is missing from the file → write it now. Do not proceed to the summary until the file matches the conversation. This is a hard gate.
|
|
170
|
+
|
|
171
|
+
### Step 6: Converge
|
|
149
172
|
|
|
150
173
|
Summarize decided items, then confirm:
|
|
151
174
|
|
|
@@ -136,7 +136,7 @@ Can't know upfront if "review X" → "it's fine" or "restructure 6 files." Discu
|
|
|
136
136
|
|
|
137
137
|
## Step 3: Route to Next Skill
|
|
138
138
|
|
|
139
|
-
Tier + state → invoke via `Skill` tool
|
|
139
|
+
Tier + state → invoke via `Skill` tool. All phases use `Skill()`.
|
|
140
140
|
|
|
141
141
|
**CRITICAL: NEVER `EnterPlanMode`.** "Planning" = `Skill(planning)`. Native plan mode writes wrong format, bypasses gates + state.
|
|
142
142
|
|
|
@@ -163,9 +163,7 @@ Resolve `{model}` for `{next}` skill using precedence above. **Always display**
|
|
|
163
163
|
|
|
164
164
|
Where `{source}` = `skills.{name}` | `models.default` | `parent session`. Show on every transition, not just mismatch. If mismatch, append: *"Use `/model` to switch."*
|
|
165
165
|
|
|
166
|
-
**
|
|
167
|
-
|
|
168
|
-
Subagents via `Agent` tool → same precedence, enforced via `model` param.
|
|
166
|
+
**Model routing is advisory.** All phases use `Skill()`. Display expected model at each transition. Mismatch → suggest `/model {expected}`. Review gate logs model used.
|
|
169
167
|
|
|
170
168
|
| Skill | Model | Why |
|
|
171
169
|
|-------|-------|-----|
|
|
@@ -179,96 +177,19 @@ Subagents via `Agent` tool → same precedence, enforced via `model` param.
|
|
|
179
177
|
| discussing | sonnet | Conversation |
|
|
180
178
|
| testing | sonnet | Code gen (author) + audit judgment (analyst) — matches executing/reviewing |
|
|
181
179
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
| `
|
|
185
|
-
|
|
186
|
-
| `
|
|
187
|
-
| `
|
|
188
|
-
| `
|
|
189
|
-
| `
|
|
190
|
-
| `
|
|
191
|
-
| `
|
|
192
|
-
| `
|
|
193
|
-
| `
|
|
194
|
-
| `
|
|
195
|
-
| `deferred` | Milestone frozen. *"Resume milestone {id}" to reactivate.* | — |
|
|
196
|
-
| `quick-tasking` | Agent-dispatched (Quick tier / refactor-backlog) | **Agent** |
|
|
197
|
-
|
|
198
|
-
**Phases marked Agent MUST use `Agent()` with `model` param. Never `Skill()` — model enforcement only works through `Agent()`.**
|
|
199
|
-
|
|
200
|
-
### Agent-Dispatched Phases
|
|
201
|
-
|
|
202
|
-
Phases marked **Agent** run as spawned agents to enforce model routing. `Agent` tool's `model` param = only enforcement point.
|
|
203
|
-
|
|
204
|
-
**Skill contract:** Each dispatched skill carries a guard header — if parent loads via Skill(), guard says STOP.
|
|
205
|
-
|
|
206
|
-
**Parent protocol:**
|
|
207
|
-
1. Resolve model: `models.skills.{skill}` → `models.default` → parent
|
|
208
|
-
2. On return: read updated state, display *"Result: {outcome}. Model: {model} (enforced)."*, route next
|
|
209
|
-
|
|
210
|
-
**Agent prompt requirements:** `touch .forge/.active-skill` (pre-commit guard) + "Report resolved model in summary."
|
|
211
|
-
|
|
212
|
-
#### Verifying
|
|
213
|
-
|
|
214
|
-
When `current.status == verifying`:
|
|
215
|
-
|
|
216
|
-
1. Read milestone state → identify plan path
|
|
217
|
-
2. Spawn:
|
|
218
|
-
|
|
219
|
-
```
|
|
220
|
-
Agent(
|
|
221
|
-
model: "{model}",
|
|
222
|
-
description: "Verify milestone {id}: {name}",
|
|
223
|
-
prompt: "You are a verifier agent. Prove completed work delivers what was promised.
|
|
224
|
-
|
|
225
|
-
FIRST: Run `touch .forge/.active-skill`
|
|
226
|
-
|
|
227
|
-
Read:
|
|
228
|
-
- .claude/skills/verifying/SKILL.md — process instructions
|
|
229
|
-
- .claude/agents/verifier.md — role, tools, output format
|
|
230
|
-
- .forge/state/milestone-{id}.yml — current state
|
|
231
|
-
- .forge/phases/{phase_path}/plan-{NN}.md — must_haves
|
|
232
|
-
- .forge/project.yml — stack, verification commands
|
|
233
|
-
- .forge/context.md — locked decisions
|
|
234
|
-
- .forge/requirements.yml — requirement coverage
|
|
235
|
-
|
|
236
|
-
Follow verifying/SKILL.md 3-level process exactly.
|
|
237
|
-
Write results to plan directory.
|
|
238
|
-
Update state: 'reviewing' if PASSED, keep 'verifying' if GAPS.
|
|
239
|
-
Report resolved model in summary."
|
|
240
|
-
)
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
3. On return: PASSED → reviewing. GAPS → planning (gap-closure).
|
|
244
|
-
|
|
245
|
-
#### Quick-Tasking
|
|
246
|
-
|
|
247
|
-
Quick-tasking runs as Agent from Quick tier or refactor-backlog. Parent constructs prompt based on milestone context:
|
|
248
|
-
|
|
249
|
-
```
|
|
250
|
-
Agent(
|
|
251
|
-
model: "{model}",
|
|
252
|
-
description: "Quick fix: {description}",
|
|
253
|
-
prompt: "You are a quick-tasking agent. Small, scoped fix.
|
|
254
|
-
|
|
255
|
-
FIRST: Run `touch .forge/.active-skill`
|
|
256
|
-
|
|
257
|
-
Read:
|
|
258
|
-
- .claude/skills/quick-tasking/SKILL.md — workflow
|
|
259
|
-
- .forge/project.yml — stack, verification commands
|
|
260
|
-
[with milestone: + .forge/state/milestone-{id}.yml, .forge/context.md]
|
|
261
|
-
|
|
262
|
-
Task: {description}
|
|
263
|
-
|
|
264
|
-
Follow quick-tasking/SKILL.md workflow.
|
|
265
|
-
[with milestone: After commit, update milestone-{id}.yml (increment progress, log deviations).]
|
|
266
|
-
[without milestone: No state management.]
|
|
267
|
-
Report resolved model in summary."
|
|
268
|
-
)
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
On return: display result + model. With milestone → read updated state.
|
|
180
|
+
| `current.status` | Route To |
|
|
181
|
+
|-------------------|----------|
|
|
182
|
+
| `not_started` | Detect tier, start |
|
|
183
|
+
| `researching` | `Skill(researching)` → discussing |
|
|
184
|
+
| `discussing` | `Skill(discussing)` → planning (or architecting if Full) |
|
|
185
|
+
| `architecting` | `Skill(architecting)` → planning |
|
|
186
|
+
| `planning` | `Skill(planning)` → executing |
|
|
187
|
+
| `executing` | `Skill(executing)` → verifying |
|
|
188
|
+
| `verifying` | `Skill(verifying)` → reviewing |
|
|
189
|
+
| `reviewing` | `Skill(reviewing)` → complete |
|
|
190
|
+
| `complete` | Done. Ask what's next. |
|
|
191
|
+
| `deferred` | Milestone frozen. *"Resume milestone {id}" to reactivate.* |
|
|
192
|
+
| `quick-tasking` | `Skill(quick-tasking)` |
|
|
272
193
|
|
|
273
194
|
### Status Advancement Check
|
|
274
195
|
|
|
@@ -3,8 +3,6 @@ name: quick-tasking
|
|
|
3
3
|
description: "Small, scoped changes: typo fixes, config updates, minor bugs, dependency bumps, doc tweaks. Under 50 lines, 1-2 files, no architectural decisions. Quick tier — skip ceremony."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
> **AGENT-DISPATCHED:** If reading in parent session, STOP — use Agent() via forge/SKILL.md § Agent-Dispatched Phases.
|
|
7
|
-
|
|
8
6
|
# Quick-Tasking
|
|
9
7
|
|
|
10
8
|
Small change? Skip ceremony. Do it right, do it fast.
|
|
@@ -3,8 +3,6 @@ name: verifying
|
|
|
3
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
|
-
> **AGENT-DISPATCHED:** If reading in parent session, STOP — use Agent() via forge/SKILL.md § Agent-Dispatched Phases.
|
|
7
|
-
|
|
8
6
|
# Verifying
|
|
9
7
|
|
|
10
8
|
Prove completed work delivers what was promised. Task completion ≠ goal achievement.
|
package/template/CLAUDE.md
CHANGED
|
@@ -96,8 +96,7 @@ models:
|
|
|
96
96
|
```
|
|
97
97
|
|
|
98
98
|
**Precedence:** `skills.X` → `default` → parent model.
|
|
99
|
-
**
|
|
100
|
-
**Agents model-agnostic** — skills set model at spawn. One routing table.
|
|
99
|
+
**All advisory** — forge displays expected model at each transition, suggests `/model` on mismatch. Review gate logs model used. Cannot auto-switch.
|
|
101
100
|
|
|
102
101
|
## Agents
|
|
103
102
|
|