specify-cli 0.12.16__tar.gz → 0.12.17__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.16 → specify_cli-0.12.17}/.github/ISSUE_TEMPLATE/agent_request.yml +1 -1
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/ISSUE_TEMPLATE/bug_report.yml +1 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/ISSUE_TEMPLATE/feature_request.yml +1 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.gitignore +2 -1
- {specify_cli-0.12.16 → specify_cli-0.12.17}/CHANGELOG.md +15 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/PKG-INFO +1 -1
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/community/extensions.md +3 -1
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/reference/integrations.md +8 -2
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/agent-context/agent-context-defaults.json +1 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/catalog.community.json +106 -8
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +10 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/integrations/catalog.json +10 -1
- {specify_cli-0.12.16 → specify_cli-0.12.17}/pyproject.toml +1 -1
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/_invocation_style.py +1 -1
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/commands/init.py +7 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/extensions/__init__.py +26 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/__init__.py +2 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/_helpers.py +15 -2
- specify_cli-0.12.17/src/specify_cli/integrations/grok/__init__.py +60 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/steps/if_then/__init__.py +23 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/steps/switch/__init__.py +33 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/extensions/git/test_git_extension.py +28 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_cli.py +60 -0
- specify_cli-0.12.17/tests/integrations/test_integration_grok.py +187 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_subcommand.py +37 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_zed.py +2 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_agent_config_consistency.py +1 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_extension_skills.py +107 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_workflows.py +148 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.devcontainer/devcontainer.json +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.devcontainer/post-create.sh +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.editorconfig +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.gitattributes +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/CODEOWNERS +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/ISSUE_TEMPLATE/bundle_submission.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/ISSUE_TEMPLATE/preset_submission.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/aw/actions-lock.json +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/dependabot.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/skills/add-community-extension/SKILL.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/RELEASE-PROCESS.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/add-community-extension.lock.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/add-community-extension.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/add-community-preset.lock.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/add-community-preset.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/bug-assess.lock.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/bug-assess.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/bug-fix.lock.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/bug-fix.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/bug-test.lock.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/bug-test.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/catalog-assign.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/codeql.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/docs.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/lint.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/publish-pypi.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/release-trigger.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/release.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/stale.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.github/workflows/test.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.markdownlint-cli2.jsonc +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.pre-commit-config.yaml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/.zenodo.json +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/AGENTS.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/CITATION.cff +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/CODE_OF_CONDUCT.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/CONTRIBUTING.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/DEVELOPMENT.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/LICENSE +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/README.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/SECURITY.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/SUPPORT.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/.gitignore +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/README.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/community/bundles.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/community/friends.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/community/overview.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/community/presets.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/community/walkthroughs.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/concepts/complex-features.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/concepts/sdd.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/concepts/spec-persistence.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/docfx.json +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/guides/evolving-specs.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/guides/monorepo.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/index.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/install/air-gapped.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/install/one-time.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/install/pipx.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/install/pypi.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/install/uv.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/installation.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/local-development.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/quickstart.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/reference/authentication.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/reference/bundles.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/reference/core.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/reference/extensions.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/reference/overview.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/reference/presets.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/reference/workflows.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/template/public/main.css +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/toc.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/docs/upgrade.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/examples/bundles/business-analyst/README.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/examples/bundles/business-analyst/bundle.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/examples/bundles/developer/README.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/examples/bundles/developer/bundle.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/examples/bundles/product-manager/README.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/examples/bundles/product-manager/bundle.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/examples/bundles/security-researcher/README.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/examples/bundles/security-researcher/bundle.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/EXTENSION-API-REFERENCE.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/EXTENSION-PUBLISHING-GUIDE.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/EXTENSION-USER-GUIDE.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/README.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/agent-context/README.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/agent-context/agent-context-config.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/agent-context/extension.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/agent-context/scripts/bash/update-agent-context.sh +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/agent-context/scripts/python/update_agent_context.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/bug/README.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/bug/commands/speckit.bug.assess.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/bug/commands/speckit.bug.fix.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/bug/commands/speckit.bug.test.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/bug/extension.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/catalog.json +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/README.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/commands/speckit.git.commit.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/commands/speckit.git.feature.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/commands/speckit.git.initialize.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/commands/speckit.git.remote.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/commands/speckit.git.validate.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/config-template.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/extension.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/git-config.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/scripts/bash/auto-commit.sh +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/scripts/bash/git-common.sh +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/scripts/python/auto_commit.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/scripts/python/create_new_feature_branch.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/scripts/python/git_common.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/git/scripts/python/initialize_repo.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/selftest/commands/selftest.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/selftest/extension.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/template/.gitignore +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/template/CHANGELOG.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/template/EXAMPLE-README.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/template/LICENSE +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/template/README.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/template/commands/example.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/template/config-template.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/extensions/template/extension.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/integrations/CONTRIBUTING.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/integrations/README.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/integrations/catalog.community.json +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/media/bootstrap-claude-code.gif +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/media/logo_large.webp +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/media/logo_small.webp +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/media/spec-kit-video-header.jpg +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/media/specify_cli.gif +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/newsletters/2026-April.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/newsletters/2026-February.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/newsletters/2026-June.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/newsletters/2026-March.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/newsletters/2026-May.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/ARCHITECTURE.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/PUBLISHING.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/README.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/catalog.community.json +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/catalog.json +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/lean/README.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/lean/commands/speckit.constitution.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/lean/commands/speckit.implement.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/lean/commands/speckit.plan.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/lean/commands/speckit.specify.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/lean/commands/speckit.tasks.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/lean/preset.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/scaffold/README.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/scaffold/commands/speckit.specify.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/scaffold/preset.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/scaffold/templates/myext-template.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/scaffold/templates/spec-template.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/self-test/commands/speckit.specify.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/self-test/commands/speckit.wrap-test.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/self-test/preset.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/self-test/templates/checklist-template.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/self-test/templates/constitution-template.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/self-test/templates/plan-template.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/self-test/templates/spec-template.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/presets/self-test/templates/tasks-template.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/scripts/bash/check-prerequisites.sh +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/scripts/bash/common.sh +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/scripts/bash/create-new-feature.sh +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/scripts/bash/setup-plan.sh +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/scripts/bash/setup-tasks.sh +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/scripts/powershell/check-prerequisites.ps1 +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/scripts/powershell/common.ps1 +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/scripts/powershell/create-new-feature.ps1 +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/scripts/powershell/setup-plan.ps1 +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/scripts/powershell/setup-tasks.ps1 +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/scripts/python/check_prerequisites.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/scripts/python/common.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/spec-driven.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/spec-kit.code-workspace +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/_agent_config.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/_assets.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/_console.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/_github_http.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/_init_options.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/_project.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/_toml_string.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/_utils.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/_version.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/agents.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/authentication/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/authentication/azure_devops.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/authentication/base.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/authentication/config.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/authentication/github.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/authentication/http.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/commands_impl/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/commands_impl/catalog_config.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/lib/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/lib/project.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/lib/versioning.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/lib/yamlio.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/models/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/models/catalog.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/models/manifest.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/models/records.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/services/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/services/adapters.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/services/catalog_stack.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/services/conflict.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/services/installer.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/services/packager.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/services/primitives.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/services/references.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/services/resolver.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/bundler/services/validator.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/catalogs.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/commands/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/commands/bundle/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/extensions/_commands.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integration_runtime.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integration_scaffold.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integration_state.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integration_status.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/_commands.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/_install_commands.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/_migrate_commands.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/_query_commands.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/_scaffold_commands.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/agy/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/amp/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/auggie/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/base.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/bob/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/catalog.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/claude/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/cline/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/codex/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/copilot/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/devin/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/firebender/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/forge/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/gemini/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/generic/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/goose/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/hermes/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/junie/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/kilocode/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/kimi/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/lingma/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/manifest.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/omp/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/opencode/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/pi/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/qwen/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/rovodev/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/shai/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/trae/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/vibe/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/zcode/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/integrations/zed/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/presets/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/presets/_commands.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/shared_infra.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/_commands.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/base.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/catalog.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/engine.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/expressions.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/steps/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/steps/command/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/steps/do_while/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/steps/fan_in/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/steps/fan_out/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/steps/gate/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/steps/init/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/steps/prompt/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/steps/shell/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/steps/while_loop/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/templates/checklist-template.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/templates/commands/analyze.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/templates/commands/checklist.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/templates/commands/clarify.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/templates/commands/constitution.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/templates/commands/converge.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/templates/commands/implement.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/templates/commands/plan.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/templates/commands/specify.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/templates/commands/tasks.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/templates/commands/taskstoissues.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/templates/constitution-template.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/templates/plan-template.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/templates/spec-template.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/templates/tasks-template.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/templates/vscode-settings.json +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/auth_helpers.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/bundler_helpers.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/conftest.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/contract/test_bundle_cli.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/contract/test_catalog_schema.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/contract/test_manifest_schema.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/extensions/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/extensions/bug/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/extensions/bug/test_bug_extension.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/extensions/git/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/extensions/git/test_git_extension_python_parity.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/extensions/test_agent_context_cli_free.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/extensions/test_extension_agent_context.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/extensions/test_update_agent_context_feature_json.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/extensions/test_update_agent_context_python_parity.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/hooks/TESTING.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/hooks/plan.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/hooks/spec.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/hooks/tasks.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/http_helpers.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integration/test_bundler_catalog_stack.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integration/test_bundler_init_install.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integration/test_bundler_install_flow.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integration/test_bundler_local_install.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integration/test_bundler_offline.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integration/test_bundler_security_paths.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/__init__.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/conftest.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_base.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_extra_args.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_home_isolation.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_agy.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_amp.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_auggie.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_base_markdown.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_base_skills.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_base_toml.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_base_yaml.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_bob.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_catalog.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_claude.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_cline.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_codebuddy.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_codex.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_copilot.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_cursor_agent.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_devin.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_firebender.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_forge.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_gemini.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_generic.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_goose.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_hermes.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_junie.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_kilocode.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_kimi.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_kiro_cli.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_lingma.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_omp.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_opencode.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_pi.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_qodercli.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_qwen.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_rovodev.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_scaffold.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_shai.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_state.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_tabnine.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_trae.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_vibe.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_integration_zcode.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_manifest.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_registry.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/integrations/test_skill_frontmatter_quoting.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/self_upgrade_helpers.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_authentication.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_branch_numbering.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_check_prerequisites_paths_only.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_check_prerequisites_python_parity.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_check_tool.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_cli_version.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_command_template_py_scripts.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_commands_package.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_console_imports.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_extension_registration.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_extension_update_hardening.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_extensions.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_github_http.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_github_workflows.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_init_dir.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_init_dir_cli.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_live_transient_windows.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_merge.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_post_process.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_presets.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_ps1_encoding.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_registrar_path_traversal.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_self_upgrade_detection.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_self_upgrade_execution.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_self_upgrade_guidance.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_self_upgrade_verification.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_setup_plan_feature_json.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_setup_plan_no_overwrite.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_setup_tasks.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_shared_infra_integrity.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_timestamp_branches.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_upgrade.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_utils.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_utils_assets_imports.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_version_imports.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/test_workflow_run_without_project.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/unit/test_bundler_adapters.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/unit/test_bundler_catalog_config.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/unit/test_bundler_conflict.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/unit/test_bundler_packager.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/unit/test_bundler_primitives.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/unit/test_bundler_records.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/unit/test_bundler_references.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/unit/test_bundler_resolver.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/unit/test_bundler_validator.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/tests/unit/test_bundler_versioning.py +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/workflows/ARCHITECTURE.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/workflows/PUBLISHING.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/workflows/README.md +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/workflows/catalog.community.json +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/workflows/catalog.json +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/workflows/speckit/workflow.yml +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/workflows/step-catalog.community.json +0 -0
- {specify_cli-0.12.16 → specify_cli-0.12.17}/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, 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
|
|
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, 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
|
|
@@ -53,9 +53,10 @@ docs/dev
|
|
|
53
53
|
|
|
54
54
|
# The following directories/file are intentionally ignored so that they are not accidentally
|
|
55
55
|
# committed to the repository. They contain the scaffolding `specify init --integration copilot`
|
|
56
|
-
# does and they are meant for dogfooding Spec Kit during its own feature development.
|
|
56
|
+
# (or other agents) does and they are meant for dogfooding Spec Kit during its own feature development.
|
|
57
57
|
.github/agents/
|
|
58
58
|
.github/prompts/
|
|
59
59
|
.github/copilot-instructions.md
|
|
60
|
+
.grok/
|
|
60
61
|
.specify/
|
|
61
62
|
specs/
|
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- insert new changelog below this comment -->
|
|
4
4
|
|
|
5
|
+
## [0.12.17] - 2026-07-16
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- fix(extensions): resolve __SPECKIT_COMMAND tokens in auto-registered skills (#3544)
|
|
10
|
+
- fix(workflows): fail if/switch steps on non-list branch instead of crashing (#3515)
|
|
11
|
+
- feat(integrations): add Grok Build skills-based integration (#3535)
|
|
12
|
+
- fix(extensions/git): reject negative -Number in create-new-feature-branch.ps1 (#3538)
|
|
13
|
+
- test: cover preset constitution seeding through init CLI (#3297)
|
|
14
|
+
- fix(integration): preserve ai_skills on `use` for skills-mode Copilot (#3550) (#3551)
|
|
15
|
+
- [extension] Add Figma Starter extension to community catalog (#3547)
|
|
16
|
+
- [extension] Add Spec-Kit BDD extension to community catalog (#3548)
|
|
17
|
+
- [extension] Update Quality Gates (Enforcement Layer) extension to v0.3.2 (#3542)
|
|
18
|
+
- chore: release 0.12.16, begin 0.12.17.dev0 development (#3549)
|
|
19
|
+
|
|
5
20
|
## [0.12.16] - 2026-07-15
|
|
6
21
|
|
|
7
22
|
### Changed
|
|
@@ -54,6 +54,7 @@ The following community-contributed extensions are available in [`catalog.commun
|
|
|
54
54
|
| DocGuard — CDD Enforcement | Doc-integrity engine with MCP server, SARIF output, and zero-LLM core. Validates, scores, and traces documentation against code — 24 validators, stable finding codes, spec-kit hooks. Pure Node.js. | `docs` | Read+Write | [spec-kit-docguard](https://github.com/raccioly/docguard) |
|
|
55
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) |
|
|
56
56
|
| Extensify | Create and validate extensions and extension catalogs | `process` | Read+Write | [extensify](https://github.com/mnriem/spec-kit-extensions/tree/main/extensify) |
|
|
57
|
+
| Figma Starter | Turns a Figma section's screens into per-screen spec.md files, an app-level user-stories.md, and a build-order.md, then hands off to /speckit.specify | `integration` | Read+Write | [spec-kit-figma-starter](https://github.com/wavemaker/spec-kit-figma-starter) |
|
|
57
58
|
| 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) |
|
|
58
59
|
| 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) |
|
|
59
60
|
| Fleet Orchestrator | Orchestrate a full feature lifecycle with human-in-the-loop gates across all SpecKit phases | `process` | Read+Write | [spec-kit-fleet](https://github.com/sharathsatish/spec-kit-fleet) |
|
|
@@ -100,7 +101,7 @@ The following community-contributed extensions are available in [`catalog.commun
|
|
|
100
101
|
| Project Health Check | Diagnose a Spec Kit project and report health issues across structure, agents, features, scripts, extensions, and git | `visibility` | Read-only | [spec-kit-doctor](https://github.com/KhawarHabibKhan/spec-kit-doctor) |
|
|
101
102
|
| Project Status | Show current SDD workflow progress — active feature, artifact status, task completion, workflow phase, and extensions summary | `visibility` | Read-only | [spec-kit-status](https://github.com/KhawarHabibKhan/spec-kit-status) |
|
|
102
103
|
| QA Testing Extension | Systematic QA testing with browser-driven or CLI-based validation of acceptance criteria from spec | `code` | Read-only | [spec-kit-qa](https://github.com/arunt14/spec-kit-qa) |
|
|
103
|
-
| Quality Gates (Enforcement Layer) | Deterministic quality enforcement for Spec Kit
|
|
104
|
+
| Quality Gates (Enforcement Layer) | 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. | `process` | Read+Write | [spec-gates](https://github.com/schwichtgit/spec-gates) |
|
|
104
105
|
| RAG Azure Builder | Spec Kit extension for onboarding and operating an Azure RAG stack with guided workflows. | `process` | Read+Write | [spec-kit-extension-rag-azure-builder](https://github.com/Sertxito/spec-kit-extension-rag-azure-builder) |
|
|
105
106
|
| Ralph Loop | Autonomous implementation loop using AI agent CLI | `code` | Read+Write | [spec-kit-ralph](https://github.com/Rubiss-Projects/spec-kit-ralph) |
|
|
106
107
|
| Reconcile Extension | Reconcile implementation drift by surgically updating feature artifacts. | `docs` | Read+Write | [spec-kit-reconcile](https://github.com/stn1slv/spec-kit-reconcile) |
|
|
@@ -134,6 +135,7 @@ The following community-contributed extensions are available in [`catalog.commun
|
|
|
134
135
|
| Spec Sync | Detect and resolve drift between specs and implementation. AI-assisted resolution with human approval | `docs` | Read+Write | [spec-kit-sync](https://github.com/bgervin/spec-kit-sync) |
|
|
135
136
|
| Spec Trace | Build a requirement → test traceability matrix from spec.md and the test suite — surface untested requirements and orphan tests | `code` | Read+Write | [spec-kit-trace](https://github.com/Quratulain-bilal/spec-kit-trace) |
|
|
136
137
|
| Spec Validate | Comprehension validation, review gating, and approval state for spec-kit artifacts — staged quizzes, peer review SLA, and a hard gate before /speckit.implement | `process` | Read+Write | [spec-kit-spec-validate](https://github.com/aeltayeb/spec-kit-spec-validate) |
|
|
138
|
+
| Spec-Kit BDD | ATDD/BDD extension: convert specs to Gherkin scenarios, scaffold step definitions, and verify acceptance test coverage | `process` | Read+Write | [spec-kit-bdd](https://github.com/RSginer/spec-kit-bdd) |
|
|
137
139
|
| Spec2Cloud | Spec-driven workflow tuned for shipping to Azure | `process` | Read+Write | [spec2cloud](https://github.com/Azure-Samples/Spec2Cloud) |
|
|
138
140
|
| SpecKit Companion | Live spec-driven progress — lifecycle capture, status, resume, and a turbo pipeline profile | `visibility` | Read+Write | [speckit-companion](https://github.com/alfredoperez/speckit-companion) |
|
|
139
141
|
| SpecTest | Auto-generate test scaffolds from spec criteria, map coverage, and find untested requirements | `code` | Read+Write | [spec-kit-spectest](https://github.com/Quratulain-bilal/spec-kit-spectest) |
|
|
@@ -20,6 +20,7 @@ The Specify CLI supports a wide range of AI coding agents. When you run `specify
|
|
|
20
20
|
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | `gemini` | |
|
|
21
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
|
+
| [Grok Build](https://docs.x.ai/build/overview) | `grok` | Skills-based integration; installs skills into `.grok/skills` and invokes them as `/speckit-<command>` |
|
|
23
24
|
| [Hermes](https://github.com/NousResearch/hermes-agent) | `hermes` | Skills-based integration; installs skills globally into `~/.hermes/skills/` |
|
|
24
25
|
| [IBM Bob](https://www.ibm.com/products/bob) | `bob` | IDE-based agent |
|
|
25
26
|
| [Junie](https://junie.jetbrains.com/) | `junie` | |
|
|
@@ -249,7 +250,11 @@ Spec Kit tracks one default integration in `.specify/integration.json` with `def
|
|
|
249
250
|
|
|
250
251
|
### Which integrations are multi-install safe?
|
|
251
252
|
|
|
252
|
-
An integration is multi-install safe when it uses
|
|
253
|
+
An integration is multi-install safe when it uses a static, unique agent root and command directory, stable command invocation settings, and a separate install manifest whose managed files do not overlap another safe integration. Registry tests enforce those path and manifest invariants. Shared Spec Kit templates remain aligned to the single default integration.
|
|
254
|
+
|
|
255
|
+
The Isolation column below lists paths Spec Kit manages for that integration (skills/commands roots and any integration-owned rule files). It is not a full inventory of every file an agent may read.
|
|
256
|
+
|
|
257
|
+
**Agent-context defaults are separate.** The optional agent-context extension maps each integration to a default context file in `extensions/agent-context/agent-context-defaults.json`. Those defaults are independent of multi-install safety: several agents may share a root file such as `AGENTS.md` when the extension is enabled. Multi-install safety does not require a unique context file per safe integration.
|
|
253
258
|
|
|
254
259
|
The currently declared multi-install safe integrations are:
|
|
255
260
|
|
|
@@ -263,6 +268,7 @@ The currently declared multi-install safe integrations are:
|
|
|
263
268
|
| `cursor-agent` | `.cursor/skills`, `.cursor/rules/specify-rules.mdc` |
|
|
264
269
|
| `firebender` | `.firebender/commands`, `.firebender/rules/specify-rules.mdc` |
|
|
265
270
|
| `gemini` | `.gemini/commands`, `GEMINI.md` |
|
|
271
|
+
| `grok` | `.grok/skills` |
|
|
266
272
|
| `junie` | `.junie/commands`, `.junie/AGENTS.md` |
|
|
267
273
|
| `kilocode` | `.kilocode/workflows`, `.kilocode/rules/specify-rules.md` |
|
|
268
274
|
| `qodercli` | `.qoder/commands`, `QODER.md` |
|
|
@@ -272,7 +278,7 @@ The currently declared multi-install safe integrations are:
|
|
|
272
278
|
| `trae` | `.trae/skills`, `.trae/rules/project_rules.md` |
|
|
273
279
|
| `zcode` | `.zcode/skills`, `ZCODE.md` |
|
|
274
280
|
|
|
275
|
-
Integrations that share a
|
|
281
|
+
Integrations that share a command directory with another integration, require dynamic install paths such as `--commands-dir`, or merge shared tool settings are not declared safe by default. They can still be installed alongside another integration with `--force`.
|
|
276
282
|
|
|
277
283
|
### What happens to my changes when I uninstall or switch?
|
|
278
284
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "1.0",
|
|
3
|
-
"updated_at": "2026-07-
|
|
3
|
+
"updated_at": "2026-07-15T14:10:00Z",
|
|
4
4
|
"catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/extensions/catalog.community.json",
|
|
5
5
|
"extensions": {
|
|
6
6
|
"aide": {
|
|
@@ -395,6 +395,66 @@
|
|
|
395
395
|
"created_at": "2026-03-03T00:00:00Z",
|
|
396
396
|
"updated_at": "2026-03-03T00:00:00Z"
|
|
397
397
|
},
|
|
398
|
+
"bdd": {
|
|
399
|
+
"name": "Spec-Kit BDD",
|
|
400
|
+
"id": "bdd",
|
|
401
|
+
"description": "ATDD/BDD extension: convert specs to Gherkin scenarios, scaffold step definitions, and verify acceptance test coverage.",
|
|
402
|
+
"author": "RSginer",
|
|
403
|
+
"version": "1.0.2",
|
|
404
|
+
"download_url": "https://github.com/RSginer/spec-kit-bdd/archive/refs/tags/v1.0.2.zip",
|
|
405
|
+
"repository": "https://github.com/RSginer/spec-kit-bdd",
|
|
406
|
+
"homepage": "https://github.com/RSginer/spec-kit-bdd",
|
|
407
|
+
"documentation": "https://github.com/RSginer/spec-kit-bdd/blob/main/docs/usage.md",
|
|
408
|
+
"changelog": "https://github.com/RSginer/spec-kit-bdd/releases",
|
|
409
|
+
"license": "MIT",
|
|
410
|
+
"category": "process",
|
|
411
|
+
"effect": "read-write",
|
|
412
|
+
"requires": {
|
|
413
|
+
"speckit_version": ">=0.2.0",
|
|
414
|
+
"tools": [
|
|
415
|
+
{
|
|
416
|
+
"name": "pytest-bdd",
|
|
417
|
+
"required": false
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
"name": "behave",
|
|
421
|
+
"required": false
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
"name": "@cucumber/cucumber",
|
|
425
|
+
"required": false
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
"name": "cucumber",
|
|
429
|
+
"required": false
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
"name": "io.cucumber",
|
|
433
|
+
"required": false
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
"name": "SpecFlow",
|
|
437
|
+
"required": false
|
|
438
|
+
}
|
|
439
|
+
]
|
|
440
|
+
},
|
|
441
|
+
"provides": {
|
|
442
|
+
"commands": 3,
|
|
443
|
+
"hooks": 2
|
|
444
|
+
},
|
|
445
|
+
"tags": [
|
|
446
|
+
"bdd",
|
|
447
|
+
"gherkin",
|
|
448
|
+
"atdd",
|
|
449
|
+
"acceptance-testing",
|
|
450
|
+
"tdd"
|
|
451
|
+
],
|
|
452
|
+
"verified": false,
|
|
453
|
+
"downloads": 0,
|
|
454
|
+
"stars": 0,
|
|
455
|
+
"created_at": "2026-07-15T00:00:00Z",
|
|
456
|
+
"updated_at": "2026-07-15T00:00:00Z"
|
|
457
|
+
},
|
|
398
458
|
"blueprint": {
|
|
399
459
|
"name": "Blueprint",
|
|
400
460
|
"id": "blueprint",
|
|
@@ -1295,6 +1355,43 @@
|
|
|
1295
1355
|
"created_at": "2026-07-08T00:00:00Z",
|
|
1296
1356
|
"updated_at": "2026-07-08T00:00:00Z"
|
|
1297
1357
|
},
|
|
1358
|
+
"figma-starter": {
|
|
1359
|
+
"name": "Figma Starter",
|
|
1360
|
+
"id": "figma-starter",
|
|
1361
|
+
"description": "Turns a Figma section's screens into per-screen spec.md files, an app-level user-stories.md, and a build-order.md, then hands off to /speckit.specify.",
|
|
1362
|
+
"author": "WaveMaker",
|
|
1363
|
+
"version": "1.0.0",
|
|
1364
|
+
"download_url": "https://github.com/wavemaker/spec-kit-figma-starter/archive/refs/tags/v1.0.0.zip",
|
|
1365
|
+
"repository": "https://github.com/wavemaker/spec-kit-figma-starter",
|
|
1366
|
+
"homepage": "https://github.com/wavemaker/spec-kit-figma-starter",
|
|
1367
|
+
"documentation": "https://github.com/wavemaker/spec-kit-figma-starter/blob/main/README.md",
|
|
1368
|
+
"changelog": "https://github.com/wavemaker/spec-kit-figma-starter/blob/main/CHANGELOG.md",
|
|
1369
|
+
"license": "MIT",
|
|
1370
|
+
"category": "integration",
|
|
1371
|
+
"effect": "read-write",
|
|
1372
|
+
"requires": {
|
|
1373
|
+
"speckit_version": ">=0.1.0",
|
|
1374
|
+
"tools": [
|
|
1375
|
+
{ "name": "python3", "version": ">=3.8", "required": true }
|
|
1376
|
+
]
|
|
1377
|
+
},
|
|
1378
|
+
"provides": {
|
|
1379
|
+
"commands": 1,
|
|
1380
|
+
"hooks": 1
|
|
1381
|
+
},
|
|
1382
|
+
"tags": [
|
|
1383
|
+
"figma",
|
|
1384
|
+
"design",
|
|
1385
|
+
"design-to-spec",
|
|
1386
|
+
"ui",
|
|
1387
|
+
"frontend"
|
|
1388
|
+
],
|
|
1389
|
+
"verified": false,
|
|
1390
|
+
"downloads": 0,
|
|
1391
|
+
"stars": 0,
|
|
1392
|
+
"created_at": "2026-07-15T00:00:00Z",
|
|
1393
|
+
"updated_at": "2026-07-15T00:00:00Z"
|
|
1394
|
+
},
|
|
1298
1395
|
"fix-findings": {
|
|
1299
1396
|
"name": "Fix Findings",
|
|
1300
1397
|
"id": "fix-findings",
|
|
@@ -1438,13 +1535,14 @@
|
|
|
1438
1535
|
"gates": {
|
|
1439
1536
|
"name": "Quality Gates (Enforcement Layer)",
|
|
1440
1537
|
"id": "gates",
|
|
1441
|
-
"description": "Deterministic quality enforcement for Spec Kit
|
|
1538
|
+
"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.",
|
|
1442
1539
|
"author": "schwichtgit",
|
|
1443
|
-
"version": "0.
|
|
1444
|
-
"download_url": "https://github.com/schwichtgit/spec-gates/releases/download/v0.
|
|
1540
|
+
"version": "0.3.2",
|
|
1541
|
+
"download_url": "https://github.com/schwichtgit/spec-gates/releases/download/v0.3.2/gates-0.3.2.zip",
|
|
1445
1542
|
"repository": "https://github.com/schwichtgit/spec-gates",
|
|
1446
1543
|
"homepage": "https://github.com/schwichtgit/spec-gates",
|
|
1447
1544
|
"documentation": "https://github.com/schwichtgit/spec-gates/blob/main/docs/how-it-works.md",
|
|
1545
|
+
"changelog": "https://github.com/schwichtgit/spec-gates/releases",
|
|
1448
1546
|
"license": "MIT",
|
|
1449
1547
|
"category": "process",
|
|
1450
1548
|
"effect": "read-write",
|
|
@@ -1457,7 +1555,7 @@
|
|
|
1457
1555
|
},
|
|
1458
1556
|
{
|
|
1459
1557
|
"name": "git",
|
|
1460
|
-
"required":
|
|
1558
|
+
"required": false
|
|
1461
1559
|
},
|
|
1462
1560
|
{
|
|
1463
1561
|
"name": "node",
|
|
@@ -1470,8 +1568,8 @@
|
|
|
1470
1568
|
]
|
|
1471
1569
|
},
|
|
1472
1570
|
"provides": {
|
|
1473
|
-
"commands":
|
|
1474
|
-
"hooks":
|
|
1571
|
+
"commands": 8,
|
|
1572
|
+
"hooks": 2
|
|
1475
1573
|
},
|
|
1476
1574
|
"tags": [
|
|
1477
1575
|
"quality",
|
|
@@ -1484,7 +1582,7 @@
|
|
|
1484
1582
|
"downloads": 0,
|
|
1485
1583
|
"stars": 0,
|
|
1486
1584
|
"created_at": "2026-07-09T00:00:00Z",
|
|
1487
|
-
"updated_at": "2026-07-
|
|
1585
|
+
"updated_at": "2026-07-15T00:00:00Z"
|
|
1488
1586
|
},
|
|
1489
1587
|
"github-issues": {
|
|
1490
1588
|
"name": "GitHub Issues Integration 1",
|
|
@@ -41,6 +41,16 @@ if ($Help) {
|
|
|
41
41
|
exit 0
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
+
# -Number is [long], so PowerShell binds "-5" as -5 rather than rejecting it
|
|
45
|
+
# the way the bash/Python twins do (`^[0-9]+$`). A negative value would format
|
|
46
|
+
# via '{0:000}' to e.g. "-005" and produce a branch name starting with "-",
|
|
47
|
+
# which git refuses (refs cannot begin with a dash). Reject it here, before the
|
|
48
|
+
# description check, matching the bash twin's parse-time validation order.
|
|
49
|
+
if ($Number -lt 0) {
|
|
50
|
+
Write-Error 'Error: --number must be a non-negative integer'
|
|
51
|
+
exit 1
|
|
52
|
+
}
|
|
53
|
+
|
|
44
54
|
if (-not $FeatureDescription -or $FeatureDescription.Count -eq 0) {
|
|
45
55
|
Write-Error "Usage: ./create-new-feature-branch.ps1 [-Json] [-DryRun] [-AllowExistingBranch] [-ShortName <name>] [-Number N] [-Timestamp] <feature description>"
|
|
46
56
|
exit 1
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "1.0",
|
|
3
|
-
"updated_at": "2026-
|
|
3
|
+
"updated_at": "2026-07-15T00:00:00Z",
|
|
4
4
|
"catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/integrations/catalog.json",
|
|
5
5
|
"integrations": {
|
|
6
6
|
"claude": {
|
|
@@ -282,6 +282,15 @@
|
|
|
282
282
|
"repository": "https://github.com/github/spec-kit",
|
|
283
283
|
"tags": ["cli"]
|
|
284
284
|
},
|
|
285
|
+
"grok": {
|
|
286
|
+
"id": "grok",
|
|
287
|
+
"name": "Grok Build",
|
|
288
|
+
"version": "1.0.0",
|
|
289
|
+
"description": "xAI Grok Build CLI skills-based integration",
|
|
290
|
+
"author": "spec-kit-core",
|
|
291
|
+
"repository": "https://github.com/github/spec-kit",
|
|
292
|
+
"tags": ["cli", "skills", "xai"]
|
|
293
|
+
},
|
|
285
294
|
"hermes": {
|
|
286
295
|
"id": "hermes",
|
|
287
296
|
"name": "Hermes Agent",
|
|
@@ -12,7 +12,7 @@ from __future__ import annotations
|
|
|
12
12
|
DOLLAR_SKILLS_AGENTS: frozenset[str] = frozenset({"codex", "zcode"})
|
|
13
13
|
|
|
14
14
|
# Agents that always render /speckit-<name>, regardless of ai_skills.
|
|
15
|
-
ALWAYS_SLASH_AGENTS: frozenset[str] = frozenset({"devin", "trae", "zed"})
|
|
15
|
+
ALWAYS_SLASH_AGENTS: frozenset[str] = frozenset({"devin", "grok", "trae", "zed"})
|
|
16
16
|
|
|
17
17
|
# Agents that render /speckit-<name> only when ai_skills is enabled.
|
|
18
18
|
CONDITIONAL_SLASH_AGENTS: frozenset[str] = frozenset(
|
|
@@ -701,6 +701,7 @@ def register(app: typer.Typer) -> None:
|
|
|
701
701
|
copilot_skill_mode = selected_ai == "copilot" and _is_skills_integration
|
|
702
702
|
devin_skill_mode = selected_ai == "devin"
|
|
703
703
|
zed_skill_mode = selected_ai == "zed" and _is_skills_integration
|
|
704
|
+
grok_skill_mode = selected_ai == "grok" and _is_skills_integration
|
|
704
705
|
cline_skill_mode = selected_ai == "cline"
|
|
705
706
|
native_skill_mode = (
|
|
706
707
|
codex_skill_mode
|
|
@@ -713,6 +714,7 @@ def register(app: typer.Typer) -> None:
|
|
|
713
714
|
or copilot_skill_mode
|
|
714
715
|
or devin_skill_mode
|
|
715
716
|
or zed_skill_mode
|
|
717
|
+
or grok_skill_mode
|
|
716
718
|
)
|
|
717
719
|
|
|
718
720
|
if codex_skill_mode:
|
|
@@ -745,6 +747,11 @@ def register(app: typer.Typer) -> None:
|
|
|
745
747
|
f"{step_num}. Start Zed in this project directory; spec-kit skills were installed to [cyan].agents/skills[/cyan]"
|
|
746
748
|
)
|
|
747
749
|
step_num += 1
|
|
750
|
+
if grok_skill_mode:
|
|
751
|
+
steps_lines.append(
|
|
752
|
+
f"{step_num}. Start Grok Build in this project directory; spec-kit skills were installed to [cyan].grok/skills[/cyan]"
|
|
753
|
+
)
|
|
754
|
+
step_num += 1
|
|
748
755
|
usage_label = "skills" if native_skill_mode else "slash commands"
|
|
749
756
|
|
|
750
757
|
from .._invocation_style import (
|
|
@@ -1004,6 +1004,7 @@ class ExtensionManager:
|
|
|
1004
1004
|
from .. import load_init_options
|
|
1005
1005
|
from ..agents import CommandRegistrar
|
|
1006
1006
|
from ..integrations import get_integration
|
|
1007
|
+
from ..integrations.base import IntegrationBase
|
|
1007
1008
|
|
|
1008
1009
|
written: List[str] = []
|
|
1009
1010
|
opts = load_init_options(self.project_root)
|
|
@@ -1015,6 +1016,30 @@ class ExtensionManager:
|
|
|
1015
1016
|
registrar = CommandRegistrar()
|
|
1016
1017
|
agent_config = registrar.AGENT_CONFIGS.get(selected_ai, {})
|
|
1017
1018
|
integration = get_integration(selected_ai)
|
|
1019
|
+
ai_skills_enabled = is_ai_skills_enabled(opts)
|
|
1020
|
+
|
|
1021
|
+
def _resolve_command_ref_tokens(body: str) -> str:
|
|
1022
|
+
"""Resolve explicit command-ref tokens with the active skill style."""
|
|
1023
|
+
|
|
1024
|
+
def _replacement(match: re.Match[str]) -> str:
|
|
1025
|
+
command_name = "speckit." + match.group(1).lower().replace("_", ".")
|
|
1026
|
+
if is_dollar_skills_agent(selected_ai, ai_skills_enabled):
|
|
1027
|
+
return "$" + command_name.replace("speckit.", "speckit-").replace(
|
|
1028
|
+
".", "-"
|
|
1029
|
+
)
|
|
1030
|
+
if is_slash_skills_agent(selected_ai, ai_skills_enabled):
|
|
1031
|
+
return "/" + command_name.replace("speckit.", "speckit-").replace(
|
|
1032
|
+
".", "-"
|
|
1033
|
+
)
|
|
1034
|
+
if integration is not None:
|
|
1035
|
+
return integration.build_command_invocation(command_name)
|
|
1036
|
+
return IntegrationBase.resolve_command_refs(
|
|
1037
|
+
match.group(0), agent_config.get("invoke_separator", ".")
|
|
1038
|
+
)
|
|
1039
|
+
|
|
1040
|
+
return re.sub(
|
|
1041
|
+
r"__SPECKIT_COMMAND_([A-Z][A-Z0-9_]*)__", _replacement, body
|
|
1042
|
+
)
|
|
1018
1043
|
|
|
1019
1044
|
for cmd_info in manifest.commands:
|
|
1020
1045
|
cmd_name = cmd_info["name"]
|
|
@@ -1086,6 +1111,7 @@ class ExtensionManager:
|
|
|
1086
1111
|
body = registrar.resolve_skill_placeholders(
|
|
1087
1112
|
selected_ai, frontmatter, body, self.project_root, extension_id=manifest.id
|
|
1088
1113
|
)
|
|
1114
|
+
body = _resolve_command_ref_tokens(body)
|
|
1089
1115
|
|
|
1090
1116
|
original_desc = frontmatter.get("description", "")
|
|
1091
1117
|
description = original_desc or f"Extension command: {cmd_name}"
|
|
@@ -63,6 +63,7 @@ def _register_builtins() -> None:
|
|
|
63
63
|
from .gemini import GeminiIntegration
|
|
64
64
|
from .generic import GenericIntegration
|
|
65
65
|
from .goose import GooseIntegration
|
|
66
|
+
from .grok import GrokIntegration
|
|
66
67
|
from .hermes import HermesIntegration
|
|
67
68
|
from .junie import JunieIntegration
|
|
68
69
|
from .kilocode import KilocodeIntegration
|
|
@@ -99,6 +100,7 @@ def _register_builtins() -> None:
|
|
|
99
100
|
_register(GeminiIntegration())
|
|
100
101
|
_register(GenericIntegration())
|
|
101
102
|
_register(GooseIntegration())
|
|
103
|
+
_register(GrokIntegration())
|
|
102
104
|
_register(HermesIntegration())
|
|
103
105
|
_register(JunieIntegration())
|
|
104
106
|
_register(KilocodeIntegration())
|
|
@@ -260,6 +260,7 @@ def _update_init_options_for_integration(
|
|
|
260
260
|
project_root: Path,
|
|
261
261
|
integration: Any,
|
|
262
262
|
script_type: str | None = None,
|
|
263
|
+
parsed_options: dict[str, Any] | None = None,
|
|
263
264
|
) -> None:
|
|
264
265
|
"""Update init-options.json to reflect *integration* as the active one.
|
|
265
266
|
|
|
@@ -278,7 +279,17 @@ def _update_init_options_for_integration(
|
|
|
278
279
|
opts["speckit_version"] = _get_speckit_version()
|
|
279
280
|
if script_type:
|
|
280
281
|
opts["script"] = script_type
|
|
281
|
-
|
|
282
|
+
# Skills mode is either intrinsic (SkillsIntegration), set on the instance
|
|
283
|
+
# during setup() (_skills_mode), or requested via parsed options (e.g.
|
|
284
|
+
# Copilot's --skills, persisted as parsed_options["skills"]). The latter is
|
|
285
|
+
# the only signal available on the `use` path, where no setup() runs and a
|
|
286
|
+
# fresh integration instance has _skills_mode == False (issue #3550).
|
|
287
|
+
skills_mode = (
|
|
288
|
+
isinstance(integration, SkillsIntegration)
|
|
289
|
+
or getattr(integration, "_skills_mode", False)
|
|
290
|
+
or bool((parsed_options or {}).get("skills"))
|
|
291
|
+
)
|
|
292
|
+
if skills_mode:
|
|
282
293
|
opts["ai_skills"] = True
|
|
283
294
|
else:
|
|
284
295
|
opts.pop("ai_skills", None)
|
|
@@ -334,7 +345,9 @@ def _set_default_integration(
|
|
|
334
345
|
) from exc
|
|
335
346
|
|
|
336
347
|
_write_integration_json(project_root, key, installed_keys, settings)
|
|
337
|
-
_update_init_options_for_integration(
|
|
348
|
+
_update_init_options_for_integration(
|
|
349
|
+
project_root, integration, script_type=resolved_script, parsed_options=parsed_options
|
|
350
|
+
)
|
|
338
351
|
|
|
339
352
|
|
|
340
353
|
def _set_default_integration_or_exit(*args: Any, **kwargs: Any) -> None:
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"""Grok Build integration — skills-based agent.
|
|
2
|
+
|
|
3
|
+
Grok Build discovers project skills from ``.grok/skills/speckit-<name>/SKILL.md``
|
|
4
|
+
(and also scans ``.agents/skills/``). Spec Kit installs into the native
|
|
5
|
+
``.grok/skills`` tree so skills take highest local priority.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from ..base import SkillsIntegration
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class GrokIntegration(SkillsIntegration):
|
|
14
|
+
"""Integration for xAI Grok Build CLI."""
|
|
15
|
+
|
|
16
|
+
key = "grok"
|
|
17
|
+
config = {
|
|
18
|
+
"name": "Grok Build",
|
|
19
|
+
"folder": ".grok/",
|
|
20
|
+
"commands_subdir": "skills",
|
|
21
|
+
"install_url": "https://docs.x.ai/build/overview",
|
|
22
|
+
"requires_cli": True,
|
|
23
|
+
}
|
|
24
|
+
registrar_config = {
|
|
25
|
+
"dir": ".grok/skills",
|
|
26
|
+
"format": "markdown",
|
|
27
|
+
"args": "$ARGUMENTS",
|
|
28
|
+
"extension": "/SKILL.md",
|
|
29
|
+
}
|
|
30
|
+
multi_install_safe = True
|
|
31
|
+
|
|
32
|
+
def build_exec_args(
|
|
33
|
+
self,
|
|
34
|
+
prompt: str,
|
|
35
|
+
*,
|
|
36
|
+
model: str | None = None,
|
|
37
|
+
output_json: bool = True,
|
|
38
|
+
) -> list[str] | None:
|
|
39
|
+
"""Build CLI arguments for non-interactive ``grok`` execution.
|
|
40
|
+
|
|
41
|
+
Mandatory headless flag:
|
|
42
|
+
|
|
43
|
+
* ``--always-approve`` — auto-approve tool executions so workflow
|
|
44
|
+
dispatch and ``dispatch_command()`` are not blocked at permission
|
|
45
|
+
gates (same role as Cursor's ``--force`` / Copilot's ``--yolo``).
|
|
46
|
+
"""
|
|
47
|
+
if not self.config or not self.config.get("requires_cli"):
|
|
48
|
+
return None
|
|
49
|
+
args = [
|
|
50
|
+
self._resolve_executable(),
|
|
51
|
+
"-p",
|
|
52
|
+
prompt,
|
|
53
|
+
"--always-approve",
|
|
54
|
+
]
|
|
55
|
+
self._apply_extra_args_env_var(args)
|
|
56
|
+
if model:
|
|
57
|
+
args.extend(["--model", model])
|
|
58
|
+
if output_json:
|
|
59
|
+
args.extend(["--output-format", "json"])
|
|
60
|
+
return args
|
{specify_cli-0.12.16 → specify_cli-0.12.17}/src/specify_cli/workflows/steps/if_then/__init__.py
RENAMED
|
@@ -22,10 +22,33 @@ class IfThenStep(StepBase):
|
|
|
22
22
|
result = evaluate_condition(condition, context)
|
|
23
23
|
|
|
24
24
|
if result:
|
|
25
|
+
branch_name = "then"
|
|
25
26
|
branch = config.get("then", [])
|
|
26
27
|
else:
|
|
28
|
+
branch_name = "else"
|
|
27
29
|
branch = config.get("else", [])
|
|
28
30
|
|
|
31
|
+
# The engine does not auto-validate step config (see
|
|
32
|
+
# ``WorkflowEngine.load_workflow``), and it feeds ``next_steps`` straight
|
|
33
|
+
# into ``_execute_steps`` which iterates them as step mappings. A
|
|
34
|
+
# non-list branch (a single mapping or scalar authoring mistake) would
|
|
35
|
+
# otherwise be iterated element-wise — a dict yields its string keys, a
|
|
36
|
+
# str its characters — and crash the whole run with AttributeError on
|
|
37
|
+
# ``.get()``. ``validate`` already rejects a non-list branch; fail this
|
|
38
|
+
# step loudly on an unvalidated run instead, mirroring the switch/fan-out
|
|
39
|
+
# steps. A missing ``else`` defaults to ``[]`` and stays valid.
|
|
40
|
+
if branch is None and branch_name == "else":
|
|
41
|
+
branch = []
|
|
42
|
+
elif not isinstance(branch, list):
|
|
43
|
+
return StepResult(
|
|
44
|
+
status=StepStatus.FAILED,
|
|
45
|
+
output={"condition_result": result},
|
|
46
|
+
error=(
|
|
47
|
+
f"If step {config.get('id', '?')!r}: {branch_name!r} must be "
|
|
48
|
+
f"a list of steps, got {type(branch).__name__}."
|
|
49
|
+
),
|
|
50
|
+
)
|
|
51
|
+
|
|
29
52
|
return StepResult(
|
|
30
53
|
status=StepStatus.COMPLETED,
|
|
31
54
|
output={"condition_result": result},
|