# Installation Guide ## Prerequisites - **Linux/macOS** (or Windows; PowerShell scripts now supported without WSL) - AI coding agent: [Claude Code](https://www.anthropic.com/claude-code), [GitHub Copilot](https://code.visualstudio.com/), [Codebuddy CLI](https://www.codebuddy.ai/cli), [Gemini CLI](https://github.com/google-gemini/gemini-cli), or [Pi Coding Agent](https://pi.dev) - [uv](https://docs.astral.sh/uv/) for package management - [Python 3.11+](https://www.python.org/downloads/) - [Git](https://git-scm.com/downloads) ## Installation ### Initialize a New Project The easiest way to get started is to initialize a new project. Pin a specific release tag for stability (check [Releases](https://github.com/github/spec-kit/releases) for the latest): ```bash # Install from a specific stable release (recommended — replace vX.Y.Z with the latest tag) uvx --from git+https://github.com/github/spec-kit.git@vX.Y.Z specify init # Or install latest from main (may include unreleased changes) uvx --from git+https://github.com/github/spec-kit.git specify init ``` Or initialize in the current directory: ```bash uvx --from git+https://github.com/github/spec-kit.git@vX.Y.Z specify init . # or use the --here flag uvx --from git+https://github.com/github/spec-kit.git@vX.Y.Z specify init --here ``` ### Specify AI Agent You can proactively specify your AI agent during initialization: ```bash uvx --from git+https://github.com/github/spec-kit.git@vX.Y.Z specify init --ai claude uvx --from git+https://github.com/github/spec-kit.git@vX.Y.Z specify init --ai gemini uvx --from git+https://github.com/github/spec-kit.git@vX.Y.Z specify init --ai copilot uvx --from git+https://github.com/github/spec-kit.git@vX.Y.Z specify init --ai codebuddy uvx --from git+https://github.com/github/spec-kit.git@vX.Y.Z specify init --ai pi ``` ### Specify Script Type (Shell vs PowerShell) All automation scripts now have both Bash (`.sh`) and PowerShell (`.ps1`) variants. Auto behavior: - Windows default: `ps` - Other OS default: `sh` - Interactive mode: you'll be prompted unless you pass `--script` Force a specific script type: ```bash uvx --from git+https://github.com/github/spec-kit.git@vX.Y.Z specify init --script sh uvx --from git+https://github.com/github/spec-kit.git@vX.Y.Z specify init --script ps ``` ### Ignore Agent Tools Check If you prefer to get the templates without checking for the right tools: ```bash uvx --from git+https://github.com/github/spec-kit.git@vX.Y.Z specify init --ai claude --ignore-agent-tools ``` ## Verification After initialization, you should see the following commands available in your AI agent: - `/speckit.specify` - Create specifications - `/speckit.plan` - Generate implementation plans - `/speckit.tasks` - Break down into actionable tasks The `.specify/scripts` directory will contain both `.sh` and `.ps1` scripts. ## Troubleshooting ### Enterprise / Air-Gapped Installation If your environment blocks access to PyPI (you see 403 errors when running `uv tool install` or `pip install`), you can create a portable wheel bundle on a connected machine and transfer it to the air-gapped target. **Step 1: Build the wheel on a connected machine (same OS and Python version as the target)** ```bash # Clone the repository git clone https://github.com/github/spec-kit.git cd spec-kit # Build the wheel pip install build python -m build --wheel --outdir dist/ # Download the wheel and all its runtime dependencies pip download -d dist/ dist/specify_cli-*.whl ``` > **Important:** `pip download` resolves platform-specific wheels (e.g., PyYAML includes native extensions). You must run this step on a machine with the **same OS and Python version** as the air-gapped target. If you need to support multiple platforms, repeat this step on each target OS (Linux, macOS, Windows) and Python version. **Step 2: Transfer the `dist/` directory to the air-gapped machine** Copy the entire `dist/` directory (which contains the `specify-cli` wheel and all dependency wheels) to the target machine via USB, network share, or other approved transfer method. **Step 3: Install on the air-gapped machine** ```bash pip install --no-index --find-links=./dist specify-cli ``` **Step 4: Initialize a project (no network required)** ```bash # Initialize a project — no GitHub access needed specify init my-project --ai claude --offline ``` The `--offline` flag tells the CLI to use the templates, commands, and scripts bundled inside the wheel instead of downloading from GitHub. > **Deprecation notice:** Starting with v0.6.0, `specify init` will use bundled assets by default and the `--offline` flag will be removed. The GitHub download path will be retired because bundled assets eliminate the need for network access, avoid proxy/firewall issues, and guarantee that templates always match the installed CLI version. No action will be needed — `specify init` will simply work without network access out of the box. > **Note:** Python 3.11+ is required. > **Windows note:** Offline scaffolding requires PowerShell 7+ (`pwsh`), not Windows PowerShell 5.x (`powershell.exe`). Install from https://aka.ms/powershell. ### Git Credential Manager on Linux If you're having issues with Git authentication on Linux, you can install Git Credential Manager: ```bash #!/usr/bin/env bash set -e echo "Downloading Git Credential Manager v2.6.1..." wget https://github.com/git-ecosystem/git-credential-manager/releases/download/v2.6.1/gcm-linux_amd64.2.6.1.deb echo "Installing Git Credential Manager..." sudo dpkg -i gcm-linux_amd64.2.6.1.deb echo "Configuring Git to use GCM..." git config --global credential.helper manager echo "Cleaning up..." rm gcm-linux_amd64.2.6.1.deb ```