You MUST use this skill for any design exploration, architecture decision, or trade-off analysis before implementation begins — especially when the user says "brainstorm", "explore the design", "think through", "what approach should we take", or describes a feature with multiple valid strategies. This is the arc-native brainstorming skill that writes designs to docs/plans/ and registers them for review via arc plan. Always prefer this over generic brainstorming when the project uses arc issue tracking.
From arcnpx claudepluginhub sentiolabs/arc --plugin arcThis skill uses the workspace's default tool permissions.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Executes pre-written implementation plans: critically reviews, follows bite-sized steps exactly, runs verifications, tracks progress with checkpoints, uses git worktrees, stops on blockers.
Explore requirements through Socratic dialogue before any implementation begins.
Do NOT write any implementation code, scaffold any project, or take any implementation action until the design is approved. Brainstorming produces a design document — not code.
Create a task for each step below using TaskCreate. Mark each as in_progress when starting and completed when done. This creates a visible progress list in the CLI that carries forward into the plan skill.
arc list)Example AskUserQuestion usage:
Question: "How should we handle session persistence?"
Options:
- "In-memory only" (simplest, lost on restart)
- "SQLite" (persistent, single-node, matches existing storage)
- "Redis" (distributed, adds infrastructure dependency)
Example AskUserQuestion usage:
Question: "Which approach should we go with?"
Options:
- "Approach A: ..." (recommended — trade-offs...)
- "Approach B: ..." (trade-offs...)
- "Approach C: ..." (trade-offs...)
If the design will produce multiple implementation tasks that could run in parallel, explicitly identify the shared contracts — types, interfaces, config keys, constants, and function signatures that multiple tasks will reference.
Contracts fall into two tiers:
FeedbackRequest { memory_id: i64, rating: i8 }) — the subagent adapts to language idioms during implementation.Present shared contracts to the user as a "foundation layer" with exact code:
// internal/types/config.go
// SessionConfig holds session-related settings.
type SessionConfig struct {
Timeout time.Duration `json:"timeout"`
MaxIdle int `json:"max_idle"`
Secure bool `json:"secure"`
}
// internal/storage/storage.go
// GetSession retrieves a session by ID.
// Returns nil and no error if the session does not exist.
GetSession(ctx context.Context, id string) (*Session, error)
Contract test assertions verify that the shared types satisfy compile-time expectations. Place these inline in each relevant test file with a clear separator:
// internal/types/config_test.go
// --- Contract assertions ---
// Verify SessionConfig fields exist with expected types.
var _ time.Duration = SessionConfig{}.Timeout
var _ int = SessionConfig{}.MaxIdle
var _ bool = SessionConfig{}.Secure
// internal/storage/sqlite/sqlite_test.go
// --- Contract assertions ---
// Verify SQLiteStore satisfies the Storage interface.
var _ storage.Storage = (*SQLiteStore)(nil)
These exact definitions and contract tests become the T0 foundation task during planning — implemented sequentially before any parallel work begins. The T0 task writes the shared type files and embeds contract test assertions inline in each relevant test file, so that parallel agents can import these types immediately and any drift is caught at compile time.
Skip this step if the design maps to a single task or purely sequential work.
Write the design document to docs/plans/ and register it as an ephemeral plan for review:
# Write the design markdown file
# Use YYYY-MM-DD-<topic>.md naming convention
cat > docs/plans/YYYY-MM-DD-<topic>.md <<'EOF'
<design content>
EOF
# Register the plan for review (returns a plan ID + planner URL)
arc plan create docs/plans/YYYY-MM-DD-<topic>.md
The arc plan create command returns a plan ID. Use the plan ID to construct the planner URL in the next step.
After arc plan create returns the plan ID, ALWAYS output the planner URL so the user can click it directly in their terminal. The arc plan create command prints this URL, but also output it yourself to be sure:
Plan ready for review:
http://localhost:7432/planner/<plan-id>
Replace localhost:7432 with the actual server URL if different (check ARC_SERVER env var or the arc config).
Then use the AskUserQuestion tool — include the planner URL directly in the options so the user sees it without scrolling:
Question: "Plan ready for review at http://localhost:7432/planner/<plan-id> — how would you like to proceed?"
Options:
- "Approve" (proceed to /arc:plan for implementation breakdown)
- "I've submitted feedback in the planner (http://localhost:7432/planner/<plan-id>)" (read comments, revise, re-present)
- "Save for later" (leave as draft — resume in a new session)
If user approves:
arc plan approve <plan-id>
Then proceed to step 8.
If user says "feedback submitted":
# Read review comments
arc plan comments <plan-id>
# Also re-read the file content in case the user edited it in the planner
arc plan show <plan-id>
Revise the design file based on the feedback, then re-present the planner URL and options. Repeat until approved.
If user says "save for later":
Tell the user they can resume by running /arc:brainstorm in a new session and referencing the plan file and plan ID.
After the plan is approved, use the AskUserQuestion tool:
Question: "Design approved! What's next?"
Options:
- "Break into tasks with /arc:plan" (create epic + implementation tasks)
- "Implement directly with /arc:implement" (for small, single-task work)
- "Done for now" (design is saved — continue in a new session)
plan skill, passing the plan IDimplement skill/arc:plan in a new session| Indicator | Scale | Structure |
|---|---|---|
| Multiple phases, weeks of work, cross-cutting concerns | Large | Meta epic → phase epics → tasks |
| Single feature, days of work, contained scope | Medium | Epic → tasks |
| One task, hours of work, obvious approach | Small | Single issue |
plan (or implement for small work)docs/plans/ and are registered via arc plan create <file-path>skills/arc/_formatting.md