You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: add PyPI as second supported install route (#3425) (#3516)
* docs: add PyPI as second supported install route (#3425)
The specify-cli package is now officially published to PyPI via the
publish-pypi.yml trusted-publishing workflow. Document PyPI as a
supported install route alongside the GitHub source install:
- Revise the outdated "not affiliated" warning in installation.md to
reflect that specify-cli on PyPI is an official, maintained channel.
- Add an "Install from PyPI" section and list PyPI under alternative
package managers.
- Add a dedicated docs/install/pypi.md guide (install, pin version,
verify, upgrade, uninstall).
- Add the PyPI guide to the docs TOC.
- Mention the PyPI route in the README quick start.
Assisted-by: GitHub Copilot (model: Claude Opus 4.8, autonomous)
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* docs: refine PyPI install guidance from review (#3516)
Address review feedback for the PyPI install documentation:
- Reword the verification guidance so `specify version` is described as a
local version/runtime check rather than proof of package provenance.
- Clarify that upgrading a pinned `uv tool` install to the newest PyPI
release requires an unpinned reinstall command.
- Note that `specify self upgrade` rebuilds `uv tool` and `pipx`
installs from the GitHub source release URL rather than preserving a
PyPI-based installation.
Assisted-by: GitHub Copilot (model: Claude Opus 4.8, autonomous)
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* docs: clarify PyPI verification and upgrade guidance
Assisted-by: GitHub Copilot (model: MAI-Code-1-Flash, autonomous)
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* docs: point PyPI provenance check to source metadata
Address review feedback: version/list commands do not reveal install
provenance. Direct readers to the source metadata their package manager
records (pipx list --json, PEP 610 direct_url.json) to confirm whether an
install came from PyPI or a Git URL, and note pip show cannot see
uv/pipx-managed environments.
Assisted-by: GitHub Copilot (model: Claude Opus 4.8, autonomous)
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Spec Kit is published to PyPI as [`specify-cli`](https://pypi.org/project/specify-cli/), maintained by the Spec Kit maintainers. Installing from PyPI is the second supported install route alongside installing from the [GitHub source](../installation.md#install-from-source--persistent-installation-recommended). Use whichever fits your workflow — both provide the same `specify` CLI.
4
+
5
+
> [!NOTE]
6
+
> The PyPI release version tracks the GitHub release tags (for example, PyPI `0.12.11` corresponds to the `v0.12.11` tag). `specify version` is only a local version/runtime sanity check — it reports the installed version but not where the `specify` executable came from, so it cannot distinguish a PyPI install from a Git install. To confirm the install source, inspect the source metadata your package manager records: `pipx list --json` reports the exact install specification for each tool, and for uv/pip installs you can check the package's [PEP 610](https://peps.python.org/pep-0610/)`direct_url.json` inside its `*.dist-info` directory (a Git or URL install records the repository/archive URL there, while a plain PyPI index install does not create that file). Note that `pip show specify-cli` only prints package metadata and will not see uv/pipx-managed environments from the host interpreter.
7
+
8
+
## Install Specify CLI
9
+
10
+
Use whichever Python tool you already have:
11
+
12
+
```bash
13
+
# Using uv (recommended)
14
+
uv tool install specify-cli
15
+
16
+
# Or using pipx
17
+
pipx install specify-cli
18
+
19
+
# Or using pip
20
+
pip install specify-cli
21
+
```
22
+
23
+
### Install a specific release
24
+
25
+
Pin an exact version for reproducible installs (check [PyPI](https://pypi.org/project/specify-cli/#history) or [Releases](https://github.com/github/spec-kit/releases) for available versions):
26
+
27
+
```bash
28
+
# Using uv
29
+
uv tool install specify-cli==0.12.11
30
+
31
+
# Or using pipx
32
+
pipx install specify-cli==0.12.11
33
+
34
+
# Or using pip
35
+
pip install specify-cli==0.12.11
36
+
```
37
+
38
+
## Verify
39
+
40
+
```bash
41
+
specify version
42
+
```
43
+
44
+
## Initialize a project
45
+
46
+
```bash
47
+
specify init <PROJECT_NAME> --integration copilot
48
+
```
49
+
50
+
## Upgrade
51
+
52
+
Upgrade by reinstalling the package through the same tool you used for the original install. If you originally pinned a version, note that `uv tool upgrade` preserves that pin; to move to the newest PyPI release, use an unpinned install command so you do not keep the existing version pin:
53
+
54
+
```bash
55
+
# Using uv
56
+
uv tool install --force specify-cli
57
+
58
+
# Or using pipx
59
+
pipx install --force specify-cli
60
+
61
+
# Or using pip
62
+
pip install --upgrade specify-cli
63
+
```
64
+
65
+
> [!NOTE]
66
+
> `specify self upgrade` currently rebuilds `uv tool` and `pipx` installs from the GitHub source release URL rather than preserving a PyPI-based installation. If you want to stay on the PyPI route, use the package-manager commands above. A plain `pip install specify-cli` is treated as an unmanaged install — upgrade it with `pip install --upgrade specify-cli`. See the [Upgrade Guide](../upgrade.md) for details.
67
+
68
+
## Uninstall
69
+
70
+
```bash
71
+
# Using uv
72
+
uv tool uninstall specify-cli
73
+
74
+
# Or using pipx
75
+
pipx uninstall specify-cli
76
+
77
+
# Or using pip
78
+
pip uninstall specify-cli
79
+
```
80
+
81
+
## Next steps
82
+
83
+
Head to the [Quick Start](../quickstart.md) to initialize your first project.
Copy file name to clipboardExpand all lines: docs/installation.md
+27-4Lines changed: 27 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,9 +11,14 @@
11
11
## Installation
12
12
13
13
> [!IMPORTANT]
14
-
> The only official, maintained packages for Spec Kit come from the [github/spec-kit](https://github.com/github/spec-kit) GitHub repository. Any packages with the same name available on PyPI (e.g. `specify-cli` on pypi.org) are **not** affiliated with this project and are not maintained by the Spec Kit maintainers. For normal installs, use the GitHub-based commands shown below. For offline or air-gapped environments, locally built wheels created from this repository are also valid.
14
+
> Spec Kit is distributed through two official channels, both published and maintained by the Spec Kit maintainers: the [github/spec-kit](https://github.com/github/spec-kit) GitHub repository (source installs) and the [`specify-cli`](https://pypi.org/project/specify-cli/) package on [PyPI](https://pypi.org/project/specify-cli/). Either route is supported for normal installs — use the commands shown below. After installing, run `specify version` as a local version/runtime sanity check. It confirms that the `specify` command is available and reports its version, but it does not prove whether the executable came from PyPI or GitHub. For offline or air-gapped environments, locally built wheels created from this repository are also valid.
15
15
16
-
### Persistent Installation (Recommended)
16
+
Spec Kit supports two install routes:
17
+
18
+
1.**Install from source (GitHub)** — the recommended route, pinned to a release tag.
19
+
2.**Install from PyPI** — install the published `specify-cli` package with your usual Python tooling.
20
+
21
+
### Install from Source — Persistent Installation (Recommended)
17
22
18
23
Install once and use everywhere. Replace `vX.Y.Z` with a release tag from [Releases](https://github.com/github/spec-kit/releases) — keep the leading `v` (for example, `v0.12.11`, not `0.12.11`):
19
24
@@ -30,12 +35,30 @@ Then initialize a project:
30
35
specify init <PROJECT_NAME> --integration copilot
31
36
```
32
37
38
+
### Install from PyPI
39
+
40
+
Spec Kit is also published to PyPI as [`specify-cli`](https://pypi.org/project/specify-cli/), so you can install it with your preferred Python package manager without referencing the Git URL:
41
+
42
+
```bash
43
+
# Using uv (recommended)
44
+
uv tool install specify-cli
45
+
46
+
# Or using pipx
47
+
pipx install specify-cli
48
+
49
+
# Or using pip
50
+
pip install specify-cli
51
+
```
52
+
53
+
To install a specific release, pin the version — for example `uv tool install specify-cli==0.12.11`. See the [PyPI installation guide](install/pypi.md) for details, including how to upgrade.
54
+
33
55
### One-time Usage
34
56
35
57
Run directly without installing — see the [One-time usage (uvx)](install/one-time.md) guide.
36
58
37
59
### Alternative Package Managers
38
60
61
+
-**PyPI** — see the [PyPI installation guide](install/pypi.md)
39
62
-**pipx** — see the [pipx installation guide](install/pipx.md)
40
63
-**Enterprise / Air-Gapped** — see the [air-gapped installation guide](install/air-gapped.md)
41
64
@@ -81,13 +104,13 @@ specify init <project_name> --integration claude --ignore-agent-tools
81
104
82
105
## Verification
83
106
84
-
After installation, run the following command to confirm the correct version is installed:
107
+
After installation, run the following command as a local version/runtime check:
85
108
86
109
```bash
87
110
specify version
88
111
```
89
112
90
-
This helps verify you are running the official Spec Kit build from GitHub, not an unrelated package with the same name.
113
+
This confirms that the `specify` command is available and reporting the expected version. It does not prove whether that executable came from PyPI or GitHub.
91
114
92
115
**Stay current:** Run `specify self check` periodically to learn whether a newer release is available — it is read-only and never modifies your installation. When you are ready to upgrade, follow the [Upgrade Guide](./upgrade.md).
0 commit comments