SQL Database Support for pREST
prest/prest
Guides classifying, gap-analyzing and scaffolding support for a new SQL database in pREST, from Postgres-compatible variants to entirely new dialects.
Every Skool community feature, plus a local SQLite mirror, FTS, and cross-community ops no other Skool tool ships.
$ npx skills add mvanhorn/printing-press-library --skill pp-skool -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mvanhorn/printing-press-library pp-skool --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .claude/skills && cp -r skills-src/cli-skills/pp-skool .claude/skills/pp-skool && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "pp-skool" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-skool into .claude/skills/pp-skool/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-skool", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-skoolType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add mvanhorn/printing-press-library --skill pp-skool -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mvanhorn/printing-press-library pp-skool --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .agents/skills && cp -r skills-src/cli-skills/pp-skool .agents/skills/pp-skool && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pp-skool" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-skool into .agents/skills/pp-skool/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-skool", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mvanhorn/printing-press-library --skill pp-skool -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mvanhorn/printing-press-library pp-skool --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/cli-skills/pp-skool .cursor/skills/pp-skool && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "pp-skool" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-skool into .cursor/skills/pp-skool/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-skool", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/mvanhorn/printing-press-library.git --path cli-skills/pp-skool--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add mvanhorn/printing-press-library --skill pp-skool -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mvanhorn/printing-press-library pp-skool --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/cli-skills/pp-skool .gemini/skills/pp-skool && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "pp-skool" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-skool into .gemini/skills/pp-skool/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-skool", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install mvanhorn/printing-press-library pp-skoolInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add mvanhorn/printing-press-library --skill pp-skool -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .github/skills && cp -r skills-src/cli-skills/pp-skool .github/skills/pp-skool && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "pp-skool" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-skool into .github/skills/pp-skool/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-skool", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mvanhorn/printing-press-library --skill pp-skool -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install mvanhorn/printing-press-library pp-skool --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/cli-skills/pp-skool .opencode/skills/pp-skool && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "pp-skool" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-skool into .opencode/skills/pp-skool/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-skool", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
pp-skoolEvery Skool community feature, plus a local SQLite mirror, FTS, and cross-community ops no other Skool tool ships.
Pp Skool is an agent skill from mvanhorn/printing-press-library. Every Skool community feature, plus a local SQLite mirror, FTS, and cross-community ops no other Skool tool ships.
Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Databases. It works with SQLite and SQL. The repository describes itself as: Official library of CLIs generated by the CLI Printing Press. Endorsed, tested, and community-contributed. The licence is Apache-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 0fdcc7a. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadBashFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
goclaudenpxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Pp Skool loads about 4k tokens when it runs. Until then it costs about 31 tokens; SKILL.md has 1,642 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, BashAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from mvanhorn/printing-press-library at commit 0fdcc7a, republished under its Apache-2.0 licence (© mvanhorn). 1,642 words, ~4,030 tokens.
.claude/skills/pp-skool/SKILL.md (or your agent's skills folder).<!-- GENERATED FILE — DO NOT EDIT.
This file is a verbatim mirror of library/media-and-entertainment/skool/SKILL.md,
regenerated post-merge by tools/generate-skills/. Hand-edits here are
silently overwritten on the next regen. Edit the library/ source instead.
See the repository agent guide, section "Generated artifacts: registry.json, cli-skills/". -->
This skill drives the skool-pp-cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
$HOME/.local/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows:npx -y @mvanhorn/printing-press-library install skool --cli-onlyskool-pp-cli --version$PATH for the agent/runtime that will invoke this skill.If the npx install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.6 or newer):
go install github.com/mvanhorn/printing-press-library/library/media-and-entertainment/skool/cmd/skool-pp-cli@latestIf --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.
Use this CLI when you operate or moderate a Skool community and need analytics, exports, or automation that the native UI cannot do — classroom-to-markdown export, cross-community SQL, or scheduled digests for an agent.
These capabilities aren't available in any other tool for this API.
posts top — Rank recent posts by upvotes, comments, or engagement and return them with full content.
Pick this for a daily/weekly cron that surfaces the 3-5 most-engaging posts from any community — perfect for catching up without scrolling.
skool-pp-cli posts top --community earlyaidopters --since 7d --top 5 --by engagement --jsonleaderboard — Top members by points for the community, with level and bio fields included.
Pick this when an agent needs the current community leaderboard in one call without scraping the page.
skool-pp-cli leaderboard --community bewarethedefault --top 25 --jsondigest since — Aggregate everything new across posts, comments, members, and lessons since a timestamp.
Pick this when an agent needs a single brief of community activity for a daily/weekly cron.
skool-pp-cli digest since 24h --jsonsql — Run read-only SQL across every community in your local store.
Pick this when an agent needs to compose a query across multiple Skool communities you own or operate.
skool-pp-cli sql 'SELECT community, COUNT(*) FROM posts GROUP BY community'sync --resources posts,members — Hydrate the local SQLite mirror with a community's posts and members, unwrapped out of the Next.js page envelope.
Pick this before search or sql — both read the mirror, and until posts and members are hydrated the mirror is empty.
skool-pp-cli sync --community <community-slug> --resources posts,memberscalendar export — Export upcoming community events to an .ics file for Google Cal / Outlook.
Pick this when a member wants community events on their personal calendar without manual entry.
skool-pp-cli calendar export --ics > community.icsclassroom export — Export an entire course to a markdown bundle (modules, lessons, attachments, video URLs).
Pick this when an agent needs to ingest a course for offline reference, search, or LLM retrieval.
skool-pp-cli classroom export <course-slug> --out ./course/This CLI uses Chrome-compatible HTTP transport for browser-facing endpoints. It does not require a resident browser process for normal API calls.
calendar — Community calendar events
skool-pp-cli calendar <buildId> — List upcoming and recent calendar eventsclassroom — Classroom (courses, modules, lessons) for a community
skool-pp-cli classroom get-course — Get a single course with its modules and lessonsskool-pp-cli classroom list — List all courses in a communitycommunity — Community feed, settings, and metadata
skool-pp-cli community about — About page (rules, owner, member count)skool-pp-cli community info — Get the community feed (posts, leaderboard summary, upcoming events, settings)skool-pp-cli community leaderboard-tab — Leaderboard tab (community page rendered with t=leaderboard)skool-pp-cli community members-tab — Members tab data (community page rendered with t=members)me — Current authenticated user dashboard
skool-pp-cli me <buildId> — Get current user, joined communities, and dashboard statemembers — Community members and moderation
skool-pp-cli members list — List members of a communityskool-pp-cli members approve — Approve a pending member requestskool-pp-cli members ban — Ban a member from the communityskool-pp-cli members pending — List pending member join requestsskool-pp-cli members reject — Reject a pending member requestnotifications — User notifications
skool-pp-cli notifications list — List notifications for the authenticated userskool-pp-cli notifications mark-read — Mark notifications as read (empty ids = mark all)posts — Posts (forum threads) inside a community
skool-pp-cli posts list — List posts in a community (newest first)skool-pp-cli posts comment — Add a comment to a postskool-pp-cli posts create — Create a new post (body = TipTap JSON; use --md to convert markdown)skool-pp-cli posts delete — Delete a postskool-pp-cli posts get — Get a post detail page including comment treeskool-pp-cli posts like — Like (upvote) a postskool-pp-cli posts unlike — Unlike a postskool-pp-cli posts update — Update an existing postThis printed CLI owns bounded freshness only for registered store-backed read command paths. In --data-source auto mode, those paths check sync_state and may run a bounded refresh before reading local data. --data-source local never refreshes. --data-source live reads the API and does not mutate the local store. Set SKOOL_NO_AUTO_REFRESH=1 to skip the freshness hook without changing source selection.
Covered paths:
skool-pp-cli notificationsskool-pp-cli notifications listskool-pp-cli notifications mark-readWhen JSON output uses the generated provenance envelope, freshness metadata appears at meta.freshness. Treat it as current-cache freshness for the covered command path, not a guarantee of complete historical backfill or API-specific enrichment.
When you know what you want to do but not which command does it, ask the CLI directly:
skool-pp-cli which "<capability in your own words>"which resolves a natural-language capability query to the best matching command from this CLI's curated feature index. Exit code 0 means at least one match; exit code 2 means no confident match — fall back to --help or use a narrower query.
skool-pp-cli sync --community <community-slug> && skool-pp-cli digest since 24h --community <community-slug> --json --select new_posts,new_members,top_commentsOne sync + one query. Pipes cleanly to a scheduled agent that drafts a Slack/email digest.
skool-pp-cli classroom export ai-foundations --out ./ai-foundations/Recursive walk: modules → lessons → attachments + Mux URLs. One folder per course, ready for LLM ingestion.
skool-pp-cli sync --community <community-slug> --resources posts,members
skool-pp-cli search "onboarding" --limit 10sync walks the community page, unwraps pageProps.postTrees[].post for posts and the members array for members, and upserts both into SQLite. FTS search and sql read that mirror, so this is the step that makes them useful. Failures are reported per resource as {"event":"sync_error","resource":...,"error":...} under --agent.
skool-pp-cli sql 'SELECT community, COUNT(*) AS posts_30d FROM posts WHERE created_at > date("now","-30 days") GROUP BY community ORDER BY posts_30d DESC'Read-only SQL over the local store. Works across every community you have synced.
skool-pp-cli leaderboard --community bewarethedefault --top 10 --jsonCurrent 30-day leaderboard. Members with rank, points, level, bio fields.
The CLI supports any Skool community you're a member of — the auth_token cookie covers all communities you're logged into globally. Switch communities via the --community <slug> flag on any command, or change the default in ~/.config/skool-pp-cli/config.toml under [template_vars].
# Default community from config
skool-pp-cli digest since 24h
# Override per call
skool-pp-cli digest since 24h --community early-ai-adopters --json
skool-pp-cli leaderboard --community some-other-community --top 10
# Sync multiple communities into one local store (each row gets a community tag)
skool-pp-cli sync --community bewarethedefault
skool-pp-cli sync --community early-ai-adopters
# Cross-community SQL once both are synced
skool-pp-cli sql "SELECT community, resource_type, COUNT(*) FROM resources GROUP BY community, resource_type"
# Bash one-liner: daily digest across N communities
for c in bewarethedefault early-ai-adopters another-community; do
skool-pp-cli digest since 24h --community "$c" --json --select community,new_post_count,new_posts >> ~/skool-daily-digest.jsonl
doneThe community-tagged store is the foundation for the v0.3 cross-community analytics commands (at-risk members, churn cohort, engagement profile across communities).
skool-pp-cli posts top --community earlyaidopters --since 7d --top 5 --by engagement --json
skool-pp-cli posts top --community bewarethedefault --since 24h --top 3 --by upvotesThe headline daily/weekly command. Walks paginated community feed, dedups, filters to window, ranks by upvotes / comments / engagement / newest, returns full post body so the agent has everything it needs in one call.
Skool has no public API. Authenticate with the auth_token JWT cookie from your logged-in browser session: skool-pp-cli auth login (writes ~/.config/skool-pp-cli/config.toml). Add --chrome to read the cookie straight out of a logged-in Chrome profile. The auth surface is auth login, auth logout, and auth status — there is no auth set-token. Same cookie covers reads and writes; CloudFront requires a realistic User-Agent which the CLI sets automatically.
Run skool-pp-cli doctor to verify setup.
Add --agent to any command. Expands to: --json --compact --no-input --no-color --yes.
Pipeable — JSON on stdout, errors on stderr
Filterable — --select keeps a subset of fields. Dotted paths descend into nested structures; arrays traverse element-wise. Critical for keeping context small on verbose APIs:
skool-pp-cli calendar mock-value --community example-value --agent --select id,name,statusPreviewable — --dry-run shows the request without sending
Offline-friendly — sync/search commands can use the local SQLite store when available
Non-interactive — never prompts, every input is a flag
Explicit retries — use --idempotent only when an already-existing create should count as success, and --ignore-missing only when a missing delete target should count as success
Commands that read from the local store or the API wrap output in a provenance envelope:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}Parse .results for data and .meta.source to know whether it's live or local. A human-readable N results (live) summary is printed to stderr only when stdout is a terminal — piped/agent consumers get pure JSON on stdout.
When you (or the agent) notice something off about this CLI, record it:
skool-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
skool-pp-cli feedback --stdin < notes.txt
skool-pp-cli feedback list --json --limit 10Entries are stored locally at ~/.skool-pp-cli/feedback.jsonl. They are never POSTed unless SKOOL_FEEDBACK_ENDPOINT is set AND either --send is passed or SKOOL_FEEDBACK_AUTO_SEND=true. Default behavior is local-only.
Write what surprised you, not a bug report. Short, specific, one line: that is the part that compounds.
Every command accepts --deliver <sink>. The output goes to the named sink in addition to (or instead of) stdout, so agents can route command results without hand-piping. Three sinks are supported:
| Sink | Effect |
|---|---|
stdout | Default; write to stdout only |
file:<path> | Atomically write output to <path> (tmp + rename) |
webhook:<url> | POST the output body to the URL (application/json or application/x-ndjson when --compact) |
Unknown schemes are refused with a structured error naming the supported set. Webhook failures return non-zero and log the URL + HTTP status on stderr.
A profile is a saved set of flag values, reused across invocations. Use it when a scheduled agent calls the same command every run with the same configuration - HeyGen's "Beacon" pattern.
skool-pp-cli profile save briefing --json
skool-pp-cli --profile briefing calendar mock-value --community example-value
skool-pp-cli profile list --json
skool-pp-cli profile show briefing
skool-pp-cli profile delete briefing --yesExplicit flags always win over profile values; profile values win over defaults. agent-context lists all available profiles under available_profiles so introspecting agents discover them at runtime.
| Code | Meaning |
|---|---|
| 0 | Success |
| 2 | Usage error (wrong arguments) |
| 3 | Resource not found |
| 4 | Authentication required |
| 5 | API error (upstream issue) |
| 7 | Rate limited (wait and retry) |
| 10 | Config error |
Parse $ARGUMENTS:
help, or --help → show skool-pp-cli --help outputinstall → ends with mcp → MCP installation; otherwise → see Prerequisites above--agent)go install github.com/mvanhorn/printing-press-library/library/other/skool/cmd/skool-pp-mcp@latestclaude mcp add skool-pp-mcp -- skool-pp-mcpclaude mcp listwhich skool-pp-cli
If not found, offer to install (see Prerequisites at the top of this skill).--agent flag:skool-pp-cli <command> [subcommand] [args] --agentskool-pp-cli <command> --help.© mvanhorn, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in cli-skills/pp-skool of mvanhorn/printing-press-library.
Open the folder on GitHubat commit 0fdcc7a
Pp Skool next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Pp Skool this skillmvanhorn/printing-press-library | 2.1k | — | ~4k | Automated safety check: Notes | Apache-2.0 | |
| SQL Database Support for pRESTprest/prest | 4.6k | — | ~1.6k | Automated safety check: Pass | MIT | |
| Cursor BYOK Database Schemaleookun/cursor-byok | 3.2k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Squixeduardofuncao/squix | 273 | — | ~784 | Automated safety check: Pass | MIT | |
| Drizzle Migrationsbretzel-app/crumbs | 127 | 1 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Analyzing SQL Tracesnwjs/chromium.src | 160 | — | ~2.9k | Automated safety check: Pass | BSD-3-Clause |
prest/prest
Guides classifying, gap-analyzing and scaffolding support for a new SQL database in pREST, from Postgres-compatible variants to entirely new dialects.
leookun/cursor-byok
Guides SQLite schema changes in the Cursor BYOK server, keeping SQLx migrations, the Rust store, API contracts and fixtures aligned.
eduardofuncao/squix
Run SQL queries across databases (Postgres, MySQL, SQLite, etc.) via the squix CLI.
bretzel-app/crumbs
Drizzle ORM schema management and SQLite migrations — adding tables, modifying columns, creating indexes, generating and running migrations, Drizzle query patterns.
nwjs/chromium.src
Extracts raw trace data from Perfetto traces, runs arbitrary SQL queries for custom follow-up analysis, and applies expert cognitive principles (Tiered Flow Analysis, Semantic Mismatch, Redundancy)…
unxed/f4
Comprehensive guide for Go database access — parameterized queries, struct scanning, NULLable columns, transactions, isolation levels, SELECT FOR UPDATE, connection pool, batch processing, context…
mvanhorn/printing-press-library
Desktop automation through the real Rust agent-desktop CLI, published in Printing Press through a small bridge.
mvanhorn/printing-press-library
Search, browse, and download Google Fonts from the terminal via the gfonts CLI.
mvanhorn/printing-press-library
The free, offline Trigger phrases: search 1688 for, find a factory on 1688 for, wholesale price on 1688 for, who is the cheapest supplier on 1688 for, compare 1688 suppliers for, use 1688, run 1688.
mvanhorn/printing-press-library
Inspect known Activity Japan plan IDs or URLs, compare dated prices and sessions, check language-sitemap coverage, and hand off to canonical booking pages.
mvanhorn/printing-press-library
Every Admin By Request portal action, plus a local SQLite mirror of audit, events, inventory and requests for ad-hoc...
mvanhorn/printing-press-library
macOS screen capture, window recording, GIF conversion, and agent evidence bundles from the terminal.
Categories
Every Skool community feature, plus a local SQLite mirror, FTS, and cross-community ops no other Skool tool ships. Pp Skool is an agent skill from mvanhorn/printing-press-library. Every Skool community feature, plus a local SQLite mirror, FTS, and cross-community ops no other Skool tool ships.
Pp Skool fits situations like: databases work in your project.
Run `npx skills add mvanhorn/printing-press-library --skill pp-skool -a claude-code`. Or copy the skill folder (cli-skills/pp-skool in mvanhorn/printing-press-library) into .claude/skills/pp-skool in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mvanhorn/printing-press-library --skill pp-skool -a codex`. Or copy the skill folder (cli-skills/pp-skool in mvanhorn/printing-press-library) into .agents/skills/pp-skool in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mvanhorn/printing-press-library --skill pp-skool -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pp-skool, .gemini/skills/pp-skool, .github/skills/pp-skool and .opencode/skills/pp-skool in your project.
Going by SKILL.md and its folder, Pp Skool needs the command-line tools its instructions call (go, claude and npx). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Bash.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Pp Skool is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Pp Skool: SQL Database Support for pREST (prest/prest, 4.6k stars), Cursor BYOK Database Schema (leookun/cursor-byok, 3.2k stars), Squix (eduardofuncao/squix, 273 stars) and Drizzle Migrations (bretzel-app/crumbs, 127 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
mvanhorn (a GitHub user) maintains it in mvanhorn/printing-press-library, which has 2,053 GitHub stars. The repository holds 505 skills in this directory. The repository was last updated on October 7, 2026.
Source: mvanhorn/printing-press-library on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.