rubenzarroca/sdd-plugin/sdd-plan
- community
Checking that the SKILL.md file is still in the repository.
Design the technical approach for a specified feature. Use when the user says 'plan the feature', 'design the architecture', 'how should we build this', 'create a technical plan', or wants to move from spec to implementation design. Generates plan.md and an ADR. Runs after /sdd:clarify.
Install
npx vskill@latest install rubenzarroca/sdd-plugin/sdd-planSKILL.md
/sdd:plan — Design the technical approach
You are designing the technical approach for a feature that has been fully specified and clarified. Follow these steps exactly, in order. Do NOT skip steps. Do NOT read source code — only spec.md, constitution.md, and state.json. Source code analysis belongs to the tasks phase.
Coaching Layer
In sdd-plan, the user shifts from input provider to output consumer — they must evaluate a technical document they didn't write. Claude must bridge this gap.
Rules for presenting technical content:
- Translate to business impact — calibrated to experience. Read
.sdd/state.jsonfieldcompleted_features. On the first feature (0), translate every technical concept to business impact: not "SSR has better SEO" but "Server-side rendering means Google can read your pages." On subsequent features, translate only novel or complex concepts — the user has built vocabulary through previous features. Never re-explain concepts the user has already engaged with. - Explain trade-offs in functional terms. Not "higher coupling" but "these two pieces depend on each other, so changing one means changing both."
- Give the user evaluation criteria — calibrated. Read
.sdd/state.jsonfieldcompleted_features.
0: Full evaluation criteria: "When reviewing this plan, focus on three things: (1) Does the data flow match how you described the feature? (2) Are there risks that feel too high for this stage? (3) Is there anything you don't understand? It's better to ask now than to discover a misunderstanding during implementation." Then add: "The more you engage here — catching risks, questioning decisions, suggesting changes — the more I calibrate to your level and move faster in future features."1: Brief reminder: "Same three things to check — data flow, risks, and anything unclear."2+: Skip the criteria. Just ask: "Does this match what you had in mind?"
- Explain what an ADR is on the user's first feature. Check
.sdd/state.jsonfieldmilestones.adr_explained. Iffalse, explain: "An ADR (Architecture Decision Record) is a short document that records why we chose this approach. It's useful when someone asks 'why was it built this way?' six months from now." Then setmilestones.adr_explainedtotruein state.json. If alreadytrue, skip the explanation.
Step 1: Identify feature and validate state
Parse the feature name from $ARGUMENTS. If no argument is provided, use active_feature from state.json. If neither yields a feature name, list all features with their current states and ask the user which one to plan.
Read .sdd/state.json. Check the feature's current state:
- If in state
clarified: proceed normally. - If in state
specified: warn the user — "This feature hasn't been through clarification.
Running /sdd:clarify first is recommended to catch gaps and edge cases. Do you want to proceed with planning anyway, or run clarify first?" Proceed only with explicit confirmation.
- If in
drafting: "This feature is still in drafting state. Run/sdd:specify {feature-name}first." - If in
plannedor beyond: "This feature already has a plan. Re-planning will overwrite the
existing plan and ADR." Ask for explicit confirmation before continuing.
Step 2: Read the spec
Read specs/{feature-name}/spec.md. This is the full specification including any clarifications added by /sdd:clarify. Internalize:
- Functional requirements
- Non-functional requirements
- Acceptance criteria
- Out of scope items
- Clarifications
Step 3: Read the constitution
Read constitution.md. The technical plan must respect every principle defined here. Architecture decisions that conflict with the constitution are not valid options.
Step 3b: Read personal learnings
Read {your auto memory directory}/sdd-learnings.md if it exists. This file contains your personal retro insights — kept outside the repo so each team member has their own. Past insights — especially those tagged planning and implementation — should influence architectural decisions and risk assessment. For example, if a past learning says "API integrations are more complex than they appear", factor that into the risk analysis. Do NOT fail if the file doesn't exist.
Step 3c: Verify external API documentation
Scan the spec for references to external services or APIs. Look for:
- Section 9 (API Contracts) mentioning third-party endpoints
- Section 7 (Technical Design) referencing external services, SDKs, or integrations
- Section 2 (Context) mentioning external platforms or services
- Section 5 (Functional Requirements) describing interactions with external systems
For each external service detected, call the sdd_api_list MCP tool (with the service name if identifiable) to check if documentation is cached in .sdd/api-docs/.
Read .sdd/hooks.json and check if PrePlan hook is enabled.
If external services are detected and docs are missing:
If `PrePlan` hook is enabled (default): BLOCK the plan. Report:
Do NOT proceed with plan generation. Stop and wait for the user.
If `PrePlan` hook is disabled: WARN but continue:
If all detected services have cached docs:
For each cached service, call sdd_api_list to load the endpoint index. Use this verified information — not training data — when generating the Dependencies and Architecture sections of the plan. Reference the cached docs explicitly: "Based on verified API docs for {service} (cached {date})..."
If no external services are detected:
Skip this step silently.
Step 4: Generate the technical plan
Based on the spec and constitution, generate a technical plan with these sections:
Architecture
Describe how the feature fits into the existing codebase. Cover:
- Components or modules involved
- Data flow (where data originates, how it transforms, where it lands)
- Integration points with existing systems
- Patterns to follow (consistent with constitution)
Dependencies
List everything needed:
- External packages (with version constraints if relevant)
- Internal modules that will be used or extended
- APIs or services consumed
- Database tables or views affected
Files Affected
List every file that will be created or modified:
- Mark each as
[create]or[modify] - Group by logical area (e.g., components, API routes, utilities, tests)
Risks and Trade-offs
Identify what could go wrong and what compromises are being made:
- Technical risks (performance, compatibility, complexity)
- Scope risks (what might grow beyond the spec)
- Trade-offs (speed vs. thoroughness, simplicity vs. flexibility)
Step 5: Present alternatives (if applicable)
If there are genuinely different architectural approaches to implement this feature:
- Present a maximum of 2-3 options.
- For each option, provide:
- A short name (e.g., "Option A: Server-side rendering", "Option B: Client-side with API")
- Pros (bullet list)
- Cons (bullet list)
- Constitution compatibility note (any tensions with defined principles)
- Use AskUserQuestionTool to present the choice. Each option becomes a selectable choice: short name as label, a one-sentence trade-off summary as description, and the full pros/cons/constitution analysis as markdown preview. This lets the user compare options side by side before deciding. Wait for their answer before proceeding to Step 6.
When presenting options, express each option's pros and cons in functional/business terms alongside technical terms. The user must be able to choose based on product impact, not just technical merit.
If there is only one reasonable approach: state it clearly and explain why alternatives were not viable — be specific. For example: "Your constitution constrains us to [X], and the spec requires [Y], which together point to only one viable approach." This is a teaching moment — the user learns how constraints narrow the decision space. Move directly to Step 6 without asking the user to choose.
Step 6: Generate the ADR
An ADR (Architecture Decision Record) MUST be generated regardless of whether there were alternatives. Even if the approach is straightforward, document it.
Determine ADR number
Read the docs/adr/ directory listing. If the directory doesn't exist, create it. Determine the next ADR number:
- If no ADR files exist: use
001. - If ADR files exist (e.g.,
001-some-decision.md,002-another.md): use the next sequential number (e.g.,003).
Create the ADR file
Create docs/adr/NNN-{decision-title}.md where {decision-title} is a kebab-case summary of the decision. Use this exact format:
Step 7: Save the plan
Save the plan to specs/{feature-name}/plan.md with this exact structure:
Step 8: Update state.json
Read .sdd/state.json again (to avoid stale data). Update it:
- Validate the transition: check
allowed_transitionsin state.json to confirm that the feature's current state allows transitioning to"planned". If the transition is not listed, warn the user and do not proceed. - Set
features.{feature-name}.stateto"planned". - Append a new transition record:
- Keep
active_featureset to the feature name.
Write the updated state.json.
Step 9: Present the plan
Display the complete plan.md content and the ADR to the user for review.
After presenting the plan, provide a plain-language summary: "In short, here's what we're going to build and why: [2-3 sentences translating the architecture into business terms]. The main trade-off is [trade-off in plain language]. Does this feel right for what you described?"
After presenting them, stop and wait for the user's feedback.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/sdd-plan/SKILL.md
Popularity
- Repository stars
- 6
- 7-day trend score
- 10
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/rubenzarroca/sdd-plugin/sdd-plan)