cli-printing-press is a free, open source api development & testing project written in Go and released under MIT. It has 4,721 GitHub stars, 510 forks and 65 open issues, and was last pushed 16 hours ago. On this registry it ranks #52 of 154 tracked projects in API Development & Testing, with 5 head-to-head comparisons available.

What is cli-printing-press?

CLI Printing Press is a Go tool that reads an API's official documentation, studies competing community CLIs and MCP servers, sniffs out undocumented endpoints, and prints a token-efficient Go CLI alongside a Claude Code skill and an MCP server — built for AI agents first, and for the developers who wire those agents up.

What it is

CLI Printing Press is a CLI generator and agent-tooling project written in Go under the MIT licence. It lives in the developer tools and API development ecosystem, where it replaces the manual work of hand-writing a client for an API: reading the specs, reverse-engineering undocumented endpoints, and assembling a command surface an agent can drive without hunting through documentation. The README describes it as reading the official API docs, studying every popular community CLI and MCP server, and applying the power-user playbook proven by discrawl and gogcli — local SQLite, compound commands, and agent-native flags. It fuses those inputs and emits a Go CLI, a Claude Code skill, and an MCP server for any API or any website.

The concrete problem it solves is token spend and wrong turns. An agent working against a raw API burns context on documentation lookup and retries; a purpose-printed CLI turns the same work into a single call. The README's examples make the shape clear: flight-goat stitches Kayak nonstop search and sniffed Google Flights into one query, linear-pp-cli answers in 50ms against a local SQLite mirror, and the ESPN press — built with no official API at all — returns a game preview, live score, series state, leading scorer, and injury news in one invocation.

Key capabilities

  • Reads official API documentation and OpenAPI specifications as the starting point for generation.
  • Reverse-engineers APIs that were never published, following the pattern used to build the ESPN CLI from sniffed endpoints and the flight-goat CLI from sniffed Google Flights.
  • Emits three artifacts per target: a token-efficient Go CLI, a Claude Code skill, and an MCP server.
  • Provides a local SQLite mirror, offline search, and compound insight commands, as seen in linear-pp-cli answering in 50ms.
  • Ships agent-native flags and a /printing-press skill that drives the binary behind the scenes.
  • Splits installation with --cli-only and --skills-only for users who want only the generator or only the skills.
  • Publishes a browsable catalog of printed CLIs at printingpress.dev and in the Printing Press Library, organized by category, most with full MCP servers.

Who uses it and how

  • Claude Code users, who get the best-tested experience and are the default install target for the skills.
  • Codex users, who install the skills with --agent codex and follow docs/CODEX.md for verification.
  • Cursor users, who follow docs/CURSOR.md to install a printed CLI, attach the matching skill, and handle auth.
  • Teams that need fast local queries, where the printed CLI answers against a SQLite mirror instead of the live API.
  • Agents that need an MCP server for a target that only exposes a website rather than a documented API.

Getting started

Install with the bootstrap script, curl -fsSL https://raw.githubusercontent.com/mvanhorn/cli-printing-press/main/scripts/install.sh | bash, which runs go install for the generator binary and then refreshes the skills through skills@latest add --skill '*'. Prerequisites are Go 1.26.6 or newer, Claude Code or another skills-supported agent, and Node/npm for npx.

How it compares

No list of paid products replaced by this project is provided in the facts. Among the tools the README names, the Printing Press sits above discrawl and gogcli rather than beside them: those projects proved the local SQLite and compound-command playbook on single targets, while the Printing Press generalizes that playbook into a generator that prints CLIs, skills, and MCP servers for arbitrary APIs. It also overlaps with the community CLIs and MCP servers it studies, but it consumes them as research input instead of competing with them feature by feature.

When to use it — and when not to

A self-hoster must supply Go 1.26.6 or newer, a Claude Code or other skills-supported agent, and Node/npm, and must install both the binary and the skills, since the skills alone have nothing to call and the binary alone skips the curated agent loop. Anyone unwilling to run an agent session, or expecting a standalone command-line utility with no agent dependency, should not pick it up. The trade-offs visible in the facts are a README excerpt that is sparse on architecture, 65 open issues, and a skills workflow tested primarily with Claude Code, with Codex support offered as something to try.

project readme (upstream, from github) — read inline

CLI Printing Press

CI Golden Release Go 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-pp-cli (50ms against a local SQLite mirror). "Every blocked issue whose blocker has been stuck for a week." Compound queries the API can't answer.

Browse the full catalog of printed CLIs at printingpress.dev or in the Printing Press Library, organized by category, most with full MCP servers.

Codex users: see docs/CODEX.md to install the Printing Press skills with --agent codex, verify the install, and understand how that differs from /printing-press codex.

Cursor users: see docs/CURSOR.md for how to install a printed CLI, attach the matching skill, handle auth, and choose CLI vs MCP when your repo does not already document a workflow.

Install

You need both the binary and the Printing Press skills. The skills (/printing-press ) are the primary interface; they drive the binary behind the scenes.

The binary alone works (research, generation, verification, scoring) but skips the curated agent loop. The skills alone have nothing to call. Install both.

