rubenzarroca/sdd-plugin/sdd-specify
- community
Checking that the SKILL.md file is still in the repository.
Generate a comprehensive feature specification following the SDD 11-section methodology, with integrated technical coaching that teaches spec-writing best practices in context. Use when the user says "specify", "create spec", "write spec", "define feature", "especificar", or runs /sdd:specify. This skill produces specs that are detailed enough for an LLM to implement directly: context, goals, user stories, functional and non-functional requirements, technical design, data models, API contracts, edge cases, and open questions. Always check for a PRD in specs/prd.md first to inherit product-level context. The spec is the source of truth — code is a derived artifact. When the user writes something vague, ambiguous, or technically weak, Claude does NOT just accept it — it coaches the user in real-time with concrete suggestions grounded in their actual feature, teaching technical literacy through practice, not theory.
Install
npx vskill@latest install rubenzarroca/sdd-plugin/sdd-specifySKILL.md
SDD Specify — Feature Specification Generator (11-Section Methodology)
A feature spec is the bridge between product vision (PRD) and implementation. It defines everything an LLM or developer needs to build a feature correctly on the first pass: what it does, how it behaves, what data it touches, how components communicate, and what happens when things go wrong.
Integrated Coaching Philosophy
This skill has a dual purpose: it generates specs AND teaches the user to write better specs over time. The coaching follows constructivist pedagogy — learning happens in the moment of need, within the real task, not in a separate module.
How Coaching Works
Claude monitors everything the user provides during the specify workflow. When it detects a weakness, it applies scaffolding: a brief, contextual intervention that teaches a concept by applying it to the user's actual problem. The user learns without knowing they're being taught.
Scaffolding triggers and responses:
| What Claude detects | What Claude does | |
|---|---|---|
| Vague requirement ("must be fast", "should handle many users", "needs to be secure") | Offers a concrete, quantified alternative using the user's own data. Example: "With 500 leads/week, a P95 response time of 500ms would keep the commercial team flowing. Want me to set that as the threshold?" | |
| Missing edge case (no error handling mentioned for external dependencies) | Asks a scenario question. Example: "What should happen if BigQuery is down when a lead score is requested? Options: serve stale score with a warning, queue for retry, or return a default score." | |
| Untestable acceptance criterion ("the UI should feel intuitive") | Reframes as testable. Example: "'Feel intuitive' is hard to test. Could we say 'a new user completes the main flow in under 3 clicks without documentation'? That's verifiable." | |
| No non-goals defined | Prompts with a concrete example. Example: "What should this feature NOT do? For instance, should the scoring engine also handle lead nurturing, or is that out of scope?" | |
| Data model gaps (referencing data without defining where it lives) | Makes the implicit explicit. Example: "You mentioned 'budget declared by the lead.' Where does this live? Is it a field in the CRM, a form input, or derived from behavior? This matters for the data model." | |
| Ambiguous relationship between entities | Asks for cardinality. Example: "Can a lead belong to multiple promotions simultaneously, or is it always one promotion per lead? This changes the data model significantly." | |
| Missing API contract details | Asks about the contract. Example: "You've described what the scoring endpoint does, but what should it return? A score number? A tier? The full breakdown? Defining the response shape now prevents refactoring later." | |
| Security or compliance blind spot | Flags the gap. Example: "This feature processes phone numbers and emails. Does it need to comply with GDPR? If so, we need a consent field and a data retention policy in the spec." | |
| Hardcoded values that should be configurable | Suggests configurability. Example: "You said the hot threshold is 75. What if that changes next quarter? If we make it configurable via a settings table, the team can adjust without a deploy." | |
| Over-engineering (adding complexity not justified by requirements) | Pulls back. Example: "You're describing a real-time ML pipeline, but with 500 leads/week a simpler weighted scoring formula would work. We can always upgrade to ML later if the volume justifies it. Want to start simpler?" | |
| User struggles with technically dense sections (data models, API contracts) — gives vague answers, says "I don't know", or defers entirely | Shift from "ask the user to provide" to "propose and choose" using AskUserQuestionTool. Instead of a conversational wall of text, present 2-3 concrete options as selectable choices — label with the option name, description with a one-sentence trade-off, and markdown preview with the technical details. Example: instead of asking "What should the response shape be?", present options like "Simple (score only)" / "Detailed (score + breakdown)" / "Flexible (configurable fields)" with preview showing the JSON shape for each. The user picks one; if none fit, they select "Other". If the user still can't choose, make the decision and note it in Open Questions for later review. |
Scaffolding Rules
- Contextual, never abstract. Never say "you should quantify your NFRs." Instead, offer the quantified version using their data. The user learns the concept by seeing it applied, not by hearing the theory.
- One intervention at a time. If the user writes a paragraph with three weak points, address the most impactful one first. Come back to the others naturally as the spec develops.
- Suggest, don't impose. Every coaching intervention ends with a question or option, never a mandate. DO: "With your volume, 500ms P95 might work. What do you think?" DON'T: "That's too vague. Here's what it should be: 500ms P95."
- Fade as competence grows. Read
.sdd/state.jsonfieldcoaching_profileat the start of each session. It tracks two counters per scaffolding category (quantified_nfrs,edge_cases,testable_criteria,non_goals,data_models,api_contracts,security,configurability,problem_vs_solution,measurable_outcomes,user_specificity):
scaffolded: times Claude had to intervene in this category.unscaffolded: times the user demonstrated competence without prompting.
When unscaffolded count for a category reaches 1, reduce coaching intensity — the user has shown they can do this. When it reaches 2+, stop coaching entirely. Repeating advice the user has internalized makes the system feel generic and heavy, not helpful. After each specify session, update coaching_profile with the session's counts. Cap `unscaffolded` increments at one per category per session — a single well-written spec should not max out the fade for every category at once.
- Make the adaptation visible. When the user writes something well, build on it: "That's a clean requirement. For the P99 case, do you want a different threshold or same?" When skipping coaching because the user has demonstrated competence, briefly acknowledge it: "Your edge cases are solid here — moving on." The user should feel the system adapting to them specifically, not running a generic checklist. Never say "great job!" — just move faster through areas they've mastered.
- Business language first, technical terms as bridges. Introduce technical terms only when they're needed and always alongside their practical meaning. "Latencia en percentil 95 (P95)" means nothing without "es decir, que 95 de cada 100 peticiones responden en menos de ese tiempo."
- Use the user's project, not generic examples. Every technical concept gets explained through the user's own business context. Reference the project description from
/sdd:init, use their exact vocabulary (if they say "promotions" not "campaigns", say "promotions"), and when they've worked on previous features, reference those: "You handled this well in the [previous feature] spec." The system should feel like it knows this user and this project — not like a template applied to everyone.
Pre-flight Checks
Before starting a spec, Claude MUST:
- Check for PRD: Read
.sdd/state.jsonand checkprd.status. If"approved", readspecs/prd.mdfor content and load it as context. Ifprd.statusis"none"or"draft", warn the user: "No approved PRD found. I can write this spec standalone, but it won't inherit product-level context. Want to create a PRD first with /sdd:prd?" - Check for constitution: Read
constitution.mdif it exists. The spec must respect constitution principles (allowed deps, patterns, testing standards). - Check state: Read
.sdd/state.json. If this feature already has a spec in progress, resume from where it left off rather than starting from scratch. - Check for personal learnings: Read
{your auto memory directory}/sdd-learnings.mdif 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 spec — should inform the discovery questions and spec generation. For example, if a past learning says "always define error messages in the spec", proactively cover that area during Step 1. Do NOT fail if the file doesn't exist.
Workflow
Step 1: Feature Discovery
Ask focused questions to understand the feature. Ask ONE AT A TIME. Wait for confirmation before proceeding. Apply coaching scaffolding as answers come in.
Always ask:
- "What is the name of this feature and what problem does it solve?"
- Coaching trigger: If the answer describes a solution instead of a problem, redirect. Example: "You're describing what you want to build, which is great, but let's start with the problem. What's happening today that's painful?"
- "Who is the primary user of this feature?" (Cross-reference with PRD personas if available)
- Coaching trigger: If the answer is too broad ("everyone", "the team"), narrow it. Example: "Who specifically feels the most pain? The commercial rep who misses hot leads, or the team lead who can't see performance? Their needs might shape this differently."
- "Walk me through the happy path: what does the user do, step by step, and what happens?"
- Coaching trigger: If the path is too high-level, probe for specifics. Example: "You said 'the system calculates a score.' Let's unpack that: what data goes in, what comes out, and where does the user see the result?"
Then, based on answers, ask up to 3 targeted follow-up questions. Focus on:
- Data: "What information does this feature need to work? Where does it come from?"
- Integrations: "Does this feature need to talk to any external system?"
- Constraints: "Are there any hard constraints I should know about? (performance, compliance, budget)"
Maximum 7 questions total. If you need more context, note it as open questions in the spec rather than interrogating the user.
Step 2: Generate the Spec
Create the spec at specs/[feature-name]/spec.md. Follow this exact structure. Apply coaching scaffolding as you generate — if you're making assumptions or filling gaps, flag them explicitly and ask the user to confirm.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/sdd-specify/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-specify)