Atlas / Skills / mvanhorn / Printing Press

Printing PressCAUTION

skills/mvanhorn/printing-press

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.

Verdict
CAUTION
Grade
C
Trust score
79 /100
Version
3.0.0
Hosts
4 documented
License
MIT
Stars
4,836
01

Overview

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.

Read from source at commit 1196050126bbOBSERVED · 2026-10-20
Advertisement
02

Install

Commands as the repository documents them. They are shown, not run.

uv tool install browser-use
pip install browser-use
npm install -g agent-browser
uv tool install browser-use
pip install browser-use
npm install -g agent-browser
03

Host compatibility

What the documentation claims. We have not run a compatibility test.

HostStatusNotes
claude-codementioned
claude-desktopmentioned
codexmentioned
cursormentioned
04

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
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.
05

Trust audit

CAUTIONgrade C · trust 79/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (4 observation(s))
Shell
none-observed
Dependencies
pinned
Secrets in source
none-found

Findings (12)

HIGHPrompt injection · prompt.hide_from_user · CWE-94, CWE-1427
references/setup-checks.md:116
- 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
Why it matters. asks the agent to act without the user's knowledge
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
phases/09-api-reachability-gate.md:29
**Exception for LAN-only / mDNS-discovered APIs:** If the resolved spec's `base_url` is a localhost or loopback placeholder (`http://localhost:<port>`, `http://127.0.0.1:<port>`, or `http://[::1]:<por
LOWPrompt injection · prompt.credential_read · CWE-94, CWE-1427
phases/11-build-the-goat.md:66
- enrich terse flag descriptions: review generated command flags. If any description is under 5 words or is generic spec-derived text (e.g., "access key", "The player"), improve it using the research
Why it matters. asks the agent to read credentials
LOWPrompt injection · prompt.credential_read · CWE-94, CWE-1427
references/auth-companion.md:181
If multiple cookies carry JWTs (e.g., id + access), pick the **access token**
Why it matters. asks the agent to read credentials
LOWSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
phases/01-preflight.md:291
echo "PRESS_SKILL_REINSTALL=curl -fsSL https://raw.githubusercontent.com/mvanhorn/cli-printing-press/main/scripts/install.sh | bash -s -- --skills-only"
LOWSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
references/setup-checks.md:119
curl -fsSL https://raw.githubusercontent.com/mvanhorn/cli-printing-press/main/scripts/install.sh | bash -s -- --skills-only
LOWSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
references/setup-checks.md:126
curl -fsSL https://raw.githubusercontent.com/mvanhorn/cli-printing-press/main/scripts/install.sh | bash -s -- --skills-only
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
phases/09-api-reachability-gate.md:74
Do not probe arbitrary mutation endpoints to discover tier limits. A generic "try a PUT/POST/PATCH/DELETE" rule can create accounts, send messages, capture payments, or mutate user data. Mutation prob
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
phases/09-api-reachability-gate.md:76
If one or more probe-safe endpoints are declared and the user provided credentials, run exactly one declared probe-safe endpoint as a second reachability probe and apply the same 4xx body capture and
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
phases/11-build-the-goat.md:785
Endpoint-mirror tools the generator emits from the spec already get the right annotations automatically. Conventional REST `GET` is read-only. RPC-over-GET (shared gateway path, `.cgi`, or a query `me
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
phases/13-sync-param-drop-gate.md:27
2. **Annotate the call with an evidence-backed opt-out.** Add `// pp:sync-params-intentional-subset reason=<why>` on the line immediately above the call when the subset is genuinely intentional — for
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
references/oauth2-pkce-cli-checklist.md:19
- Token-endpoint POSTs (authorization code exchange, refresh, client_credentials) must use a client that refuses cross-origin redirects. Do not reuse the shared API client's `CheckRedirect`, and never
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine

Gates applied: instruction_override, no_behavioural_pass.

Audited 2026-10-20 · audit v0.4.1 · source sha 1196050126bbfull audit observations/trust-audit/skill/mvanhorn__printing-press.json · Report an issue / request a re-scan
06

Audit history

Every audit this skill has had.

DateSourceVerdictGradeScoreChange
2026-10-201196050126bbCAUTIONC79first audit
07

Questions

What does the printing-press — 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 — mvanhorn/cli-printing-press safe to install?

With care. The audit graded it C (79/100) and found 12 things worth knowing before you trust this skill, listed below with the exact line each was found on.

What can printing-press — mvanhorn/cli-printing-press access on my machine?

The audit observed that it reaches the network. Each of those is consistent with what it says it does. Secrets in the source: none found.

Which assistants does printing-press — mvanhorn/cli-printing-press work with?

Its documentation mentions claude-code, claude-desktop, codex and cursor. 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 (1196050126bb), read on 2026-10-20. 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.

ModelsAtlas audit badge

Markdown
[![ModelsAtlas audit: Printing Press](https://modelsatlas.com/skills/mvanhorn/printing-press/badge.svg)](https://modelsatlas.com/skills/mvanhorn/printing-press/)

Not your listing, or something out of date? Claim or update your listing.

Advertisement