[object Object]

← back to Cli Printing Press

feat(skill): update Workflow 4 to check plan_status for seed vs expanded

37008dd9a0a4c2a4958b09a5aa139eafaa7499c5 · 2026-03-24 11:03:45 -0700 · Matt Van Horn

Phase loop now checks frontmatter status: seed plans get ce:plan expansion,
active plans get ce:work execution. Each phase may take two sessions -
one for planning, one for implementing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

Files touched

Diff

commit 37008dd9a0a4c2a4958b09a5aa139eafaa7499c5
Author: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Date:   Tue Mar 24 11:03:45 2026 -0700

    feat(skill): update Workflow 4 to check plan_status for seed vs expanded
    
    Phase loop now checks frontmatter status: seed plans get ce:plan expansion,
    active plans get ce:work execution. Each phase may take two sessions -
    one for planning, one for implementing.
    
    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---
 skills/printing-press/SKILL.md | 48 ++++++++++++++++++++++++++++--------------
 1 file changed, 32 insertions(+), 16 deletions(-)

diff --git a/skills/printing-press/SKILL.md b/skills/printing-press/SKILL.md
index e6cd9f14..8baa54db 100644
--- a/skills/printing-press/SKILL.md
+++ b/skills/printing-press/SKILL.md
@@ -243,26 +243,42 @@ RESUME_MONTH=$(date -v+45M '+%m')
 Then CronCreate with cron expression `$RESUME_MIN $RESUME_HOUR $RESUME_DAY $RESUME_MONTH *` and prompt: `/printing-press resume <api-name>`
 
 **Step 3: Phase execution loop**
-For each phase in state.json where status is not "completed" and not "failed":
-
-a. Read the plan seed at the phase's `plan_path`
-b. Run `Skill("compound-engineering:ce:plan", plan_path)` to expand the seed into a full plan with research
-c. Run `Skill("compound-engineering:ce:work", plan_path)` to implement, test, and check off criteria
-d. Update state.json: mark phase "completed" using python3:
-```bash
-python3 -c "
-import json
-s = json.load(open('docs/plans/<api-name>-pipeline/state.json'))
-s['phases']['<phase>']['status'] = 'completed'
-json.dump(s, open('docs/plans/<api-name>-pipeline/state.json', 'w'), indent=2)
-"
-```
-e. Run budget gate (Step 4)
-f. If more phases remain and budget gate says CONTINUE:
+For each phase in state.json where `plan_status` is not "completed":
+
+a. Read the plan file at the phase's `plan_path`
+b. Check the `status` field in the plan's YAML frontmatter:
+   - If `status: seed` - the plan is a thin prompt that needs expansion:
+     1. Run `Skill("compound-engineering:ce:plan", plan_path)` to expand the seed into a full plan with research
+     2. ce:plan overwrites the file with the expanded plan (frontmatter becomes `status: active`)
+     3. Update state.json: set `plan_status` to "expanded":
+     ```bash
+     python3 -c "
+     import json
+     s = json.load(open('docs/plans/<api-name>-pipeline/state.json'))
+     s['phases']['<phase>']['plan_status'] = 'expanded'
+     json.dump(s, open('docs/plans/<api-name>-pipeline/state.json', 'w'), indent=2)
+     "
+     ```
+   - If `status: active` - the plan is already expanded, ready for execution:
+     1. Run `Skill("compound-engineering:ce:work", plan_path)` to implement, test, and check off criteria
+     2. Update state.json: mark phase completed:
+     ```bash
+     python3 -c "
+     import json
+     s = json.load(open('docs/plans/<api-name>-pipeline/state.json'))
+     s['phases']['<phase>']['status'] = 'completed'
+     s['phases']['<phase>']['plan_status'] = 'completed'
+     json.dump(s, open('docs/plans/<api-name>-pipeline/state.json', 'w'), indent=2)
+     "
+     ```
+c. Run budget gate (Step 4)
+d. If more phases remain and budget gate says CONTINUE:
    - CronCreate 30 seconds from now: `/printing-press resume <api-name>`
    - Print: `"[phase] complete. Chaining to [next_phase] in 30s with fresh context..."`
    - END SESSION (the cron fires a new session with fresh context)
 
+**Note:** Each phase may take TWO sessions - one for ce:plan expansion, one for ce:work execution. This is by design: ce:plan gets a fresh context window for research, ce:work gets a fresh context window for implementation.
+
 **Step 4: Budget gate (between every phase)**
 ```bash
 python3 -c "

← 1f360464 refactor(pipeline): use MarkSeedWritten in Init instead of M  ·  back to Cli Printing Press  ·  refactor(pipeline): rewrite seed templates as thin ce:plan p 7ca3e75b →