specify-cli 1.0.11__tar.gz → 1.0.12__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/codeql.yml +2 -2
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/lint.yml +51 -3
- specify_cli-1.0.12/AGENTS.md +58 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/CHANGELOG.md +25 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/CONTRIBUTING.md +63 -8
- {specify_cli-1.0.11 → specify_cli-1.0.12}/PKG-INFO +1 -1
- {specify_cli-1.0.11 → specify_cli-1.0.12}/bundles/catalog.community.json +28 -4
- {specify_cli-1.0.11 → specify_cli-1.0.12}/design/cli.md +23 -0
- specify_cli-1.0.12/design/integration.md +108 -0
- specify_cli-1.0.12/design/workflow-step.md +64 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/community/bundles.md +1 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/community/extensions.md +3 -2
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/community/friends.md +1 -1
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/community/presets.md +2 -1
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/install/air-gapped.md +2 -2
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/installation.md +1 -1
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/reference/authentication.md +72 -2
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/reference/core.md +2 -2
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/reference/extensions.md +5 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/reference/workflows.md +1 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/catalog.community.json +60 -14
- {specify_cli-1.0.11 → specify_cli-1.0.12}/integrations/CONTRIBUTING.md +19 -19
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/ARCHITECTURE.md +4 -2
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/README.md +1 -1
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/catalog.community.json +47 -14
- {specify_cli-1.0.11 → specify_cli-1.0.12}/pyproject.toml +1 -1
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/_invocation_style.py +1 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/authentication/__init__.py +2 -0
- specify_cli-1.0.12/src/specify_cli/authentication/bitbucket.py +78 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/authentication/config.py +26 -6
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/adapters.py +13 -7
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/events/__init__.py +4 -1
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/_helpers.py +54 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/command_upgrade.py +9 -1
- specify_cli-1.0.12/src/specify_cli/presets/__init__.py +64 -0
- specify_cli-1.0.12/src/specify_cli/presets/_catalog.py +926 -0
- specify_cli-1.0.12/src/specify_cli/presets/_manager.py +969 -0
- specify_cli-1.0.12/src/specify_cli/presets/_manager_commands.py +1284 -0
- specify_cli-1.0.12/src/specify_cli/presets/_manager_skills.py +1544 -0
- specify_cli-1.0.12/src/specify_cli/presets/_manifest.py +438 -0
- specify_cli-1.0.12/src/specify_cli/presets/_registry.py +245 -0
- specify_cli-1.0.12/src/specify_cli/presets/_resolver.py +949 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/expressions.py +22 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integration/test_preset_update_workflow.py +1 -1
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_alquimia.py +106 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/authentication/test_authentication.py +237 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_adapters.py +23 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/events/test_events.py +20 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/test_command_upgrade.py +189 -0
- specify_cli-1.0.12/tests/specify_cli/presets/_helpers.py +254 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/presets/conftest.py +1 -1
- specify_cli-1.0.12/tests/specify_cli/presets/test_catalog.py +1668 -0
- specify_cli-1.0.12/tests/specify_cli/presets/test_domain_exports.py +30 -0
- specify_cli-1.0.12/tests/specify_cli/presets/test_manager.py +1609 -0
- specify_cli-1.0.12/tests/specify_cli/presets/test_manager_commands.py +3160 -0
- specify_cli-1.0.12/tests/specify_cli/presets/test_manager_skills.py +2807 -0
- specify_cli-1.0.12/tests/specify_cli/presets/test_manifest.py +555 -0
- specify_cli-1.0.12/tests/specify_cli/presets/test_registry.py +396 -0
- specify_cli-1.0.12/tests/specify_cli/presets/test_resolver.py +1802 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_extension_skills.py +1 -1
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_github_workflows.py +40 -0
- specify_cli-1.0.12/tests/test_presets.py +808 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_workflows.py +65 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/workflows/ARCHITECTURE.md +1 -1
- {specify_cli-1.0.11 → specify_cli-1.0.12}/workflows/README.md +1 -1
- specify_cli-1.0.11/AGENTS.md +0 -611
- specify_cli-1.0.11/src/specify_cli/presets/__init__.py +0 -6259
- specify_cli-1.0.11/tests/specify_cli/presets/_helpers.py +0 -128
- specify_cli-1.0.11/tests/test_presets.py +0 -12884
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.devcontainer/devcontainer.json +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.devcontainer/post-create.sh +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.editorconfig +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.gitattributes +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/CODEOWNERS +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/ISSUE_TEMPLATE/agent_request.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/ISSUE_TEMPLATE/bundle_submission.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/ISSUE_TEMPLATE/preset_submission.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/aw/actions-lock.json +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/dependabot.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/scripts/check_extension_version_bump.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/scripts/check_security_requirements.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/security-audit-requirements.txt +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/skills/add-community-extension/SKILL.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/skills/code-review/SKILL.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/RELEASE-PROCESS.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/add-community-bundle.lock.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/add-community-bundle.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/add-community-extension.lock.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/add-community-extension.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/add-community-preset.lock.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/add-community-preset.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/bug-assess.lock.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/bug-assess.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/bug-fix.lock.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/bug-fix.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/bug-test.lock.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/bug-test.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/catalog-assign.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/docs.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/extension-version-guard.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/feature-assess.lock.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/feature-assess.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/publish-pypi.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/release-trigger.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/release.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/security.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/stale.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.github/workflows/test.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.gitignore +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.markdownlint-cli2.jsonc +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.pre-commit-config.yaml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/.zenodo.json +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/CITATION.cff +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/CODE_OF_CONDUCT.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/DEVELOPMENT.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/LICENSE +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/README.ja.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/README.zh-CN.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/SECURITY.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/SUPPORT.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/bundles/assess/README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/bundles/assess/bundle.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/bundles/bugfix/README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/bundles/bugfix/bundle.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/bundles/catalog.json +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/.gitignore +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/community/overview.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/community/walkthroughs.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/concepts/complex-features.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/concepts/sdd.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/concepts/spec-of-specs.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/concepts/spec-persistence.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/docfx.json +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/guides/assessment.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/guides/bugfix.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/guides/contract-driven-development.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/guides/customization.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/guides/evolving-specs.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/guides/existing-projects.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/guides/monorepo.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/history.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/images/spec-kit-logo.webp +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/index.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/install/one-time.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/install/pipx.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/install/pypi.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/install/uv.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/local-development.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/quickstart.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/reference/agentic-assessment.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/reference/agentic-bugfix.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/reference/agentic-sdd.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/reference/artifacts.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/reference/bundles.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/reference/integrations.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/reference/overview.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/reference/presets.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/template/public/main.css +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/toc.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/docs/upgrade.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/examples/bundles/business-analyst/README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/examples/bundles/business-analyst/bundle.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/examples/bundles/developer/README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/examples/bundles/developer/bundle.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/examples/bundles/product-manager/README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/examples/bundles/product-manager/bundle.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/examples/bundles/security-researcher/README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/examples/bundles/security-researcher/bundle.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/EXTENSION-API-REFERENCE.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/EXTENSION-PUBLISHING-GUIDE.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/EXTENSION-USER-GUIDE.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/agent-context/README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/agent-context/agent-context-config.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/agent-context/agent-context-defaults.json +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/agent-context/extension.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/agent-context/scripts/bash/update-agent-context.sh +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/agent-context/scripts/python/update_agent_context.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/assess/README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/assess/commands/speckit.assess.decide.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/assess/commands/speckit.assess.define.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/assess/commands/speckit.assess.intake.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/assess/commands/speckit.assess.research.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/assess/commands/speckit.assess.shape.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/assess/extension.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/bug/README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/bug/commands/speckit.bug.assess.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/bug/commands/speckit.bug.fix.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/bug/commands/speckit.bug.test.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/bug/extension.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/catalog.json +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/commands/speckit.git.commit.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/commands/speckit.git.feature.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/commands/speckit.git.initialize.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/commands/speckit.git.remote.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/commands/speckit.git.validate.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/config-template.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/extension.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/git-config.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/scripts/bash/auto-commit.sh +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/scripts/bash/git-common.sh +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/scripts/python/auto_commit.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/scripts/python/create_new_feature_branch.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/scripts/python/git_common.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/git/scripts/python/initialize_repo.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/selftest/commands/selftest.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/selftest/extension.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/template/.gitignore +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/template/CHANGELOG.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/template/EXAMPLE-README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/template/LICENSE +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/template/README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/template/commands/example.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/template/config-template.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/extensions/template/extension.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/integrations/README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/integrations/catalog.community.json +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/integrations/catalog.json +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/media/bootstrap-claude-code.gif +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/media/logo_large.webp +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/media/logo_small.webp +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/media/spec-kit-video-header.jpg +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/media/specify_cli.gif +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/newsletters/2026-April.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/newsletters/2026-August.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/newsletters/2026-February.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/newsletters/2026-July.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/newsletters/2026-June.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/newsletters/2026-March.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/newsletters/2026-May.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/PUBLISHING.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/catalog.json +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/constitution-sync/README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/constitution-sync/commands/speckit.constitution.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/constitution-sync/preset.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/lean/README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/lean/commands/speckit.constitution.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/lean/commands/speckit.implement.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/lean/commands/speckit.plan.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/lean/commands/speckit.specify.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/lean/commands/speckit.tasks.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/lean/preset.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/scaffold/README.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/scaffold/commands/speckit.specify.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/scaffold/preset.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/scaffold/templates/myext-template.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/scaffold/templates/spec-template.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/self-test/commands/speckit.specify.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/self-test/commands/speckit.wrap-test.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/self-test/preset.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/self-test/templates/checklist-template.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/self-test/templates/constitution-template.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/self-test/templates/plan-template.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/self-test/templates/spec-template.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/presets/self-test/templates/tasks-template.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/scripts/bash/check-prerequisites.sh +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/scripts/bash/common.sh +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/scripts/bash/create-new-feature.sh +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/scripts/bash/resolve-template.sh +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/scripts/bash/setup-plan.sh +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/scripts/bash/setup-tasks.sh +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/scripts/powershell/check-prerequisites.ps1 +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/scripts/powershell/common.ps1 +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/scripts/powershell/create-new-feature.ps1 +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/scripts/powershell/resolve-template.ps1 +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/scripts/powershell/setup-plan.ps1 +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/scripts/powershell/setup-tasks.ps1 +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/scripts/python/check_prerequisites.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/scripts/python/common.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/scripts/python/create_new_feature.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/scripts/python/resolve_template.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/scripts/python/setup_plan.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/scripts/python/setup_tasks.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/spec-driven.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/spec-kit.code-workspace +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/_agent_config.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/_assets.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/_console.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/_download_security.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/_init_options.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/_installed_list_json.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/_project.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/_toml_string.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/_utils.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/_version.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/agents.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/artifacts/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/artifacts/_commands.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/artifacts/_identifiers.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/artifacts/catalog.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/artifacts/command_info.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/artifacts/command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/artifacts/command_lookup.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/artifacts/models.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/artifacts/resolution.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/authentication/azure_devops.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/authentication/base.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/authentication/github.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/authentication/github_http.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/authentication/http.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundler.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/_commands.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/catalog/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/catalog/command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/catalog/command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/catalog/command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/catalog_config.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/catalog_stack.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/catalogs.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/command_build.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/command_info.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/command_init.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/command_install.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/command_search.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/command_update.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/command_validate.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/conflict.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/installer.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/manifest.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/packager.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/primitives.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/project.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/records.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/references.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/resolver.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/sources.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/validator.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/versioning.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/bundles/yamlio.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/catalogs.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/command_check.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/command_init.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/command_version.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/events/command_run.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/_command_update_artifacts.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/_command_update_discovery.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/_command_update_transaction.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/_commands.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/catalog/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/catalog/_helpers.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/catalog/command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/catalog/command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/catalog/command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/command_disable.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/command_enable.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/command_info.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/command_search.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/command_set_priority.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/extensions/command_update.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integration_runtime.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integration_state.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integration_status.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/_command_scaffold_generation.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/_command_upgrade_layout.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/_commands.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/agy/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/alquimia/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/amp/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/auggie/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/base.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/bob/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/catalog/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/catalog/command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/catalog/command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/catalog/command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/claude/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/cline/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/codex/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/command_code/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/command_info.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/command_install.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/command_scaffold.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/command_search.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/command_status.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/command_switch.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/command_uninstall.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/command_use.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/copilot/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/devin/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/docker_agent/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/droid/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/dsh/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/firebender/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/forge/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/gemini/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/generic/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/goose/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/grok/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/hermes/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/junie/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/kilocode/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/kimi/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/lingma/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/manifest.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/muse/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/omp/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/opencode/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/pi/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/qwen/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/rovodev/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/shai/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/trae/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/vibe/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/zcode/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/integrations/zed/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/presets/_commands.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/presets/catalog/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/presets/catalog/command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/presets/catalog/command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/presets/catalog/command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/presets/command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/presets/command_disable.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/presets/command_enable.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/presets/command_info.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/presets/command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/presets/command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/presets/command_resolve.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/presets/command_search.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/presets/command_set_priority.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/presets/command_update.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/selfs/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/selfs/command_check.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/selfs/command_upgrade.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/shared_infra.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/_command_resume_state.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/_command_run_ownership.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/_commands.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/base.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/catalog/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/catalog/_domain.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/catalog/command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/catalog/command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/catalog/command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/command_disable.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/command_enable.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/command_info.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/command_resolve.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/command_resume.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/command_run.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/command_search.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/command_status.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/command_update.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/engine.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/overlay/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/overlay/command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/overlay/command_disable.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/overlay/command_enable.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/overlay/command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/overlay/command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/overlay/command_set_priority.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/overlay/composer.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/overlay/layer_sources.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/overlay/merge.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/overlay/operations.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/overlay/resolver.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/overlay/schema.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/_helpers.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/catalog/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/catalog/_domain.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/catalog/command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/catalog/command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/catalog/command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/command/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/command_info.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/command_search.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/do_while/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/fan_in/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/fan_out/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/gate/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/if_then/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/init/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/prompt/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/shell/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/slot/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/switch/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/src/specify_cli/workflows/step/while_loop/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/templates/checklist-template.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/templates/commands/analyze.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/templates/commands/checklist.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/templates/commands/clarify.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/templates/commands/constitution.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/templates/commands/converge.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/templates/commands/implement.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/templates/commands/plan.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/templates/commands/specify.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/templates/commands/tasks.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/templates/commands/taskstoissues.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/templates/constitution-template.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/templates/plan-template.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/templates/spec-template.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/templates/tasks-template.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/templates/vscode-settings.json +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/conftest.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/contract/test_bundled_extension_update_delivery.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/contract/test_bundled_extension_versions.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/contract/test_catalog_schema.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/contract/test_extension_version_guard_script.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/contract/test_firstparty_bundle_catalog_consistency.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/contract/test_manifest_schema.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/contract/test_wheel_bundled_presets.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/contract/test_wheel_bundled_workflows.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/contract/test_wheel_core_pack_scripts.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/extensions/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/extensions/assess/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/extensions/assess/test_assess_extension.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/extensions/bug/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/extensions/bug/test_bug_extension.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/extensions/git/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/extensions/git/test_git_extension.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/extensions/git/test_git_extension_python_parity.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/extensions/test_agent_context_cli_free.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/extensions/test_extension_agent_context.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/extensions/test_update_agent_context_feature_json.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/extensions/test_update_agent_context_python_parity.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/hooks/TESTING.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/hooks/plan.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/hooks/spec.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/hooks/tasks.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/http_helpers.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/conftest.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_base.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_cli.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_extra_args.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_home_isolation.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_agy.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_amp.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_auggie.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_base_markdown.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_base_skills.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_base_toml.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_base_yaml.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_bob.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_claude.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_cline.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_codebuddy.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_codex.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_command_code.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_copilot.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_cursor_agent.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_devin.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_docker_agent.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_droid.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_dsh.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_firebender.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_forge.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_gemini.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_generic.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_goose.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_grok.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_hermes.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_junie.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_kilocode.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_kimi.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_kiro_cli.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_lingma.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_muse.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_omp.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_opencode.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_pi.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_qodercli.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_qwen.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_rovodev.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_shai.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_state.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_tabnine.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_trae.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_vibe.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_zcode.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_integration_zed.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_manifest.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_registry.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/integrations/test_skill_frontmatter_quoting.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/parity_helpers.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/artifacts/conftest.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/artifacts/helpers.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/artifacts/test_catalog.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/artifacts/test_catalog_parity.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/artifacts/test_command_info.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/artifacts/test_command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/artifacts/test_command_lookup.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/artifacts/test_registration.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/authentication/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/authentication/helpers.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/authentication/test_github_http.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/_command_helpers.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/catalog/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/catalog/test_command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/catalog/test_command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/catalog/test_command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/conftest.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/helpers.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_bundles.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_catalog_config.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_catalog_stack.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_command_build.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_command_info.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_command_init.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_command_install.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_command_search.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_command_update.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_command_validate.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_commands.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_conflict.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_installer.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_offline.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_packager.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_primitives.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_records.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_references.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_resolver.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_security_paths.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_sources.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_validator.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_versioning.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/bundles/test_yamlio.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/events/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/events/test_command_run.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/_helpers.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/catalog/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/catalog/test_command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/catalog/test_command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/catalog/test_command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/conftest.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/test_command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/test_command_add_path_traversal.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/test_command_disable.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/test_command_enable.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/test_command_info.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/test_command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/test_command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/test_command_search.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/test_command_set_priority.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/test_command_update.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/test_command_update_artifacts.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/test_command_update_discovery.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/extensions/test_command_update_transaction.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/_catalog_helpers.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/_helpers.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/_scaffold_helpers.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/catalog/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/catalog/test_command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/catalog/test_command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/catalog/test_command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/conftest.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/test_catalog.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/test_command_info.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/test_command_install.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/test_command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/test_command_scaffold.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/test_command_scaffold_generation.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/test_command_search.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/test_command_status.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/test_command_switch.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/test_command_uninstall.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/test_command_upgrade_layout.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/test_command_use.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/test_lifecycle.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/integrations/test_registration.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/presets/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/presets/_fixtures.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/presets/catalog/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/presets/catalog/test_command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/presets/catalog/test_command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/presets/catalog/test_command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/presets/test_command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/presets/test_command_disable.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/presets/test_command_enable.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/presets/test_command_info.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/presets/test_command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/presets/test_command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/presets/test_command_resolve.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/presets/test_command_search.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/presets/test_command_set_priority.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/presets/test_command_update.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/presets/test_registration.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/self_upgrade_helpers.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/selfs/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/selfs/test_command_check.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/selfs/test_command_upgrade.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/test_agent_config.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/test_check_tool.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/test_command_check.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/test_command_init.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/test_command_version.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/test_root_version_callback.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/test_version_detection.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/test_version_execution.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/test_version_guidance.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/test_version_imports.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/test_version_release.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/test_version_verification.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/catalog/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/catalog/test_command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/catalog/test_command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/catalog/test_command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/conftest.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/helpers.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/overlay/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/overlay/test_command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/overlay/test_command_disable.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/overlay/test_command_enable.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/overlay/test_command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/overlay/test_command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/overlay/test_command_set_priority.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/step/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/step/catalog/__init__.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/step/catalog/test_command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/step/catalog/test_command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/step/catalog/test_command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/step/test_command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/step/test_command_info.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/step/test_command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/step/test_command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/step/test_command_search.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/test_command_add.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/test_command_disable.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/test_command_enable.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/test_command_info.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/test_command_list.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/test_command_remove.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/test_command_resolve.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/test_command_resume.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/test_command_resume_state.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/test_command_run.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/test_command_run_ownership.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/test_command_search.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/test_command_status.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/specify_cli/workflows/test_command_update.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_agent_config_consistency.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_branch_numbering.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_bug_fix_workflow.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_check_prerequisites_paths_only.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_check_prerequisites_python_parity.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_clarify_stage_gate.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_command_template_hooks.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_command_template_py_scripts.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_console_imports.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_constitution_template_sync_report.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_converge_template_scaffold.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_create_new_feature_python_parity.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_download_security.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_extension_registration.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_extensions.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_init_dir.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_init_dir_cli.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_installed_list_json.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_live_transient_windows.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_merge.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_post_process.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_ps1_encoding.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_registrar_path_traversal.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_resolve_template_python_parity.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_security_workflow.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_setup_plan_feature_json.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_setup_plan_no_overwrite.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_setup_plan_python_parity.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_setup_tasks.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_setup_tasks_python_parity.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_shared_infra_gitignore.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_shared_infra_integrity.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_skill_placeholder_py.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_specify_no_persist.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_specify_template_numbering.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_tasks_template_constraints.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_timestamp_branches.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_utils.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/test_utils_assets_imports.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/unit/test_condition_expression_block.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/workflows/conftest.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/workflows/test_bundled_bugfix_assess_workflows.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/workflows/test_bundled_speckit_workflow.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/workflows/test_overlay_composer.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/workflows/test_overlay_layer_sources.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/workflows/test_overlay_merge.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/workflows/test_overlay_schema.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/workflows/test_resolver_integration.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/tests/workflows/test_slot_step.py +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/workflows/PUBLISHING.md +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/workflows/assess/workflow.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/workflows/bugfix/workflow.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/workflows/catalog.community.json +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/workflows/catalog.json +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/workflows/speckit/workflow.yml +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/workflows/step-catalog.community.json +0 -0
- {specify_cli-1.0.11 → specify_cli-1.0.12}/workflows/step-catalog.json +0 -0
|
@@ -22,11 +22,11 @@ jobs:
|
|
|
22
22
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
23
23
|
|
|
24
24
|
- name: Initialize CodeQL
|
|
25
|
-
uses: github/codeql-action/init@
|
|
25
|
+
uses: github/codeql-action/init@1c5b675653bb5c22dbe9b12b556ec555138e09fd # v4
|
|
26
26
|
with:
|
|
27
27
|
languages: ${{ matrix.language }}
|
|
28
28
|
|
|
29
29
|
- name: Perform CodeQL Analysis
|
|
30
|
-
uses: github/codeql-action/analyze@
|
|
30
|
+
uses: github/codeql-action/analyze@1c5b675653bb5c22dbe9b12b556ec555138e09fd # v4
|
|
31
31
|
with:
|
|
32
32
|
category: "/language:${{ matrix.language }}"
|
|
@@ -10,6 +10,20 @@ on:
|
|
|
10
10
|
jobs:
|
|
11
11
|
markdownlint:
|
|
12
12
|
runs-on: ubuntu-latest
|
|
13
|
+
env:
|
|
14
|
+
DOC_GLOBS: |
|
|
15
|
+
docs/**/*.md
|
|
16
|
+
README.md
|
|
17
|
+
README.zh-CN.md
|
|
18
|
+
CODE_OF_CONDUCT.md
|
|
19
|
+
CONTRIBUTING.md
|
|
20
|
+
DEVELOPMENT.md
|
|
21
|
+
SECURITY.md
|
|
22
|
+
SUPPORT.md
|
|
23
|
+
spec-driven.md
|
|
24
|
+
integrations/*.md
|
|
25
|
+
presets/*.md
|
|
26
|
+
workflows/*.md
|
|
13
27
|
steps:
|
|
14
28
|
- name: Checkout
|
|
15
29
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
@@ -36,12 +50,46 @@ jobs:
|
|
|
36
50
|
git diff --check refs/checks/push-before HEAD
|
|
37
51
|
fi
|
|
38
52
|
|
|
53
|
+
# Documentation only. Commands, skills, prompt templates, agent
|
|
54
|
+
# instructions (AGENTS.md) and .github/ content are inputs to coding
|
|
55
|
+
# agents rather than prose, and are deliberately left unlinted so a
|
|
56
|
+
# documentation pass never reformats them. Add new documentation
|
|
57
|
+
# paths to the DOC_GLOBS list above.
|
|
58
|
+
- name: Verify the documentation globs match files
|
|
59
|
+
shell: bash
|
|
60
|
+
run: |
|
|
61
|
+
set -euo pipefail
|
|
62
|
+
shopt -s globstar nullglob
|
|
63
|
+
|
|
64
|
+
# Checked per glob, not on the total: one stale entry among several
|
|
65
|
+
# still leaves that part of the documentation unlinted, which is the
|
|
66
|
+
# failure #4526 was about.
|
|
67
|
+
count=0
|
|
68
|
+
empty=()
|
|
69
|
+
while IFS= read -r glob; do
|
|
70
|
+
[ -z "$glob" ] && continue
|
|
71
|
+
matched=0
|
|
72
|
+
for path in $glob; do
|
|
73
|
+
[ -f "$path" ] && matched=$((matched + 1))
|
|
74
|
+
done
|
|
75
|
+
# An array, not a string: nullglob is on, so re-expanding an
|
|
76
|
+
# unquoted list of unmatched globs would erase it.
|
|
77
|
+
[ "$matched" -eq 0 ] && empty+=("$glob")
|
|
78
|
+
count=$((count + matched))
|
|
79
|
+
done <<< "$DOC_GLOBS"
|
|
80
|
+
|
|
81
|
+
echo "documentation files matched: $count"
|
|
82
|
+
if [ ${#empty[@]} -gt 0 ]; then
|
|
83
|
+
for glob in "${empty[@]}"; do
|
|
84
|
+
echo "::error::markdownlint glob matches no files: $glob (see #4526)"
|
|
85
|
+
done
|
|
86
|
+
exit 1
|
|
87
|
+
fi
|
|
88
|
+
|
|
39
89
|
- name: Run markdownlint-cli2
|
|
40
90
|
uses: DavidAnson/markdownlint-cli2-action@21c1be1b93ad9ed58fa840aacc3f279cde2a72ff # v24.2.0
|
|
41
91
|
with:
|
|
42
|
-
globs:
|
|
43
|
-
'**/*.md'
|
|
44
|
-
!extensions/**/*.md
|
|
92
|
+
globs: ${{ env.DOC_GLOBS }}
|
|
45
93
|
|
|
46
94
|
shellcheck:
|
|
47
95
|
runs-on: ubuntu-latest
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
## About Spec Kit and Specify
|
|
4
|
+
|
|
5
|
+
**GitHub Spec Kit** is a comprehensive toolkit for implementing Spec-Driven Development (SDD) - a methodology that emphasizes creating clear specifications before implementation. The toolkit includes templates, scripts, and workflows that guide development teams through a structured approach to building software.
|
|
6
|
+
|
|
7
|
+
**Specify CLI** is the command-line interface that bootstraps projects with the Spec Kit framework. It sets up the necessary directory structures, templates, and AI agent integrations to support the Spec-Driven Development workflow.
|
|
8
|
+
|
|
9
|
+
The toolkit supports multiple AI coding assistants, allowing teams to use their preferred tools while maintaining consistent project structure and development practices.
|
|
10
|
+
|
|
11
|
+
## Adding or Updating CLI Commands
|
|
12
|
+
|
|
13
|
+
Before adding, updating, or reorganizing Specify CLI commands, read
|
|
14
|
+
[Specify CLI Command Architecture](design/cli.md). It defines command-module
|
|
15
|
+
naming, private command phases, nested command groups, registration ownership,
|
|
16
|
+
mirrored tests, and the rationale for making the CLI structure predictable for
|
|
17
|
+
both humans and coding agents.
|
|
18
|
+
|
|
19
|
+
## Adding or Updating Agent Integrations
|
|
20
|
+
|
|
21
|
+
Before adding or changing AI agent integrations, read
|
|
22
|
+
[Agent Integration Design](design/integration.md). It covers
|
|
23
|
+
delivery routes, output formats, registration, and install/uninstall ownership.
|
|
24
|
+
|
|
25
|
+
## Adding or Updating Workflow Steps
|
|
26
|
+
|
|
27
|
+
Before adding or changing workflow step types, read
|
|
28
|
+
[Workflow Step Design](design/workflow-step.md). It covers registration,
|
|
29
|
+
validation, execution, resume, and installed step packages.
|
|
30
|
+
|
|
31
|
+
## Testing Executable Behavior
|
|
32
|
+
|
|
33
|
+
Before changing code or configuration that runs or controls execution without
|
|
34
|
+
an LLM, read
|
|
35
|
+
[Testing deterministic behavior](CONTRIBUTING.md#testing-deterministic-behavior).
|
|
36
|
+
Behavioral changes need positive and negative coverage; bug fixes need
|
|
37
|
+
before-and-after regression evidence.
|
|
38
|
+
|
|
39
|
+
## Branches and Agent Contributions
|
|
40
|
+
|
|
41
|
+
When creating a branch, follow [Branch naming](CONTRIBUTING.md#branch-naming).
|
|
42
|
+
Before authoring commits, opening PRs, or posting review comments, read
|
|
43
|
+
[Agent-authored Git and review activity](CONTRIBUTING.md#agent-authored-git-and-review-activity).
|
|
44
|
+
Agent-authored commits and AI-generated PRs and comments each require their
|
|
45
|
+
own disclosure; a PR-body disclosure alone does not cover later activity.
|
|
46
|
+
|
|
47
|
+
## Other Contribution Guidance
|
|
48
|
+
|
|
49
|
+
For contribution or repository-workflow questions not covered above, or when
|
|
50
|
+
the applicable guidance is unclear, read [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
51
|
+
before acting.
|
|
52
|
+
|
|
53
|
+
## Common Pitfalls
|
|
54
|
+
|
|
55
|
+
- **Running tests against the wrong environment:** Run the suite inside this
|
|
56
|
+
worktree's own virtualenv (`uv sync --extra test` then
|
|
57
|
+
`.venv/bin/python -m pytest`). A bare `uv run pytest` can pick up an
|
|
58
|
+
editable install from another worktree and fail to import new subpackages.
|
|
@@ -2,6 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- insert new changelog below this comment -->
|
|
4
4
|
|
|
5
|
+
## [1.0.12] - 2026-09-25
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- fix(workflows): reject a multi-argument filter call in expressions (#3893)
|
|
10
|
+
- feat(auth): add Bitbucket authentication provider (#4629)
|
|
11
|
+
- Add Agentstandards bundle to community catalog (#4751)
|
|
12
|
+
- docs: consolidate design guidance and contribution guidelines (#4752)
|
|
13
|
+
- Add Agentstandards Task Gate preset to community catalog (#4749)
|
|
14
|
+
- fix(alquimia): render `/speckit-<name>` invocations for the skills-only Alquimia agent (#4137)
|
|
15
|
+
- [preset] Update Intake Review Governance preset to v0.2.3 (#4748)
|
|
16
|
+
- refactor(presets): split domain internals into private modules (#4747)
|
|
17
|
+
- chore(deps): bump the codeql-action group with 2 updates (#4742)
|
|
18
|
+
- Add Agentstandards Architecture Council extension to community catalog (#4730)
|
|
19
|
+
- fix(ci): make the markdownlint job lint files again (#4526) (#4584)
|
|
20
|
+
- Update SpecAssay community bundle to v0.5.2 (#4737)
|
|
21
|
+
- Update SpecAssay Check extension to v0.5.2 (#4735)
|
|
22
|
+
- [preset] Update SpecAssay preset to v0.5.2 (#4717)
|
|
23
|
+
- fix: sync integration manifest hashes after preset re-registration on upgrade (#4697)
|
|
24
|
+
- [extension] Update OKF Knowledge Bundle Generator to v0.9.2 (#4700)
|
|
25
|
+
- Update Intake Authoring Governance preset to v0.3.4 (#4716)
|
|
26
|
+
- fix: eliminate TOCTOU races in catalog_fetch() for file:// and bare path URLs (#3910)
|
|
27
|
+
- fix: add ValueError guard for timeout in _build_opencode_plugin (#3973)
|
|
28
|
+
- chore: release 1.0.11, begin 1.0.12.dev0 development (#4723)
|
|
29
|
+
|
|
5
30
|
## [1.0.11] - 2026-09-24
|
|
6
31
|
|
|
7
32
|
### Changed
|
|
@@ -38,7 +38,7 @@ On [GitHub Codespaces](https://github.com/features/codespaces) it's even simpler
|
|
|
38
38
|
1. Fork and clone the repository
|
|
39
39
|
1. Configure and install the dependencies: `uv sync --extra test`
|
|
40
40
|
1. Make sure the CLI works on your machine: `uv run specify --help`
|
|
41
|
-
1. Create a new branch
|
|
41
|
+
1. Create a new branch (see [Branch naming](#branch-naming) below)
|
|
42
42
|
1. Make your change, add tests, and make sure everything still works
|
|
43
43
|
1. Test the CLI functionality with a sample project if relevant
|
|
44
44
|
1. Push to your fork and submit a pull request
|
|
@@ -55,7 +55,7 @@ Here are a few things you can do that will increase the likelihood of your pull
|
|
|
55
55
|
- Write a [good commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).
|
|
56
56
|
- Test your changes with the Spec-Driven Development workflow to ensure compatibility.
|
|
57
57
|
|
|
58
|
-
Accounts with three open pull requests may continue submitting changes, but additional submissions may be placed behind contributions from other authors in the review queue. Coding agents
|
|
58
|
+
Accounts with three open pull requests may continue submitting changes, but additional submissions may be placed behind contributions from other authors in the review queue. Coding agents must follow the [agent-authored PR rules](#agent-authored-git-and-review-activity) before opening another pull request.
|
|
59
59
|
|
|
60
60
|
### Evidence gate
|
|
61
61
|
|
|
@@ -137,7 +137,9 @@ fix to a broken entry is still an update and needs the same validation. Always p
|
|
|
137
137
|
|
|
138
138
|
### Branch naming
|
|
139
139
|
|
|
140
|
-
|
|
140
|
+
When an issue exists, name the branch `<type>/<issue-number>-<short-slug>`.
|
|
141
|
+
For PR-only changes without an issue, use `<type>/<short-slug>` instead.
|
|
142
|
+
Choose the prefix from:
|
|
141
143
|
|
|
142
144
|
| Prefix | When to use | Example |
|
|
143
145
|
|---|---|---|
|
|
@@ -147,7 +149,9 @@ We recommend naming branches as `<type>/<number>-<short-slug>`, where `<number>`
|
|
|
147
149
|
| `community/` | Community catalog additions | `community/2492-add-mde-extension` |
|
|
148
150
|
| `chore/` | Maintenance, tooling, CI | `chore/2366-editorconfig` |
|
|
149
151
|
|
|
150
|
-
|
|
152
|
+
Put an existing issue number immediately after the prefix to make the branch
|
|
153
|
+
traceable; do not add a PR number later for PR-only changes. Keep the slug
|
|
154
|
+
short, descriptive, and kebab-case.
|
|
151
155
|
|
|
152
156
|
## Development workflow
|
|
153
157
|
|
|
@@ -179,6 +183,22 @@ When working on spec-kit:
|
|
|
179
183
|
3. Test script functionality in the `scripts/` directory
|
|
180
184
|
4. Ensure memory files (`memory/constitution.md`) are updated if major process changes are made
|
|
181
185
|
|
|
186
|
+
### Testing deterministic behavior
|
|
187
|
+
|
|
188
|
+
Behavioral changes to repository-maintained code or configuration that runs or
|
|
189
|
+
controls execution without an LLM require tests for both intended behavior
|
|
190
|
+
(positive cases) and relevant invalid inputs, failures, or prevented behavior
|
|
191
|
+
(negative cases). This includes Python, shell, and PowerShell code in the CLI,
|
|
192
|
+
core scripts, extensions, presets, and tooling; workflow step types; and
|
|
193
|
+
execution wiring such as script selection, workflow shell steps, and CI `run:`
|
|
194
|
+
steps. Existing tests count when they cover the changed behavior.
|
|
195
|
+
|
|
196
|
+
Bug fixes also need a regression test that fails before the fix and passes
|
|
197
|
+
afterward. If a baseline or an execution path cannot be tested automatically,
|
|
198
|
+
explain the limitation and provide reproducible evidence for the affected
|
|
199
|
+
success and failure paths. Prompt-only and other non-behavioral edits do not
|
|
200
|
+
require invented tests.
|
|
201
|
+
|
|
182
202
|
### Recommended validation flow
|
|
183
203
|
|
|
184
204
|
For the smoothest review experience, validate changes in this order:
|
|
@@ -278,7 +298,7 @@ Any change that affects a slash command's behavior requires manually testing tha
|
|
|
278
298
|
|
|
279
299
|
Paste this into your PR:
|
|
280
300
|
|
|
281
|
-
|
|
301
|
+
```markdown
|
|
282
302
|
## Manual test results
|
|
283
303
|
|
|
284
304
|
**Agent**: [e.g., GitHub Copilot in VS Code] | **OS/Shell**: [e.g., macOS/zsh]
|
|
@@ -286,13 +306,13 @@ Paste this into your PR:
|
|
|
286
306
|
| Command tested | Notes |
|
|
287
307
|
|----------------|-------|
|
|
288
308
|
| `/speckit.command` | |
|
|
289
|
-
|
|
309
|
+
```
|
|
290
310
|
|
|
291
311
|
#### Determining which tests to run
|
|
292
312
|
|
|
293
313
|
Copy this prompt into your agent. Include the agent's response (selected tests plus a brief explanation of the mapping) in your PR.
|
|
294
314
|
|
|
295
|
-
|
|
315
|
+
```text
|
|
296
316
|
Read CONTRIBUTING.md, then run `git diff --name-only main` to get my changed files.
|
|
297
317
|
For each changed file, determine which slash commands it affects by reading
|
|
298
318
|
the command templates in templates/commands/ to understand what each command
|
|
@@ -324,7 +344,7 @@ Number each test sequentially (T1, T2, ...). List prerequisite tests first.
|
|
|
324
344
|
|
|
325
345
|
- T1: /speckit.command — (reason)
|
|
326
346
|
- T2: /speckit.command — (reason)
|
|
327
|
-
|
|
347
|
+
```
|
|
328
348
|
|
|
329
349
|
## AI contributions in Spec Kit
|
|
330
350
|
|
|
@@ -346,6 +366,8 @@ That being said, if you are using any kind of AI assistance (e.g., agents, ChatG
|
|
|
346
366
|
If your PR responses or comments are being generated by an AI, disclose that as well, naming the same agent, model(s), settings/mode, and extent.
|
|
347
367
|
|
|
348
368
|
As an exception, trivial spacing or typo fixes don't need to be disclosed, so long as the changes are limited to small parts of the code or short phrases. The catalog-submission issue forms (extension, preset, and bundle submissions) feed content-neutral validation automation rather than code review, so they carry no disclosure field and are exempt from this requirement. Spec Kit's own bundled agentic workflows (the automated bug-fix and community-catalog prompts under `.github/workflows/`) are likewise exempt: they run as a fixed, known agent and open draft PRs for maintainer review, so their agent identity is inherent to the workflow rather than self-declared per contribution.
|
|
369
|
+
The trivial-fix exception does not waive the disclosures below for agents acting
|
|
370
|
+
on behalf of a contributor; the bundled workflows retain their exception.
|
|
349
371
|
|
|
350
372
|
An example disclosure:
|
|
351
373
|
|
|
@@ -365,6 +387,39 @@ what extent, which in turn helps us judge whether our [`AGENTS.md`](./AGENTS.md)
|
|
|
365
387
|
In a perfect world, AI assistance would produce equal or higher quality work than any human. That isn't the world we live in today, and in most cases
|
|
366
388
|
where human supervision or expertise is not in the loop, it's generating code that cannot be reasonably maintained or evolved.
|
|
367
389
|
|
|
390
|
+
### Agent-authored Git and review activity
|
|
391
|
+
|
|
392
|
+
For an agent acting on behalf of a contributor, disclosure is continuous: the
|
|
393
|
+
PR body, each agent-authored commit, and each AI-generated PR comment or reply
|
|
394
|
+
must independently identify the agent's involvement. A PR-body disclosure does
|
|
395
|
+
not cover later commits or review rounds.
|
|
396
|
+
|
|
397
|
+
- **Before opening a PR:** Check whether the filing account already has three
|
|
398
|
+
open PRs in this repository. If so, explain that another submission may
|
|
399
|
+
receive lower review priority and obtain the filer's explicit permission.
|
|
400
|
+
Without it, including during autonomous operation, leave the work on a branch
|
|
401
|
+
and report that confirmation is required. Repository-owned `gh-aw` maintenance
|
|
402
|
+
workflows are exempt from this count check.
|
|
403
|
+
- **For every agent-authored commit:** Include an `Assisted-by:` trailer naming
|
|
404
|
+
the actual agent and model and whether it acted `autonomous` or `supervised`,
|
|
405
|
+
for example, `Assisted-by: GitHub Copilot (model: Claude Opus 4.8, autonomous)`.
|
|
406
|
+
Use `model: unknown` only if the model genuinely cannot be determined. Use
|
|
407
|
+
`supervised` only if a human authored or line-by-line reviewed the change
|
|
408
|
+
before commit. Do not hide agent authorship behind the operator's git
|
|
409
|
+
identity or remove tool-generated `Co-authored-by:` trailers.
|
|
410
|
+
- **For each AI-generated PR comment:** Identify the contributor on whose
|
|
411
|
+
behalf it is posted, the agent, model, settings/mode, and extent of AI
|
|
412
|
+
involvement. Restate this in every review-round summary, not just the PR
|
|
413
|
+
body. Post one top-level summary per round with the changes and commit SHA;
|
|
414
|
+
reply inline only for disagreement, deferral, or a non-obvious fix, and keep
|
|
415
|
+
those replies brief. Do not resolve conversations on a reviewer's behalf.
|
|
416
|
+
Avoid emoji, celebratory framing, checklist mirroring, and restating the
|
|
417
|
+
reviewer's comments. Re-request review once, after all feedback is addressed.
|
|
418
|
+
|
|
419
|
+
Fast responses do not replace disclosure: do not post an unexplained "Done" or
|
|
420
|
+
push an undisclosed fix moments after review. Do not claim personal human review
|
|
421
|
+
or testing for an automated change; describe the automation truthfully.
|
|
422
|
+
|
|
368
423
|
### What we're looking for
|
|
369
424
|
|
|
370
425
|
When submitting AI-assisted contributions, please ensure they include:
|
|
@@ -1,8 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "1.0",
|
|
3
|
-
"updated_at": "2026-
|
|
3
|
+
"updated_at": "2026-09-25T00:00:00Z",
|
|
4
4
|
"catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/bundles/catalog.community.json",
|
|
5
5
|
"bundles": {
|
|
6
|
+
"agentstandards": {
|
|
7
|
+
"name": "Agentstandards Multi-Vendor Architecture",
|
|
8
|
+
"id": "agentstandards",
|
|
9
|
+
"version": "0.1.1",
|
|
10
|
+
"role": "architecture-governance",
|
|
11
|
+
"description": "Installs a Codex-orchestrated, multi-vendor architecture council, its hard task gate, and the supporting Spec Kit workflow.",
|
|
12
|
+
"author": "bbjwz",
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"download_url": "https://github.com/bbjwz/agentstandards/releases/download/v0.1.1/agentstandards-bundle-0.1.1.zip",
|
|
15
|
+
"sha256": "0306cdc780f4107e6702cd25680afede8acea866dfbb0ba81f9ea9c8f960a9dc",
|
|
16
|
+
"repository": "https://github.com/bbjwz/agentstandards",
|
|
17
|
+
"requires": {
|
|
18
|
+
"speckit_version": ">=1.0.8,<2.0.0"
|
|
19
|
+
},
|
|
20
|
+
"provides": {
|
|
21
|
+
"extensions": 1,
|
|
22
|
+
"presets": 1,
|
|
23
|
+
"steps": 0,
|
|
24
|
+
"workflows": 1
|
|
25
|
+
},
|
|
26
|
+
"tags": ["architecture", "governance", "multi-vendor", "codex"],
|
|
27
|
+
"verified": false
|
|
28
|
+
},
|
|
6
29
|
"sicario-spec": {
|
|
7
30
|
"name": "SicarioSpec Security & Governance Bundle",
|
|
8
31
|
"id": "sicario-spec",
|
|
@@ -34,15 +57,16 @@
|
|
|
34
57
|
"specassay": {
|
|
35
58
|
"name": "SpecAssay",
|
|
36
59
|
"id": "specassay",
|
|
37
|
-
"version": "0.
|
|
60
|
+
"version": "0.5.2",
|
|
38
61
|
"role": "developer",
|
|
39
62
|
"description": "Durable-ID promotion for stock Spec Kit: templates, Gate 2 refusal, and trace-manifest emission.",
|
|
40
63
|
"author": "Rik Dryfoos",
|
|
41
64
|
"license": "MIT",
|
|
42
|
-
"download_url": "https://github.com/rdryfoos/specassay/releases/download/v0.
|
|
65
|
+
"download_url": "https://github.com/rdryfoos/specassay/releases/download/v0.5.2/specassay-0.5.2.zip",
|
|
66
|
+
"sha256": "a9acd0848132bee975be7ca6759a531ff02b736c99a98b1bc4e7d8da90da7c82",
|
|
43
67
|
"repository": "https://github.com/rdryfoos/specassay",
|
|
44
68
|
"requires": {
|
|
45
|
-
"speckit_version": ">=0.14.0"
|
|
69
|
+
"speckit_version": ">=0.14.0,<2.0.0"
|
|
46
70
|
},
|
|
47
71
|
"provides": {
|
|
48
72
|
"extensions": 1,
|
|
@@ -249,6 +249,25 @@ the domain has the same name as that CLI namespace. The nested directory is
|
|
|
249
249
|
reserved for `test_command_<name>.py` suites that exercise its actual
|
|
250
250
|
subcommands.
|
|
251
251
|
|
|
252
|
+
When a domain implementation is split into private modules, mirror those
|
|
253
|
+
boundaries in its tests, dropping the source module's leading underscore:
|
|
254
|
+
|
|
255
|
+
| Preset implementation | Mirrored test under `tests/specify_cli/presets/` |
|
|
256
|
+
| --- | --- |
|
|
257
|
+
| `_manifest.py` | `test_manifest.py` |
|
|
258
|
+
| `_registry.py` | `test_registry.py` |
|
|
259
|
+
| `_catalog.py` | `test_catalog.py` |
|
|
260
|
+
| `_resolver.py` | `test_resolver.py` |
|
|
261
|
+
| `_manager.py` | `test_manager.py` |
|
|
262
|
+
| `_manager_commands.py` | `test_manager_commands.py` |
|
|
263
|
+
| `_manager_skills.py` | `test_manager_skills.py` |
|
|
264
|
+
|
|
265
|
+
`test_manager_commands.py` exercises domain command-artifact behavior, not a
|
|
266
|
+
registered CLI handler. The `test_command_*.py` suites continue to cover the
|
|
267
|
+
CLI surface. `test_catalog.py` belongs at the parent preset package level;
|
|
268
|
+
`catalog/test_command_*.py` covers the nested catalog CLI. Package export
|
|
269
|
+
compatibility is covered separately by `test_domain_exports.py`.
|
|
270
|
+
|
|
252
271
|
Not every test is a command test, even when it belongs in the mirrored package
|
|
253
272
|
tree:
|
|
254
273
|
|
|
@@ -264,6 +283,10 @@ tree:
|
|
|
264
283
|
|
|
265
284
|
Moving tests must preserve coverage rather than duplicating it. Run both the
|
|
266
285
|
new command-focused suites and the legacy suites from which tests were moved.
|
|
286
|
+
For domain splits, also run all new domain suites and any remaining cross-domain
|
|
287
|
+
tests in the legacy file. Compare full-suite collection before and after the
|
|
288
|
+
move: the count must not decrease, and every existing parametrized test case
|
|
289
|
+
must remain represented. A matching total alone does not prove preservation.
|
|
267
290
|
|
|
268
291
|
## Reference layout
|
|
269
292
|
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Agent Integration Design
|
|
2
|
+
|
|
3
|
+
Integrations adapt the shared Spec Kit workflows to an AI coding agent. Their
|
|
4
|
+
**availability** (built-in, generic, or catalog-only) is separate from their
|
|
5
|
+
**output format** (commands, recipes, skills, or a custom layout). The Python
|
|
6
|
+
integration registry owns installation behavior; catalogs provide discovery,
|
|
7
|
+
not executable integration implementations.
|
|
8
|
+
|
|
9
|
+
## Availability
|
|
10
|
+
|
|
11
|
+
| Route | What ships | How users get it |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| Built-in | A registered class under `src/specify_cli/integrations/` and, for discovery, an entry in `integrations/catalog.json` | `specify init my-project --integration copilot` or, in an initialized project, `specify integration install copilot` |
|
|
14
|
+
| Generic | The registered `generic` integration, with a user-supplied `--commands-dir` and optional `--skills` | `specify init my-project --integration generic --integration-options="--commands-dir .agent/commands"` |
|
|
15
|
+
| Community | Metadata in `integrations/catalog.community.json` pointing to an external project | Discover with `specify integration list --catalog` or `search`; obtain and vet it from its source |
|
|
16
|
+
|
|
17
|
+
The default community catalog is discovery-only. A catalog entry (including
|
|
18
|
+
one in a custom catalog) does **not** register a Python integration or make
|
|
19
|
+
`specify integration install <key>` work: installation resolves keys through
|
|
20
|
+
`INTEGRATION_REGISTRY`. See [catalog contribution guidance](../integrations/CONTRIBUTING.md)
|
|
21
|
+
for descriptor and submission details.
|
|
22
|
+
|
|
23
|
+
## Built-in contract
|
|
24
|
+
|
|
25
|
+
Each built-in agent has one Python-safe subpackage: `copilot` lives in
|
|
26
|
+
`src/specify_cli/integrations/copilot/` and exposes `CopilotIntegration`.
|
|
27
|
+
Hyphenated keys use underscores in package names. Its class declares:
|
|
28
|
+
|
|
29
|
+
- `key`: unique user-facing identifier. CLI-backed integrations normally use
|
|
30
|
+
the executable name: tool checks use the key and runtime dispatch defaults
|
|
31
|
+
to it. Agents with a different executable must handle both paths explicitly;
|
|
32
|
+
IDE-only agents use their canonical identifier.
|
|
33
|
+
- `config`: agent name, folder, commands subdirectory, install URL, and
|
|
34
|
+
`requires_cli`.
|
|
35
|
+
- `registrar_config`: output directory, format, argument placeholder, and
|
|
36
|
+
file extension.
|
|
37
|
+
|
|
38
|
+
Import and `_register()` the class in `src/specify_cli/integrations/__init__.py`
|
|
39
|
+
(both lists alphabetically). This registry is the source of built-in Python
|
|
40
|
+
integration behavior. If the agent supports non-interactive workflows, implement
|
|
41
|
+
`build_exec_args()` with the full base signature; `options()` declares
|
|
42
|
+
install-time `--integration-options`, not per-workflow runtime options.
|
|
43
|
+
Agent-specific native events can be declared on the integration. Set
|
|
44
|
+
`multi_install_safe = True` only for a static, non-overlapping agent root and
|
|
45
|
+
command directory; shared dynamic paths are not safe by default.
|
|
46
|
+
|
|
47
|
+
## Output flavors
|
|
48
|
+
|
|
49
|
+
Choose the smallest base class that matches the agent's native format. The
|
|
50
|
+
format bases render shared `templates/commands/*.md`; `IntegrationBase.setup()`
|
|
51
|
+
copies templates raw unless overridden. Paths below are relative to each
|
|
52
|
+
agent's configured root.
|
|
53
|
+
|
|
54
|
+
| Flavor | Base class | Typical output | Arguments |
|
|
55
|
+
|---|---|---|---|
|
|
56
|
+
| Markdown commands | `MarkdownIntegration` | `commands/speckit.plan.md` | `$ARGUMENTS` |
|
|
57
|
+
| TOML commands | `TomlIntegration` | `commands/speckit.plan.toml` | `{{args}}` |
|
|
58
|
+
| YAML recipes | `YamlIntegration` | `recipes/speckit.plan.yaml` | `{{args}}` |
|
|
59
|
+
| Agent skills | `SkillsIntegration` | `skills/speckit-plan/SKILL.md` | `$ARGUMENTS` |
|
|
60
|
+
| Nonstandard or dual-mode | `IntegrationBase` or a targeted override of a format base | Agent-specific files, companions, or settings | Agent-specific |
|
|
61
|
+
|
|
62
|
+
`registrar_config["args"]` selects the installed argument syntax;
|
|
63
|
+
`command_filename()` and `setup()` are override points when the native layout
|
|
64
|
+
demands them. Keep mode selection, invocation spelling, and registration in
|
|
65
|
+
sync. Agent-specific layouts and options belong in the integration code and
|
|
66
|
+
the [supported-integrations reference](../docs/reference/integrations.md).
|
|
67
|
+
|
|
68
|
+
Core templates that call scripts declare `sh`, `ps`, and `py` commands in
|
|
69
|
+
`scripts:` frontmatter; template processing replaces `{SCRIPT}` with the
|
|
70
|
+
selected variant. `py` is opt-in; non-interactive init defaults to `sh` on
|
|
71
|
+
POSIX or `ps` on Windows. Maintain equivalent stdout behavior across all three.
|
|
72
|
+
Bundled extension commands do not yet use this core-template script routing.
|
|
73
|
+
`__AGENT__` and command references are resolved during rendering, not by
|
|
74
|
+
adding per-agent wrapper scripts.
|
|
75
|
+
|
|
76
|
+
## Ownership and lifecycle
|
|
77
|
+
|
|
78
|
+
An installation records its files and SHA-256 hashes in
|
|
79
|
+
`.specify/integrations/<key>.manifest.json`. Custom `setup()` code must track
|
|
80
|
+
files it creates via the manifest (`record_file()` or the base class's
|
|
81
|
+
write-and-record helpers). Do not track a pre-existing user file merely because
|
|
82
|
+
you merged settings into it: unchanged tracked files are deleted on uninstall.
|
|
83
|
+
`teardown()` preserves modified tracked files by default; `--force` can remove
|
|
84
|
+
them. Keep agent-specific settings and events consistent with that lifecycle.
|
|
85
|
+
|
|
86
|
+
The integration does **not** own agent context files such as `AGENTS.md` or
|
|
87
|
+
`CLAUDE.md`. The opt-in `extensions/agent-context/` owns their defaults,
|
|
88
|
+
configuration, and managed sections; do not add `context_file` fields or
|
|
89
|
+
context-file handling to the CLI. `specify init` does not enable the extension
|
|
90
|
+
implicitly. Extensions and presets register command or skill overrides for the
|
|
91
|
+
current default integration, not every installed integration.
|
|
92
|
+
|
|
93
|
+
## Adding an agent
|
|
94
|
+
|
|
95
|
+
1. Run `specify integration scaffold my-agent --type markdown` from this
|
|
96
|
+
repository (`toml`, `yaml`, and `skills` are also supported), or start with
|
|
97
|
+
a custom class only when necessary.
|
|
98
|
+
2. Review the generated `config` and `registrar_config`; register the class
|
|
99
|
+
alphabetically and add a matching entry to `integrations/catalog.json`.
|
|
100
|
+
3. Add focused coverage in `tests/integrations/test_integration_<package_dir>.py`
|
|
101
|
+
for metadata, generated output, installation, and uninstall (including
|
|
102
|
+
preservation of edited files where applicable).
|
|
103
|
+
4. Exercise `specify init my-project --integration <key>` and the install/uninstall
|
|
104
|
+
lifecycle; update the [supported agents](../docs/reference/integrations.md)
|
|
105
|
+
and devcontainer setup if the agent needs additional tooling.
|
|
106
|
+
|
|
107
|
+
The scaffold creates a package and test skeleton, **not** registry or catalog
|
|
108
|
+
entries. Prefer existing bases and shared processing over copied setup loops.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Workflow Step Design
|
|
2
|
+
|
|
3
|
+
A workflow step type defines what a `type:` in workflow YAML does. This is an
|
|
4
|
+
extension point of the workflow engine, distinct from an agent integration:
|
|
5
|
+
integrations dispatch work to an agent; steps validate and execute workflow
|
|
6
|
+
behavior. For the overall engine, see
|
|
7
|
+
[Workflow System Architecture](../workflows/ARCHITECTURE.md); for YAML usage,
|
|
8
|
+
see [Workflows](../docs/reference/workflows.md).
|
|
9
|
+
|
|
10
|
+
## Delivery and registration
|
|
11
|
+
|
|
12
|
+
| Route | Source | Registration |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| Built-in | `src/specify_cli/workflows/steps/<package>/__init__.py` | Explicit import and `_register_step()` in `src/specify_cli/workflows/__init__.py` |
|
|
15
|
+
| Installed | Package under `.specify/workflows/steps/<id>/`, containing `step.yml` and `__init__.py` | `load_custom_steps(project_root)` loads a matching `StepBase` subclass at workflow run/resume |
|
|
16
|
+
|
|
17
|
+
`STEP_REGISTRY` maps each `type_key` to a single step instance. Built-in keys
|
|
18
|
+
are snapshotted in `BUILTIN_STEP_TYPES` before project steps are loaded; do not
|
|
19
|
+
infer built-in status from the mutable registry. Installed packages can be
|
|
20
|
+
found through step catalogs and added with `specify workflow step add <id>`.
|
|
21
|
+
The default community catalog is discovery-only, not an install or trust
|
|
22
|
+
endorsement. Review external step code before installing it: loading a package
|
|
23
|
+
imports and executes its Python module.
|
|
24
|
+
|
|
25
|
+
## Step contract
|
|
26
|
+
|
|
27
|
+
Subclass `StepBase` from `src/specify_cli/workflows/base.py`, set `type_key`
|
|
28
|
+
to the workflow YAML `type`, and implement
|
|
29
|
+
`execute(config: dict[str, Any], context: StepContext) -> StepResult`.
|
|
30
|
+
Override `validate(config)` for step-specific errors; the base validator
|
|
31
|
+
requires an `id`. Omitting `type` in YAML selects the built-in `command` step.
|
|
32
|
+
|
|
33
|
+
`StepContext` supplies inputs, previous step results, workflow defaults, run
|
|
34
|
+
and project paths, and iteration/resume context. Return a `StepResult` with a
|
|
35
|
+
`StepStatus`, an output mapping, and an error message on failure. The engine
|
|
36
|
+
records the result for later `{{ steps.<id>.output.* }}` expressions and
|
|
37
|
+
persists run state. `PAUSED` stops for resume; `FAILED` normally stops the run
|
|
38
|
+
unless `continue_on_error: true` is set (an explicit abort always stops).
|
|
39
|
+
`next_steps` supplies nested steps for control flow.
|
|
40
|
+
|
|
41
|
+
The engine calls `validate()` during workflow validation but does not
|
|
42
|
+
automatically validate a definition passed to `execute()`. Guard invalid
|
|
43
|
+
configurations in `execute()` too, returning a failed result rather than a
|
|
44
|
+
successful default or an unhandled exception. Resume restarts the current
|
|
45
|
+
top-level step; a pause inside nested steps re-runs their parent and nested
|
|
46
|
+
body. Design side effects accordingly.
|
|
47
|
+
|
|
48
|
+
The registry holds one shared instance per type. Concurrent `fan-out` can
|
|
49
|
+
invoke that instance from multiple threads: keep execution stateless and
|
|
50
|
+
thread-safe, with per-run data in `config` and `context`, not on `self`.
|
|
51
|
+
|
|
52
|
+
## Adding a step type
|
|
53
|
+
|
|
54
|
+
1. Implement the step in its own `steps/<package>/` subpackage and register
|
|
55
|
+
it explicitly with a unique `type_key`. For an external package, provide
|
|
56
|
+
`step.yml` with a matching `step.type_key` and a matching subclass in
|
|
57
|
+
`__init__.py`; catalog discovery alone does not register the code.
|
|
58
|
+
2. Test valid and invalid configurations, status/output/error behavior, and
|
|
59
|
+
resume or nested/concurrent execution when relevant. Registry and engine
|
|
60
|
+
coverage lives in `tests/test_workflows.py`; focused step suites may live
|
|
61
|
+
under `tests/workflows/`.
|
|
62
|
+
3. Update the [workflow reference](../docs/reference/workflows.md) when a
|
|
63
|
+
built-in step changes the YAML users can write. Keep agent-specific CLI
|
|
64
|
+
dispatch in integrations rather than duplicating it in step types.
|
|
@@ -9,6 +9,7 @@ Accepted community bundle entries are published in [`bundles/catalog.community.j
|
|
|
9
9
|
|
|
10
10
|
| Bundle | Purpose | Role or team | Provides | Required catalogs | URL |
|
|
11
11
|
|--------|---------|--------------|----------|-------------------|-----|
|
|
12
|
+
| Agentstandards Multi-Vendor Architecture | Installs a Codex-orchestrated, multi-vendor architecture council, its hard task gate, and the supporting Spec Kit workflow. | `architecture-governance` | 1 extension, 1 preset, 1 workflow | Documented | [agentstandards](https://github.com/bbjwz/agentstandards) |
|
|
12
13
|
| SicarioSpec Security & Governance Bundle | Secure-by-default governance bundle for GitHub Spec Kit. Enforces data classification, threat modeling, and code-owned verification gates. | `security-engineer` | 1 extension, 11 presets | Documented | [sicario-spec](https://github.com/dfirs1car1o/sicario-spec) |
|
|
13
14
|
| SpecAssay | Durable-ID promotion for stock Spec Kit: templates, Gate 2 refusal, and trace-manifest emission. | `developer` | 1 extension, 1 preset | Documented | [specassay](https://github.com/rdryfoos/specassay) |
|
|
14
15
|
|
|
@@ -32,6 +32,7 @@ The following community-contributed extensions are available in [`catalog.commun
|
|
|
32
32
|
| AgentDocx SpecKit V2 | AgentDocx evolved: same pipeline + far more autonomous Ticket Manager (5 CLI, per-project Kanban, bulk sync, auto-switch, Auditor) | `integration` | Read+Write | [Extension_GithubSpecKit](https://github.com/ahmed200346/Extension_GithubSpecKit) |
|
|
33
33
|
| AgentPay Pre-Pay Audit — Grade an endpoint before your agent pays it | Audit a paid API before money moves: grade the endpoint's 402 terms, see what the live market actually charges, and confirm the wallet can complete the payment right now. | `visibility` | Read-only | [spec-kit-prepay-audit](https://github.com/shawnhvac/spec-kit-prepay-audit) |
|
|
34
34
|
| AgentPay x402 — Spend Controls for Spec Kit Agents | Set USDC spending caps, check a counterparty's credit before paying it, and pay x402-enabled APIs during spec implementation. Settles on Base or Solana. | `integration` | Read+Write | [spec-kit-pay-x402](https://github.com/shawnhvac/spec-kit-pay-x402) |
|
|
35
|
+
| Agentstandards Architecture Council | Run a bounded, multi-vendor architecture council between Spec Kit planning and task generation. | `process` | Read+Write | [agentstandards](https://github.com/bbjwz/agentstandards) |
|
|
35
36
|
| AI-Driven Engineering (AIDE) | A structured 7-step workflow for building new projects from scratch with AI assistants — from vision through implementation | `process` | Read+Write | [aide](https://github.com/mnriem/spec-kit-extensions/tree/main/aide) |
|
|
36
37
|
| Analytics | Measure what your AI builds, and how much time it saves you | `visibility` | Read+Write | [spec-kit-analytics](https://github.com/Fyloss/spec-kit-analytics) |
|
|
37
38
|
| API Evolve | Managed API contract evolution — breaking-change detection, semver enforcement, deprecation orchestration, and lifecycle gates across REST, GraphQL, and gRPC | `process` | Read+Write | [spec-kit-api-evolve](https://github.com/Quratulain-bilal/spec-kit-api-evolve) |
|
|
@@ -110,7 +111,7 @@ The following community-contributed extensions are available in [`catalog.commun
|
|
|
110
111
|
| Multi-Repo Branch Sync | Creates the feature branch in affected sub-repositories and git submodules via plan/tasks hooks | `process` | Read+Write | [multi-repo-sync](https://github.com/fyloss/spec-kit-multi-repo-sync) |
|
|
111
112
|
| Multi-Sites Spec Kit | Multi-site aware specify command with per-site spec folders, auto-increment, and Drupal support | `process` | Read+Write | [spec-kit-multi-sites](https://github.com/teeyo/spec-kit-multi-sites) |
|
|
112
113
|
| .NET Framework to Modern .NET Migration | Orchestrate end-to-end .NET Framework to modern .NET migration across 7 phases, with SDD lifecycle integration | `process` | Read+Write | [spec-kit-fx-to-net](https://github.com/RogerBestMsft/spec-kit-FxToNet) |
|
|
113
|
-
| OKF Knowledge Bundle Generator | Generates and maintains an Open Knowledge Format (OKF v0.1) knowledge bundle from a source-code repository
|
|
114
|
+
| OKF Knowledge Bundle Generator | Generates and maintains an Open Knowledge Format (OKF v0.1) knowledge bundle from a source-code repository. Mines git history for the rationale behind the code, parks what it cannot establish as open questions rather than guessing, and verifies that the bundle's claims are actually supported by the repository. | `docs` | Read+Write | [catalogify](https://github.com/alexcpn/catalogify) |
|
|
114
115
|
| Onboard | Contextual onboarding and progressive growth for developers new to spec-kit projects. Explains specs, maps dependencies, validates understanding, and guides the next step | `process` | Read+Write | [spec-kit-onboard](https://github.com/dmux/spec-kit-onboard) |
|
|
115
116
|
| OpenUP Governed Lifecycle | Adds the OpenUP lifecycle to Spec Kit: phases, iterations, a seven-level WBS, an executable risk register, bi-directional traceability, and machine-checkable milestone gates. | `process` | Read+Write | [specup](https://github.com/anvigo12/specup) |
|
|
116
117
|
| Optimize | Audit and optimize AI governance for context efficiency — token budgets, rule health, interpretability, compression, coherence, and echo detection | `process` | Read+Write | [spec-kit-optimize](https://github.com/sakitA/spec-kit-optimize) |
|
|
@@ -165,7 +166,7 @@ The following community-contributed extensions are available in [`catalog.commun
|
|
|
165
166
|
| Spec Trace | Build a requirement → test traceability matrix from spec.md and the test suite — surface untested requirements and orphan tests | `code` | Read+Write | [spec-kit-trace](https://github.com/Quratulain-bilal/spec-kit-trace) |
|
|
166
167
|
| Spec Validate | Comprehension validation, review gating, and approval state for spec-kit artifacts — staged quizzes, peer review SLA, and a hard gate before /speckit.implement | `process` | Read+Write | [spec-kit-spec-validate](https://github.com/aeltayeb/spec-kit-spec-validate) |
|
|
167
168
|
| Spec2Cloud | Spec-driven workflow tuned for shipping to Azure | `process` | Read+Write | [spec2cloud](https://github.com/Azure-Samples/Spec2Cloud) |
|
|
168
|
-
| SpecAssay Check | Gate 2 refuses silent gaps and emits a trace-manifest (trace-manifest.json). | `visibility` | Read+Write | [specassay](https://github.com/rdryfoos/specassay) |
|
|
169
|
+
| SpecAssay Check | Gate 2 refuses silent gaps and emits a trace-manifest (`trace-manifest.json`). | `visibility` | Read+Write | [specassay](https://github.com/rdryfoos/specassay) |
|
|
169
170
|
| SpecJudge — right-size the model before you implement | Recommends the model that fits your tasks, citing the spec fragment behind every level. | `process` | Read-only | [SpecJudge](https://github.com/JoaquinRuiz/SpecJudge) |
|
|
170
171
|
| SpecKit Companion | Live spec-driven progress — lifecycle capture, status, resume, living specs, and composable commands with hooks and recipes | `process` | Read+Write | [speckit-companion](https://github.com/alfredoperez/speckit-companion) |
|
|
171
172
|
| SpecKit Grill Me | Exhaustively clarify specifications and optionally sync canonical domain knowledge | `process` | Read+Write | [speckit-grill-me](https://github.com/yoshi1220/speckit-grill-me) |
|