printing-press-reprint

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

/printing-press-reprint

/printing-press-reprint

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.
bash
/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
在当前机器环境下重新生成已有的已发布CLI。用户提供CLI名称以及(可选的)重印理由。此技能确保先前的CLI已存在于本地,建议是否复用或重做先前的研究,并将上下文传递给
/printing-press
,以便新增特性子代理能够根据当前机器环境协调先前的特性——保留、重构或给出理由后丢弃,绝不静默处理。
bash
/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

When to run

运行时机

  • A significant Printing Press upgrade (new MCP surface, new auth modes, new transport, scoring rubric changes) would lift this CLI more than manual polish.
  • The published CLI ships with a known systemic gap a reprint would fix.
  • The user wants prior novel features re-evaluated against the current machine and current personas, not carried forward verbatim.
For one-off code-quality fixes, prefer
/printing-press-polish
— it doesn't redo research or rebuild the manuscript.
  • 当Printing Press的重大升级(新的MCP界面、新的认证模式、新的传输方式、评分规则变更)对该CLI的提升效果优于手动优化时。
  • 已发布的CLI存在已知的系统性缺陷,而重印可以修复该缺陷时。
  • 用户希望根据当前机器环境和用户角色重新评估先前的新增特性,而非直接沿用原有时。
对于一次性的代码质量修复,建议使用
/printing-press-polish
——该功能不会重做研究或重建手稿。

Setup

设置

bash
PRESS_HOME="$HOME/printing-press"
PRESS_LIBRARY="$PRESS_HOME/library"
PRESS_MANUSCRIPTS="$PRESS_HOME/manuscripts"
bash
PRESS_HOME="$HOME/printing-press"
PRESS_LIBRARY="$PRESS_HOME/library"
PRESS_MANUSCRIPTS="$PRESS_HOME/manuscripts"

Phase A — Resolve and reconcile presence

阶段A — 解析并协调存在性

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
:
LocalPublic registryAction
absentabsentSTOP — nothing to reprint; suggest
/printing-press <api>
for a fresh print
absentpresentinvoke
/printing-press-import <api>
, then continue
presentabsentcontinue — never-published local CLI; skip import
present, same
run_id
presentcontinue without import
present, public newer
generated_at
presentoffer import via
AskUserQuestion
; user decides
present, local newer
generated_at
presentSTOP — 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.
以与
/printing-press-import
相同的方式解析用户参数:先获取公共库的
registry.json
,然后依次进行精确匹配→标准化匹配→模糊匹配。参数可以是API别名(
notion
)、品牌名称(
cal.com
)、旧的
<api>-pp-cli
格式,或近似名称。
然后通过读取本地和公共库的来源清单中的
run_id
generated_at
字段,检查本地是否存在该CLI并与公共库进行协调:
本地状态公共注册表状态操作
不存在不存在终止——无可重印内容;建议使用
/printing-press <api>
进行全新生成
不存在存在调用
/printing-press-import <api>
,然后继续
存在不存在继续——未发布的本地CLI;跳过导入
存在,
run_id
相同
存在无需导入,直接继续
存在,公共库版本的
generated_at
更新
存在通过
AskUserQuestion
询问用户是否导入;由用户决定
存在,本地版本的
generated_at
更新
存在终止——本地存在未发布的工作;告知用户先发布或丢弃该内容
调用
/printing-press-import
时,由该功能负责备份、覆盖、构建验证和模块路径重写。等待其执行完成后再继续后续流程。

Phase B — Verify prior research is reconcilable

阶段B — 验证先前研究成果可协调

Confirm the two paths the novel-features subagent checks for prior research are populated:
bash
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 before
research.json
provenance 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.
确认新增特性子代理检查的两个先前研究成果路径已填充:
bash
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)
如果两者都不存在,则说明已发布的CLI早于
research.json
来源记录的引入。子代理会将此次运行视为首次生成,且阶段2(d)的重印协调流程不会触发——因为没有可读取的内容。此时需向用户说明情况并询问:
已发布的
<api>
是在
research.json
来源记录引入之前构建的。没有该记录,新增特性子代理会将此次运行视为首次生成——无内容可协调。是否继续进行降级重印(本质上是保留二进制名称的全新生成)?
如果用户拒绝,则退出流程。如果用户同意继续,则记录该缺失情况,以便传递提示时注明此次为降级重印。

