Interview users to refine rough ideas into comprehensive, implementation-ready specifications. Use when the user wants to write a spec, refine requirements, flesh out a feature idea, or asks to be interviewed about a project. Triggers: help me spec, interview me, refine this spec, flesh out, requirements gathering, write a spec for, spec out, write a spec, create a spec, spec this out.
Install with Tessl CLI
npx tessl i github:ddehart/claude-code-plugins --skill spec-writingOverall
score
18%
Does it follow best practices?
If you maintain this skill, you can automatically optimize it using the tessl CLI to improve its score:
npx tessl skill review --optimize ./path/to/skillValidation for skill structure
Interview users to transform rough ideas into comprehensive, implementation-ready specifications through collaborative questioning.
This skill conducts structured interviews using AskUserQuestion to surface requirements the user hasn't explicitly considered. The goal is producing specs detailed enough to implement in a fresh session.
Key principle: Ask non-obvious questions that probe assumptions, surface edge cases, and force tradeoffs.
Activation: This skill activates in two ways:
/spec-writing [prompt or @file]Accept spec input via:
@path/to/spec.mdIf pointed at an existing spec with content, enter iteration mode (see below).
Before interviewing, gather context to ask informed questions:
Always read:
Exploration depth depends on spec detail:
Use Glob and Grep to find relevant code. Read files that will inform your questions.
Use AskUserQuestion to interview the user. Continue until comprehensive coverage.
Flow: Start with goals ("why") before diving into implementation ("how").
Pacing: Adaptive
No hard limit - continue interviewing until coverage is complete, even if 50+ questions.
User can exit early - if they say "that's enough" or "let's wrap up", proceed to writing with what you have.
After the interview, write the spec document:
After writing, ask if user wants:
This is opt-in - don't auto-generate.
Good questions should:
Avoid obvious questions like "what color should it be?" - dig deeper.
Goals & Context:
Technical Approach:
Edge Cases:
Tradeoffs:
Non-Functional Requirements (when relevant):
Don't force NFR questions when they don't apply.
Always push toward concrete implementation details, even when the initial spec is vague. Help the user think through the technical specifics.
When the user doesn't know the answer:
Example using AskUserQuestion:
Question: "How should session state be persisted?"
Options:
- "Database (Recommended)" - Most durable, enables analytics
- "Redis" - Fast but requires infrastructure
- "Local storage" - Simplest but client-side onlyThe skill decides when coverage is sufficient. Track internally:
Don't expose a checklist to the user - just continue until thorough.
If answers reveal the spec is actually multiple features:
When pointed at an existing spec with content:
Structure emerges from interview content. Common sections:
For specs spanning multiple concerns (UI, API, database):
Always include a dedicated section for:
New feature from scratch:
User: Write a spec for real-time notifications
Skill: [explores codebase, then interviews about notification types,
delivery mechanisms, user preferences, etc.]Refine existing spec:
User: Help me flesh out @docs/specs/auth-feature.md
Skill: [reads spec, identifies gaps, interviews about those gaps]Inline prompt:
User: I want to add a dark mode toggle - can you help me spec it out?
Skill: [interviews about scope, persistence, system integration, etc.]No input provided:
File not found:
User is unresponsive:
Scope keeps expanding:
AskUserQuestion is not available in forked/subagent contextscontext: fork - interview requires interactive user engagementIf you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.