
Printing Press Score
Score a generated Go CLI against the Steinberger bar and compare two versions side-by-side before you ship.
Overview
printing-press-score is an agent skill for the Ship phase that scores generated CLIs against the Steinberger bar and compares two builds side-by-side.
Install
npx skills add https://github.com/mvanhorn/cli-printing-press --skill printing-press-scoreWhat is this skill?
- Rescore the current CLI, score by name, or score by filesystem path
- Side-by-side compare two CLIs with `notion-pp-cli-4 vs notion-pp-cli-2` syntax
- Steinberger bar scoring via the cli-printing-press binary (min v4.0.0)
- Setup contract verifies binary on PATH and supports in-repo local builds
- Requires Go 1.26.4+ and Bash/Read/Glob/Grep tooling
- cli-printing-press min-binary-version 4.0.0
- Go 1.26.4 or newer required
Adoption & trust: 1.9k installs on skills.sh; 3.1k GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You generated a CLI with an agent but have no consistent rubric to know if it is shippable or which revision is better.
Who is it for?
Solo builders iterating on agent-generated Go CLIs who already use cli-printing-press v4 and want repeatable quality gates.
Skip if: Projects that are not CLI-shaped or teams without Go 1.26.4+ and the printing-press binary on PATH.
When should I use this skill?
Run /printing-press-score to rescore, score by name or path, or compare two CLIs after generation.
What do I get? / Deliverables
You get a Steinberger-bar score for the target CLI and optional head-to-head comparison so you can pick the revision to ship or iterate.
- Steinberger bar score report
- Optional two-CLI comparison output
Recommended Skills
Journey fit
Printing-press-score belongs on the Ship shelf because it judges CLI quality immediately before release, not while you are still ideating features. Review is the right subphase for structured rubrics that compare artifacts and gate whether a CLI meets a published quality bar.
How it compares
Use this Steinberger scorer instead of generic lint-only passes that ignore CLI UX conventions.
Common Questions / FAQ
Who is printing-press-score for?
It is for developers shipping command-line tools—especially those produced with printing-press—who want agent-assisted rescoring and A/B CLI comparison.
When should I use printing-press-score?
Use it in Ship during review when a CLI is code-complete, before release tags, or whenever you need to compare two generated variants on the same rubric.
Is printing-press-score safe to install?
The skill runs local Bash and reads your repo; review the Security Audits panel on this page and only point it at CLIs you trust on disk.
SKILL.md
READMESKILL.md - Printing Press Score
# /printing-press-score Score generated CLIs against the Steinberger bar. Supports rescoring, scoring by name/path, and comparing two CLIs. ## Quick Start ``` /printing-press-score # rescore current CLI /printing-press-score notion-pp-cli-4 # score by name /printing-press-score ~/my-cli # score by path /printing-press-score notion-pp-cli-4 vs notion-pp-cli-2 # compare two ``` ## Prerequisites - Go 1.26.4 or newer installed - `cli-printing-press` binary on PATH (install with `go install github.com/mvanhorn/cli-printing-press/v4/cmd/cli-printing-press@latest`) ## Step 0: Setup Before any other commands, run the setup contract to verify the cli-printing-press binary is on PATH and initialize scope variables: <!-- PRESS_SETUP_CONTRACT_START --> ```bash # min-binary-version: 4.0.0 # Derive scope first — needed for local build detection _scope_dir="$(git rev-parse --show-toplevel 2>/dev/null || echo "$PWD")" _scope_dir="$(cd "$_scope_dir" && pwd -P)" # Prefer local build when running from inside the printing-press repo. _press_repo=false if [ -x "$_scope_dir/cli-printing-press" ] && [ -d "$_scope_dir/cmd/cli-printing-press" ]; then _press_repo=true export PATH="$_scope_dir:$PATH" echo "Using local build: $_scope_dir/cli-printing-press" elif ! command -v cli-printing-press >/dev/null 2>&1; then if [ -x "$HOME/go/bin/cli-printing-press" ]; then echo "cli-printing-press found at ~/go/bin/cli-printing-press but not on PATH." echo "Add GOPATH/bin to your PATH: export PATH=\"\$HOME/go/bin:\$PATH\"" else echo "cli-printing-press binary not found." echo "Install with: go install github.com/mvanhorn/cli-printing-press/v4/cmd/cli-printing-press@latest" fi return 1 2>/dev/null || exit 1 fi # Resolve and emit the absolute path the agent must use for every later # `cli-printing-press` invocation. `export PATH` above only affects this one # Bash tool call; subsequent calls open a fresh shell and resolve bare # `cli-printing-press` against the user's default PATH, where a stale global # can silently shadow the local build. The agent captures this marker and # substitutes the absolute path into every later invocation. if [ "$_press_repo" = "true" ]; then PRINTING_PRESS_BIN="$_scope_dir/cli-printing-press" else PRINTING_PRESS_BIN="$(command -v cli-printing-press 2>/dev/null || true)" fi echo "PRINTING_PRESS_BIN=$PRINTING_PRESS_BIN" PRESS_BASE="$(basename "$_scope_dir" | tr '[:upper:]' '[:lower:]' | sed -E 's/[^a-z0-9_-]/-/g; s/^-+//; s/-+$//')" if [ -z "$PRESS_BASE" ]; then PRESS_BASE="workspace" fi PRESS_SCOPE="$PRESS_BASE-$(printf '%s' "$_scope_dir" | shasum -a 256 | cut -c1-8)" PRESS_HOME="${PRINTING_PRESS_HOME:-$HOME/printing-press}" PRESS_RUNSTATE="$PRESS_HOME/.runstate/$PRESS_SCOPE" PRESS_LIBRARY="$PRESS_HOME/library" PRESS_MANUSCRIPTS="$PRESS_HOME/manuscripts" PRESS_CURRENT="$PRESS_RUNSTATE/current" mkdir -p "$PRESS_RUNSTATE" "$PRESS_LIBRARY" "$PRESS_MANUSCRIPTS" "$PRESS_CURRENT" ``` <!-- PRESS_SETUP_CONTRACT_END --> After running the setup contract, capture the `PRINTING_PRESS_BIN=<abs-path>` line from stdout. **Every subsequent `cli-printing-press ...` invocation in this skill must use that absolute path** (substitute the value, not the literal `$PRINTING_PRESS_BIN` token) — `export PATH` above only affects the single Bash tool call it runs in, so later calls open a fresh shell where bare `cli-printing-press` resolves against the user's default `PATH` and a stale global can shadow the local build. After capturing the binary path, check binary version compatibility. Read the `min-binary-version` field from this skill's YAML frontmatter. Run `<PRINTING_PRESS_BIN> version --json` and parse