Specfuse umbrella CLI — bridges the pip-installed driver and the Claude Code plugin (init / upgrade).
Project description
Specfuse — Claude Code plugin marketplace
This repository is the Claude Code plugin marketplace for the Specfuse gate-cycle methodology. It is the shared distribution home so the loop today — and the orchestrator and future products later — install their Claude assets from one place.
Install
/plugin marketplace add specfuse/specfuse
/plugin install specfuse@specfuse
That installs the specfuse plugin: the methodology's interactive skills,
namespaced under /specfuse: (e.g. /specfuse:pick-feature,
/specfuse:draft-feature, /specfuse:arm-gate). Update with /plugin update specfuse@specfuse; reload after changes with /reload-plugins.
The skills drive the specfuse-loop driver — install it with the umbrella
package below (pip install specfuse pulls it), or on its own with pip install specfuse-loop. See specfuse/loop for the
methodology, the driver, and getting-started docs.
The specfuse umbrella CLI
This repo also ships the specfuse pip package — the umbrella CLI that bridges
the pip-installed driver and this plugin:
pipx install specfuse # driver only; gives specfuse / specfuse-loop / specfuse-lint
pipx install --include-deps 'specfuse[orchestrator]' # + the multi-repo orchestrator
pipx install --include-deps 'specfuse[authoring]' # + the spec-authoring kit
pipx install --include-deps 'specfuse[all]' # the whole suite in one command
specfuse init <repo> # scaffold .specfuse/ + wire .claude/ (--dry-run previews)
specfuse upgrade <repo> # overlay a newer scaffold, then pip-upgrade driver + CLI, point at /plugin update
Or install with uv (uv tool) — a single standalone
binary with the same isolated-env-on-PATH model as pipx, and the recommended path
on Windows (it sidesteps the pipx/Python-3.14 bug noted below):
uv tool install specfuse # core: specfuse / specfuse-loop / specfuse-lint
uv tool install --with-executables-from specfuse-orchestrator,specfuse-authoring 'specfuse[all]' # whole suite
uv tool upgrade specfuse # upgrade (re-resolves, like pipx upgrade)
--with-executables-fromis uv's--include-deps.uv tool install specfuseexposes only the umbrella's own scripts; the orchestrator/authoring commands live in the extra packages, so name them in--with-executables-fromto put them on PATH. uv also manages its own Python, so a system Python 3.14 doesn't affect it.Use uv ≥ 0.9.9 on Windows. If
uv tool installfails withFailed to update Windows PE resources: …uv-trampoline-….exe … Access is denied, that's antivirus/ Defender blocking uv's trampoline.exein%TEMP%. uv 0.9.9 stores trampoline metadata in.rcdatainstead, avoiding it — runuv self updateand retry. If it persists, add an AV exclusion for%LOCALAPPDATA%\uv(or point$env:TMP/$env:TEMPat an unmonitored dir before installing). See astral-sh/uv#10030.
--include-depsis required for the extras' CLIs. pipx only exposes the main package's own console scripts; the orchestrator/authoring commands (specfuse-orchestrator,specfuse-poller,specfuse-authoring, …) live in the extra packages, so--include-depsis what surfaces them on PATH. Without it the extra is installed but its commands aren't linked.Quote the brackets — zsh globs them (
'specfuse[all]'). And extras are only re-resolved on a fresh install — to add one to an existing install usepipx install --force --include-deps 'specfuse[all]';pipx upgradealone won't pull a newly-added extra.
A bare
pip installinto a system Python is blocked on PEP-668 externally-managed environments (Debian/Ubuntu, Homebrew). Usepipx(thenpipx upgrade specfuse) or a virtualenv, sospecfuse-loop/specfuse-lintland on PATH for the gate commands to find.Windows + Python 3.14:
pipx installcrashes withUnicodeDecodeError. If the output showsSuccessfully installed … specfuse-…and then aUnicodeDecodeError: … can't decode byte 0x89 …traceback ending in pipx's_copy_launcher_targets_venv → os.fsdecode(...), the packages installed fine — this is an upstream pipx bug on Python 3.14/Windows, not a specfuse defect. pipx copies the console-script.exelaunchers into%USERPROFILE%\.local\binand its post-install cleanup then mis-reads them.--forcere-copies and re-scans the same launchers, so it hits the identical crash; deleting the shims doesn't help either (they're recreated and re-trigger it). Same 3.14/Windows class as pypa/pipx#1723.Use uv instead (recommended) — uv's
toolmodel is pipx-equivalent (isolated env, shims on PATH, one-line install/upgrade) but uses its own launcher machinery, so it doesn't hit this bug:powershell -c "irm https://astral.sh/uv/install.ps1 | iex" # one-time: install uv uv tool install specfuse # core CLIs uv tool install --with-executables-from specfuse-orchestrator,specfuse-authoring 'specfuse[all]' # whole suite specfuse --version uv tool upgrade specfuse # upgrade laterIf you must stay on pipx: delete any leftover broken launchers (
del "$env:USERPROFILE\.local\bin\specfuse*.exe") and run pipx itself under Python 3.13 so its own process isn't 3.14. A plainpy -m venv+pip install "specfuse[all]"also works (you manage PATH yourself).
specfuse init lays down .specfuse/ (templates, rules, docs, verification.yml)
and merge-safely wires .claude/ (including this plugin's config) — pip-native
scaffolding via specfuse.loop.scaffold, no init.sh checkout required. Every
specfuse-loop run also self-provisions (version-syncs .specfuse/ from the
installed package), so pip install -U specfuse reaches existing projects on
their next run. specfuse contributes to the shared specfuse.* import namespace
(so specfuse.loop from the driver and a future specfuse.orchestrator coexist).
Plugins
| Plugin | What it ships | Source repo |
|---|---|---|
specfuse |
Gate-cycle skills (pick / draft / arm / diagnose / wrap, authoring, verification) | specfuse/loop plugins/specfuse/ |
specfuse-authoring |
Spec-craft: design OpenAPI/AsyncAPI/Arazzo, validate, bundle + the specs agent (idea → validated initiative) |
specfuse/authoring plugins/specfuse-authoring/ |
specfuse-orchestrator |
Multi-repo initiative coordination (onboard, pm) | specfuse/orchestrator plugins/specfuse-orchestrator/ |
Layout
.claude-plugin/marketplace.json # catalog: per plugin { name, source, source_repo, managed }
plugins/<name>/ # GENERATED copies — do not hand-edit (see below)
.claude-plugin/plugin.json
skills/<skill>/SKILL.md
agents/<agent>.md
How the plugins are sourced (contributors)
Edit a plugin in its origin repo, never here. Each plugin's canonical source
lives in its own repo at plugins/<name>/ (for the loop, .specfuse/skills/ is
vendored from plugins/specfuse/skills/ for its dogfood — the plugin dir is
still the source). The copies under plugins/ in this repo are generated
output, produced by specfuse/publish.py.
- Publish on release. When a source repo publishes its package to PyPI, its
release workflow dispatches to this repo; the publish step regenerates that
plugin from the source at tag
v<version>, stampsplugin.json.versionto the released version (plugin@X == package@X == tag vX), and opens a PR only if the plugin changed. - Drift-guard. The
plugin-drift-guardCI (required check) re-derives everymanagedplugin from its source at the pinned tag and fails on any diff — so a hand-edit, a bad merge, or an agent's "quick fix" cannot land inplugins/. The only way in is a faithful publish. - Manual publish (testing / backfill): the
plugin-publishworkflow'sworkflow_dispatch(plugin,version) runs the same path by hand.
See docs/plan-unify-plugin-sourcing.md for
the full design. Skills reach a target repo through the installed plugin (under
the /specfuse: etc. namespaces), not by copying files into the repo.
License
Apache License 2.0. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file specfuse-0.3.6.tar.gz.
File metadata
- Download URL: specfuse-0.3.6.tar.gz
- Upload date:
- Size: 22.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d264b40552512ea1ae439d82cfd34c5e4a514d4c6158d4194a10a6b5d3ad423c
|
|
| MD5 |
52cdb03241856ac29dde9112da251b20
|
|
| BLAKE2b-256 |
a8f135fe2e21fe89888aa419f6f672774204b281dac244bdad29e0db969d0ec7
|
Provenance
The following attestation bundles were made for specfuse-0.3.6.tar.gz:
Publisher:
release.yml on specfuse/specfuse
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
specfuse-0.3.6.tar.gz -
Subject digest:
d264b40552512ea1ae439d82cfd34c5e4a514d4c6158d4194a10a6b5d3ad423c - Sigstore transparency entry: 2207280616
- Sigstore integration time:
-
Permalink:
specfuse/specfuse@3fb1634bab7eed0d9e46132065fe4fed5a6aff9b -
Branch / Tag:
refs/tags/v0.3.6 - Owner: https://github.com/specfuse
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3fb1634bab7eed0d9e46132065fe4fed5a6aff9b -
Trigger Event:
push
-
Statement type:
File details
Details for the file specfuse-0.3.6-py3-none-any.whl.
File metadata
- Download URL: specfuse-0.3.6-py3-none-any.whl
- Upload date:
- Size: 16.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af9137c00d073ff87173943fd6d58db92ffc66594de22f800edc7052813a3fc7
|
|
| MD5 |
861ecbdf15bf96d206420bd3e091f577
|
|
| BLAKE2b-256 |
bd8ce6e83ff3147bb10c34bb7a8d8e1beb8ca53907c6ac37373d3f2ad9bca952
|
Provenance
The following attestation bundles were made for specfuse-0.3.6-py3-none-any.whl:
Publisher:
release.yml on specfuse/specfuse
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
specfuse-0.3.6-py3-none-any.whl -
Subject digest:
af9137c00d073ff87173943fd6d58db92ffc66594de22f800edc7052813a3fc7 - Sigstore transparency entry: 2207280655
- Sigstore integration time:
-
Permalink:
specfuse/specfuse@3fb1634bab7eed0d9e46132065fe4fed5a6aff9b -
Branch / Tag:
refs/tags/v0.3.6 - Owner: https://github.com/specfuse
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3fb1634bab7eed0d9e46132065fe4fed5a6aff9b -
Trigger Event:
push
-
Statement type: