The catalog offers 465 focused CLIs, each with its own risk
Printing Press Library collects generated Go command-line tools for services ranging from sports and travel to cloud administration. The current README counts 465 CLIs in 22 categories. The npm package searches that registry, runs go install, and places the matching focused skill into supported agent environments. That gives an agent a compact command vocabulary instead of making it rediscover an API on every task.
The catalog works best when you already know the service and action you need. Claude Code and other Vercel Agent Skills-compatible clients can install one pp-* skill without the broad discovery skill. Some entries also include an MCP server companion.
A 5-second npm install leads to Go, skills, and service credentials
Our sandbox entered the repository's ./npm/ project and installed it in 5 seconds. Only 10 packages were added, taking 26 MB on disk, and npm audit found 0 known vulnerabilities. The TypeScript build succeeded in another 7 seconds. As a catalog browser, that wrapper is light. Installing a useful entry starts another path: it obtains a Go binary and asks the upstream skills installer to add the focused instructions.
The stated requirements are Node.js 20 or newer and Go 1.26.5 or newer. The installer writes executables to $HOME/.local/bin on macOS and Linux or a per-user Programs directory on Windows. That location must appear on PATH. A running agent gateway may keep its old environment until restarted, even after a shell configuration file changes. Per-CLI authentication can involve API keys, OAuth, service accounts, or browser cookies, so there is no single credential checklist for all 465 entries.
What happened when we ran it
Our test at commit f1fa1f0 failed with exit code 1 after 8 seconds. The command rebuilt the npm package, then called Node's test runner with dist/tests/**/*.test.js. The log ended with Could not find '/work/repo/npm/dist/tests/**/*.test.js'. That message establishes the missing path seen by the runner. It does not show whether compilation omitted tests, the shell failed to expand the glob, or another configuration choice was responsible.
Install and build were successful before that failure: 5 seconds for 10 npm packages and 7 seconds for TypeScript. Npm audit reported 0 known vulnerabilities across that installed wrapper. Those clean npm results do not audit the hundreds of separate Go modules or the services they call. The test failure also matters because the package's prepublishOnly script invokes npm test; the checked commit did not demonstrate a clean release path in our fresh Node 22 container.
The full repository was far larger than the installer. Our checkout measured 83,957 files, about 15,794,624 lines of source, and 1,019.3 MB before the npm install. It contained 18 CI workflow files and a tests directory, with no Dockerfile. This structure reflects hundreds of self-contained tools plus generated skills, manifests, manuscripts, and release records. Clone it to audit or contribute across the catalog. Ordinary users should prefer the narrow installer path.
Generated commands need live checks before automation
Issue 1801 gives a precise example of catalog drift. In Weather GOAT 2026.8.1, the air-quality and history commands send requests to the forecast host even though Open-Meteo serves those endpoints on different hosts. Both return HTTP 404 in the reporter's reproduction. A third helper swallows the air-quality error and returns 0, which can feed a false air-quality value into an activity verdict. The issue points to working host-specific helpers already present elsewhere in the same tool.
A Notion report is more worrying for write automation. Issue 861 shows version 1.0.0 accepting blocks children append --position, displaying the flag in help, then dropping it from the PATCH body. Notion therefore appends the blocks at the end without returning an error. This is the class of defect an agent may miss because the command exits normally. Use dry-run output where available, then read the changed object back and compare its position or fields with the requested operation.
Credential masking exposes the last 4 token characters
Issue 1595 records a generator-level masking behavior found in the Slack CLI: the shared function replaces a credential with four asterisks plus the token's real final 4 characters. The report says that suffix can appear in error bodies, messages, printed URLs, and dry-run output, and tracks the fix in the generator repository. Four characters may seem minor, but logs often move into CI systems, agent transcripts, bug reports, and support tickets where no credential fragment belongs.
This catalog includes CLIs that can create, update, upload, or administer data. A focused skill helps an agent choose flags; it cannot decide your acceptable scope. Use read-only credentials where a tool only needs reads. Test mutating commands against a disposable account, inspect what dry run actually redacts, and keep agent logs under the same access controls as secrets. The README's per-tool credential model is honest, but 465 tools make local policy and selective adoption essential.
Same-day commits show activity, while 186 threads show unfinished work
GitHub showed a last push on August 26, 2026, with registry and skill regeneration commits that same day. The repository had 1,960 stars, 89 open issues, and 97 open pull requests when fetched. Its latest GitHub release was a moving per-tool tag for Zotero Research Library, published that morning, rather than one semantic version for the whole catalog.
Printing Press Library is moving quickly enough that a stale catalog is not the main concern. Variation is. One entry may use an official API and scoped OAuth; another may rely on a browser cookie or captured interface. Publication checks cover build, vet, reachable Go vulnerability scanning, help, version, structure, and runtime verification, according to the README. Current issues still prove that command semantics can be wrong after those checks. Install selectively, pin what your automation depends on, and keep a small acceptance test for each command that can spend money or change remote data.

