← back to Cli Printing Press
docs: rewrite README with full feature coverage and Steinberger-inspired tone
59ae53409e387fc1604bca268a3b264a5cfac998 · 2026-03-24 08:25:12 -0700 · Matt Van Horn
The old README was 104 lines covering ~30% of shipped features. The new
one documents everything: pipeline mode, OAuth2, pagination, table output,
retry logic, color/TTY, multi-spec composition, URL caching, 12 catalog
entries, Claude Code plugin, and 7 quality gates.
All code examples use real captured output from petstore E2E runs.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Files touched
M README.mdA docs/plans/2026-03-24-docs-update-readme-epic-vc-pitch-plan.md
Diff
commit 59ae53409e387fc1604bca268a3b264a5cfac998
Author: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Date: Tue Mar 24 08:25:12 2026 -0700
docs: rewrite README with full feature coverage and Steinberger-inspired tone
The old README was 104 lines covering ~30% of shipped features. The new
one documents everything: pipeline mode, OAuth2, pagination, table output,
retry logic, color/TTY, multi-spec composition, URL caching, 12 catalog
entries, Claude Code plugin, and 7 quality gates.
All code examples use real captured output from petstore E2E runs.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---
README.md | 345 ++++++++++++++++++---
...-03-24-docs-update-readme-epic-vc-pitch-plan.md | 333 ++++++++++++++++++++
2 files changed, 634 insertions(+), 44 deletions(-)
diff --git a/README.md b/README.md
index 4509db7b..e9809769 100644
--- a/README.md
+++ b/README.md
@@ -1,45 +1,286 @@
# CLI Printing Press
-Describe your API. Get a production CLI.
+One command. Any API. A production CLI walks out the other side.
-CLI Printing Press generates production-ready Go CLI tools from OpenAPI specs or API descriptions. Write a single YAML spec (or point to an existing OpenAPI spec), and get a complete Cobra-based CLI with auth management, output formatting, config loading, and build tooling.
+Peter Steinberger hand-crafts [gogcli](https://github.com/steipete/gogcli), [discrawl](https://github.com/steipete/discrawl), [wacli](https://github.com/steipete/wacli) - beautiful Go CLIs that take weeks each. The printing press does it in 60 seconds. Point it at any OpenAPI spec in the world and get a finished CLI with auth, pagination, tables, retries, color, doctor, completions. Not a scaffold. Not a starting point. A finished product.
-## Quick Start
+```bash
+./printing-press generate --spec https://petstore3.swagger.io/api/v3/openapi.json
+```
+
+```
+PASS go mod tidy
+PASS go vet ./...
+PASS go build ./...
+PASS build runnable binary
+PASS petstore-cli --help
+PASS petstore-cli version
+PASS petstore-cli doctor
+Generated petstore-cli at ./petstore-cli
+```
+
+Seven quality gates. All green. Ship it.
+
+## The 60-Second Demo
```bash
-# Clone the repo
+# Build the press
git clone https://github.com/mvanhorn/cli-printing-press.git
cd cli-printing-press
-
-# Build
go build -o ./printing-press ./cmd/printing-press
-# Generate a CLI from an OpenAPI spec
-./printing-press generate --spec testdata/openapi/petstore.yaml --output ./petstore-cli
+# Print a CLI from any OpenAPI spec
+./printing-press generate \
+ --spec https://petstore3.swagger.io/api/v3/openapi.json \
+ --output ./petstore-cli
+
+# Use it
+cd petstore-cli && go build -o petstore-cli ./cmd/petstore-cli
+./petstore-cli --help
+```
+
+```
+Usage:
+ petstore-cli [command]
+
+Available Commands:
+ completion Generate the autocompletion script for the specified shell
+ doctor Check CLI health
+ help Help about any command
+ pet Everything about your Pets
+ store Access to Petstore orders
+ user Operations about user
+ version Print version
+
+Flags:
+ --config string Config file path
+ --dry-run Show request without sending
+ -h, --help help for petstore-cli
+ --json Output as JSON
+ --no-color Disable colored output
+ --plain Output as plain tab-separated text
+ --quiet Bare output, one value per line
+ --timeout duration Request timeout (default 30s)
+ -v, --version version for petstore-cli
+```
+
+```bash
+./petstore-cli doctor
+```
+
+```
+ OK Config: ok
+ FAIL Auth: not configured
+ OK API: reachable (HTTP 404)
+ config_path: ~/.config/petstore-cli/config.toml
+ base_url: https://petstore3.swagger.io/api/v3
+ version: 1.0.27
+```
+
+Every resource, every endpoint, every flag - auto-generated from the spec.
+
+```bash
+./petstore-cli pet --help
+```
+
+```
+Available Commands:
+ add Add a new pet to the store.
+ delete Deletes a pet.
+ find-by-status Finds Pets by status.
+ find-by-tags Finds Pets by tags.
+ get-by-id Find pet by ID.
+ update Update an existing pet.
+ update-with-form Updates a pet in the store with form data.
+ upload-image Manage upload image
+```
+
+## What Gets Generated
+
+Every printed CLI ships with everything a Steinberger-quality CLI needs:
+
+### Commands
+
+- **Cobra subcommand tree** - `<name>-cli <resource> <action>` hierarchy, auto-generated from spec paths
+- **Sub-resource grouping** - nested API paths become `resource sub-resource action`
+- **doctor** - formatted health dashboard with status checks, config paths, and version
+- **version** - semantic version from config
+- **Shell completions** - bash, zsh, fish, powershell via Cobra
+
+### Output
+
+- **Table output** - list responses auto-detected from array schemas, rendered as formatted tables
+- **`--json`** - raw JSON for piping and scripting
+- **`--plain`** - tab-separated values for `awk`/`cut`
+- **`--quiet`** - bare values, one per line
+- **Color and TTY detection** - ANSI color when interactive, plain when piped. Respects `NO_COLOR`, `TERM=dumb`, and `--no-color`
+
+### Auth
+
+- **API key** - header or query parameter
+- **Bearer token** - standard Authorization header
+- **Basic auth** - username:password
+- **OAuth2** - full browser-based authorization flow with token refresh, authorization URL, and token URL support
+
+### Reliability
+
+- **Retry with exponential backoff** - automatic retry on 5xx responses
+- **Rate limit detection** - 429 status + Retry-After header handling
+- **Structured exit codes** - 0 (ok), 1 (general error), 3 (not found), 4 (auth error), 7 (rate limited), 130 (interrupted)
+- **Request timeout** - configurable via `--timeout` flag (default 30s)
+- **`--dry-run`** - preview mutation requests without sending them
+
+### Pagination
-# Try it
-cd petstore-cli && go install ./cmd/petstore-cli
-petstore-cli --help
+- **Auto-detected from spec** - `--limit` and `--all` flags generated when pagination is detected
+- **Cursor-based and offset-based** - handles both pagination styles
+
+### Build Tooling
+
+- **go.mod** - clean module with pinned dependencies
+- **Makefile** - build, test, lint, install targets
+- **.goreleaser.yaml** - cross-platform release automation
+- **.golangci.yml** - linter configuration
+- **README.md** - auto-generated documentation for the CLI itself
+- **Config** - TOML config at `~/.config/<name>-cli/config.toml`
+
+## Usage
+
+### From OpenAPI URL
+
+```bash
+./printing-press generate --spec https://petstore3.swagger.io/api/v3/openapi.json
```
+Specs are cached locally for 24 hours at `~/.cache/printing-press/specs/`.
+
+### From Local File
+
+```bash
+./printing-press generate --spec ./my-api-spec.yaml --output ./my-cli
+```
+
+### From Internal YAML Format
+
+For APIs without OpenAPI specs, write a simpler YAML format:
+
+```bash
+./printing-press generate --spec ./my-api.yaml
+```
+
+See `skills/printing-press/references/spec-format.md` for the YAML format reference.
+
+### Multi-Spec Composition
+
+Merge multiple APIs into a single CLI:
+
+```bash
+./printing-press generate \
+ --spec https://api1.example.com/openapi.json \
+ --spec https://api2.example.com/openapi.json \
+ --name combined-cli
+```
+
+Auth configuration is taken from the first spec that defines OAuth2.
+
+### Supported Formats
+
+- **OpenAPI 3.0+** (YAML or JSON)
+- **Swagger 2.0** (YAML or JSON)
+- **Internal YAML** (hand-written, simpler schema)
+
+Auto-detection reads the first 500 bytes and routes to the correct parser.
+
+## Autonomous Pipeline
+
+For complex APIs, the press doesn't just generate - it thinks.
+
+```bash
+./printing-press print gmail
+```
+
+```
+Pipeline created for gmail
+ Spec: https://gmail.googleapis.com/$discovery/rest?version=v1
+ Output: ./gmail-cli
+ Plans:
+ 0. docs/plans/gmail-pipeline/00-preflight-plan.md
+ 1. docs/plans/gmail-pipeline/01-scaffold-plan.md
+ 2. docs/plans/gmail-pipeline/02-enrich-plan.md
+ 3. docs/plans/gmail-pipeline/03-regenerate-plan.md
+ 4. docs/plans/gmail-pipeline/04-review-plan.md
+ 5. docs/plans/gmail-pipeline/05-ship-plan.md
+```
+
+This kicks off a 6-phase autonomous pipeline. Each phase runs in a fresh AI session, chains automatically, and tracks state across sessions:
+
+| Phase | What Happens |
+|-------|-------------|
+| Preflight | Verify Go installed, download spec, cache project conventions |
+| Scaffold | Generate CLI, pass all 7 quality gates |
+| Enrich | Research API docs, discover missing endpoints, auth flows, pagination patterns |
+| Regenerate | Merge enrichments back into the spec, regenerate with full knowledge |
+| Review | Lint, test, benchmark, fix issues found |
+| Ship | Build, tag, generate release notes |
+
+The pipeline uses [Compound Engineering](https://github.com/EveryInc/compound-engineering-plugin) for planning and execution. Each phase produces a plan that gets expanded with parallel research agents, then executed with full test coverage.
+
+Budget gate stops at 3 hours. Heartbeat safety net resumes if a session dies. Morning report tells you what happened.
+
+### Known APIs
+
+16 APIs are pre-registered and discoverable by name:
+
+| API | Spec Format |
+|-----|-------------|
+| Petstore | OpenAPI 3.0 |
+| Stripe | OpenAPI 3.0 |
+| Square | OpenAPI 3.0 |
+| Stytch | OpenAPI 3.0 |
+| Discord | OpenAPI 3.1 |
+| Twilio | OpenAPI 3.0 |
+| SendGrid | OpenAPI 3.0 |
+| GitHub | OpenAPI 3.0 |
+| DigitalOcean | OpenAPI 3.0 |
+| Asana | OpenAPI 3.0 |
+| HubSpot | OpenAPI 3.0 |
+| Front | OpenAPI 3.0 |
+
+Unknown APIs fall back to the [apis-guru](https://apis.guru/) directory.
+
## Claude Code Plugin
```
/plugin marketplace add mvanhorn/cli-printing-press
```
-Then use:
-- `/printing-press Stytch auth API` - generate from natural language
-- `/printing-press --spec ./openapi.yaml` - generate from spec file
-- `/printing-press-catalog` - browse pre-built CLIs
-- `/printing-press-catalog install stripe` - install from catalog
+Then just say what you want:
+
+```
+/printing-press Stripe payments API
+/printing-press Discord bot management
+/printing-press --spec ./openapi.yaml
+/printing-press print gmail
+```
+
+The skill finds the spec (or writes one from API docs), generates the CLI, and presents the result.
+
+### Catalog Skill
+
+Browse and install pre-built CLIs:
+
+```
+/printing-press-catalog
+/printing-press-catalog search payments
+/printing-press-catalog install stripe
+```
## Catalog
12 pre-built CLI definitions for popular APIs:
-| API | Category | Spec |
-|-----|----------|------|
+| API | Category | Spec Format |
+|-----|----------|-------------|
| Stripe | Payments | OpenAPI 3.0 |
| Square | Payments | OpenAPI 3.0 |
| Stytch | Auth | OpenAPI 3.0 |
@@ -53,50 +294,66 @@ Then use:
| Front | Communication | OpenAPI 3.0 |
| Petstore | Example | OpenAPI 3.0 |
-## What Gets Generated
-
-Every generated CLI includes:
+## Quality Gates
-- Cobra subcommand hierarchy (`<name>-cli <resource> <action>`)
-- `--json`, `--plain`, `--quiet` output modes
-- Auth management (API key, bearer token, basic auth)
-- Config file at `~/.config/<name>-cli/config.toml`
-- `doctor` command for health checks
-- `version` command
-- Makefile, .goreleaser.yaml, .golangci.yml, README.md
-- Compiles and passes 7 quality gates automatically
+Every generated CLI must pass 7 gates before the press considers it done:
-## Supported Input Formats
+| Gate | What It Checks |
+|------|---------------|
+| `go mod tidy` | Clean, minimal dependencies |
+| `go vet ./...` | Static analysis passes |
+| `go build ./...` | All packages compile |
+| Binary build | Produces a runnable binary |
+| `--help` | Usage renders without crash |
+| `version` | Prints version string |
+| `doctor` | Health check runs |
-- **OpenAPI 3.0+** (YAML or JSON)
-- **Swagger 2.0** (YAML or JSON)
-- **Internal YAML format** (simpler, hand-written)
-
-Auto-detection: the generator reads the first 500 bytes and routes to the right parser.
+If any gate fails, the press retries with fixes. If it still fails, it tells you exactly what broke and why.
## Contributing Catalog Entries
-1. Generate a CLI: `./printing-press generate --spec <your-openapi-spec>`
-2. Test it works
-3. Create `catalog/<api-name>.yaml` with the spec URL and metadata
-4. Open a PR - CI validates the entry automatically
+1. Generate a CLI from an API spec:
+ ```bash
+ ./printing-press generate --spec <your-openapi-spec>
+ ```
+2. Verify it compiles and passes all 7 gates
+3. Create `catalog/<api-name>.yaml`:
+ ```yaml
+ name: my-api
+ display_name: My API
+ description: One-line description
+ category: developer-tools
+ spec_url: https://example.com/openapi.json
+ spec_format: json
+ openapi_version: "3.0"
+ tier: community
+ verified_date: "2026-03-24"
+ homepage: https://example.com
+ ```
+4. Open a PR - CI validates the entry automatically (schema + URL accessibility + full generate + compile)
Or use the skill: `/printing-press submit <name>`
## Development
```bash
-# Run tests
-go test ./...
-
# Build
go build -o ./printing-press ./cmd/printing-press
-# Generate from internal spec
+# Run tests
+go test ./...
+
+# Generate from internal YAML spec
./printing-press generate --spec testdata/stytch.yaml
-# Generate from OpenAPI
+# Generate from OpenAPI spec
./printing-press generate --spec testdata/openapi/petstore.yaml
+
+# Generate from URL
+./printing-press generate --spec https://petstore3.swagger.io/api/v3/openapi.json
+
+# Initialize a pipeline
+./printing-press print petstore
```
## License
diff --git a/docs/plans/2026-03-24-docs-update-readme-epic-vc-pitch-plan.md b/docs/plans/2026-03-24-docs-update-readme-epic-vc-pitch-plan.md
new file mode 100644
index 00000000..4f24d9c2
--- /dev/null
+++ b/docs/plans/2026-03-24-docs-update-readme-epic-vc-pitch-plan.md
@@ -0,0 +1,333 @@
+---
+title: "Update README - Epic VC-Pitch Style, Steinberger-Inspired"
+type: docs
+status: completed
+date: 2026-03-24
+---
+
+# Update README - Epic VC-Pitch Style, Steinberger-Inspired
+
+## Overview
+
+The current README is 104 lines and reflects maybe 30% of what the printing press actually does. The project has shipped OAuth2, pagination, table output, retry logic, color/TTY, multi-spec composition, URL specs with caching, autonomous 6-phase pipeline, a 12-entry catalog, and a Claude Code plugin. None of that is in the README.
+
+The new README should read like a VC pitch deck meets a technical masterpiece. The core narrative: **"Automagically make Peter Steinberger-quality CLIs for ANY API in the world."** One command. Any API. Production-quality CLI out the other side.
+
+Inspired by gogcli's README (1,200 lines, code-heavy, every command documented, no fluff) but with the added magic of "this is a printing press that PRINTS those CLIs for you."
+
+## Acceptance Criteria
+
+- [ ] README conveys the vision in the first 3 lines: describe any API, get a finished CLI
+- [ ] Epic opening section with the "why this matters" narrative (Steinberger builds one CLI per API by hand - the press prints them automatically)
+- [ ] Shows real command output (not hypothetical) for at least 3 examples
+- [ ] Documents ALL shipped features (see Feature Inventory below)
+- [ ] Covers all 3 input modes: natural language, spec file, URL
+- [ ] Documents the pipeline mode (`print` command) as the hero feature
+- [ ] Catalog table with all 12 entries
+- [ ] "What Gets Generated" section that makes people say "wait, it does ALL that?"
+- [ ] Claude Code plugin installation and usage
+- [ ] Contributing section for catalog entries
+- [ ] Development section
+- [ ] No badges wall, no fluff - code-heavy like gogcli
+- [ ] MIT license
+
+## Feature Inventory (Everything the README Must Cover)
+
+### Core Generator
+- Cobra subcommand hierarchy (`<name>-cli <resource> <action>`)
+- Sub-resource grouping for nested API paths
+- `--json`, `--plain`, `--quiet` output modes
+- Auth management: API key, bearer token, basic auth, OAuth2 (authorization_url, token_url, browser flow)
+- Config file at `~/.config/<name>-cli/config.toml`
+- `doctor` command with formatted health dashboard
+- `version` command
+- Auto-generated usage examples in command help
+- Auto-detect pagination: `--limit`, `--all` flags
+- Table output for array responses
+- Retry logic with exponential backoff + rate limit detection (429 + Retry-After)
+- Structured exit codes (0=ok, 1=general, 3=not-found, 4=auth, 7=rate-limit, 130=interrupt)
+- Dry-run support (`--dry-run` for mutation commands)
+- Color + TTY detection (respects `NO_COLOR`, `TERM=dumb`)
+- `--no-color` flag
+- Makefile, .goreleaser.yaml, .golangci.yml, README.md auto-generated
+- 7 quality gates (go mod tidy, go vet, go build, binary build, --help, version, doctor)
+
+### Input Formats
+- OpenAPI 3.0+ (YAML or JSON)
+- Swagger 2.0 (YAML or JSON)
+- Internal YAML format (simpler, hand-written)
+- Auto-detection: reads first 500 bytes, routes to correct parser
+- URL input with local caching (24h TTL at `~/.cache/printing-press/specs/`)
+- Multi-spec composition (`--spec` repeatable, merged into one CLI)
+
+### Pipeline Mode (Hero Feature)
+- `printing-press print <api-name>` creates autonomous 6-phase pipeline
+- Phases: preflight, scaffold, enrich, regenerate, review, ship
+- Plan seeds auto-generated per phase (Compound Engineering compatible)
+- Spec overlay system (enrich phase produces overlay.yaml, regenerate merges it)
+- State tracking with state.json (pending/planned/executing/completed/failed)
+- Budget gate (3h max), heartbeat safety net via cron
+- Morning report generation
+- Session chaining with fresh context per phase (nightnight-style)
+- 16 known APIs discoverable by name (apis-guru fallback for unknown)
+
+### Catalog
+- 12 pre-built entries: Stripe, Square, Stytch, Discord, Twilio, SendGrid, GitHub, DigitalOcean, Asana, HubSpot, Front, Petstore
+- Schema validation (CI validates catalog PRs)
+- Categories: auth, payments, email, developer-tools, project-management, communication, crm, example
+- Tiers: official, community
+
+### Distribution
+- Claude Code plugin (`/plugin marketplace add mvanhorn/cli-printing-press`)
+- Two skills: `/printing-press` (generator) and `/printing-press-catalog` (browse/install)
+- Natural language input ("Stytch authentication API" - finds spec, generates CLI)
+
+## Implementation Units
+
+### Unit 1: Hero Section + Vision
+
+**Files:** `README.md`
+
+**Approach:**
+Write the opening that makes someone stop scrolling. Structure:
+
+```
+# CLI Printing Press
+
+One command. Any API. A production CLI walks out the other side.
+
+[2-3 sentence pitch: Peter Steinberger hand-crafts gogcli, wacli, discrawl -
+beautiful CLIs that take weeks each. The printing press does it in 60 seconds.
+Point it at any OpenAPI spec in the world and get a finished CLI with auth,
+pagination, tables, retries, color, doctor, completions. Not a scaffold.
+A finished product.]
+
+## The 60-Second Demo
+
+[3 bash blocks showing the magic:
+1. printing-press generate --spec <petstore-url> --output ./petstore-cli
+2. cd petstore-cli && go build && ./petstore-cli --help (show output)
+3. ./petstore-cli pet find-by-status --status available --limit 5 (show table)]
+```
+
+The demo should use REAL output captured from actual runs (we validated petstore E2E tonight).
+
+**Verification:** First 30 lines make someone want to star the repo.
+
+### Unit 2: What Gets Generated (The "Wait, It Does ALL That?" Section)
+
+**Files:** `README.md`
+
+**Approach:**
+Expand the current 7-bullet list into a comprehensive feature showcase. Group by category:
+
+```
+## What Gets Generated
+
+Every printed CLI ships with:
+
+### Commands
+- Cobra subcommand tree: `<name>-cli <resource> <action>`
+- Sub-resources: nested paths become `resource sub-resource action`
+- doctor: formatted health dashboard with checkmarks and color
+- version: semantic version from config
+- Shell completions: bash, zsh, fish, powershell
+
+### Output
+- Table output for list responses (auto-detected from array schemas)
+- `--json` raw JSON, `--plain` tab-separated, `--quiet` bare values
+- Color and TTY detection (respects NO_COLOR, TERM=dumb, --no-color)
+
+### Auth
+- API key (header or query)
+- Bearer token
+- Basic auth
+- OAuth2 with browser-based authorization flow and token refresh
+
+### Reliability
+- Retry with exponential backoff on 5xx
+- Rate limit detection (429 + Retry-After header)
+- Structured exit codes (0/1/3/4/7/130)
+- Request timeout with --timeout flag
+- --dry-run for mutation commands
+
+### Pagination
+- Auto-detected from spec: --limit, --all flags
+- Cursor-based and offset-based pagination
+
+### Build Tooling
+- go.mod, Makefile, .goreleaser.yaml, .golangci.yml
+- Auto-generated README.md for the CLI itself
+- Config at ~/.config/<name>-cli/config.toml
+```
+
+### Unit 3: Input Formats + Usage Modes
+
+**Files:** `README.md`
+
+**Approach:**
+Show all 3 input paths with real examples:
+
+```
+## Usage
+
+### From OpenAPI Spec (URL)
+./printing-press generate --spec https://petstore3.swagger.io/api/v3/openapi.json
+
+### From Local Spec File
+./printing-press generate --spec ./my-api-spec.yaml
+
+### Multi-Spec Composition
+./printing-press generate \
+ --spec https://api1.example.com/openapi.json \
+ --spec https://api2.example.com/openapi.json \
+ --name combined-cli
+
+### Supported Formats
+- OpenAPI 3.0+ (YAML/JSON)
+- Swagger 2.0 (YAML/JSON)
+- Internal YAML format (hand-written, simpler)
+- Auto-detection: reads first 500 bytes, routes to correct parser
+```
+
+### Unit 4: Pipeline Mode (The Hero Feature)
+
+**Files:** `README.md`
+
+**Approach:**
+This is the differentiator. Frame it as magic:
+
+```
+## Autonomous Pipeline (The Magic)
+
+For complex APIs, the press doesn't just scaffold - it thinks.
+
+./printing-press print gmail
+
+This kicks off a 6-phase autonomous pipeline:
+
+| Phase | What Happens |
+|-------|-------------|
+| 0. Preflight | Verify Go, download spec, cache conventions |
+| 1. Scaffold | Generate CLI, pass 7 quality gates |
+| 2. Enrich | Research API docs, discover missing endpoints, auth flows |
+| 3. Regenerate | Merge enrichments back, regenerate with full knowledge |
+| 4. Review | Lint, test, benchmark, fix issues |
+| 5. Ship | Build, tag, generate release notes |
+
+Each phase runs in a fresh AI session with its own context window.
+Sessions chain automatically via cron. Budget gate stops at 3 hours.
+Morning report tells you what happened overnight.
+
+16 APIs are pre-registered and discoverable by name:
+[list of known specs]
+```
+
+### Unit 5: Claude Code Plugin + Catalog
+
+**Files:** `README.md`
+
+**Approach:**
+```
+## Claude Code Plugin
+
+/plugin marketplace add mvanhorn/cli-printing-press
+
+Then just say what you want:
+
+/printing-press Stripe payments API
+/printing-press Discord bot API
+/printing-press --spec ./openapi.yaml
+
+## Catalog
+
+12 pre-built CLI definitions. Generate instantly:
+
+/printing-press-catalog install stripe
+
+[table of 12 entries]
+```
+
+### Unit 6: Quality Gates + Contributing + Development
+
+**Files:** `README.md`
+
+**Approach:**
+```
+## Quality Gates
+
+Every generated CLI must pass 7 gates before the press considers it done:
+
+1. go mod tidy (clean dependencies)
+2. go vet ./... (static analysis)
+3. go build ./... (compilation)
+4. Binary build (produces runnable binary)
+5. --help (usage renders without crash)
+6. version (prints version string)
+7. doctor (health check runs)
+
+If any gate fails, the press retries. If it still fails, it tells you exactly what broke.
+
+## Contributing Catalog Entries
+[instructions]
+
+## Development
+[build, test, generate commands]
+```
+
+### Unit 7: Capture Real Output for Examples
+
+**Files:** `README.md`
+
+**Execution note:** Run before writing the final README. Capture actual terminal output from:
+
+**Approach:**
+```bash
+# 1. Generate petstore and capture --help output
+./printing-press generate --spec "https://petstore3.swagger.io/api/v3/openapi.json" --output /tmp/readme-demo
+cd /tmp/readme-demo && go build -o petstore-cli ./cmd/petstore-cli
+./petstore-cli --help
+./petstore-cli pet --help
+./petstore-cli doctor
+./petstore-cli version
+
+# 2. Capture the generate command output (with quality gates)
+# Already captured in E2E test - 7 PASS lines
+
+# 3. Capture print command output
+./printing-press print petstore --output /tmp/readme-pipeline-demo
+```
+
+Paste real output into the README examples. No fake output.
+
+**Verification:** Every code block in the README contains output that was actually produced by the tool.
+
+## Scope Boundaries
+
+- Don't modify Go code (this is README only)
+- Don't add GitHub Actions badges or shields.io badges (keep it clean like gogcli)
+- Don't add a table of contents (let the content speak)
+- Don't add screenshots or GIFs yet (text-first, code-heavy like gogcli)
+- Don't fix the version mismatch (root.go=0.1.0 vs plugin=0.4.0) - that's a separate fix
+- Don't document unreleased features from the Steinberger Parity plan
+
+## Tone Guide
+
+- **Epic but technical.** Not "amazing revolutionary tool" - more "one command, any API, production CLI."
+- **Show, don't tell.** Every claim backed by a code example or output snippet.
+- **Steinberger's shadow.** The implicit message: gogcli took weeks to build. This prints gogcli-quality CLIs in 60 seconds.
+- **Code-heavy.** 50-60% of the README should be fenced code blocks with real output.
+- **No em dashes.** Use hyphens instead (user preference).
+- **No badges wall.** Clean header like gogcli.
+
+## Sources
+
+- Current README: `README.md` (104 lines, needs full rewrite)
+- SKILL.md: `skills/printing-press/SKILL.md` (322 lines, comprehensive feature reference)
+- gogcli README: github.com/steipete/gogcli (1,200 lines, style inspiration)
+- Steinberger Parity plan: `docs/plans/2026-03-24-feat-full-steinberger-parity-plan.md` (quality bar reference)
+- GOAT plan: `docs/plans/2026-03-24-feat-goat-plan-gogcli-parity-and-press-upgrades-plan.md` (feature inventory)
+- E2E petstore test: validated tonight, all 7 gates pass, CLI compiles and runs
+- Pipeline state types: `internal/pipeline/state.go` (6 phases, status machine)
+- Known specs: `skills/printing-press/references/known-specs.md` (16 APIs)
+- Catalog entries: `catalog/*.yaml` (12 entries)
← ea086759 docs(plans): mark pipeline chaining and E2E petstore plans a
·
back to Cli Printing Press
·
feat(pipeline): add autonomous dogfood phase with 3-tier tes aae78017 →