Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/mvanhorn/cli-printing-press/learn-loop-examplenpx skills add mvanhorn/cli-printing-press --skill learn-loop-examplegit clone --depth 1 https://github.com/mvanhorn/cli-printing-pressWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00025 | $0.05528 |
| Opus 5 | $0.00013 | $0.02764 |
| Sonnet 5 | $0.00005 | $0.01106 |
| Haiku 4.5 | $0.00003 | $0.00553 |
Grade A, and why
pp-learn-loop-example scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 409 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Learn Loop Example — Printing Press CLI
Prerequisites: Install the CLI
This skill drives the learn-loop-example-pp-cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
- Install via the Printing Press installer. It defaults binaries to
$HOME/.local/binon macOS/Linux and%LOCALAPPDATA%\Programs\PrintingPress\binon Windows:npx -y @mvanhorn/printing-press-library install learn-loop-example --cli-only - Verify:
learn-loop-example-pp-cli --version - Ensure the reported install directory is on
$PATHfor the agent/runtime that will invoke this skill.
If the npx install fails before this CLI has a public-library category, install Node or use the category-specific Go fallback after publish.
If --version reports "command not found" after install, the runtime cannot see the binary directory on $PATH. Do not proceed with skill commands until verification succeeds.
Golden fixture exercising the spec-declared self-learning loop. Demonstrates
the shape every printed CLI gets when its spec declares a learn: block:
the generator emits internal/learn/* subpackages, the teach/recall/learnings
commands, the v3 store schema additions, and the self-learning sections in
README.md / SKILL.md / AGENTS.md.
The underlying resource surface mirrors the sync-walker fixture (top-level games + walker-fanned-out leagues) so the emitted shape covers the typical multi-file CLI alongside the learn package. Identifiers in the learn block are intentionally neutral (EXAMPLE-* ticker, ALPHA/BRAVO entities) so the scripts/verify-learn-purity.sh gate cannot trip on this fixture.
When Not to Use This CLI
Do not activate this CLI for requests that require creating, updating, deleting, publishing, commenting, upvoting, inviting, ordering, sending messages, booking, purchasing, or changing remote state. This printed CLI exposes read-only commands for inspection, export, sync, and analysis.
What ships with it
26 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- .printing-press-patches/.gitkeep 0 B
- .printing-press.json 974 B
- AGENTS.md 7.2 KB
- CLAUDE.md 11 B
- internal/cli/learn_init.go 5.1 KB
- internal/cli/learnings_candidates.go 22 KB
- internal/cli/learnings_stats.go 5.3 KB
- internal/cli/root.go 27 KB
- internal/cli/sync_numeric_id_test.go 1.3 KB
- internal/cli/teach.go 41 KB
- internal/learn/derive.go 14 KB
- internal/learn/entities/extract.go 4.7 KB
- internal/learn/journal.go 17 KB
- internal/learn/lookups/seeds.go 2.7 KB
- internal/learn/patterns/apply.go 9.2 KB
- internal/learn/protocol.go 1.8 KB
- internal/learn/recall.go 43 KB
- internal/learn/synthesize.go 12 KB
- internal/store/candidates.go 17 KB
- internal/store/events.go 13 KB
- internal/store/extras.go 878 B
- internal/store/learnings_test.go 20 KB
- internal/store/learnings.go 29 KB
- internal/store/store.go 113 KB
- manifest.json 1.7 KB
- README.md 13 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 409 lines · 25 tokens per session scan A 06564587ffa3
pp-learn-loop-example is a skill published in the GitHub repository mvanhorn/cli-printing-press (4,601 stars, last pushed today), licensed MIT. It adds 25 tokens to every session and 5,528 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
foundry-lens
Runs a multi-pass research method that deliberately catches its own blind spots — a shallow first pass, a forced structural self-diagnosis, then corrected and inverted passes. Use when mapping a product's full feature set, tearing down a competitor, doing exhaustive documentation research, or any time a first answer…
foundry-capture
Guides the user through capturing an app's network traffic on Android, iOS, desktop, or web, and exporting it as HAR for analysis. Use when a teardown needs network evidence, when the user asks how to see what an app is talking to, or when intake reports network-surface as missing. Triggers on "capture traffic", "how…
foundry-cast
Turns a teardown matrix into a reconstructed OpenAPI specification, and optionally generates a CLI from it. Detects specifications that already exist on disk so a spec cast in an earlier session can be pressed into a CLI without redoing any analysis. Triggers on "cast the spec", "generate the OpenAPI", "now build the…
foundry-intake
Collects and confirms the artifacts for a teardown before any analysis begins — asks what the user has, classifies each file, reports which analysis dimensions are covered, and gets explicit approval. Use at the start of any reverse-engineering or app-teardown task. Triggers on "tear down this app", "here is the APK"…
type-foundry
Reverse-engineers a closed application into a feature spec, a reconstructed OpenAPI specification, and optionally a CLI — starting from an APK, IPA, EXE, DMG, HAR traffic capture, or docs. Use when the target has no published API and Printing Press has nothing to work from. Triggers on "tear down this app", "reverse…
lathe
Initialize CLI-first applications and keep their OpenAPI contract, generated CLI, and Agent Skill synchronized. Use when creating an application with lathe init or changing a Lathe-generated application.