plugins/spec-kitty-plugin/skills/spec-kitty-specify/SKILL.md
A standard Spec-Kitty workflow routine.
npx skillsauth add richfrem/agent-plugins-skills spec-kitty-specifyInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
Security scan pending...
This skill is queued for security scanning. Results will appear when the scan completes.
<!-- spec-kitty-command-version: 3.0.3 -->Source: This skill augments the baseline workflow located at
./workflows/spec-kitty.specify.md. It acts as an intelligent wrapper that is continuously improved with each execution.
Version: 0.11.0+
IMPORTANT: Specify works in the project root checkout. NO worktrees are created.
# Run from project root:
cd /path/to/project/root # Your project root checkout
# All planning artifacts are created in the project root and committed:
# - kitty-specs/###-feature/spec.md → Created in project root
# - Committed to target branch (from create-feature JSON: target_branch/base_branch)
# - NO worktrees created
Worktrees are created later during /spec-kitty.implement, not during planning.
In repos with multiple features, always pass --feature <slug> to every spec-kitty command.
$ARGUMENTS
You MUST consider the user input before proceeding (if not empty).
Before discovery, resolve branch intent through the Python helper, not by probing git directly:
spec-kitty agent feature branch-context --json
If the user already told you the intended landing branch, pass it explicitly:
spec-kitty agent feature branch-context --json --target-branch <intended-branch>
Parse the JSON and, in your next reply, explicitly tell the user:
current_branchplanning_base_branchmerge_target_branchbranch_matches_target is true or falsecreate-featureNever talk generically about main or "the default branch". Name the actual branch values from the helper JSON. Do not shell out to git for this prompt.
FR-###, NFR-###, C-###).Before discovery questions, load constitution context for this action:
spec-kitty constitution context --action specify --json
mode is bootstrap, treat JSON text as the initial governance context and consult referenced docs as needed.mode is compact, proceed with concise governance context.Before running any scripts or writing to disk you must conduct a structured discovery interview.
Scope proportionality (CRITICAL): FIRST, gauge the inherent complexity of the request:
User signals to reduce questioning: If the user says "just testing", "quick prototype", "skip to next phase", "stop asking questions" - recognize this as a signal to minimize discovery and proceed with reasonable defaults.
First response rule:
WAITING_FOR_DISCOVERY_INPUTIf the user provides no initial description (empty command), stay in Interactive Interview Mode: keep probing with one question at a time.
Conversational cadence: After each user reply, decide if you have ENOUGH context for this feature's complexity level. For trivial features, 1-2 questions is sufficient. Only continue asking if truly necessary for the scope.
Discovery requirements (scale to feature complexity):
#, Question, Why it matters, and Current insight. Do not render this table to the user.After completing discovery and confirming the Intent Summary, determine the appropriate mission for this feature.
software-dev: For building software features, APIs, CLI tools, applications
research: For investigations, literature reviews, technical analysis
Analyze the feature description to identify the primary goal:
Check for explicit mission requests in the user's description:
Confirm with user (unless explicit):
"Based on your description, this sounds like a [software-dev/research] project. I'll use the [mission name] mission. Does that work for you?"
Handle user response:
Handle --mission flag: If the user provides --mission <key> in their command, skip inference and use the specified mission directly.
Store the final mission selection in your notes and include it in the spec output. Do not pass a --mission flag to feature creation.
Planning happens in the project root checkout - NO worktree created!
kitty-specs/###-feature/spec.md directly in project rootWorktrees created later: Use spec-kitty implement WP## to create a workspace for each work package. Worktrees are created later during implement (e.g., .worktrees/###-feature-WP##).
kitty-specs/###-feature/spec.mdcreate-feature --json → target_branch)The text the user typed after /spec-kitty.specify in the triggering message is the initial feature description. Capture it verbatim, but treat it only as a starting point for discovery—not the final truth. Your job is to interrogate the request, surface gaps, and co-create a complete specification with the user.
Given that feature description, do this:
[NEEDS CLARIFICATION: …] to at most three critical decisions the user has postponed).Check discovery status:
WAITING_FOR_DISCOVERY_INPUT. Do not surface the table; keep it internal. Do not call the creation command yet.When discovery is complete and the intent summary, title, and mission are confirmed, run the feature creation command from repo root:
spec-kitty agent feature create-feature "<slug>" --json
Where <slug> is a kebab-case version of the friendly title (e.g., "Checkout Upsell Flow" → "checkout-upsell-flow").
The command returns JSON with:
result: "success" or error messagefeature: Feature number and slug (e.g., "014-checkout-upsell-flow")feature_dir: Absolute path to the feature directory inside the main repocurrent_branch: the branch you started fromtarget_branch / base_branch: deterministic branch contract for downstream commandsplanning_base_branch / merge_target_branch: explicit landing-branch aliasesbranch_strategy_summary: human-readable summary of the branch contractParse these values for use in subsequent steps. All file paths are absolute.
IMPORTANT: You must only ever run this command once. The JSON is provided in the terminal output - always refer to it to get the actual paths you're looking for. Immediately restate the branch contract to the user after parsing the JSON:
Stay in the main repository: No worktree is created during specify.
Read the files created by create-feature:
<feature_dir>/spec.md (already created, may be empty/template-filled)<feature_dir>/meta.json (already created with feature identity metadata)Do NOT try to read a template file. The spec structure is defined in this prompt (see sections below). The create-feature command scaffolds an initial spec.md — read it, then update it following the structure in this prompt.
Update <feature_dir>/meta.json only when needed:
create-feature unchanged (feature_number, slug, feature_slug, created_at, target_branch).target_branch aligned to the value from create-feature --json output. Never hardcode main.friendly_name matches the confirmed title.mission is correct.source_description.vcs exists ("git" default).Example meta.json schema (identity fields that must be present explicitly):
{
"feature_number": "042",
"slug": "my-feature",
"feature_slug": "042-my-feature",
"friendly_name": "My Feature",
"mission": "software-dev",
"target_branch": "main",
"vcs": "git",
"created_at": "2026-01-01T00:00:00+00:00"
}
Do not regenerate timestamps or directory paths via shell commands.
Generate the specification content by following this flow:
$ARGUMENTS)[NEEDS CLARIFICATION: …] when the user explicitly defers the decisionFR-###), Non-Functional (NFR-###), and Constraints (C-###)Update the existing <feature_dir>/spec.md using the template structure, replacing placeholders with concrete details derived from the feature description while preserving section order and headings.
Specification Quality Validation: After writing the initial spec, validate it against quality criteria:
a. Create Spec Quality Checklist: Generate a checklist file at feature_dir/checklists/requirements.md using the checklist template structure with these validation items:
# Specification Quality Checklist: [FEATURE NAME]
**Purpose**: Validate specification completeness and quality before proceeding to planning
**Created**: [DATE]
**Feature**: [Link to spec.md]
## Content Quality
- [ ] No implementation details (languages, frameworks, APIs)
- [ ] Focused on user value and business needs
- [ ] Written for non-technical stakeholders
- [ ] All mandatory sections completed
## Requirement Completeness
- [ ] No [NEEDS CLARIFICATION] markers remain
- [ ] Requirements are testable and unambiguous
- [ ] Requirement types are separated (Functional / Non-Functional / Constraints)
- [ ] IDs are unique across FR-###, NFR-###, and C-### entries
- [ ] All requirement rows include a non-empty Status value
- [ ] Non-functional requirements include measurable thresholds
- [ ] Success criteria are measurable
- [ ] Success criteria are technology-agnostic (no implementation details)
- [ ] All acceptance scenarios are defined
- [ ] Edge cases are identified
- [ ] Scope is clearly bounded
- [ ] Dependencies and assumptions identified
## Feature Readiness
- [ ] All functional requirements have clear acceptance criteria
- [ ] User scenarios cover primary flows
- [ ] Feature meets measurable outcomes defined in Success Criteria
- [ ] No implementation details leak into specification
## Notes
- Items marked incomplete require spec updates before `/spec-kitty.plan`
b. Run Validation Check: Review the spec against each checklist item:
c. Handle Validation Results:
If all items pass: Mark checklist complete and proceed to step 6
If items fail (excluding [NEEDS CLARIFICATION]):
If [NEEDS CLARIFICATION] markers remain:
Extract all [NEEDS CLARIFICATION: ...] markers from the spec
Re-confirm with the user whether each outstanding decision truly needs to stay unresolved. Do not assume away critical gaps.
For each clarification the user has explicitly deferred, present options using plain text—no tables:
Question [N]: [Topic]
Context: [Quote relevant spec section]
Need: [Specific question from NEEDS CLARIFICATION marker]
Options: (A) [First answer — implications] · (B) [Second answer — implications] · (C) [Third answer — implications] · (D) Custom (describe your own answer)
Reply with a letter or a custom answer.
Number questions sequentially (Q1, Q2, Q3 - max 3 total)
Present all questions together before waiting for responses
Wait for user to respond with their choices for all questions (e.g., "Q1: A, Q2: Custom - [details], Q3: B")
Update the spec by replacing each [NEEDS CLARIFICATION] marker with the user's selected or provided answer
Re-run validation after all clarifications are resolved
d. Update Checklist: After each validation iteration, update the checklist file with current pass/fail status
Report completion with feature directory, spec file path, checklist results, and readiness for the next phase (/spec-kitty.plan).
NOTE: The script creates and checks out the new branch and initializes the spec file before writing.
When creating this spec from a user prompt:
Examples of reasonable defaults (don't ask about these):
Success criteria must be:
Good examples:
Bad examples (implementation-focused):
data-ai
Task management agent. Auto-invoked for task creation, status tracking, and kanban board operations using Markdown files across lane directories. V2 enforces Kanban Sovereignty constraints preventing manual task file edits.
development
Create, audit, repair, and document cross-platform symlinks that work correctly on both Windows and macOS/Linux. Use this skill whenever the user mentions symlinks, symbolic links, junction points, .gitconfig symlinks, broken links after git pull, cross-platform path issues, or needs help with ln -s equivalents on Windows. Also trigger when the user reports that files are missing or wrong after switching between Mac and Windows machines using Git. This skill solves the common problem where symlinks committed on macOS show up as plain text files on Windows (and vice versa) because of Git's core.symlinks setting or missing Developer Mode / elevated permissions. **IMPORTANT FOR WINDOWS USERS:** Developer Mode must be enabled before creating symlinks. Without it, Git will check out symlinks as plain-text files or hardlinks, breaking cross-platform workflows.
development
Interactively prepares a targeted Red Team Review package. It conducts a brief discovery interview to determine the threat model, generates a strict security auditor prompt, compiles a manifest of relevant project files, and bundles them into a single Markdown artifact or ZIP archive ready for an external LLM (like Grok, ChatGPT, or Gemini) or a human reviewer.
tools
Reduces AI agent context bloat across three dimensions: (1) duplicate skill deduplication — clears stale agent directory copies since the IDE already reads from plugins/ directly; (2) instruction file optimization — rewrites CLAUDE.md, GEMINI.md, or .github/copilot-instructions.md to under ~80 lines, keeping only rules that directly change agent behaviour; (3) session token efficiency — guidance on cheap subagent delegation, context compounding across turns, and session hygiene. Trigger with "optimize context", "reduce context bloat", "deduplicate skills", "trim CLAUDE.md", "trim GEMINI.md", "fix my context usage", "why are my skills loading twice", "how do I reduce token usage", or "clean up agent directories".