From sdlc
Design exploration before implementation. Spawns a Product + Engineering + Design team to debate scope, architecture, and UX, then synthesizes into a spec. Use before building new features or making significant changes. Trigger: 'brainstorm', 'design a feature', 'let's think about', 'explore an idea', 'what should we build'.
npx claudepluginhub jerrod/agent-plugins --plugin sdlcThis 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.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Log skill invocation:
AUDIT_SCRIPT=$(find . -name "audit-trail.sh" -path "*/sdlc/*" 2>/dev/null | head -1)
[ -z "$AUDIT_SCRIPT" ] && AUDIT_SCRIPT=$(find "$HOME/.claude" -name "audit-trail.sh" -path "*/sdlc/*" 2>/dev/null | sort -V | tail -1)
AUDIT_SCRIPT=$(realpath "$AUDIT_SCRIPT" 2>/dev/null || echo "")
HOME_REAL=$(realpath "$HOME/.claude" 2>/dev/null || echo "")
PWD_REAL=$(realpath . 2>/dev/null || echo "")
case "$AUDIT_SCRIPT" in
"$HOME_REAL"/*|"$PWD_REAL"/*) : ;;
*) AUDIT_SCRIPT="" ;;
esac
bash "$AUDIT_SCRIPT" log design sdlc:brainstorm started --context "$ARGUMENTS"bash "$AUDIT_SCRIPT" log design sdlc:brainstorm completed --context "<summary>"Help turn ideas into fully formed designs and specs through collaborative dialogue with an Agent Team.
Start by understanding the current project context, then spawn a team of three specialists (Product, Engineering, Design) who explore the codebase, debate the idea with each other and with you, and converge on a design. Once consensus emerges, synthesize their findings, present the design, and get user approval.
<HARD-GATE> 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. This applies to EVERY project regardless of perceived simplicity. </HARD-GATE>Every project goes through this process. A todo list, a single-function utility, a config change — all of them. "Simple" projects are where unexamined assumptions cause the most wasted work. The design can be short (a few sentences for truly simple projects), but you MUST present it and get approval.
You MUST create a task for each of these items and complete them in order:
skills/brainstorm/frontend-design-principles.md and enrich the Design teammate's spawn prompt with those principles. The Design teammate should push for specific aesthetic decisions: font character, palette direction, motion intent, compositional approach. The resulting spec should include a Visual Direction section. Additionally, check if .claude/design-context.md exists — if not, recommend running sdlc:design init after the brainstorm to establish design tokens before implementation begins.docs/specs/YYYY-MM-DD-<topic>-design.md and commitdigraph brainstorming {
"Explore project context" [shape=box];
"Spawn Agent Team\n(Product + Engineering + Design)" [shape=box];
"Teammates debate\n(real inter-agent messaging)" [shape=box];
"Consensus reached?" [shape=diamond];
"Synthesis:\nagreements, tensions,\nuser breaks ties" [shape=box];
"Clean up team" [shape=box];
"Present design sections" [shape=box];
"User approves design?" [shape=diamond];
"Write design doc" [shape=box];
"Spec review loop" [shape=box];
"Spec review passed?" [shape=diamond];
"User reviews spec?" [shape=diamond];
"Invoke sdlc:writing-plans" [shape=doublecircle];
"Frontend/UI work?" [shape=diamond];
"Offer Frontend Design Mode\n(read principles if accepted)" [shape=box];
"Explore project context" -> "Frontend/UI work?";
"Frontend/UI work?" -> "Offer Frontend Design Mode\n(read principles if accepted)" [label="yes"];
"Frontend/UI work?" -> "Spawn Agent Team\n(Product + Engineering + Design)" [label="no"];
"Offer Frontend Design Mode\n(read principles if accepted)" -> "Spawn Agent Team\n(Product + Engineering + Design)";
"Spawn Agent Team\n(Product + Engineering + Design)" -> "Teammates debate\n(real inter-agent messaging)";
"Teammates debate\n(real inter-agent messaging)" -> "Consensus reached?";
"Consensus reached?" -> "Teammates debate\n(real inter-agent messaging)" [label="no, steer\nand continue"];
"Consensus reached?" -> "Synthesis:\nagreements, tensions,\nuser breaks ties" [label="yes"];
"Synthesis:\nagreements, tensions,\nuser breaks ties" -> "Clean up team";
"Clean up team" -> "Present design sections";
"Present design sections" -> "User approves design?";
"User approves design?" -> "Present design sections" [label="no, revise"];
"User approves design?" -> "Write design doc" [label="yes"];
"Write design doc" -> "Spec review loop";
"Spec review loop" -> "Spec review passed?";
"Spec review passed?" -> "Spec review loop" [label="issues found,\nfix and re-dispatch"];
"Spec review passed?" -> "User reviews spec?" [label="approved"];
"User reviews spec?" -> "Write design doc" [label="changes requested"];
"User reviews spec?" -> "Invoke sdlc:writing-plans" [label="approved"];
}
The terminal state is invoking sdlc:writing-plans. Do NOT invoke any other implementation skill. The ONLY skill you invoke after brainstorming is sdlc:writing-plans.
Understanding the idea:
Agent Teams require Claude Code v2.1.32+ and the CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS environment variable set to 1.
Detection: Before spawning the team, check availability:
echo $CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS — must be 11, skip directly to Fallback ModeInstead of simulating three personas in a single context, spawn three real Claude Code teammates. Each has its own context window, can explore the codebase independently, and communicates via inter-agent messaging.
Creating the team:
Tell Claude Code to create an agent team. Use natural language — the system handles the mechanics:
Create an agent team for brainstorming. Spawn three teammates:
1. "product" — You are the Product voice. Business-minded, scope-focused. Your job is to
define the MVP, challenge scope creep, ask "who is this for?" and "what's the business
value?" Explore the codebase to understand existing capabilities. Challenge Engineering
on over-building. Challenge Design on features that don't serve the core use case.
When you have a clear position on scope and MVP, message the team.
2. "engineering" — You are the Engineering voice. Technical, risk-aware. Your job is to
assess architecture, identify what breaks, flag coupling and tech debt risks, and propose
migration paths. Explore the codebase to understand current architecture and constraints.
Challenge Product on feasibility. Challenge Design on implementation cost. When you have
a clear technical assessment, message the team.
3. "design" — You are the Design voice. User-focused, detail-oriented. Your job is to
define user flows, identify friction points, consider accessibility and mobile, and
think about onboarding. Explore the codebase to understand existing UX patterns.
Challenge Product on user impact. Challenge Engineering on UX compromises. When you
have a clear UX position, message the team.
All three should explore the codebase first, then debate with each other via messages.
They should challenge each other's positions directly. Use Sonnet for all teammates.
Customize the spawn prompts with the specific idea/feature being brainstormed. Include:
Your role as team lead:
You are NOT a fourth persona. You are the facilitator:
When to stop the team: When teammates have reached rough consensus on:
Or when the user has broken ties on unresolved tensions.
Clean up: After synthesis, shut down the teammates and clean up the team before proceeding to design presentation. Always clean up through the lead (you), not through teammates.
If Agent Teams are unavailable (feature flag not set, version too old, or spawn fails), fall back to the original single-agent approach:
Simulate three personas in your own responses. This is NOT round-robin — write natural conversation where personas talk to each other and to the user.
Personas:
| Persona | Voice | Leads on |
|---|---|---|
| Product | Business-minded, scope-focused, asks "who is this for?" | MVP definition, prioritization, market fit, business value |
| Engineering | Technical, risk-aware, asks "what breaks?" | Architecture, scaling, coupling, migration paths, tech debt |
| Design | User-focused, detail-oriented, asks "how does this feel?" | User flows, friction, accessibility, mobile, onboarding |
Conversation rules:
Persona formatting:
Each persona's dialogue is prefixed with their name in bold:
Product: Invites are table stakes — but what's the MVP here?
Engineering: Before we scope — do we even have a team model yet?
Design: Neither of you is thinking about onboarding. What does a new user see?
When to stop the boardroom: When the three personas reach rough consensus on:
Whether using Agent Teams or fallback mode, the remaining process is identical.
Presenting the design:
Design for isolation and clarity:
Working in existing codebases:
Documentation:
docs/specs/YYYY-MM-DD-<topic>-design.md
Security-sensitive features: If the feature involves auth, payments, PII, external APIs, or user-generated content, mention /sdlc:threat-model as an optional next step: "This feature touches security-sensitive surfaces. Consider running /sdlc:threat-model to identify trust boundaries and abuse paths before implementation."
Visual Direction section: When frontend-design mode is active, the design doc MUST include a Visual Direction section with these fields: Aesthetic (chosen direction), Typography (font choices and pairing rationale), Color (palette character and key colors), Motion (animation philosophy and key moments), Composition (layout approach and spatial strategy), Content Plan (hero/support/detail/CTA sequence with one-line per section), Motion Budget (2-3 planned motion moments: entrance, scroll-linked, hover/reveal), Card Policy (cardless / cards for specific interactions only). This section is consumed by writing-plans to populate the plan's Design Constraints field.
Spec Review Loop: After writing the spec document:
subagent_type="sdlc:spec-reviewer". Provide the spec file path and precisely crafted review context — never your session history.User Review Gate: After the spec review loop passes, ask the user to review the written spec before proceeding:
"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 loop. Only proceed once the user approves.
Design System Bootstrap: When frontend-design mode was active and no .claude/design-context.md exists, recommend sdlc:design init to establish design tokens before implementation. If accepted, invoke it before sdlc:writing-plans. If declined, proceed — constraints apply at review time regardless.
Implementation: