Printing Press - Agent-Native CLIs from a Single Prompt
One prompt prints a token-efficient Go CLI + a Claude Code skill + an OpenClaw skill + an MCP server for any API, app, or site - even ones with no public API. It bakes Peter Steinberger's discrawl/gogcli playbook (local SQLite mirror, compound commands, agent-native flags) into every binary. By Matt Van Horn, the same author as Security and Review Skills.
What it does
Printing Press (mvanhorn/cli-printing-press, MIT, ~3.9K GitHub stars) is a generator that reads an API's official docs, studies every popular community CLI/MCP server for it, and sniffs the web for unpublished APIs (Google Flights, Dominos). It fuses all of that and prints: a Cobra Go CLI (<api>-pp-cli), an MCP server (<api>-pp-mcp), a Claude Code skill, and an OpenClaw skill - from one spec, one HAR file, or just a URL. No OpenAPI spec required. Source: github.com/mvanhorn/cli-printing-press README, 2026-07-04
Current source snapshot on 2026-07-04: main HEAD 4a2b02329e71e64cc7ffe14ff9af569d0dfa3495, latest repo tag v4.9.0, MIT license, 3,855 stars, 413 forks. The npm package @mvanhorn/printing-press exists at 0.1.5, but the documented install path remains the Go module / Claude skill route. Source: GitHub API; git ls-remote; npm registry, 2026-07-04
The driver is the /printing-press <app> slash command inside Claude Code; it runs the printing-press Go binary behind the scenes (research → generate → score → shipcheck). "Other harnesses like Codex may work but aren't tested. Use Claude Code for the best experience." Source: README Install, 2026-06-01
Why these CLIs win (the playbook)
- Local-first data layer. High-gravity resources get domain-specific SQLite tables (not JSON blobs), FTS5 full-text search, and incremental sync with cursor tracking.
syncpulls data down;searchfinds it in ~ms;sqlqueries it directly. All offline. Source: README, 2026-06-01 - Compound commands no wrapper can do. Once data lives in SQLite,
stale,health,bottleneck,reconcilejoin across resources and analyze history - a stateless API wrapper literally cannot. (linear-pp-cli: "every blocked issue whose blocker has been stuck a week," 50ms.) Source: printingpress.dev, 2026-06-01 - Agent-native by default. Auto-JSON when piped (no
--jsonflag),--compactdrops to high-gravity fields (id/name/status/timestamps) for 60-80% fewer tokens, typed exit codes (0ok,2usage,3not found,4auth,5API,7rate-limited) let agents self-correct in one retry without parsing error text,--dry-runfor safe exploration. "Every flag exists because an AI agent will call it thousands of times a day." Source: README, 2026-06-01 - Dual interface from one spec. Same
internal/client,internal/store, and auth power both the CLI (shell agents) and the MCP server (IDE agents). Zero code duplication. See MCP as the Integration Standard for the CLI-vs-MCP tradeoff. Source: README, 2026-06-01 - Verified, not vibes. Four mechanical gates before ship: two-tier scorecard (infrastructure + domain correctness, Grade A = 85+), structural dogfood, proof-of-behavior (path/flag/pipeline/auth proofs), and a read-only live API smoke test.
The Non-Obvious Insight (NOI)
The creative DNA of every generated CLI: a one-sentence reframe of what an API actually is. "Discord isn't a chat app - it's a searchable knowledge base." "Linear isn't an issue tracker - it's a team behavior observatory." "Stripe isn't a payment processor - it's a business health monitor." Phase 0 cannot complete without an NOI; if the LLM can't write one, the research wasn't deep enough. Source: README "The non-obvious insight," 2026-06-01
The Library
Published CLIs live in the Printing Press Library (17 categories, browsable at printingpress.dev, most with full MCP servers): espn-pp-cli, flightgoat-pp-cli, linear-pp-cli, kalshi-pp-cli, recipe-goat-pp-cli, and dozens more across Commerce (21), Developer Tools (23), Cloud, Devices, Travel, Media, CRM. Browse and install community CLIs without printing your own. Source: printingpress.dev, README Library, 2026-06-01
Install
# 1. Binary (needs Go 1.26.3+)
go install github.com/mvanhorn/cli-printing-press/v4/cmd/printing-press@latest
# 2. Skills (recommended: clone for bleeding edge; git pull = update)
git clone https://github.com/mvanhorn/cli-printing-press.git
claude --plugin-dir . # load skills; -w for an isolated worktree
# ...or skills-only via Vercel's open-agent-skills:
npx skills add mvanhorn/cli-printing-press/skills -g -a claude-code -y
Then: /printing-press Notion (by name), /printing-press https://postman.com/explore (sniff a site), /printing-press HubSpot codex (offload Phase 3 to Codex CLI, ~60% fewer Opus tokens). printing-press auth doctor reports which printed-CLI env vars are set/missing. Source: README Install + Codex mode, 2026-06-01
Why this is enforced for Kevin's agents
PrintingPress is the agent-native service-access layer: when an agent needs to touch an API/app/site that Kevin hits repeatedly, a printed -pp-cli beats raw HTTP and beats a generic OpenAPI→MCP wrapper (100x fewer tokens than MCP tool defs, offline SQLite, compound queries). Printing one when none exists is the No One-Off Work rule applied to integrations. Routing lives in Agent-Native CLIs and config/cursor/rules/agent-native-cli.mdc. Auth for printed CLIs on a headless/second Mac is handled by Agent Cookie - Session State Sync for the Agent's Second Mac (the secrets bus reads <cli> tokens). Source: User directive, 2026-06-01
Limitations
Requires Go 1.26.3+ and Claude Code (no standalone distribution). Generated CLIs are domain-shaped power-user surfaces, not full vendor-CLI replacements. Browser-sniff needs a manual capture (point a browser or import a HAR; it doesn't crawl autonomously). Live verify is read-only (GET only, never mutates). Source: README Limitations, 2026-06-01
Timeline
- 2026-06-02 | @mvanhorn X article + thread on daily Claude/Codex stack ($8–10k/mo extra usage, Claude brain + Codex muscle). 9,823 bookmarks. Source: X/@mvanhorn thread, 2026-06-02
- 2026-07-04 | Reviewed EXM's Hermes-stack endorsement and refreshed source state. Printing Press remains the service-access layer in the Matt Van Horn tool trio with Security and Review Skills and Agent Cookie - Session State Sync for the Agent's Second Mac. Source: X/@EXM7777, 2026-06-01; Source: GitHub
mvanhorn/cli-printing-press, 2026-07-04 - 2026-06-01 | Captured and enforced. Created tool page; ranked in Agent-Native CLIs,
tool-hierarchy.mdc, andSKILL-RESOLVER.md; newagent-native-cli.mdcalways-on rule. Kevin: "equip your agents with PrintingPress + Agent Cookie - completely different experience with agents." Source: User, 2026-06-01