From cli-printing-press
Regenerates existing printed CLIs under current Printing Press, importing from public library if needed, recommending prior research reuse-vs-redo by age, and handing off to /printing-press with reconciled features. Use for machine upgrades over manual polish.
npx claudepluginhub mvanhorn/cli-printing-press --plugin cli-printing-pressThis skill is limited to using the following tools:
Regenerate an existing printed CLI under the current machine. The user gives
Imports a published CLI from the printing-press public library into your local ~/printing-press/library/, reverting module paths and placing manuscripts alongside. Use when missing locally or recovering broken copies before polish or emboss.
Designs CLI surfaces including args/flags/subcommands/help/output/errors/config for new tools. Audits existing CLIs for consistency, composability, and agent ergonomics.
Researches Claude Code CLI version changes via docs/GitHub, analyzes bkit plugin impacts, brainstorms improvements, and generates Korean reports. Invoke for CC upgrades.
Share bugs, ideas, or general feedback.
Regenerate an existing printed CLI under the current machine. The user gives
a CLI name and (optionally) reasons for the reprint. This skill ensures the
prior CLI is locally present, recommends whether to reuse or redo prior
research, and hands off to /printing-press with the context the
novel-features subagent needs to reconcile prior features against the
current machine — keep, reframe, or drop with reasons, never silent.
/printing-press-reprint notion
/printing-press-reprint cal.com the new MCP intent surface landed and the prior CLI ships endpoint-mirror only
/printing-press-reprint allrecipes
For one-off code-quality fixes, prefer /printing-press-polish — it doesn't
redo research or rebuild the manuscript.
PRESS_HOME="$HOME/printing-press"
PRESS_LIBRARY="$PRESS_HOME/library"
PRESS_MANUSCRIPTS="$PRESS_HOME/manuscripts"
Resolve the user's argument the same way /printing-press-import does:
fetch the public library registry.json once, then exact → normalized →
fuzzy match. The argument can be an API slug (notion), a brand name
(cal.com), an old <api>-pp-cli form, or close enough.
Then check what exists locally and reconcile against the public library by
reading both provenance manifests' run_id and generated_at:
| Local | Public registry | Action |
|---|---|---|
| absent | absent | STOP — nothing to reprint; suggest /printing-press <api> for a fresh print |
| absent | present | invoke /printing-press-import <api>, then continue |
| present | absent | continue — never-published local CLI; skip import |
present, same run_id | present | continue without import |
present, public newer generated_at | present | offer import via AskUserQuestion; user decides |
present, local newer generated_at | present | STOP — local has unpublished work; tell user to publish or discard first |
When invoking /printing-press-import, let it own backup, overwrite,
build-verify, and module-path-rewrite. Wait for it to return clean before
continuing.
Confirm the two paths the novel-features subagent checks for prior research are populated:
LIB_TARGET="$PRESS_LIBRARY/$API_SLUG"
LIB_RESEARCH="$LIB_TARGET/research.json"
MAN_RESEARCH=$(ls -1t "$PRESS_MANUSCRIPTS/$API_SLUG"/*/research.json 2>/dev/null | head -1)
If neither exists, the published CLI predates research.json provenance.
The subagent will treat the run as a first print and Pass 2(d) reprint
reconciliation will not fire — there is nothing for it to read. Surface
this and ask:
Published
<api>was built beforeresearch.jsonprovenance landed. Without it, the novel-features subagent will treat this as a first print — there is nothing to reconcile against. Continue as a degraded reprint (essentially a fresh print with a kept binary name)?
If the user declines, exit. If they continue, record the absence so the hand-off prompt notes that this is a degraded reprint.
Pull researched_at from the most-recent prior research.json and
printing_press_version + generated_at from .printing-press.json:
RESEARCHED_AT=$(jq -r '.researched_at // empty' "$MAN_RESEARCH" 2>/dev/null)
PRESS_VERSION=$(jq -r '.printing_press_version // empty' "$LIB_TARGET/.printing-press.json" 2>/dev/null)
GENERATED_AT=$(jq -r '.generated_at // empty' "$LIB_TARGET/.printing-press.json" 2>/dev/null)
Compute the calendar age of the research with python3 so it stays portable
across macOS/Linux and tolerates the microsecond precision that
generated_at carries (BSD date -f rejects fractional seconds; python3
is on every supported platform):
AGE_DAYS=$(python3 -c "
from datetime import datetime, timezone
ts = '$RESEARCHED_AT'.replace('Z', '+00:00')
print(int((datetime.now(timezone.utc) - datetime.fromisoformat(ts)).total_seconds() // 86400))
" 2>/dev/null)
Surface both signals to the user — research age and prior machine version. Age thresholds are rules of thumb, not gates:
Don't predict API churn from age alone — describe the signals and let the
user override. The Phase 0 binary-version-bump revalidation in
/printing-press handles the machine-delta side independently; don't
duplicate it here.
Ask via AskUserQuestion:
/printing-pressInvoke /printing-press <api> and bundle three things into the prompt:
reuse or redo). Phase 0's existing
reuse logic consumes this.User context
block. This propagates into the brief as ## User Vision and becomes
Pass 2(e) input to the novel-features subagent — the right hook for
"I want better MCP support" → bias the brainstorm accordingly.Do not pass a separate "this is a reprint" marker. The novel-features
subagent runs unconditionally on every print and discovers prior research
via its own discovery snippet (see
skills/printing-press/references/novel-features-subagent.md). The paths
import populated in Phase A are exactly the paths it checks; Pass 2(d)
fires whenever prior research.json exists.
The printing-press flow drives the rest. Don't summarize its work — let the user see the live phases.
If /printing-press halts with the subagent's pre-flight HALT (brief
lacks concrete Users / Top Workflows content), the reused prior brief
predates the subagent's required schema. Recommend re-running with Redo
research selected at Phase C.