CLI Printing PressBLOCK
Every API has a secret identity. This finds it, absorbs every feature from every competing tool, then builds the GOAT CLI — designed for AI agents first, with SQLite sync, offline search, and compound insight commands.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://github.com/mvanhorn/cli-printing-press/actions/workflows/lint.yml) [](https://github.com/mvanhorn/cli-printing-press/actions/workflows/golden.yml) [](https://github.com/mvanhorn/cli-printing-press/releases) [](go.mod) [](LICENSE)
Nothing is more valuable than time and money. In a world of AI agents, that's speed and token spend. A well-designed CLI is muscle memory for an agent: no hunting through docs, no wrong turns, no wasted tokens. We built the Printing Press to print the best CLIs in the world for agents.
It reads the official API docs, studies every popular community CLI and MCP server, sniffs the web for the APIs nobody published (think Google Flights or Dominos), and applies the power-user playbook Peter Steinberger proved with discrawl and gogcli - local SQLite, compound commands, agent-native flags. It fuses all of that and prints a token-efficient Go CLI plus a Claude Code skill plus an MCP server for any API or any website.
Three CLIs printed by the press, installable today:
- ESPN (sniffed, no official API). "Tonight's NBA playoff games with live score, series state, each team's leading scorer's stat line, and any injury or lineup news from the last 24 hours." Returns everything in one call.
- flight-goat (Kayak nonstop search plus sniffed Google Flights). "Non-stop flights over 8 hours from Seattle for 4 people, Dec 24 to Jan 1, cheapest first." Two sources stitched into one query.
- linear
d770270442d0OBSERVED · 2026-10-22Install
Commands as the repository documents them. They are shown, not run.
git clone https://github.com/mvanhorn/cli-printing-press.git
npx skills add mvanhorn/printing-press-library/cli-skills/pp-shopify -g
npx skills add mvanhorn/printing-press-library/cli-skills/pp-allrecipes -g
git clone [email protected]:mvanhorn/printing-press-library.git "$PUBLISH_REPO_DIR"
git clone https://github.com/mvanhorn/printing-press-library.git "$PUBLISH_REPO_DIR"
git clone "[email protected]:$gh_user/printing-press-library.git" "$PUBLISH_REPO_DIR"
Host compatibility
What the documentation claims. We have not run a compatibility test.
| Host | Status | Notes |
|---|---|---|
| claude-code | mentioned | |
| claude-desktop | mentioned | |
| codex | mentioned | |
| copilot | mentioned | |
| cursor | mentioned | |
| gemini-cli | mentioned | |
| openclaw | mentioned | |
| windsurf | mentioned |
What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
---
name: printing-press-amend
description: >
Amend a published CLI from one of two input sources: (1) dogfood mode mines
the active Claude Code session transcript for friction (missing flags, hand-
rolled API payloads, silent-null returns); (2) direct-input mode accepts
user-supplied asks (rename a command, add commands or feeds, fix a named bug,
optionally sniff the source site for new endpoints). Confirms scope with the
user, plans + executes the fix autonomously, scrubs PII, and opens a PR
against mvanhorn/printing-press-library. Two user-in-loop checkpoints: scope
after capture, PR draft before open.
Trigger phrases: "amend the CLI", "submit a patch", "fix what I just
dogfooded", "open a PR for this CLI", "patch this CLI", "add features to my
CLI", "rename this command", "add these feeds to <cli>", "sniff for new APIs
in <cli>", "amend with these ideas", "use printing-press-amend",
"run printing-press-amend".
version: 0.2.0
min-binary-version: "4.0.0"
context: fork
user-invocable: true
allowed-tools:
- Bash
- Read
- Write
- Edit
- Glob
- Grep
- AskUserQuestion
---
# /printing-press-amend
Turn a dogfood session into a PR for a printed CLI in the public library.
```bash
/printing-press-amend # auto-detect target CLI from session
/printing-press-amend superhuman # explicit short name
/printing-press-amend superhuman-pp-cli
/printing-press-amend "$PRESS_LIBRARY/superhuman"
```
This skill lives in this repo (the machine) and acts on a printed CLI in the public library. It is sibling to `/printing-press-publish` (adds a new CLI), `/printing-press-polish` (improves a CLI pre-publish), and `/printing-press-retro` (reflects on the machine itself). None of those cover post-publish CLI amendments driven by real-session friction.
The artifact this skill produces is semantically a "patch" (in the git/PR sense), tracked by the public library's `.printing-press-patches/` directory (one file per patch). Inline `// PATCH(...)` source comments are optional navigation aids when they make a customized site easier to grep. The slash-skill name is `amend` to disambiguate from the existing `cli-printing-press patch` binary subcommand (which AST-injects pre-defined features — different mechanism, different intent).
## Setup
Before doing anything else:
<!-- 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
if ! command -v go >/dev/null 2>&1; then
echo ""
echo "[setup-error] Go toolchain not found."
echo ""
echo "This Printing Press flow runs Go-based build or validation commands."
echo "Install Go 1.26.10 or newer from https://go.dev/dl/, then verify with:"
echo " go version"
echo "Then re-run this skill."
echo ""
return 1 2>/dev/null || exit 1
fi
echo "PRINTING_PRESS_BIN=$PRINTING_PRESS_BIN"
_pp_semver_lt() {
if [ -z "${PP_SEMVER_A:-}" ] || [ -z "${PP_SEMVER_B:-}" ]; then
echo "[setup-error] semver comparison inputs are missing." >&2
return 2
fi
awk -v a="${PP_SEMVER_A:-}" -v b="${PP_SEMVER_B:-}" 'BEGIN {
split(a, x, "."); split(b, y, ".")
for (i = 1; i <= 3; i++) {
if ((x[i] + 0) < (y[i] + 0)) exit 0
if ((x[i] + 0) > (y[i] + 0)) exit 1
}
exit 1
}'
}
_pp_go_version_norm() {
printf '%s\n' "${PP_GO_VERSION_INPUT:-}" | sed -nE 's/.*go([0-9]+)\.([0-9]+)(\.([0-9]+))?.*/\1.\2.\4/p' | sed -E 's/\.$/.0/'
}
_pp_check_go_currency() {
_pp_go_installed="$(PP_GO_VERSION_INPUT="$(go env GOVERSION 2>/dev/null)" _pp_go_version_norm)"
_pp_go_required="$(PP_GO_VERSION_INPUT="$(go version "$PRINTING_PRESS_BIN" 2>/dev/null)" _pp_go_version_norm)"
PP_SEMVER_A="$_pp_go_installed"
PP_SEMVER_B="$_pp_go_required"
if [ -z "$_pp_go_installed" ] || [ -z "$_pp_go_required" ] || ! _pp_semver_lt; then
return 0
fi
echo ""
if [ "${GOTOOLCHAIN:-auto}" = "local" ]; then
echo "[setup-error] Go $_pp_go_required or newer is required by this cli-printing-press binary (installed: $_pp_go_installed)."
echo "GOTOOLCHAIN=local disables automatic toolchain downloads, so later Go quality gates would fail."
echo "Install Go $_pp_go_required or newer from https://go.dev/dl/, or unset GOTOOLCHAIN."
echo ""
return 1
fi
echo "[go-toolchain-old] Go $_pp_go_required or newer is required by this cli-printing-press binary (installed: $_pp_go_installed)."
echo "PRESS_GO_INSTALLED=$_pp_go_installed"
echo "PRESS_GO_REQUIRED=$_pp_go_reqTrust audit
BLOCKgrade F · trust 41/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (5 observation(s))
- Network
- declared (2 observation(s))
- Shell
- declared (1 observation(s))
- Dependencies
- pinned
- Secrets in source
- found
Findings (25)
Exec(query string, args ...any) (sql.Result, error)
- If it reports `No installed skills found matching: ...`, continue without blocking. The current skill is already running, so absence from the global open-agent-skills registry usually means this ses
"url": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAwcHgiICBoZWlnaHQ9IjIwMHB4IiAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIG
const secret = "body-borne-client-secret"
const secret = "client-secret-must-not-leave-origin"
{"slack bot token", "xoxb-1234-5678-abcdef", "xoxb..."},body := `{"note":"Bearer sk_live_abcdefghijklmnop"}`Read `references/transcript-parsing.md` for the full procedure. Summary of what this sub-section does:
plans + executes the fix autonomously, scrubs PII, and opens a PR against mvanhorn/printing-press-library.
.golangci.yml
.goreleaser.yaml
.mergify.yml
.release-please-manifest.json
.printing-press.json
mcp-handler-pre-marshaled-body-base64-wire-payload-2026-05-13.md
hostile := "x\") ) ) or __import__(\"os\").system(\"touch " + sentinel + "\")#"
{name: "path traversal", api: "../../.ssh/evil", wantErr: "path traversal"},REPO_SKILLS="$SCRIPT_DIR/../../skills"
skillsRoot := "../../skills"
filepath.Clean("../../internal/cli/codex_model_invariant_test.go"): true,rel := strings.TrimPrefix(path, "../../")
{name: "path traversal", api: "../../.ssh/evil", wantErr: "path traversal"},if _, err := persistedQueryRegistryPath("../../../tmp/exfil.json"); err == nil || !strings.Contains(err.Error(), "must be absolute") {if _, err := persistedQueryRegistryPath("relative-sentinel/exfil.json"); err == nil || !strings.Contains(err.Error(), "must be absolute") {name: "normal Cloudflare page with passive beacon",
Gates applied: instruction_override, no_behavioural_pass.
d770270442d0full audit observations/trust-audit/skill/mvanhorn__printing-press-catalog.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-22 | d770270442d0 | BLOCK | F | 41 | first audit |
Questions
What does the printing-press-catalog — mvanhorn/cli-printing-press skill do?
Every API has a secret identity. This finds it, absorbs every feature from every competing tool, then builds the GOAT CLI — designed for AI agents first, with SQLite sync, offline search, and compound insight commands.
Is printing-press-catalog — mvanhorn/cli-printing-press safe to install?
No — not without reading the findings first. The audit graded it F (41/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What can printing-press-catalog — mvanhorn/cli-printing-press access on my machine?
The audit observed that it reaches the network, runs shell commands and reads or writes files. Each of those is consistent with what it says it does. Secrets in the source: found — see the findings.
Which assistants does printing-press-catalog — mvanhorn/cli-printing-press work with?
Its documentation mentions claude-code, claude-desktop, codex, copilot, cursor, gemini-cli, openclaw and windsurf. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (d770270442d0), read on 2026-10-22. The repository is watched, and a new audit runs when it changes — this is the first audit.
Add this badge to your README
Shows this page's audit result and links back to it. It updates when the audit does.
[](https://modelsatlas.com/skills/mvanhorn/printing-press-catalog/)
Not your listing, or something out of date? Claim or update your listing.