specify-cli 0.14.2__tar.gz → 0.14.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/agent_request.yml +1 -1
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/bug_report.yml +1 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/feature_request.yml +1 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/AGENTS.md +88 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/CHANGELOG.md +31 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/PKG-INFO +1 -1
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/community/extensions.md +1 -1
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/community/presets.md +2 -1
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/reference/integrations.md +15 -1
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/reference/presets.md +1 -1
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/agent-context/agent-context-defaults.json +1 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/agent-context/scripts/bash/update-agent-context.sh +9 -4
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/agent-context/scripts/python/update_agent_context.py +4 -3
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/assess/README.md +2 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/assess/commands/speckit.assess.intake.md +2 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/catalog.community.json +19 -16
- {specify_cli-0.14.2 → specify_cli-0.14.3}/integrations/catalog.json +10 -1
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/catalog.community.json +39 -10
- {specify_cli-0.14.2 → specify_cli-0.14.3}/pyproject.toml +1 -1
- specify_cli-0.14.3/src/specify_cli/_download_security.py +896 -0
- specify_cli-0.14.3/src/specify_cli/_init_options.py +83 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/_utils.py +19 -6
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/agents.py +50 -4
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/commands_impl/catalog_config.py +3 -2
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/models/catalog.py +29 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/services/adapters.py +18 -2
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/commands/bundle/__init__.py +85 -6
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/extensions/__init__.py +744 -188
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/extensions/_commands.py +739 -67
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/__init__.py +2 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/_helpers.py +73 -13
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/_migrate_commands.py +101 -89
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/_query_commands.py +11 -4
- specify_cli-0.14.3/src/specify_cli/integrations/alquimia/__init__.py +165 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/copilot/__init__.py +9 -1
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/presets/__init__.py +2057 -214
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/presets/_commands.py +24 -18
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/_commands.py +124 -28
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/catalog.py +26 -6
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/engine.py +11 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/templates/commands/clarify.md +6 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/contract/test_catalog_schema.py +57 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/extensions/test_update_agent_context_python_parity.py +47 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integration/test_bundler_local_install.py +61 -0
- specify_cli-0.14.3/tests/integrations/test_integration_alquimia.py +607 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_catalog.py +34 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_claude.py +1 -1
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_copilot.py +37 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_subcommand.py +832 -40
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_agent_config_consistency.py +1 -0
- specify_cli-0.14.3/tests/test_download_security.py +1071 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_extension_skills.py +1438 -0
- specify_cli-0.14.3/tests/test_extension_update_hardening.py +2225 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_extensions.py +1051 -32
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_presets.py +4342 -61
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_registrar_path_traversal.py +46 -3
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_workflows.py +562 -0
- specify_cli-0.14.3/tests/unit/test_bundle_download_url.py +162 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/unit/test_bundler_adapters.py +35 -2
- {specify_cli-0.14.2 → specify_cli-0.14.3}/workflows/speckit/workflow.yml +1 -0
- specify_cli-0.14.2/src/specify_cli/_download_security.py +0 -218
- specify_cli-0.14.2/src/specify_cli/_init_options.py +0 -36
- specify_cli-0.14.2/tests/test_download_security.py +0 -227
- specify_cli-0.14.2/tests/test_extension_update_hardening.py +0 -157
- specify_cli-0.14.2/tests/unit/test_bundle_download_url.py +0 -42
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.devcontainer/devcontainer.json +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.devcontainer/post-create.sh +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.editorconfig +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.gitattributes +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/CODEOWNERS +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/bundle_submission.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/preset_submission.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/aw/actions-lock.json +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/dependabot.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/scripts/check_security_requirements.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/security-audit-requirements.txt +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/skills/add-community-extension/SKILL.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/RELEASE-PROCESS.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/add-community-bundle.lock.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/add-community-bundle.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/add-community-extension.lock.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/add-community-extension.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/add-community-preset.lock.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/add-community-preset.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/bug-assess.lock.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/bug-assess.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/bug-fix.lock.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/bug-fix.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/bug-test.lock.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/bug-test.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/catalog-assign.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/codeql.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/docs.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/lint.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/publish-pypi.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/release-trigger.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/release.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/security.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/stale.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.github/workflows/test.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.gitignore +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.markdownlint-cli2.jsonc +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.pre-commit-config.yaml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/.zenodo.json +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/CITATION.cff +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/CODE_OF_CONDUCT.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/CONTRIBUTING.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/DEVELOPMENT.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/LICENSE +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/README.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/SECURITY.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/SUPPORT.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/bundles/catalog.community.json +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/.gitignore +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/README.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/community/bundles.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/community/friends.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/community/overview.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/community/walkthroughs.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/concepts/complex-features.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/concepts/sdd.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/concepts/spec-of-specs.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/concepts/spec-persistence.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/docfx.json +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/guides/evolving-specs.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/guides/monorepo.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/index.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/install/air-gapped.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/install/one-time.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/install/pipx.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/install/pypi.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/install/uv.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/installation.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/local-development.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/quickstart.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/reference/agentic-bugfix.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/reference/agentic-sdd.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/reference/authentication.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/reference/bundles.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/reference/core.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/reference/extensions.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/reference/overview.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/reference/workflows.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/template/public/main.css +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/toc.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/docs/upgrade.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/examples/bundles/business-analyst/README.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/examples/bundles/business-analyst/bundle.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/examples/bundles/developer/README.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/examples/bundles/developer/bundle.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/examples/bundles/product-manager/README.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/examples/bundles/product-manager/bundle.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/examples/bundles/security-researcher/README.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/examples/bundles/security-researcher/bundle.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/EXTENSION-API-REFERENCE.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/EXTENSION-PUBLISHING-GUIDE.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/EXTENSION-USER-GUIDE.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/README.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/agent-context/README.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/agent-context/agent-context-config.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/agent-context/extension.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/assess/commands/speckit.assess.decide.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/assess/commands/speckit.assess.define.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/assess/commands/speckit.assess.research.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/assess/commands/speckit.assess.shape.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/assess/extension.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/bug/README.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/bug/commands/speckit.bug.assess.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/bug/commands/speckit.bug.fix.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/bug/commands/speckit.bug.test.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/bug/extension.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/catalog.json +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/README.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/commands/speckit.git.commit.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/commands/speckit.git.feature.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/commands/speckit.git.initialize.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/commands/speckit.git.remote.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/commands/speckit.git.validate.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/config-template.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/extension.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/git-config.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/scripts/bash/auto-commit.sh +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/scripts/bash/git-common.sh +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/scripts/python/auto_commit.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/scripts/python/create_new_feature_branch.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/scripts/python/git_common.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/git/scripts/python/initialize_repo.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/selftest/commands/selftest.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/selftest/extension.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/template/.gitignore +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/template/CHANGELOG.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/template/EXAMPLE-README.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/template/LICENSE +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/template/README.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/template/commands/example.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/template/config-template.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/template/extension.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/integrations/CONTRIBUTING.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/integrations/README.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/integrations/catalog.community.json +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/media/bootstrap-claude-code.gif +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/media/logo_large.webp +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/media/logo_small.webp +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/media/spec-kit-video-header.jpg +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/media/specify_cli.gif +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/newsletters/2026-April.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/newsletters/2026-February.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/newsletters/2026-June.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/newsletters/2026-March.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/newsletters/2026-May.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/ARCHITECTURE.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/PUBLISHING.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/README.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/catalog.json +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/lean/README.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/lean/commands/speckit.constitution.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/lean/commands/speckit.implement.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/lean/commands/speckit.plan.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/lean/commands/speckit.specify.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/lean/commands/speckit.tasks.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/lean/preset.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/scaffold/README.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/scaffold/commands/speckit.specify.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/scaffold/preset.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/scaffold/templates/myext-template.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/scaffold/templates/spec-template.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/self-test/commands/speckit.specify.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/self-test/commands/speckit.wrap-test.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/self-test/preset.yml +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/self-test/templates/checklist-template.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/self-test/templates/constitution-template.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/self-test/templates/plan-template.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/self-test/templates/spec-template.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/presets/self-test/templates/tasks-template.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/scripts/bash/check-prerequisites.sh +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/scripts/bash/common.sh +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/scripts/bash/create-new-feature.sh +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/scripts/bash/setup-plan.sh +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/scripts/bash/setup-tasks.sh +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/scripts/powershell/check-prerequisites.ps1 +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/scripts/powershell/common.ps1 +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/scripts/powershell/create-new-feature.ps1 +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/scripts/powershell/setup-plan.ps1 +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/scripts/powershell/setup-tasks.ps1 +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/scripts/python/check_prerequisites.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/scripts/python/common.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/scripts/python/create_new_feature.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/scripts/python/setup_plan.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/scripts/python/setup_tasks.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/spec-driven.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/spec-kit.code-workspace +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/_agent_config.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/_assets.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/_console.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/_github_http.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/_invocation_style.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/_project.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/_toml_string.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/_version.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/authentication/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/authentication/azure_devops.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/authentication/base.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/authentication/config.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/authentication/github.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/authentication/http.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/commands_impl/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/lib/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/lib/project.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/lib/versioning.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/lib/yamlio.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/models/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/models/manifest.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/models/records.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/services/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/services/catalog_stack.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/services/conflict.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/services/installer.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/services/packager.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/services/primitives.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/services/references.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/services/resolver.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/bundler/services/validator.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/catalogs.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/commands/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/commands/init.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integration_runtime.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integration_scaffold.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integration_state.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integration_status.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/_commands.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/_install_commands.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/_scaffold_commands.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/agy/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/amp/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/auggie/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/base.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/bob/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/catalog.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/claude/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/cline/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/codex/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/devin/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/droid/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/firebender/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/forge/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/gemini/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/generic/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/goose/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/grok/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/hermes/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/junie/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/kilocode/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/kimi/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/lingma/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/manifest.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/omp/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/opencode/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/pi/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/qwen/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/rovodev/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/shai/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/trae/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/vibe/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/zcode/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/integrations/zed/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/shared_infra.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/base.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/expressions.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/overlays/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/overlays/_commands.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/overlays/composer.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/overlays/layer_sources.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/overlays/merge.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/overlays/schema.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/command/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/do_while/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/fan_in/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/fan_out/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/gate/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/if_then/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/init/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/prompt/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/shell/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/switch/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/while_loop/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/templates/checklist-template.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/templates/commands/analyze.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/templates/commands/checklist.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/templates/commands/constitution.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/templates/commands/converge.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/templates/commands/implement.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/templates/commands/plan.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/templates/commands/specify.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/templates/commands/tasks.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/templates/commands/taskstoissues.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/templates/constitution-template.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/templates/plan-template.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/templates/spec-template.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/templates/tasks-template.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/templates/vscode-settings.json +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/auth_helpers.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/bundler_helpers.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/conftest.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/contract/test_bundle_cli.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/contract/test_manifest_schema.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/contract/test_wheel_core_pack_scripts.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/extensions/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/extensions/assess/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/extensions/assess/test_assess_extension.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/extensions/bug/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/extensions/bug/test_bug_extension.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/extensions/git/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/extensions/git/test_git_extension.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/extensions/git/test_git_extension_python_parity.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/extensions/test_agent_context_cli_free.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/extensions/test_extension_agent_context.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/extensions/test_update_agent_context_feature_json.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/hooks/TESTING.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/hooks/plan.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/hooks/spec.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/hooks/tasks.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/http_helpers.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integration/test_bundler_catalog_stack.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integration/test_bundler_init_install.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integration/test_bundler_install_flow.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integration/test_bundler_offline.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integration/test_bundler_security_paths.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/__init__.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/conftest.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_base.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_cli.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_extra_args.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_home_isolation.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_agy.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_amp.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_auggie.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_base_markdown.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_base_skills.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_base_toml.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_base_yaml.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_bob.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_cline.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_codebuddy.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_codex.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_cursor_agent.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_devin.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_droid.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_firebender.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_forge.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_gemini.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_generic.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_goose.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_grok.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_hermes.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_junie.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_kilocode.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_kimi.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_kiro_cli.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_lingma.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_omp.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_opencode.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_pi.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_qodercli.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_qwen.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_rovodev.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_scaffold.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_shai.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_state.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_tabnine.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_trae.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_vibe.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_zcode.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_integration_zed.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_manifest.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_registry.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/integrations/test_skill_frontmatter_quoting.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/parity_helpers.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/self_upgrade_helpers.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_authentication.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_branch_numbering.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_check_prerequisites_paths_only.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_check_prerequisites_python_parity.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_check_tool.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_cli_version.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_command_template_py_scripts.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_commands_package.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_console_imports.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_create_new_feature_python_parity.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_extension_registration.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_github_http.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_github_workflows.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_init_dir.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_init_dir_cli.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_live_transient_windows.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_merge.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_post_process.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_ps1_encoding.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_security_workflow.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_self_upgrade_detection.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_self_upgrade_execution.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_self_upgrade_guidance.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_self_upgrade_verification.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_setup_plan_feature_json.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_setup_plan_no_overwrite.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_setup_plan_python_parity.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_setup_tasks.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_setup_tasks_python_parity.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_shared_infra_integrity.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_skill_placeholder_py.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_specify_template_numbering.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_timestamp_branches.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_upgrade.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_utils.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_utils_assets_imports.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_version_imports.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/test_workflow_run_without_project.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/unit/test_bundler_catalog_config.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/unit/test_bundler_conflict.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/unit/test_bundler_packager.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/unit/test_bundler_primitives.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/unit/test_bundler_records.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/unit/test_bundler_references.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/unit/test_bundler_resolver.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/unit/test_bundler_validator.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/unit/test_bundler_versioning.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/unit/test_bundler_yamlio.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/workflows/conftest.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/workflows/test_overlay_commands.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/workflows/test_overlay_composer.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/workflows/test_overlay_layer_sources.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/workflows/test_overlay_merge.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/workflows/test_overlay_schema.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/workflows/test_overlay_security.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/tests/workflows/test_resolver_integration.py +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/workflows/ARCHITECTURE.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/workflows/PUBLISHING.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/workflows/README.md +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/workflows/catalog.community.json +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/workflows/catalog.json +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/workflows/step-catalog.community.json +0 -0
- {specify_cli-0.14.2 → specify_cli-0.14.3}/workflows/step-catalog.json +0 -0
|
@@ -8,7 +8,7 @@ body:
|
|
|
8
8
|
value: |
|
|
9
9
|
Thanks for requesting a new agent! Before submitting, please check if the agent is already supported.
|
|
10
10
|
|
|
11
|
-
**Currently supported agents**: Amp, Antigravity, Auggie CLI, Claude Code, Cline, CodeBuddy, Codex CLI, Cursor, Devin for Terminal, Factory Droid, Firebender, Forge, Gemini CLI, GitHub Copilot, Goose, Grok Build, Hermes Agent, IBM Bob, Junie, Kilo Code, Kimi Code, Kiro CLI, Lingma, Mistral Vibe, Oh My Pi, opencode, Pi Coding Agent, Qoder CLI, Qwen Code, RovoDev ACLI, SHAI, Tabnine CLI, Trae, ZCode, Zed
|
|
11
|
+
**Currently supported agents**: Alquimia AI, Amp, Antigravity, Auggie CLI, Claude Code, Cline, CodeBuddy, Codex CLI, Cursor, Devin for Terminal, Factory Droid, Firebender, Forge, Gemini CLI, GitHub Copilot, Goose, Grok Build, Hermes Agent, IBM Bob, Junie, Kilo Code, Kimi Code, Kiro CLI, Lingma, Mistral Vibe, Oh My Pi, opencode, Pi Coding Agent, Qoder CLI, Qwen Code, RovoDev ACLI, SHAI, Tabnine CLI, Trae, ZCode, Zed
|
|
12
12
|
|
|
13
13
|
- type: input
|
|
14
14
|
id: agent-name
|
|
@@ -10,6 +10,20 @@ The toolkit supports multiple AI coding assistants, allowing teams to use their
|
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
+
## Quickstart — Add a New Integration in 5 Steps
|
|
14
|
+
|
|
15
|
+
If you are new to the codebase and want to add support for a new AI agent, here is the shortest path from zero to a working integration:
|
|
16
|
+
|
|
17
|
+
1. **Choose a base class** — most agents only need `MarkdownIntegration`. See [Choose a base class](#1-choose-a-base-class).
|
|
18
|
+
2. **Create a subpackage** — add `src/specify_cli/integrations/<package_dir>/__init__.py` with the required `key`, `config`, and `registrar_config` fields.
|
|
19
|
+
3. **Register it** — add one import and one `_register()` call in `src/specify_cli/integrations/__init__.py` (both alphabetical).
|
|
20
|
+
4. **Write a test file** — create `tests/integrations/test_integration_<key>.py` (hyphens in the key become underscores in the filename).
|
|
21
|
+
5. **Run and verify** — use `specify init --integration <key>` to exercise the full install/uninstall cycle.
|
|
22
|
+
|
|
23
|
+
Each step is expanded under [Adding a New Integration](#adding-a-new-integration). Note that agent **context files** (`CLAUDE.md`, `AGENTS.md`, …) are **not** handled by the integration — that is owned by the opt-in `agent-context` extension; see [Context file behavior](#4-context-file-behavior).
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
13
27
|
## Integration Architecture
|
|
14
28
|
|
|
15
29
|
Each AI agent is a self-contained **integration subpackage** under `src/specify_cli/integrations/<key>/`. The subpackage exposes a single class that declares all metadata and inherits setup/teardown logic from a base class. Built-in integrations are then instantiated and added to the global `INTEGRATION_REGISTRY` by `src/specify_cli/integrations/__init__.py` via `_register_builtins()`.
|
|
@@ -34,6 +48,30 @@ The registry is the **single source of truth for Python integration metadata**.
|
|
|
34
48
|
|
|
35
49
|
---
|
|
36
50
|
|
|
51
|
+
## IntegrationManifest — File Tracking
|
|
52
|
+
|
|
53
|
+
`manifest.py` provides the `IntegrationManifest` class, which records every file an integration installs. This record is what makes uninstall reliable and safe.
|
|
54
|
+
|
|
55
|
+
### How it works
|
|
56
|
+
|
|
57
|
+
`setup()` receives an `IntegrationManifest` and writes files through it rather than touching the filesystem directly:
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
# Produce a new file and record its hash for later verification.
|
|
61
|
+
manifest.record_file("commands/speckit.plan.md", processed_content)
|
|
62
|
+
|
|
63
|
+
# Adopt a pre-existing file the integration is now responsible for.
|
|
64
|
+
manifest.record_existing(".vscode/settings.json")
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
The manifest is persisted at `.specify/integrations/<key>.manifest.json` (one per integration, keyed by `key`) and stores a SHA-256 hash per file. When the user runs `specify integration uninstall <key>`, `teardown()` delegates to `manifest.uninstall()`, which removes only files whose current hash still matches the recorded value — so files the user later edited by hand are skipped, not clobbered (use `specify integration uninstall <key> --force` to remove modified tracked files anyway).
|
|
68
|
+
|
|
69
|
+
### Why this matters
|
|
70
|
+
|
|
71
|
+
Without hash-tracked manifests, uninstall would either remove files it should not (destructive) or leave orphans behind (messy). If you write a custom `setup()`, route **every** file you create through `manifest.record_file(...)` (or `record_existing(...)` for files you adopt) so uninstall can reason about them.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
37
75
|
## Adding a New Integration
|
|
38
76
|
|
|
39
77
|
### 1. Choose a base class
|
|
@@ -511,4 +549,54 @@ Disclosure is **continuous**, not a one-time event. A single AI-disclosure parag
|
|
|
511
549
|
|
|
512
550
|
---
|
|
513
551
|
|
|
552
|
+
## Error Handling and Debugging
|
|
553
|
+
|
|
554
|
+
### Common Errors and Fixes
|
|
555
|
+
|
|
556
|
+
| Symptom | Likely Cause | Fix |
|
|
557
|
+
|---|---|---|
|
|
558
|
+
| `Integration '<key>' not found` | Missing `_register()` call | Add `_register(<Name>Integration())` inside `_register_builtins()` |
|
|
559
|
+
| `NameError: name '<Name>Integration' is not defined` at startup | Missing import | Add `from .<package_dir> import <Name>Integration` inside `_register_builtins()` |
|
|
560
|
+
| CLI check fails for a `requires_cli: True` agent | `key` does not match the executable name | Set `key` to the exact name `shutil.which(key)` must resolve (e.g. `"cursor-agent"`, not `"cursor"`) |
|
|
561
|
+
| Command files have the wrong argument syntax | Wrong `args` value in `registrar_config` | Use `$ARGUMENTS` for Markdown agents, `{{args}}` for TOML/YAML agents, or the agent's custom placeholder |
|
|
562
|
+
| `ModuleNotFoundError` on a brand-new subpackage under pytest only | Ambient interpreter with a stale editable `.pth` | Run inside this tree's own venv (see Common Pitfall 6) |
|
|
563
|
+
| Uninstall leaves files behind, or skips files you expected removed | Files not recorded via the manifest, or their hash changed after install | Route every created file through `manifest.record_file(...)`; user-edited files are intentionally skipped unless `force=True` |
|
|
564
|
+
| Context file (`CLAUDE.md`, etc.) not updated | Expecting the CLI to manage it | Context files are owned by the opt-in `agent-context` extension, not the integration — see [Context file behavior](#4-context-file-behavior) |
|
|
565
|
+
|
|
566
|
+
### Debugging Tips
|
|
567
|
+
|
|
568
|
+
**Inspect the manifest** to see what an installed integration tracks:
|
|
569
|
+
|
|
570
|
+
```bash
|
|
571
|
+
cat .specify/integrations/<key>.manifest.json
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
**Verify a CLI tool is detected** before debugging a `requires_cli` agent:
|
|
575
|
+
|
|
576
|
+
```bash
|
|
577
|
+
which <key> # Should print the executable path if installed
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
**Verify the installed output structure** after `specify init`:
|
|
581
|
+
|
|
582
|
+
```bash
|
|
583
|
+
find my-project/<folder> -type f
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
---
|
|
587
|
+
|
|
588
|
+
## Contribution Checklist
|
|
589
|
+
|
|
590
|
+
Before opening or merging an integration PR, confirm the following:
|
|
591
|
+
|
|
592
|
+
- [ ] Added the integration subpackage under `src/specify_cli/integrations/<package_dir>/`.
|
|
593
|
+
- [ ] Registered it (import **and** `_register()`) in `src/specify_cli/integrations/__init__.py`, both alphabetical.
|
|
594
|
+
- [ ] Added or updated tests in `tests/integrations/test_integration_<key>.py`.
|
|
595
|
+
- [ ] Verified the install/uninstall flow with `specify init --integration <key>`.
|
|
596
|
+
- [ ] Did **not** add `context_file` handling to the CLI (that belongs to the `agent-context` extension).
|
|
597
|
+
- [ ] Updated devcontainer files if the agent needs a VS Code extension or CLI install step.
|
|
598
|
+
- [ ] Updated this guide or other relevant docs if the integration has special setup or limitations.
|
|
599
|
+
|
|
600
|
+
---
|
|
601
|
+
|
|
514
602
|
*This documentation should be updated whenever new integrations are added to maintain accuracy and completeness.*
|
|
@@ -2,6 +2,37 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- insert new changelog below this comment -->
|
|
4
4
|
|
|
5
|
+
## [0.14.3] - 2026-07-28
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Update Intake Authoring Governance preset to v0.3.0 (#3788)
|
|
10
|
+
- fix(copilot): honor preset command template overrides (#3592)
|
|
11
|
+
- clarify: require real interrogatives, ban topic-label questions (#3745)
|
|
12
|
+
- feat: Add Alquimia AI integration (#2734)
|
|
13
|
+
- harden: secure extension and preset archive downloads (#3141)
|
|
14
|
+
- fix: correct Optional type annotation for context_note parameter (#3765)
|
|
15
|
+
- Update AGENTS.md (#2626)
|
|
16
|
+
- fix(extensions): tolerate non-string catalog name in display-name lookup (#3747)
|
|
17
|
+
- fix(presets): coerce non-string catalog tags before joining (#3743)
|
|
18
|
+
- fix: register extensions for the active integration only (#3459)
|
|
19
|
+
- fix(extensions): tolerate non-string tags in catalog search (#3746)
|
|
20
|
+
- fix(extensions): hyphenate command names in 'extension info' listing (#3744)
|
|
21
|
+
- fix(workflows): escape remaining untrusted fields in `workflow info` (#3731)
|
|
22
|
+
- fix(extensions): guard non-numeric catalog downloads in search/info rendering (#3710)
|
|
23
|
+
- fix(agent-context): apply default markers when config markers are blank (bash) (#3736)
|
|
24
|
+
- fix: escape Rich markup in catalog list output (#3738)
|
|
25
|
+
- fix(workflows): guard non-mapping 'workflow:' block in WorkflowDefinition (#3694)
|
|
26
|
+
- fix(bundler): reject unsupported schema_version in _merge_config (align readers) (#3711)
|
|
27
|
+
- Update Linear Weave extension to v1.0.1 (#3762)
|
|
28
|
+
- Add Intake Sequencing Governance preset to community catalog (#3761)
|
|
29
|
+
- Update Quality Gates (Enforcement Layer) extension to v0.3.3 (#3760)
|
|
30
|
+
- Update Verify Review Ship extension to v0.4.1 (#3759)
|
|
31
|
+
- fix(agent-context): discover nested plans in Python port mtime fallback (#3734)
|
|
32
|
+
- fix(extensions): make shipped scripts executable after install (#3723)
|
|
33
|
+
- docs(assess): clarify the pipeline works on an empty project (#3732)
|
|
34
|
+
- chore: release 0.14.2, begin 0.14.3.dev0 development (#3730)
|
|
35
|
+
|
|
5
36
|
## [0.14.2] - 2026-07-24
|
|
6
37
|
|
|
7
38
|
### Changed
|
|
@@ -159,7 +159,7 @@ The following community-contributed extensions are available in [`catalog.commun
|
|
|
159
159
|
| Token Economy | Token routing, measured savings, and context audit workflows | `process` | Read+Write | [spec-kit-token-economy](https://github.com/formin/spec-kit-token-economy) |
|
|
160
160
|
| V-Model Extension Pack | Enforces V-Model paired generation of development specs and test specs with full traceability | `docs` | Read+Write | [spec-kit-v-model](https://github.com/leocamello/spec-kit-v-model) |
|
|
161
161
|
| Verify Extension | Post-implementation quality gate that validates implemented code against specification artifacts | `code` | Read-only | [spec-kit-verify](https://github.com/ismaelJimenez/spec-kit-verify) |
|
|
162
|
-
| Verify Review Ship |
|
|
162
|
+
| Verify Review Ship | Post-convergence operational verification, technical review, learning governance, and transactional delivery. | `process` | Read+Write | [spec-kit-verify-review-ship](https://github.com/cadugevaerd/spec-kit-verify-review-ship) |
|
|
163
163
|
| Verify Tasks Extension | Detect phantom completions: tasks marked [X] in tasks.md with no real implementation | `code` | Read-only | [spec-kit-verify-tasks](https://github.com/datastone-inc/spec-kit-verify-tasks) |
|
|
164
164
|
| Version Guard | Verify tech stack versions against live npm registries before planning and implementation | `process` | Read-only | [spec-kit-version-guard](https://github.com/KevinBrown5280/spec-kit-version-guard) |
|
|
165
165
|
| What-if Analysis | Preview the downstream impact (complexity, effort, tasks, risks) of requirement changes before committing to them | `visibility` | Read-only | [spec-kit-whatif](https://github.com/DevAbdullah90/spec-kit-whatif) |
|
|
@@ -19,8 +19,9 @@ The following community-contributed presets customize how Spec Kit behaves — o
|
|
|
19
19
|
| Explicit Task Dependencies | Adds explicit `(depends on T###)` dependency declarations and an Execution Wave DAG to tasks.md for parallel scheduling | 1 template, 1 command | — | [spec-kit-preset-explicit-task-dependencies](https://github.com/Quratulain-bilal/spec-kit-preset-explicit-task-dependencies) |
|
|
20
20
|
| Fiction Book Writing | It adapts the Spec-Driven Development workflow for storytelling to create books or audiobooks (with annotations) in 12 languages: features become story elements, specs become story briefs, plans become story structures, and tasks become scene-by-scene writing tasks. Supports single and multi-POV, all major plot structure frameworks, and two style modes: an author voice sample or humanized AI prose principles. Supports interactive elements like brainstorming, interview, roleplay, and extras like statistics, cover builder, illustration builder, and bio command. Export with templates for KDP, D2D, etc. | 26 templates, 34 commands, 2 scripts | — | [speckit-preset-fiction-book-writing](https://github.com/adaumann/speckit-preset-fiction-book-writing) |
|
|
21
21
|
| Game Narrative Writing | Preset for game narrative design and interactive storytelling. It adapts the Spec-Driven Development workflow for game narratives: features become story mechanics, specs become narrative briefs, plans become story maps, and tasks become dialogue and scene-writing tasks. Supports branching narratives, player agency systems, state machines, and interactive dialogue trees. | 37 templates, 34 commands, 5 scripts | — | [speckit-preset-game-narrative-writing](https://github.com/adaumann/speckit-preset-game-narrative-writing) |
|
|
22
|
-
| Intake Authoring Governance | Governs traceable intake CRUD
|
|
22
|
+
| Intake Authoring Governance | Governs traceable intake CRUD and language-aware requirements collections with atomic migrations, rollback evidence, and safe series authoring. | 12 templates, 5 commands, 7 scripts | — | [spec-kit-preset-intake-authoring-governance](https://github.com/hindermath/spec-kit-preset-intake-authoring-governance) |
|
|
23
23
|
| Intake Review Governance | Reviews single, series, and campaign intake files before Spec Kit execution and binds accepted outcomes to normalized content hashes. | 8 templates, 3 commands, 2 scripts | — | [spec-kit-preset-intake-review-governance](https://github.com/hindermath/spec-kit-preset-intake-review-governance) |
|
|
24
|
+
| Intake Sequencing Governance | Manages traceable intake-series order, typed dependencies, lifecycle, and safe next-candidate selection without executing downstream workflows. | 10 templates, 6 commands, 5 scripts | — | [spec-kit-preset-intake-sequencing-governance](https://github.com/hindermath/spec-kit-preset-intake-sequencing-governance) |
|
|
24
25
|
| iSAQB Architecture Governance | Adds iSAQB/CPSA-F and arc42 architecture governance with audit-ready evidence for goals, views, resumability, partial-failure scenarios, ADRs, risks, and technical debt. | 13 templates, 3 commands | — | [spec-kit-preset-isaqb-architecture-governance](https://github.com/hindermath/spec-kit-preset-isaqb-architecture-governance) |
|
|
25
26
|
| Jira Issue Tracking | Overrides `speckit.taskstoissues` to create Jira epics, stories, and tasks instead of GitHub Issues via Atlassian MCP tools | 1 command | — | [spec-kit-preset-jira](https://github.com/luno/spec-kit-preset-jira) |
|
|
26
27
|
| Model Driven Engineering | Focuses on streamlined commands, app repository support, cross-spec support, and capability-aware project memory for model-driven engineering workflows | 6 templates, 11 commands | MDE extension | [spec-kit-preset-mde](https://github.com/AI-MDE/spec-kit-preset-mde) |
|
|
@@ -6,6 +6,7 @@ The Specify CLI supports a wide range of AI coding agents. When you run `specify
|
|
|
6
6
|
|
|
7
7
|
| Agent | Key | Notes |
|
|
8
8
|
| ------------------------------------------------------------------------------------ | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
|
9
|
+
| [Alquimia AI](https://docs.alquimia.ai) | `alquimia` | Skills-based integration; installs skills into `.alquimia/skills` and invokes them as `/speckit-<command>` |
|
|
9
10
|
| [Amp](https://ampcode.com/) | `amp` | |
|
|
10
11
|
| [Antigravity (agy)](https://antigravity.google/) | `agy` | Skills-based integration; skills are installed automatically |
|
|
11
12
|
| [Auggie CLI](https://docs.augmentcode.com/cli/overview) | `auggie` | |
|
|
@@ -94,6 +95,8 @@ Installs the specified integration into the current project. If another integrat
|
|
|
94
95
|
|
|
95
96
|
Installing an additional integration does not change the default integration. Use `specify integration use <key>` to change the default.
|
|
96
97
|
|
|
98
|
+
Installed extensions and presets are not registered for a non-default integration at install time — they follow the currently active (default) integration only. `specify integration use <key>` (or `switch <key>`) is what rescaffolds them for the newly active integration.
|
|
99
|
+
|
|
97
100
|
> **Note:** All integration management commands require a project already initialized with `specify init`. To start a new project with a specific agent, use `specify init <project> --integration <key>` instead.
|
|
98
101
|
|
|
99
102
|
**Version note:** Controlled multi-install support was introduced in Spec Kit 0.8.5. If `specify integration install <key>` says another integration is already installed and only suggests `switch` or `uninstall`, check your local CLI with `specify version` and upgrade it. Running a one-shot command such as `uvx --from git+https://github.com/github/spec-kit.git specify ...` uses a temporary copy for that command only; it does not update the persistent `specify` executable on your `PATH`.
|
|
@@ -127,7 +130,7 @@ specify integration switch <key>
|
|
|
127
130
|
| `--refresh-shared-infra` | Also overwrite shared infrastructure files even if you customized them (otherwise customizations are preserved) |
|
|
128
131
|
| `--integration-options` | Options for the target integration when it is not already installed |
|
|
129
132
|
|
|
130
|
-
If the target integration is not already installed, equivalent to running `uninstall` followed by `install` in a single step. In this mode, `--force` controls whether modified files from the removed integration are deleted. If the target integration is already installed, `switch` only changes the default integration, like `use`; in this mode, `--force` controls whether managed shared templates are overwritten while the default changes. `--integration-options` is rejected for already-installed targets because changing integration options requires reinstalling managed files; run `upgrade <key> --integration-options ...` first, then `use <key>`.
|
|
133
|
+
If the target integration is not already installed, equivalent to running `uninstall` followed by `install` in a single step. In this mode, `--force` controls whether modified files from the removed integration are deleted. If the target integration is already installed, `switch` only changes the default integration, like `use`; in this mode, `--force` controls whether managed shared templates are overwritten while the default changes. `--integration-options` is rejected for already-installed targets because changing integration options requires reinstalling managed files; run `upgrade <key> --integration-options ...` first, then `use <key>`. Like `use`, `switch` rescaffolds installed extensions and presets for the target integration once it becomes the default.
|
|
131
134
|
|
|
132
135
|
## Use an Installed Integration
|
|
133
136
|
|
|
@@ -141,6 +144,8 @@ specify integration use <key>
|
|
|
141
144
|
|
|
142
145
|
Sets the default integration without uninstalling any other installed integrations. This also refreshes managed shared templates so command references match the new default integration's invocation style. Modified or untracked shared templates are preserved unless `--force` is used.
|
|
143
146
|
|
|
147
|
+
`use` is also the activation point for installed extensions and presets: it re-registers every enabled extension's and preset's command overrides (and skills, for skills-mode agents) for the newly active integration, so artifacts installed while a different integration was active are rescaffolded here rather than at install time.
|
|
148
|
+
|
|
144
149
|
## Upgrade an Integration
|
|
145
150
|
|
|
146
151
|
```bash
|
|
@@ -155,6 +160,10 @@ specify integration upgrade [<key>]
|
|
|
155
160
|
|
|
156
161
|
Reinstalls an installed integration with updated templates and commands (e.g., after upgrading Spec Kit). Defaults to the default integration; if a key is provided, it must be one of the installed integrations. Detects locally modified files and blocks the upgrade unless `--force` is used. Stale files from the previous install that are no longer needed are removed automatically. Shared templates stay aligned with the default integration even when upgrading a non-default integration.
|
|
157
162
|
|
|
163
|
+
Enabled extensions and presets are re-registered only when upgrading the currently active (default) integration. A non-default upgrade still refreshes that integration's core commands, but does not re-register its extension or preset layers — `use`/`switch` that integration afterward to rescaffold them.
|
|
164
|
+
|
|
165
|
+
If an upgrade would change an integration between command and skills layouts while preset artifacts are registered for it, the upgrade is rejected before changing files. Remove the affected presets, run the layout-changing upgrade, then reinstall them.
|
|
166
|
+
|
|
158
167
|
## Report Integration Status
|
|
159
168
|
|
|
160
169
|
```bash
|
|
@@ -263,6 +272,7 @@ The currently declared multi-install safe integrations are:
|
|
|
263
272
|
|
|
264
273
|
| Key | Command directory |
|
|
265
274
|
| --- | ----------------- |
|
|
275
|
+
| `alquimia` | `.alquimia/skills` |
|
|
266
276
|
| `auggie` | `.augment/commands` |
|
|
267
277
|
| `claude` | `.claude/skills` |
|
|
268
278
|
| `cline` | `.clinerules/workflows` |
|
|
@@ -303,3 +313,7 @@ CLI-based integrations (like Claude Code, Gemini CLI) require the tool to be ins
|
|
|
303
313
|
### When should I use `upgrade` vs `switch`?
|
|
304
314
|
|
|
305
315
|
Use `upgrade` when you've upgraded Spec Kit and want to refresh an installed integration's managed files. Use `switch` when you want to replace the current default with another integration; if the target is already installed, `switch` behaves like `use`.
|
|
316
|
+
|
|
317
|
+
### Do extensions and presets I install apply to every installed integration?
|
|
318
|
+
|
|
319
|
+
No. Extensions (`specify extension add`) and presets (`specify preset add`) register their command overrides for the currently active (default) integration only, even if other integrations are installed. A non-default integration does not receive those artifacts until it becomes the default: `specify integration use <key>` (or `switch <key>`) rescaffolds every enabled extension and preset for the newly active integration. `specify integration upgrade` follows the same rule — it only re-registers extensions and presets when upgrading the active integration.
|
|
@@ -139,7 +139,7 @@ catalogs:
|
|
|
139
139
|
|
|
140
140
|
Presets can provide command files, template files (like `plan-template.md`), and script files. Each file name is evaluated independently against the priority stack, so different files can come from different layers.
|
|
141
141
|
|
|
142
|
-
Templates and scripts are looked up from the stack when Spec Kit needs them. Commands use the same stack for replacement and composition, but are materialized into
|
|
142
|
+
Templates and scripts are looked up from the stack when Spec Kit needs them. Commands use the same stack for replacement and composition, but are materialized into the active integration's directory only, instead of being re-resolved by agents or written to every detected agent directory (#2948). During preset install, Spec Kit registers command files for the preset being installed against the currently active integration; post-install and post-removal reconciliation then recomputes and writes the effective command content for affected command names based on the active stack. Install and rescaffold remain active-only, but removal may also update previously targeted inactive directories recorded by the removed preset to restore the surviving command or skill layer. A non-active installed integration does not otherwise receive these command files until it becomes the default — `specify integration use <key>` (or `switch <key>`) rescaffolds enabled presets for the newly active integration. Agents do not re-resolve the stack each time they run a command.
|
|
143
143
|
|
|
144
144
|
By default, files use a **replace** strategy: the first match in the priority stack wins and is used entirely. Templates and commands can also use composition strategies: **prepend** places preset content before lower-priority content, **append** places it after lower-priority content, and **wrap** replaces `{CORE_TEMPLATE}` with lower-priority content. Scripts support **replace** and **wrap**; script wrappers use `$CORE_SCRIPT` as the placeholder.
|
|
145
145
|
|
{specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/agent-context/agent-context-defaults.json
RENAMED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
"_comment": "Default coding agent context file per integration, owned by the agent-context extension. Used to self-seed agent-context-config.yml when it declares no context_file/context_files. Keyed by the Spec Kit integration key recorded in .specify/init-options.json. This mapping is independent of the Specify CLI by design.",
|
|
3
3
|
"agents": {
|
|
4
4
|
"agy": "AGENTS.md",
|
|
5
|
+
"alquimia": "ALQUIMIA.md",
|
|
5
6
|
"amp": "AGENTS.md",
|
|
6
7
|
"auggie": ".augment/rules/specify-rules.md",
|
|
7
8
|
"bob": "AGENTS.md",
|
|
@@ -176,13 +176,18 @@ _opts_lines=()
|
|
|
176
176
|
while IFS= read -r _line || [[ -n "$_line" ]]; do
|
|
177
177
|
_opts_lines+=("$_line")
|
|
178
178
|
done < <(printf '%s\n' "$_raw_opts")
|
|
179
|
-
if (( ${#_opts_lines[@]} <
|
|
180
|
-
echo "agent-context: malformed config parser output; expected
|
|
179
|
+
if (( ${#_opts_lines[@]} < 1 )); then
|
|
180
|
+
echo "agent-context: malformed config parser output; expected at least the context_files line, got ${#_opts_lines[@]}; skipping update." >&2
|
|
181
181
|
exit 0
|
|
182
182
|
fi
|
|
183
|
+
# The marker lines may be absent: the $(...) capture above strips trailing
|
|
184
|
+
# newlines, so blank markers (the config omitting context_markers and relying on
|
|
185
|
+
# defaults) collapse the 3-line output to fewer lines. Default them to empty here
|
|
186
|
+
# and let the DEFAULT_START/END substitution below fill them in, matching the
|
|
187
|
+
# Python and PowerShell ports.
|
|
183
188
|
CONTEXT_FILES_JSON="${_opts_lines[0]}"
|
|
184
|
-
MARKER_START="${_opts_lines[1]}"
|
|
185
|
-
MARKER_END="${_opts_lines[2]}"
|
|
189
|
+
MARKER_START="${_opts_lines[1]:-}"
|
|
190
|
+
MARKER_END="${_opts_lines[2]:-}"
|
|
186
191
|
|
|
187
192
|
if ! _context_files_raw="$("$_python" - "$CONTEXT_FILES_JSON" <<'PY'
|
|
188
193
|
import json
|
|
@@ -11,8 +11,9 @@ Usage: update_agent_context.py [plan_path]
|
|
|
11
11
|
|
|
12
12
|
When ``plan_path`` is omitted, the script derives it from
|
|
13
13
|
``.specify/feature.json`` (written by /speckit-specify). Falls back to the most
|
|
14
|
-
recently modified ``
|
|
15
|
-
plan
|
|
14
|
+
recently modified ``plan.md`` anywhere under ``specs/`` (including nested scoped
|
|
15
|
+
layouts such as ``specs/<scope>/<feature>/plan.md``) only when feature.json is
|
|
16
|
+
absent or its plan does not exist yet.
|
|
16
17
|
"""
|
|
17
18
|
|
|
18
19
|
from __future__ import annotations
|
|
@@ -173,7 +174,7 @@ def _resolve_plan_path(project_root: str) -> str:
|
|
|
173
174
|
if not plan_path:
|
|
174
175
|
root = Path(project_root).resolve()
|
|
175
176
|
plans = sorted(
|
|
176
|
-
(root / "specs").
|
|
177
|
+
(root / "specs").rglob("plan.md"),
|
|
177
178
|
key=lambda p: p.stat().st_mtime,
|
|
178
179
|
reverse=True,
|
|
179
180
|
)
|
|
@@ -6,6 +6,8 @@ Discovery answers *"is this worth building?"* Delivery answers *"how do we build
|
|
|
6
6
|
|
|
7
7
|
## Overview
|
|
8
8
|
|
|
9
|
+
`assess` runs inside an initialized Spec Kit project (it writes assessments under `.specify/assessments/`), but that project can be **completely empty of source code** — a freshly initialized project with no code works just as well as an established codebase. The input is just an idea: pasted text, a URL, or a ticket need no existing code, while a codebase pointer lets you assess an idea for code that already exists. Neither starting point is more "correct" than the other.
|
|
10
|
+
|
|
9
11
|
Each idea lives in its own directory under `.specify/assessments/<slug>/`, with one Markdown artifact per stage:
|
|
10
12
|
|
|
11
13
|
```
|
{specify_cli-0.14.2 → specify_cli-0.14.3}/extensions/assess/commands/speckit.assess.intake.md
RENAMED
|
@@ -21,6 +21,8 @@ The user input is the idea and (optionally) a slug. Treat it as one of:
|
|
|
21
21
|
3. **A codebase pointer** — phrasing like "an idea for this repo" or a path. Read enough of the repository to record what the idea relates to.
|
|
22
22
|
4. **A mix** of the above.
|
|
23
23
|
|
|
24
|
+
There is **no requirement for existing source code**: within an initialized Spec Kit project, intake works just as well when the project is empty of code as when it already has a codebase. Pasted text or a URL (options 1–2) need no existing codebase; a codebase pointer (option 3) targets existing code. Both are equally valid.
|
|
25
|
+
|
|
24
26
|
If the input is empty, ask the user for the idea (interactive), or stop with a note that there is nothing to intake (automated).
|
|
25
27
|
|
|
26
28
|
## Slug Resolution
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "1.0",
|
|
3
|
-
"updated_at": "2026-07-
|
|
3
|
+
"updated_at": "2026-07-27T00:00:00Z",
|
|
4
4
|
"catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/extensions/catalog.community.json",
|
|
5
5
|
"extensions": {
|
|
6
6
|
"aide": {
|
|
@@ -1619,8 +1619,8 @@
|
|
|
1619
1619
|
"id": "gates",
|
|
1620
1620
|
"description": "Deterministic quality enforcement for Spec Kit across agent hooks, git checks, and CI pipelines with one policy file and one verify entrypoint for identical results at every boundary.",
|
|
1621
1621
|
"author": "schwichtgit",
|
|
1622
|
-
"version": "0.3.
|
|
1623
|
-
"download_url": "https://github.com/schwichtgit/spec-gates/releases/download/v0.3.
|
|
1622
|
+
"version": "0.3.3",
|
|
1623
|
+
"download_url": "https://github.com/schwichtgit/spec-gates/releases/download/v0.3.3/gates-0.3.3.zip",
|
|
1624
1624
|
"repository": "https://github.com/schwichtgit/spec-gates",
|
|
1625
1625
|
"homepage": "https://github.com/schwichtgit/spec-gates",
|
|
1626
1626
|
"documentation": "https://github.com/schwichtgit/spec-gates/blob/main/docs/how-it-works.md",
|
|
@@ -1664,7 +1664,7 @@
|
|
|
1664
1664
|
"downloads": 0,
|
|
1665
1665
|
"stars": 0,
|
|
1666
1666
|
"created_at": "2026-07-09T00:00:00Z",
|
|
1667
|
-
"updated_at": "2026-07-
|
|
1667
|
+
"updated_at": "2026-07-27T00:00:00Z"
|
|
1668
1668
|
},
|
|
1669
1669
|
"github-issues": {
|
|
1670
1670
|
"name": "GitHub Issues Integration 1",
|
|
@@ -2075,11 +2075,11 @@
|
|
|
2075
2075
|
"id": "linear-weave",
|
|
2076
2076
|
"description": "Weave Spec Kit into Linear: pull requirements, mirror tasks.md into sub-issues, sync statuses.",
|
|
2077
2077
|
"author": "Tony Woodhouse",
|
|
2078
|
-
"version": "1.0.
|
|
2079
|
-
"download_url": "https://github.com/tonydwoodhouse/spec-kit-linear-weave/archive/refs/tags/v1.0.
|
|
2078
|
+
"version": "1.0.1",
|
|
2079
|
+
"download_url": "https://github.com/tonydwoodhouse/spec-kit-linear-weave/archive/refs/tags/v1.0.1.zip",
|
|
2080
2080
|
"repository": "https://github.com/tonydwoodhouse/spec-kit-linear-weave",
|
|
2081
2081
|
"homepage": "https://github.com/tonydwoodhouse/spec-kit-linear-weave",
|
|
2082
|
-
"documentation": "https://github.com/tonydwoodhouse/spec-kit-linear-weave
|
|
2082
|
+
"documentation": "https://github.com/tonydwoodhouse/spec-kit-linear-weave/blob/main/README.md",
|
|
2083
2083
|
"changelog": "https://github.com/tonydwoodhouse/spec-kit-linear-weave/blob/main/CHANGELOG.md",
|
|
2084
2084
|
"license": "MIT",
|
|
2085
2085
|
"category": "integration",
|
|
@@ -2102,7 +2102,7 @@
|
|
|
2102
2102
|
"downloads": 0,
|
|
2103
2103
|
"stars": 0,
|
|
2104
2104
|
"created_at": "2026-07-21T00:00:00Z",
|
|
2105
|
-
"updated_at": "2026-07-
|
|
2105
|
+
"updated_at": "2026-07-27T00:00:00Z"
|
|
2106
2106
|
},
|
|
2107
2107
|
"loop": {
|
|
2108
2108
|
"name": "Loop Engineering",
|
|
@@ -4818,11 +4818,11 @@
|
|
|
4818
4818
|
"verify-review-ship": {
|
|
4819
4819
|
"name": "Verify Review Ship",
|
|
4820
4820
|
"id": "verify-review-ship",
|
|
4821
|
-
"description": "
|
|
4821
|
+
"description": "Post-convergence operational verification, technical review, learning governance, and transactional delivery.",
|
|
4822
4822
|
"author": "Carlos Eduardo Gevaerd Araujo",
|
|
4823
|
-
"version": "0.
|
|
4824
|
-
"download_url": "https://github.com/cadugevaerd/spec-kit-verify-review-ship/archive/refs/tags/v0.
|
|
4825
|
-
"sha256": "
|
|
4823
|
+
"version": "0.4.1",
|
|
4824
|
+
"download_url": "https://github.com/cadugevaerd/spec-kit-verify-review-ship/archive/refs/tags/v0.4.1.zip",
|
|
4825
|
+
"sha256": "cfa89b405fcf4857745653e923dfab92f101fbdda15e1e8757ad9f2ea55ae5e2",
|
|
4826
4826
|
"repository": "https://github.com/cadugevaerd/spec-kit-verify-review-ship",
|
|
4827
4827
|
"homepage": "https://github.com/cadugevaerd/spec-kit-verify-review-ship",
|
|
4828
4828
|
"documentation": "https://github.com/cadugevaerd/spec-kit-verify-review-ship/blob/main/README.md",
|
|
@@ -4831,24 +4831,27 @@
|
|
|
4831
4831
|
"category": "process",
|
|
4832
4832
|
"effect": "read-write",
|
|
4833
4833
|
"requires": {
|
|
4834
|
-
"speckit_version": ">=0.
|
|
4834
|
+
"speckit_version": ">=0.11.2"
|
|
4835
4835
|
},
|
|
4836
4836
|
"provides": {
|
|
4837
4837
|
"commands": 3,
|
|
4838
|
-
"hooks":
|
|
4838
|
+
"hooks": 0
|
|
4839
4839
|
},
|
|
4840
4840
|
"tags": [
|
|
4841
4841
|
"quality",
|
|
4842
4842
|
"review",
|
|
4843
4843
|
"shipping",
|
|
4844
4844
|
"merge",
|
|
4845
|
-
"
|
|
4845
|
+
"cleanup",
|
|
4846
|
+
"learning",
|
|
4847
|
+
"governance",
|
|
4848
|
+
"agent-skills"
|
|
4846
4849
|
],
|
|
4847
4850
|
"verified": false,
|
|
4848
4851
|
"downloads": 0,
|
|
4849
4852
|
"stars": 0,
|
|
4850
4853
|
"created_at": "2026-07-10T00:00:00Z",
|
|
4851
|
-
"updated_at": "2026-07-
|
|
4854
|
+
"updated_at": "2026-07-27T00:00:00Z"
|
|
4852
4855
|
},
|
|
4853
4856
|
"verify-tasks": {
|
|
4854
4857
|
"name": "Verify Tasks Extension",
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "1.0",
|
|
3
|
-
"updated_at": "2026-07-
|
|
3
|
+
"updated_at": "2026-07-27T00:00:00Z",
|
|
4
4
|
"catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/integrations/catalog.json",
|
|
5
5
|
"integrations": {
|
|
6
|
+
"alquimia": {
|
|
7
|
+
"id": "alquimia",
|
|
8
|
+
"name": "Alquimia AI",
|
|
9
|
+
"version": "1.0.0",
|
|
10
|
+
"description": "Alquimia AI CLI integration",
|
|
11
|
+
"author": "spec-kit-core",
|
|
12
|
+
"repository": "https://github.com/github/spec-kit",
|
|
13
|
+
"tags": ["alquimia"]
|
|
14
|
+
},
|
|
6
15
|
"claude": {
|
|
7
16
|
"id": "claude",
|
|
8
17
|
"name": "Claude Code",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "1.0",
|
|
3
|
-
"updated_at": "2026-07-
|
|
3
|
+
"updated_at": "2026-07-28T00:00:00Z",
|
|
4
4
|
|
|
5
5
|
"catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/presets/catalog.community.json",
|
|
6
6
|
"presets": {
|
|
@@ -368,31 +368,31 @@
|
|
|
368
368
|
"intake-authoring-governance": {
|
|
369
369
|
"name": "Intake Authoring Governance",
|
|
370
370
|
"id": "intake-authoring-governance",
|
|
371
|
-
"version": "0.
|
|
372
|
-
"description": "Governs traceable intake CRUD
|
|
371
|
+
"version": "0.3.0",
|
|
372
|
+
"description": "Governs traceable intake CRUD and language-aware requirements collections with atomic migrations, rollback evidence, and safe series authoring.",
|
|
373
373
|
"author": "Thorsten Hindermann",
|
|
374
374
|
"repository": "https://github.com/hindermath/spec-kit-preset-intake-authoring-governance",
|
|
375
|
-
"download_url": "https://github.com/hindermath/spec-kit-preset-intake-authoring-governance/archive/refs/tags/v0.
|
|
375
|
+
"download_url": "https://github.com/hindermath/spec-kit-preset-intake-authoring-governance/archive/refs/tags/v0.3.0.zip",
|
|
376
376
|
"homepage": "https://github.com/hindermath/spec-kit-preset-intake-authoring-governance",
|
|
377
|
-
"documentation": "https://github.com/hindermath/spec-kit-preset-intake-authoring-governance/blob/v0.
|
|
377
|
+
"documentation": "https://github.com/hindermath/spec-kit-preset-intake-authoring-governance/blob/v0.3.0/README.md",
|
|
378
378
|
"license": "MIT",
|
|
379
379
|
"requires": {
|
|
380
380
|
"speckit_version": ">=0.8.3"
|
|
381
381
|
},
|
|
382
382
|
"provides": {
|
|
383
|
-
"templates":
|
|
383
|
+
"templates": 12,
|
|
384
384
|
"commands": 5,
|
|
385
|
-
"scripts":
|
|
385
|
+
"scripts": 7
|
|
386
386
|
},
|
|
387
387
|
"tags": [
|
|
388
388
|
"intake",
|
|
389
389
|
"authoring",
|
|
390
390
|
"governance",
|
|
391
|
-
"
|
|
392
|
-
"
|
|
391
|
+
"requirements",
|
|
392
|
+
"migration"
|
|
393
393
|
],
|
|
394
394
|
"created_at": "2026-07-22T00:00:00Z",
|
|
395
|
-
"updated_at": "2026-07-
|
|
395
|
+
"updated_at": "2026-07-28T00:00:00Z"
|
|
396
396
|
},
|
|
397
397
|
"intake-review-governance": {
|
|
398
398
|
"name": "Intake Review Governance",
|
|
@@ -423,6 +423,35 @@
|
|
|
423
423
|
"created_at": "2026-07-21T00:00:00Z",
|
|
424
424
|
"updated_at": "2026-07-24T00:00:00Z"
|
|
425
425
|
},
|
|
426
|
+
"intake-sequencing-governance": {
|
|
427
|
+
"name": "Intake Sequencing Governance",
|
|
428
|
+
"id": "intake-sequencing-governance",
|
|
429
|
+
"version": "0.1.0",
|
|
430
|
+
"description": "Manages traceable intake-series order, typed dependencies, lifecycle, and safe next-candidate selection without executing downstream workflows.",
|
|
431
|
+
"author": "Thorsten Hindermann",
|
|
432
|
+
"repository": "https://github.com/hindermath/spec-kit-preset-intake-sequencing-governance",
|
|
433
|
+
"download_url": "https://github.com/hindermath/spec-kit-preset-intake-sequencing-governance/archive/refs/tags/v0.1.0.zip",
|
|
434
|
+
"homepage": "https://github.com/hindermath/spec-kit-preset-intake-sequencing-governance",
|
|
435
|
+
"documentation": "https://github.com/hindermath/spec-kit-preset-intake-sequencing-governance/blob/v0.1.0/README.md",
|
|
436
|
+
"license": "MIT",
|
|
437
|
+
"requires": {
|
|
438
|
+
"speckit_version": ">=0.8.3"
|
|
439
|
+
},
|
|
440
|
+
"provides": {
|
|
441
|
+
"templates": 10,
|
|
442
|
+
"commands": 6,
|
|
443
|
+
"scripts": 5
|
|
444
|
+
},
|
|
445
|
+
"tags": [
|
|
446
|
+
"intake",
|
|
447
|
+
"sequencing",
|
|
448
|
+
"governance",
|
|
449
|
+
"dag",
|
|
450
|
+
"lifecycle"
|
|
451
|
+
],
|
|
452
|
+
"created_at": "2026-07-27T00:00:00Z",
|
|
453
|
+
"updated_at": "2026-07-27T00:00:00Z"
|
|
454
|
+
},
|
|
426
455
|
"isaqb-architecture-governance": {
|
|
427
456
|
"name": "iSAQB Architecture Governance",
|
|
428
457
|
"id": "isaqb-architecture-governance",
|