Hardcover Bookshelf Skill
by @diwakergupta
Talk to a user's Hardcover bookshelf via the Hardcover GraphQL API. Use when the user wants to manage reading activity in natural language: start a book, fin...
clawhub install hardcover-bookshelfπ About This Skill
name: hardcover-bookshelf version: 0.1.0 description: >- Talk to a user's Hardcover bookshelf via the Hardcover GraphQL API. Use when the user wants to manage reading activity in natural language: start a book, finish a book, view the Want to Read shelf, or compute yearly reading stats such as "how many books did I read last year?". Require HARDCOVER_TOKEN before any API call, using the exact
Bearer ...
value copied from Hardcover account API settings. Use this skill whenever
the user mentions Hardcover, reading lists, bookshelves, tracking books,
or anything related to managing what they're reading.
metadata:
openclaw:
primaryEnv: HARDCOVER_TOKEN
requires:
env:
- HARDCOVER_TOKEN
bins:
- node
- npx
install:
- kind: node
Hardcover Bookshelf
Use this skill to treat Hardcover as a conversational bookshelf assistant.
It is optimized for prompts like:
what's on my reading listi started reading the complete mausi finished reading dunehow many books did i read last yearRequired Environment
Require HARDCOVER_TOKEN before making API calls.
Token format is Option A: the env var must contain the full Authorization header value exactly as copied from Hardcover, including the Bearer prefix.
Example:
export HARDCOVER_TOKEN='Bearer eyJ...'
If missing or malformed, stop and ask the user to set it correctly.
Commands
Run these from the skill's root directory. Pass --json for machine-readable output.
npx tsx src/cli.ts list [--limit 20] [--json]
npx tsx src/cli.ts start --title "The Complete Maus" [--json]
npx tsx src/cli.ts finish --title "The Complete Maus" [--json]
npx tsx src/cli.ts count-last-year [--json]
These commands call the local TypeScript client in src/ and centralize auth, schema quirks, and error handling.
Intent mapping
"What's on my reading list?"
Interpret reading list as Want to Read.
Run:
npx tsx src/cli.ts list
Return a clean bullet list and mention the total shown.
"I started reading "
Run:
npx tsx src/cli.ts start --title ""
Behavior:
"I finished reading "
Run:
npx tsx src/cli.ts finish --title ""
Behavior:
user_book for that booklast_read_date as the finish-date fieldNote: this is a best-effort implementation based on the live schema tested so far. If Hardcover later exposes a better canonical finish-date field for user books, update the client and references.
"How many books did I read last year?"
Run:
npx tsx src/cli.ts count-last-year
Behavior:
status_id=3 and last_read_date inside that yearSafety & ambiguity rules
Files
src/client.ts β Hardcover API client and common operationssrc/cli.ts β unified CLI entrypointreferences/schema-quirks.md β live notes on auth, status IDs, and mutation/query quirks