npx claudepluginhub richfrem/agent-plugins-skills --plugin spec-kittyThis skill uses the workspace's default tool permissions.
assets/workflows/spec-kitty.specify.mdevals/evals.jsonevals/results.tsvrequirements.txtscripts/sync_configuration.pytemplates/spec-template.mdworkflows/spec-kitty.specify.mdSearches, 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.
Executes pre-written implementation plans: critically reviews, follows bite-sized steps exactly, runs verifications, tracks progress with checkpoints, uses git worktrees, stops on blockers.
<!-- 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):