specify-cli 0.13.3__tar.gz → 0.13.4__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.13.3 → specify_cli-0.13.4}/.devcontainer/post-create.sh +11 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/agent_request.yml +1 -1
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/bug_report.yml +1 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/feature_request.yml +1 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/CHANGELOG.md +25 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/PKG-INFO +1 -1
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/community/presets.md +1 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/concepts/complex-features.md +8 -4
- specify_cli-0.13.4/docs/concepts/spec-of-specs.md +171 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/installation.md +4 -2
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/core.md +1 -1
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/integrations.md +1 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/toc.yml +2 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/upgrade.md +75 -69
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +7 -1
- {specify_cli-0.13.3 → specify_cli-0.13.4}/integrations/catalog.json +10 -1
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/catalog.community.json +29 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/pyproject.toml +1 -1
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/commands_impl/catalog_config.py +9 -2
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/models/catalog.py +15 -1
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/models/manifest.py +5 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/commands/init.py +2 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/extensions/__init__.py +5 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/__init__.py +2 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/catalog.py +34 -14
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/cline/__init__.py +13 -0
- specify_cli-0.13.4/src/specify_cli/integrations/droid/__init__.py +135 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/_commands.py +2 -2
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/catalog.py +5 -1
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/expressions.py +4 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/command/__init__.py +5 -1
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/gate/__init__.py +5 -1
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/prompt/__init__.py +4 -1
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/contract/test_catalog_schema.py +36 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/contract/test_manifest_schema.py +10 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/git/test_git_extension.py +16 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_base.py +18 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_catalog.py +67 -0
- specify_cli-0.13.4/tests/integrations/test_integration_droid.py +262 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_forge.py +36 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_registry.py +1 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_agent_config_consistency.py +1 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_extensions.py +36 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_workflows.py +121 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_catalog_config.py +41 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.devcontainer/devcontainer.json +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.editorconfig +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.gitattributes +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/CODEOWNERS +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/bundle_submission.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/preset_submission.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/aw/actions-lock.json +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/dependabot.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/scripts/check_security_requirements.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/security-audit-requirements.txt +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/skills/add-community-extension/SKILL.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/RELEASE-PROCESS.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/add-community-bundle.lock.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/add-community-bundle.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/add-community-extension.lock.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/add-community-extension.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/add-community-preset.lock.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/add-community-preset.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/bug-assess.lock.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/bug-assess.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/bug-fix.lock.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/bug-fix.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/bug-test.lock.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/bug-test.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/catalog-assign.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/codeql.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/docs.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/lint.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/publish-pypi.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/release-trigger.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/release.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/security.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/stale.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/test.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.gitignore +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.markdownlint-cli2.jsonc +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.pre-commit-config.yaml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/.zenodo.json +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/AGENTS.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/CITATION.cff +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/CODE_OF_CONDUCT.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/CONTRIBUTING.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/DEVELOPMENT.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/LICENSE +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/README.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/SECURITY.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/SUPPORT.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/bundles/catalog.community.json +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/.gitignore +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/README.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/community/bundles.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/community/extensions.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/community/friends.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/community/overview.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/community/walkthroughs.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/concepts/sdd.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/concepts/spec-persistence.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/docfx.json +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/guides/evolving-specs.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/guides/monorepo.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/index.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/install/air-gapped.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/install/one-time.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/install/pipx.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/install/pypi.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/install/uv.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/local-development.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/quickstart.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/agentic-bugfix.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/agentic-sdd.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/authentication.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/bundles.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/extensions.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/overview.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/presets.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/workflows.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/template/public/main.css +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/examples/bundles/business-analyst/README.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/examples/bundles/business-analyst/bundle.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/examples/bundles/developer/README.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/examples/bundles/developer/bundle.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/examples/bundles/product-manager/README.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/examples/bundles/product-manager/bundle.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/examples/bundles/security-researcher/README.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/examples/bundles/security-researcher/bundle.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/EXTENSION-API-REFERENCE.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/EXTENSION-PUBLISHING-GUIDE.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/EXTENSION-USER-GUIDE.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/README.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/agent-context/README.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/agent-context/agent-context-config.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/agent-context/agent-context-defaults.json +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/agent-context/extension.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/agent-context/scripts/bash/update-agent-context.sh +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/agent-context/scripts/python/update_agent_context.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/assess/README.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/assess/commands/speckit.assess.decide.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/assess/commands/speckit.assess.define.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/assess/commands/speckit.assess.intake.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/assess/commands/speckit.assess.research.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/assess/commands/speckit.assess.shape.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/assess/extension.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/bug/README.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/bug/commands/speckit.bug.assess.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/bug/commands/speckit.bug.fix.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/bug/commands/speckit.bug.test.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/bug/extension.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/catalog.community.json +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/catalog.json +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/README.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/commands/speckit.git.commit.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/commands/speckit.git.feature.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/commands/speckit.git.initialize.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/commands/speckit.git.remote.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/commands/speckit.git.validate.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/config-template.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/extension.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/git-config.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/bash/auto-commit.sh +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/bash/git-common.sh +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/python/auto_commit.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/python/create_new_feature_branch.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/python/git_common.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/python/initialize_repo.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/selftest/commands/selftest.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/selftest/extension.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/template/.gitignore +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/template/CHANGELOG.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/template/EXAMPLE-README.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/template/LICENSE +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/template/README.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/template/commands/example.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/template/config-template.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/template/extension.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/integrations/CONTRIBUTING.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/integrations/README.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/integrations/catalog.community.json +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/media/bootstrap-claude-code.gif +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/media/logo_large.webp +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/media/logo_small.webp +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/media/spec-kit-video-header.jpg +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/media/specify_cli.gif +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/newsletters/2026-April.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/newsletters/2026-February.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/newsletters/2026-June.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/newsletters/2026-March.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/newsletters/2026-May.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/ARCHITECTURE.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/PUBLISHING.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/README.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/catalog.json +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/lean/README.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/lean/commands/speckit.constitution.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/lean/commands/speckit.implement.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/lean/commands/speckit.plan.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/lean/commands/speckit.specify.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/lean/commands/speckit.tasks.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/lean/preset.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/scaffold/README.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/scaffold/commands/speckit.specify.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/scaffold/preset.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/scaffold/templates/myext-template.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/scaffold/templates/spec-template.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/self-test/commands/speckit.specify.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/self-test/commands/speckit.wrap-test.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/self-test/preset.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/self-test/templates/checklist-template.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/self-test/templates/constitution-template.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/self-test/templates/plan-template.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/self-test/templates/spec-template.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/self-test/templates/tasks-template.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/bash/check-prerequisites.sh +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/bash/common.sh +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/bash/create-new-feature.sh +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/bash/setup-plan.sh +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/bash/setup-tasks.sh +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/powershell/check-prerequisites.ps1 +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/powershell/common.ps1 +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/powershell/create-new-feature.ps1 +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/powershell/setup-plan.ps1 +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/powershell/setup-tasks.ps1 +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/python/check_prerequisites.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/python/common.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/python/create_new_feature.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/python/setup_plan.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/python/setup_tasks.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/spec-driven.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/spec-kit.code-workspace +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_agent_config.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_assets.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_console.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_github_http.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_init_options.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_invocation_style.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_project.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_toml_string.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_utils.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_version.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/agents.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/authentication/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/authentication/azure_devops.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/authentication/base.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/authentication/config.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/authentication/github.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/authentication/http.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/commands_impl/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/lib/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/lib/project.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/lib/versioning.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/lib/yamlio.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/models/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/models/records.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/adapters.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/catalog_stack.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/conflict.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/installer.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/packager.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/primitives.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/references.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/resolver.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/validator.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/catalogs.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/commands/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/commands/bundle/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/extensions/_commands.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integration_runtime.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integration_scaffold.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integration_state.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integration_status.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/_commands.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/_helpers.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/_install_commands.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/_migrate_commands.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/_query_commands.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/_scaffold_commands.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/agy/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/amp/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/auggie/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/base.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/bob/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/claude/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/codex/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/copilot/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/devin/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/firebender/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/forge/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/gemini/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/generic/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/goose/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/grok/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/hermes/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/junie/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/kilocode/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/kimi/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/lingma/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/manifest.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/omp/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/opencode/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/pi/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/qwen/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/rovodev/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/shai/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/trae/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/vibe/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/zcode/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/zed/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/presets/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/presets/_commands.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/shared_infra.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/base.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/engine.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/overlays/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/overlays/_commands.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/overlays/composer.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/overlays/layer_sources.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/overlays/merge.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/overlays/schema.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/do_while/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/fan_in/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/fan_out/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/if_then/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/init/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/shell/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/switch/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/while_loop/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/checklist-template.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/analyze.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/checklist.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/clarify.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/constitution.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/converge.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/implement.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/plan.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/specify.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/tasks.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/taskstoissues.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/constitution-template.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/plan-template.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/spec-template.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/tasks-template.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/vscode-settings.json +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/auth_helpers.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/bundler_helpers.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/conftest.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/contract/test_bundle_cli.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/assess/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/assess/test_assess_extension.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/bug/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/bug/test_bug_extension.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/git/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/git/test_git_extension_python_parity.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/test_agent_context_cli_free.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/test_extension_agent_context.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/test_update_agent_context_feature_json.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/test_update_agent_context_python_parity.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/hooks/TESTING.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/hooks/plan.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/hooks/spec.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/hooks/tasks.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/http_helpers.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integration/test_bundler_catalog_stack.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integration/test_bundler_init_install.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integration/test_bundler_install_flow.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integration/test_bundler_local_install.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integration/test_bundler_offline.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integration/test_bundler_security_paths.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/__init__.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/conftest.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_cli.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_extra_args.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_home_isolation.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_agy.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_amp.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_auggie.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_base_markdown.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_base_skills.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_base_toml.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_base_yaml.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_bob.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_claude.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_cline.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_codebuddy.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_codex.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_copilot.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_cursor_agent.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_devin.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_firebender.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_gemini.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_generic.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_goose.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_grok.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_hermes.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_junie.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_kilocode.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_kimi.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_kiro_cli.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_lingma.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_omp.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_opencode.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_pi.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_qodercli.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_qwen.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_rovodev.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_scaffold.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_shai.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_state.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_subcommand.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_tabnine.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_trae.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_vibe.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_zcode.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_zed.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_manifest.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_skill_frontmatter_quoting.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/parity_helpers.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/self_upgrade_helpers.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_authentication.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_branch_numbering.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_check_prerequisites_paths_only.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_check_prerequisites_python_parity.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_check_tool.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_cli_version.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_command_template_py_scripts.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_commands_package.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_console_imports.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_create_new_feature_python_parity.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_extension_registration.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_extension_skills.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_extension_update_hardening.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_github_http.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_github_workflows.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_init_dir.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_init_dir_cli.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_live_transient_windows.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_merge.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_post_process.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_presets.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_ps1_encoding.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_registrar_path_traversal.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_security_workflow.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_self_upgrade_detection.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_self_upgrade_execution.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_self_upgrade_guidance.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_self_upgrade_verification.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_setup_plan_feature_json.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_setup_plan_no_overwrite.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_setup_plan_python_parity.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_setup_tasks.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_setup_tasks_python_parity.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_shared_infra_integrity.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_skill_placeholder_py.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_timestamp_branches.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_upgrade.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_utils.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_utils_assets_imports.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_version_imports.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_workflow_run_without_project.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundle_download_url.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_adapters.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_conflict.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_packager.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_primitives.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_records.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_references.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_resolver.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_validator.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_versioning.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/workflows/conftest.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/workflows/test_overlay_commands.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/workflows/test_overlay_composer.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/workflows/test_overlay_layer_sources.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/workflows/test_overlay_merge.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/workflows/test_overlay_schema.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/workflows/test_overlay_security.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/workflows/test_resolver_integration.py +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/workflows/ARCHITECTURE.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/workflows/PUBLISHING.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/workflows/README.md +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/workflows/catalog.community.json +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/workflows/catalog.json +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/workflows/speckit/workflow.yml +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/workflows/step-catalog.community.json +0 -0
- {specify_cli-0.13.3 → specify_cli-0.13.4}/workflows/step-catalog.json +0 -0
|
@@ -97,6 +97,17 @@ echo -e "\n🤖 Installing CodeBuddy CLI..."
|
|
|
97
97
|
run_command "npm install -g @tencent-ai/codebuddy-code@latest"
|
|
98
98
|
echo "✅ Done"
|
|
99
99
|
|
|
100
|
+
echo -e "\n🤖 Installing Factory Droid CLI..."
|
|
101
|
+
run_command "npm install -g droid@latest"
|
|
102
|
+
|
|
103
|
+
if ! command -v droid >/dev/null 2>&1; then
|
|
104
|
+
echo -e "\033[0;31m[ERROR] Droid CLI installation did not create 'droid' in PATH.\033[0m" >&2
|
|
105
|
+
exit 1
|
|
106
|
+
fi
|
|
107
|
+
|
|
108
|
+
run_command "droid --version > /dev/null"
|
|
109
|
+
echo "✅ Done"
|
|
110
|
+
|
|
100
111
|
# Installing UV (Python package manager)
|
|
101
112
|
echo -e "\n🐍 Installing UV - Python Package Manager..."
|
|
102
113
|
run_command "pipx install uv"
|
|
@@ -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, Grok Build, Hermes Agent, IBM Bob, Junie, Kilo Code, Kimi Code, Kiro CLI, Lingma, Mistral Vibe, Oh My Pi, opencode, Pi Coding Agent, Qoder CLI, Qwen Code, RovoDev ACLI, SHAI, Tabnine CLI, Trae, ZCode, Zed
|
|
11
|
+
**Currently supported agents**: Amp, Antigravity, Auggie CLI, Claude Code, Cline, CodeBuddy, Codex CLI, Cursor, Devin for Terminal, Factory Droid, Firebender, Forge, Gemini CLI, GitHub Copilot, Goose, Grok Build, Hermes Agent, IBM Bob, Junie, Kilo Code, Kimi Code, Kiro CLI, Lingma, Mistral Vibe, Oh My Pi, opencode, Pi Coding Agent, Qoder CLI, Qwen Code, RovoDev ACLI, SHAI, Tabnine CLI, Trae, ZCode, Zed
|
|
12
12
|
|
|
13
13
|
- type: input
|
|
14
14
|
id: agent-name
|
|
@@ -2,6 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- insert new changelog below this comment -->
|
|
4
4
|
|
|
5
|
+
## [0.13.4] - 2026-07-22
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- docs(concepts): document the spec-of-specs feature breakdown approach (#3648)
|
|
10
|
+
- fix(scripts): git-ext PowerShell emits the '# To persist' SPECIFY_FEATURE hint (parity) (#3632)
|
|
11
|
+
- fix(integrations): validate cached catalog shape before returning it (#3627)
|
|
12
|
+
- fix(bundler): reject non-list 'catalogs' in bundle-catalogs.yml with a clean error (#3623)
|
|
13
|
+
- fix(bundler): guard lazy .hostname ValueError in catalog add_source (#3644)
|
|
14
|
+
- Add Intake Authoring Governance preset to community catalog (#3643)
|
|
15
|
+
- feat: add Factory Droid CLI integration (#822) (#3587)
|
|
16
|
+
- docs(installation): document the 'py' (Python) script type (#3640)
|
|
17
|
+
- fix(init): show hyphenated /speckit-<name> in Next Steps for Forge projects (#3642)
|
|
18
|
+
- fix(extensions): render hyphenated hook invocations for Forge projects (#3641)
|
|
19
|
+
- fix(workflows): workflow add detects local YAML files case-insensitively (#3633)
|
|
20
|
+
- fix(workflows): list-literal expression ignores trailing/empty commas (#3631)
|
|
21
|
+
- fix(workflows): StepRegistry.add tolerates a corrupted non-dict existing entry (#3630)
|
|
22
|
+
- fix(bundler): reject non-mapping 'integration' in a bundle manifest (#3629)
|
|
23
|
+
- fix(workflows): command/prompt steps fail cleanly on a non-string integration (#3626)
|
|
24
|
+
- docs(core): document the 'py' (Python) --script type in the init option table (#3625)
|
|
25
|
+
- fix(workflows): gate prompt uses isdecimal() so a superscript digit doesn't crash (#3624)
|
|
26
|
+
- fix(integrations): Cline dispatches hyphenated /speckit-<cmd> invocations (#3622)
|
|
27
|
+
- docs(upgrade): document integration upgrade / extension update as the project-files upgrade path (#3326)
|
|
28
|
+
- chore: release 0.13.3, begin 0.13.4.dev0 development (#3645)
|
|
29
|
+
|
|
5
30
|
## [0.13.3] - 2026-07-22
|
|
6
31
|
|
|
7
32
|
### Changed
|
|
@@ -19,6 +19,7 @@ The following community-contributed presets customize how Spec Kit behaves — o
|
|
|
19
19
|
| Explicit Task Dependencies | Adds explicit `(depends on T###)` dependency declarations and an Execution Wave DAG to tasks.md for parallel scheduling | 1 template, 1 command | — | [spec-kit-preset-explicit-task-dependencies](https://github.com/Quratulain-bilal/spec-kit-preset-explicit-task-dependencies) |
|
|
20
20
|
| Fiction Book Writing | It adapts the Spec-Driven Development workflow for storytelling to create books or audiobooks (with annotations) in 12 languages: features become story elements, specs become story briefs, plans become story structures, and tasks become scene-by-scene writing tasks. Supports single and multi-POV, all major plot structure frameworks, and two style modes: an author voice sample or humanized AI prose principles. Supports interactive elements like brainstorming, interview, roleplay, and extras like statistics, cover builder, illustration builder, and bio command. Export with templates for KDP, D2D, etc. | 26 templates, 34 commands, 2 scripts | — | [speckit-preset-fiction-book-writing](https://github.com/adaumann/speckit-preset-fiction-book-writing) |
|
|
21
21
|
| Game Narrative Writing | Preset for game narrative design and interactive storytelling. It adapts the Spec-Driven Development workflow for game narratives: features become story mechanics, specs become narrative briefs, plans become story maps, and tasks become dialogue and scene-writing tasks. Supports branching narratives, player agency systems, state machines, and interactive dialogue trees. | 37 templates, 34 commands, 5 scripts | — | [speckit-preset-game-narrative-writing](https://github.com/adaumann/speckit-preset-game-narrative-writing) |
|
|
22
|
+
| Intake Authoring Governance | Creates traceable Spec Kit intake files and receipts from ordered text sources while preserving clarification, update, and delivery-authority boundaries. | 7 templates, 2 commands, 2 scripts | — | [spec-kit-preset-intake-authoring-governance](https://github.com/hindermath/spec-kit-preset-intake-authoring-governance) |
|
|
22
23
|
| Intake Review Governance | Adds hash-bound review, repair, and status gates for single, series, and campaign intake files before interactive, autonomous, or parallel Spec Kit execution. | 8 templates, 3 commands, 2 scripts | — | [spec-kit-preset-intake-review-governance](https://github.com/hindermath/spec-kit-preset-intake-review-governance) |
|
|
23
24
|
| iSAQB Architecture Governance | Adds general iSAQB/CPSA-F and arc42 software-architecture governance, including audit-ready Spec Kit run evidence for architecture goals, views, quality scenarios, ADRs, risks, and technical debt. | 13 templates, 3 commands | — | [spec-kit-preset-isaqb-architecture-governance](https://github.com/hindermath/spec-kit-preset-isaqb-architecture-governance) |
|
|
24
25
|
| Jira Issue Tracking | Overrides `speckit.taskstoissues` to create Jira epics, stories, and tasks instead of GitHub Issues via Atlassian MCP tools | 1 command | — | [spec-kit-preset-jira](https://github.com/luno/spec-kit-preset-jira) |
|
|
@@ -63,10 +63,14 @@ independently specified sub-features. Each sub-feature gets its own
|
|
|
63
63
|
`spec.md`, `plan.md`, and `tasks.md`, and runs through its own
|
|
64
64
|
specify/plan/tasks/implement cycle.
|
|
65
65
|
|
|
66
|
-
This is the "spec of specs" approach:
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
This is the "spec of specs" approach: a first pass breaks a massive feature into
|
|
67
|
+
smaller, self-contained specs that can each be implemented without overwhelming the
|
|
68
|
+
model. It adds the most overhead, so reserve it for features that are too large to
|
|
69
|
+
handle any other way.
|
|
70
|
+
|
|
71
|
+
See [Spec of Specs](spec-of-specs.md) for the full procedure — how to run the
|
|
72
|
+
roadmap pass, structure the roadmap artifact, link sub-specs back to it, and a worked
|
|
73
|
+
example.
|
|
70
74
|
|
|
71
75
|
## Which Approach to Choose
|
|
72
76
|
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Spec of Specs
|
|
2
|
+
|
|
3
|
+
When a feature is too large to run through a single
|
|
4
|
+
`/speckit.specify` → `/speckit.plan` → `/speckit.tasks` → `/speckit.implement`
|
|
5
|
+
cycle without the model losing track mid-implementation, you can break it into a
|
|
6
|
+
**roadmap** of smaller, independently-specified sub-features. This is the "spec of
|
|
7
|
+
specs" approach: one up-front pass decomposes a massive feature into self-contained
|
|
8
|
+
specs, and each of those runs through its own specify/plan/tasks/implement cycle.
|
|
9
|
+
|
|
10
|
+
> **When to reach for this.** Decomposition adds the most overhead of any strategy
|
|
11
|
+
> in [Handling Complex Features](complex-features.md). Use it **only when the lighter
|
|
12
|
+
> options there are insufficient** — first try limiting how many tasks run per
|
|
13
|
+
> `/speckit.implement` invocation, then sub-agent delegation, then a combination.
|
|
14
|
+
> Reach for a spec of specs only when even a single phase is too large to handle in
|
|
15
|
+
> one run.
|
|
16
|
+
|
|
17
|
+
The rest of this page describes *how* to do it with the tools you already have. No
|
|
18
|
+
new commands or extensions are required.
|
|
19
|
+
|
|
20
|
+
## The roadmap pass
|
|
21
|
+
|
|
22
|
+
Before writing any sub-spec, do a single decomposition pass to produce a roadmap.
|
|
23
|
+
Treat this as a lightweight planning conversation with your agent, not a full spec:
|
|
24
|
+
|
|
25
|
+
1. **State the whole feature.** Describe the large feature (the "epic") in a
|
|
26
|
+
sentence or two so the agent has the full picture up front.
|
|
27
|
+
2. **Identify independent slices.** Ask the agent to propose a small set of
|
|
28
|
+
sub-features that each deliver a coherent piece of the epic and can be specified
|
|
29
|
+
on their own. Aim for slices that are independently testable — implementing just
|
|
30
|
+
one should leave you with something demonstrable.
|
|
31
|
+
3. **Draw the boundaries.** For each slice, write one line of intent and an explicit
|
|
32
|
+
scope boundary (what is in, what is deferred to a sibling slice). Sharp
|
|
33
|
+
boundaries are what keep each sub-spec small enough to fit in context.
|
|
34
|
+
4. **Order by dependency.** Note which slices depend on others and sequence them so
|
|
35
|
+
prerequisites come first. Slices with no dependency on each other can be built in
|
|
36
|
+
any order. To build independent slices in parallel, use separate worktrees so each
|
|
37
|
+
run has isolated active-feature state.
|
|
38
|
+
5. **Record the result as a roadmap.** Capture the slices in a durable roadmap file
|
|
39
|
+
(below) so every later sub-spec can point back to it.
|
|
40
|
+
|
|
41
|
+
The roadmap is deliberately shallow: it names and orders the sub-features but does
|
|
42
|
+
**not** design them. The design happens when each slice runs through its own
|
|
43
|
+
`/speckit.specify`.
|
|
44
|
+
|
|
45
|
+
## The roadmap artifact
|
|
46
|
+
|
|
47
|
+
The roadmap is an ordinary Markdown file you author and keep under version control —
|
|
48
|
+
there is no special tooling behind it. Put it where the sub-specs can find it:
|
|
49
|
+
|
|
50
|
+
- For a feature-scoped epic: `specs/<epic-slug>/roadmap.md`.
|
|
51
|
+
- For a larger, cross-cutting epic: a top-level `ROADMAP.md`.
|
|
52
|
+
|
|
53
|
+
Each roadmap entry carries a stable id (used later for linking), a name, its intent,
|
|
54
|
+
its scope boundary, its dependencies, a status, and — once the sub-spec exists — a
|
|
55
|
+
link to it. A minimal template:
|
|
56
|
+
|
|
57
|
+
```markdown
|
|
58
|
+
# Roadmap: <epic name>
|
|
59
|
+
|
|
60
|
+
<One or two sentences: what the epic is and why it is being decomposed.>
|
|
61
|
+
|
|
62
|
+
**Status legend**: planned · in-progress · done
|
|
63
|
+
|
|
64
|
+
| ID | Sub-feature | Intent | Scope boundary | Depends on | Status | Sub-spec |
|
|
65
|
+
|----|-------------|--------|----------------|-----------|--------|----------|
|
|
66
|
+
| R1 | <name> | <one line> | <in / deferred> | — | planned | — |
|
|
67
|
+
| R2 | <name> | <one line> | <in / deferred> | R1 | planned | — |
|
|
68
|
+
| R3 | <name> | <one line> | <in / deferred> | R1 | planned | — |
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Keep the `ID` column immutable once a sub-spec references it — it is the anchor for
|
|
72
|
+
traceability. Fill in the `Sub-spec` column with the path to each sub-feature's spec
|
|
73
|
+
directory as you create it, and update `Status` as work progresses.
|
|
74
|
+
|
|
75
|
+
## Specifying each sub-feature
|
|
76
|
+
|
|
77
|
+
With the roadmap in hand, work through the entries one at a time using the normal
|
|
78
|
+
Spec Kit flow — nothing new to learn:
|
|
79
|
+
|
|
80
|
+
1. Pick the next roadmap entry whose dependencies are already `done` (or have none).
|
|
81
|
+
2. Run `/speckit.specify` for just that slice, describing only its intent and scope
|
|
82
|
+
from the roadmap entry. Because the slice is bounded, its spec, plan, and tasks
|
|
83
|
+
stay well within the context window.
|
|
84
|
+
3. Run `/speckit.plan`, `/speckit.tasks`, and `/speckit.implement` for that slice as
|
|
85
|
+
usual.
|
|
86
|
+
4. Mark the roadmap entry `done` and move to the next one.
|
|
87
|
+
|
|
88
|
+
Each slice is a complete, independent Spec Kit feature with its own
|
|
89
|
+
`spec.md`/`plan.md`/`tasks.md`. The roadmap is what ties them together.
|
|
90
|
+
|
|
91
|
+
## Linking sub-specs to the roadmap
|
|
92
|
+
|
|
93
|
+
To keep scope and intent from drifting across separate runs, every sub-spec
|
|
94
|
+
references its roadmap entry, and the roadmap links back — a simple, greppable,
|
|
95
|
+
bidirectional convention:
|
|
96
|
+
|
|
97
|
+
- **Sub-spec → roadmap.** In the sub-feature's `spec.md`, name the parent roadmap
|
|
98
|
+
and entry id in the `Input` / summary line, for example:
|
|
99
|
+
|
|
100
|
+
```markdown
|
|
101
|
+
**Input**: Parent roadmap: `specs/<epic>/roadmap.md` → entry **R3**. <feature description>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
- **Roadmap → sub-spec.** In the roadmap table, set the entry's `Sub-spec` column to
|
|
105
|
+
the sub-feature's directory, e.g. `specs/<epic>-part-3/`.
|
|
106
|
+
|
|
107
|
+
Because both directions are plain text, you can trace any sub-spec back to its place
|
|
108
|
+
in the epic (and find its siblings) with a quick search — no tooling, no metadata
|
|
109
|
+
schema.
|
|
110
|
+
|
|
111
|
+
## Keeping the roadmap and sub-specs in sync
|
|
112
|
+
|
|
113
|
+
The roadmap is a living document. As you learn more, keep it and the sub-specs
|
|
114
|
+
aligned:
|
|
115
|
+
|
|
116
|
+
- **Roadmap first, then reconcile.** When scope shifts, update the roadmap entry
|
|
117
|
+
first, then update any sub-specs it affects. The roadmap is the source of truth for
|
|
118
|
+
how the epic is divided.
|
|
119
|
+
- **Respect dependencies and ordering.** If a slice depends on another, build the
|
|
120
|
+
prerequisite first and cross-reference the dependent sub-spec so the relationship
|
|
121
|
+
is visible from both sides.
|
|
122
|
+
- **Recurse when a slice is still too big.** If a sub-feature turns out to be too
|
|
123
|
+
large to specify in one cycle, give it its own roadmap and decompose it further —
|
|
124
|
+
the same approach applies one level down. Recursion adds overhead, so only go as
|
|
125
|
+
deep as the context problem actually requires.
|
|
126
|
+
|
|
127
|
+
## Worked example
|
|
128
|
+
|
|
129
|
+
Suppose the epic is **"Add a self-service billing portal"** — far too large for a
|
|
130
|
+
single cycle. The roadmap pass breaks it into three independently-specifiable
|
|
131
|
+
slices.
|
|
132
|
+
|
|
133
|
+
`specs/billing-portal/roadmap.md`:
|
|
134
|
+
|
|
135
|
+
```markdown
|
|
136
|
+
# Roadmap: Self-service billing portal
|
|
137
|
+
|
|
138
|
+
Let customers view invoices, manage payment methods, and change plans without
|
|
139
|
+
contacting support. Too large for one cycle, so it is split into independent slices.
|
|
140
|
+
|
|
141
|
+
**Status legend**: planned · in-progress · done
|
|
142
|
+
|
|
143
|
+
| ID | Sub-feature | Intent | Scope boundary | Depends on | Status | Sub-spec |
|
|
144
|
+
|----|--------------------|------------------------------------------|---------------------------------------------|-----------|---------|----------|
|
|
145
|
+
| R1 | Invoice history | Customers view and download past invoices | Read-only; no payment actions | — | done | specs/billing-invoices/ |
|
|
146
|
+
| R2 | Payment methods | Add, remove, and set a default card | No plan changes; assumes invoices exist | R1 | in-progress | specs/billing-payment-methods/ |
|
|
147
|
+
| R3 | Plan changes | Upgrade/downgrade the subscription plan | Uses R2's default payment method | R1, R2 | planned | — |
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Each slice is then specified on its own. For example, the **R2** sub-feature's
|
|
151
|
+
`spec.md` opens with a back-reference:
|
|
152
|
+
|
|
153
|
+
```markdown
|
|
154
|
+
# Feature Specification: Billing — payment methods
|
|
155
|
+
|
|
156
|
+
**Input**: Parent roadmap: `specs/billing-portal/roadmap.md` → entry **R2**.
|
|
157
|
+
Let customers add, remove, and set a default payment method in the billing portal.
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
From here a reader can trace **R2** back to the roadmap, see that it depends on
|
|
161
|
+
**R1** (invoice history, already `done`), and see that **R3** (plan changes) is
|
|
162
|
+
waiting on it. Building R1, then R2, then R3 keeps every run small while the roadmap
|
|
163
|
+
preserves the shape of the whole epic.
|
|
164
|
+
|
|
165
|
+
## For automation (optional)
|
|
166
|
+
|
|
167
|
+
If you would rather automate roadmap capture and consistency checks than maintain
|
|
168
|
+
the file by hand, the community-maintained
|
|
169
|
+
[Spec Roadmap extension](https://github.com/srobroek/speckit-roadmap) explores that
|
|
170
|
+
direction. It is a third-party extension and is not required — the manual convention
|
|
171
|
+
above is enough on its own.
|
|
@@ -77,9 +77,9 @@ specify init <project_name> --integration pi
|
|
|
77
77
|
specify init <project_name> --integration omp
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
-
### Specify Script Type (Shell
|
|
80
|
+
### Specify Script Type (Shell, PowerShell, or Python)
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
Automation scripts are available as Bash (`.sh`), PowerShell (`.ps1`), and Python (`.py`) variants.
|
|
83
83
|
|
|
84
84
|
Auto behavior:
|
|
85
85
|
|
|
@@ -92,6 +92,7 @@ Force a specific script type:
|
|
|
92
92
|
```bash
|
|
93
93
|
specify init <project_name> --script sh
|
|
94
94
|
specify init <project_name> --script ps
|
|
95
|
+
specify init <project_name> --script py
|
|
95
96
|
```
|
|
96
97
|
|
|
97
98
|
### Ignore Agent Tools Check
|
|
@@ -131,6 +132,7 @@ Scripts are installed into a variant subdirectory matching the chosen script typ
|
|
|
131
132
|
|
|
132
133
|
- `.specify/scripts/bash/` — contains `.sh` scripts (default on Linux/macOS)
|
|
133
134
|
- `.specify/scripts/powershell/` — contains `.ps1` scripts (default on Windows)
|
|
135
|
+
- `.specify/scripts/python/` — contains `.py` scripts (chosen with `--script py`; also installs the platform shell fallback)
|
|
134
136
|
|
|
135
137
|
## Troubleshooting
|
|
136
138
|
|
|
@@ -12,7 +12,7 @@ specify init [<project_name>]
|
|
|
12
12
|
| ------------------------ | ------------------------------------------------------------------------ |
|
|
13
13
|
| `--integration <key>` | AI coding agent integration to use (e.g. `copilot`, `claude`, `gemini`). See the [Integrations reference](integrations.md) for all available keys |
|
|
14
14
|
| `--integration-options` | Options for the integration (e.g. `--integration-options="--commands-dir .myagent/cmds"`) |
|
|
15
|
-
| `--script sh\|ps`
|
|
15
|
+
| `--script sh\|ps\|py` | Script type: `sh` (bash/zsh), `ps` (PowerShell), or `py` (Python) |
|
|
16
16
|
| `--here` | Initialize in the current directory instead of creating a new one |
|
|
17
17
|
| `--force` | Force merge/overwrite when initializing in an existing directory |
|
|
18
18
|
| `--ignore-agent-tools` | Skip checks for AI coding agent CLI tools |
|
|
@@ -15,6 +15,7 @@ The Specify CLI supports a wide range of AI coding agents. When you run `specify
|
|
|
15
15
|
| [Codex CLI](https://github.com/openai/codex) | `codex` | Skills-based integration; installs skills into `.agents/skills` and invokes them as `$speckit-<command>` |
|
|
16
16
|
| [Cursor](https://cursor.sh/) | `cursor-agent` | |
|
|
17
17
|
| [Devin for Terminal](https://cli.devin.ai/docs) | `devin` | Skills-based integration; installs skills into `.devin/skills/` and invokes them as `/speckit-<command>` |
|
|
18
|
+
| [Factory Droid](https://docs.factory.ai/cli/getting-started/overview) | `droid` | Skills-based integration; installs skills into `.factory/skills/` and invokes them as `/speckit-<command>` |
|
|
18
19
|
| [Firebender](https://firebender.com/) | `firebender` | IDE-based agent for Android Studio / IntelliJ |
|
|
19
20
|
| [Forge](https://forgecode.dev/) | `forge` | |
|
|
20
21
|
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | `gemini` | |
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
| **CLI Tool — pin a version** | `specify self upgrade --tag vX.Y.Z[suffix]` | Upgrade to a specific release tag instead of the latest stable. Suffixes are limited to dev, alpha/beta/rc, and/or build metadata forms. |
|
|
13
13
|
| **CLI Tool — manual fallback** | `uv tool install specify-cli --force --from git+https://github.com/github/spec-kit.git@vX.Y.Z` | When `specify self upgrade` isn't available (older installs) or when you want explicit control. |
|
|
14
14
|
| **CLI Tool — manual fallback (pipx)** | `pipx install --force git+https://github.com/github/spec-kit.git@vX.Y.Z` | Same as above, for pipx installs. |
|
|
15
|
-
| **Project Files** | `specify
|
|
15
|
+
| **Project Files** | Run `specify integration upgrade <key>`, then `specify extension update` | Refresh installed integration files and extensions in your project |
|
|
16
16
|
| **Both** | Run CLI upgrade, then project update | Recommended for major version updates |
|
|
17
17
|
|
|
18
18
|
---
|
|
@@ -89,91 +89,94 @@ specify self check
|
|
|
89
89
|
|
|
90
90
|
## Part 2: Updating Project Files
|
|
91
91
|
|
|
92
|
-
When Spec Kit releases new features (like new slash commands or
|
|
92
|
+
When Spec Kit releases new features (like new slash commands, updated templates, or extension changes), you need to refresh the Spec Kit files that were installed into your project.
|
|
93
93
|
|
|
94
94
|
### What gets updated?
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
For existing Spec Kit projects, use the manifest-aware upgrade path first:
|
|
97
97
|
|
|
98
|
-
- ✅ **
|
|
99
|
-
- ✅ **
|
|
100
|
-
- ✅ **
|
|
101
|
-
|
|
98
|
+
- ✅ **Integration command/skill files** (`.claude/skills/`, `.github/prompts/`, `.agents/skills/`, etc.)
|
|
99
|
+
- ✅ **Managed shared scripts and templates** (`.specify/scripts/`, `.specify/templates/`) when they are unchanged from the previous managed copy
|
|
100
|
+
- ✅ **Installed extensions** when you run `specify extension update`
|
|
101
|
+
|
|
102
|
+
The integration upgrade command uses the install manifest to detect local edits. If a managed integration file was modified after install, the command stops and asks you to inspect the change or rerun with `--force`.
|
|
102
103
|
|
|
103
104
|
### What stays safe?
|
|
104
105
|
|
|
105
|
-
These files are **never touched** by the
|
|
106
|
+
These files are **never touched** by the manifest-aware integration/extension upgrade path:
|
|
106
107
|
|
|
107
108
|
- ✅ **Your specifications** (`specs/001-my-feature/spec.md`, etc.) - **CONFIRMED SAFE**
|
|
108
109
|
- ✅ **Your implementation plans** (`specs/001-my-feature/plan.md`, `tasks.md`, etc.) - **CONFIRMED SAFE**
|
|
110
|
+
- ✅ **Your constitution** (`.specify/memory/constitution.md`) when using `specify integration upgrade`
|
|
109
111
|
- ✅ **Your source code** - **CONFIRMED SAFE**
|
|
110
112
|
- ✅ **Your git history** - **CONFIRMED SAFE**
|
|
111
113
|
|
|
112
114
|
The `specs/` directory is completely excluded from template packages and will never be modified during upgrades.
|
|
113
115
|
|
|
114
|
-
###
|
|
116
|
+
### 1. Check installed integrations
|
|
115
117
|
|
|
116
118
|
Run this inside your project directory:
|
|
117
119
|
|
|
118
120
|
```bash
|
|
119
|
-
specify
|
|
121
|
+
specify integration status
|
|
120
122
|
```
|
|
121
123
|
|
|
122
|
-
|
|
124
|
+
This reports the default integration, all installed integrations, and any modified or missing managed files. You can also inspect `.specify/integration.json`; installed integrations are listed under `installed_integrations`.
|
|
123
125
|
|
|
124
|
-
|
|
126
|
+
### 2. Upgrade each installed integration
|
|
127
|
+
|
|
128
|
+
Run this inside your project directory:
|
|
125
129
|
|
|
126
130
|
```bash
|
|
127
|
-
specify
|
|
131
|
+
specify integration upgrade <key>
|
|
128
132
|
```
|
|
129
133
|
|
|
130
|
-
|
|
134
|
+
Replace `<key>` with an installed integration key such as `copilot`, `claude`, or `codex`. In projects with multiple installed integrations, run the command once per installed key.
|
|
131
135
|
|
|
132
|
-
|
|
136
|
+
**Example:**
|
|
133
137
|
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
Proceed? [y/N]
|
|
138
|
+
```bash
|
|
139
|
+
specify integration upgrade claude
|
|
140
|
+
specify integration upgrade codex
|
|
138
141
|
```
|
|
139
142
|
|
|
140
|
-
|
|
143
|
+
See the [integration reference](reference/integrations.md#upgrade-an-integration) for options such as `--script`, `--integration-options`, and `--force`.
|
|
141
144
|
|
|
142
|
-
|
|
145
|
+
### 3. Update installed extensions
|
|
143
146
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
+
Run:
|
|
147
148
|
|
|
148
|
-
|
|
149
|
+
```bash
|
|
150
|
+
specify extension update
|
|
151
|
+
```
|
|
149
152
|
|
|
150
|
-
|
|
153
|
+
With no extension argument, this updates all installed extensions. Use `specify extension update <extension-id-or-name>` to update only one extension. See the [extensions reference](reference/extensions.md#update-extensions) for details.
|
|
151
154
|
|
|
152
|
-
|
|
155
|
+
### Fallback: re-run init
|
|
153
156
|
|
|
154
|
-
|
|
157
|
+
If a project predates manifests, has missing integration metadata, or needs a broader recovery, you can still re-run init:
|
|
155
158
|
|
|
156
159
|
```bash
|
|
157
|
-
|
|
158
|
-
|
|
160
|
+
specify init --here --force --integration <your-agent>
|
|
161
|
+
```
|
|
159
162
|
|
|
160
|
-
|
|
161
|
-
specify init --here --force --integration copilot
|
|
163
|
+
Use this as an escape hatch rather than the default project-file upgrade path. It refreshes the selected integration and shared project scaffolding, but it does not use the same per-integration manifest checks before overwriting files.
|
|
162
164
|
|
|
163
|
-
|
|
164
|
-
mv .specify/memory/constitution-backup.md .specify/memory/constitution.md
|
|
165
|
-
```
|
|
165
|
+
## ⚠️ Important Warnings
|
|
166
166
|
|
|
167
|
-
|
|
167
|
+
### 1. Constitution file and memory customizations
|
|
168
168
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
```
|
|
169
|
+
`specify integration upgrade <key>` does not update `.specify/memory/constitution.md`.
|
|
170
|
+
|
|
171
|
+
The fallback `specify init --here --force --integration <your-agent>` path also preserves an existing `.specify/memory/constitution.md`; if the file is missing, init creates it from the current constitution template. You do not need a constitution backup/restore step for the manifest-aware upgrade path.
|
|
173
172
|
|
|
174
|
-
|
|
173
|
+
As with any broad fallback refresh, commit or back up local customizations before using `init --here --force` so you can review the resulting diff.
|
|
175
174
|
|
|
176
|
-
|
|
175
|
+
### 2. Custom integration, script, or template modifications
|
|
176
|
+
|
|
177
|
+
`specify integration upgrade <key>` blocks when manifest-tracked integration files were modified locally, unless you pass `--force`.
|
|
178
|
+
|
|
179
|
+
Shared scripts and templates are refreshed when they still match the previously recorded managed copy. Local customizations are preserved unless you explicitly use a force/refresh option that overwrites them. If you customized files in `.specify/scripts/` or `.specify/templates/`, commit or back them up first:
|
|
177
180
|
|
|
178
181
|
```bash
|
|
179
182
|
# Back up custom templates and scripts
|
|
@@ -215,29 +218,29 @@ Restart your IDE to refresh the command list.
|
|
|
215
218
|
# Upgrade CLI (auto-detects uv tool vs pipx install)
|
|
216
219
|
specify self upgrade
|
|
217
220
|
|
|
218
|
-
#
|
|
219
|
-
specify
|
|
221
|
+
# Inspect installed integrations
|
|
222
|
+
specify integration status
|
|
220
223
|
|
|
221
|
-
#
|
|
222
|
-
|
|
224
|
+
# Update project files to get new commands
|
|
225
|
+
specify integration upgrade <key>
|
|
226
|
+
specify extension update
|
|
223
227
|
```
|
|
224
228
|
|
|
225
229
|
### Scenario 2: "I customized templates and constitution"
|
|
226
230
|
|
|
227
231
|
```bash
|
|
228
|
-
# 1.
|
|
229
|
-
|
|
232
|
+
# 1. Commit or back up customizations
|
|
233
|
+
git status
|
|
230
234
|
cp -r .specify/templates /tmp/templates-backup
|
|
231
235
|
|
|
232
236
|
# 2. Upgrade CLI
|
|
233
237
|
specify self upgrade
|
|
234
238
|
|
|
235
|
-
# 3.
|
|
236
|
-
specify
|
|
239
|
+
# 3. Use the manifest-aware project update first
|
|
240
|
+
specify integration upgrade <key>
|
|
241
|
+
specify extension update
|
|
237
242
|
|
|
238
|
-
# 4.
|
|
239
|
-
mv /tmp/constitution-backup.md .specify/memory/constitution.md
|
|
240
|
-
# Manually merge template changes if needed
|
|
243
|
+
# 4. If the upgrade reports modified managed files, inspect the diff before using --force
|
|
241
244
|
```
|
|
242
245
|
|
|
243
246
|
### Scenario 3: "I see duplicate slash commands in my IDE"
|
|
@@ -262,14 +265,14 @@ rm speckit.old-command-name.md
|
|
|
262
265
|
The git extension is now opt-in, so upgrades do not install it unless you add it explicitly.
|
|
263
266
|
|
|
264
267
|
```bash
|
|
265
|
-
#
|
|
266
|
-
|
|
268
|
+
# Upgrade CLI
|
|
269
|
+
specify self upgrade
|
|
267
270
|
|
|
268
|
-
#
|
|
269
|
-
specify
|
|
271
|
+
# Refresh integration files and installed extensions
|
|
272
|
+
specify integration upgrade <key>
|
|
273
|
+
specify extension update
|
|
270
274
|
|
|
271
|
-
#
|
|
272
|
-
mv .specify/memory/constitution.backup.md .specify/memory/constitution.md
|
|
275
|
+
# The git extension is not added unless you run `specify extension add git`
|
|
273
276
|
```
|
|
274
277
|
|
|
275
278
|
If you later decide you want the git extension's commands and hooks, install it explicitly:
|
|
@@ -315,19 +318,21 @@ Alternatively, run the `/speckit.specify` command which creates `.specify/featur
|
|
|
315
318
|
- Codex requires `CODEX_HOME` environment variable
|
|
316
319
|
- Some agents need workspace restart or cache clearing
|
|
317
320
|
|
|
318
|
-
### "
|
|
321
|
+
### "Will init overwrite my constitution customizations?"
|
|
322
|
+
|
|
323
|
+
Current `specify init --here --force` preserves an existing `.specify/memory/constitution.md`; it creates the file from the template only when it is missing.
|
|
319
324
|
|
|
320
|
-
|
|
325
|
+
If you previously lost constitution changes through an older workflow or manual replacement, restore from git or backup:
|
|
321
326
|
|
|
322
327
|
```bash
|
|
323
|
-
# If you committed
|
|
328
|
+
# If you committed the customized constitution
|
|
324
329
|
git restore .specify/memory/constitution.md
|
|
325
330
|
|
|
326
331
|
# If you backed up manually
|
|
327
332
|
cp /tmp/constitution-backup.md .specify/memory/constitution.md
|
|
328
333
|
```
|
|
329
334
|
|
|
330
|
-
**Prevention:**
|
|
335
|
+
**Prevention:** Use `specify integration upgrade <key>` for routine project-file updates. If you need the fallback `specify init --here --force` path, commit first so you can review the full diff afterward.
|
|
331
336
|
|
|
332
337
|
### "Warning: Current directory is not empty"
|
|
333
338
|
|
|
@@ -354,7 +359,7 @@ Only Spec Kit infrastructure files:
|
|
|
354
359
|
- Agent command files (`.claude/commands/`, `.github/prompts/`, etc.)
|
|
355
360
|
- Scripts in `.specify/scripts/`
|
|
356
361
|
- Templates in `.specify/templates/`
|
|
357
|
-
-
|
|
362
|
+
- Missing memory files such as `.specify/memory/constitution.md` may be created from templates; an existing constitution is preserved
|
|
358
363
|
|
|
359
364
|
**What stays untouched:**
|
|
360
365
|
|
|
@@ -365,7 +370,7 @@ Only Spec Kit infrastructure files:
|
|
|
365
370
|
|
|
366
371
|
**How to respond:**
|
|
367
372
|
|
|
368
|
-
- **Type `y` and press Enter** - Proceed with the merge
|
|
373
|
+
- **Type `y` and press Enter** - Proceed with the merge when using the fallback init path
|
|
369
374
|
- **Type `n` and press Enter** - Cancel the operation
|
|
370
375
|
- **Use `--force` flag** - Skip this confirmation entirely:
|
|
371
376
|
|
|
@@ -375,11 +380,11 @@ Only Spec Kit infrastructure files:
|
|
|
375
380
|
|
|
376
381
|
**When you see this warning:**
|
|
377
382
|
|
|
378
|
-
- ✅ **Expected** when
|
|
383
|
+
- ✅ **Expected** when using the fallback init path in an existing Spec Kit project
|
|
379
384
|
- ✅ **Expected** when adding Spec Kit to an existing codebase
|
|
380
385
|
- ⚠️ **Unexpected** if you thought you were creating a new project in an empty directory
|
|
381
386
|
|
|
382
|
-
**Prevention tip:** Before
|
|
387
|
+
**Prevention tip:** Before using the fallback init path, commit your current work so any refreshed files are easy to review or restore.
|
|
383
388
|
|
|
384
389
|
### "CLI upgrade doesn't seem to work"
|
|
385
390
|
|
|
@@ -418,14 +423,15 @@ uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
|
|
|
418
423
|
|
|
419
424
|
### "Do I need to run specify every time I open my project?"
|
|
420
425
|
|
|
421
|
-
**Short answer:** No, you only run `specify init` once per project
|
|
426
|
+
**Short answer:** No, you only run `specify init` once per project, or later as a fallback recovery path.
|
|
422
427
|
|
|
423
428
|
**Explanation:**
|
|
424
429
|
|
|
425
430
|
The `specify` CLI tool is used for:
|
|
426
431
|
|
|
427
432
|
- **Initial setup:** `specify init` to bootstrap Spec Kit in your project
|
|
428
|
-
- **
|
|
433
|
+
- **Routine project-file upgrades:** `specify integration upgrade <key>` and `specify extension update`
|
|
434
|
+
- **Fallback recovery:** `specify init --here --force` when integration metadata is missing or the manifest-aware path cannot be used
|
|
429
435
|
- **Diagnostics:** `specify check` to verify tool installation
|
|
430
436
|
|
|
431
437
|
Once you've run `specify init`, the slash commands (like `/speckit.specify`, `/speckit.plan`, etc.) are **permanently installed** in your project's agent folder (`.claude/`, `.github/prompts/`, `.pi/prompts/`, `.omp/commands/`, etc.). Your AI coding agent reads these command files directly—no need to run `specify` again.
|