Turn ideas into validated designs through collaborative dialogue with built-in expert review. Use when asked to 'design a feature', 'plan an approach', 'think through implementation', or when starting new work that needs architectural thinking before coding.
<hard_gate>
This skill has a LOCKED MESSAGE FORMAT during Act 1 (Understanding). You cannot override it.
Every message you send during Act 1 MUST follow this exact structure:
[0-2 sentences of context or acknowledgment]
[one question to the user — exactly ONE]
That's it. Nothing else. The message ends after the question.
The following are STRUCTURALLY BANNED until the user has answered at least 3 questions AND you have explicitly transitioned to Act 2:
| tables of any kind)Before sending ANY message during Act 1, run this checklist:
If ANY check fails, rewrite the message before sending. Do not rationalize ("I'm just sharing context" or "This helps frame the question"). The format is the format.
Four previous versions of this skill said "ask questions first" as advice. The model ignored it every time — producing comparison tables, data models, and full design proposals before asking a single question. Advisory language does not work. This structural constraint does. </hard_gate>
<tool_restrictions>
BANNED tools — calling these is a skill violation:
EnterPlanMode — BANNED. This conversation IS the design process.ExitPlanMode — BANNED. You are never in plan mode.REQUIRED interaction pattern — AskUserQuestion:
Every question during Act 1 MUST follow the AskUserQuestion interaction pattern. In Claude Code, use the tool. In Codex, ask the same single question directly in plain text unless a structured question tool is actually available in the current mode. Act 3's section checkpoints ("Does this look right so far?") are plain-text questions and are not covered by this rule.
Do not mention missing tools, unavailable tools, or fallback mechanics to the user.
What a correct Act 1 message looks like:
I see you have a products table with vendor collections already.
[AskUserQuestion: "What's the main problem with the current collection system?"
options: ["Can't mix products across vendors", "No control over ordering/display",
"Missing editorial curation", "Something else"]]
What a VIOLATION looks like (this is what the model keeps doing):
Here's what I understand about your idea:
[200-word summary of what the user said]
[Comparison table of current vs proposed]
[Proposed data model with 2 tables]
[List of "key design decisions" with options A/B/C/D]
[Recommendation paragraph]
What do you think?
That second example is EXACTLY the failure mode. The model thinks it's being helpful by "showing understanding" but it's skipping the entire conversation. Every element in that example is banned during Act 1. </tool_restrictions>
<arc_runtime>
Requires the full Arc bundle. Arc-owned paths (agents/, references/, disciplines/, templates/, scripts/, rules/, skills/) resolve from the plugin root — the directory containing agents/ and skills/. Everything else is the user's repository.
</arc_runtime>
<behavioral_mode>
You are a thinking partner. The conversation IS the work. The feature spec at the end is just a record.
Mental model: A senior engineer at a whiteboard. You ask "what if", not "here's what I'd build."
The model's instinct is to demonstrate competence by producing output. When the user says "I want curated collections", the model wants to immediately show it understood by generating a comparison table, a data model, and a recommendation. This feels helpful. It is not. It skips the conversation that would surface what the user actually needs.
The instinct to produce output is the enemy of this skill. Resist it. Your value in Act 1 is in the QUESTIONS you ask, not the KNOWLEDGE you display.
Steps 2-8 each produce exactly: 0-2 sentences + AskUserQuestion. Nothing more. </behavioral_mode>
<key_principles>
references/question-loops.md — the shared rules for one-question-at-a-time interviewsThere are three acts: Understand, Explore, Specify. 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.
Background work (silent — do NOT share results with the user):
CONTEXT.md if it existsThen immediately ask your first question via AskUserQuestion. No preamble beyond 1-2 sentences acknowledging what the user said. Do NOT summarize, restate, or "reflect back" what they told you. They know what they said.
Questions to explore (one per message, in order of priority):
You won't need all of these. Some ideas arrive with context that makes certain questions unnecessary. Use judgment — but when in doubt, ask.
Responding to answers:
REMINDER: Every response in Act 1 is 0-2 sentences + AskUserQuestion. Check the violation list in <hard_gate> before sending.
Transition to Act 2: After at least 3 questions answered, ask via AskUserQuestion:
Only after the user says "show me approaches" (or equivalent) do you move to Act 2. The hard gate lifts at this point.
Now (not before) you can do deeper research if needed:
docs/arc/specs/ and docs/arc/plans/ for related prior work, and docs/adr/ for past decisions that applyPropose 2-3 approaches with trade-offs:
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 the detailed spec"
If yes: spawn 2-3 reviewers (architecture-engineer, senior-engineer, security-engineer as relevant). Transform findings into questions — "What if we..." not "You should..." — and walk through one at a time.
Present the spec in 200-300 word sections. After each section, ask: "Does this look right so far?"
Sections to cover (skip what's irrelevant):
<ui_requirements> belowOptional micro-reviews for complex sections:
Present findings as questions, incorporate before moving on.
After the spec is mostly shaped, run parallel expert review:
Location: docs/arc/specs/YYYY-MM-DD-<topic>-spec.md
# [Feature Name] Feature Spec
## Reference Materials
- [Figma links, external docs, images shared during conversation]
## Problem Statement
...
## UI Requirements
[User-visible states, interactions, and any external visual direction]
## Approach
...
## Design Decisions
| Decision | Rationale |
| -------- | --------- |
| ... | ... |
## Open Questions
- ...
Do not commit the spec silently. Offer the commit with one question — e.g. AskUserQuestion "Spec saved. Commit it now?" with options "Commit spec" / "Leave uncommitted". If the user agrees: git add docs/arc/specs/ && git commit -m "docs: add <topic> feature spec"
After writing the feature spec:
agents/workflow/spec-document-reviewer.mdPresent the full arc:
/arc:ideate → Feature spec ✓ YOU ARE HERE
↓
/arc:review → Expert validation (optional)
↓
/arc:implement → Plan + Execute
Options via AskUserQuestion:
/arc:review before implementing<ui_requirements>
Arc does not create independent visual direction, brand systems, or UI polish workflows. If the work needs visual design, use an external source of truth such as Chiaroscuro, Figma, an existing docs/brand-system.md, or a user-provided design brief. Arc can capture that source and translate it into implementation-relevant requirements.
Ask only what is needed for product behavior and implementation:
Capture external visual direction if provided:
## UI Requirements
- **Screens/states**: [screens, empty/loading/error/success states]
- **Interactions**: [primary user actions and feedback]
- **Existing patterns**: [components/routes to follow]
- **Visual source of truth**: [Chiaroscuro spec, Figma, brand-system doc, existing app pattern, or none]
- **Open design needs**: [anything that should be sent to an external design workflow before implementation]
If visual direction is missing and the feature depends on it, do not invent it. Ask whether to:
Low-fidelity structural sketches are acceptable when they clarify flow, but they are not visual direction. Use inline ASCII only when it helps implementation understand layout or state relationships. </ui_requirements>
<reference_capture>
When user shares links, images, Figma, or external design specs 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 the spec, ask user to save to docs/arc/specs/assets/ manually
External links/specs: Capture URL + description in the spec under "Reference Materials"
</reference_capture>
<required_reading>
Read these when relevant (not all at once — load what the conversation needs):
references/question-loops.md — The one-question-at-a-time rules for Act 1references/review-patterns.md — How to transform reviewer findings into questionsreferences/model-strategy.md — Which models for which agentsdisciplines/dispatching-parallel-agents.md — Agent orchestration
</required_reading><spec_flow_analysis> After the feature spec is written, offer optional user flow analysis:
"Would you like me to analyze this spec for missing user flows?"
If the user accepts:
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> Spec is complete when:
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer