printing-press — Claude Code skill: what it does, how to install
Generates shippable Go CLI binaries from OpenAPI, HAR, or Postman specs through an automated 21-phase research, build, and test loop.
npx skills add mvanhorn/cli-printing-press --skill printing-press -a claude-codeWhat printing-press does
This skill guides coding agents through an end-to-end pipeline to scaffold Go CLI tools from raw API specs or domain names. It follows 21 deterministic phases, covering documentation discovery, auth reconnaissance, code generation, compilation, and live endpoint verification. Finished binaries land in $PRESS_LIBRARY/ alongside structured run logs in $PRESS_MANUSCRIPTS/.
Execution relies on the printing-press binary version 4.33.7 or higher and an active Go toolchain. The workflow strictly bars untested releases: passing go build is treated as a structural check, requiring passes against a live dogfood target matrix before marking the run done.
What it helps with
- generate a production-ready Go CLI from an OpenAPI spec
- convert HAR captures or Postman collections into command-line tools
- validate API reachability and auth flows before writing code
- run automated dogfood test matrices against real service endpoints
Example prompts for the agent
- Build a Go CLI for the Stripe API using this OpenAPI spec
- Wrap this HAR file into a working CLI tool
- Set up an API connector for api.github.com using printing-press
How to install printing-press
1Skills CLI (Vercel)
npx skills add mvanhorn/cli-printing-press --skill printing-press -a claude-code2Manually: put the files in place
~/.claude/skills/printing-press/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/printing-press/
1Skills CLI (Vercel)
npx skills add mvanhorn/cli-printing-press --skill printing-press -a codex2Manually: put the files in place
.agents/skills/printing-press/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add mvanhorn/cli-printing-press --skill printing-press -a cursor2Manually: put the files in place
.cursor/skills/printing-press/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install mvanhorn/cli-printing-press printing-press2Manually: put the files in place
.github/skills/printing-press/SKILL.md1Skills CLI (Vercel)
npx skills add mvanhorn/cli-printing-press --skill printing-press -a gemini-cli2Platform CLI
gemini skills install https://github.com/mvanhorn/cli-printing-press --path skills/printing-pressManually: put the files in place
.devin/skills/printing-press/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add mvanhorn/cli-printing-press --skill printing-press -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set7
The whole set →Similar
Questions about printing-press
How to install printing-press in Claude Code?
Run npx skills add mvanhorn/cli-printing-press --skill printing-press -a claude-code.
What does printing-press do?
It automates Go CLI generation from API specifications, including OpenAPI, Postman collections, and HAR files. The skill manages documentation lookup, code scaffolding, compilation, and live API smoke tests.
What prerequisites are required for printing-press?
You need an installed Go toolchain and the printing-press binary version 4.33.7 or later. The workflow also needs network access for documentation lookups and live target testing.
Source text
SKILL.md · MIT
---
name: printing-press
description: Set up a new integration, connector, or CLI binding for any API. Wrap or generate a ship-ready Go CLI from an OpenAPI, HAR, or Postman spec via the lean research -> generate -> build -> shipcheck loop. Use when the user says build a CLI, wrap this API, set up a new integration, add a connector, integrate with a service, or names an API by domain.
version: 3.0.0
min-binary-version: "4.33.7"
allowed-tools:
- Bash
- Read
- Write
- Edit
- Glob
- Grep
- WebFetch
- WebSearch
- AskUserQuestion
- Agent
created_by: user
---
# /printing-press
**Result:** A working Go CLI in `$PRESS_LIBRARY/<api-slug>/`, plus up to five dense
manuscripts archived to `$PRESS_MANUSCRIPTS/<api-slug>/<run-id>/`: research brief,
absorb manifest, build log, shipcheck proof, and live smoke proof when live testing ran.
**Next consumer:** The user, who runs the CLI or ships it, and the sibling skills that
take it from here: `printing-press-polish` for a second pass, `printing-press-publish`
for the public library, `printing-press-retro` for findings against the Press itself.
**Done:** Every feature approved at the absorb gate is implemented, shipcheck reached
ship, the live dogfood matrix ran against real targets, the CLI is promoted, and the
receipt ledger closes on the last phase.
**Intent:** The best useful CLI for an API without an hour of phase theater. Optimize
for time-to-ship, not time-to-document: reuse prior research when it is already good
enough, run the cheap high-signal checks early, fix blockers before polish.
## Boundaries
- **Never leak a secret.** API key **values**, token **values**, passwords, and session
cookies must never reach source, manuscripts, proofs, READMEs, HARs, receipts, or
anything committed. Env var **names** and placeholders are safe. Phase 5.6 and publish
apply [references/secret-protection.md](references/secret-protection.md).
- **Never ship untested.** `go build` and `verify` pass-rate are structural signals, not
correctness signals. A CLI that has not been through the live matrix in
[phases/18-dogfood-testing.md](phases/18-dogfood-testing.md) is not shippable, and a
bug a 1-3 file edit resolves is fixed now, not filed for v0.2.
- **Never quote human-time estimates** for sub-tasks ("~15-30 min", "quick fix"). The
agent does the work, not the user; describe scope instead. The carve-outs are the
genuinely time-bound: the whole run (30-60 minutes), tool installs, and the
network-bound printing-press subcommands.
- **Never sequence from memory.** The receipt ledger decides which phase comes next; see
[references/phase-receipts.md](references/phase-receipts.md).
## Authority
Invocation authorizes reading and writing under `$PRESS_RUNSTATE/`, `$PRESS_LIBRARY/`,
and `$PRESS_MANUSCRIPTS/`, running the printing-press binary and the Go toolchain, and
researching the API on the open web. It does not authorize publishing to the public
library, opening a pull request, or writing anywhere else on the user's machine.
## Steps
Enter [phases/01-preflight.md](phases/01-preflight.md) before any user-facing prompt,
then read [references/run-resolution.md](references/run-resolution.md): it resolves the
API target, the briefing context, and the source priority for combo runs.
**Never execute a phase from memory. When you enter a phase, Read its file from phases/ first.**
Code orchestration in [phases/10-generate.md](phases/10-generate.md) serves reads on `<api>_read` and previews state-changing `<api>_execute` calls until `confirm` is boolean `true`.
| Step | File |
|---:|---|
| 1 | [phases/01-preflight.md](phases/01-preflight.md) |
| 2 | [phases/02-run-initialization.md](phases/02-run-initialization.md) |
| 3 | [phases/03-resolve-and-reuse.md](phases/03-resolve-and-reuse.md) |
| 4 | [phases/04-research-brief.md](phases/04-research-brief.md) |
| 5 | [phases/05-pre-browser-sniff-auth-intelligence.md](phases/05-pre-browser-sniff-auth-intelligence.md) |
| 6 | [phases/06-browser-sniff-gate.md](phases/06-browser-sniff-gate.md) |
| 7 | [phases/07-crowd-sniff-gate.md](phases/07-crowd-sniff-gate.md) |
| 8 | [phases/08-ecosystem-absorb-gate.md](phases/08-ecosystem-absorb-gate.md) |
| 9 | [phases/09-api-reachability-gate.md](phases/09-api-reachability-gate.md) |
| 10 | [phases/10-generate.md](phases/10-generate.md) |
| 11 | [phases/11-build-the-goat.md](phases/11-build-the-goat.md) |
| 12 | [phases/12-shipcheck.md](phases/12-shipcheck.md) |
| 13 | [phases/13-sync-param-drop-gate.md](phases/13-sync-param-drop-gate.md) |
| 14 | [phases/14-agentic-skill-review.md](phases/14-agentic-skill-review.md) |
| 15 | [phases/15-readme-skill-agents-correctness-audit.md](phases/15-readme-skill-agents-correctness-audit.md) |
| 16 | [phases/16-agentic-output-review.md](phases/16-agentic-output-review.md) |
| 17 | [phases/17-local-code-review.md](phases/17-local-code-review.md) |
| 18 | [phases/18-dogfood-testing.md](phases/18-dogfood-testing.md) |
| 19 | [phases/19-polish.md](phases/19-polish.md) |
| 20 | [phases/20-promote-and-archive.md](phases/20-promote-and-archive.md) |
| 21 | [phases/21-next-steps.md](phases/21-next-steps.md) |
Follow each file's final `Next:` pointer, and record the receipt handoff each phase
names. Late procedure lives in the phase file or a role-named reference it loads
([references/phase-receipts.md](references/phase-receipts.md), [references/codex-delegation.md](references/codex-delegation.md),
[references/fetch-docs.md](references/fetch-docs.md)). Do not restate those files here.
© mvanhorn · MIT · mvanhorn/cli-printing-press