
Spec Kit Skill
Detect whether GitHub spec-kit’s specify CLI is installed and steer you through the spec-driven workflow for a greenfield or in-progress repo.
Overview
Spec-Kit Skill is an agent skill most often used in Validate (also Build pm) that detects specify CLI installation and guides the spec-kit workflow from project state.
Install
npx skills add https://github.com/feiskyer/claude-code-settings --skill spec-kit-skillWhat is this skill?
- Three CLI detection paths: PATH specify, ~/.local/bin/specify, and uv tool list for specify-cli
- Combined detect_cli bash function returns installed vs not_installed for agent branching
- Installation guidance via uv tool install specify-cli from github/spec-kit git URL
- Detection logic designed to guide users through the full spec-kit workflow by project state
- 3 CLI detection methods (PATH, ~/.local/bin, uv tool list)
Adoption & trust: 566 installs on skills.sh; 1.5k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You want spec-driven planning but do not know if specify is on PATH, in ~/.local/bin, or installed as a uv tool—and the agent stalls without clear next steps.
Who is it for?
Solo builders standardizing on GitHub spec-kit who need the agent to branch on real CLI detection instead of assuming tools exist.
Skip if: Repos that do not use spec-kit or teams that manage specify only via opaque global images with no uv or local bin layout.
When should I use this skill?
When adopting or continuing GitHub spec-kit and the agent must detect specify CLI installation before workflow steps.
What do I get? / Deliverables
The agent knows whether spec-kit CLI is ready and can direct you through persistent uv installation before continuing spec workflow commands.
- CLI installed/not_installed determination
- Copy-paste uv tool install guidance when missing
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Spec-kit begins when you lock intent and structure before heavy implementation, which maps to validating scope and specifications. Scope is where CLI presence, spec artifacts, and workflow state decide whether you clarify requirements or move to build tasks.
Where it fits
Start a greenfield app by confirming specify exists before drafting constitution and feature specs.
Resume a half-built spec-kit tree and let detection infer which workflow step comes next.
Open an existing repo and verify CLI install before the agent chains plan tasks from spec artifacts.
How it compares
Workflow checker for spec-kit setup, not a replacement for running specify plan or implement commands yourself.
Common Questions / FAQ
Who is spec-kit-skill for?
Developers using feiskyer claude-code-settings who adopt GitHub spec-kit and want automated CLI and project-state detection in the agent.
When should I use spec-kit-skill?
In Validate when scoping a new product with specs, and in Build pm when resuming a spec-kit repo—the agent should run detection before invoking specify workflows.
Is spec-kit-skill safe to install?
Detection uses read-only shell checks; install steps pull specify-cli from a public git URL—review the Security Audits panel on this page before running uv tool install.
SKILL.md
READMESKILL.md - Spec Kit Skill
# Spec-Kit Detection Logic Comprehensive detection algorithms for determining project state and guiding users through the spec-kit workflow. ## 1. CLI Installation Detection Check if the `specify` CLI is installed on the system. ### Method 1: Command Check ```bash if command -v specify &> /dev/null; then echo "CLI installed via PATH" specify --version exit 0 fi ``` ### Method 2: Direct Path Check ```bash if [ -x "$HOME/.local/bin/specify" ]; then echo "CLI installed in ~/.local/bin" "$HOME/.local/bin/specify" --version exit 0 fi ``` ### Method 3: UV Tool Check ```bash if command -v uv &> /dev/null; then if uv tool list | grep -q "specify-cli"; then echo "CLI installed via uv tool" uv tool run specify --version exit 0 fi fi ``` ### Combined Detection Function ```bash detect_cli() { # Check command if command -v specify &> /dev/null; then echo "installed" return 0 fi # Check local bin if [ -x "$HOME/.local/bin/specify" ]; then echo "installed" return 0 fi # Check uv tool if command -v uv &> /dev/null && uv tool list 2>/dev/null | grep -q "specify-cli"; then echo "installed" return 0 fi echo "not_installed" return 1 } ``` ### Installation Guidance If CLI not detected, guide user: ```markdown The spec-kit CLI is not installed. To install: **Persistent installation (recommended):** ```bash uv tool install specify-cli --from git+https://github.com/github/spec-kit.git ``` **One-time usage:** ```bash uvx --from git+https://github.com/github/spec-kit.git specify init . ``` **Requirements:** - Python 3.11+ - Git - uv package manager (install from https://docs.astral.sh/uv/) ``` ## 2. Project Initialization Detection Check if current project is initialized with spec-kit. ### Primary Indicators ```bash check_initialization() { # Must have .specify directory if [ ! -d ".specify" ]; then echo "not_initialized" return 1 fi # Must have constitution if [ ! -f ".specify/memory/constitution.md" ]; then echo "partially_initialized" return 2 fi # Must have scripts if [ ! -d ".specify/scripts/bash" ]; then echo "partially_initialized" return 2 fi # Must have templates if [ ! -d ".specify/templates" ]; then echo "partially_initialized" return 2 fi echo "initialized" return 0 } ``` ### Initialization Guidance If not initialized: ```bash # Initialize in current directory specify init . --ai claude # Initialize new project specify init <project-name> --ai claude # Options: # --force: Overwrite non-empty directories # --no-git: Skip Git initialization # --script ps: Generate PowerShell scripts (Windows) ``` ## 3. Feature Detection Identify existing features and latest feature. ### List All Features ```bash list_features() { if [ ! -d ".specify/specs" ]; then echo "No features found" return 1 fi # List numbered feature directories ls -d .specify/specs/[0-9]* 2>/dev/null | sort -V } ``` ### Get Latest Feature ```bash get_latest_feature() { LATEST=$(ls -d .specify/specs/[0-9]* 2>/dev/null | sort -V | tail -1) if [ -z "$LATEST" ]; then echo "No features found" return 1 fi echo "$LATEST" return 0 } ``` ### Extract Feature Name ```bash get_feature_name() { FEATURE_DIR="$1" # Extract from directory name (e.g., 001-feature-name -> feature-name) basename "$FEATURE_DIR" | sed 's/^[0-9]\{3\}-//' } ``` ### Extract Feature Number ```bash get_feature_number() { FEATURE_DIR="$1" # Extract number (e.g., 001-feature-name -> 001) basename "$FEATURE_DIR" | grep -o '^[0-9]\{3\}' } ``` ## 4. Phase Detection Determine current phase of development for a feature. ### Comprehensive Phase Detection ```bash detect_phase() { FEATURE_DIR="$1" # Phase 1: Constitution if [ ! -f ".specify/memory/constitution.md" ]; then echo "constitution" return 0 fi # Phase 2: Specify if [ ! -d "$FEATURE_DIR" ] || [ ! -f "$FEATURE_DIR/spec.md" ]; the