Documentation

Paul Graham Essays CLI

paul-graham-pp-cli

Install

npx -y @mvanhorn/printing-press-library install paul-graham

Installs the CLI binary and the agent skill for Claude Code, Codex, Cursor, Gemini CLI, Copilot, and more. Add --cli-only or --skill-only for one half. Requires Node.

Documentation

Static public essay index for paulgraham.com.

Created by @debgotwired (Deb Mukherjee).

Quick Start

1. Install

See Install above.

2. Verify Setup

paul-graham-pp-cli doctor

This checks your configuration.

3. Try Your First Command

paul-graham-pp-cli latest --limit 5

Usage

Run paul-graham-pp-cli --help for the full command reference and flag list.

Commands

articles-html

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.

latest

  • paul-graham-pp-cli latest --limit 10 - List the newest essays from the canonical essay index.

list

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

read

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

random

  • paul-graham-pp-cli random --seed 42 --json - Pick a random essay from the index.

Output Formats

# 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 2000

Agent Usage

This CLI is designed for AI agent consumption:

  • Non-interactive - never prompts, every input is a flag
  • Pipeable - --json output to stdout, errors to stderr
  • Filterable - --select id,name returns only fields you need
  • Previewable - --dry-run shows 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-friendly is set

Exit codes: 0 success, 2 usage error, 3 not found, 5 API error, 7 rate limited, 10 config error.

Health Check

paul-graham-pp-cli doctor

Verifies configuration and connectivity to the API.

Configuration

Config file: ~/.config/paul-graham-essays-pp-cli/config.toml

Static request headers can be configured under headers; per-command header overrides take precedence.

Troubleshooting

Not found errors (exit code 3)

  • Check the resource ID is correct
  • Run the list command to see available items

Generated by CLI Printing Press

For agents: pass /documentation/paul-graham/agents.md to install this CLI from a prompt.