specify-cli 0.10.0__tar.gz → 0.10.1__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.10.0 → specify_cli-0.10.1}/CHANGELOG.md +14 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/PKG-INFO +1 -1
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/community/extensions.md +2 -2
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/community/presets.md +1 -1
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/concepts/sdd.md +5 -0
- specify_cli-0.10.1/docs/concepts/spec-persistence.md +107 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/reference/integrations.md +21 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/toc.yml +2 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/catalog.community.json +14 -14
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/catalog.community.json +6 -6
- {specify_cli-0.10.0 → specify_cli-0.10.1}/pyproject.toml +1 -1
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/_github_http.py +8 -45
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/extensions.py +178 -37
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integration_state.py +37 -8
- specify_cli-0.10.1/src/specify_cli/integration_status.py +663 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/_query_commands.py +84 -2
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/manifest.py +22 -4
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/presets.py +180 -38
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_subcommand.py +846 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_extensions.py +418 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_presets.py +415 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.devcontainer/devcontainer.json +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.devcontainer/post-create.sh +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.editorconfig +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.gitattributes +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/CODEOWNERS +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/ISSUE_TEMPLATE/agent_request.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/ISSUE_TEMPLATE/preset_submission.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/aw/actions-lock.json +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/dependabot.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/skills/add-community-extension/SKILL.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/workflows/RELEASE-PROCESS.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/workflows/add-community-extension.lock.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/workflows/add-community-extension.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/workflows/add-community-preset.lock.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/workflows/add-community-preset.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/workflows/catalog-assign.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/workflows/codeql.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/workflows/docs.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/workflows/lint.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/workflows/release-trigger.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/workflows/release.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/workflows/stale.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.github/workflows/test.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.gitignore +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.markdownlint-cli2.jsonc +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/.zenodo.json +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/AGENTS.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/CITATION.cff +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/CODE_OF_CONDUCT.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/CONTRIBUTING.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/DEVELOPMENT.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/LICENSE +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/README.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/SECURITY.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/SUPPORT.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/.gitignore +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/README.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/community/friends.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/community/overview.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/community/walkthroughs.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/docfx.json +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/index.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/install/air-gapped.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/install/one-time.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/install/pipx.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/install/uv.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/installation.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/local-development.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/quickstart.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/reference/authentication.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/reference/core.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/reference/extensions.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/reference/overview.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/reference/presets.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/reference/workflows.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/template/public/main.css +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/docs/upgrade.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/EXTENSION-API-REFERENCE.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/EXTENSION-PUBLISHING-GUIDE.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/EXTENSION-USER-GUIDE.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/README.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/agent-context/README.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/agent-context/agent-context-config.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/agent-context/extension.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/agent-context/scripts/bash/update-agent-context.sh +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/bug/README.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/bug/commands/speckit.bug.assess.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/bug/commands/speckit.bug.fix.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/bug/commands/speckit.bug.test.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/bug/extension.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/catalog.json +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/git/README.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/git/commands/speckit.git.commit.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/git/commands/speckit.git.feature.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/git/commands/speckit.git.initialize.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/git/commands/speckit.git.remote.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/git/commands/speckit.git.validate.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/git/config-template.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/git/extension.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/git/git-config.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/git/scripts/bash/auto-commit.sh +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/git/scripts/bash/git-common.sh +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/selftest/commands/selftest.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/selftest/extension.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/template/.gitignore +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/template/CHANGELOG.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/template/EXAMPLE-README.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/template/LICENSE +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/template/README.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/template/commands/example.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/template/config-template.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/extensions/template/extension.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/integrations/CONTRIBUTING.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/integrations/README.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/integrations/catalog.community.json +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/integrations/catalog.json +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/media/bootstrap-claude-code.gif +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/media/logo_large.webp +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/media/logo_small.webp +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/media/spec-kit-video-header.jpg +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/media/specify_cli.gif +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/newsletters/2026-April.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/newsletters/2026-February.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/newsletters/2026-March.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/newsletters/2026-May.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/ARCHITECTURE.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/PUBLISHING.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/README.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/catalog.json +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/lean/README.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/lean/commands/speckit.constitution.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/lean/commands/speckit.implement.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/lean/commands/speckit.plan.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/lean/commands/speckit.specify.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/lean/commands/speckit.tasks.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/lean/preset.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/scaffold/README.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/scaffold/commands/speckit.specify.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/scaffold/preset.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/scaffold/templates/myext-template.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/scaffold/templates/spec-template.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/self-test/commands/speckit.specify.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/self-test/commands/speckit.wrap-test.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/self-test/preset.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/self-test/templates/agent-file-template.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/self-test/templates/checklist-template.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/self-test/templates/constitution-template.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/self-test/templates/plan-template.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/self-test/templates/spec-template.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/presets/self-test/templates/tasks-template.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/scripts/bash/check-prerequisites.sh +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/scripts/bash/common.sh +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/scripts/bash/create-new-feature.sh +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/scripts/bash/setup-plan.sh +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/scripts/bash/setup-tasks.sh +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/scripts/powershell/check-prerequisites.ps1 +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/scripts/powershell/common.ps1 +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/scripts/powershell/create-new-feature.ps1 +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/scripts/powershell/setup-plan.ps1 +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/scripts/powershell/setup-tasks.ps1 +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/spec-driven.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/spec-kit.code-workspace +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/_agent_config.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/_assets.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/_console.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/_init_options.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/_utils.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/_version.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/agents.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/authentication/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/authentication/azure_devops.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/authentication/base.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/authentication/config.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/authentication/github.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/authentication/http.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/catalogs.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/commands/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/commands/init.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integration_runtime.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/_commands.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/_helpers.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/_install_commands.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/_migrate_commands.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/agy/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/amp/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/auggie/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/base.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/bob/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/catalog.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/claude/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/cline/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/codex/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/copilot/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/devin/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/forge/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/gemini/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/generic/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/goose/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/hermes/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/iflow/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/junie/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/kilocode/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/kimi/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/lingma/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/opencode/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/pi/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/qwen/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/roo/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/rovodev/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/shai/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/trae/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/vibe/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/integrations/windsurf/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/shared_infra.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/workflows/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/workflows/base.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/workflows/catalog.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/workflows/engine.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/workflows/expressions.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/workflows/steps/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/workflows/steps/command/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/workflows/steps/do_while/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/workflows/steps/fan_in/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/workflows/steps/fan_out/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/workflows/steps/gate/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/workflows/steps/if_then/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/workflows/steps/prompt/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/workflows/steps/shell/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/workflows/steps/switch/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/src/specify_cli/workflows/steps/while_loop/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/templates/checklist-template.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/templates/commands/analyze.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/templates/commands/checklist.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/templates/commands/clarify.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/templates/commands/constitution.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/templates/commands/implement.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/templates/commands/plan.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/templates/commands/specify.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/templates/commands/tasks.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/templates/commands/taskstoissues.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/templates/constitution-template.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/templates/plan-template.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/templates/spec-template.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/templates/tasks-template.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/templates/vscode-settings.json +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/auth_helpers.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/conftest.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/extensions/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/extensions/bug/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/extensions/bug/test_bug_extension.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/extensions/git/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/extensions/git/test_git_extension.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/extensions/test_extension_agent_context.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/hooks/.specify/extensions.yml +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/hooks/TESTING.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/hooks/plan.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/hooks/spec.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/hooks/tasks.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/http_helpers.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/__init__.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/conftest.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_base.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_cli.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_extra_args.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_agy.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_amp.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_auggie.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_base_markdown.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_base_skills.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_base_toml.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_base_yaml.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_bob.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_catalog.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_claude.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_cline.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_codebuddy.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_codex.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_copilot.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_cursor_agent.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_devin.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_forge.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_gemini.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_generic.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_goose.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_hermes.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_iflow.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_junie.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_kilocode.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_kimi.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_kiro_cli.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_lingma.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_opencode.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_pi.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_qodercli.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_qwen.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_roo.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_rovodev.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_shai.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_state.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_tabnine.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_trae.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_vibe.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_integration_windsurf.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_manifest.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/integrations/test_registry.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/self_upgrade_helpers.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_agent_config_consistency.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_authentication.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_branch_numbering.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_check_prerequisites_paths_only.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_check_tool.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_cli_version.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_commands_package.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_console_imports.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_extension_registration.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_extension_skills.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_extension_update_hardening.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_github_http.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_merge.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_ps1_encoding.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_registrar_path_traversal.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_self_upgrade_detection.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_self_upgrade_execution.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_self_upgrade_guidance.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_self_upgrade_verification.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_setup_plan_feature_json.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_setup_plan_no_overwrite.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_setup_tasks.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_timestamp_branches.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_upgrade.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_utils_assets_imports.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_version_imports.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_workflow_run_without_project.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/tests/test_workflows.py +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/workflows/ARCHITECTURE.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/workflows/PUBLISHING.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/workflows/README.md +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/workflows/catalog.community.json +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/workflows/catalog.json +0 -0
- {specify_cli-0.10.0 → specify_cli-0.10.1}/workflows/speckit/workflow.yml +0 -0
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- insert new changelog below this comment -->
|
|
4
4
|
|
|
5
|
+
## [0.10.1] - 2026-06-09
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Update DocGuard — CDD Enforcement extension to v0.25.1 (#2909)
|
|
10
|
+
- Update a11y-governance preset to v0.3.0 (#2867)
|
|
11
|
+
- docs: document spec persistence models (#2856)
|
|
12
|
+
- chore(catalog): bump Linear Integration to v0.3.0 (repo renamed to spec-kit-linear-sync) (#2893)
|
|
13
|
+
- chore: update DocGuard extension to v0.25.0 (#2707)
|
|
14
|
+
- chore: remove unused open_github_url/_StripAuthOnRedirect from _github_http.py (#2883)
|
|
15
|
+
- fix(catalogs): validate extension and preset catalog payload shape (#2621)
|
|
16
|
+
- feat(integration): add status reporting (#2674)
|
|
17
|
+
- chore: release 0.10.0, begin 0.10.1.dev0 development (#2904)
|
|
18
|
+
|
|
5
19
|
## [0.10.0] - 2026-06-09
|
|
6
20
|
|
|
7
21
|
### Changed
|
|
@@ -44,7 +44,7 @@ The following community-contributed extensions are available in [`catalog.commun
|
|
|
44
44
|
| Conduct Extension | Orchestrates spec-kit phases via sub-agent delegation to reduce context pollution. | `process` | Read+Write | [spec-kit-conduct-ext](https://github.com/twbrandon7/spec-kit-conduct-ext) |
|
|
45
45
|
| Confluence Extension | Create a doc in Confluence summarizing the specifications and planning files | `integration` | Read+Write | [spec-kit-confluence](https://github.com/aaronrsun/spec-kit-confluence) |
|
|
46
46
|
| Cost Tracker | Track real LLM dollar cost across SDD workflows — per-feature budgets, per-integration comparison, and finance-ready exports | `visibility` | Read+Write | [spec-kit-cost](https://github.com/Quratulain-bilal/spec-kit-cost) |
|
|
47
|
-
| DocGuard — CDD Enforcement | Canonical-Driven Development enforcement. Validates, scores, and traces project documentation with automated checks, AI-driven workflows, and spec-kit hooks.
|
|
47
|
+
| DocGuard — CDD Enforcement | Canonical-Driven Development enforcement. Validates, scores, and traces project documentation with automated checks, AI-driven workflows, and spec-kit hooks. One pinned runtime dependency; pure Node.js otherwise. | `docs` | Read+Write | [spec-kit-docguard](https://github.com/raccioly/docguard) |
|
|
48
48
|
| Extensify | Create and validate extensions and extension catalogs | `process` | Read+Write | [extensify](https://github.com/mnriem/spec-kit-extensions/tree/main/extensify) |
|
|
49
49
|
| Fix Findings | Automated analyze-fix-reanalyze loop that resolves spec findings until clean | `code` | Read+Write | [spec-kit-fix-findings](https://github.com/Quratulain-bilal/spec-kit-fix-findings) |
|
|
50
50
|
| FixIt Extension | Spec-aware bug fixing — maps bugs to spec artifacts, proposes a plan, applies minimal changes | `code` | Read+Write | [spec-kit-fixit](https://github.com/speckit-community/spec-kit-fixit) |
|
|
@@ -56,7 +56,7 @@ The following community-contributed extensions are available in [`catalog.commun
|
|
|
56
56
|
| Iterate | Iterate on spec documents with a two-phase define-and-apply workflow — refine specs mid-implementation and go straight back to building | `docs` | Read+Write | [spec-kit-iterate](https://github.com/imviancagrace/spec-kit-iterate) |
|
|
57
57
|
| Jira Integration | Create Jira Epics, Stories, and Issues from spec-kit specifications and task breakdowns with configurable hierarchy and custom field support | `integration` | Read+Write | [spec-kit-jira](https://github.com/mbachorik/spec-kit-jira) |
|
|
58
58
|
| Learning Extension | Generate educational guides from implementations and enhance clarifications with mentoring context | `docs` | Read+Write | [spec-kit-learn](https://github.com/imviancagrace/spec-kit-learn) |
|
|
59
|
-
| Linear Integration | Mirror spec-kit feature directories into Linear (filesystem → Linear, reconcile-based, unidirectional). | `integration` | Read+Write | [spec-kit-linear](https://github.com/ashbrener/spec-kit-linear) |
|
|
59
|
+
| Linear Integration | Mirror spec-kit feature directories into Linear (filesystem → Linear, reconcile-based, unidirectional). | `integration` | Read+Write | [spec-kit-linear-sync](https://github.com/ashbrener/spec-kit-linear-sync) |
|
|
60
60
|
| MAQA — Multi-Agent & Quality Assurance | Coordinator → feature → QA agent workflow with parallel worktree-based implementation. Language-agnostic. Auto-detects installed board plugins. Optional CI gate. | `process` | Read+Write | [spec-kit-maqa-ext](https://github.com/GenieRobot/spec-kit-maqa-ext) |
|
|
61
61
|
| MAQA Azure DevOps Integration | Azure DevOps Boards integration for MAQA — syncs User Stories and Task children as features progress | `integration` | Read+Write | [spec-kit-maqa-azure-devops](https://github.com/GenieRobot/spec-kit-maqa-azure-devops) |
|
|
62
62
|
| MAQA CI/CD Gate | Auto-detects GitHub Actions, CircleCI, GitLab CI, and Bitbucket Pipelines. Blocks QA handoff until pipeline is green. | `process` | Read+Write | [spec-kit-maqa-ci](https://github.com/GenieRobot/spec-kit-maqa-ci) |
|
|
@@ -7,7 +7,7 @@ The following community-contributed presets customize how Spec Kit behaves — o
|
|
|
7
7
|
|
|
8
8
|
| Preset | Purpose | Provides | Requires | URL |
|
|
9
9
|
|--------|---------|----------|----------|-----|
|
|
10
|
-
| A11Y Governance | Adds WCAG 2.2 AA accessibility checks, bilingual DE/EN delivery, CEFR-B2 readability, CLI accessibility,
|
|
10
|
+
| A11Y Governance | Adds WCAG 2.2 AA accessibility checks, bilingual DE/EN delivery, CEFR-B2 readability, CLI accessibility, inclusive-content guidance, and didactic inline-code-comment review | 10 templates, 3 commands | — | [spec-kit-preset-a11y-governance](https://github.com/hindermath/spec-kit-preset-a11y-governance) |
|
|
11
11
|
| Agent Parity Governance | Keeps shared AI-agent instructions aligned and adds agent-neutral Spec Kit model-routing guidance across project-defined agent guidance surfaces | 9 templates, 3 commands | — | [spec-kit-preset-agent-parity-governance](https://github.com/hindermath/spec-kit-preset-agent-parity-governance) |
|
|
12
12
|
| AIDE In-Place Migration | Adapts the AIDE extension workflow for in-place technology migrations (X → Y pattern) — adds migration objectives, verification gates, knowledge documents, and behavioral equivalence criteria | 2 templates, 8 commands | AIDE extension | [spec-kit-presets](https://github.com/mnriem/spec-kit-presets) |
|
|
13
13
|
| Architecture Governance | Adds secure architecture governance: trust boundaries, threat modeling, STRIDE/CAPEC, S-ADRs, Zero Trust applicability, and OWASP SAMM | 11 templates, 3 commands | — | [spec-kit-preset-architecture-governance](https://github.com/hindermath/spec-kit-preset-architecture-governance) |
|
|
@@ -11,6 +11,11 @@ Spec-Driven Development is a structured process that emphasizes:
|
|
|
11
11
|
- **Multi-step refinement** rather than one-shot code generation from prompts
|
|
12
12
|
- **Heavy reliance** on advanced AI model capabilities for specification interpretation
|
|
13
13
|
|
|
14
|
+
Spec Kit does not prescribe how teams preserve or mutate `spec.md`, `plan.md`,
|
|
15
|
+
and `tasks.md` after requirements change. See
|
|
16
|
+
[Spec Persistence Models](spec-persistence.md) for three common ways to manage
|
|
17
|
+
those artifacts over time.
|
|
18
|
+
|
|
14
19
|
## Development Phases
|
|
15
20
|
|
|
16
21
|
| Phase | Focus | Key Activities |
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Spec Persistence Models
|
|
2
|
+
|
|
3
|
+
Spec Kit intentionally leaves teams in control of what happens to `spec.md`,
|
|
4
|
+
`plan.md`, and `tasks.md` after requirements change. The toolkit gives you a
|
|
5
|
+
repeatable workflow, but it does not force one artifact maintenance strategy.
|
|
6
|
+
|
|
7
|
+
This page names three common models so teams can make that choice explicit.
|
|
8
|
+
None is the default, and none is required by Spec Kit.
|
|
9
|
+
|
|
10
|
+
## Two Separate Questions
|
|
11
|
+
|
|
12
|
+
Spec-driven development has a temporal question: how long should the
|
|
13
|
+
specification matter? One
|
|
14
|
+
[overview of SDD tooling](https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html)
|
|
15
|
+
frames that lifecycle in three levels:
|
|
16
|
+
|
|
17
|
+
- **Spec-first**: write a spec before coding, then allow it to be discarded.
|
|
18
|
+
- **Spec-anchored**: keep the spec after implementation and use it for future
|
|
19
|
+
changes.
|
|
20
|
+
- **Spec-as-source**: treat the spec as the only human-edited source and
|
|
21
|
+
regenerate implementation artifacts from it.
|
|
22
|
+
|
|
23
|
+
Spec Kit also exposes a second question: what happens to the artifact set when
|
|
24
|
+
requirements change? The models below describe that mutation strategy.
|
|
25
|
+
|
|
26
|
+
## Flow-Back Spec
|
|
27
|
+
|
|
28
|
+
Use flow-back when `spec.md`, `plan.md`, `tasks.md`, and the implementation are
|
|
29
|
+
all allowed to inform each other.
|
|
30
|
+
|
|
31
|
+
In this model, edits can begin in any artifact. A developer might update
|
|
32
|
+
`tasks.md` during implementation, revise `plan.md` after a technical discovery,
|
|
33
|
+
or adjust `spec.md` after a product clarification. The team then reconciles the
|
|
34
|
+
artifact set manually so the final project history still makes sense.
|
|
35
|
+
|
|
36
|
+
Flow-back works well when:
|
|
37
|
+
|
|
38
|
+
- the team is small enough to notice and reconcile drift quickly
|
|
39
|
+
- implementation discoveries are expected to reshape the original plan
|
|
40
|
+
- speed matters more than preserving each intermediate decision as immutable
|
|
41
|
+
history
|
|
42
|
+
|
|
43
|
+
The main risk is silent divergence. If the team changes lower-level artifacts
|
|
44
|
+
without reflecting the decision back into `spec.md`, future contributors may
|
|
45
|
+
not know which artifact to trust.
|
|
46
|
+
|
|
47
|
+
## Flow-Forward Spec
|
|
48
|
+
|
|
49
|
+
Use flow-forward when each feature directory should remain a historical record.
|
|
50
|
+
|
|
51
|
+
In this model, completed artifacts are treated as immutable. When requirements
|
|
52
|
+
change, the team creates a new feature directory instead of mutating the
|
|
53
|
+
existing `spec.md`, `plan.md`, or `tasks.md`. The older directory remains useful
|
|
54
|
+
for audit, comparison, or explaining how the project reached its current state.
|
|
55
|
+
|
|
56
|
+
Flow-forward works well when:
|
|
57
|
+
|
|
58
|
+
- auditability and traceability matter
|
|
59
|
+
- features are well-scoped and rarely revisited in place
|
|
60
|
+
- the team wants a clear sequence of requirement changes over time
|
|
61
|
+
|
|
62
|
+
The main tradeoff is duplication. Related decisions can be spread across
|
|
63
|
+
multiple feature directories, so teams need naming, linking, or review habits
|
|
64
|
+
that make the lineage easy to follow.
|
|
65
|
+
|
|
66
|
+
## Living Spec
|
|
67
|
+
|
|
68
|
+
Use living spec when `spec.md` is the contract and the other artifacts are
|
|
69
|
+
derived from it.
|
|
70
|
+
|
|
71
|
+
In this model, teams update `spec.md` first and then regenerate or revise
|
|
72
|
+
`plan.md` and `tasks.md` from that source. The plan and task list are still
|
|
73
|
+
valuable, but they are treated as disposable derivations rather than permanent
|
|
74
|
+
sources of truth.
|
|
75
|
+
|
|
76
|
+
Living spec works well when:
|
|
77
|
+
|
|
78
|
+
- the product contract is stable enough to own the workflow
|
|
79
|
+
- the team is comfortable regenerating derived artifacts after spec changes
|
|
80
|
+
- consistency between requirements and implementation matters more than keeping
|
|
81
|
+
every intermediate plan intact
|
|
82
|
+
|
|
83
|
+
The main risk is losing useful implementation rationale if derived artifacts are
|
|
84
|
+
discarded without preserving important decisions elsewhere.
|
|
85
|
+
|
|
86
|
+
## Choosing a Model
|
|
87
|
+
|
|
88
|
+
The model is a team convention, not a CLI setting. A project can even use
|
|
89
|
+
different models in different areas, as long as contributors know which one
|
|
90
|
+
applies.
|
|
91
|
+
|
|
92
|
+
| Model | Mutation rule | Best fit | Watch out for |
|
|
93
|
+
|---|---|---|---|
|
|
94
|
+
| Flow-back spec | Edit any artifact, then reconcile | Fast iteration and close collaboration | Silent drift between artifacts |
|
|
95
|
+
| Flow-forward spec | Create a new feature directory for new requirements | Audit trails and historical clarity | Duplicate or fragmented context |
|
|
96
|
+
| Living spec | Edit `spec.md`; regenerate derived artifacts | Spec as contract | Lost rationale in regenerated files |
|
|
97
|
+
|
|
98
|
+
If your team has not chosen a model yet, start by answering two questions:
|
|
99
|
+
|
|
100
|
+
1. Should completed feature directories be historical records or editable work
|
|
101
|
+
areas?
|
|
102
|
+
2. Is `spec.md` the single source of truth, or are `plan.md` and `tasks.md`
|
|
103
|
+
allowed to become co-equal sources?
|
|
104
|
+
|
|
105
|
+
Once those answers are clear, document the convention in your project
|
|
106
|
+
constitution or team onboarding notes so future contributors know how to handle
|
|
107
|
+
changes.
|
|
@@ -126,6 +126,27 @@ specify integration upgrade [<key>]
|
|
|
126
126
|
|
|
127
127
|
Reinstalls an installed integration with updated templates and commands (e.g., after upgrading Spec Kit). Defaults to the default integration; if a key is provided, it must be one of the installed integrations. Detects locally modified files and blocks the upgrade unless `--force` is used. Stale files from the previous install that are no longer needed are removed automatically. Shared templates stay aligned with the default integration even when upgrading a non-default integration.
|
|
128
128
|
|
|
129
|
+
## Report Integration Status
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
specify integration status
|
|
133
|
+
specify integration status --json
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Reports the current project's integration status without changing files. The
|
|
137
|
+
status report includes the default integration, installed integrations,
|
|
138
|
+
multi-install safety, missing managed files, modified managed files, invalid
|
|
139
|
+
manifest paths, shared Spec Kit infrastructure health, unchecked manifests, and
|
|
140
|
+
the target integration for default-sensitive shared templates. The JSON form is
|
|
141
|
+
intended for CI and coding agents that need stable machine-readable status data;
|
|
142
|
+
it also reports the raw recorded integrations and the integration manifests that
|
|
143
|
+
were checked when state repair heuristics differ from the recorded file.
|
|
144
|
+
The command exits 0 when the report status is `ok` or `warning`; it exits 1
|
|
145
|
+
only when the report status is `error`. In JSON output, `multi_install_safe`
|
|
146
|
+
is `null` when no installed integration set can be evaluated, such as when the
|
|
147
|
+
integration state is missing, unreadable, lacks a valid recorded integration
|
|
148
|
+
list, or records no installed integrations.
|
|
149
|
+
|
|
129
150
|
## Integration-Specific Options
|
|
130
151
|
|
|
131
152
|
Some integrations accept additional options via `--integration-options`:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "1.0",
|
|
3
|
-
"updated_at": "2026-06-
|
|
3
|
+
"updated_at": "2026-06-09T00:00:00Z",
|
|
4
4
|
"catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/extensions/catalog.community.json",
|
|
5
5
|
"extensions": {
|
|
6
6
|
"aide": {
|
|
@@ -438,7 +438,7 @@
|
|
|
438
438
|
"updated_at": "2026-04-10T00:00:00Z"
|
|
439
439
|
},
|
|
440
440
|
"brownkit": {
|
|
441
|
-
"name": "BrownKit
|
|
441
|
+
"name": "BrownKit — Brownfield Discovery for Spec-Kit",
|
|
442
442
|
"id": "brownkit",
|
|
443
443
|
"description": "Evidence-driven capability discovery, security and QA risk assessment for existing codebases.",
|
|
444
444
|
"author": "Maksim Shautsou",
|
|
@@ -849,10 +849,10 @@
|
|
|
849
849
|
"docguard": {
|
|
850
850
|
"name": "DocGuard — CDD Enforcement",
|
|
851
851
|
"id": "docguard",
|
|
852
|
-
"description": "Canonical-Driven Development enforcement. Validates, scores, and traces project documentation with automated checks, AI-driven workflows, and spec-kit hooks.
|
|
852
|
+
"description": "Canonical-Driven Development enforcement. Validates, scores, and traces project documentation with automated checks, AI-driven workflows, and spec-kit hooks. One pinned runtime dependency; pure Node.js otherwise.",
|
|
853
853
|
"author": "raccioly",
|
|
854
|
-
"version": "0.
|
|
855
|
-
"download_url": "https://github.com/raccioly/docguard/releases/download/v0.
|
|
854
|
+
"version": "0.25.1",
|
|
855
|
+
"download_url": "https://github.com/raccioly/docguard/releases/download/v0.25.1/spec-kit-docguard-v0.25.1.zip",
|
|
856
856
|
"repository": "https://github.com/raccioly/docguard",
|
|
857
857
|
"homepage": "https://www.npmjs.com/package/docguard-cli",
|
|
858
858
|
"documentation": "https://github.com/raccioly/docguard/blob/main/extensions/spec-kit-docguard/README.md",
|
|
@@ -886,7 +886,7 @@
|
|
|
886
886
|
"downloads": 0,
|
|
887
887
|
"stars": 0,
|
|
888
888
|
"created_at": "2026-03-13T00:00:00Z",
|
|
889
|
-
"updated_at": "2026-
|
|
889
|
+
"updated_at": "2026-06-09T00:00:00Z"
|
|
890
890
|
},
|
|
891
891
|
"doctor": {
|
|
892
892
|
"name": "Project Health Check",
|
|
@@ -1251,12 +1251,12 @@
|
|
|
1251
1251
|
"id": "linear",
|
|
1252
1252
|
"description": "Mirror spec-kit feature directories into Linear (filesystem → Linear, reconcile-based, unidirectional).",
|
|
1253
1253
|
"author": "Ash Brener",
|
|
1254
|
-
"version": "0.
|
|
1255
|
-
"download_url": "https://github.com/ashbrener/spec-kit-linear/archive/refs/tags/v0.
|
|
1256
|
-
"repository": "https://github.com/ashbrener/spec-kit-linear",
|
|
1257
|
-
"homepage": "https://github.com/ashbrener/spec-kit-linear",
|
|
1258
|
-
"documentation": "https://github.com/ashbrener/spec-kit-linear/blob/main/README.md",
|
|
1259
|
-
"changelog": "https://github.com/ashbrener/spec-kit-linear/releases",
|
|
1254
|
+
"version": "0.3.0",
|
|
1255
|
+
"download_url": "https://github.com/ashbrener/spec-kit-linear-sync/archive/refs/tags/v0.3.0.zip",
|
|
1256
|
+
"repository": "https://github.com/ashbrener/spec-kit-linear-sync",
|
|
1257
|
+
"homepage": "https://github.com/ashbrener/spec-kit-linear-sync",
|
|
1258
|
+
"documentation": "https://github.com/ashbrener/spec-kit-linear-sync/blob/main/README.md",
|
|
1259
|
+
"changelog": "https://github.com/ashbrener/spec-kit-linear-sync/releases",
|
|
1260
1260
|
"license": "MIT",
|
|
1261
1261
|
"requires": {
|
|
1262
1262
|
"speckit_version": ">=0.1.0"
|
|
@@ -1277,7 +1277,7 @@
|
|
|
1277
1277
|
"downloads": 0,
|
|
1278
1278
|
"stars": 0,
|
|
1279
1279
|
"created_at": "2026-06-01T00:00:00Z",
|
|
1280
|
-
"updated_at": "2026-06-
|
|
1280
|
+
"updated_at": "2026-06-08T00:00:00Z"
|
|
1281
1281
|
},
|
|
1282
1282
|
"m365": {
|
|
1283
1283
|
"name": "Microsoft 365 Integration",
|
|
@@ -3607,4 +3607,4 @@
|
|
|
3607
3607
|
"updated_at": "2026-04-13T00:00:00Z"
|
|
3608
3608
|
}
|
|
3609
3609
|
}
|
|
3610
|
-
}
|
|
3610
|
+
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "1.0",
|
|
3
|
-
"updated_at": "2026-06-
|
|
3
|
+
"updated_at": "2026-06-05T00:00:00Z",
|
|
4
4
|
"catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/presets/catalog.community.json",
|
|
5
5
|
"presets": {
|
|
6
6
|
"a11y-governance": {
|
|
7
7
|
"name": "A11Y Governance",
|
|
8
8
|
"id": "a11y-governance",
|
|
9
|
-
"version": "0.
|
|
10
|
-
"description": "Adds accessibility, bilingual DE/EN delivery, CEFR-B2 readability,
|
|
9
|
+
"version": "0.3.0",
|
|
10
|
+
"description": "Adds accessibility, bilingual DE/EN delivery, CEFR-B2 readability, inclusive-content governance, and didactic inline-code-comment review to Spec Kit.",
|
|
11
11
|
"author": "Thorsten Hindermann",
|
|
12
12
|
"repository": "https://github.com/hindermath/spec-kit-preset-a11y-governance",
|
|
13
|
-
"download_url": "https://github.com/hindermath/spec-kit-preset-a11y-governance/archive/refs/tags/v0.
|
|
13
|
+
"download_url": "https://github.com/hindermath/spec-kit-preset-a11y-governance/archive/refs/tags/v0.3.0.zip",
|
|
14
14
|
"homepage": "https://github.com/hindermath/spec-kit-preset-a11y-governance",
|
|
15
15
|
"documentation": "https://github.com/hindermath/spec-kit-preset-a11y-governance/blob/main/README.md",
|
|
16
16
|
"license": "MIT",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"speckit_version": ">=0.8.0"
|
|
19
19
|
},
|
|
20
20
|
"provides": {
|
|
21
|
-
"templates":
|
|
21
|
+
"templates": 10,
|
|
22
22
|
"commands": 3
|
|
23
23
|
},
|
|
24
24
|
"tags": [
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"inclusion"
|
|
30
30
|
],
|
|
31
31
|
"created_at": "2026-04-27T00:00:00Z",
|
|
32
|
-
"updated_at": "2026-
|
|
32
|
+
"updated_at": "2026-06-05T00:00:00Z"
|
|
33
33
|
},
|
|
34
34
|
"agent-parity-governance": {
|
|
35
35
|
"name": "Agent Parity Governance",
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
"""Shared GitHub
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"""Shared GitHub HTTP request helpers.
|
|
2
|
+
|
|
3
|
+
Provides ``build_github_request()`` for attaching GITHUB_TOKEN / GH_TOKEN
|
|
4
|
+
credentials to requests targeting GitHub-hosted domains, and
|
|
5
|
+
``resolve_github_release_asset_api_url()`` — used by extensions, presets,
|
|
6
|
+
and workflow URL resolution — to translate browser release-download URLs
|
|
7
|
+
into GitHub REST API asset URLs. Authenticated downloads themselves go
|
|
8
|
+
through the config-driven helpers in :mod:`specify_cli.authentication.http`.
|
|
7
9
|
"""
|
|
8
10
|
|
|
9
11
|
import os
|
|
@@ -54,28 +56,6 @@ def build_github_request(url: str) -> urllib.request.Request:
|
|
|
54
56
|
return urllib.request.Request(url, headers=headers)
|
|
55
57
|
|
|
56
58
|
|
|
57
|
-
class _StripAuthOnRedirect(urllib.request.HTTPRedirectHandler):
|
|
58
|
-
"""Redirect handler that drops the Authorization header when leaving GitHub.
|
|
59
|
-
|
|
60
|
-
Prevents token leakage to CDNs or other third-party hosts that GitHub
|
|
61
|
-
may redirect to (e.g. S3 for release asset downloads, objects.githubusercontent.com).
|
|
62
|
-
Auth is preserved as long as the redirect target remains within GITHUB_HOSTS.
|
|
63
|
-
"""
|
|
64
|
-
|
|
65
|
-
def redirect_request(self, req, fp, code, msg, headers, newurl):
|
|
66
|
-
original_auth = req.get_header("Authorization")
|
|
67
|
-
new_req = super().redirect_request(req, fp, code, msg, headers, newurl)
|
|
68
|
-
if new_req is not None:
|
|
69
|
-
hostname = (urlparse(newurl).hostname or "").lower()
|
|
70
|
-
if hostname in GITHUB_HOSTS:
|
|
71
|
-
if original_auth:
|
|
72
|
-
new_req.add_unredirected_header("Authorization", original_auth)
|
|
73
|
-
else:
|
|
74
|
-
new_req.headers.pop("Authorization", None)
|
|
75
|
-
new_req.unredirected_hdrs.pop("Authorization", None)
|
|
76
|
-
return new_req
|
|
77
|
-
|
|
78
|
-
|
|
79
59
|
def resolve_github_release_asset_api_url(
|
|
80
60
|
download_url: str,
|
|
81
61
|
open_url_fn: Callable,
|
|
@@ -147,20 +127,3 @@ def resolve_github_release_asset_api_url(
|
|
|
147
127
|
return str(asset["url"])
|
|
148
128
|
|
|
149
129
|
return None
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
def open_github_url(url: str, timeout: int = 10):
|
|
153
|
-
"""Open a URL with GitHub auth, stripping the header on cross-host redirects.
|
|
154
|
-
|
|
155
|
-
When the request carries an Authorization header, a custom redirect
|
|
156
|
-
handler drops that header if the redirect target is not a GitHub-owned
|
|
157
|
-
domain, preventing token leakage to CDNs or other third-party hosts
|
|
158
|
-
that GitHub may redirect to (e.g. S3 for release asset downloads).
|
|
159
|
-
"""
|
|
160
|
-
req = build_github_request(url)
|
|
161
|
-
|
|
162
|
-
if not req.get_header("Authorization"):
|
|
163
|
-
return urllib.request.urlopen(req, timeout=timeout)
|
|
164
|
-
|
|
165
|
-
opener = urllib.request.build_opener(_StripAuthOnRedirect)
|
|
166
|
-
return opener.open(req, timeout=timeout)
|