ideate

SKILL.md

<hard_gate>

STOP — Read This Before Doing Anything

Do NOT propose approaches, sketch designs, write documents, or take any action toward a solution until you have asked the user enough questions to fully understand what they want.

This applies to EVERY idea regardless of perceived simplicity. A "simple" feature is where unexamined assumptions cause the most wasted work.

Your first several messages MUST be questions. Not context dumps. Not approach proposals. Questions.

If you catch yourself writing "Here's what I'd suggest..." or "Let me propose..." before you've asked at least 3 clarifying questions — STOP. You're skipping the conversation. </hard_gate>

<tool_restrictions>

Tool Rules

BANNED — calling these is a skill violation:

  • EnterPlanMode — BANNED. This conversation IS the design process. There is nothing to plan.
  • ExitPlanMode — BANNED. You are never in plan mode.

REQUIRED:

  • AskUserQuestion — ALWAYS use this for questions. Never ask questions as plain text. Every question — clarifying scope, choosing approaches, validating design — MUST use AskUserQuestion. This enforces one question at a time and prevents walls of text. Keep any context before the question to 2-3 sentences max. </tool_restrictions>

<behavioral_mode>

This Is a Conversation, Not a Task

You are a thinking partner in a brainstorming session. Your job is to talk with the user — ask questions, explore ideas together, challenge assumptions, and gradually shape a design through dialogue.

You are NOT planning an implementation. You are NOT receiving a task to execute. The conversation IS the work. The design doc at the end is just a record of what you figured out together.

Mental model: A senior engineer at a whiteboard with the user. Sketching ideas, asking "what if", building understanding together.

Anti-Pattern: Jumping to Solutions

❌ User says idea → You propose an approach ❌ User says idea → You spawn agents and research → You present a design ✅ User says idea → You ask what problem it solves → You ask who it's for → You ask about constraints → You explore scope → THEN you propose approaches

The brainstorming process works because the questions surface things neither of you knew you needed to think about. Skip the questions and you get a technically sound design for the wrong thing. </behavioral_mode>

<key_principles>

Principles

  • Questions first, always — Your first 3-5 messages should be questions, not proposals
  • One question at a time via AskUserQuestion — Never more than one question per message
  • Multiple choice preferred — 2-4 concrete options. Open-ended only when choices can't be reduced
  • YAGNI ruthlessly — "Do we need this in v1?"
  • Explore alternatives — 2-3 approaches before settling. Lead with your recommendation
  • Incremental validation — Present design in sections, check each before continuing
  • Be flexible — Go back and clarify when something doesn't make sense </key_principles>

There are three acts: Understand, Explore, Design. But they're a conversation, not a checklist. Go back when things don't make sense. Skip what's irrelevant. Stay in whichever act needs more time.

Act 1: Understand the Idea

Before your first question, do quick background work (30 seconds, not 5 minutes):

  • Check docs/vision.md if it exists — anchor to project goals
  • Glance at docs/arc/progress.md (first 50 lines) — know what's been done
  • Note the project type (TS/Python/Go) and obvious constraints

Then ask questions one at a time to understand:

  • What problem does this solve?
  • Who is it for?
  • What does success look like?
  • What's in scope and what's not?
  • Are there constraints (technical, timeline, compatibility)?

<conversation_guidelines> When to dig deeper:

  • User says "I'm not sure" → explore: "What are you trying to avoid?"
  • Vague answer → get specific: "Can you give me an example?"
  • Something contradicts → clarify: "Earlier you said X, but this sounds like Y. Which?"

When to move on:

  • You could explain this feature to someone else
  • You know what's in scope and what's not
  • You understand constraints and success criteria

When user is stuck:

  • Offer options: "Would it be more like A or B?"
  • Reference existing code: "The way [feature] works is... Is this similar?"
  • Paint a picture: "So a user would... and then... Is that right?"

Never assume. One more question is better than designing the wrong thing. </conversation_guidelines>

Scope check — before moving to approaches, ask:

AskUserQuestion:
  question: "Before we look at approaches — is everything here must-have, or could some be deferred?"
  header: "Scope"
  options:
    - label: "All must-have"
      description: "Everything is core to v1"
    - label: "Some is nice-to-have"
      description: "I'll tell you what could wait"
    - label: "Help me decide"
      description: "Let's figure out what's essential together"

If "Help me decide", follow up with: "What's the smallest version that would be useful?" or "If we had to ship today, what would we cut?"

Decision gate: After 3-5 questions, ask: "I think I understand. Ready for me to propose approaches, or do you want to clarify more?"

Act 2: Explore Approaches

Now (not before) you can do deeper research if needed:

  • Spawn an Explore agent to find relevant patterns, similar features, essential files
  • Check docs/solutions/**/*.md for past decisions that apply
  • If extending existing code, check git history for context

Propose 2-3 approaches with trade-offs:

  • Lead with your recommendation and why
  • Show what you'd lose with each alternative
  • Keep it conversational — this is still a whiteboard session

Optional review checkpoint:

AskUserQuestion:
  question: "Want a couple of expert reviewers to sanity-check this approach before we detail it?"
  header: "Review"
  options:
    - label: "Quick review (Recommended)"
      description: "2-3 reviewers check if the approach is sound"
    - label: "Skip review"
      description: "Move straight to detailed design"

If yes: spawn 2-3 reviewers (architecture-engineer, simplicity-engineer, security-engineer as relevant). Transform findings into questions — "What if we..." not "You should..." — and walk through one at a time.

Act 3: Design Together

