speckit-cli-setup

$npx mdskill add github/spec-kit-copilot/speckit-cli-setup

Detect and install the Spec Kit specify CLI that other speckit skills depend on.

  • Solves missing or outdated specify CLI causing command not found errors.
  • Depends on PyPI package specify-cli, installed via uv or pipx.
  • Checks specify --version to decide if installation or upgrade is needed.
  • Installs latest CLI when missing, otherwise hands off to speckit-self for upgrades.

SKILL.md

.github/skills/speckit-cli-setupView on GitHub ↗
---
name: speckit-cli-setup
description: 'Detect and install the Spec Kit `specify` CLI that every other speckit skill depends on. USE FOR: checking whether `specify` is installed/on PATH, installing it when missing, fixing "command not found: specify", confirming the CLI is new enough (>= 0.11). DO NOT USE FOR: upgrading an already-installed CLI to a newer release (use speckit-self) or verifying project tools (use speckit-check).'
argument-hint: 'none'
---

# Spec Kit — CLI setup

The Spec Kit plugin drives the **`specify`** command-line tool. Every other speckit
skill assumes `specify` is installed and on `PATH`. This skill detects it and
installs it when it is missing.

## Detect first

Always check availability before doing anything else:

```bash
specify --version
```

- **Prints a version (e.g. `specify 0.15.0`)** → the CLI is installed. If a skill needs
  `bundle` or `workflow step`, ensure the version is **>= 0.11**; if it is older, hand
  off to the **speckit-self** skill to upgrade.
- **`command not found` / non-zero exit** → not installed. Install it (below).

## Install

Spec Kit's `specify` CLI is published on PyPI as
**[`specify-cli`](https://pypi.org/project/specify-cli/)**. Install the **latest**
release — this plugin is not pinned to a specific `specify` version.
**[uv](https://docs.astral.sh/uv/)** is the recommended installer;
**[pipx](https://pipx.pypa.io/)** is an alternative:

```bash
# Recommended: uv (persistent install, latest from PyPI)
uv tool install specify-cli

# Alternative: pipx (persistent install, latest from PyPI)
pipx install specify-cli

# One-off / ephemeral (no install) — handy to bootstrap a project.
# Pass --script (py keeps this cross-platform) so the PTY-backed agent shell
# doesn't hit the interactive "Choose script type" chooser and hang.
uvx --from specify-cli specify init . --integration copilot --integration-options="--skills" --script py
```

If neither `uv` nor `pipx` is available, tell the user to install `uv` first
(`curl -LsSf https://astral.sh/uv/install.sh | sh`, or see <https://docs.astral.sh/uv/>),
then re-run the install. Do not silently install system Python packages.

## Verify

```bash
specify --version
specify check
```

## Notes

- This skill is the **prerequisite** for the rest of the plugin. If any speckit skill
  finds that `specify` is not available, it should run this skill's detect/install
  steps first, then retry.
- For an **already-installed** CLI that just needs a newer version, prefer the
  **speckit-self** skill (`specify self upgrade`) over reinstalling. To refresh a
  `uv`/`pipx` install to the latest PyPI release, use `uv tool upgrade specify-cli`
  or `pipx upgrade specify-cli`.
- Installing from PyPI always pulls the latest published `specify-cli`. Only pin a
  specific version (e.g. `uv tool install "specify-cli==0.15.0"`) if you have a
  concrete reason to hold back.

More from github/spec-kit-copilot

SkillDescription
speckit-artifactInspect the effective Spec Kit artifact inventory and composition stacks via `specify artifact`. USE FOR: listing commands/templates/scripts/hooks, explaining which preset or extension layer supplies an artifact, inspecting resolution precedence and hidden layers, checking hook registration, or resolving a stack lookupId to its validated contribution. DO NOT USE FOR: installing or changing presets/extensions (use speckit-preset or speckit-extension), resolving only a preset-managed filename (use speckit-preset), or running an artifact.
speckit-bundleDiscover, install, and author Spec Kit bundles via `specify bundle`. USE FOR: searching/showing/listing bundles, installing/updating/removing a bundle (a curated set of extensions/presets/integrations/workflows), validating a bundle manifest, building a distributable bundle artifact, initializing a project and installing a bundle, managing bundle catalog sources. DO NOT USE FOR: individual extensions/presets/integrations/workflows (use their respective skills).
speckit-checkCheck the local environment for Spec Kit by running `specify check` (and `specify version`). USE FOR: verifying required tools are installed, diagnosing a broken spec-kit setup, reporting CLI version/feature capabilities. DO NOT USE FOR: installing or upgrading the CLI itself (use the speckit-self skill).
speckit-extensionManage Spec Kit extensions via `specify extension`. USE FOR: listing installed extensions as text or JSON, installing/removing/updating extensions, searching the extension catalog, showing extension info, enabling/disabling extensions, setting resolution priority, or managing extension catalogs. DO NOT USE FOR: artifact composition stacks (use speckit-artifact), presets (use speckit-preset), bundles (use speckit-bundle), or workflows (use speckit-workflow).
speckit-initScaffold a Spec Kit (spec-driven development) project for GitHub Copilot by running `specify init --integration copilot --integration-options="--skills"`. USE FOR: starting a new spec-kit project, bootstrapping spec-driven development in an existing repo, installing spec-kit templates/scripts/commands for Copilot. DO NOT USE FOR: managing extensions/presets/bundles of an already-initialized project (use the speckit-extension / speckit-preset / speckit-bundle skills instead).
speckit-presetManage Spec Kit presets via `specify preset`. USE FOR: listing installed presets as text or JSON, installing/removing presets, searching the preset catalog, showing preset info, resolving which template a preset name maps to, enabling/disabling presets, setting resolution priority, or managing preset catalogs. DO NOT USE FOR: full artifact composition stacks (use speckit-artifact), extensions (use speckit-extension), bundles (use speckit-bundle), or workflows (use speckit-workflow).
speckit-selfCheck for and apply Spec Kit CLI updates via `specify self`. USE FOR: checking whether a newer specify-cli release is available, previewing an upgrade with --dry-run, upgrading the CLI in place (optionally to a pinned tag). DO NOT USE FOR: checking project tools/integrations (use speckit-check) or managing extensions/presets/integrations/workflows.
speckit-workflowManage and run Spec Kit automation workflows via `specify workflow`. USE FOR: running a workflow by ID or local YAML, resuming a paused/failed run, checking run status, listing/installing/removing workflows, searching the workflow catalog, showing a workflow step graph. DO NOT USE FOR: extensions (use speckit-extension), presets (use speckit-preset), or bundles (use speckit-bundle).
speckit-workflow-stepManage Spec Kit workflow step types via `specify workflow step`. USE FOR: listing built-in and custom workflow step types, installing/removing a custom step type from a catalog, searching/showing step-type info, managing step-type catalog sources. DO NOT USE FOR: running or installing whole workflows (use speckit-workflow), or bundles (use speckit-bundle).