Recent changes to the Specify CLI and templates are documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- fix: sync agent list comments with actual supported agents (#1785)
- feat(extensions): support multiple active catalogs simultaneously (#1720)
- Pavel/add tabnine cli support (#1503)
- Add Understanding extension to community catalog (#1778)
- Add ralph extension to community catalog (#1780)
- Update README with project initialization instructions (#1772)
- feat: add review extension to community catalog (#1775)
- Add fleet extension to community catalog (#1771)
- Integration of Mistral vibe support into speckit (#1725)
- fix: Remove duplicate options in specify.md (#1765)
- fix: use global branch numbering instead of per-short-name detection (#1757)
- Add Community Walkthroughs section to README (#1766)
- feat(extensions): add Jira Integration to community catalog (#1764)
- Add Azure DevOps Integration extension to community catalog (#1734)
- Fix docs: update Antigravity link and add initialization example (#1748)
- fix: wire after_tasks and after_implement hook events into command templates (#1702)
- make c ignores consistent with c++ (#1747)
- chore: bump version to 0.1.13 (#1746)
- feat: add kiro-cli and AGENT_CONFIG consistency coverage (#1690)
- feat: add verify extension to community catalog (#1726)
- Add Retrospective Extension to community catalog README table (#1741)
- fix(scripts): add empty description validation and branch checkout error handling (#1559)
- fix: correct Copilot extension command registration (#1724)
- fix(implement): remove Makefile from C ignore patterns (#1558)
- Add sync extension to community catalog (#1728)
- fix(checklist): clarify file handling behavior for append vs create (#1556)
- fix(clarify): correct conflicting question limit from 10 to 5 (#1557)
- chore: bump version to 0.1.12 (#1737)
- fix: use RELEASE_PAT so tag push triggers release workflow (#1736)
- fix: release-trigger uses release branch + PR instead of direct push to main (#1733)
- fix: Split release process to sync pyproject.toml version with git tags (#1732)
- feat: add Tabnine CLI agent support
- Multi-Catalog Support (#1707): Extension catalog system now supports multiple active catalogs simultaneously via a catalog stack
- New
specify extension catalog listcommand lists all active catalogs with name, URL, priority, andinstall_allowedstatus - New
specify extension catalog addandspecify extension catalog removecommands for project-scoped catalog management - Default built-in stack includes
catalog.json(default, installable) andcatalog.community.json(community, discovery only) — community extensions are now surfaced in search results out of the box specify extension searchaggregates results across all active catalogs, annotating each result with source catalogspecify extension addenforcesinstall_allowedpolicy — extensions from discovery-only catalogs cannot be installed directly- Project-level
.specify/extension-catalogs.ymland user-level~/.specify/extension-catalogs.ymlconfig files supported, with project-level taking precedence SPECKIT_CATALOG_URLenvironment variable still works for backward compatibility (replaces full stack with single catalog)- All catalog URLs require HTTPS (HTTP allowed for localhost development)
- New
CatalogEntrydataclass inextensions.pyfor catalog stack representation - Per-URL hash-based caching for non-default catalogs; legacy cache preserved for default catalog
- Higher-priority catalogs win on merge conflicts (same extension id in multiple catalogs)
- 13 new tests covering catalog stack resolution, merge conflicts, URL validation, and
install_allowedenforcement - Updated RFC, Extension User Guide, and Extension API Reference documentation
- New
- feat: add kiro-cli and AGENT_CONFIG consistency coverage (#1690)
- feat: add verify extension to community catalog (#1726)
- Add Retrospective Extension to community catalog README table (#1741)
- fix(scripts): add empty description validation and branch checkout error handling (#1559)
- fix: correct Copilot extension command registration (#1724)
- fix(implement): remove Makefile from C ignore patterns (#1558)
- Add sync extension to community catalog (#1728)
- fix(checklist): clarify file handling behavior for append vs create (#1556)
- fix(clarify): correct conflicting question limit from 10 to 5 (#1557)
- chore: bump version to 0.1.12 (#1737)
- fix: use RELEASE_PAT so tag push triggers release workflow (#1736)
- fix: release-trigger uses release branch + PR instead of direct push to main (#1733)
- fix: Split release process to sync pyproject.toml version with git tags (#1732)
- Copilot Extension Commands Not Visible: Fixed extension commands not appearing in GitHub Copilot when installed via
specify extension add --dev- Changed Copilot file extension from
.mdto.agent.mdinCommandRegistrar.AGENT_CONFIGSso Copilot recognizes agent files - Added generation of companion
.prompt.mdfiles in.github/prompts/during extension command registration, matching the release packaging behavior - Added cleanup of
.prompt.mdcompanion files when removing extensions viaspecify extension remove
- Changed Copilot file extension from
- Fixed a syntax regression in
src/specify_cli/__init__.pyin_build_ai_assistant_help()that brokeruffandpytestcollection in CI.
- fix: use RELEASE_PAT so tag push triggers release workflow (#1736)
- fix: release-trigger uses release branch + PR instead of direct push to main (#1733)
- fix: Split release process to sync pyproject.toml version with git tags (#1732)
- Version Sync Issue (#1721): Fixed version mismatch between
pyproject.tomland git release tags- Split release process into two workflows:
release-trigger.ymlfor version management andrelease.ymlfor artifact building - Version bump now happens BEFORE tag creation, ensuring tags point to commits with correct version
- Supports both manual version specification and auto-increment (patch version)
- Git tags now accurately reflect the version in
pyproject.tomlat that commit - Prevents confusion when installing from source
- Split release process into two workflows:
- Updated dependency: bumped astral-sh/setup-uv from 6 to 7
- Updated dependency: bumped actions/setup-python from 5 to 6
- Updated outdated GitHub Actions versions
- Documented dual-catalog system for extensions
- Fixed version command in documentation
- Added Cleanup Extension to README
- Added retrospective extension to community catalog
- Parameter Ordering Issues (#1641): Fixed CLI parameter parsing issue where option flags were incorrectly consumed as values for preceding options
- Added validation to detect when
--aior--ai-commands-dirincorrectly consume following flags like--hereor--ai-skills - Now provides clear error messages: "Invalid value for --ai: '--here'"
- Includes helpful hints suggesting proper usage and listing available agents
- Commands like
specify init --ai-skills --ai --herenow fail with actionable feedback instead of confusing "Must specify project name" errors - Added comprehensive test suite (5 new tests) to prevent regressions
- Added validation to detect when
- AI Skills Installation Bug (#1658): Fixed
--ai-skillsflag not generating skill files for GitHub Copilot and other agents with non-standard command directory structures- Added
commands_subdirfield toAGENT_CONFIGto explicitly specify the subdirectory name for each agent - Affected agents now work correctly: copilot (
.github/agents/), opencode (.opencode/command/), windsurf (.windsurf/workflows/), codex (.codex/prompts/), kilocode (.kilocode/workflows/), q (.amazonq/prompts/), and agy (.agent/workflows/) - The
install_ai_skills()function now uses the correct path for all agents instead of assumingcommands/for everyone
- Added
- Qoder CLI detection: Renamed
AGENT_CONFIGkey from"qoder"to"qodercli"to match the actual executable name, fixingspecify checkandspecify init --aidetection failures
- Generic Agent Support: Added
--ai genericoption for unsupported AI agents ("bring your own agent")- Requires
--ai-commands-dir <path>to specify where the agent reads commands from - Generates Markdown commands with
$ARGUMENTSformat (compatible with most agents) - Example:
specify init my-project --ai generic --ai-commands-dir .myagent/commands/ - Enables users to start with Spec Kit immediately while their agent awaits formal support
- Requires
- fix: include 'src/**' path in release workflow triggers (#1646)
- chore(deps): bump github/codeql-action from 3 to 4 (#1635)
- Add pytest and Python linting (ruff) to CI (#1637)
- feat: add pull request template for better contribution guidelines (#1634)
- Feat/ai skills (#1632)
- chore(deps): bump actions/stale from 9 to 10 (#1623)
- feat: add dependabot configuration for pip and GitHub Actions updates (#1622)
- Remove Maintainers section from README.md (#1618)
- fix: typo in plan-template.md (#1446)
- Feat: add a new agent: Google Anti Gravity (#1220)
- Add stale workflow for 180-day inactive issues and PRs (#1594)