specify-cli 0.12.10__tar.gz → 0.12.12__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.12.10 → specify_cli-0.12.12}/.github/CODEOWNERS +0 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/ISSUE_TEMPLATE/agent_request.yml +1 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/ISSUE_TEMPLATE/extension_submission.yml +4 -4
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/ISSUE_TEMPLATE/preset_submission.yml +1 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/PULL_REQUEST_TEMPLATE.md +0 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/stale.yml +5 -5
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.markdownlint-cli2.jsonc +1 -1
- specify_cli-0.12.12/.pre-commit-config.yaml +12 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/CHANGELOG.md +30 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/LICENSE +0 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/PKG-INFO +1 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/.gitignore +0 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/community/extensions.md +3 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/reference/bundles.md +5 -4
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/reference/integrations.md +2 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/agent-context/commands/speckit.agent-context.update.md +2 -2
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/agent-context/scripts/bash/update-agent-context.sh +21 -9
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +5 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/catalog.community.json +109 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/catalog.json +1 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/selftest/commands/selftest.md +1 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/newsletters/2026-March.md +0 -2
- {specify_cli-0.12.10 → specify_cli-0.12.12}/pyproject.toml +1 -2
- {specify_cli-0.12.10 → specify_cli-0.12.12}/scripts/bash/check-prerequisites.sh +5 -5
- {specify_cli-0.12.10 → specify_cli-0.12.12}/scripts/bash/create-new-feature.sh +11 -11
- {specify_cli-0.12.10 → specify_cli-0.12.12}/scripts/bash/setup-plan.sh +7 -8
- {specify_cli-0.12.10 → specify_cli-0.12.12}/scripts/powershell/check-prerequisites.ps1 +10 -10
- {specify_cli-0.12.10 → specify_cli-0.12.12}/scripts/powershell/common.ps1 +1 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/scripts/powershell/setup-plan.ps1 +1 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/spec-kit.code-workspace +1 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/authentication/config.py +9 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/services/adapters.py +13 -3
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/catalogs.py +7 -3
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/commands/bundle/__init__.py +37 -23
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/extensions/__init__.py +20 -6
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/extensions/_commands.py +8 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/devin/__init__.py +1 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/forge/__init__.py +9 -9
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/presets/_commands.py +8 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/workflows/_commands.py +9 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/workflows/catalog.py +13 -5
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/workflows/engine.py +44 -6
- {specify_cli-0.12.10 → specify_cli-0.12.12}/templates/checklist-template.md +3 -3
- {specify_cli-0.12.10 → specify_cli-0.12.12}/templates/commands/clarify.md +1 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/templates/commands/constitution.md +1 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/templates/commands/implement.md +2 -2
- {specify_cli-0.12.10 → specify_cli-0.12.12}/templates/commands/plan.md +1 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/templates/commands/specify.md +15 -15
- {specify_cli-0.12.10 → specify_cli-0.12.12}/templates/commands/tasks.md +3 -3
- {specify_cli-0.12.10 → specify_cli-0.12.12}/templates/plan-template.md +1 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/templates/vscode-settings.json +0 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/contract/test_bundle_cli.py +29 -7
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/extensions/test_extension_agent_context.py +62 -2
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/hooks/TESTING.md +1 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integration/test_bundler_local_install.py +59 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_catalog.py +14 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_cursor_agent.py +0 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_devin.py +1 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_forge.py +19 -19
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_vibe.py +1 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_authentication.py +14 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_extension_registration.py +49 -49
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_extension_update_hardening.py +18 -18
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_extensions.py +89 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_merge.py +18 -18
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_presets.py +34 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_setup_tasks.py +98 -98
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_timestamp_branches.py +0 -1
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_workflows.py +242 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/unit/test_bundler_adapters.py +18 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.devcontainer/devcontainer.json +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.devcontainer/post-create.sh +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.editorconfig +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.gitattributes +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/ISSUE_TEMPLATE/bundle_submission.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/aw/actions-lock.json +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/dependabot.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/skills/add-community-extension/SKILL.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/RELEASE-PROCESS.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/add-community-extension.lock.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/add-community-extension.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/add-community-preset.lock.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/add-community-preset.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/bug-assess.lock.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/bug-assess.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/bug-fix.lock.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/bug-fix.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/bug-test.lock.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/bug-test.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/catalog-assign.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/codeql.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/docs.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/lint.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/publish-pypi.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/release-trigger.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/release.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.github/workflows/test.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.gitignore +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/.zenodo.json +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/AGENTS.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/CITATION.cff +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/CODE_OF_CONDUCT.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/CONTRIBUTING.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/DEVELOPMENT.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/README.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/SECURITY.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/SUPPORT.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/README.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/community/bundles.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/community/friends.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/community/overview.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/community/presets.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/community/walkthroughs.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/concepts/complex-features.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/concepts/sdd.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/concepts/spec-persistence.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/docfx.json +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/guides/evolving-specs.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/guides/monorepo.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/index.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/install/air-gapped.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/install/one-time.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/install/pipx.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/install/uv.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/installation.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/local-development.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/quickstart.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/reference/authentication.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/reference/core.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/reference/extensions.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/reference/overview.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/reference/presets.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/reference/workflows.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/template/public/main.css +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/toc.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/docs/upgrade.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/examples/bundles/business-analyst/README.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/examples/bundles/business-analyst/bundle.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/examples/bundles/developer/README.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/examples/bundles/developer/bundle.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/examples/bundles/product-manager/README.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/examples/bundles/product-manager/bundle.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/examples/bundles/security-researcher/README.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/examples/bundles/security-researcher/bundle.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/EXTENSION-API-REFERENCE.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/EXTENSION-PUBLISHING-GUIDE.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/EXTENSION-USER-GUIDE.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/README.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/agent-context/README.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/agent-context/agent-context-config.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/agent-context/agent-context-defaults.json +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/agent-context/extension.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/agent-context/scripts/python/update_agent_context.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/bug/README.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/bug/commands/speckit.bug.assess.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/bug/commands/speckit.bug.fix.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/bug/commands/speckit.bug.test.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/bug/extension.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/git/README.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/git/commands/speckit.git.commit.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/git/commands/speckit.git.feature.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/git/commands/speckit.git.initialize.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/git/commands/speckit.git.remote.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/git/commands/speckit.git.validate.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/git/config-template.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/git/extension.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/git/git-config.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/git/scripts/bash/auto-commit.sh +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/git/scripts/bash/git-common.sh +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/selftest/extension.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/template/.gitignore +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/template/CHANGELOG.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/template/EXAMPLE-README.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/template/LICENSE +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/template/README.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/template/commands/example.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/template/config-template.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/extensions/template/extension.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/integrations/CONTRIBUTING.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/integrations/README.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/integrations/catalog.community.json +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/integrations/catalog.json +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/media/bootstrap-claude-code.gif +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/media/logo_large.webp +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/media/logo_small.webp +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/media/spec-kit-video-header.jpg +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/media/specify_cli.gif +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/newsletters/2026-April.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/newsletters/2026-February.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/newsletters/2026-June.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/newsletters/2026-May.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/ARCHITECTURE.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/PUBLISHING.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/README.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/catalog.community.json +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/catalog.json +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/lean/README.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/lean/commands/speckit.constitution.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/lean/commands/speckit.implement.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/lean/commands/speckit.plan.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/lean/commands/speckit.specify.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/lean/commands/speckit.tasks.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/lean/preset.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/scaffold/README.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/scaffold/commands/speckit.specify.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/scaffold/preset.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/scaffold/templates/myext-template.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/scaffold/templates/spec-template.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/self-test/commands/speckit.specify.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/self-test/commands/speckit.wrap-test.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/self-test/preset.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/self-test/templates/agent-file-template.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/self-test/templates/checklist-template.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/self-test/templates/constitution-template.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/self-test/templates/plan-template.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/self-test/templates/spec-template.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/presets/self-test/templates/tasks-template.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/scripts/bash/common.sh +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/scripts/bash/setup-tasks.sh +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/scripts/powershell/create-new-feature.ps1 +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/scripts/powershell/setup-tasks.ps1 +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/scripts/python/check_prerequisites.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/scripts/python/common.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/spec-driven.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/_agent_config.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/_assets.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/_console.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/_github_http.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/_init_options.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/_invocation_style.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/_project.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/_toml_string.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/_utils.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/_version.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/agents.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/authentication/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/authentication/azure_devops.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/authentication/base.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/authentication/github.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/authentication/http.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/commands_impl/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/commands_impl/catalog_config.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/lib/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/lib/project.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/lib/versioning.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/lib/yamlio.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/models/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/models/catalog.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/models/manifest.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/models/records.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/services/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/services/catalog_stack.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/services/conflict.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/services/installer.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/services/packager.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/services/primitives.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/services/references.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/services/resolver.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/bundler/services/validator.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/commands/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/commands/init.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integration_runtime.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integration_scaffold.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integration_state.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integration_status.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/_commands.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/_helpers.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/_install_commands.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/_migrate_commands.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/_query_commands.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/_scaffold_commands.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/agy/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/amp/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/auggie/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/base.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/bob/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/catalog.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/claude/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/cline/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/codex/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/copilot/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/firebender/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/gemini/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/generic/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/goose/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/hermes/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/junie/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/kilocode/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/kimi/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/lingma/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/manifest.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/omp/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/opencode/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/pi/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/qwen/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/rovodev/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/shai/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/trae/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/vibe/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/zcode/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/integrations/zed/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/presets/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/shared_infra.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/workflows/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/workflows/base.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/workflows/expressions.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/workflows/steps/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/workflows/steps/command/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/workflows/steps/do_while/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/workflows/steps/fan_in/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/workflows/steps/fan_out/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/workflows/steps/gate/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/workflows/steps/if_then/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/workflows/steps/init/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/workflows/steps/prompt/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/workflows/steps/shell/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/workflows/steps/switch/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/src/specify_cli/workflows/steps/while_loop/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/templates/commands/analyze.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/templates/commands/checklist.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/templates/commands/converge.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/templates/commands/taskstoissues.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/templates/constitution-template.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/templates/spec-template.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/templates/tasks-template.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/auth_helpers.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/bundler_helpers.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/conftest.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/contract/test_catalog_schema.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/contract/test_manifest_schema.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/extensions/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/extensions/bug/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/extensions/bug/test_bug_extension.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/extensions/git/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/extensions/git/test_git_extension.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/extensions/test_agent_context_cli_free.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/extensions/test_update_agent_context_feature_json.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/extensions/test_update_agent_context_python_parity.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/hooks/plan.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/hooks/spec.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/hooks/tasks.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/http_helpers.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integration/test_bundler_catalog_stack.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integration/test_bundler_init_install.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integration/test_bundler_install_flow.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integration/test_bundler_offline.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integration/test_bundler_security_paths.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/__init__.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/conftest.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_base.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_cli.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_extra_args.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_home_isolation.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_agy.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_amp.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_auggie.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_base_markdown.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_base_skills.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_base_toml.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_base_yaml.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_bob.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_claude.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_cline.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_codebuddy.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_codex.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_copilot.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_firebender.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_gemini.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_generic.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_goose.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_hermes.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_junie.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_kilocode.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_kimi.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_kiro_cli.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_lingma.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_omp.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_opencode.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_pi.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_qodercli.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_qwen.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_rovodev.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_scaffold.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_shai.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_state.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_subcommand.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_tabnine.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_trae.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_zcode.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_integration_zed.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_manifest.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_registry.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/integrations/test_skill_frontmatter_quoting.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/self_upgrade_helpers.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_agent_config_consistency.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_branch_numbering.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_check_prerequisites_paths_only.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_check_prerequisites_python_parity.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_check_tool.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_cli_version.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_command_template_py_scripts.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_commands_package.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_console_imports.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_extension_skills.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_github_http.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_github_workflows.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_init_dir.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_init_dir_cli.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_live_transient_windows.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_post_process.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_ps1_encoding.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_registrar_path_traversal.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_self_upgrade_detection.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_self_upgrade_execution.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_self_upgrade_guidance.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_self_upgrade_verification.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_setup_plan_feature_json.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_setup_plan_no_overwrite.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_shared_infra_integrity.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_upgrade.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_utils.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_utils_assets_imports.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_version_imports.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/test_workflow_run_without_project.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/unit/test_bundler_catalog_config.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/unit/test_bundler_conflict.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/unit/test_bundler_packager.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/unit/test_bundler_primitives.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/unit/test_bundler_records.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/unit/test_bundler_references.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/unit/test_bundler_resolver.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/unit/test_bundler_validator.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/tests/unit/test_bundler_versioning.py +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/workflows/ARCHITECTURE.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/workflows/PUBLISHING.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/workflows/README.md +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/workflows/catalog.community.json +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/workflows/catalog.json +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/workflows/speckit/workflow.yml +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/workflows/step-catalog.community.json +0 -0
- {specify_cli-0.12.10 → specify_cli-0.12.12}/workflows/step-catalog.json +0 -0
|
@@ -7,7 +7,7 @@ body:
|
|
|
7
7
|
attributes:
|
|
8
8
|
value: |
|
|
9
9
|
Thanks for requesting a new agent! Before submitting, please check if the agent is already supported.
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
**Currently supported agents**: Amp, Antigravity, Auggie CLI, Claude Code, Cline, CodeBuddy, Codex CLI, Cursor, Devin for Terminal, Firebender, Forge, Gemini CLI, GitHub Copilot, Goose, 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
|
|
@@ -7,7 +7,7 @@ body:
|
|
|
7
7
|
attributes:
|
|
8
8
|
value: |
|
|
9
9
|
Thanks for contributing an extension! This template helps you submit your extension to the community catalog.
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
**Before submitting:**
|
|
12
12
|
- Review the [Extension Publishing Guide](https://github.com/github/spec-kit/blob/main/extensions/EXTENSION-PUBLISHING-GUIDE.md)
|
|
13
13
|
- Ensure your extension has a valid `extension.yml` manifest
|
|
@@ -209,9 +209,9 @@ body:
|
|
|
209
209
|
**Tested on:**
|
|
210
210
|
- macOS 14.0 with Spec Kit v0.1.0
|
|
211
211
|
- Linux Ubuntu 22.04 with Spec Kit v0.1.0
|
|
212
|
-
|
|
212
|
+
|
|
213
213
|
**Test project:** [Link or description]
|
|
214
|
-
|
|
214
|
+
|
|
215
215
|
**Test scenarios:**
|
|
216
216
|
1. Installed extension
|
|
217
217
|
2. Configured settings
|
|
@@ -230,7 +230,7 @@ body:
|
|
|
230
230
|
```bash
|
|
231
231
|
# Install extension
|
|
232
232
|
specify extension add <extension-name> --from https://github.com/your-org/spec-kit-your-extension/archive/refs/tags/v1.0.0.zip
|
|
233
|
-
|
|
233
|
+
|
|
234
234
|
# Use a command
|
|
235
235
|
/speckit.your-extension.command-name arg1 arg2
|
|
236
236
|
```
|
|
@@ -7,7 +7,7 @@ body:
|
|
|
7
7
|
attributes:
|
|
8
8
|
value: |
|
|
9
9
|
Thanks for contributing a preset! This template helps you submit your preset to the community catalog.
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
**Before submitting:**
|
|
12
12
|
- Review the [Preset Publishing Guide](https://github.com/github/spec-kit/blob/main/presets/PUBLISHING.md)
|
|
13
13
|
- Ensure your preset has a valid `preset.yml` manifest
|
|
@@ -20,24 +20,24 @@ jobs:
|
|
|
20
20
|
days-before-stale: 150
|
|
21
21
|
# Days of inactivity before a stale issue or PR is closed (after being marked stale)
|
|
22
22
|
days-before-close: 30
|
|
23
|
-
|
|
23
|
+
|
|
24
24
|
# Stale issue settings
|
|
25
25
|
stale-issue-message: 'This issue has been automatically marked as stale because it has not had any activity for 150 days. It will be closed in 30 days if no further activity occurs.'
|
|
26
26
|
close-issue-message: 'This issue has been automatically closed due to inactivity (180 days total). If you believe this issue is still relevant, please reopen it or create a new issue.'
|
|
27
27
|
stale-issue-label: 'stale'
|
|
28
|
-
|
|
28
|
+
|
|
29
29
|
# Stale PR settings
|
|
30
30
|
stale-pr-message: 'This pull request has been automatically marked as stale because it has not had any activity for 150 days. It will be closed in 30 days if no further activity occurs.'
|
|
31
31
|
close-pr-message: 'This pull request has been automatically closed due to inactivity (180 days total). If you believe this PR is still relevant, please reopen it or create a new PR.'
|
|
32
32
|
stale-pr-label: 'stale'
|
|
33
|
-
|
|
33
|
+
|
|
34
34
|
# Exempt issues and PRs with these labels from being marked as stale
|
|
35
35
|
exempt-issue-labels: 'pinned,security'
|
|
36
36
|
exempt-pr-labels: 'pinned,security'
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
# Only issues or PRs with all of these labels are checked
|
|
39
39
|
# Leave empty to check all issues and PRs
|
|
40
40
|
any-of-labels: ''
|
|
41
|
-
|
|
41
|
+
|
|
42
42
|
# Operations per run (helps avoid rate limits)
|
|
43
43
|
operations-per-run: 250
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
repos:
|
|
3
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
4
|
+
rev: v6.0.0
|
|
5
|
+
hooks:
|
|
6
|
+
- id: check-executables-have-shebangs
|
|
7
|
+
- id: check-yaml
|
|
8
|
+
exclude: \.lock\.yml$
|
|
9
|
+
- id: end-of-file-fixer
|
|
10
|
+
exclude: \.lock\.yml$
|
|
11
|
+
- id: trailing-whitespace
|
|
12
|
+
exclude: \.lock\.yml$
|
|
@@ -2,6 +2,36 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- insert new changelog below this comment -->
|
|
4
4
|
|
|
5
|
+
## [0.12.12] - 2026-07-13
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- fix(extensions): set-priority repairs corrupted boolean priority (#3268)
|
|
10
|
+
- fix(presets): set-priority repairs corrupted boolean priority (#3269)
|
|
11
|
+
- fix(workflows): engine loop cap ignores bool max_iterations (#3270)
|
|
12
|
+
- docs(bundles): document --integration on 'bundle update' (#3271)
|
|
13
|
+
- fix(workflows): harden catalog.py against mis-shaped registry & non-string fields (#3375)
|
|
14
|
+
- Add Verify Review Ship extension to community catalog (#3450)
|
|
15
|
+
- fix(bundle): reject file:// / local download_url — catalog URLs are HTTPS-only (#3344)
|
|
16
|
+
- fix(extensions): handle prefix-colliding env vars in _get_env_config (#3350)
|
|
17
|
+
- docs: document copilot skills mode (--skills) and markdown deprecation (#3313)
|
|
18
|
+
- chore: release 0.12.11, begin 0.12.12.dev0 development (#3460)
|
|
19
|
+
|
|
20
|
+
## [0.12.11] - 2026-07-10
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- fix(agent-context): discover nested plan.md in scoped layouts (#3024) (#3301)
|
|
25
|
+
- fix(auth): return no matches, not raw ValueError, for a malformed URL (#3437)
|
|
26
|
+
- fix(catalogs): raise catalog error, not raw ValueError, on a malformed URL (#3435)
|
|
27
|
+
- fix(bundler): raise BundlerError, not raw ValueError, on a malformed catalog URL (#3433)
|
|
28
|
+
- chore: add pre-commit config and fix trailing whitespace/end-of-file (#3430)
|
|
29
|
+
- Add EARS Requirements Syntax extension to community catalog (#3407)
|
|
30
|
+
- Add Spec Kit Figma extension to community catalog (#3408)
|
|
31
|
+
- fix(workflows): report validation errors instead of crashing on non-string workflow.yml scalars (#3421)
|
|
32
|
+
- fix(templates): remove self-referencing path in plan-template.md note (#3417)
|
|
33
|
+
- chore: release 0.12.10, begin 0.12.11.dev0 development (#3453)
|
|
34
|
+
|
|
5
35
|
## [0.12.10] - 2026-07-10
|
|
6
36
|
|
|
7
37
|
### Changed
|
|
@@ -52,6 +52,7 @@ The following community-contributed extensions are available in [`catalog.commun
|
|
|
52
52
|
| Cost Tracker | Track real LLM dollar cost across SDD workflows — per-feature budgets, per-integration comparison, and finance-ready exports | `visibility` | Read+Write | [spec-kit-cost](https://github.com/Quratulain-bilal/spec-kit-cost) |
|
|
53
53
|
| Data Model Diagram | Generates Mermaid ER diagrams from Spec Kit data models after planning | `docs` | Read+Write | [spec-kit-data-model-diagram](https://github.com/benizzio/spec-kit-data-model-diagram) |
|
|
54
54
|
| DocGuard — CDD Enforcement | The only doc-integrity engine with an MCP server, SARIF output, and a deterministic zero-LLM core. Validates, scores, and traces documentation against code — 24 validators, stable finding codes, GitHub Action with PR annotations, spec-kit hooks. Pure Node.js, one pinned dep. | `docs` | Read+Write | [spec-kit-docguard](https://github.com/raccioly/docguard) |
|
|
55
|
+
| EARS Requirements Syntax | Author, lint, and convert requirements using EARS - the five industry-standard sentence patterns for unambiguous, testable requirements | `docs` | Read+Write | [spec-kit-ears](https://github.com/dhruv-15-03/spec-kit-ears) |
|
|
55
56
|
| Extensify | Create and validate extensions and extension catalogs | `process` | Read+Write | [extensify](https://github.com/mnriem/spec-kit-extensions/tree/main/extensify) |
|
|
56
57
|
| Fix Findings | Automated analyze-fix-reanalyze loop that resolves spec findings until clean | `code` | Read+Write | [spec-kit-fix-findings](https://github.com/Quratulain-bilal/spec-kit-fix-findings) |
|
|
57
58
|
| FixIt Extension | Spec-aware bug fixing — maps bugs to spec artifacts, proposes a plan, applies minimal changes | `code` | Read+Write | [spec-kit-fixit](https://github.com/speckit-community/spec-kit-fixit) |
|
|
@@ -117,6 +118,7 @@ The following community-contributed extensions are available in [`catalog.commun
|
|
|
117
118
|
| Spec Critique Extension | Dual-lens critical review of spec and plan from product strategy and engineering risk perspectives | `docs` | Read-only | [spec-kit-critique](https://github.com/arunt14/spec-kit-critique) |
|
|
118
119
|
| Spec Diagram | Auto-generate Mermaid diagrams of SDD workflow state, feature progress, and task dependencies | `visibility` | Read-only | [spec-kit-diagram-](https://github.com/Quratulain-bilal/spec-kit-diagram-) |
|
|
119
120
|
| Spec Kit Discovery Extension | Run technical discovery commands for feasibility, technology selection, scenario-specific technical decisions, legacy codebase assessment, implementation understanding, and proof-of-concept validation | `process` | Read+Write | [spec-kit-discovery](https://github.com/bigsmartben/spec-kit-discovery) |
|
|
121
|
+
| Spec Kit Figma | Agent-agnostic SpecKit extension that grounds spec, plan & task generation in Figma design context — REST + optional MCP, single/mono/multi-repo, macOS/Linux/Windows. | `integration` | Read+Write | [spec-kit-figma](https://github.com/Fyloss/spec-kit-figma) |
|
|
120
122
|
| Spec Kit Preview | Generate evidence-backed low, mid, or high fidelity previews from Spec Kit artifacts as Markdown or self-contained HTML | `docs` | Read+Write | [spec-kit-preview](https://github.com/bigsmartben/spec-kit-preview) |
|
|
121
123
|
| Spec Kit Schedule | Optimal multi-agent task scheduling via CP-SAT — DAG precedence, hallucination-aware caps, file-conflict avoidance, stochastic durations, replanning, and interactive HTML output | `process` | Read+Write | [spec-kit-schedule](https://github.com/jfranc38/spec-kit-schedule) |
|
|
122
124
|
| Spec Kit TLDR | Render a feature's spec.md / plan.md into a review-oriented TLDR (self-contained HTML dashboard + PR-native Markdown) that surfaces risks for faster PR review. | `visibility` | Read+Write | [speckit-tldr](https://github.com/qurore/speckit-tldr) |
|
|
@@ -146,6 +148,7 @@ The following community-contributed extensions are available in [`catalog.commun
|
|
|
146
148
|
| 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) |
|
|
147
149
|
| 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) |
|
|
148
150
|
| 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) |
|
|
151
|
+
| Verify Review Ship | Adds post-implementation verify, review, and ship readiness gates to Spec Kit workflows | `process` | Read-only | [spec-kit-verify-review-ship](https://github.com/cadugevaerd/spec-kit-verify-review-ship) |
|
|
149
152
|
| 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) |
|
|
150
153
|
| 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) |
|
|
151
154
|
| 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) |
|
|
@@ -51,10 +51,11 @@ If the current directory is not yet a Spec Kit project, `install` initializes on
|
|
|
51
51
|
specify bundle update [<bundle_id>]
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
-
| Option
|
|
55
|
-
|
|
|
56
|
-
| `--all`
|
|
57
|
-
| `--
|
|
54
|
+
| Option | Description |
|
|
55
|
+
| ---------------- | --------------------------------------------------------------------------------------------------------------------- |
|
|
56
|
+
| `--all` | Update every installed bundle |
|
|
57
|
+
| `--integration` | Override the integration used when refreshing components; applied only when the project's active integration can't be determined |
|
|
58
|
+
| `--offline` | Do not access the network |
|
|
58
59
|
|
|
59
60
|
Re-resolves a bundle and **refreshes** its components through each primitive's update path, bringing already-installed components up to the bundle's newly pinned versions while preserving primitive-level overrides (such as preset priority). Provide a bundle id, or use `--all` to update everything installed.
|
|
60
61
|
|
|
@@ -18,7 +18,7 @@ The Specify CLI supports a wide range of AI coding agents. When you run `specify
|
|
|
18
18
|
| [Firebender](https://firebender.com/) | `firebender` | IDE-based agent for Android Studio / IntelliJ |
|
|
19
19
|
| [Forge](https://forgecode.dev/) | `forge` | |
|
|
20
20
|
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | `gemini` | |
|
|
21
|
-
| [GitHub Copilot](https://code.visualstudio.com/) | `copilot` |
|
|
21
|
+
| [GitHub Copilot](https://code.visualstudio.com/) | `copilot` | Defaults to legacy markdown mode: `.agent.md` command files under `.github/agents/`, companion `.prompt.md` files under `.github/prompts/`, and a `.vscode/settings.json` merge. Pass `--integration-options="--skills"` to scaffold skills as `speckit-<command>/SKILL.md` under `.github/skills/` instead. Legacy markdown mode is deprecated and will stop being the default in a future release. |
|
|
22
22
|
| [Goose](https://goose-docs.ai/) | `goose` | Uses YAML recipe format in `.goose/recipes/` |
|
|
23
23
|
| [Hermes](https://github.com/NousResearch/hermes-agent) | `hermes` | Skills-based integration; installs skills globally into `~/.hermes/skills/` |
|
|
24
24
|
| [IBM Bob](https://www.ibm.com/products/bob) | `bob` | IDE-based agent |
|
|
@@ -219,6 +219,7 @@ Some integrations accept additional options via `--integration-options`:
|
|
|
219
219
|
| ----------- | ------------------- | -------------------------------------------------------------- |
|
|
220
220
|
| `generic` | `--commands-dir` | Required. Directory for command files |
|
|
221
221
|
| `kimi` | `--migrate-legacy` | Migrate legacy `.kimi/skills/` installs to `.kimi-code/skills/` (including dotted→hyphenated skill naming, e.g. `speckit.xxx` → `speckit-xxx`) |
|
|
222
|
+
| `copilot` | `--skills` | Scaffold commands as agent skills (`speckit-<command>/SKILL.md` under `.github/skills/`, invoked as `/speckit-<command>`) instead of the default legacy markdown mode (`.github/agents/*.agent.md` plus `.github/prompts/*.prompt.md` and a `.vscode/settings.json` merge). Without this flag, install warns that legacy markdown mode is deprecated. |
|
|
222
223
|
|
|
223
224
|
Example:
|
|
224
225
|
|
|
@@ -15,7 +15,7 @@ The script reads the agent-context extension config at
|
|
|
15
15
|
- `context_files` — optional project-relative paths for multiple coding agent context files. When non-empty, the script updates each listed file and the list takes precedence over `context_file`.
|
|
16
16
|
- `context_markers.start` / `.end` — the delimiters surrounding the managed section. Defaults to `<!-- SPECKIT START -->` and `<!-- SPECKIT END -->` when the field is missing.
|
|
17
17
|
|
|
18
|
-
It then creates, replaces, or appends the managed block so that the section points at the most recent plan path when one can be discovered (`
|
|
18
|
+
It then creates, replaces, or appends the managed block so that the section points at the most recent plan path when one can be discovered (any `plan.md` under `specs/`, including nested scoped layouts such as `specs/<scope>/<feature>/plan.md`).
|
|
19
19
|
|
|
20
20
|
If `context_files` and `context_file` are empty, the command reports nothing to do and exits successfully. Context file paths must stay project-relative; absolute paths, Windows drive paths, backslash separators, and `..` path segments are rejected.
|
|
21
21
|
|
|
@@ -24,4 +24,4 @@ If `context_files` and `context_file` are empty, the command reports nothing to
|
|
|
24
24
|
- **Bash**: `.specify/extensions/agent-context/scripts/bash/update-agent-context.sh [plan_path]`
|
|
25
25
|
- **PowerShell**: `.specify/extensions/agent-context/scripts/powershell/update-agent-context.ps1 [plan_path]`
|
|
26
26
|
|
|
27
|
-
When `plan_path` is omitted, the script auto-detects the most recently modified `specs/**/plan.md` (
|
|
27
|
+
When `plan_path` is omitted, the script auto-detects the most recently modified `specs/**/plan.md` (searched recursively, so nested scoped layouts are discovered).
|
|
@@ -307,16 +307,28 @@ import sys
|
|
|
307
307
|
from pathlib import Path
|
|
308
308
|
root = Path(sys.argv[1]).resolve()
|
|
309
309
|
specs = root / "specs"
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
310
|
+
|
|
311
|
+
def _resolved_rel(p):
|
|
312
|
+
# Resolve symlinks before checking containment: relative_to() is lexical
|
|
313
|
+
# and would otherwise accept a plan reached through a specs/ symlink that
|
|
314
|
+
# points outside the project, emitting an in-project-looking path for an
|
|
315
|
+
# out-of-project file (or picking it as "most recent").
|
|
316
316
|
try:
|
|
317
|
-
|
|
318
|
-
except ValueError:
|
|
319
|
-
|
|
317
|
+
return p.resolve().relative_to(root)
|
|
318
|
+
except (OSError, ValueError):
|
|
319
|
+
return None
|
|
320
|
+
|
|
321
|
+
# Recurse (rather than the old one-level specs/*/plan.md glob) so scoped layouts
|
|
322
|
+
# created via SPECIFY_FEATURE_DIRECTORY, e.g. specs/<scope>/<feature>/plan.md,
|
|
323
|
+
# are still discovered when feature.json is absent (#3024).
|
|
324
|
+
candidates = []
|
|
325
|
+
for p in specs.rglob("plan.md"):
|
|
326
|
+
rel = _resolved_rel(p)
|
|
327
|
+
if rel:
|
|
328
|
+
candidates.append((p, rel))
|
|
329
|
+
candidates.sort(key=lambda pr: pr[0].stat().st_mtime, reverse=True)
|
|
330
|
+
if candidates:
|
|
331
|
+
print(candidates[0][1].as_posix())
|
|
320
332
|
else:
|
|
321
333
|
print("")
|
|
322
334
|
PY
|
|
@@ -426,7 +426,11 @@ if (-not $PlanPath) {
|
|
|
426
426
|
if (-not $PlanPath) {
|
|
427
427
|
try {
|
|
428
428
|
$specsDir = Join-Path $ProjectRoot 'specs'
|
|
429
|
-
|
|
429
|
+
# Recurse (rather than the old one-level specs/*/plan.md scan) so scoped
|
|
430
|
+
# layouts created via SPECIFY_FEATURE_DIRECTORY, e.g.
|
|
431
|
+
# specs/<scope>/<feature>/plan.md, are still discovered when
|
|
432
|
+
# feature.json is absent (#3024).
|
|
433
|
+
$candidate = Get-ChildItem -Path $specsDir -Filter 'plan.md' -File -Recurse -ErrorAction SilentlyContinue |
|
|
430
434
|
Sort-Object LastWriteTime -Descending |
|
|
431
435
|
Select-Object -First 1
|
|
432
436
|
if ($candidate) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "1.0",
|
|
3
|
-
"updated_at": "2026-07-
|
|
3
|
+
"updated_at": "2026-07-10T00:00:00Z",
|
|
4
4
|
"catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/extensions/catalog.community.json",
|
|
5
5
|
"extensions": {
|
|
6
6
|
"aide": {
|
|
@@ -1180,6 +1180,39 @@
|
|
|
1180
1180
|
"created_at": "2026-03-13T00:00:00Z",
|
|
1181
1181
|
"updated_at": "2026-03-13T00:00:00Z"
|
|
1182
1182
|
},
|
|
1183
|
+
"ears": {
|
|
1184
|
+
"name": "EARS Requirements Syntax",
|
|
1185
|
+
"id": "ears",
|
|
1186
|
+
"description": "Author, lint, and convert requirements using EARS (Easy Approach to Requirements Syntax) - the five industry-standard sentence patterns for unambiguous, testable requirements.",
|
|
1187
|
+
"author": "dhruv-15-03",
|
|
1188
|
+
"version": "1.0.0",
|
|
1189
|
+
"download_url": "https://github.com/dhruv-15-03/spec-kit-ears/archive/refs/tags/v1.0.0.zip",
|
|
1190
|
+
"repository": "https://github.com/dhruv-15-03/spec-kit-ears",
|
|
1191
|
+
"homepage": "https://github.com/dhruv-15-03/spec-kit-ears",
|
|
1192
|
+
"documentation": "https://github.com/dhruv-15-03/spec-kit-ears/blob/main/README.md",
|
|
1193
|
+
"changelog": "https://github.com/dhruv-15-03/spec-kit-ears/blob/main/CHANGELOG.md",
|
|
1194
|
+
"license": "MIT",
|
|
1195
|
+
"category": "docs",
|
|
1196
|
+
"effect": "read-write",
|
|
1197
|
+
"requires": {
|
|
1198
|
+
"speckit_version": ">=0.9.0"
|
|
1199
|
+
},
|
|
1200
|
+
"provides": {
|
|
1201
|
+
"commands": 3,
|
|
1202
|
+
"hooks": 0
|
|
1203
|
+
},
|
|
1204
|
+
"tags": [
|
|
1205
|
+
"ears",
|
|
1206
|
+
"requirements",
|
|
1207
|
+
"specification",
|
|
1208
|
+
"quality"
|
|
1209
|
+
],
|
|
1210
|
+
"verified": false,
|
|
1211
|
+
"downloads": 0,
|
|
1212
|
+
"stars": 0,
|
|
1213
|
+
"created_at": "2026-07-08T00:00:00Z",
|
|
1214
|
+
"updated_at": "2026-07-08T00:00:00Z"
|
|
1215
|
+
},
|
|
1183
1216
|
"extensify": {
|
|
1184
1217
|
"name": "Extensify",
|
|
1185
1218
|
"id": "extensify",
|
|
@@ -1213,6 +1246,47 @@
|
|
|
1213
1246
|
"created_at": "2026-03-18T00:00:00Z",
|
|
1214
1247
|
"updated_at": "2026-04-23T00:00:00Z"
|
|
1215
1248
|
},
|
|
1249
|
+
"figma": {
|
|
1250
|
+
"name": "Spec Kit Figma",
|
|
1251
|
+
"id": "figma",
|
|
1252
|
+
"description": "Agent-agnostic SpecKit extension that grounds spec, plan & task generation in Figma design context — REST + optional MCP, single/mono/multi-repo, macOS/Linux/Windows.",
|
|
1253
|
+
"author": "Fyloss",
|
|
1254
|
+
"version": "1.6.0",
|
|
1255
|
+
"download_url": "https://github.com/Fyloss/spec-kit-figma/archive/refs/tags/v1.6.0.zip",
|
|
1256
|
+
"repository": "https://github.com/Fyloss/spec-kit-figma",
|
|
1257
|
+
"homepage": "https://github.com/Fyloss/spec-kit-figma",
|
|
1258
|
+
"documentation": "https://github.com/Fyloss/spec-kit-figma/blob/main/docs/INSTALL.md",
|
|
1259
|
+
"changelog": "https://github.com/Fyloss/spec-kit-figma/blob/main/CHANGELOG.md",
|
|
1260
|
+
"license": "MIT",
|
|
1261
|
+
"category": "integration",
|
|
1262
|
+
"effect": "read-write",
|
|
1263
|
+
"requires": {
|
|
1264
|
+
"speckit_version": ">=0.1.0",
|
|
1265
|
+
"tools": [
|
|
1266
|
+
{ "name": "git", "required": true },
|
|
1267
|
+
{ "name": "bash", "required": false },
|
|
1268
|
+
{ "name": "curl", "required": false },
|
|
1269
|
+
{ "name": "jq", "required": false },
|
|
1270
|
+
{ "name": "pwsh", "required": false }
|
|
1271
|
+
]
|
|
1272
|
+
},
|
|
1273
|
+
"provides": {
|
|
1274
|
+
"commands": 5,
|
|
1275
|
+
"hooks": 6
|
|
1276
|
+
},
|
|
1277
|
+
"tags": [
|
|
1278
|
+
"figma",
|
|
1279
|
+
"design",
|
|
1280
|
+
"frontend",
|
|
1281
|
+
"ui",
|
|
1282
|
+
"design-system"
|
|
1283
|
+
],
|
|
1284
|
+
"verified": false,
|
|
1285
|
+
"downloads": 0,
|
|
1286
|
+
"stars": 0,
|
|
1287
|
+
"created_at": "2026-07-08T00:00:00Z",
|
|
1288
|
+
"updated_at": "2026-07-08T00:00:00Z"
|
|
1289
|
+
},
|
|
1216
1290
|
"fix-findings": {
|
|
1217
1291
|
"name": "Fix Findings",
|
|
1218
1292
|
"id": "fix-findings",
|
|
@@ -4282,6 +4356,40 @@
|
|
|
4282
4356
|
"created_at": "2026-03-03T00:00:00Z",
|
|
4283
4357
|
"updated_at": "2026-04-09T00:00:00Z"
|
|
4284
4358
|
},
|
|
4359
|
+
"verify-review-ship": {
|
|
4360
|
+
"name": "Verify Review Ship",
|
|
4361
|
+
"id": "verify-review-ship",
|
|
4362
|
+
"description": "Adds post-implementation verify, review, and ship readiness gates to Spec Kit workflows.",
|
|
4363
|
+
"author": "Carlos Eduardo Gevaerd Araujo",
|
|
4364
|
+
"version": "0.1.0",
|
|
4365
|
+
"download_url": "https://github.com/cadugevaerd/spec-kit-verify-review-ship/archive/refs/tags/v0.1.0.zip",
|
|
4366
|
+
"repository": "https://github.com/cadugevaerd/spec-kit-verify-review-ship",
|
|
4367
|
+
"homepage": "https://github.com/cadugevaerd/spec-kit-verify-review-ship",
|
|
4368
|
+
"documentation": "https://github.com/cadugevaerd/spec-kit-verify-review-ship/blob/main/README.md",
|
|
4369
|
+
"changelog": "https://github.com/cadugevaerd/spec-kit-verify-review-ship/blob/main/CHANGELOG.md",
|
|
4370
|
+
"license": "MIT",
|
|
4371
|
+
"category": "process",
|
|
4372
|
+
"effect": "read-only",
|
|
4373
|
+
"requires": {
|
|
4374
|
+
"speckit_version": ">=0.1.0"
|
|
4375
|
+
},
|
|
4376
|
+
"provides": {
|
|
4377
|
+
"commands": 3,
|
|
4378
|
+
"hooks": 1
|
|
4379
|
+
},
|
|
4380
|
+
"tags": [
|
|
4381
|
+
"quality",
|
|
4382
|
+
"review",
|
|
4383
|
+
"shipping",
|
|
4384
|
+
"workflow",
|
|
4385
|
+
"testing"
|
|
4386
|
+
],
|
|
4387
|
+
"verified": false,
|
|
4388
|
+
"downloads": 0,
|
|
4389
|
+
"stars": 0,
|
|
4390
|
+
"created_at": "2026-07-10T00:00:00Z",
|
|
4391
|
+
"updated_at": "2026-07-10T00:00:00Z"
|
|
4392
|
+
},
|
|
4285
4393
|
"verify-tasks": {
|
|
4286
4394
|
"name": "Verify Tasks Extension",
|
|
4287
4395
|
"id": "verify-tasks",
|
|
@@ -48,7 +48,7 @@ cat .specify/extensions/.registry/$ARGUMENTS.json
|
|
|
48
48
|
|
|
49
49
|
### Step 4: Verification Report
|
|
50
50
|
|
|
51
|
-
Analyze the standard output of the three steps.
|
|
51
|
+
Analyze the standard output of the three steps.
|
|
52
52
|
Generate a terminal-style test output format detailing the results of discovery, installation, and registration. Return this directly to the user.
|
|
53
53
|
|
|
54
54
|
Example output format:
|
|
@@ -76,5 +76,3 @@ Areas under discussion or in progress for future development:
|
|
|
76
76
|
- **Continued agent expansion** -- seven new agents were added in March alone. The agent-agnostic design means support for emerging tools can be added by anyone. [\[byteiota.com\]](https://byteiota.com/spec-driven-development-kills-vibe-coding-march-2026/)
|
|
77
77
|
- **Experience simplification** -- the preset system, custom workflows, and growing walkthrough library lower the learning curve, but extension discoverability will need a more robust solution as the catalog grows. [\[github.com\]](https://github.com/github/spec-kit/releases)
|
|
78
78
|
- **Toward a stable release** -- nine releases in one month reflects pre-1.0 momentum. Reaching 1.0 will require stabilizing the extension and preset APIs and ensuring backward compatibility across the agent and extension surface area. [\[github.com\]](https://github.com/github/spec-kit/blob/main/newsletters/2026-February.md)
|
|
79
|
-
|
|
80
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "specify-cli"
|
|
3
|
-
version = "0.12.
|
|
3
|
+
version = "0.12.12"
|
|
4
4
|
description = "Specify CLI, part of GitHub Spec Kit. A tool to bootstrap your projects for Spec-Driven Development (SDD)."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.11"
|
|
@@ -83,4 +83,3 @@ extend-select = [
|
|
|
83
83
|
"S604", # call-with-shell-equals-true
|
|
84
84
|
"S605", # start-process-with-a-shell
|
|
85
85
|
]
|
|
86
|
-
|
|
@@ -57,13 +57,13 @@ OPTIONS:
|
|
|
57
57
|
EXAMPLES:
|
|
58
58
|
# Check task prerequisites (plan.md required)
|
|
59
59
|
./check-prerequisites.sh --json
|
|
60
|
-
|
|
60
|
+
|
|
61
61
|
# Check implementation prerequisites (plan.md + tasks.md required)
|
|
62
62
|
./check-prerequisites.sh --json --require-tasks --include-tasks
|
|
63
|
-
|
|
63
|
+
|
|
64
64
|
# Get feature paths only (no validation)
|
|
65
65
|
./check-prerequisites.sh --paths-only
|
|
66
|
-
|
|
66
|
+
|
|
67
67
|
EOF
|
|
68
68
|
exit 0
|
|
69
69
|
;;
|
|
@@ -182,13 +182,13 @@ else
|
|
|
182
182
|
# Text output
|
|
183
183
|
echo "FEATURE_DIR:$FEATURE_DIR"
|
|
184
184
|
echo "AVAILABLE_DOCS:"
|
|
185
|
-
|
|
185
|
+
|
|
186
186
|
# Show status of each potential document
|
|
187
187
|
check_file "$RESEARCH" "research.md"
|
|
188
188
|
check_file "$DATA_MODEL" "data-model.md"
|
|
189
189
|
check_dir "$CONTRACTS_DIR" "contracts/"
|
|
190
190
|
check_file "$QUICKSTART" "quickstart.md"
|
|
191
|
-
|
|
191
|
+
|
|
192
192
|
if $INCLUDE_TASKS; then
|
|
193
193
|
check_file "$TASKS" "tasks.md"
|
|
194
194
|
fi
|
|
@@ -94,7 +94,7 @@ fi
|
|
|
94
94
|
get_highest_from_specs() {
|
|
95
95
|
local specs_dir="$1"
|
|
96
96
|
local highest=0
|
|
97
|
-
|
|
97
|
+
|
|
98
98
|
if [ -d "$specs_dir" ]; then
|
|
99
99
|
for dir in "$specs_dir"/*; do
|
|
100
100
|
[ -d "$dir" ] || continue
|
|
@@ -109,7 +109,7 @@ get_highest_from_specs() {
|
|
|
109
109
|
fi
|
|
110
110
|
done
|
|
111
111
|
fi
|
|
112
|
-
|
|
112
|
+
|
|
113
113
|
echo "$highest"
|
|
114
114
|
}
|
|
115
115
|
|
|
@@ -135,19 +135,19 @@ fi
|
|
|
135
135
|
# Function to generate branch name with stop word filtering and length filtering
|
|
136
136
|
generate_branch_name() {
|
|
137
137
|
local description="$1"
|
|
138
|
-
|
|
138
|
+
|
|
139
139
|
# Common stop words to filter out
|
|
140
140
|
local stop_words="^(i|a|an|the|to|for|of|in|on|at|by|with|from|is|are|was|were|be|been|being|have|has|had|do|does|did|will|would|should|could|can|may|might|must|shall|this|that|these|those|my|your|our|their|want|need|add|get|set)$"
|
|
141
|
-
|
|
141
|
+
|
|
142
142
|
# Convert to lowercase and split into words
|
|
143
143
|
local clean_name=$(printf '%s' "$description" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/ /g')
|
|
144
|
-
|
|
144
|
+
|
|
145
145
|
# Filter words: remove stop words and words shorter than 3 chars (unless they're uppercase acronyms in original)
|
|
146
146
|
local meaningful_words=()
|
|
147
147
|
for word in $clean_name; do
|
|
148
148
|
# Skip empty words
|
|
149
149
|
[ -z "$word" ] && continue
|
|
150
|
-
|
|
150
|
+
|
|
151
151
|
# Keep words that are NOT stop words AND (length >= 3 OR are potential acronyms)
|
|
152
152
|
if ! echo "$word" | grep -qiE "$stop_words"; then
|
|
153
153
|
if [ ${#word} -ge 3 ]; then
|
|
@@ -160,12 +160,12 @@ generate_branch_name() {
|
|
|
160
160
|
fi
|
|
161
161
|
fi
|
|
162
162
|
done
|
|
163
|
-
|
|
163
|
+
|
|
164
164
|
# If we have meaningful words, use first 3-4 of them
|
|
165
165
|
if [ ${#meaningful_words[@]} -gt 0 ]; then
|
|
166
166
|
local max_words=3
|
|
167
167
|
if [ ${#meaningful_words[@]} -eq 4 ]; then max_words=4; fi
|
|
168
|
-
|
|
168
|
+
|
|
169
169
|
local result=""
|
|
170
170
|
local count=0
|
|
171
171
|
for word in "${meaningful_words[@]}"; do
|
|
@@ -221,15 +221,15 @@ if [ ${#BRANCH_NAME} -gt $MAX_BRANCH_LENGTH ]; then
|
|
|
221
221
|
# Account for prefix length: timestamp (15) + hyphen (1) = 16, or sequential (3) + hyphen (1) = 4
|
|
222
222
|
PREFIX_LENGTH=$(( ${#FEATURE_NUM} + 1 ))
|
|
223
223
|
MAX_SUFFIX_LENGTH=$((MAX_BRANCH_LENGTH - PREFIX_LENGTH))
|
|
224
|
-
|
|
224
|
+
|
|
225
225
|
# Truncate suffix at word boundary if possible
|
|
226
226
|
TRUNCATED_SUFFIX=$(echo "$BRANCH_SUFFIX" | cut -c1-$MAX_SUFFIX_LENGTH)
|
|
227
227
|
# Remove trailing hyphen if truncation created one
|
|
228
228
|
TRUNCATED_SUFFIX=$(echo "$TRUNCATED_SUFFIX" | sed 's/-$//')
|
|
229
|
-
|
|
229
|
+
|
|
230
230
|
ORIGINAL_BRANCH_NAME="$BRANCH_NAME"
|
|
231
231
|
BRANCH_NAME="${FEATURE_NUM}-${TRUNCATED_SUFFIX}"
|
|
232
|
-
|
|
232
|
+
|
|
233
233
|
>&2 echo "[specify] Warning: Branch name exceeded GitHub's 244-byte limit"
|
|
234
234
|
>&2 echo "[specify] Original: $ORIGINAL_BRANCH_NAME (${#ORIGINAL_BRANCH_NAME} bytes)"
|
|
235
235
|
>&2 echo "[specify] Truncated to: $BRANCH_NAME (${#BRANCH_NAME} bytes)"
|
|
@@ -8,17 +8,17 @@ ARGS=()
|
|
|
8
8
|
|
|
9
9
|
for arg in "$@"; do
|
|
10
10
|
case "$arg" in
|
|
11
|
-
--json)
|
|
12
|
-
JSON_MODE=true
|
|
11
|
+
--json)
|
|
12
|
+
JSON_MODE=true
|
|
13
13
|
;;
|
|
14
|
-
--help|-h)
|
|
14
|
+
--help|-h)
|
|
15
15
|
echo "Usage: $0 [--json]"
|
|
16
16
|
echo " --json Output results in JSON format"
|
|
17
17
|
echo " --help Show this help message"
|
|
18
|
-
exit 0
|
|
18
|
+
exit 0
|
|
19
19
|
;;
|
|
20
|
-
*)
|
|
21
|
-
ARGS+=("$arg")
|
|
20
|
+
*)
|
|
21
|
+
ARGS+=("$arg")
|
|
22
22
|
;;
|
|
23
23
|
esac
|
|
24
24
|
done
|
|
@@ -77,8 +77,7 @@ if $JSON_MODE; then
|
|
|
77
77
|
fi
|
|
78
78
|
else
|
|
79
79
|
echo "FEATURE_SPEC: $FEATURE_SPEC"
|
|
80
|
-
echo "IMPL_PLAN: $IMPL_PLAN"
|
|
80
|
+
echo "IMPL_PLAN: $IMPL_PLAN"
|
|
81
81
|
echo "SPECS_DIR: $FEATURE_DIR"
|
|
82
82
|
echo "BRANCH: $CURRENT_BRANCH"
|
|
83
83
|
fi
|
|
84
|
-
|