From candlekeep-cloud
Search your CandleKeep document library for answers with citations, write and edit books, and manage your personal library. Trigger on research keywords (research, read, look up) OR writing keywords (write, create, edit, book, chapter).
How this skill is triggered — by the user, by Claude, or both
Slash command
/candlekeep-cloud:candlekeepThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Access and search your CandleKeep Cloud document library to answer questions with citations from your uploaded PDFs and markdown files.
Access and search your CandleKeep Cloud document library to answer questions with citations from your uploaded PDFs and markdown files.
IMPORTANT: This skill should be automatically invoked when users mention ANY of these keywords or patterns:
Do not invoke CandleKeep when:
Launch item-reader when:
Launch book-writer when:
When answering questions that might be in the user's document library:
item-reader subagent using the Task toolck items read commands directly for research questionsbook-enricher subagent in parallel to opportunistically improve library metadataFor research requests, spawn BOTH agents simultaneously in a single message:
Task tool calls (in parallel):
1. subagent_type: "candlekeep-cloud:item-reader"
prompt: "Research the user's question: [question here]
RESEARCH_INTENT: [insert the user's exact question here]"
2. subagent_type: "candlekeep-cloud:book-enricher"
prompt: "Enrich any books in the library that need metadata improvements.
IMPORTANT: Use --no-session on ALL ck commands to avoid interfering with any active research sessions."
The item-reader agent handles the user's research request while book-enricher opportunistically improves 1-2 books' metadata in the background.
User request
│
├── Contains RESEARCH keywords (research, read, refer, look up, find)
│ └── Launch item-reader subagent (Task tool) - AUTOMATIC
│
├── Contains WRITING keywords (write, create, edit, update, chapter, book)
│ └── Launch book-writer subagent (Task tool) - AUTOMATIC
│
├── Question that might be answered by documents
│ └── Launch item-reader subagent (Task tool) - AUTOMATIC
│
├── Contains MARKETPLACE keywords (marketplace, browse, find books, subscribe)
│ └── Run: ck marketplace browse --search "<query>" --json
│ └── Present results with subscribe commands
│
├── Contains PLANNING keywords (plan, design, architect, strategy, how should I)
│ └── Phase 1: Assess library (ck items list --json)
│ └── Dispatch item-reader in background + continue planning
│
├── "What documents do I have?" / "List my library"
│ └── Run: ck items list
│
├── "Add this PDF/markdown file to my library"
│ └── Run: ck items add <path>
│
├── "Remove document X"
│ └── Run: ck items remove <id> --yes
│
└── "Check my CandleKeep auth status"
└── Run: ck auth whoami
When RESEARCH trigger keywords or patterns are detected, launch the research agents:
Task tool calls (in a single message with multiple tool uses):
1. subagent_type: "candlekeep-cloud:item-reader"
prompt: "Research the user's question: [question here]
RESEARCH_INTENT: [insert the user's exact question here]"
2. subagent_type: "candlekeep-cloud:book-enricher"
prompt: "Enrich any books in the library that need metadata improvements.
IMPORTANT: Use --no-session on ALL ck commands to avoid interfering with any active research sessions."
DO NOT HESITATE - if the user's request contains research-related keywords, launch both subagents.
When WRITING trigger keywords or patterns are detected, launch the book-writer agent:
Task tool call:
subagent_type: "candlekeep-cloud:book-writer"
prompt: "Help the user with their writing task: [task description]
IMPORTANT: Use --no-session on ALL ck commands to avoid interfering with any active research sessions."
Examples:
The book-enricher agent must follow these rules to ensure accurate metadata:
TOC page numbers must be PDF page numbers, not printed page numbers. Before submitting any TOC:
When users ask "What does Chapter 5 say about X?", the system uses TOC page numbers to find the right content. If the TOC says Chapter 5 starts on page 50 but it's actually on page 55, retrieval will return the wrong content.
ck items read "<id>" <page> <page>
Check that the chapter heading appears at the top of the returned content.
When the user's request contains marketplace-related keywords, run the CLI directly (no subagent needed):
ck marketplace browse --search "<keywords from user request>" --json --limit 10
Present results as an actionable list:
Found X books on the marketplace:
1. **"Book Title"** by Author (42 pages, 128 subscribers)
`ck marketplace subscribe <listing-id>`
2. **"Another Book"** by Author (85 pages, 56 subscribers)
`ck marketplace subscribe <listing-id>`
Contextual tip (show once per session, only when user has < 5 items in library):
Tip: The CandleKeep marketplace has books on [detected topic]. Browse with
ck marketplace browse --search "<topic>"orck marketplace browse --tag <tag-slug>.
When the user's request contains planning keywords ("plan", "design", "architect", "strategy", "how should I", "what's the best way to"), spawn the item-reader in the background to enrich the plan with library knowledge.
Detection: Planning keywords in the user's message indicate they are designing or architecting something.
Behavior: Spawn item-reader in parallel with your planning work:
Task tool calls (in parallel with planning):
1. subagent_type: "candlekeep-cloud:item-reader"
prompt: "Research the user's library for guidance relevant to: [planning topic]
RESEARCH_INTENT: Find design patterns, best practices, and architectural principles for: [topic]
Focus on actionable guidance that can inform an implementation plan."
run_in_background: true
2. subagent_type: "candlekeep-cloud:book-enricher"
prompt: "Enrich any books needing metadata improvements.
IMPORTANT: Use --no-session on ALL ck commands to avoid interfering with any active research sessions."
run_in_background: true
The main agent continues planning normally. When item-reader returns, incorporate library findings into the plan. This ensures plans are enriched with the user's domain knowledge without blocking the planning process.
Before first use, verify the CLI is installed and authenticated:
ck auth whoami
If not authenticated, guide the user to:
ck auth login
If CLI is not installed, guide the user to install it:
# Homebrew (macOS/Linux)
brew tap CandleKeepAgents/candlekeep
brew install candlekeep-cli
# Or via Cargo
cargo install candlekeep-cli
If you encounter Authentication failed: Invalid or revoked API key errors:
ck auth logout && ck auth login
Common error patterns:
Invalid or revoked API key → Run ck auth logout && ck auth loginNot authenticated → Run ck auth loginCLI not found → Guide user to install via Homebrew or Cargo| Command | Purpose |
|---|---|
ck items list | List all documents in the library |
ck items list --json | List documents with full metadata |
ck items add <file> | Upload a PDF or Markdown file to the library |
ck items remove <ids> --yes | Delete documents (comma-separated IDs) |
| Command | Purpose |
|---|---|
ck items create "Title" | Create a new markdown document |
ck items get <id> | Get full document content (outputs to stdout) |
ck items put <id> --file path.md | Replace document content from file |
echo "content" | ck items put <id> | Replace document content from stdin |
| Command | Purpose |
|---|---|
ck auth whoami | Check authentication status |
ck auth login | Authenticate with CandleKeep Cloud |
ck auth logout | Log out of CandleKeep Cloud |
| Command | Purpose |
|---|---|
ck marketplace browse | Browse all marketplace listings |
ck marketplace browse --search "<query>" | Search marketplace by keyword |
ck marketplace browse --tag <slug> | Filter by tag |
ck marketplace browse --sort popular | Sort by popularity |
ck marketplace browse --json | JSON output (for agents) |
ck marketplace subscribe <listing-id> | Add a marketplace book to your library |
ck marketplace unsubscribe <listing-id> | Remove a marketplace book |
Bad: ck items put <id> --file /tmp/new-content.md — overwrites the entire book.
Better: ck items get <id> > /tmp/book-<id>.md first, edit locally, then put.
Bad: ck items read "<id>:50-60" on a 16-page book.
Better: Check page count with ck items toc <id> first, then request valid ranges.
Bad: Reusing an item ID from a previous conversation.
Better: Always ck items list fresh to get current IDs.
Bad: Submitting TOC page numbers without verifying them — wrong page numbers make retrieval unreliable. Better: Verify at least 3 TOC entries by reading those pages before submitting.
Bad: Running ck items read in the main conversation instead of launching the item-reader subagent.
Better: Always launch the item-reader subagent via the Task tool — it handles the full research workflow with proper citations.
User asks: "What do my books say about machine learning?"
Correct response:
item-reader: Research the user's question about machine learningbook-enricher: Enrich any books needing metadataUser asks: "Research neural networks for me"
Correct response:
User asks: "Can you look up information about databases?"
Correct response:
Incorrect responses:
ck items read directly without using the subagentnpx claudepluginhub candlekeepagents/candlekeep-marketplace --plugin candlekeep-cloudManages multi-book content, voice, and production workflows for nonfiction authoring. Plan books, maintain consistent voice, structure manuscripts, and run end-to-end publishing pipelines.
Automates Readwise Original API via CLI for creating, updating, deleting, listing, and reviewing highlights; searching and fetching books; daily review fetch. Handles retries, pagination, rate limits.
Searches, retrieves, and manages Readwise highlights, documents, and annotations. Delegates all Readwise operations to a librarian sub-agent.