Agent skill
writing-brainstorm
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.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/writing-brainstorm
SKILL.md
Writing Brainstorm
Generate writing topics and gather references from Readwise highlights.
When to Use
Invoke this skill for:
- Discovering what to write about from reading patterns
- Gathering sources and references for a known topic
- Finding thematic connections across highlights
- Building an outline with supporting quotes
Prerequisites
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):
- Get API token from https://readwise.io/access_token
- Set environment variable:
export READWISE_TOKEN=your_token - Verify:
claude mcp listshould showreadwise
Critical: Sub-Agent Pattern for Readwise Searches
NEVER 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:
- Execute the search
- Filter and deduplicate results
- Return a condensed summary
Sub-Agent Pattern
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"""
)
Example: Law Review on Private Equity Access
Launch 5 parallel agents:
- "private equity retail investors democratization"
- "accredited investor definition regulation"
- "401k retirement private markets"
- "interval fund tender offer evergreen"
- "investor protection paternalism securities"
Each returns ~100 words instead of ~5000 words of raw highlights.
Two Modes
Discovery Mode
When user wants to find topics ("what should I write about?"):
-
Fetch tag landscape
- Use
get_tagsto see all topic clusters - Present tags grouped by frequency/recency
- Use
-
Analyze recent reading
- Use
get_recent_contentto fetch recent highlights - Identify recurring themes, authors, or concepts
- Use
-
Semantic pattern detection
- Examine highlights for cross-cutting themes
- Look for: tensions, debates, unanswered questions, surprising connections
-
Present topic candidates
- For each potential topic, show:
- Theme description
- Supporting highlights (2-3 examples)
- Relevant tags
- Potential angle or thesis
- For each potential topic, show:
Gathering Mode (Progressive Workflow)
When user has a topic ("gather sources on X"), follow this human-in-the-loop workflow:
Phase 1: Clarify Intent
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
}
])
Phase 2: Search Sources
-
Decompose into themes based on clarified intent
- Break the topic into 3-6 distinct search themes
- Each theme becomes a parallel sub-agent search
-
Launch parallel sub-agents
- Use the Task tool with
model="haiku"for each theme - Run all searches in a single message (parallel execution)
- See "Sub-Agent Pattern" section above
- Use the Task tool with
-
Synthesize results
- Deduplicate sources across agent responses
- Identify the strongest quotes from each theme
- Note gaps (themes with few/no highlights)
Phase 3: Draft Outline → OUTLINE.md
Save 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.
Phase 4: Section Deep-Dive
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:
- Section thesis/purpose
- Key arguments in order
- Supporting sources mapped to arguments
- Anticipated counterarguments
Repeat for each section, getting human feedback before moving to prose.
Output Format
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]
Domain Detection
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) |
Readwise MCP Tools
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.
File Output Convention
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)
Workflow Examples
Discovery Mode Example
User: "I want to write something but don't know what"
Process:
- Fetch tags → find clusters like "antitrust", "market-power", "regulation"
- Get recent highlights → notice many from economics sources
- Analyze → tension between "consumer welfare" and "market structure" keeps appearing
- Present → "Potential topic: The consumer welfare standard debate. You have 12 highlights across 4 sources discussing this tension. Angle: Why market structure matters beyond prices."
- Domain detection → Economics sources detected → "Use
/writing-econfor drafting"
Gathering Mode Example (Progressive)
User: "Let's brainstorm a law review article about retail access to private equity"
Process:
- Clarify → AskUserQuestion: angle (critique/reform/comparative), audience (law review/practitioners)
- User responds → "Critique existing framework, law review audience"
- Decompose → 5 themes: PE retail access, accredited investor, 401(k) access, fund structures, investor protection
- Search → Launch 5 parallel Haiku sub-agents
- Synthesize → Dedupe sources, extract best quotes, note gaps
- Save → Write
docs/writing/OUTLINE.md - Feedback → "Here's the outline. Any sections to add/remove/reorder?"
- User responds → "Add comparative section on EU ELTIF"
- Deep-dive → AskUserQuestion per section, create
SECTION-II-OUTLINE.md - Handoff → "Outline complete. Use
/writing-legalto draft."
Integration
After brainstorming:
/writing- General prose drafting/writing-econ- Economics/finance articles/writing-legal- Law review articles/ai-anti-patterns- Check for AI writing indicators
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?