Spider King
aoyunyang/spider-king-skill
Pure-web protocol reverse skill: turn hostile browser clients into browser-free Python collectors.
Printing Press CLI + MCP for Goodreads, read and write — rate books (GraphQL RateBook/UnrateBook), write/publicize reviews, add to and create shelves, home feed, friends, recommendations…
$ npx skills add mvanhorn/printing-press-library --skill pp-goodreads -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mvanhorn/printing-press-library pp-goodreads --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-goodreads .claude/skills/pp-goodreads && 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-goodreads" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-goodreads into .claude/skills/pp-goodreads/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-goodreads", 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-goodreadsType 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-goodreads -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mvanhorn/printing-press-library pp-goodreads --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-goodreads .agents/skills/pp-goodreads && 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-goodreads" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-goodreads into .agents/skills/pp-goodreads/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-goodreads", 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-goodreads -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mvanhorn/printing-press-library pp-goodreads --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-goodreads .cursor/skills/pp-goodreads && 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-goodreads" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-goodreads into .cursor/skills/pp-goodreads/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-goodreads", 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-goodreads--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-goodreads -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mvanhorn/printing-press-library pp-goodreads --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-goodreads .gemini/skills/pp-goodreads && 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-goodreads" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-goodreads into .gemini/skills/pp-goodreads/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-goodreads", 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-goodreadsInstalls 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-goodreads -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-goodreads .github/skills/pp-goodreads && 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-goodreads" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-goodreads into .github/skills/pp-goodreads/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-goodreads", 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-goodreads -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-goodreads --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-goodreads .opencode/skills/pp-goodreads && 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-goodreads" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-goodreads into .opencode/skills/pp-goodreads/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-goodreads", 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-goodreadsPrinting Press CLI + MCP for Goodreads, read and write — rate books (GraphQL RateBook/UnrateBook), write/publicize reviews, add to and create shelves, home feed, friends, recommendations…
Pp Goodreads is an agent skill from mvanhorn/printing-press-library. Printing Press CLI + MCP for Goodreads, read and write — rate books (GraphQL RateBook/UnrateBook), write/publicize reviews, add to and create shelves, home feed, friends, recommendations, genre/topic search, book pages, and Goodreads Giveaways. Reverse-engineered from the logged-in web app (no public API), live-verified.
Its SKILL.md is about 4.1k 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 Backend & APIs, covering GraphQL. It works with Model Context Protocol and GraphQL. 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 d9a1696. 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:
claudenpxgoFrom 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 these keys or tokens, usually read from environment variables:
GOODREADS_AUTHENTICITY_TOKENGOODREADS_GRAPHQL_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Pp Goodreads loads about 4.1k tokens when it runs. Until then it costs about 84 tokens; SKILL.md has 1,780 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 d9a1696, republished under its Apache-2.0 licence (© mvanhorn). 1,780 words, ~4,110 tokens.
.claude/skills/pp-goodreads/SKILL.md (or your agent's skills folder).<!-- GENERATED FILE — DO NOT EDIT.
This file is a verbatim mirror of library/media-and-entertainment/goodreads/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 goodreads-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 goodreads --cli-onlygoodreads-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/goodreads/cmd/goodreads-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.
This CLI uses Chrome-compatible HTTP transport for browser-facing endpoints and sends the configured Goodreads session as the _session_id2 cookie. It does not require a resident browser process for normal API calls.
The MCP binary defaults to stdio and can serve streamable HTTP for hosted agents:
goodreads-pp-mcp
goodreads-pp-mcp --transport http --addr :7777Default MCP registration exposes goodreads_search and goodreads_execute for the full route map, plus local search, sql, and context. Raw endpoint mirror tools are opt-in with GOODREADS_MCP_ENDPOINT_MIRRORS=1. Mutating routes remain blocked unless GOODREADS_PP_ALLOW_WRITES=1 is set after explicit approval.
amazon-purchases — Manage amazon purchases
goodreads-pp-cli amazon-purchases — Amazon purchases import/inspection page.book — Manage book
goodreads-pp-cli book <book_slug> — Book detail page. Current page is Next.js-backed.comment — Manage comment
goodreads-pp-cli comment <user_slug> — User comments/recent posts page.feed — Read the home updates feed (friends' activity)
goodreads-pp-cli feed list — Read the home updates feed (friends' activity). Use --page <n> to walk older activity. Read-only POST to /home/load_more_updates.friend — Explore Goodreads friends and friend requests
goodreads-pp-cli friend list — Friends index page.goodreads-pp-cli friend list-requests — Friend requests page.genres — Browse Goodreads genre and shelf discovery pages
goodreads-pp-cli genres get — Genre landing page.goodreads-pp-cli genres list — Genre index page.goodreads-pp-cli genres list-list — Alphabetical genre shelves index.goodreads-pp-cli genres list-search — Genre finder route.giveaway — Browse and enter Goodreads Giveaways
goodreads-pp-cli giveaway list — Browse the Goodreads Giveaways listing (--format, --genre).goodreads-pp-cli giveaway show <giveaway_id> — Show one giveaway detail page.goodreads-pp-cli giveaway enter <giveaway_id> — Enter a giveaway. NOT YET LIVE: the entry POST shape was not captured; live execution is refused, --dry-run previews the best-known request.goodreads-web-undocumented-search — Manage goodreads web undocumented search
goodreads-pp-cli goodreads-web-undocumented-search — Canonical book search route from OpenSearch descriptor.list — Manage list
goodreads-pp-cli list <list_id> — Public Listopia list page.message — Inspect and plan Goodreads message-folder actions
goodreads-pp-cli message create — Batch message folder/read action.goodreads-pp-cli message get — User message folder page.goodreads-pp-cli message get-show — Message detail page.goodreads-pp-cli message list — User message inbox.goodreads-pp-cli message list-markallasread — Mark all visible inbox messages read.notes — Read and plan Kindle notes/highlights actions
goodreads-pp-cli notes get — User Kindle Notes & Highlights index.goodreads-pp-cli notes get-bookslug — Notes/highlights detail page for one book and user.notifications — Inspect Goodreads notifications and tracking calls
goodreads-pp-cli notifications create — Notification tracking call emitted by the UI.goodreads-pp-cli notifications list — User notifications page.opensearch-xml — Manage opensearch xml
goodreads-pp-cli opensearch-xml — OpenSearch descriptor for Goodreads book search.quotes — Read Goodreads quotes and quote widgets
goodreads-pp-cli quotes get — User quotes widget script.goodreads-pp-cli quotes list — Current user's quotes list.rating — Set or clear your star rating for a book (GraphQL)
Ratings are written through the modern Goodreads AWS AppSync GraphQL API (RateBook / UnrateBook), not a legacy form. They need a bound AppSync JWT — a different credential from the session cookie. Set it via GOODREADS_GRAPHQL_TOKEN (see Auth Setup). Writes are gated: --dry-run to preview, or GOODREADS_PP_ALLOW_WRITES=1 after approval to execute.
goodreads-pp-cli rating set <book_id> --stars <1-5> — Rate a book (RateBook GraphQL mutation).goodreads-pp-cli rating clear <book_id> — Clear your rating (UnrateBook GraphQL mutation).recommendations — Inspect Goodreads recommendation pages
goodreads-pp-cli recommendations list — Personalized recommendations page.goodreads-pp-cli recommendations list-tome — Friends' recommendations page.review — Read and write reviews; plan bookshelf/review table actions
goodreads-pp-cli review create <book_id> — Write/update a review for a book (--review, --spoiler, --publicize, --add-to-blog, --shelf, --notes). Posts the legacy /review/update/:book_id form (form-urlencoded). The Rails CSRF token comes from the GOODREADS_AUTHENTICITY_TOKEN env var or stdin (the --authenticity-token flag is deprecated — it leaks into shell history / ps aux). Star ratings are GraphQL-only — use rating set.goodreads-pp-cli review create-update <book_id> --stdin — Inline review/date/notes field update for one book. Pipe a JSON object of Rails review form fields (e.g. {"review[review]":"..."}); sent form-urlencoded to /review/update/:book_id. CSRF token via GOODREADS_AUTHENTICITY_TOKEN.goodreads-pp-cli review create-updatelist — Batch update selected reviews/books on a user's shelf table.goodreads-pp-cli review get — Bookshelf list for a user, optionally filtered by shelf.goodreads-pp-cli review get-listrss — This public XML route is the cleanest current read API for shelf exports.goodreads-pp-cli review get-stats — Reading stats page.goodreads-pp-cli review list — Review drafts page.goodreads-pp-cli review list-duplicates — Duplicate books tool.goodreads-pp-cli review list-import — Import/export page.shelf — Inspect and plan Goodreads shelf operations
goodreads-pp-cli shelf create — Add or remove one book from a shelf through the shelf chooser helper.goodreads-pp-cli shelf create-movebatch — Reorder books/shelves in batch.goodreads-pp-cli shelf create-movebatch-2 — Persist shelf-table position changes for a user.goodreads-pp-cli shelf create-movetoposition — Move one shelf/book row to a specific position.goodreads-pp-cli shelf create-removebook — Remove one book from a shelf from the button helper.goodreads-pp-cli shelf create-update — Update shelf display/settings.goodreads-pp-cli shelf get — Public shelf landing page.goodreads-pp-cli shelf list — Top public shelves index.tooltips — Manage tooltips
goodreads-pp-cli tooltips — Batch tooltip metadata for book ids shown in shelf/list pages.topic — Manage topic
goodreads-pp-cli topic — Discussions page, optionally filtered to groups.user — Inspect Goodreads profile and people pages
goodreads-pp-cli user get — Profile delay-loaded sections.goodreads-pp-cli user get-show — User profile page.goodreads-pp-cli user get-yearinbooks — Year in Books page.goodreads-pp-cli user list — People discovery page for most popular reviewers.goodreads-pp-cli user list-topreaders — People discovery page for top readers.goodreads-pp-cli user list-topreviewers — People discovery page for top reviewers.user-following — Inspect Goodreads most-followed people discovery
goodreads-pp-cli user-following — People discovery page for most-followed users.user-shelves — Plan custom Goodreads shelf creation
goodreads-pp-cli user-shelves — Create a custom user shelf.When you know what you want to do but not which command does it, ask the CLI directly:
goodreads-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.
Goodreads no longer offers new public developer API keys. Run goodreads-pp-cli auth setup to print the URL and steps for configuring a Goodreads browser session cookie (add --launch to open Goodreads). Then set only the Goodreads _session_id2 cookie value:
export GOODREADS_GOODREADS_COOKIE_SESSION="<your-goodreads-session-cookie>"Or persist it in ~/.config/goodreads-web-undocumented-pp-cli/config.toml.
Do not paste broad Amazon, AWS, or unrelated browser cookies.
Run goodreads-pp-cli doctor to verify setup.
The rating set / rating clear commands write through the modern Goodreads AWS AppSync GraphQL API, which authenticates with a bound JWT — a separate credential from the session cookie. To obtain it:
goodreads.com logged in, open browser DevTools → Network.*.appsync-api.*.amazonaws.com/graphql.Authorization request header.export GOODREADS_GRAPHQL_TOKEN='<that value>'The session cookie alone cannot authenticate GraphQL. A mint-from-cookie endpoint was not observed in the live capture, so the env var is the supported path. All other commands (reads, the legacy review form, shelf writes) use only the session cookie.
The legacy form writes (review create, review create-update, shelf create) need a Rails CSRF authenticity_token from the relevant edit page (e.g. the hidden authenticity_token input on /review/edit/:book_id). Supply it via the GOODREADS_AUTHENTICITY_TOKEN env var (preferred) or pipe it on stdin — both keep it out of shell history and the process table (ps aux). The --authenticity-token flag still works but is deprecated for that reason.
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:
goodreads-pp-cli amazon-purchases --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
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 AND no machine-format flag (--json, --csv, --compact, --quiet, --plain, --select) is set — piped/agent consumers and explicit-format runs get pure JSON on stdout.
When you (or the agent) notice something off about this CLI, record it:
goodreads-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
goodreads-pp-cli feedback --stdin < notes.txt
goodreads-pp-cli feedback list --json --limit 10Entries are stored locally at ~/.goodreads-pp-cli/feedback.jsonl. They are never POSTed unless GOODREADS_FEEDBACK_ENDPOINT is set AND either --send is passed or GOODREADS_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.
goodreads-pp-cli profile save briefing --json
goodreads-pp-cli --profile briefing amazon-purchases
goodreads-pp-cli profile list --json
goodreads-pp-cli profile show briefing
goodreads-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 goodreads-pp-cli --help outputinstall → ends with mcp → MCP installation; otherwise → see Prerequisites above--agent)Install the MCP binary from this CLI's published public-library entry or pre-built release, then register it:
claude mcp add goodreads-pp-mcp -- goodreads-pp-mcpVerify: claude mcp list
which goodreads-pp-cli
If not found, offer to install (see Prerequisites at the top of this skill).--agent flag:goodreads-pp-cli <command> [subcommand] [args] --agentgoodreads-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-goodreads of mvanhorn/printing-press-library.
Open the folder on GitHubat commit d9a1696
Pp Goodreads 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 Goodreads this skillmvanhorn/printing-press-library | 2.1k | — | ~4.1k | Automated safety check: Notes | Apache-2.0 | |
| Spider Kingaoyunyang/spider-king-skill | 509 | — | ~7.3k | Automated safety check: Pass | MIT | |
| Cuga GitHub Issuescuga-project/cuga-agent | 896 | — | ~1.2k | Automated safety check: Pass | Custom licence | |
| SpikardGoldziher/spikard | 124 | — | ~799 | Automated safety check: Pass | MIT | |
| Executor Usagejeremyosih/pi-executor | 104 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Inspect Linear SDKtacticlaunch/mcp-linear | 147 | — | ~288 | Automated safety check: Pass | MIT |
aoyunyang/spider-king-skill
Pure-web protocol reverse skill: turn hostile browser clients into browser-free Python collectors.
cuga-project/cuga-agent
Create GitHub issues for cuga-agent (bugs, features, epics, designs, and related work) against origin using gh, with epic → feature → issue hierarchy and GraphQL sub-issue linking.
Goldziher/spikard
Scaffold Spikard projects and generate code from OpenAPI, AsyncAPI, OpenRPC, GraphQL, and Protobuf schemas using the Spikard CLI or its MCP server.
jeremyosih/pi-executor
Load this skill before using the execute tool. An agent skill from jeremyosih/pi-executor.
tacticlaunch/mcp-linear
Inspect the Linear SDK and generated GraphQL types before adding or changing a Linear capability in mcp-linear.
team-mirai/mirai-gikai
Linear と対話するためのスキル。Linear MCP サーバー(mcplinear ツール)を 優先的に使用し、MCP でカバーされない生の GraphQL 操作(イントロスペクション、 ファイルアップロードなど)は lineargraphql クライアントツールにフォールバックする。
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.
Works with
Categories
Printing Press CLI + MCP for Goodreads, read and write — rate books (GraphQL RateBook/UnrateBook), write/publicize reviews, add to and create shelves, home feed, friends, recommendations…. Pp Goodreads is an agent skill from mvanhorn/printing-press-library. Printing Press CLI + MCP for Goodreads, read and write — rate books (GraphQL RateBook/UnrateBook), write/publicize reviews, add to and create shelves, home feed, friends, recommendations, genre/topic search, book pages, and Goodreads Giveaways.
Pp Goodreads fits situations like: tasks that involve GraphQL.
Run `npx skills add mvanhorn/printing-press-library --skill pp-goodreads -a claude-code`. Or copy the skill folder (cli-skills/pp-goodreads in mvanhorn/printing-press-library) into .claude/skills/pp-goodreads in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mvanhorn/printing-press-library --skill pp-goodreads -a codex`. Or copy the skill folder (cli-skills/pp-goodreads in mvanhorn/printing-press-library) into .agents/skills/pp-goodreads 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-goodreads -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-goodreads, .gemini/skills/pp-goodreads, .github/skills/pp-goodreads and .opencode/skills/pp-goodreads in your project.
Going by SKILL.md and its folder, Pp Goodreads needs the command-line tools its instructions call (claude, npx and go) and credentials named GOODREADS_AUTHENTICITY_TOKEN and GOODREADS_GRAPHQL_TOKEN. Our summary lists: Node.js; A credential in GOODREADS_GRAPHQL_TOKEN; A credential in GOODREADS_AUTHENTICITY_TOKEN. 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 Goodreads 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 4.1k 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 Goodreads: Spider King (aoyunyang/spider-king-skill, 509 stars), Cuga GitHub Issues (cuga-project/cuga-agent, 896 stars), Spikard (Goldziher/spikard, 124 stars) and Executor Usage (jeremyosih/pi-executor, 104 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,056 GitHub stars. The repository holds 506 skills in this directory. The repository was last updated on October 9, 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.