[object Object]

← back to Cli Printing Press

chore(skills): re-add context: fork to polish and output-review (#473)

20ffaaa48747044a72e1e8b7f275b31bbbe22b45 · 2026-05-01 19:42:22 -0700 · Trevin Chow

Reverts the workaround in #410 and #417 that dropped context: fork from
the polish and output-review skills. Upstream Claude Code bug
anthropics/claude-code#54892 (regression of #46654, blocking
AskUserQuestion in forked contexts) is fixed as of Claude Code 2.1.126,
so the fork-context isolation can come back.

Restores the per-skill frontmatter, the polish prose paragraph
explaining the forked-context isolation, the Phase 4.85 explanation in
the main printing-press skill, and the polish reference in
docs/SKILLS.md's self-contained-skill example list. Drops the workaround
guidance in docs/SKILLS.md that warned against forking skills with
AskUserQuestion sites — the warning no longer reflects how the runtime
behaves.

The AskUserQuestion-loader prose in polish (the "load the schema with
ToolSearch select:AskUserQuestion before first use" paragraph) is
intentionally not restored: it was a workaround instruction, not a
contract worth preserving once the upstream is fixed.

Closes #409.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit 20ffaaa48747044a72e1e8b7f275b31bbbe22b45
Author: Trevin Chow <trevin@trevinchow.com>
Date:   Fri May 1 19:42:22 2026 -0700

    chore(skills): re-add context: fork to polish and output-review (#473)
    
    Reverts the workaround in #410 and #417 that dropped context: fork from
    the polish and output-review skills. Upstream Claude Code bug
    anthropics/claude-code#54892 (regression of #46654, blocking
    AskUserQuestion in forked contexts) is fixed as of Claude Code 2.1.126,
    so the fork-context isolation can come back.
    
    Restores the per-skill frontmatter, the polish prose paragraph
    explaining the forked-context isolation, the Phase 4.85 explanation in
    the main printing-press skill, and the polish reference in
    docs/SKILLS.md's self-contained-skill example list. Drops the workaround
    guidance in docs/SKILLS.md that warned against forking skills with
    AskUserQuestion sites — the warning no longer reflects how the runtime
    behaves.
    
    The AskUserQuestion-loader prose in polish (the "load the schema with
    ToolSearch select:AskUserQuestion before first use" paragraph) is
    intentionally not restored: it was a workaround instruction, not a
    contract worth preserving once the upstream is fixed.
    
    Closes #409.
    
    Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---
 docs/SKILLS.md                               |  2 +-
 skills/printing-press-output-review/SKILL.md |  1 +
 skills/printing-press-polish/SKILL.md        | 11 ++++++++++-
 skills/printing-press/SKILL.md               |  2 +-
 4 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/docs/SKILLS.md b/docs/SKILLS.md
index 7ffdba6c..0f8cecc1 100644
--- a/docs/SKILLS.md
+++ b/docs/SKILLS.md
@@ -39,7 +39,7 @@ Default: skills run in the caller's context. The skill sees the full parent conv
 - **Benefit:** the skill starts with a fresh, dedicated context — its full window is available for its own work (multi-step loops, sub-agent transcripts, large reads) rather than competing with whatever the parent has already accumulated.
 - **Cost:** the skill can't see anything from the parent's conversation. Everything it needs must come through `args`, be readable from disk, or be hardcoded.
 
-The decision rule is whether the skill is **self-contained** given its declared inputs. If args plus the filesystem cover everything the skill needs (e.g., `printing-press-output-review` takes a CLI dir and runs `scorecard --live-check` to gather data), `context: fork` is a clear win. If the skill needs prior tool output, conversation history, or anything else the parent has accumulated, don't fork — the skill won't have access to it and you'll end up plumbing context through args anyway. Skills with interactive question sites (AskUserQuestion calls in the middle of the workflow) should usually NOT fork: deferred-tool reliability is weaker in forked contexts and a missed prompt loop stalls the whole run. Polish hit this and ran in the parent instead.
+The decision rule is whether the skill is **self-contained** given its declared inputs. If args plus the filesystem cover everything the skill needs (e.g., `printing-press-polish` takes a CLI dir and reads the rest from the repo and manuscripts; `printing-press-output-review` takes a CLI dir and runs `scorecard --live-check` to gather data), `context: fork` is a clear win. If the skill needs prior tool output, conversation history, or anything else the parent has accumulated, don't fork — the skill won't have access to it and you'll end up plumbing context through args anyway.
 
 ### `user-invocable`
 
diff --git a/skills/printing-press-output-review/SKILL.md b/skills/printing-press-output-review/SKILL.md
index 5daa4ea1..73007c09 100644
--- a/skills/printing-press-output-review/SKILL.md
+++ b/skills/printing-press-output-review/SKILL.md
@@ -7,6 +7,7 @@ description: >
   Skill tool by main printing-press SKILL.md (Phase 4.85) and printing-press-polish
   SKILL.md during the diagnostic loop. Not for direct user invocation — its
   actionable wrappers are /printing-press and /printing-press-polish.
+context: fork
 user-invocable: false
 allowed-tools:
   - Bash
diff --git a/skills/printing-press-polish/SKILL.md b/skills/printing-press-polish/SKILL.md
index c29b3cec..6d700db9 100644
--- a/skills/printing-press-polish/SKILL.md
+++ b/skills/printing-press-polish/SKILL.md
@@ -8,13 +8,22 @@ description: >
   /printing-press run, or on any CLI in ~/printing-press/library/. Trigger
   phrases: "polish", "improve the CLI", "fix verify", "make it publish-ready",
   "clean up the CLI", "get this ready to ship".
+context: fork
+allowed-tools:
+  - Bash
+  - Read
+  - Glob
+  - Grep
+  - Write
+  - Edit
+  - AskUserQuestion
 ---
 
 # /printing-press-polish
 
 Polish a generated CLI so it passes verification and is ready to publish.
 
-The retro improves the Printing Press. Polish improves the generated CLI.
+The retro improves the Printing Press. Polish improves the generated CLI. This skill runs in a forked context (`context: fork`) so its diagnostic and fix loop doesn't pollute the caller — the diagnostic spam, fix iterations, and re-diagnose noise stay scoped to the polish session, and the caller receives a clean summary.
 
 ```bash
 /printing-press-polish redfin
diff --git a/skills/printing-press/SKILL.md b/skills/printing-press/SKILL.md
index 1441f3d2..7094bcdf 100644
--- a/skills/printing-press/SKILL.md
+++ b/skills/printing-press/SKILL.md
@@ -2188,7 +2188,7 @@ Skill(
 )
 ```
 
-The sub-skill returns a `---OUTPUT-REVIEW-RESULT---` block with `status: PASS|WARN|SKIP` and a list of findings.
+The sub-skill carries `context: fork` so the reviewer agent's diagnostic chatter stays isolated from this generation flow. It returns a `---OUTPUT-REVIEW-RESULT---` block with `status: PASS|WARN|SKIP` and a list of findings.
 
 **Wave B rollout policy:** all findings surface as **warnings**, not blockers. Shipcheck does not fail on Phase 4.85 findings. Log the findings to `manuscripts/<api>/<run>/proofs/phase-4.85-findings.md` and surface them to the user. The user decides case by case whether to fix before shipping. Wave B calibrates false-positive rates before Wave C flips errors to blocking.
 

← d1a8a467 feat(generator): owner precedence chain — preserve attributi  ·  back to Cli Printing Press  ·  fix(regenmerge): correct owner rewrite + skip injection on p 6d45d228 →