From softpowers
Use when the human asks to brainstorm, wants a design/spec/plan-first workflow, or a feature or behavior change is large or ambiguous enough that design alignment should happen before implementation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/softpowers:brainstormingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Help turn ideas into fully formed designs and specs through natural collaborative dialogue.
Help turn ideas into fully formed designs and specs through natural collaborative dialogue.
Use this skill when the human has chosen a design-first workflow, explicitly asked to brainstorm or plan, or the task clearly needs structured design work.Do NOT use it for tiny, targeted, or clearly-scoped requests when the human wants direct execution.
If the task is in the gray area and the human has not chosen a workflow yet, offer a choice between direct execution and the full Softpowers flow first.
Once this skill is active, do NOT invoke any implementation skill, write any code, scaffold any project, or take any implementation action until you have presented a design and the user has approved it.This skill is for work where design alignment is useful or requested. A typo fix, a narrow one-file change, or another clearly-scoped task does not need formal brainstorming if the human prefers direct execution.
But once the human chooses this skill or asks for the full flow, do the design properly. Don't half-brainstorm your way into code.
You MUST create a task for each of these items and complete them in order:
Simple Markdown or Enriched HTMLSPEC_DRAFT="$(mktemp /tmp/softpowers-spec-XXXXXX.md)"printenv PROJECTS_DOCS_PATH, resolve {repoName} explicitly, save the spec to the selected .md or .html path, validate enriched HTML output, then commit only in the repo that actually owns that pathdigraph brainstorming {
"Explore project context" [shape=box];
"Visual questions ahead?" [shape=diamond];
"Offer Visual Companion\n(own message, no other content)" [shape=box];
"Ask clarifying questions" [shape=box];
"Propose 2-3 approaches" [shape=box];
"Present design sections" [shape=box];
"User approves design?" [shape=diamond];
"Ask final output:\nSimple Markdown or Enriched HTML" [shape=box];
"Write markdown spec draft" [shape=box];
"Spec self-review\n(fix inline)" [shape=box];
"Spec reviewer approves\nmarkdown draft?" [shape=diamond];
"Save Markdown or\ngenerate + validate HTML" [shape=box];
"User reviews spec?" [shape=diamond];
"Invoke writing-plans skill" [shape=doublecircle];
"Explore project context" -> "Visual questions ahead?";
"Visual questions ahead?" -> "Offer Visual Companion\n(own message, no other content)" [label="yes"];
"Visual questions ahead?" -> "Ask clarifying questions" [label="no"];
"Offer Visual Companion\n(own message, no other content)" -> "Ask clarifying questions";
"Ask clarifying questions" -> "Propose 2-3 approaches";
"Propose 2-3 approaches" -> "Present design sections";
"Present design sections" -> "User approves design?";
"User approves design?" -> "Present design sections" [label="no, revise"];
"User approves design?" -> "Ask final output:\nSimple Markdown or Enriched HTML" [label="yes"];
"Ask final output:\nSimple Markdown or Enriched HTML" -> "Write markdown spec draft";
"Write markdown spec draft" -> "Spec self-review\n(fix inline)";
"Spec self-review\n(fix inline)" -> "Spec reviewer approves\nmarkdown draft?";
"Spec reviewer approves\nmarkdown draft?" -> "Write markdown spec draft" [label="no, fix draft"];
"Spec reviewer approves\nmarkdown draft?" -> "Save Markdown or\ngenerate + validate HTML" [label="yes"];
"Save Markdown or\ngenerate + validate HTML" -> "User reviews spec?";
"User reviews spec?" -> "Write markdown spec draft" [label="changes requested"];
"User reviews spec?" -> "Invoke writing-plans skill" [label="approved"];
}
The terminal state is invoking writing-plans. Do NOT invoke frontend-design, mcp-builder, or any other implementation skill. The ONLY skill you invoke after brainstorming is writing-plans.
Understanding the idea:
Exploring approaches:
Presenting the design:
Design for isolation and clarity:
Working in existing codebases:
Documentation:
Simple Markdown or Enriched HTML. Ask before writing the final spec artifact; do not assume HTML.printenv PROJECTS_DOCS_PATH.{repoName} this way:
Simple Markdown:
$PROJECTS_DOCS_PATH/{repoName}/specs/YYYY-MM-DD-<topic>-design.md when PROJECTS_DOCS_PATH is setdocs/softpowers/specs/YYYY-MM-DD-<topic>-design.md when it is unsetEnriched HTML:
$PROJECTS_DOCS_PATH/{repoName}/specs/YYYY-MM-DD-<topic>-design.html when PROJECTS_DOCS_PATH is setdocs/softpowers/specs/YYYY-MM-DD-<topic>-design.html when it is unsetSPEC_DRAFT="$(mktemp /tmp/softpowers-spec-XXXXXX.md)"
SOFTPOWERS_ROOT to the package root that contains this skills/ directory, then use absolute helper paths from there for every scripts/, templates/, examples/, and docs/softpowers/ reference.node scripts/create-spec-doc.mjs or node scripts/validate-spec-doc.mjs relative to the target project, and do not use find to hunt for those helpers. Resolve SOFTPOWERS_ROOT once from the skill/package path and reuse it.skills/brainstorming/spec-document-reviewer-prompt.md. Give the reviewer the selected output format and resolved final output path. The reviewer should read the markdown draft, return Approved or Issues Found, and you should fix the markdown draft until it is approved.Simple Markdown, copy the approved markdown draft to the resolved .md path. Do not run the HTML helper or validator for this output mode.Enriched HTML, generate the HTML shell and TOC with:node "$SOFTPOWERS_ROOT/scripts/create-spec-doc.mjs" \
--title "<Spec title>" \
--slug <topic-slug> \
--body "$SPEC_DRAFT"
Enriched HTML, pass --body-format html instead. Those fragments must contain <section id="..."> blocks with <h2> headings.$SOFTPOWERS_ROOT/templates/spec.template.html, builds the TOC, validates the finished document, and prints the final path clearly.Enriched HTML, keep the shell intact and replace:
{{DOC_TITLE}} — the spec name shown in <title> and <h1>{{TOC_ITEMS}} — the full TOC block, typically <h3>Table of contents</h3><ol>...</ol>{{OVERVIEW}} — the complete spec body (sections, code blocks, tables, etc.)Enriched HTML, validate the saved spec with node "$SOFTPOWERS_ROOT/scripts/validate-spec-doc.mjs" <resolved-spec-path>. This is a blocking gate: if the validator exits non-zero or reports any errors, stop immediately, show the full validation output to the user, fix the reported issues, then re-run the validator before proceeding to the next step.examples/html-docs/canonical-spec.mddocs/softpowers/specs/2026-05-13-canonical-html-spec-workflow-design.htmlSpec Self-Review: After writing the markdown draft, look at it with fresh eyes:
Fix any issues inline. No need to re-review: just fix and move on.
Spec Review Loop: The markdown draft must be reviewed before saving the selected final output.
SPEC_DRAFT="$(mktemp /tmp/softpowers-spec-XXXXXX.md)".skills/brainstorming/spec-document-reviewer-prompt.md with the selected output format and resolved output path.User Review Gate: After the markdown spec review loop passes and the selected final spec is saved, ask the user to review the written spec before proceeding:
"Spec written to
<path>. Please review it and let me know if you want to make any changes before we start writing out the implementation plan."
Use <validation note> as and validated for Enriched HTML, and omit it for Simple Markdown. Wait for the user's response. If they request changes, make them and re-run the spec review loop. Only proceed once the user approves.
Implementation:
A browser-based companion for showing mockups, diagrams, and visual options during brainstorming. Available as a tool: not a mode. Accepting the companion means it's available for questions that benefit from visual treatment; it does NOT mean every question goes through the browser.
Offering the companion: When you anticipate that upcoming questions will involve visual content (mockups, layouts, diagrams), offer it once for consent:
"Some of what we're working on might be easier to explain if I can show it to you in a web browser. I can put together mockups, diagrams, comparisons, and other visuals as we go. This feature is still new and can be token-intensive. Want to try it? (Requires opening a local URL)"
This offer MUST be its own message. Do not combine it with clarifying questions, context summaries, or any other content. The message should contain ONLY the offer above and nothing else. Wait for the user's response before continuing. If they decline, proceed with text-only brainstorming.
Per-question decision: Even after the user accepts, decide FOR EACH QUESTION whether to use the browser or the terminal. The test: would the user understand this better by seeing it than reading it?
A question about a UI topic is not automatically a visual question. "What does personality mean in this context?" is a conceptual question: use the terminal. "Which wizard layout works better?" is a visual question: use the browser.
If they agree to the companion, read the detailed guide before proceeding:
skills/brainstorming/visual-companion.md
npx claudepluginhub bnema/softpowersCreates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.