Static public essay index for paulgraham.com.
Created by @debgotwired (Deb Mukherjee).
The recommended path installs both the paul-graham-pp-cli binary and the pp-paul-graham agent skill (Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, and other agents supported by the upstream skills CLI) in one shot:
npx -y @mvanhorn/printing-press-library install paul-grahamFor CLI only (no skill):
npx -y @mvanhorn/printing-press-library install paul-graham --cli-onlyFor skill only — installs the skill into the same agents as the default command above, but skips the CLI binary (use this to update or reinstall just the skill):
npx -y @mvanhorn/printing-press-library install paul-graham --skill-onlyTo constrain the skill install to one or more specific agents (repeatable — agent names match the skills CLI):
npx -y @mvanhorn/printing-press-library install paul-graham --agent claude-code
npx -y @mvanhorn/printing-press-library install paul-graham --agent claude-code --agent codexIf npx isn't available (no Node, offline), install the CLI directly via Go (requires Go 1.26.4 or newer):
go install github.com/mvanhorn/printing-press-library/library/media-and-entertainment/paul-graham/cmd/paul-graham-pp-cli@latestThis installs the CLI only — no skill.
Download a pre-built binary for your platform from the latest release. On macOS, clear the Gatekeeper quarantine: xattr -d com.apple.quarantine <binary>. On Unix, mark it executable: chmod +x <binary>.
Install the CLI binary first. The installer writes binaries to a per-user managed bin directory by default: $HOME/.local/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows.
npx -y @mvanhorn/printing-press-library install paul-graham --cli-onlyThen install the focused Hermes skill.
From the Hermes CLI:
hermes skills install mvanhorn/printing-press-library/cli-skills/pp-paul-graham --forceInside a Hermes chat session:
/skills install mvanhorn/printing-press-library/cli-skills/pp-paul-graham --forceRestart the Hermes session or gateway if the newly installed skill is not visible immediately.
Install both the CLI binary and the focused OpenClaw skill. The installer defaults binaries to a per-user bin directory ($HOME/.local/bin on macOS/Linux, %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows):
npx -y @mvanhorn/printing-press-library install paul-graham --agent openclawRestart the OpenClaw session or gateway if the newly installed skill is not visible immediately.
This CLI ships an MCPB bundle — Claude Desktop's standard format for one-click MCP extension installs (no JSON config required).
To install:
- Download the
.mcpbfor your platform from the latest release. - Double-click the
.mcpbfile. Claude Desktop opens and walks you through the install.
Requires Claude Desktop 1.0.0 or later. Pre-built bundles ship for macOS Apple Silicon (darwin-arm64) and Windows (amd64, arm64); for other platforms, use the manual config below.
Manual JSON config (advanced)
If you can't use the MCPB bundle (older Claude Desktop, unsupported platform), install the MCP binary and configure it manually.
go install github.com/mvanhorn/printing-press-library/library/media-and-entertainment/paul-graham/cmd/paul-graham-pp-mcp@latestAdd to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"paul-graham": {
"command": "paul-graham-pp-mcp"
}
}
}See Install above.
paul-graham-pp-cli doctorThis checks your configuration.
paul-graham-pp-cli latest --limit 5Run paul-graham-pp-cli --help for the full command reference and flag list.
Manage articles html
paul-graham-pp-cli articles-html- Returns the static HTML essay index from paulgraham.com. The site does not expose an official JSON API; native CLI helpers parse this page and linked essay pages.
paul-graham-pp-cli latest --limit 10- List the newest essays from the canonical essay index.
paul-graham-pp-cli list --query startup --limit 20- List essays, optionally filtering by title or slug.
paul-graham-pp-cli search startup --limit 10- Search essay titles and slugs.paul-graham-pp-cli search "default alive" --full-text --json- Fetch matching essay pages and search full text.
paul-graham-pp-cli read greatwork- Read an essay by slug, URL, title, or title substring.paul-graham-pp-cli read "Founder Mode" --max-chars 2000 --json- Return extracted essay text with word count and excerpt metadata.
paul-graham-pp-cli links greatwork --json- Extract links from an essay page.
paul-graham-pp-cli random --seed 42 --json- Pick a random essay from the index.
# Human-readable table (default in terminal, JSON when piped)
paul-graham-pp-cli latest --limit 5
# JSON for scripting and agents
paul-graham-pp-cli search startup --json --limit 5
# Filter to specific fields
paul-graham-pp-cli list --json --select title,url
# Dry run — show the request without sending
paul-graham-pp-cli articles-html --dry-run
# Agent mode — JSON + compact + no prompts in one flag
paul-graham-pp-cli read greatwork --agent --max-chars 2000This CLI is designed for AI agent consumption:
- Non-interactive - never prompts, every input is a flag
- Pipeable -
--jsonoutput to stdout, errors to stderr - Filterable -
--select id,namereturns only fields you need - Previewable -
--dry-runshows the request without sending - Read-only by default - this CLI does not create, update, delete, publish, send, or mutate remote resources
- Offline-friendly - sync/search commands can use the local SQLite store when available
- Agent-safe by default - no colors or formatting unless
--human-friendlyis set
Exit codes: 0 success, 2 usage error, 3 not found, 5 API error, 7 rate limited, 10 config error.
paul-graham-pp-cli doctorVerifies configuration and connectivity to the API.
Config file: ~/.config/paul-graham-essays-pp-cli/config.toml
Static request headers can be configured under headers; per-command header overrides take precedence.
Not found errors (exit code 3)
- Check the resource ID is correct
- Run the
listcommand to see available items
Generated by CLI Printing Press