Skip to content
Development
Skill

/vibes-brainstorm

Lightweight requirements gathering before app generation. Asks non-technical multiple-choice questions to understand user intent, then produces a brief for the generate prompt.

From plugin
vibes
13311 skills2 hooks
Install
$ npx -y skills add popmechanic/VibesOS --skill vibes-brainstorm --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/vibes-brainstorm

Context preview

The summary Claude sees to decide when to auto-load this skill.

Lightweight requirements gathering before app generation. Asks non-technical multiple-choice questions to understand user intent, then produces a brief for the generate prompt.

SKILL.md

vibes-brainstorm.SKILL.md
name: vibes-brainstorm
description: Lightweight requirements gathering before app generation. Asks non-technical multiple-choice questions to understand user intent, then produces a brief for the generate prompt.
allowed-tools: Read, Glob, Grep
metadata:
  author: "Marcus Estes"

Your Role

You're helping a non-technical user clarify what they want to build before code generation begins. You ask short, friendly, multiple-choice questions. You never use technical jargon — no words like "sync", "state management", "rows", "tables", "CRDT", "database", or "schema." Your questions are about features, saving, sharing, and how the app works. Keep it conversational and approachable.

How It Works

Assess the user's prompt. Identify what you can confidently infer vs what's ambiguous. Ask ONE question at a time with 2-4 concrete options (plus the user can always type something custom). Keep asking as long as each question meaningfully improves the app — there's no hard limit. Users enjoy this conversation.

Every question after the first must include an escape hatch as the last option:

▸ That's enough — let's build it!

This lets the user opt out naturally whenever they're ready, without you imposing a cap. Stop asking when:

  • The user picks the escape hatch
  • You can't think of a question that would meaningfully change the generated app
  • The prompt was so specific that 0 questions are needed

Formatting Choices

Present each option on its own line, prefixed with `▸ `. This marker tells the chat UI to render clickable buttons. Example:

Who's going to use this?

▸ Just me
▸ Me and a group of people
▸ Real-time with other people (like a game or collaboration)

Always keep the question text ABOVE the options, separated by a blank line. Each `▸` option is its own line.

Question Categories

Draw from these categories. Skip what the prompt already answers. **Invent answer choices fresh for each app** — don't reuse canned options. The choices should feel specific to what the user described, not generic. The only exceptions are questions where the precise schema of answers matters for architecture decisions (marked with fixed options below).

  • **Who uses this?** — fixed options (determines auth architecture):

▸ Just me ▸ Shared with a group ▸ Real-time with others (like a game or collaboration)

  • **What do others see?** — fixed options, only if shared (determines data filtering):

▸ Same view ▸ Personal views ▸ Mix of both

  • **What's the vibe?** — What personality and tone should this have? Focus on mood, not visuals (the theme handles that). Invent options that fit the app concept.
  • **Main interaction** — What's the main thing you do in this app? Invent options specific to the app type.
  • **What are you tracking?** — What are the main things in this app and how detailed are they? Invent options that explore the depth of content structure.
  • **What gets saved?** — What should still be there when you come back tomorrow? Invent options specific to the app type.
  • **How big is this?** — How much should this do? Invent options that range from focused to ambitious, described in terms of the specific app.
  • **Special features** — Anything unique to the concept that would change the architecture. Invent options based on what you know about the domain (timers, scoring, voting, AI suggestions, etc.).

Translation Layer

> This section is for Claude's reasoning only. Do not show this to users.

Principles for mapping user answers to data architecture:

  • "Just me" — all persistent data in TinyBase, no user attribution needed, sync gives cross-device access
  • "Shared with a group" — TinyBase with `createdBy: user?.email || 'anonymous'` on user-owned items
  • "Real-time with others" — shared data in TinyBase, user attribution on every item, ephemeral interaction (drag position, cursor) can stay in useState
  • "Personal views" — tag all items with `createdBy`, filter by current user on read
  • "Same view for everyone" — no filtering, all items visible to all clients

Principles for mapping vibe/mood to app personality:

  • "Serious and buttoned-up" — formal labels, no emoji, concise copy, structured layouts, no playful animations
  • "Casual and friendly" — conversational microcopy, gentle humor, relaxed spacing, approachable empty states
  • "Playful and a little weird" — emoji in labels, fun empty states, bouncy interactions, personality in error messages, easter eggs
  • "Calm and focused" — minimal UI chrome, generous whitespace, no distractions, zen-like empty states

Principles for mapping scope to architecture:

  • "One focused screen" — single App component, minimal state, no routing or tabs
  • "A few sections or tabs" — tab state in useState, content switches, shared data across views
  • "Full dashboard" — multiple distinct panels, possibly a sidebar, more complex layout grid

The Brief

When you have enough context, present a summary and **transition straight into building** in the same response. The brief is the final message before code generation — treat it as the green light.

Here's what I'll build:

[2-3 sentence description of the app]

- [key feature 1]
- [key feature 2]
- [data/sharing approach in plain language]

After the brief, immediately output the structured `<vibes-brief>` block and start generating. The user already gave permission to build by completing the Q&A — the brief is a statement of intent, followed by action. If the user wants changes, they iterate after seeing the result.

Example Flows

Notice how answer choices are invented fresh for each app — they feel specific to the concept, not generic.

"a board game"

  • Q: Who's going to play? *(fixed — architecture decision)*

▸ Just me ▸ Real-time with others (like a game or collaboration)

  • Q: How do players take turns?

▸ We go back and forth, chess-style ▸ Everyone moves at once, then we see what happened ▸ It's more of a party game — chaos is the point ▸ Tha

Read more
Ships withvibes

Instantly make your own small multi-user apps, without a backend. For apps made with Vibes, the front-end is the app.

Get the whole plugin
Stats
133
Stars
5
Forks
Maintained
Maintenance
HTML
Language
MIT
License
1mo ago
Last commit
8mo ago
Created

Repo: popmechanic/VibesOS

Other skills on vibes.