skills/topic-brainstormer/SKILL.md
Generate blog topic ideas: problem mining, gap analysis, expansion.
npx skillsauth add notque/claude-code-toolkit topic-brainstormerInstall 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.
This skill generates blog post topic ideas that align with a content identity built around solving frustrating technical problems. It operates through three sequential phases (ASSESS → DECIDE → GENERATE) with hard quality gates: every topic must pass a three-question content quality filter before presentation. The output is always a prioritized list with impact/vex/resolution scores, never an unfiltered pile of ideas.
Core principle: Assess-Decide-Generate with Domain Intelligence. Gather signals from existing content and problem sources, filter candidates ruthlessly, then score and prioritize the survivors.
| Signal | Load These Files | Why |
|---|---|---|
| tasks related to this reference | content-filter.md | Loads detailed guidance from content-filter.md. |
| tasks related to this reference | priority-scoring.md | Loads detailed guidance from priority-scoring.md. |
| tasks related to this reference | topic-sources.md | Loads detailed guidance from topic-sources.md. |
Goal: Gather context about existing content and available topic sources.
Step 1: Scan existing content
Read all posts in the content directory. Document:
## Content Landscape
Posts found: [N]
Content clusters: [list main themes]
Technologies covered: [list]
Last post date: [date]
Step 2: Identify available sources
Determine which topic sources have material to mine:
Step 3: Note cross-references
Extract all "see also", "related", and cross-reference mentions from existing posts. Flag any that point to content that does not exist.
Gate: Content landscape documented, at least 2 sources identified with material. Proceed only when gate passes.
Goal: Generate topic candidates and filter them through the content quality test.
Quality Filter Rule: This is non-negotiable. Every candidate must answer YES to all three questions. Unfiltered lists waste user time; apply rigor here.
Step 1: Mine candidates from identified sources
Generate 5-10 raw topic candidates from at least 2 sources. For each candidate, capture:
Step 2: Apply content quality filter to every candidate
Each topic must answer YES to all three questions:
Why this matters: Topics that fail any question produce weak posts. "How to Set Up Hugo" lacks genuine frustration (official docs already cover installation). "Rewriting a Python CLI in Go Cut Startup Time by 10x" has concrete vex (400ms startup delay) and concrete joy (40ms result).
Step 3: Reject failing candidates
Remove any topic that fails the filter. Document why each rejection failed:
| Rejected Topic | Failed Question | Reason | |----------------|-----------------|--------| | [topic] | [1, 2, or 3] | [why] |
Anti-Pattern Warning — Do Not Generate Tutorial-Only Topics: "How to Set Up X" with vex listed as "learning a new tool" is not genuine frustration. Find the specific friction point. "Hugo Local Build Works But Cloudflare Deploy Fails" has real vex (version mismatch between local and CI).
Anti-Pattern Warning — Do Not Accept Opinion Without Experience: "Why Go Is Better Than Python for CLI Tools" is debate, not experience. This lacks a specific problem solved, no measurable outcome. Ground in measurement instead.
Gate: At least 3 candidates pass the content quality filter. If fewer than 3 pass, return to Step 1 with different sources. Proceed only when gate passes.
Goal: Score, prioritize, and present the filtered topic list.
Step 1: Score each passing topic
Apply the priority matrix to every candidate:
Impact (1-5): How many people face this problem?
Vex Level (1-5): How frustrating is the problem?
Resolution (1-5): How satisfying is the solution?
Priority Score = Impact x Vex Level x Resolution
60-125: HIGH PRIORITY - Write this soon
30-59: MEDIUM PRIORITY - Good candidate with right angle
15-29: LOW PRIORITY - Needs more vex or broader impact
1-14: SKIP - Not enough value for readers
Why scoring matters: Unscored lists require user re-evaluation. Always include the priority matrix for every topic.
Step 2: Write specific titles
Replace vague category titles with failure-mode titles:
Anti-Pattern Warning — Do Not Use Vague Topic Titles: "Kubernetes Networking Issues" is too broad to act on. Which issues? What specifically failed? Use failure-mode titles instead: "CoreDNS Returns NXDOMAIN for Internal Services" signals real vex and specificity.
Step 3: Present prioritized output
## Topic Brainstorm Results
### Source: [problem mining / gap analysis / tech expansion]
### HIGH PRIORITY (Strong vex potential)
1. "[Specific Topic Title]"
The Vex: [What frustration this addresses]
The Joy: [What satisfying resolution looks like]
Fits existing: [Which content cluster this joins]
Estimated: [word count range]
Score: Impact(N) x Vex(N) x Resolution(N) = [total]
### MEDIUM PRIORITY (Good but needs angle)
2. "[Specific Topic Title]"
The Vex: [frustration]
The Joy: [resolution]
Angle needed: [What narrative hook would strengthen this]
Score: Impact(N) x Vex(N) x Resolution(N) = [total]
### GAP FILL (Based on existing content)
3. "[Specific Topic Title]"
Referenced in: [which post mentions this]
Missing: [what content would fill the gap]
Score: Impact(N) x Vex(N) x Resolution(N) = [total]
### Recommendations
- Top pick: [Topic N] - [one sentence why]
- Quick win: [Topic N] - [one sentence why]
- Deep dive: [Topic N] - [one sentence why]
Step 4: Handle score ties
When scores are equal, prefer topics that:
Gate: All topics scored, prioritized, and presented with recommendations. Output is complete.
User says: "I spent all day debugging a Hugo build issue, brainstorm some topics" Actions:
User says: "What should I write about next?" Actions:
Cause: Content directory is empty or does not exist yet Solution:
Cause: Sources lack genuine frustration signals or resolutions Solution:
Cause: Candidate is a category ("Kubernetes networking") rather than a specific problem Solution:
Cause: User has an ongoing issue without a resolution, or the fix is a workaround with no understanding Solution:
This skill uses these patterns:
documentation
Document translation: quick/normal/refined modes with chunked parallel subagents and glossary support.
development
AI image generation: Gemini and Nano Banana backends; single/series/batch workflows with prompt-to-disk.
testing
Unified voice content generation pipeline with mandatory validation and joy-check. 13-phase pipeline: LOAD, GROUND, STATS-CHECKPOINT, GENERATE, HOOK-GATE, VALIDATE, REFINE, VARIETY-GATE, JOY-CHECK, ANTI-AI, CLOSE-GATE, OUTPUT, CLEANUP. Use when writing articles, blog posts, or any content that uses a voice profile. Use for "write article", "blog post", "write in voice", "generate content", "draft article", "write about".
documentation
Critique-and-rewrite loop for voice fidelity validation.