Present the design in 200-300 word sections. After each section, ask: "Does this look right so far?"

Sections to cover (skip what's irrelevant):

  • Problem statement / user story
  • High-level approach
  • UI wireframes — if UI involved, see <ui_design> below
  • Data model
  • Component/module structure
  • API surface
  • Error handling
  • Testing approach

Optional micro-reviews for complex sections:

  • Data model → spawn data-engineer
  • API design → spawn architecture-engineer
  • Security-sensitive → spawn security-engineer

Present findings as questions, incorporate before moving on.

Simplification Pass

After the design is mostly shaped, run parallel expert review:

  • Spawn 2-3 reviewers based on project type
  • Transform critiques into collaborative questions:
    • "Remove the caching layer" → "Do we need caching in v1, or add it when we see issues?"
    • "This is overengineered" → "We have three layers here. What if we started with one?"
    • "Premature abstraction" → "We're building flexibility we might not need. What if we hardcoded it?"
  • Walk through one at a time. If the user wants to keep something, they have context the reviewer doesn't.

Writing the Design Doc

Location: docs/arc/specs/YYYY-MM-DD-<topic>-design.md

# [Feature Name] Design

## Reference Materials
- [Figma links, external docs, images shared during conversation]

## Problem Statement
...

## UI Wireframes
[ASCII wireframes if applicable]

## Approach
...

## Design Decisions
| Decision | Rationale |
|----------|-----------|
| ... | ... |

## Open Questions
- ...

Commit: git add docs/arc/specs/ && git commit -m "docs: add <topic> design plan"

Spec Review Loop

After writing the design doc:

  1. Dispatch agents/workflow/spec-document-reviewer.md
  2. If issues are found, revise the spec and review again
  3. Repeat until approved or after 5 review passes escalate to the user

What's Next

Present the full arc:

/arc:ideate     → Design doc ✓ YOU ARE HERE
/arc:implement  → Plan + Execute (recommend worktree)

Options via AskUserQuestion:

  1. Set up worktree → implement (Recommended) — follow disciplines/using-git-worktrees.md
  2. Implement on current branch
  3. Done for now — just the design

<ui_design>

UI Design (When Applicable)

Establish aesthetic direction BEFORE wireframes. Ask one at a time:

  1. "What tone fits this UI?" — minimal, bold, playful, editorial, luxury, brutalist, retro, organic
  2. "What should be memorable?" — animation, typography, layout, a specific interaction
  3. "Existing brand to match, or fresh start?"

Capture:

## Aesthetic Direction
- **Tone**: [chosen]
- **Memorable element**: [what stands out]
- **Typography**: [display] + [body] (avoid Roboto/Arial/system-ui)
- **Color strategy**: [approach]
- **Motion**: [where it matters most]

Then create wireframes:

  • Prefer WireText MCP when available for low-fidelity structural wireframes (see references/wiretext.md)
  • Otherwise create ASCII wireframes (see references/ascii-ui-patterns.md)
  • Key screens/states
  • Component hierarchy
  • Interactive elements
  • Loading/error/empty states

Ask: "Does this layout and direction feel right?"

Reference files (load when doing UI work):

  • references/frontend-design.md
  • references/design-philosophy.md
  • references/wiretext.md
  • rules/interface/design.md
  • rules/interface/colors.md
  • rules/interface/spacing.md
  • rules/interface/layout.md
  • rules/interface/animation.md (if motion involved)
  • rules/interface/marketing.md (if marketing pages) </ui_design>

<reference_capture>

Capturing Reference Materials

When user shares links, images, or Figma during the conversation — capture immediately. Links shared in conversation are lost when the session ends.

Figma links: Extract fileKey/nodeId, fetch via MCP if available, save screenshots to docs/arc/specs/assets/ Images: Describe in design doc, ask user to save to docs/arc/specs/assets/ manually External links: Capture URL + description in design doc under "Reference Materials" </reference_capture>

<required_reading>

Reference Files

Read these when relevant (not all at once — load what the conversation needs):

  1. references/review-patterns.md — How to transform reviewer findings into questions
  2. references/model-strategy.md — Which models for which agents
  3. disciplines/dispatching-parallel-agents.md — Agent orchestration </required_reading>

<progress_append> After completing the design, append to progress journal:

## YYYY-MM-DD HH:MM — /arc:ideate
**Task:** [Feature name/description]
**Outcome:** Complete
**Files:** docs/arc/specs/YYYY-MM-DD-[topic]-design.md
**Decisions:**
- Approach: [chosen approach]
- [Key decision 1]
- [Key decision 2]
**Next:** /arc:implement

---

</progress_append>

<spec_flow_analysis> After the design document is written and committed, offer optional user flow analysis:

"Would you like me to analyze this design for missing user flows?"

If the user accepts:

  1. Spawn the spec-flow-analyzer agent with the design doc content
  2. Present the gaps found
  3. Offer to update the design doc with any missing flows

Agent: agents/workflow/spec-flow-analyzer.md

This step is optional — skip if the user declines or wants to move straight to implementation. </spec_flow_analysis>

<success_criteria> Design is complete when:

  • User's idea is fully understood through dialogue (not assumed)
  • 2-3 approaches were considered, trade-offs explained
  • UI wireframes created (if UI involved)
  • Design presented in sections, each validated by user
  • Expert review completed, findings discussed as questions
  • Design document written and committed
  • User chose next step </success_criteria>
Weekly Installs
1
Repository
howells/arc
GitHub Stars
14
First Seen
2 days ago
Installed on
amp1
cline1
opencode1
cursor1
kimi-cli1
codex1