Documentation
Skool CLI
skool-pp-cli
Install
npx -y @mvanhorn/printing-press-library install skoolInstalls 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
Every Skool community feature, plus a local SQLite mirror, FTS, and cross-community ops no other Skool tool ships.
Pulls every post, comment, member, course, lesson, and calendar event into a local SQLite store with FTS5 so you can query historical state, compute leaderboard deltas, and surface at-risk members the native UI cannot show. One auth_token cookie, two hosts (www.skool.com reads, api2.skool.com writes), zero CloudFront friction.
Created by @quoxientzero (Zain Haseeb). Contributors: @tmchow (Trevin Chow).
Authentication
Skool has no public API. Authenticate with the auth_token JWT cookie from your logged-in browser session: skool-pp-cli auth set-token (writes ~/.config/skool-pp-cli/config.toml). Same cookie covers reads and writes; CloudFront requires a realistic User-Agent which the CLI sets automatically.
Quick Start
# Paste your auth_token cookie value once; lives in TOML config
skool-pp-cli auth set-token
# First-time sync of the community into the local store
skool-pp-cli sync bewarethedefault
# List recent posts with field selection
skool-pp-cli posts list --limit 10 --json --select id,name,user.name
# Current 30-day leaderboard
skool-pp-cli leaderboard --type 30d --top 25
# Transcendence: members whose engagement velocity is dropping
skool-pp-cli members at-risk --weeks 4 --json
# What's new in the last day across the community
skool-pp-cli digest since 24h
Unique Features
These capabilities aren't available in any other tool for this API.
Local state that compounds
-
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 --json -
leaderboard— 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 --json -
digest 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 --json -
sql— 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'
Agent-native plumbing
-
calendar 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.ics -
classroom 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/
Usage
Run skool-pp-cli --help for the full command reference and flag list.
Commands
calendar
Community calendar events
skool-pp-cli calendar list- List upcoming and recent calendar events
classroom
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 community
community
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 get- Get current user, joined communities, and dashboard state
members
Community members and moderation
skool-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 request
notifications
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 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 post
Output Formats
# Human-readable table (default in terminal, JSON when piped)
skool-pp-cli calendar mock-value --community example-value
# JSON for scripting and agents
skool-pp-cli calendar mock-value --community example-value --json
# Filter to specific fields
skool-pp-cli calendar mock-value --community example-value --json --select id,name,status
# Dry run — show the request without sending
skool-pp-cli calendar mock-value --community example-value --dry-run
# Agent mode — JSON + compact + no prompts in one flag
skool-pp-cli calendar mock-value --community example-value --agent
Agent Usage
This 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 - Explicit retries - add
--idempotentto create retries and--ignore-missingto delete retries when a no-op success is acceptable - Confirmable -
--yesfor explicit confirmation of destructive actions - Piped input - write commands can accept structured input when their help lists
--stdin - 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, 4 auth error, 5 API error, 7 rate limited, 10 config error.
Freshness
This CLI owns bounded freshness for registered store-backed read command paths. In --data-source auto mode, covered commands check the local SQLite store before serving results; stale or missing resources trigger a bounded refresh, and refresh failures fall back to the existing local data with a warning. --data-source local never refreshes, and --data-source live reads the API without mutating the local store.
Set SKOOL_NO_AUTO_REFRESH=1 to disable the pre-read freshness hook while preserving the selected data source.
Covered command paths:
skool-pp-cli notificationsskool-pp-cli notifications listskool-pp-cli notifications mark-read
JSON outputs that use the generated provenance envelope include freshness metadata at meta.freshness. This metadata describes the freshness decision for the covered command path; it does not claim full historical backfill or API-specific enrichment.
Runtime Endpoint
This CLI resolves endpoint placeholders at runtime, so one installed binary can target different tenants or API versions without regeneration.
Endpoint environment variables:
SKOOL_COMMUNITYresolves{community}SKOOL_BUILDIDresolves{buildId}
Base URL: https://www.skool.com
Health Check
skool-pp-cli doctor
Verifies configuration, credentials, and connectivity to the API.
Configuration
Config file: ~/.config/skool-pp-cli/config.toml
Troubleshooting
Authentication errors (exit code 4)
- Run
skool-pp-cli doctorto check credentials Not found errors (exit code 3) - Check the resource ID is correct
- Run the
listcommand to see available items
API-specific
- 404 on read endpoints — Run
skool-pp-cli doctor; the buildId likely rotated. The CLI auto-refetches but you can forceskool-pp-cli buildid refresh. - 403 from CloudFront — Your auth_token expired or User-Agent is missing. Run
skool-pp-cli auth statusthenauth set-tokenwith a fresh cookie. - Empty leaderboard delta — Need at least two snapshots. Run
skool-pp-cli syncover multiple days, orsync --snapshot-nowto seed two points.
HTTP Transport
This CLI uses Chrome-compatible HTTP transport for browser-facing endpoints. It does not require a resident browser process for normal API calls.
Sources & Inspiration
This CLI was built by studying these projects and resources:
- louiewoof2026/skool-mcp — TypeScript
- cristiantala/skool-all-in-one-api — TypeScript
- FlowExtractAPI/skool-scraper-pro — TypeScript
- moon-home/scraper — Python
- aperswal/Skool_Active_Members_Chrome_Extension — JavaScript
Generated by CLI Printing Press
For agents: pass /documentation/skool/agents.md to install this CLI from a prompt.