This skill should be used when the user asks to "find something to write about", "brainstorm topics", "what should I write about", "find writing ideas", "gather sources for", "pull references on", or needs help discovering topics from their reading highlights. Leverages Readwise MCP to surface patterns and gather references.
Uses Readwise MCP to brainstorm writing topics from your reading highlights and gather sources. Triggers when you ask to find topics, brainstorm ideas, or gather references on a subject.
/plugin marketplace add edwinhu/claude-plugins/plugin install writing@edwinhu-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Generate writing topics and gather references from Readwise highlights.
Invoke this skill for:
This skill requires the Readwise MCP server. The plugin auto-configures it, but the READWISE_TOKEN environment variable must be set.
Setup (if MCP not working):
export READWISE_TOKEN=your_tokenclaude mcp list should show readwiseNEVER call search_readwise_highlights directly from the main chat. Raw search results return 50-100+ highlights, polluting context and degrading conversation quality.
ALWAYS use parallel sub-agents (one per search theme) to:
For a topic with N distinct themes, launch N parallel sub-agents using the Task tool:
Task(
subagent_type="general-purpose",
model="haiku", # Fast and cheap for filtering
prompt="""Search Readwise for highlights about **[THEME]**.
Use `mcp__readwise__search_readwise_highlights` with:
- vector_search_term: "[semantic search terms]"
- full_text_queries: [{"field_name": "highlight_plaintext", "search_term": "[keyword]"}]
Return ONLY:
- Top 3 most relevant sources (title, author)
- Top 3 quotes worth citing (with source attribution)
- 1-2 sentence theme summary"""
)
Launch 5 parallel agents:
Each returns ~100 words instead of ~5000 words of raw highlights.
When user wants to find topics ("what should I write about?"):
Fetch tag landscape
get_tags to see all topic clustersAnalyze recent reading
get_recent_content to fetch recent highlightsSemantic pattern detection
Present topic candidates
When user has a topic ("gather sources on X"), follow this human-in-the-loop workflow:
BEFORE any search, use AskUserQuestion to understand:
AskUserQuestion(questions=[
{
"question": "What's your primary angle or thesis for this piece?",
"header": "Angle",
"options": [
{"label": "Critique existing framework", "description": "Argue current approach is flawed"},
{"label": "Propose reform", "description": "Offer specific policy changes"},
{"label": "Comparative analysis", "description": "Compare approaches across jurisdictions"},
{"label": "Empirical analysis", "description": "Present data-driven findings"}
],
"multiSelect": false
},
{
"question": "Who is your target audience?",
"header": "Audience",
"options": [
{"label": "Law review", "description": "Academic legal audience"},
{"label": "Practitioners", "description": "Lawyers, regulators, compliance"},
{"label": "Policy makers", "description": "Legislators, agency staff"},
{"label": "General educated", "description": "Informed non-specialists"}
],
"multiSelect": false
}
])
Decompose into themes based on clarified intent
Launch parallel sub-agents
model="haiku" for each themeSynthesize results
OUTLINE.mdSave the outline to a file for iteration:
# OUTLINE.md
## Working Title
[Title]
## Thesis
[One-sentence claim]
## Target Audience
[From Phase 1]
## Structure
### I. Introduction
### II. [Section]
### III. [Section]
...
## Key Sources
[Deduplicated from Phase 2]
## Open Questions
[Gaps to address]
Ask for feedback on the outline before proceeding.
For each major section, use AskUserQuestion to refine:
AskUserQuestion(questions=[
{
"question": "For Section II (Background), what level of detail do you need?",
"header": "Depth",
"options": [
{"label": "Brief context", "description": "1-2 paragraphs, assume reader familiarity"},
{"label": "Full background", "description": "Comprehensive treatment for general reader"},
{"label": "Synthesis only", "description": "Synthesize precedents without detailed summaries"}
],
"multiSelect": false
}
])
Create SECTION-II-OUTLINE.md with:
Repeat for each section, getting human feedback before moving to prose.
Produce a markdown outline:
# [Topic Title]
## Thesis/Angle
[One-sentence framing]
## Key Sources
- **[Source 1]** by [Author]
- "[Highlight quote]"
- Relevant to: [subtopic]
## Outline
### [Subtopic 1]
- Point A (Source 1, Source 3)
- Point B (Source 2)
### [Subtopic 2]
...
## Open Questions
- [Questions highlights don't answer]
## Next Steps
- Suggested writing skill: /writing-[domain]
After gathering sources, detect the topic domain and suggest the appropriate writing skill:
| Domain Indicators | Suggested Skill |
|---|---|
| Legal cases, statutes, law reviews, constitutional | /writing-legal (Volokh) |
| Economics, markets, policy, data, empirical | /writing-econ (McCloskey) |
| General/other | /writing (Strunk & White) |
Primary tools for brainstorming:
| Tool | Use Case | Direct Call OK? |
|---|---|---|
get_tags | Survey topic landscape | ✅ Yes |
get_recent_content | See current reading themes | ✅ Yes |
search_readwise_highlights | Find highlights by keyword | ❌ Sub-agent only |
get_highlights | Retrieve with filters | ⚠️ Use caution (can be large) |
get_books | Browse source library | ✅ Yes |
Why sub-agents for search? A single search can return 50-100 highlights (~5000+ tokens). Multiple searches compound this. Sub-agents filter to essentials before returning to main context.
Save brainstorming artifacts to the project's docs/ or scratch/ directory:
project/
├── docs/
│ └── writing/
│ ├── OUTLINE.md # Main article outline
│ ├── SECTION-I-OUTLINE.md # Introduction details
│ ├── SECTION-II-OUTLINE.md # Background details
│ └── ...
└── scratch/
└── brainstorm-notes.md # Working notes (gitignored)
User: "I want to write something but don't know what"
Process:
/writing-econ for drafting"User: "Let's brainstorm a law review article about retail access to private equity"
Process:
docs/writing/OUTLINE.mdSECTION-II-OUTLINE.md/writing-legal to draft."After brainstorming:
/writing - General prose drafting/writing-econ - Economics/finance articles/writing-legal - Law review articles/ai-anti-patterns - Check for AI writing indicatorsCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.