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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "forge-orkes",
3
- "version": "0.8.0",
3
+ "version": "0.9.1",
4
4
  "description": "Set up the Forge meta-prompting framework for Claude Code in your project",
5
5
  "bin": {
6
6
  "create-forge": "./bin/create-forge.js"
@@ -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.** After each user response that confirms a decision, write it to `.forge/context.md` right away. Don't accumulate in working memory.
26
+ **Decisions persist immediately. This is a hard gate not a guideline.**
27
27
 
28
- ### Rules
28
+ After each user response that confirms a decision:
29
29
 
30
- 1. **Create `context.md` on first decision** if it doesn't exist (from template `.forge/templates/context.md`)
31
- 2. **Scope by milestone.** Add decisions under `### M{id} — {name} (drafting)` inside `## Locked Decisions`
32
- 3. **Append, don't rewrite.** Each confirmed decision → append one `- **[Topic]**: [Decision]. Reason: [Why]` line
33
- 4. **Deferred ideas too.** User says "not now" / "later" / "skip" → append to `## Deferred Ideas` immediately
34
- 5. **Discretion areas too.** Left to agent judgment append to `## Discretion Areas` immediately
35
- 6. **Phase Handoff promotes.** Rename `(drafting)` → `(locked {date})` at convergence. No content change needed — decisions are already written
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: Converge
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 or `Agent` tool (agent-dispatched phases).
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
- **Agent spawns MUST include `model` param.** Resolve model for the skill context, pass to `Agent(model: "{model}")`. This is the only enforcement point — `Skill` tool has no model param.
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
- *Model enforced only for Agent-dispatched skills (verifying, quick-tasking). Skill-routed phases are advisory — use `/model` to switch.*
183
-
184
- | `current.status` | Route To | Method |
185
- |-------------------|----------|--------|
186
- | `not_started` | Detect tier, start | |
187
- | `researching` | `Skill(researching)` → discussing | Skill |
188
- | `discussing` | `Skill(discussing)` → planning (or architecting if Full) | Skill |
189
- | `architecting` | `Skill(architecting)` → planning | Skill |
190
- | `planning` | `Skill(planning)` → executing | Skill |
191
- | `executing` | `Skill(executing)` → verifying | Skill |
192
- | `verifying` | Agent-dispatched reviewing | **Agent** |
193
- | `reviewing` | `Skill(reviewing)` complete | Skill |
194
- | `complete` | Done. Ask what's next. | — |
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.
@@ -96,8 +96,7 @@ models:
96
96
  ```
97
97
 
98
98
  **Precedence:** `skills.X` → `default` → parent model.
99
- **Parent session advisory** — warns if mismatch, cannot auto-switch. Enforced at review gate.
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