Phase C — Recency recommendation

阶段C — 时效性建议

Pull
researched_at
from the most-recent prior
research.json
and
printing_press_version
+
generated_at
from
.printing-press.json
:
bash
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):
bash
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:
  • under 30 days → reuse looks safe
  • 30–120 days → reuse plausible; the user should mention any known API churn in their reprint reason so the subagent's Pass 2 picks it up
  • over 120 days → redo recommended
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
:
  1. Reuse prior research — keep the prior brief; the subagent re-scores prior novel features against current personas
  2. Redo research — re-run Phase 1 from scratch; the subagent still ingests prior novel features as Pass 2(d) input
  3. Show me first — display the prior brief's headline + novel-features list, then re-ask between options 1 and 2
从最新的先前
research.json
中提取
researched_at
字段,并从
.printing-press.json
中提取
printing_press_version
generated_at
字段:
bash
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)
使用
python3
计算研究成果的日历天数,以确保在macOS/Linux上的可移植性,并兼容
generated_at
携带的微秒精度(BSD的
date -f
不支持小数秒;而
python3
在所有支持的平台上都可用):
bash
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)
向用户展示两个信号:研究成果的时长和先前的机器版本。时长阈值是经验法则,而非强制要求:
  • 少于30天 → 复用看起来是安全的
  • 30–120天 → 复用可行;用户应在重印理由中提及任何已知的API变动,以便子代理在阶段2中处理
  • 超过120天 → 建议重做
不要仅根据时长预测API变动——展示信号并让用户自行决定。
/printing-press
中的阶段0二进制版本更新验证会独立处理机器差异;此处无需重复该逻辑。
通过
AskUserQuestion
询问用户:
  1. 复用先前研究成果 — 保留先前的概要;子代理会根据当前用户角色重新评估先前的新增特性
  2. 重做研究 — 从头重新运行阶段1;子代理仍会将先前的新增特性作为阶段2(d)的输入
  3. 先查看内容 — 显示先前概要的标题+新增特性列表,然后再次询问用户选择选项1或2

Phase D — Hand off to
/printing-press

阶段D — 传递给
/printing-press

Invoke
/printing-press <api>
and bundle three things into the prompt:
  1. A header line stating the user already chose to regenerate, so Phase 0's library-check should select "Generate a fresh CLI" and not re-prompt fresh-vs-improve.
  2. Research mode from Phase C (
    reuse
    or
    redo
    ). Phase 0's existing reuse logic consumes this.
  3. The user's freeform reprint reason, verbatim, in a
    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.
调用
/printing-press <api>
并将以下三项内容打包到提示中:
  1. 标题行:说明用户已选择重新生成,因此阶段0的库检查应选择“Generate a fresh CLI”,而非重新提示用户选择全新生成还是优化现有CLI。
  2. 研究模式:来自阶段C的选择(
    reuse
    redo
    )。阶段0现有的复用逻辑会使用此参数。
  3. 用户的自由格式重印理由:原样包含在
    User context
    块中。此内容会作为
    ## User Vision
    纳入概要,并成为新增特性子代理阶段2(e)的输入——例如,当用户提出“I want better MCP support”时,可据此调整头脑风暴方向。
不要传递单独的“此为重印”标记。新增特性子代理会在每次生成时无条件运行,并通过自身的发现代码片段查找先前的研究成果(参见
skills/printing-press/references/novel-features-subagent.md
)。阶段A中填充的路径正是子代理检查的路径;只要存在先前的
research.json
,阶段2(d)就会触发。

After hand-off

传递后

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.
后续流程由printing-press驱动。无需总结其工作——让用户查看实时阶段。
如果
/printing-press
因子代理的预检查终止(概要缺少具体的
Users
/
Top Workflows
内容)而停止,则说明复用的先前概要早于子代理要求的架构。建议用户在阶段C选择Redo research后重新运行流程。