Prerequisites: Go 1.26.6 or newer, Claude Code or another skills-supported agent, and Node/npm for npx. The skills are tested with Claude Code; install for Codex with --agent codex when you want to try the same slash-command workflow there. Use Claude Code for the best-tested experience.

1. Install

curl -fsSL https://raw.githubusercontent.com/mvanhorn/cli-printing-press/main/scripts/install.sh | bash

The installer runs go install for the generator binary, then refreshes all Printing Press skills through skills@latest add --skill '*'. Restart or reload your agent session after it completes so the refreshed skills are loaded.

Use --cli-only or --skills-only when you only want one side:

curl -fsSL https://raw.githubusercontent.com/mvanhorn/cli-printing-press/main/scripts/install.sh | bash -s -- --cli-only
curl -fsSL https://raw.githubusercontent.com/mvanhorn/cli-printing-press/main/scripts/install.sh | bash -s -- --skills-only

Claude Code is the default install target. To install or refresh the skills for Codex instead, pass --agent codex:

curl -fsSL https://raw.githubusercontent.com/mvanhorn/cli-printing-press/main/scripts/install.sh | bash -s -- --skills-only --agent codex
npx -y skills@latest list -g -a codex --json

See docs/CODEX.md for the Codex-specific notes.

Verify with cli-printing-press --version. If install fails, confirm Go 1.26.6 or newer is installed, Node/npm is installed for npx, and $GOPATH/bin is on your PATH.

Older releases installed a generator binary named printing-press. That legacy entrypoint still works for compatibility, but the canonical generator command is now cli-printing-press so the public library installer can own printing-press list, printing-press search, and printing-press install.

Manual install

Install or update the binary:

go install github.com/mvanhorn/cli-printing-press/v4/cmd/cli-printing-press@latest

Use Vercel's open-agent-skills CLI to install the Printing Press skills from this repo into a supported agent. Claude Code is the default and tested path:

npx -y skills@latest add mvanhorn/cli-printing-press/skills --skill '*' -g -a claude-code -y

For Codex:

npx -y skills@latest add mvanhorn/cli-printing-press/skills --skill '*' -g -a codex -y
npx -y skills@latest list -g -a codex --json

To refresh the skills later without naming individual skills, rerun the installer in skills-only mode:

curl -fsSL https://raw.githubusercontent.com/mvanhorn/cli-printing-press/main/scripts/install.sh | bash -s -- --skills-only

Restart or reload the target agent after refreshing skills so the new skill text is loaded.

Once installed, you can start Claude Code from any folder. Codex users should start a fresh Codex session after installing or refreshing skills.

Developer path: load skills from a clone

Use this if you're editing the Printing Press itself and want local skill changes to take effect on the next session start.

git clone https://github.com/mvanhorn/cli-printing-press.git
cd cli-printing-press
claude --plugin-dir .          # load this repo's skills directly
claude --plugin-dir . -w       # ...in a new git worktree (parallel runs)

For a persistent local setup that survives restarts and also loads in background sessions, see Local Plugin Development.

2. Start a printing session

claude

Then inside Claude Code:

/printing-press <app-name>

For example:

/printing-press Notion                       # Print a CLI for an API by name
/printing-press https://postman.com/explore  # ...or point at a website (no spec needed)
/printing-press-reprint notion               # Reprint an existing CLI under the latest machine

/printing-press drives the cli-printing-press binary you installed — research, generation, scoring, and shipcheck all run through it. Two parts, one workflow.

One command. Lean loop. Produces a Go CLI plus an MCP server that absorbs every feature from every competing tool, then transcends with compound use cases only possible with local data. REST, GraphQL, or browser-sniffed traffic. No OpenAPI spec required.

Each run produces two binaries (-pp-cli plus -pp-mcp), research documents, verification proofs, and a Quality Score.

Where output goes

By default, active and published output are separated:

  • Active managed runs work in ~/printing-press/.runstate//runs//working/-pp-cli
  • Published CLIs go to ~/printing-press/library/
  • Archived manuscripts go to ~/printing-press/manuscripts///
  • Manuscripts are split into research/, proofs/, discovery/, and pipeline/

`` is derived from the current git checkout path, so parallel worktrees do not stomp on each other. If you pass --output, that overrides the generated CLI location for that command.

Codex mode (60% fewer Opus tokens)
/printing-press HubSpot codex    # Offload code generation to Codex CLI
/printing-press HubSpot          # Standard Opus mode (default)

When you add codex, Phase 3's code generation tasks are delegated to Codex CLI. Claude stays the brain (research, planning, scoring, review). Codex does the hands (writing Go code from scoped prompts). Same quality, 60% fewer Opus tokens. If Codex fails 3 times in a row, the press falls back to doing it locally, no manual intervention needed.

Improve an existing CLI (Polish)

Targ

readme truncated — read the full docs on github

Frequently asked questions

Is cli-printing-press free to use?

cli-printing-press is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does cli-printing-press 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 S

What is cli-printing-press written in?

cli-printing-press is primarily written in Go. Its source is publicly available at https://github.com/mvanhorn/cli-printing-press, and it has 4,721 GitHub stars.