skills/leejuoh/notebooklm-manager/SKILL.md
This skill should be used when the user wants to interact with NotebookLM notebooks via Claude Code's Chrome integration. Trigger phrases: "Query my NotebookLM", "Ask my notebook about X", "query [id] about X", "list my notebooks", "add notebook URL", "show notebook details", "search notebooks for X", "Check my docs", "what does my [topic] notebook say about", "remove notebook", "delete notebook", "disable notebook", "enable notebook". Also triggers when user: (1) mentions NotebookLM explicitly, (2) shares NotebookLM URL (https://notebooklm.google.com/notebook/...). Do NOT use for: general web searches, local file reading, or non-NotebookLM documentation queries. Requires: claude --chrome with claude-in-chrome MCP.
npx skillsauth add aiskillstore/marketplace notebooklm-managerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Query orchestration and notebook registry management.
This skill MUST NOT call any mcp__claude-in-chrome__* tools.
These tools DO NOT EXIST in this skill's allowed tool set.
All Chrome interaction is delegated to the agent via Task.
After receiving an agent error, do NOT attempt to use Chrome tools yourself.
Extract from user message:
notebook_id: Which notebook (e.g., "claude-docs")question: What to askRead ${SKILL_ROOT}/data/library.json to find notebook URL.
data/ folder and files with []Before the first query to a notebook, ask user about chat history:
AskUserQuestion({
questions: [{
question: "Clear NotebookLM chat history before querying?",
header: "History",
options: [
{ label: "No (Recommended)", description: "Keep previous context, faster response" },
{ label: "Yes", description: "Start fresh, may involve UI modal interaction" }
],
multiSelect: false
}]
})
Pass result to agent as clearHistory: true/false in the prompt.
Note: Clearing history may trigger a confirmation modal in NotebookLM, which can slow down automation. Default "No" is recommended.
Track per-notebook first-query status within the current conversation. After asking once for a given notebook URL, skip the confirmation for subsequent queries to the same URL in the same session.
Task({
subagent_type: "notebooklm-connector:chrome-mcp-query",
prompt: `Execute the workflow: Input parsing → Tab setup → Title extraction → Submit question → Poll response → Output and exit
URL: {url}
Question: {question}
mode: query
clearHistory: {true/false}
Output the response immediately upon receiving it and exit.`
})
Follow-up queries use the same Task format with the follow-up question. The agent's STEP 1 automatically reuses the existing tab for the same URL.
After Task returns, check the agent output:
| Agent Output Contains | Action |
|---|---|
| ERROR_TYPE: CHROME_NOT_CONNECTED | Show Chrome Connection Troubleshooting (below), stop |
| ERROR_TYPE: AUTH_REQUIRED | Tell user to log in to Google in Chrome, stop |
| ERROR_TYPE: (any other) | Show error details from agent output, stop |
| Task tool itself errors | Inform user the agent could not start. Check plugin installation. |
| Normal response (no ERROR_TYPE) | Proceed to Section 5 |
Chrome Connection Troubleshooting (show to user):
chrome://extensions → Ensure "Claude in Chrome" extension is enabled/chrome → Select "Reconnect extension"After EVERY successful Task(chrome-mcp-query) return, perform this checklist BEFORE presenting any answer.
The PostToolUse hook will also remind you via COVERAGE_REMINDER message.
DO NOT present the answer yet. DO NOT generate "Suggested follow-ups" yet.
Re-read user's original message. List ALL keywords/topics.
Each keyword: ✅ covered / ❌ missing
Launch follow-up: Task(subagent_type: "notebooklm-connector:chrome-mcp-query", same URL, missing topic question)
Follow-ups are cheap — the same Chrome tab is reused.
Then return to STEP A.
All covered OR 3 follow-ups → Synthesize and present (Section 6 format). Max 3 follow-ups. After limit: AskUserQuestion to confirm whether to continue.
**Notebook**: [Title] (`{id}`)
**Answer**: [response]
**Citations**:
[1] "quote" - Source: [doc]
---
**Suggested follow-ups**:
- [question 1]
- [question 2]
See references/commands.md for full command reference.
| Command | Description |
|---------|-------------|
| list | Show active notebooks |
| add <url> | Smart add (auto-discover) |
| show <id> | Notebook details |
| search <query> | Find notebooks |
Location: ${SKILL_ROOT}/data/
data/
├── library.json # Active notebooks (index)
├── archive.json # Archived notebooks
└── notebooks/{id}.json # Full metadata (on-demand)
Initialization:
data/ folder does not exist, create itlibrary.json does not exist, create with:
{"notebooks": {}, "schema_version": "1.0", "updated_at": "<ISO timestamp>"}archive.json does not exist, create with:
{"notebooks": {}, "schema_version": "1.0", "updated_at": "<ISO timestamp>"}notebooks/ folder does not exist, create itnotebooks/{id}.json must include "schema_version": "1.0" as the first fieldmcp__claude-in-chrome__*)references/commands.md - Full command referencereferences/schemas.md - JSON schemasdevelopment
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.