Zettel Brainstormer 🧠
This skill formalizes the process of taking a rough idea or draft and enriching it with deep research, diverse perspectives, and structured brainstorming.
The configuration file is config/models.json, which can be edited manually or using the setup.py script.
New 3-Stage Workflow
This skill now supports a 3-stage pipeline to balance cost and quality:
- Find References (with
find_links.py)
- Run
scripts/find_links.py to identify relevant existing notes.
- Wikilinked documents (follows [[wikilinks]] N levels deep, up to M total docs)
- Tag-similar documents (finds notes with overlapping tags)
- Native Obsidian Integration: Uses
obsidian-cli for high-performance indexing and discovery if available.
- Semantic Discovery (Optional): Can leverage the
zettel-link skill for finding "hidden" conceptual connections that don't share explicit tags or links.
- Output: A JSON list of absolute file paths to relevant notes.
- Subagent: Preprocess contents (with
preprocess_model)
- The agent iterates through the list of files found in Stage 1.
- For each file:
- Read the file content.
- Apply
templates/preprocess.md using the preprocess_model, pass the seed note keypoints and file content as context.
- Extract: Relevance score, Summary, Key Points, and Quotes.
- Output: A structured markdown summary of the note.
- Draft & Humanize (with
pro_model)
- Gather all preprocessed markdown outputs from Stage 2.
- Apply
templates/draft.md using the pro_model.
- Synthesize points, add proper Obsidian properties, tags, and links.
- Uses the
obsidian skill if available to match style.
Files & Scripts
This skill includes the following resources under the skill folder:
scripts/find_links.py -- finds relevant note paths (linked + tag similar)
scripts/draft_prompt.py -- (Deprecated) generate prompt for agent
scripts/obsidian_utils.py -- shared utilities for wikilink extraction
templates/preprocess.md -- Instructions for subagent to extract info from single note
templates/draft.md -- Instructions for final draft generation
config/models.example.json -- example configuration file
Configuration & Setup
First Run Setup:
Before using this skill, you must run the setup script to configure models and directories.
python scripts/setup.py
This will create config/models.json with your preferences. You can press ENTER to accept defaults.
Configuration Fields:
pro_model: The model used for drafting (defaults to agent's current model)
preprocess_model: Cheap model for extraction (defaults to agent's current model)
zettel_dir: Path to your Zettelkasten notes
output_dir: Path where drafts should be saved
search_skill: Which search skill to use for web/X research (web_search, brave_search, or none)
link_depth: How many levels deep to follow [[wikilinks]] (N levels, default: 2)
max_links: Maximum total linked notes to include (M links, default: 10)
discovery_mode: Options are standard (default), cli (uses obsidian-cli), or semantic (uses zettel-link).
Usage
- Trigger when user asks: "brainstorm X", "expand this draft", "research and add notes to ".
- Example workflow (pseudo):
- Pick a seed note.
- Find Links:
python scripts/find_links.py --input <seed_note> --output /tmp/paths.json
- Preprocess Subagent Loop:
- Load
/tmp/paths.json.
- For each path, read content.
- Prompt
preprocess_model with templates/preprocess.md + content.
- Store result.
- Final Draft:
- Concatenate seed note + all preprocess results.
- Prompt
pro_model with templates/draft.md + concatenated context.
- Save result to note.
Notes for maintainers
- Keep preprocess outputs small (200-600 tokens) to save cost.
- Ensure all external links are included in the
References section with full titles and URLs.
- When appending, always include a timestamp and short provenance line.
1---2name: zettel-brainstormer3description: It reads from your local zettelkasten notes, find a random idea, and find references by links or tags, then expand the idea with the references.4---5
6# Zettel Brainstormer 🧠
7
8This skill formalizes the process of taking a rough idea or draft and enriching it with deep research, diverse perspectives, and structured brainstorming.
9
10The configuration file is `config/models.json`, which can be edited manually or using the `setup.py` script.
11
12## New 3-Stage Workflow
13
14This skill now supports a 3-stage pipeline to balance cost and quality:
15
161) Find References (with `find_links.py`)
17
18- Run `scripts/find_links.py` to identify relevant existing notes.
19 - **Wikilinked documents** (follows [[wikilinks]] N levels deep, up to M total docs)
20 - **Tag-similar documents** (finds notes with overlapping tags)
21 - **Native Obsidian Integration**: Uses `obsidian-cli` for high-performance indexing and discovery if available.
22 - **Semantic Discovery (Optional)**: Can leverage the `zettel-link` skill for finding "hidden" conceptual connections that don't share explicit tags or links.
23- Output: A JSON list of absolute file paths to relevant notes.
24
252) Subagent: Preprocess contents (with `preprocess_model`)
26
27- The agent iterates through the list of files found in Stage 1.
28- For each file:
29 - Read the file content.
30 - Apply `templates/preprocess.md` using the `preprocess_model`, pass the seed note keypoints and file content as context.
31 - Extract: Relevance score, Summary, Key Points, and Quotes.
32 - Output: A structured markdown summary of the note.
33
343) Draft & Humanize (with `pro_model`)
35
36- Gather all preprocessed markdown outputs from Stage 2.
37- Apply `templates/draft.md` using the `pro_model`.
38- Synthesize points, add proper Obsidian properties, tags, and links.
39- Uses the `obsidian` skill if available to match style.
40
41## Files & Scripts
42
43This skill includes the following resources under the skill folder:
44
45- `scripts/find_links.py` -- finds relevant note paths (linked + tag similar)
46- `scripts/draft_prompt.py` -- (Deprecated) generate prompt for agent
47- `scripts/obsidian_utils.py` -- shared utilities for wikilink extraction
48- `templates/preprocess.md` -- Instructions for subagent to extract info from single note
49- `templates/draft.md` -- Instructions for final draft generation
50- `config/models.example.json` -- example configuration file
51
52## Configuration & Setup
53
54**First Run Setup**:
55Before using this skill, you must run the setup script to configure models and directories.
56
57```bash
58python scripts/setup.py
59```
60
61This will create `config/models.json` with your preferences. You can press ENTER to accept defaults.
62
63**Configuration Fields**:
64- `pro_model`: The model used for drafting (defaults to agent's current model)
65- `preprocess_model`: Cheap model for extraction (defaults to agent's current model)
66- `zettel_dir`: Path to your Zettelkasten notes
67- `output_dir`: Path where drafts should be saved
68- `search_skill`: Which search skill to use for web/X research (web_search, brave_search, or none)
69- `link_depth`: How many levels deep to follow [[wikilinks]] (N levels, default: 2)
70- `max_links`: Maximum total linked notes to include (M links, default: 10)
71- `discovery_mode`: Options are `standard` (default), `cli` (uses obsidian-cli), or `semantic` (uses zettel-link).
72
73## Usage
74
75- Trigger when user asks: "brainstorm X", "expand this draft", "research and add notes to <path>".
76- Example workflow (pseudo):
77 1. Pick a seed note.
78 2. Find Links: `python scripts/find_links.py --input <seed_note> --output /tmp/paths.json`
79 3. Preprocess Subagent Loop:
80 - Load `/tmp/paths.json`.
81 - For each path, read content.
82 - Prompt `preprocess_model` with `templates/preprocess.md` + content.
83 - Store result.
84 4. Final Draft:
85 - Concatenate seed note + all preprocess results.
86 - Prompt `pro_model` with `templates/draft.md` + concatenated context.
87 5. Save result to note.
88
89## Notes for maintainers
90
91- Keep preprocess outputs small (200-600 tokens) to save cost.
92- Ensure all external links are included in the `References` section with full titles and URLs.
93- When appending, always include a timestamp and short provenance line.