Help us improve
Share bugs, ideas, or general feedback.
From vibekit
Guides a disciplined Socratic brainstorming loop before any creative or implementation work: clarifying questions, pushback, trade-off analysis, design doc, user approval, then handoff to implementation.
npx claudepluginhub rizukirr/vibekit --plugin vibekitHow this skill is triggered — by the user, by Claude, or both
Slash command
/vibekit:brainstorm-leanThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turn an idea into a validated design through collaborative dialogue, then hand off to the implementation plan. No code is written here. No implementation skill runs until the user has approved a design.
Guides structured brainstorming to explore user intent, requirements, and design before implementation. Prevents premature coding by enforcing design approval.
Guides structured brainstorming before any creative work: explores user intent, requirements, and design before implementation. Prevents wasted effort from unexamined assumptions.
Guides brainstorming to clarify user intent, explore design approaches, and validate specs in sections before implementing features or changes.
Share bugs, ideas, or general feedback.
Turn an idea into a validated design through collaborative dialogue, then hand off to the implementation plan. No code is written here. No implementation skill runs until the user has approved a design.
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 in writing.
This applies to every project regardless of perceived simplicity. A todo list, a single-function utility, a config change — all go through this gate. The design can be short (a few sentences for truly simple projects), but you MUST present it and get approval.
The first skill in the vibe pipeline. Invoke whenever the user asks to build, add, modify, or refactor a feature — no exceptions.
Every project goes through this process. "Simple" projects are where unexamined assumptions cause the most wasted work.
Create a task for each item. Complete in order:
docs/specs/YYYY-MM-DD-<topic>-design.md, then commit.Explore context
└─ Clarifying questions (one at a time, Socratic)
└─ loop until purpose / constraints / success criteria are explicit
└─ Pushback turn (challenge framing — does a simpler path exist?)
└─ 2-3 approaches + trade-offs + recommendation (full prose)
└─ Present design in sections (approval after each)
└─ Write design doc → docs/specs/YYYY-MM-DD-<topic>-design.md → commit
└─ Spec self-review (fix inline)
└─ User reviews spec (verbatim prompt — see §User review gate)
└─ Invoke implementation-plan skill [terminal]
This skill compresses only assistant narration. Everything else is verbatim.
Drop all compression entirely when:
Resume normal compression after the clear passage.
Before generating approaches, run exactly one pushback turn. The skill is required to challenge the user's framing if a simpler path exists. Silently accepting the framing is a failure mode.
Output verbatim, in this shape:
Pushback: Before I sketch approaches, one challenge —
<one-sentence simpler framing or hidden assumption>. Is the smaller version what you want, or do you need the larger framing? (If the larger framing is correct, say so and I'll proceed.)
Examples:
If no simpler framing exists, state that explicitly:
Pushback: No simpler framing — the requirement is already minimal. Proceeding to approaches.
The user's response (or absence of pushback) is recorded in the spec's ## Approach section.
This turn is never compressed. It joins the verbatim list.
Every design doc has exactly these headings, scaled to the project's complexity.
---
title: <topic>
date: YYYY-MM-DD
status: draft
---
# <topic> — Design
## Problem
<what the user is trying to do and why>
## Goals
- <bullet>
## Non-goals
- <bullet; scope limits>
## Constraints
- <technical, operational, deadline>
## Approach
<the chosen approach — architecture, components, data flow>
## Alternatives considered
<the other 1-2 approaches from step 4 and why rejected>
## Testing
<how we'll know it works>
## Open questions
<anything deferred by agreement — empty if none>
If a section is genuinely N/A for this project (e.g., no testing on a pure doc change), write N/A — <one-line reason>, not TODO.
After writing the spec, look at it with fresh eyes:
Fix issues inline. No re-review — just fix and move on.
After the self-review passes, send exactly this message, verbatim:
Spec written and committed to
<path>. Please review it and let me know if you want to make any changes before we start writing out the implementation plan.
Wait for the user's response. If they request changes, make them and re-run the spec review. Only proceed once the user approves.
On approval: edit the spec's frontmatter in place — change status: draft to status: approved — and commit that single-line change with message spec: approve <topic>. Downstream skills gate on status: approved in the frontmatter, so this step is non-optional.
Not a structured report — this skill is user-facing and file-producing.
Side effects:
docs/specs/YYYY-MM-DD-<topic>-design.md.Terminal action: