mirror of
https://github.com/github/spec-kit.git
synced 2026-03-16 18:33:07 +00:00
* Initial plan * feat(extensions): implement multi-catalog stack support - Add CatalogEntry dataclass to represent catalog entries - Add get_active_catalogs() reading SPECKIT_CATALOG_URL, project config, user config, or built-in default stack (org-approved + community) - Add _load_catalog_config() to parse .specify/extension-catalogs.yml - Add _validate_catalog_url() HTTPS validation helper - Add _fetch_single_catalog() with per-URL caching, backward-compat for DEFAULT_CATALOG_URL - Add _get_merged_extensions() that merges all catalogs (priority wins on conflict) - Update search() and get_extension_info() to use merged results annotated with _catalog_name and _install_allowed - Update clear_cache() to also remove per-URL hash cache files - Add extension_catalogs CLI command to list active catalogs - Add catalog add/remove sub-commands for .specify/extension-catalogs.yml - Update extension_add to enforce install_allowed=false policy - Update extension_search to show source catalog per result - Update extension_info to show source catalog with install_allowed status - Add 13 new tests covering catalog stack, merge conflict resolution, install_allowed enforcement, and catalog metadata Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com> * docs: update RFC, user guide, and API reference for multi-catalog support - RFC: replace FUTURE FEATURE section with full implementation docs, add catalog stack resolution order, config file examples, merge conflict resolution, and install_allowed behavior - EXTENSION-USER-GUIDE.md: add multi-catalog section with CLI examples for catalogs/catalog-add/catalog-remove, update catalog config docs - EXTENSION-API-REFERENCE.md: add CatalogEntry class docs, update ExtensionCatalog docs with new methods and result annotations, add catalog CLI commands (catalogs, catalog add, catalog remove) Also fix extension_catalogs command to correctly show "Using built-in default catalog stack" when config file exists but has empty catalogs Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com> * Potential fix for pull request finding 'Empty except' Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> * fix: remove extraneous f-string prefixes (ruff F541) Remove f-prefix from strings with no placeholders in catalog_remove and extension_search commands. Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com> * fix: address PR review feedback for multi-catalog support - Rename 'org-approved' catalog to 'default' - Move 'catalogs' command to 'catalog list' for consistency - Add 'description' field to CatalogEntry dataclass - Add --description option to 'catalog add' CLI command - Align install_allowed default to False in _load_catalog_config - Add user-level config detection in catalog list footer - Fix _load_catalog_config docstring (document ValidationError) - Fix test isolation for test_search_by_tag, test_search_by_query, test_search_verified_only, test_get_extension_info - Update version to 0.1.14 and CHANGELOG - Update all docs (RFC, User Guide, API Reference) * fix: wrap _load_catalog_config() calls in catalog_list with try/except - Check SPECKIT_CATALOG_URL first (matching get_active_catalogs() resolution order) - Wrap both _load_catalog_config() calls in try/except ValidationError so a malformed config file cannot crash `specify extension catalog list` after the active catalogs have already been printed successfully Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: mnriem <15701806+mnriem@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
7.9 KiB
7.9 KiB
Changelog
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.
[0.1.14] - 2026-03-09
Added
- 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
[0.1.13] - 2026-03-03
Changed
- 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)
[0.1.13] - 2026-03-03
Fixed
- 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.
[0.1.12] - 2026-03-02
Changed
- 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)
[0.1.10] - 2026-03-02
Fixed
- 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:
[0.1.9] - 2026-02-28
Changed
- Updated dependency: bumped astral-sh/setup-uv from 6 to 7
[0.1.8] - 2026-02-28
Changed
- Updated dependency: bumped actions/setup-python from 5 to 6
[0.1.7] - 2026-02-27
Changed
- Updated outdated GitHub Actions versions
- Documented dual-catalog system for extensions
Fixed
- Fixed version command in documentation
Added
- Added Cleanup Extension to README
- Added retrospective extension to community catalog
[0.1.6] - 2026-02-23
Fixed
- 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
[0.1.5] - 2026-02-21
Fixed
- 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
[0.1.4] - 2026-02-20
Fixed
- Qoder CLI detection: Renamed
AGENT_CONFIGkey from"qoder"to"qodercli"to match the actual executable name, fixingspecify checkandspecify init --aidetection failures
[0.1.3] - 2026-02-20
Added
- 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
[0.0.102] - 2026-02-20
- fix: include 'src/**' path in release workflow triggers (#1646)
[0.0.101] - 2026-02-19
- chore(deps): bump github/codeql-action from 3 to 4 (#1635)
[0.0.100] - 2026-02-19
- Add pytest and Python linting (ruff) to CI (#1637)
- feat: add pull request template for better contribution guidelines (#1634)
[0.0.99] - 2026-02-19
- Feat/ai skills (#1632)
[0.0.98] - 2026-02-19
- chore(deps): bump actions/stale from 9 to 10 (#1623)
- feat: add dependabot configuration for pip and GitHub Actions updates (#1622)
[0.0.97] - 2026-02-18
- Remove Maintainers section from README.md (#1618)
[0.0.96] - 2026-02-17
- fix: typo in plan-template.md (#1446)
[0.0.95] - 2026-02-12
- Feat: add a new agent: Google Anti Gravity (#1220)
[0.0.94] - 2026-02-11
- Add stale workflow for 180-day inactive issues and PRs (#1594)