specify-cli 0.11.9__tar.gz → 0.12.0__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.11.9 → specify_cli-0.12.0}/.devcontainer/post-create.sh +1 -1
- specify_cli-0.12.0/.github/ISSUE_TEMPLATE/bundle_submission.yml +293 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/AGENTS.md +8 -11
- {specify_cli-0.11.9 → specify_cli-0.12.0}/CHANGELOG.md +31 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/PKG-INFO +7 -4
- {specify_cli-0.11.9 → specify_cli-0.12.0}/README.md +6 -3
- specify_cli-0.12.0/docs/community/bundles.md +53 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/community/overview.md +7 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/guides/evolving-specs.md +2 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/installation.md +8 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/quickstart.md +10 -2
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/reference/bundles.md +6 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/reference/workflows.md +1 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/toc.yml +2 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/agent-context/README.md +8 -7
- specify_cli-0.12.0/extensions/agent-context/agent-context-defaults.json +42 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/agent-context/scripts/bash/update-agent-context.sh +108 -16
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +90 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/catalog.community.json +5 -5
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +3 -2
- {specify_cli-0.11.9 → specify_cli-0.12.0}/pyproject.toml +1 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/scripts/powershell/common.ps1 +7 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/scripts/powershell/create-new-feature.ps1 +12 -4
- {specify_cli-0.11.9 → specify_cli-0.12.0}/scripts/powershell/setup-plan.ps1 +7 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/__init__.py +1 -77
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/agents.py +0 -31
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/catalogs.py +4 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/commands/init.py +0 -44
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/extensions/_commands.py +27 -3
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integration_scaffold.py +1 -7
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/_helpers.py +6 -56
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/agy/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/amp/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/auggie/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/base.py +16 -549
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/bob/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/claude/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/cline/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/codebuddy/__init__.py +1 -2
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/codex/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/copilot/__init__.py +0 -7
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/devin/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/firebender/__init__.py +2 -3
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/forge/__init__.py +0 -5
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/gemini/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/generic/__init__.py +0 -5
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/goose/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/hermes/__init__.py +1 -9
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/iflow/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/junie/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/kilocode/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/kimi/__init__.py +3 -121
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/lingma/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/omp/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/opencode/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/pi/__init__.py +1 -2
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/qodercli/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/qwen/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/roo/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/rovodev/__init__.py +1 -3
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/shai/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/tabnine/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/trae/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/vibe/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/windsurf/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/zcode/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/zed/__init__.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/presets/__init__.py +4 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/workflows/engine.py +40 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/workflows/expressions.py +60 -24
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/workflows/steps/gate/__init__.py +8 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/templates/commands/plan.md +2 -5
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/extensions/git/test_git_extension.py +36 -0
- specify_cli-0.12.0/tests/extensions/test_agent_context_cli_free.py +57 -0
- specify_cli-0.12.0/tests/extensions/test_extension_agent_context.py +873 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/conftest.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_base.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_cli.py +5 -12
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_extra_args.py +0 -5
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_agy.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_amp.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_auggie.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_base_markdown.py +27 -74
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_base_skills.py +30 -57
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_base_toml.py +27 -73
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_base_yaml.py +27 -73
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_bob.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_catalog.py +16 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_claude.py +16 -48
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_cline.py +0 -16
- specify_cli-0.12.0/tests/integrations/test_integration_codebuddy.py +21 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_codex.py +24 -50
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_copilot.py +12 -50
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_cursor_agent.py +0 -78
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_devin.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_firebender.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_forge.py +8 -12
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_gemini.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_generic.py +9 -57
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_goose.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_hermes.py +3 -8
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_iflow.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_junie.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_kilocode.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_kimi.py +0 -207
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_kiro_cli.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_lingma.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_omp.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_opencode.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_pi.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_qodercli.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_qwen.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_roo.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_rovodev.py +2 -11
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_shai.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_tabnine.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_trae.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_vibe.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_windsurf.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_zcode.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_zed.py +0 -1
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_registry.py +0 -43
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_extensions.py +99 -3
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_presets.py +20 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_setup_plan_no_overwrite.py +22 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_setup_tasks.py +51 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_timestamp_branches.py +51 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_workflows.py +237 -0
- specify_cli-0.11.9/tests/extensions/test_extension_agent_context.py +0 -1235
- specify_cli-0.11.9/tests/integrations/test_integration_codebuddy.py +0 -11
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.devcontainer/devcontainer.json +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.editorconfig +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.gitattributes +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/CODEOWNERS +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/ISSUE_TEMPLATE/agent_request.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/ISSUE_TEMPLATE/preset_submission.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/aw/actions-lock.json +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/dependabot.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/skills/add-community-extension/SKILL.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/workflows/RELEASE-PROCESS.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/workflows/add-community-extension.lock.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/workflows/add-community-extension.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/workflows/add-community-preset.lock.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/workflows/add-community-preset.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/workflows/bug-assess.lock.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/workflows/bug-assess.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/workflows/catalog-assign.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/workflows/codeql.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/workflows/docs.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/workflows/lint.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/workflows/publish-pypi.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/workflows/release-trigger.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/workflows/release.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/workflows/stale.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.github/workflows/test.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.gitignore +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.markdownlint-cli2.jsonc +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/.zenodo.json +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/CITATION.cff +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/CODE_OF_CONDUCT.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/CONTRIBUTING.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/DEVELOPMENT.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/LICENSE +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/SECURITY.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/SUPPORT.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/.gitignore +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/README.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/community/extensions.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/community/friends.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/community/presets.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/community/walkthroughs.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/concepts/complex-features.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/concepts/sdd.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/concepts/spec-persistence.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/docfx.json +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/guides/monorepo.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/index.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/install/air-gapped.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/install/one-time.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/install/pipx.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/install/uv.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/local-development.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/reference/authentication.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/reference/core.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/reference/extensions.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/reference/integrations.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/reference/overview.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/reference/presets.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/template/public/main.css +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/docs/upgrade.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/examples/bundles/business-analyst/README.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/examples/bundles/business-analyst/bundle.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/examples/bundles/developer/README.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/examples/bundles/developer/bundle.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/examples/bundles/product-manager/README.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/examples/bundles/product-manager/bundle.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/examples/bundles/security-researcher/README.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/examples/bundles/security-researcher/bundle.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/EXTENSION-API-REFERENCE.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/EXTENSION-PUBLISHING-GUIDE.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/EXTENSION-USER-GUIDE.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/README.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/agent-context/agent-context-config.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/agent-context/extension.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/bug/README.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/bug/commands/speckit.bug.assess.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/bug/commands/speckit.bug.fix.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/bug/commands/speckit.bug.test.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/bug/extension.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/catalog.json +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/git/README.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/git/commands/speckit.git.commit.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/git/commands/speckit.git.feature.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/git/commands/speckit.git.initialize.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/git/commands/speckit.git.remote.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/git/commands/speckit.git.validate.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/git/config-template.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/git/extension.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/git/git-config.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/git/scripts/bash/auto-commit.sh +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/git/scripts/bash/git-common.sh +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/selftest/commands/selftest.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/selftest/extension.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/template/.gitignore +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/template/CHANGELOG.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/template/EXAMPLE-README.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/template/LICENSE +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/template/README.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/template/commands/example.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/template/config-template.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/extensions/template/extension.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/integrations/CONTRIBUTING.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/integrations/README.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/integrations/catalog.community.json +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/integrations/catalog.json +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/media/bootstrap-claude-code.gif +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/media/logo_large.webp +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/media/logo_small.webp +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/media/spec-kit-video-header.jpg +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/media/specify_cli.gif +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/newsletters/2026-April.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/newsletters/2026-February.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/newsletters/2026-March.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/newsletters/2026-May.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/ARCHITECTURE.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/PUBLISHING.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/README.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/catalog.community.json +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/catalog.json +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/lean/README.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/lean/commands/speckit.constitution.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/lean/commands/speckit.implement.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/lean/commands/speckit.plan.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/lean/commands/speckit.specify.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/lean/commands/speckit.tasks.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/lean/preset.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/scaffold/README.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/scaffold/commands/speckit.specify.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/scaffold/preset.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/scaffold/templates/myext-template.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/scaffold/templates/spec-template.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/self-test/commands/speckit.specify.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/self-test/commands/speckit.wrap-test.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/self-test/preset.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/self-test/templates/agent-file-template.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/self-test/templates/checklist-template.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/self-test/templates/constitution-template.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/self-test/templates/plan-template.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/self-test/templates/spec-template.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/presets/self-test/templates/tasks-template.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/scripts/bash/check-prerequisites.sh +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/scripts/bash/common.sh +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/scripts/bash/create-new-feature.sh +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/scripts/bash/setup-plan.sh +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/scripts/bash/setup-tasks.sh +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/scripts/powershell/check-prerequisites.ps1 +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/scripts/powershell/setup-tasks.ps1 +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/spec-driven.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/spec-kit.code-workspace +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/_agent_config.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/_assets.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/_console.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/_github_http.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/_init_options.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/_invocation_style.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/_utils.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/_version.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/authentication/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/authentication/azure_devops.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/authentication/base.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/authentication/config.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/authentication/github.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/authentication/http.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/commands_impl/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/commands_impl/catalog_config.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/lib/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/lib/project.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/lib/versioning.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/lib/yamlio.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/models/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/models/catalog.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/models/manifest.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/models/records.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/services/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/services/adapters.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/services/catalog_stack.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/services/conflict.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/services/installer.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/services/packager.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/services/primitives.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/services/references.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/services/resolver.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/bundler/services/validator.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/commands/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/commands/bundle/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/extensions/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integration_runtime.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integration_state.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integration_status.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/_commands.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/_install_commands.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/_migrate_commands.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/_query_commands.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/_scaffold_commands.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/catalog.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/integrations/manifest.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/presets/_commands.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/shared_infra.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/workflows/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/workflows/base.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/workflows/catalog.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/workflows/steps/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/workflows/steps/command/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/workflows/steps/do_while/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/workflows/steps/fan_in/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/workflows/steps/fan_out/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/workflows/steps/if_then/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/workflows/steps/init/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/workflows/steps/prompt/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/workflows/steps/shell/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/workflows/steps/switch/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/src/specify_cli/workflows/steps/while_loop/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/templates/checklist-template.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/templates/commands/analyze.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/templates/commands/checklist.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/templates/commands/clarify.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/templates/commands/constitution.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/templates/commands/converge.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/templates/commands/implement.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/templates/commands/specify.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/templates/commands/tasks.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/templates/commands/taskstoissues.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/templates/constitution-template.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/templates/plan-template.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/templates/spec-template.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/templates/tasks-template.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/templates/vscode-settings.json +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/auth_helpers.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/bundler_helpers.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/conftest.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/contract/test_bundle_cli.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/contract/test_catalog_schema.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/contract/test_manifest_schema.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/extensions/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/extensions/bug/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/extensions/bug/test_bug_extension.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/extensions/git/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/extensions/test_update_agent_context_feature_json.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/hooks/TESTING.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/hooks/plan.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/hooks/spec.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/hooks/tasks.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/http_helpers.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integration/test_bundler_catalog_stack.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integration/test_bundler_init_install.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integration/test_bundler_install_flow.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integration/test_bundler_local_install.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integration/test_bundler_offline.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integration/test_bundler_security_paths.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/__init__.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_scaffold.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_state.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_integration_subcommand.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/integrations/test_manifest.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/self_upgrade_helpers.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_agent_config_consistency.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_authentication.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_branch_numbering.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_check_prerequisites_paths_only.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_check_tool.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_cli_version.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_commands_package.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_console_imports.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_extension_registration.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_extension_skills.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_extension_update_hardening.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_github_http.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_github_workflows.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_init_dir.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_live_transient_windows.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_merge.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_ps1_encoding.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_registrar_path_traversal.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_self_upgrade_detection.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_self_upgrade_execution.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_self_upgrade_guidance.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_self_upgrade_verification.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_setup_plan_feature_json.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_shared_infra_integrity.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_upgrade.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_utils.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_utils_assets_imports.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_version_imports.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/test_workflow_run_without_project.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/unit/test_bundler_adapters.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/unit/test_bundler_catalog_config.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/unit/test_bundler_conflict.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/unit/test_bundler_packager.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/unit/test_bundler_primitives.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/unit/test_bundler_records.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/unit/test_bundler_references.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/unit/test_bundler_resolver.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/unit/test_bundler_validator.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/tests/unit/test_bundler_versioning.py +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/workflows/ARCHITECTURE.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/workflows/PUBLISHING.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/workflows/README.md +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/workflows/catalog.community.json +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/workflows/catalog.json +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/workflows/speckit/workflow.yml +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/workflows/step-catalog.community.json +0 -0
- {specify_cli-0.11.9 → specify_cli-0.12.0}/workflows/step-catalog.json +0 -0
|
@@ -56,7 +56,7 @@ run_command "npm install -g @jetbrains/junie-cli@latest"
|
|
|
56
56
|
echo "✅ Done"
|
|
57
57
|
|
|
58
58
|
echo -e "\n🤖 Installing Pi Coding Agent..."
|
|
59
|
-
run_command "npm install -g @
|
|
59
|
+
run_command "npm install -g @earendil-works/pi-coding-agent@latest"
|
|
60
60
|
echo "✅ Done"
|
|
61
61
|
|
|
62
62
|
echo -e "\n🤖 Installing Kiro CLI..."
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
name: Bundle Submission
|
|
2
|
+
description: Submit your bundle metadata for community catalog validation
|
|
3
|
+
title: "[Bundle]: Add "
|
|
4
|
+
labels: ["enhancement", "needs-triage"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Thanks for contributing a bundle! This template captures metadata for maintainers to validate formatting, links, component resolution, and installation evidence. Maintainers do not audit, endorse, or support bundle code or installed components.
|
|
10
|
+
|
|
11
|
+
**Before submitting:**
|
|
12
|
+
- Review the [Bundles reference](https://github.com/github/spec-kit/blob/main/docs/reference/bundles.md)
|
|
13
|
+
- Ensure your bundle has a valid `bundle.yml` manifest
|
|
14
|
+
- Create a GitHub release with a versioned bundle artifact
|
|
15
|
+
- Test installation from a downloaded artifact: `specify bundle install ./your-bundle-1.0.0.zip`
|
|
16
|
+
- If you host a bundle catalog, test catalog installation with `specify bundle catalog add <catalog-url> --id <catalog-id> --policy install-allowed` and `specify bundle install <bundle-id>`
|
|
17
|
+
- If your bundle depends on components from non-default catalogs, document those catalog URLs and test installation from a clean project
|
|
18
|
+
|
|
19
|
+
- type: input
|
|
20
|
+
id: bundle-id
|
|
21
|
+
attributes:
|
|
22
|
+
label: Bundle ID
|
|
23
|
+
description: Unique bundle identifier; must start and end with a lowercase letter or digit and may contain lowercase letters, digits, dots, underscores, and hyphens between
|
|
24
|
+
placeholder: "e.g., security-governance-stack"
|
|
25
|
+
validations:
|
|
26
|
+
required: true
|
|
27
|
+
|
|
28
|
+
- type: input
|
|
29
|
+
id: bundle-name
|
|
30
|
+
attributes:
|
|
31
|
+
label: Bundle Name
|
|
32
|
+
description: Human-readable bundle name
|
|
33
|
+
placeholder: "e.g., Security Governance Stack"
|
|
34
|
+
validations:
|
|
35
|
+
required: true
|
|
36
|
+
|
|
37
|
+
- type: input
|
|
38
|
+
id: version
|
|
39
|
+
attributes:
|
|
40
|
+
label: Version
|
|
41
|
+
description: Semantic version number
|
|
42
|
+
placeholder: "e.g., 1.0.0"
|
|
43
|
+
validations:
|
|
44
|
+
required: true
|
|
45
|
+
|
|
46
|
+
- type: input
|
|
47
|
+
id: role
|
|
48
|
+
attributes:
|
|
49
|
+
label: Role or Team
|
|
50
|
+
description: Primary role, team, or persona this bundle provisions
|
|
51
|
+
placeholder: "e.g., security-engineer, product-manager, platform-team"
|
|
52
|
+
validations:
|
|
53
|
+
required: true
|
|
54
|
+
|
|
55
|
+
- type: textarea
|
|
56
|
+
id: description
|
|
57
|
+
attributes:
|
|
58
|
+
label: Description
|
|
59
|
+
description: Brief description of the stack this bundle installs
|
|
60
|
+
placeholder: Installs a security governance stack with compliance presets, review commands, and evidence workflows
|
|
61
|
+
validations:
|
|
62
|
+
required: true
|
|
63
|
+
|
|
64
|
+
- type: input
|
|
65
|
+
id: author
|
|
66
|
+
attributes:
|
|
67
|
+
label: Author
|
|
68
|
+
description: Your name or organization
|
|
69
|
+
placeholder: "e.g., Jane Doe or Acme Corp"
|
|
70
|
+
validations:
|
|
71
|
+
required: true
|
|
72
|
+
|
|
73
|
+
- type: input
|
|
74
|
+
id: repository
|
|
75
|
+
attributes:
|
|
76
|
+
label: Repository URL
|
|
77
|
+
description: GitHub repository URL for your bundle source
|
|
78
|
+
placeholder: "https://github.com/your-org/spec-kit-bundle-your-bundle"
|
|
79
|
+
validations:
|
|
80
|
+
required: true
|
|
81
|
+
|
|
82
|
+
- type: input
|
|
83
|
+
id: download-url
|
|
84
|
+
attributes:
|
|
85
|
+
label: Download URL
|
|
86
|
+
description: URL to the versioned bundle artifact generated by `specify bundle build`
|
|
87
|
+
placeholder: "https://github.com/your-org/spec-kit-bundle-your-bundle/releases/download/v1.0.0/your-bundle-1.0.0.zip"
|
|
88
|
+
validations:
|
|
89
|
+
required: true
|
|
90
|
+
|
|
91
|
+
- type: input
|
|
92
|
+
id: documentation
|
|
93
|
+
attributes:
|
|
94
|
+
label: Documentation URL
|
|
95
|
+
description: Link to documentation that explains what the bundle installs and how to use it
|
|
96
|
+
placeholder: "https://github.com/your-org/spec-kit-bundle-your-bundle/blob/main/README.md"
|
|
97
|
+
validations:
|
|
98
|
+
required: true
|
|
99
|
+
|
|
100
|
+
- type: input
|
|
101
|
+
id: license
|
|
102
|
+
attributes:
|
|
103
|
+
label: License
|
|
104
|
+
description: Open source license type
|
|
105
|
+
placeholder: "e.g., MIT, Apache-2.0"
|
|
106
|
+
validations:
|
|
107
|
+
required: true
|
|
108
|
+
|
|
109
|
+
- type: input
|
|
110
|
+
id: speckit-version
|
|
111
|
+
attributes:
|
|
112
|
+
label: Required Spec Kit Version
|
|
113
|
+
description: Minimum Spec Kit version required by the bundle
|
|
114
|
+
placeholder: "e.g., >=0.9.0"
|
|
115
|
+
validations:
|
|
116
|
+
required: true
|
|
117
|
+
|
|
118
|
+
- type: input
|
|
119
|
+
id: integration
|
|
120
|
+
attributes:
|
|
121
|
+
label: Integration Target (optional)
|
|
122
|
+
description: Integration ID if the bundle pins one; leave empty if integration-agnostic
|
|
123
|
+
placeholder: "e.g., claude, copilot, gemini"
|
|
124
|
+
|
|
125
|
+
- type: textarea
|
|
126
|
+
id: components-provided
|
|
127
|
+
attributes:
|
|
128
|
+
label: Components Provided
|
|
129
|
+
description: List the extensions, presets, workflows, and steps this bundle installs
|
|
130
|
+
placeholder: |
|
|
131
|
+
- extensions: sicario-guard@0.5.1
|
|
132
|
+
- presets: sicario-core@0.5.1, sicario-ai-governance@0.5.1
|
|
133
|
+
- workflows: evidence-review@1.0.0
|
|
134
|
+
- steps: threat-model
|
|
135
|
+
validations:
|
|
136
|
+
required: true
|
|
137
|
+
|
|
138
|
+
- type: textarea
|
|
139
|
+
id: required-catalogs
|
|
140
|
+
attributes:
|
|
141
|
+
label: Required Component Catalogs
|
|
142
|
+
description: List any non-default catalogs users must add before this bundle can resolve its components; enter "None" if every component resolves from built-in or bundled catalogs
|
|
143
|
+
placeholder: |
|
|
144
|
+
- Presets: https://github.com/your-org/your-bundle/releases/download/v1.0.0/presets.json
|
|
145
|
+
- Extensions: https://github.com/your-org/your-bundle/releases/download/v1.0.0/extensions.json
|
|
146
|
+
validations:
|
|
147
|
+
required: true
|
|
148
|
+
|
|
149
|
+
- type: textarea
|
|
150
|
+
id: tags
|
|
151
|
+
attributes:
|
|
152
|
+
label: Tags
|
|
153
|
+
description: 2-5 relevant tags (lowercase, separated by commas)
|
|
154
|
+
placeholder: "security, governance, compliance"
|
|
155
|
+
validations:
|
|
156
|
+
required: true
|
|
157
|
+
|
|
158
|
+
- type: textarea
|
|
159
|
+
id: features
|
|
160
|
+
attributes:
|
|
161
|
+
label: Key Features
|
|
162
|
+
description: List the main capabilities this bundle provides
|
|
163
|
+
placeholder: |
|
|
164
|
+
- Installs evidence-first security governance templates
|
|
165
|
+
- Adds automated bundle verification commands
|
|
166
|
+
- Pins all components to release-tested versions
|
|
167
|
+
validations:
|
|
168
|
+
required: true
|
|
169
|
+
|
|
170
|
+
- type: checkboxes
|
|
171
|
+
id: testing
|
|
172
|
+
attributes:
|
|
173
|
+
label: Testing Checklist
|
|
174
|
+
description: Confirm that your bundle has been tested
|
|
175
|
+
options:
|
|
176
|
+
- label: Validation succeeds with `specify bundle validate --path <bundle-directory>`
|
|
177
|
+
required: true
|
|
178
|
+
- label: Build succeeds with `specify bundle build --path <bundle-directory>` and produces the submitted artifact
|
|
179
|
+
required: true
|
|
180
|
+
- label: Bundle installs successfully from the built artifact
|
|
181
|
+
required: true
|
|
182
|
+
- label: The submitted distribution path was tested end to end, including bundle-ID installation from an install-allowed catalog when a catalog entry is proposed
|
|
183
|
+
required: true
|
|
184
|
+
- label: Installation was tested in a clean Spec Kit project
|
|
185
|
+
required: true
|
|
186
|
+
- label: Required component catalogs are documented and were included in testing, or no extra catalogs are required
|
|
187
|
+
required: true
|
|
188
|
+
- label: Documentation is complete and accurate
|
|
189
|
+
required: true
|
|
190
|
+
|
|
191
|
+
- type: checkboxes
|
|
192
|
+
id: requirements
|
|
193
|
+
attributes:
|
|
194
|
+
label: Submission Requirements
|
|
195
|
+
description: Verify your bundle meets all requirements
|
|
196
|
+
options:
|
|
197
|
+
- label: Valid `bundle.yml` manifest included
|
|
198
|
+
required: true
|
|
199
|
+
- label: README.md explains the bundle's intended role, installed components, and installation steps
|
|
200
|
+
required: true
|
|
201
|
+
- label: LICENSE file included
|
|
202
|
+
required: true
|
|
203
|
+
- label: GitHub release created with a version tag
|
|
204
|
+
required: true
|
|
205
|
+
- label: Bundle ID matches the manifest and follows naming conventions
|
|
206
|
+
required: true
|
|
207
|
+
- label: Every extension, preset, workflow, and step reference is pinned where the manifest requires a version
|
|
208
|
+
required: true
|
|
209
|
+
|
|
210
|
+
- type: textarea
|
|
211
|
+
id: testing-details
|
|
212
|
+
attributes:
|
|
213
|
+
label: Testing Details
|
|
214
|
+
description: Describe how you tested your bundle
|
|
215
|
+
placeholder: |
|
|
216
|
+
**Tested on:**
|
|
217
|
+
- macOS 15 with Spec Kit v0.9.0
|
|
218
|
+
- Ubuntu 24.04 with Spec Kit v0.9.0
|
|
219
|
+
|
|
220
|
+
**Test project:** [Link or description]
|
|
221
|
+
|
|
222
|
+
**Test scenarios:**
|
|
223
|
+
1. Added required catalogs
|
|
224
|
+
2. Validated bundle manifest
|
|
225
|
+
3. Built release artifact
|
|
226
|
+
4. Installed bundle in a clean project
|
|
227
|
+
5. Ran the installed commands or workflows
|
|
228
|
+
validations:
|
|
229
|
+
required: true
|
|
230
|
+
|
|
231
|
+
- type: textarea
|
|
232
|
+
id: example-usage
|
|
233
|
+
attributes:
|
|
234
|
+
label: Example Usage
|
|
235
|
+
description: Provide a simple example of installing and using your bundle
|
|
236
|
+
render: markdown
|
|
237
|
+
placeholder: |
|
|
238
|
+
```bash
|
|
239
|
+
# Add any required component catalogs first
|
|
240
|
+
specify preset catalog add https://github.com/your-org/your-bundle/releases/download/v1.0.0/presets.json --name your-bundle --install-allowed
|
|
241
|
+
specify extension catalog add https://github.com/your-org/your-bundle/releases/download/v1.0.0/extensions.json --name your-bundle --install-allowed
|
|
242
|
+
|
|
243
|
+
# Install the downloaded bundle artifact
|
|
244
|
+
curl -L -o your-bundle-1.0.0.zip https://github.com/your-org/your-bundle/releases/download/v1.0.0/your-bundle-1.0.0.zip
|
|
245
|
+
specify bundle install ./your-bundle-1.0.0.zip
|
|
246
|
+
|
|
247
|
+
# Or test through an install-allowed bundle catalog
|
|
248
|
+
specify bundle catalog add https://github.com/your-org/your-bundle/releases/download/v1.0.0/bundles.json --id your-bundle-catalog --policy install-allowed
|
|
249
|
+
specify bundle install your-bundle
|
|
250
|
+
```
|
|
251
|
+
validations:
|
|
252
|
+
required: true
|
|
253
|
+
|
|
254
|
+
- type: textarea
|
|
255
|
+
id: catalog-entry
|
|
256
|
+
attributes:
|
|
257
|
+
label: Proposed Catalog Entry
|
|
258
|
+
description: Provide the JSON entry that would appear under the top-level `bundles` object in a bundle catalog (helps reviewers)
|
|
259
|
+
render: json
|
|
260
|
+
placeholder: |
|
|
261
|
+
{
|
|
262
|
+
"your-bundle": {
|
|
263
|
+
"name": "Your Bundle",
|
|
264
|
+
"id": "your-bundle",
|
|
265
|
+
"version": "1.0.0",
|
|
266
|
+
"role": "security-engineer",
|
|
267
|
+
"description": "Brief description of the stack",
|
|
268
|
+
"author": "Your Name",
|
|
269
|
+
"license": "MIT",
|
|
270
|
+
"download_url": "https://github.com/your-org/your-bundle/releases/download/v1.0.0/your-bundle-1.0.0.zip",
|
|
271
|
+
"repository": "https://github.com/your-org/your-bundle",
|
|
272
|
+
"requires": {
|
|
273
|
+
"speckit_version": ">=0.9.0"
|
|
274
|
+
},
|
|
275
|
+
"provides": {
|
|
276
|
+
"extensions": 1,
|
|
277
|
+
"presets": 2,
|
|
278
|
+
"steps": 0,
|
|
279
|
+
"workflows": 1
|
|
280
|
+
},
|
|
281
|
+
"tags": ["security", "governance"],
|
|
282
|
+
"verified": false
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
validations:
|
|
286
|
+
required: true
|
|
287
|
+
|
|
288
|
+
- type: textarea
|
|
289
|
+
id: additional-context
|
|
290
|
+
attributes:
|
|
291
|
+
label: Additional Context
|
|
292
|
+
description: Any other information that would help reviewers
|
|
293
|
+
placeholder: Screenshots, demo videos, links to related projects, dependency-resolution notes, etc.
|
|
@@ -75,7 +75,6 @@ class WindsurfIntegration(MarkdownIntegration):
|
|
|
75
75
|
"args": "$ARGUMENTS",
|
|
76
76
|
"extension": ".md",
|
|
77
77
|
}
|
|
78
|
-
context_file = ".windsurf/rules/specify-rules.md"
|
|
79
78
|
```
|
|
80
79
|
|
|
81
80
|
**TOML agent (Gemini):**
|
|
@@ -101,7 +100,6 @@ class GeminiIntegration(TomlIntegration):
|
|
|
101
100
|
"args": "{{args}}",
|
|
102
101
|
"extension": ".toml",
|
|
103
102
|
}
|
|
104
|
-
context_file = "GEMINI.md"
|
|
105
103
|
```
|
|
106
104
|
|
|
107
105
|
**Skills agent (Codex):**
|
|
@@ -129,7 +127,6 @@ class CodexIntegration(SkillsIntegration):
|
|
|
129
127
|
"args": "$ARGUMENTS",
|
|
130
128
|
"extension": "/SKILL.md",
|
|
131
129
|
}
|
|
132
|
-
context_file = "AGENTS.md"
|
|
133
130
|
|
|
134
131
|
@classmethod
|
|
135
132
|
def options(cls) -> list[IntegrationOption]:
|
|
@@ -150,7 +147,6 @@ class CodexIntegration(SkillsIntegration):
|
|
|
150
147
|
| `key` | Class attribute | Unique identifier; for CLI-based integrations (`requires_cli: True`), must match the CLI executable name |
|
|
151
148
|
| `config` | Class attribute (dict) | Agent metadata: `name`, `folder`, `commands_subdir`, `install_url`, `requires_cli` |
|
|
152
149
|
| `registrar_config` | Class attribute (dict) | Command output config: `dir`, `format`, `args` placeholder, file `extension` |
|
|
153
|
-
| `context_file` | Class attribute (str or None) | Path to agent context/instructions file (e.g., `"CLAUDE.md"`, `".github/copilot-instructions.md"`) |
|
|
154
150
|
|
|
155
151
|
**Key design rule:** For CLI-based integrations (`requires_cli: True`), `key` must be the actual executable name (e.g., `"cursor-agent"` not `"cursor"`). This ensures `shutil.which(key)` works for CLI-tool checks without special-case mappings. IDE-based integrations (`requires_cli: False`) should use their canonical identifier (e.g., `"windsurf"`, `"copilot"`).
|
|
156
152
|
|
|
@@ -175,9 +171,11 @@ def _register_builtins() -> None:
|
|
|
175
171
|
|
|
176
172
|
### 4. Context file behavior
|
|
177
173
|
|
|
178
|
-
|
|
174
|
+
The Specify CLI carries **no agent-context state whatsoever**. Integration classes do **not** declare a `context_file`, and the CLI never creates, updates, removes, resolves, or migrates a context/instruction file (`CLAUDE.md`, `AGENTS.md`, `.github/copilot-instructions.md`, …). New integrations add nothing for context handling.
|
|
179
175
|
|
|
180
|
-
|
|
176
|
+
Managing the "Spec Kit" section in the context file is fully owned by the bundled `agent-context` extension (`extensions/agent-context/`), which is a **full opt-in**: `specify init` does not install it. A user adds/enables it through the standard extension verbs, after which the extension's own bundled scripts maintain the context section. When the extension is absent or disabled, nothing in Spec Kit touches the context file.
|
|
177
|
+
|
|
178
|
+
The extension reads its own config file at `.specify/extensions/agent-context/agent-context-config.yml`:
|
|
181
179
|
|
|
182
180
|
```yaml
|
|
183
181
|
# Path to the coding agent context file managed by this extension
|
|
@@ -189,10 +187,10 @@ context_markers:
|
|
|
189
187
|
end: "<!-- SPECKIT END -->"
|
|
190
188
|
```
|
|
191
189
|
|
|
192
|
-
- `context_file` is
|
|
193
|
-
- `context_markers.{start,end}`
|
|
190
|
+
- The Specify CLI does **not** write this config. When `context_file` is empty, the extension's bundled scripts self-seed it by looking up the active integration's key in the extension's own `agent-context-defaults.json` map (`extensions/agent-context/scripts/bash/update-agent-context.sh` and `.ps1`). The CLI registry is never consulted — all agent→context-file knowledge lives inside the extension.
|
|
191
|
+
- `context_markers.{start,end}` are read solely by the extension's scripts; they default to the Spec Kit markers shown above and can be customized by editing `agent-context-config.yml` directly.
|
|
194
192
|
|
|
195
|
-
|
|
193
|
+
Existing projects created by older Spec Kit versions keep working: any previously written managed section or extension config is left intact and is only ever updated by the extension when run.
|
|
196
194
|
|
|
197
195
|
Only add custom setup logic when the agent needs non-standard behavior. Integrations no longer require per-agent thin wrapper scripts or shared context-update dispatcher scripts — the `agent-context` extension is fully generic.
|
|
198
196
|
|
|
@@ -401,7 +399,6 @@ Implementation: Extends `YamlIntegration` (parallel to `TomlIntegration`):
|
|
|
401
399
|
2. Extracts title and description from frontmatter
|
|
402
400
|
3. Renders output as Goose recipe YAML (version, title, description, author, extensions, activities, prompt)
|
|
403
401
|
4. Uses `yaml.safe_dump()` for header fields to ensure proper escaping
|
|
404
|
-
5. Sets `context_file = "AGENTS.md"` so the base setup manages the Spec Kit context section there
|
|
405
402
|
|
|
406
403
|
## Branch Naming Convention
|
|
407
404
|
|
|
@@ -466,7 +463,7 @@ Disclosure is **continuous**, not a one-time event. A single AI-disclosure parag
|
|
|
466
463
|
## Common Pitfalls
|
|
467
464
|
|
|
468
465
|
1. **Using shorthand keys for CLI-based integrations**: For CLI-based integrations (`requires_cli: True`), the `key` must match the executable name (e.g., `"cursor-agent"` not `"cursor"`). `shutil.which(key)` is used for CLI tool checks — mismatches require special-case mappings. IDE-based integrations (`requires_cli: False`) are not subject to this constraint.
|
|
469
|
-
2. **
|
|
466
|
+
2. **Reintroducing context handling into the CLI**: The opt-in `agent-context` extension owns everything about context files — including the per-agent default mapping in `agent-context-defaults.json`. Integration classes must **not** declare a `context_file`, and no CLI code should read, write, resolve, or migrate context files. All context-file logic lives in `.specify/extensions/agent-context/` and its bundled scripts.
|
|
470
467
|
3. **Incorrect `requires_cli` value**: Set to `True` only for agents that have a CLI tool; set to `False` for IDE-based agents.
|
|
471
468
|
4. **Wrong argument format**: Use `$ARGUMENTS` for Markdown agents, `{{args}}` for TOML agents.
|
|
472
469
|
5. **Skipping registration**: The import and `_register()` call in `_register_builtins()` must both be added.
|
|
@@ -2,6 +2,37 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- insert new changelog below this comment -->
|
|
4
4
|
|
|
5
|
+
## [0.12.0] - 2026-06-29
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- feat: make agent-context extension a full opt-in (#3097)
|
|
10
|
+
- docs(workflows): add the built-in 'init' step type to the Step Types table (#3234)
|
|
11
|
+
- fix(workflows): gate validate() must not crash on non-string options (#3233)
|
|
12
|
+
- fix(workflows): make pipe-filter detection quote-aware in expressions (#3232)
|
|
13
|
+
- fix(workflows): reject a fan-in wait_for that names an unknown step at validation (#3225)
|
|
14
|
+
- fix(scripts): warn when spec template is missing in create-new-feature.ps1 (parity with bash) (#3230)
|
|
15
|
+
- fix(scripts): count subdirectory-only dirs as non-empty in PowerShell (parity with bash) (#3137)
|
|
16
|
+
- fix(scripts): drop HAS_GIT from PowerShell git-extension output (parity with bash) (#3195)
|
|
17
|
+
- Update Product Spec Extension to v1.0.1 (#3226)
|
|
18
|
+
- chore: release 0.11.10, begin 0.11.11.dev0 development (#3240)
|
|
19
|
+
|
|
20
|
+
## [0.11.10] - 2026-06-29
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- fix(extensions): apply GHES auth and resolve release assets for `extension add --from` (#3217)
|
|
25
|
+
- fix(pi): repoint install_url to @earendil-works/pi-coding-agent (#3169) (#3214)
|
|
26
|
+
- fix(catalogs): reject host-less catalog URLs in base and preset validators (#3210)
|
|
27
|
+
- fix: update CodeBuddy install docs URL (#3187)
|
|
28
|
+
- fix(workflows): reject infinite number-input default instead of raising OverflowError (#3199)
|
|
29
|
+
- fix(scripts): emit 'Copied plan template' status in setup-plan.ps1 (parity with bash) (#3198)
|
|
30
|
+
- fix(workflows): make expression operator/literal parsing quote-aware (#3197)
|
|
31
|
+
- fix(scripts): honor explicit -Number 0 in PowerShell create-new-feature (parity with bash) (#3196)
|
|
32
|
+
- Add community bundle submission path (#3162)
|
|
33
|
+
- Docs: Document /speckit.converge command (#3181)
|
|
34
|
+
- chore: release 0.11.9, begin 0.11.10.dev0 development (#3189)
|
|
35
|
+
|
|
5
36
|
## [0.11.9] - 2026-06-26
|
|
6
37
|
|
|
7
38
|
### Changed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: specify-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.12.0
|
|
4
4
|
Summary: Specify CLI, part of GitHub Spec Kit. A tool to bootstrap your projects for Spec-Driven Development (SDD).
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -154,13 +154,14 @@ Explore community-contributed resources on the [Spec Kit docs site](https://gith
|
|
|
154
154
|
|
|
155
155
|
- [Extensions](https://github.github.io/spec-kit/community/extensions.html) — commands, hooks, and capabilities
|
|
156
156
|
- [Presets](https://github.github.io/spec-kit/community/presets.html) — template and terminology overrides
|
|
157
|
+
- [Bundles](https://github.github.io/spec-kit/community/bundles.html) — role and team stacks composed from existing components
|
|
157
158
|
- [Walkthroughs](https://github.github.io/spec-kit/community/walkthroughs.html) — end-to-end SDD scenarios
|
|
158
159
|
- [Friends](https://github.github.io/spec-kit/community/friends.html) — projects that extend or build on Spec Kit
|
|
159
160
|
|
|
160
161
|
> [!NOTE]
|
|
161
162
|
> Community contributions are independently created and maintained by their respective authors. Review source code before installation and use at your own discretion.
|
|
162
163
|
|
|
163
|
-
Want to contribute? See the [Extension Publishing Guide](extensions/EXTENSION-PUBLISHING-GUIDE.md)
|
|
164
|
+
Want to contribute? See the [Extension Publishing Guide](extensions/EXTENSION-PUBLISHING-GUIDE.md), the [Presets Publishing Guide](presets/PUBLISHING.md), or the [Community Bundles guide](docs/community/bundles.md).
|
|
164
165
|
|
|
165
166
|
## 🤖 Supported AI Coding Agent Integrations
|
|
166
167
|
|
|
@@ -282,8 +283,10 @@ built-in). Each source carries an install policy: `install-allowed` sources can
|
|
|
282
283
|
be installed from, while `discovery-only` sources are visible in `search`/`info`
|
|
283
284
|
but refuse installation. Manage the stack with `specify bundle catalog list|add|remove`.
|
|
284
285
|
|
|
285
|
-
Authors validate and package bundles locally
|
|
286
|
-
|
|
286
|
+
Authors validate and package bundles locally. Distribution is hosting the built
|
|
287
|
+
artifact and adding a catalog source; community bundle submissions use the
|
|
288
|
+
[Bundle Submission](https://github.com/github/spec-kit/issues/new?template=bundle_submission.yml)
|
|
289
|
+
issue template so required component catalogs and install evidence can be reviewed:
|
|
287
290
|
|
|
288
291
|
```bash
|
|
289
292
|
specify bundle validate --path ./my-bundle # structural + reference checks
|
|
@@ -134,13 +134,14 @@ Explore community-contributed resources on the [Spec Kit docs site](https://gith
|
|
|
134
134
|
|
|
135
135
|
- [Extensions](https://github.github.io/spec-kit/community/extensions.html) — commands, hooks, and capabilities
|
|
136
136
|
- [Presets](https://github.github.io/spec-kit/community/presets.html) — template and terminology overrides
|
|
137
|
+
- [Bundles](https://github.github.io/spec-kit/community/bundles.html) — role and team stacks composed from existing components
|
|
137
138
|
- [Walkthroughs](https://github.github.io/spec-kit/community/walkthroughs.html) — end-to-end SDD scenarios
|
|
138
139
|
- [Friends](https://github.github.io/spec-kit/community/friends.html) — projects that extend or build on Spec Kit
|
|
139
140
|
|
|
140
141
|
> [!NOTE]
|
|
141
142
|
> Community contributions are independently created and maintained by their respective authors. Review source code before installation and use at your own discretion.
|
|
142
143
|
|
|
143
|
-
Want to contribute? See the [Extension Publishing Guide](extensions/EXTENSION-PUBLISHING-GUIDE.md)
|
|
144
|
+
Want to contribute? See the [Extension Publishing Guide](extensions/EXTENSION-PUBLISHING-GUIDE.md), the [Presets Publishing Guide](presets/PUBLISHING.md), or the [Community Bundles guide](docs/community/bundles.md).
|
|
144
145
|
|
|
145
146
|
## 🤖 Supported AI Coding Agent Integrations
|
|
146
147
|
|
|
@@ -262,8 +263,10 @@ built-in). Each source carries an install policy: `install-allowed` sources can
|
|
|
262
263
|
be installed from, while `discovery-only` sources are visible in `search`/`info`
|
|
263
264
|
but refuse installation. Manage the stack with `specify bundle catalog list|add|remove`.
|
|
264
265
|
|
|
265
|
-
Authors validate and package bundles locally
|
|
266
|
-
|
|
266
|
+
Authors validate and package bundles locally. Distribution is hosting the built
|
|
267
|
+
artifact and adding a catalog source; community bundle submissions use the
|
|
268
|
+
[Bundle Submission](https://github.com/github/spec-kit/issues/new?template=bundle_submission.yml)
|
|
269
|
+
issue template so required component catalogs and install evidence can be reviewed:
|
|
267
270
|
|
|
268
271
|
```bash
|
|
269
272
|
specify bundle validate --path ./my-bundle # structural + reference checks
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Community Bundles
|
|
2
|
+
|
|
3
|
+
> [!NOTE]
|
|
4
|
+
> Community bundles are independently created and maintained by their respective authors. Maintainers only verify that submission metadata is complete and correctly formatted — they do **not review, audit, endorse, or support the bundle code or the components it installs**. Review bundle manifests, component catalogs, and source repositories before installation and use at your own discretion.
|
|
5
|
+
|
|
6
|
+
Bundles compose existing Spec Kit components — extensions, presets, workflows, and steps — into a single role or team stack. They are useful when a user should be able to install a tested set of components together instead of following several separate install commands.
|
|
7
|
+
|
|
8
|
+
Accepted community bundle entries will be listed here once a community bundle catalog is available. To submit a bundle for review, file a [Bundle Submission](https://github.com/github/spec-kit/issues/new?template=bundle_submission.yml) issue.
|
|
9
|
+
|
|
10
|
+
## What to Submit
|
|
11
|
+
|
|
12
|
+
A bundle submission should include:
|
|
13
|
+
|
|
14
|
+
- A public repository with a valid `bundle.yml` manifest.
|
|
15
|
+
- A versioned GitHub release with a bundle artifact created by `specify bundle build`.
|
|
16
|
+
- Documentation that explains the intended role, installed components, required catalogs, and expected workflow.
|
|
17
|
+
- A proposed catalog entry with bundle metadata and component counts.
|
|
18
|
+
- Test evidence from a clean Spec Kit project.
|
|
19
|
+
|
|
20
|
+
## Component Resolution
|
|
21
|
+
|
|
22
|
+
A bundle catalog entry describes where to download the bundle artifact, but the bundle's component references still need to resolve when a user installs it. References can resolve from bundled components, already installed components, or active extension, preset, workflow, and step catalogs.
|
|
23
|
+
|
|
24
|
+
If your bundle depends on components that are not available from the default Spec Kit catalogs, include the required catalog URLs in the submission and in your README. Test the full install path from a clean project with those catalogs added before submitting.
|
|
25
|
+
|
|
26
|
+
For example:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
specify preset catalog add https://example.com/presets.json --name example-bundle --install-allowed
|
|
30
|
+
specify extension catalog add https://example.com/extensions.json --name example-bundle --install-allowed
|
|
31
|
+
curl -L -o example-bundle-1.0.0.zip https://example.com/example-bundle-1.0.0.zip
|
|
32
|
+
specify bundle install ./example-bundle-1.0.0.zip
|
|
33
|
+
|
|
34
|
+
# Or install by id from an install-allowed bundle catalog.
|
|
35
|
+
specify bundle catalog add https://example.com/bundles.json --id example-bundle-catalog --policy install-allowed
|
|
36
|
+
specify bundle install example-bundle
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Review Scope
|
|
40
|
+
|
|
41
|
+
Maintainers check that:
|
|
42
|
+
|
|
43
|
+
- The submission fields are complete and correctly formatted.
|
|
44
|
+
- The release artifact and documentation URLs are reachable.
|
|
45
|
+
- The repository contains a `bundle.yml` manifest.
|
|
46
|
+
- The submission clearly identifies any required component catalogs.
|
|
47
|
+
- The proposed catalog entry uses the expected bundle catalog entry shape.
|
|
48
|
+
|
|
49
|
+
Maintainers do not audit the behavior of installed extensions, presets, workflows, steps, or scripts. Users should review those components before installing a community bundle.
|
|
50
|
+
|
|
51
|
+
## Updating a Bundle
|
|
52
|
+
|
|
53
|
+
To update a submitted bundle, file another [Bundle Submission](https://github.com/github/spec-kit/issues/new?template=bundle_submission.yml) issue with the new version, download URL, changed component list, and updated test evidence. Mention that the issue updates an existing bundle entry.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Community
|
|
2
2
|
|
|
3
|
-
The Spec Kit community builds extensions, presets, walkthroughs, and companion projects that expand what you can do with Spec-Driven Development. All community contributions are independently created and maintained by their respective authors.
|
|
3
|
+
The Spec Kit community builds extensions, presets, bundles, walkthroughs, and companion projects that expand what you can do with Spec-Driven Development. All community contributions are independently created and maintained by their respective authors.
|
|
4
4
|
|
|
5
5
|
## Extensions
|
|
6
6
|
|
|
@@ -14,6 +14,12 @@ Presets customize how Spec Kit behaves — overriding templates, commands, and t
|
|
|
14
14
|
|
|
15
15
|
[Browse community presets →](presets.md)
|
|
16
16
|
|
|
17
|
+
## Bundles
|
|
18
|
+
|
|
19
|
+
Bundles compose extensions, presets, workflows, and steps into role or team stacks that can be installed together.
|
|
20
|
+
|
|
21
|
+
[Browse community bundles →](bundles.md)
|
|
22
|
+
|
|
17
23
|
## Walkthroughs
|
|
18
24
|
|
|
19
25
|
Step-by-step guides that show Spec-Driven Development in action across different scenarios, languages, and frameworks.
|
|
@@ -26,6 +26,7 @@ through the standard flow:
|
|
|
26
26
|
2. Run `/speckit.plan` to define the implementation approach.
|
|
27
27
|
3. Run `/speckit.tasks` to derive the work breakdown.
|
|
28
28
|
4. Run `/speckit.implement` and review the resulting code and artifact diffs.
|
|
29
|
+
5. Run `/speckit.converge` to verify completeness and generate tasks for remaining gaps. If tasks are appended, repeat `/speckit.implement` and `/speckit.converge` until the feature is fully complete.
|
|
29
30
|
|
|
30
31
|
The previous feature directory remains intact for audit, comparison, or
|
|
31
32
|
explaining how the project reached its current state. Use clear feature names or
|
|
@@ -50,6 +51,7 @@ spec:
|
|
|
50
51
|
5. Run `/speckit.analyze` before implementation resumes to catch gaps between
|
|
51
52
|
the spec, plan, and tasks.
|
|
52
53
|
6. Run `/speckit.implement`, then review the code and artifact diffs together.
|
|
54
|
+
7. Run `/speckit.converge` to assess completion and append any remaining work to `tasks.md`. If tasks are appended, repeat `/speckit.implement` and `/speckit.converge` until the feature is fully complete.
|
|
53
55
|
|
|
54
56
|
Preserve important implementation rationale before replacing derived artifacts.
|
|
55
57
|
If a plan or task list contains decisions that still matter, carry them forward
|
|
@@ -94,8 +94,15 @@ This helps verify you are running the official Spec Kit build from GitHub, not a
|
|
|
94
94
|
After initialization, you should see the following commands available in your coding agent:
|
|
95
95
|
|
|
96
96
|
- `/speckit.specify` - Create specifications
|
|
97
|
-
- `/speckit.plan` - Generate implementation plans
|
|
97
|
+
- `/speckit.plan` - Generate implementation plans
|
|
98
98
|
- `/speckit.tasks` - Break down into actionable tasks
|
|
99
|
+
- `/speckit.implement` - Execute implementation tasks
|
|
100
|
+
- `/speckit.analyze` - Validate cross-artifact consistency
|
|
101
|
+
- `/speckit.clarify` - Identify and resolve ambiguities
|
|
102
|
+
- `/speckit.checklist` - Generate quality checklists
|
|
103
|
+
- `/speckit.constitution` - Create or update project principles
|
|
104
|
+
- `/speckit.converge` - Assess codebase against artifacts and append remaining tasks
|
|
105
|
+
- `/speckit.taskstoissues` - Convert tasks to issues
|
|
99
106
|
|
|
100
107
|
Scripts are installed into a variant subdirectory matching the chosen script type:
|
|
101
108
|
|
|
@@ -13,10 +13,10 @@ This guide will help you get started with Spec-Driven Development using Spec Kit
|
|
|
13
13
|
After installing Spec Kit and defining your project constitution, quick experiments can use the lean feature path: `/speckit.specify` -> `/speckit.plan` -> `/speckit.tasks` -> `/speckit.implement`. For production features or any work with meaningful ambiguity, treat `/speckit.clarify`, `/speckit.checklist`, and `/speckit.analyze` as regular quality gates:
|
|
14
14
|
|
|
15
15
|
```text
|
|
16
|
-
/speckit.constitution -> /speckit.specify -> /speckit.clarify -> /speckit.plan -> /speckit.checklist -> /speckit.tasks -> /speckit.analyze -> /speckit.implement
|
|
16
|
+
/speckit.constitution -> /speckit.specify -> /speckit.clarify -> /speckit.plan -> /speckit.checklist -> /speckit.tasks -> /speckit.analyze -> /speckit.implement -> /speckit.converge
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
Use `/speckit.clarify` to reduce requirement ambiguity before planning, `/speckit.checklist` (after `/speckit.plan`) to generate quality checklists that validate requirements completeness, clarity, and consistency, and `/speckit.analyze` to check spec/plan/task consistency before implementation starts. You can repeat `/speckit.analyze` after implementation as an extra review, but keep the first analysis before `/speckit.implement` so gaps are caught while the plan and tasks can still be adjusted.
|
|
19
|
+
Use `/speckit.clarify` to reduce requirement ambiguity before planning, `/speckit.checklist` (after `/speckit.plan`) to generate quality checklists that validate requirements completeness, clarity, and consistency, and `/speckit.analyze` to check spec/plan/task consistency before implementation starts. You can repeat `/speckit.analyze` after implementation as an extra review, but keep the first analysis before `/speckit.implement` so gaps are caught while the plan and tasks can still be adjusted. Finally, run `/speckit.converge` after implementation to verify all planned work is complete and generate tasks for any remaining gaps. If `/speckit.converge` appends new tasks, run `/speckit.implement` again (and converge again) until it reports that the feature has converged.
|
|
20
20
|
|
|
21
21
|
### Step 1: Install Specify
|
|
22
22
|
|
|
@@ -188,6 +188,14 @@ Finally, implement the solution:
|
|
|
188
188
|
/speckit.implement
|
|
189
189
|
```
|
|
190
190
|
|
|
191
|
+
### Step 8: Converge
|
|
192
|
+
|
|
193
|
+
Run the `/speckit.converge` command after implementation to assess the current codebase against the feature's artifacts and append any remaining unbuilt work as new tasks to `tasks.md`. If the command appends new tasks, run `/speckit.implement` again to complete them, and repeat the converge step until the feature is fully complete.
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
/speckit.converge
|
|
197
|
+
```
|
|
198
|
+
|
|
191
199
|
> [!TIP]
|
|
192
200
|
> **Phased Implementation**: For large projects like Taskify, consider implementing in phases (e.g., Phase 1: Basic project/task structure, Phase 2: Kanban functionality, Phase 3: Comments and assignments). This prevents context saturation and allows for validation at each stage.
|
|
193
201
|
|
|
@@ -119,6 +119,12 @@ specify bundle build
|
|
|
119
119
|
|
|
120
120
|
Produces a single versioned, distributable `.zip` artifact from a bundle directory. The artifact embeds the manifest and can be installed directly with `specify bundle install <artifact.zip>`.
|
|
121
121
|
|
|
122
|
+
## Publish a Bundle
|
|
123
|
+
|
|
124
|
+
Bundle authors validate and package bundles locally, then host the generated artifact and catalog metadata where users can access it. A bundle catalog entry points at the bundle artifact, but the components declared inside `bundle.yml` still resolve through bundled components, installed components, or active extension, preset, workflow, and step catalogs.
|
|
125
|
+
|
|
126
|
+
If your bundle references components from non-default catalogs, document those catalog URLs and test the install path from a clean project with those catalogs added. Community bundle submissions should include that dependency-resolution evidence in the [Bundle Submission](https://github.com/github/spec-kit/issues/new?template=bundle_submission.yml) issue.
|
|
127
|
+
|
|
122
128
|
## Manage Catalog Sources
|
|
123
129
|
|
|
124
130
|
Bundles are discovered through a priority-ordered stack of catalog sources (project, user, and built-in scopes).
|