# Feature catalog — github/spec-kit

> Canonical page: https://codevetter.com/unpack/spec-kit/feature-catalog

# Feature catalog — github/spec-kit

Scanned commit 175adbcd826befdccce8c60faa07ae3d8bbc8d87 (2026-09-22). Generated by codevetter codevetter 1.12.0 on 2026-09-22.

The CLI surface splits into project bootstrapping (`init`, `check`, `version`, `self check|upgrade`), four parallel package managers (`integration`, `extension`, `preset`, `bundle`) each with add/remove/list/info/search/enable/disable/update and nested `catalog` commands, a workflow engine front-end (`workflow run/resume/status/...` plus `step` and `overlay` groups), a read-only `artifact` introspection group, and an `event run` target used by generated hook dispatchers. On the content side it ships ten core SDD command templates, four bundled extensions, three bundled workflows, and four repo presets.
- `specify init [NAME]|.|--here` scaffolds a project with flags `--script sh|ps|py`, `--integration <key>`, `--integration-options`, `--preset`, repeatable `--extension` (bundled name, local path, or HTTPS URL), `--trust-extension-urls`, `--force`, `--non-interactive`, `--ignore-agent-tools`; several legacy flags (`--skip-tls`, `--github-token`, `--offline`, `--debug`) remain as hidden no-ops. — [src/specify_cli/commands/init.py#L259-381](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/commands/init.py#L259-L381)
- `specify check` iterates `AGENT_CONFIG` and runs `check_tool` (shutil.which-style probe) for each `requires_cli` agent, marks IDE-based agents as skipped, and also probes `code`/`code-insiders`. — [src/specify_cli/__init__.py#L398-436](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/__init__.py#L398-L436) [src/specify_cli/_utils.py](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/_utils.py)
- `specify version` prints a Rich info panel; `--features` emits stable capability flags (e.g. `workflow_catalog`, `integration_upgrade_command`) and `--json` requires `--features`. `specify self check|upgrade` lives in `_version.py` and compares the installed distribution version against the latest GitHub release tag. — [src/specify_cli/__init__.py#L439-512](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/__init__.py#L439-L512) [src/specify_cli/_version.py#L93-145](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/_version.py#L93-L145)
- `specify integration` is a command group (app `integration_app`) with command modules for install, uninstall, list, status, switch, use, upgrade, info, search, scaffold, plus a nested `catalog` group (add/list/remove). — [src/specify_cli/integrations/_commands.py#L21-47](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/integrations/_commands.py#L21-L47) [src/specify_cli/integrations/command_install.py](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/integrations/command_install.py) [src/specify_cli/integrations/command_scaffold.py](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/integrations/command_scaffold.py) [src/specify_cli/integrations/catalog/command_add.py](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/integrations/catalog/command_add.py)
- `specify extension add` supports `--dev` (local directory), `--from <url>` (external archive with an HTTPS-or-localhost check and a default-deny trust prompt), `--force`, and `--priority`; the group also has remove, list, info, search, enable, disable, set-priority, update, and `catalog` subcommands. — [src/specify_cli/extensions/command_add.py#L19-100](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/extensions/command_add.py#L19-L100) [src/specify_cli/extensions/_commands.py#L31-35](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/extensions/_commands.py#L31-L35)
- `specify preset` manages template-override packs with the same verb set (add/remove/list/info/search/enable/disable/set-priority/update) plus `resolve` (shows the composed resolution stack) and a nested `catalog` group. — [src/specify_cli/presets/_commands.py#L12-99](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/presets/_commands.py#L12-L99) [src/specify_cli/presets/command_resolve.py](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/presets/command_resolve.py)
- `specify workflow` exposes run, resume, status, list, add, remove, update, enable, disable, search, info, resolve plus nested `catalog`, `step` (with its own `catalog`), and `overlay` groups; `workflow run` accepts an installed workflow ID or a local YAML path. — [src/specify_cli/workflows/_commands.py#L36-68,1308-1320](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/workflows/_commands.py#L36-68,1308-L1320)
- `specify bundle` packages/installs role-based bundles with verbs init, add, install, build, validate, list, info, search, remove, update and a nested `catalog` group; bundled catalog JSON ships `bugfix` and `assess` first-party bundles. — [src/specify_cli/bundles/_commands.py#L20-163](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/bundles/_commands.py#L20-L163) [src/specify_cli/bundles/command_build.py](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/bundles/command_build.py) [bundles/catalog.json](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/bundles/catalog.json)
- `specify artifact list|info` is a thin read-only introspection group over `ArtifactCatalog` (commands/templates/scripts/hooks), emitting strict JSON envelopes on stdout/stderr and documented in `docs/reference/artifacts.md`. — [src/specify_cli/artifacts/_commands.py#L1-40](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/artifacts/_commands.py#L1-L40) [src/specify_cli/artifacts/__init__.py#L1-37](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/artifacts/__init__.py#L1-L37) [docs/reference/artifacts.md](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/docs/reference/artifacts.md)
- `specify event run <command_name> <event_name> [timeout]` is the dispatcher target for agent-native hooks: it reads a JSON payload from stdin capped at 1 MiB (counting encoded bytes via `sys.stdin.buffer`), then calls `resolve_and_run_event_command` from `events.py`. — [src/specify_cli/commands/event.py#L13-60](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/commands/event.py#L13-L60) [src/specify_cli/events.py#L59-67](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/events.py#L59-L67)
- Ten core SDD command templates ship under `templates/commands/`: specify, plan, tasks, implement, converge, analyze, clarify, constitution, checklist, taskstoissues — mirrored by `SKILL_DESCRIPTIONS` in the package root. — [templates/commands/specify.md#L1-20](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/templates/commands/specify.md#L1-L20) [src/specify_cli/__init__.py#L378-389](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/__init__.py#L378-L389)
- Bundled first-party content: extensions `git` (branch workflow + hooks), `agent-context` (manages CLAUDE.md/AGENTS.md sections), `assess` (idea triage), `bug` (assess→fix→test), plus `template`/`selftest` scaffolds; workflows `speckit` (specify→plan→tasks→implement with gates), `bugfix`, `assess`; presets `lean`, `constitution-sync`, `scaffold`, `self-test`. — [extensions/git/extension.yml#L18-41](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/extensions/git/extension.yml#L18-L41) [extensions/agent-context/extension.yml](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/extensions/agent-context/extension.yml) [workflows/speckit/workflow.yml#L39-74](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/workflows/speckit/workflow.yml#L39-L74) [presets/lean/preset.yml#L15-46](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/presets/lean/preset.yml#L15-L46)
- Per-agent command output supports four layouts selected by base class: Markdown files (MarkdownIntegration), TOML (TomlIntegration, e.g. gemini), YAML recipes (YamlIntegration), and skill directories `speckit-<name>/SKILL.md` (SkillsIntegration, e.g. claude/codex); `invoke_separator` switches `/speckit.plan` vs `/speckit-plan` spellings. — [src/specify_cli/integrations/base.py#L1-12,1079-1165](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/src/specify_cli/integrations/base.py#L1-12,1079-L1165) [AGENTS.md](https://github.com/github/spec-kit/blob/175adbcd826befdccce8c60faa07ae3d8bbc8d87/AGENTS.md)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
