pp-skool
Every Skool community feature, plus a local SQLite mirror, FTS, and cross-community ops no other Skool tool ships.
What this skill does
<!-- 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/". -->
# Skool — Printing Press CLI
## Prerequisites: Install the CLI
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:
1. Install via the Printing Press installer. It defaults binaries to `$HOME/.local/bin` on macOS/Linux and `%LOCALAPPDATA%\Programs\PrintingPress\bin` on Windows:
```bash
npx -y @mvanhorn/printing-press-library install skool --cli-only
```
2. Verify: `skool-pp-cli --version`
3. Ensure the reported install directory is on `$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.3 or newer):
```bash
go install github.com/mvanhorn/printing-press-library/library/media-and-entertainment/skool/cmd/skool-pp-cli@latest
```
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.
## When to Use This CLI
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.
## Unique Capabilities
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._
```bash
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._
```bash
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._
```bash
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._
```bash
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._
```bash
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._
```bash
skool-pp-cli classroom export <course-slug> --out ./course/
```
## 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.
## Command Reference
**calendar** — Community calendar events
- `skool-pp-cli calendar <buildId>` — 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 lessons
- `skool-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 <buildId>` — Get current user, joined communities, and dashboard state
**members** — Community members and moderation
- `skool-pp-cli members approve` — Approve a pending member request
- `skool-pp-cli members ban` — Ban a member from the community
- `skool-pp-cli members pending` — List pending member join requests
- `skool-pp-cli members reject` — Reject a pending member request
**notifications** — User notifications
- `skool-pp-cli notifications list` — List notifications for the authenticated user
- `skool-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 post
- `skool-pp-cli posts create` — Create a new post (body = TipTap JSON; use --md to convert markdown)
- `skool-pp-cli posts delete` — Delete a post
- `skool-pp-cli posts get` — Get a post detail page including comment tree
- `skool-pp-cli posts like` — Like (upvote) a post
- `skool-pp-cli posts unlike` — Unlike a post
- `skool-pp-cli posts update` — Update an existing post
## Freshness Contract
This 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 notifications`
- `skool-pp-cli notifications list`
- `skool-pp-cli notifications mark-read`
When 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.
### Finding the right command
When you know what you want to do but not which command does it, ask the CLI directly:
```bash
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.
## Recipes
### Daily digest cron
```bash
skool-pp-cli sync bewarethedefault && skool-pp-cli digest since 24h --json --select new_posts,new_members,top_comments
```
One sync + one query. Pipes cleanly to a scheduled agent that drafts a Slack/email digest.
### Export a course to markdown
```bash
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.
### Cross-community engagement SQL
```bash
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.
### Top 10 leaderboard
```bash
skool-pp-cli leaderboard --community bewarethedefault --top 10 --json
```
Current 30-day leaderboard. Members with rank, points, level, bio fields.
## Multi-community use
The CLI supports any Skool comRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.