specify-cli 1.2.5__tar.gz → 1.2.6__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.2.5 → specify_cli-1.2.6}/.github/workflows/codeql.yml +2 -2
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/lint.yml +1 -1
- {specify_cli-1.2.5 → specify_cli-1.2.6}/CHANGELOG.md +25 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/PKG-INFO +1 -1
- {specify_cli-1.2.5 → specify_cli-1.2.6}/bundles/assess/bundle.yml +1 -1
- {specify_cli-1.2.5 → specify_cli-1.2.6}/bundles/bugfix/bundle.yml +2 -2
- {specify_cli-1.2.5 → specify_cli-1.2.6}/bundles/catalog.json +1 -1
- {specify_cli-1.2.5 → specify_cli-1.2.6}/design/file-helper.md +10 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/design/workflow-step.md +12 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/community/presets.md +1 -1
- specify_cli-1.2.6/docs/integrations/droid.md +70 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/reference/bundles.md +5 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/reference/workflows.md +136 -4
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/toc.yml +2 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/assess/README.md +34 -24
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/assess/extension.yml +1 -1
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/bug/README.md +1 -1
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/bug/extension.yml +1 -1
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/catalog.json +3 -3
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/github/README.md +1 -1
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/github/extension.yml +1 -1
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/template/README.md +1 -1
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/catalog.community.json +8 -7
- {specify_cli-1.2.5 → specify_cli-1.2.6}/pyproject.toml +1 -1
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/_installed_list_json.py +6 -6
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/_version.py +96 -10
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/packager.py +11 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/command_init.py +11 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/__init__.py +2 -2
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/_commands.py +3 -3
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/command_add.py +23 -2
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integration_state.py +39 -7
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/_helpers.py +73 -7
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/command_switch.py +29 -1
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/command_use.py +10 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/droid/__init__.py +80 -3
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/_manifest.py +2 -2
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/selfs/command_upgrade.py +10 -6
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/_commands.py +217 -4
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/_execution.py +24 -17
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/_mcp.py +12 -0
- specify_cli-1.2.6/src/specify_cli/workflows/command_definition.py +77 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/command_status.py +2 -12
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/engine.py +86 -25
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/command/__init__.py +7 -1
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/shell/__init__.py +87 -16
- {specify_cli-1.2.5 → specify_cli-1.2.6}/templates/commands/specify.md +7 -3
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/extensions/bug/test_bug_hooks.py +1 -1
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/extensions/github/test_github_extension.py +1 -1
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_copilot.py +5 -2
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_droid.py +248 -0
- specify_cli-1.2.6/tests/integrations/test_integration_state.py +276 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/authentication/test_authentication.py +3 -3
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_packager.py +16 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/test_command_add.py +65 -2
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/test_command_search.py +33 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/conftest.py +17 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/test_command_install.py +39 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/test_command_status.py +8 -6
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/test_command_switch.py +204 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/test_command_upgrade.py +167 -3
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/test_command_use.py +69 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_manifest.py +16 -2
- specify_cli-1.2.6/tests/specify_cli/selfs/test_command_upgrade.py +268 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/test_command_init.py +75 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/test_version_detection.py +359 -41
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/test_version_execution.py +11 -10
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/test_version_verification.py +12 -11
- specify_cli-1.2.6/tests/specify_cli/workflows/test_command_definition.py +1105 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_command_status.py +33 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_extensions.py +53 -3
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_presets.py +15 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_workflows.py +193 -0
- specify_cli-1.2.6/tests/workflows/test_shell_step.py +559 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/workflows/PUBLISHING.md +5 -2
- {specify_cli-1.2.5 → specify_cli-1.2.6}/workflows/README.md +14 -0
- specify_cli-1.2.5/docs/integrations/droid.md +0 -35
- specify_cli-1.2.5/tests/integrations/test_integration_state.py +0 -114
- specify_cli-1.2.5/tests/specify_cli/selfs/test_command_upgrade.py +0 -128
- specify_cli-1.2.5/tests/workflows/test_shell_step.py +0 -168
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.devcontainer/devcontainer.json +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.devcontainer/post-create.sh +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.editorconfig +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.gitattributes +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/CODEOWNERS +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/ISSUE_TEMPLATE/agent_request.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/ISSUE_TEMPLATE/bundle_submission.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/ISSUE_TEMPLATE/preset_submission.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/ISSUE_TEMPLATE/workflow_step_submission.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/aw/actions-lock.json +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/dependabot.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/scripts/check_extension_version_bump.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/scripts/check_security_requirements.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/scripts/validate_community_preset.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/scripts/validate_community_workflow_step.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/security-audit-requirements.txt +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/skills/add-community-extension/SKILL.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/skills/code-review/SKILL.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/RELEASE-PROCESS.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/add-community-bundle.lock.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/add-community-bundle.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/add-community-extension.lock.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/add-community-extension.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/add-community-preset.lock.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/add-community-preset.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/add-community-workflow-step.lock.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/add-community-workflow-step.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/bug-assess.lock.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/bug-assess.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/bug-fix.lock.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/bug-fix.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/bug-test.lock.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/bug-test.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/catalog-assign.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/docs.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/extension-version-guard.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/feature-assess.lock.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/feature-assess.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/pr-assess.lock.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/pr-assess.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/publish-pypi.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/release-trigger.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/release.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/security.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/stale.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.github/workflows/test.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.gitignore +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.markdownlint-cli2.jsonc +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.pre-commit-config.yaml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/.zenodo.json +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/AGENTS.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/CITATION.cff +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/CODE_OF_CONDUCT.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/CONTRIBUTING.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/DEVELOPMENT.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/LICENSE +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/README.ja.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/README.ko.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/README.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/README.zh-CN.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/SECURITY.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/SUPPORT.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/bundles/assess/README.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/bundles/bugfix/README.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/bundles/catalog.community.json +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/design/catalogs.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/design/cli.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/design/extension.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/design/integration.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/design/mcp.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/design/shared.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/.gitignore +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/README.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/community/bundles.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/community/extensions.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/community/friends.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/community/overview.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/community/walkthroughs.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/community/workflow-steps.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/concepts/complex-features.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/concepts/sdd.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/concepts/spec-of-specs.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/concepts/spec-persistence.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/docfx.json +0 -0
- /specify_cli-1.2.5/extensions/EXTENSION-API-REFERENCE.md → /specify_cli-1.2.6/docs/extensions/api.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/extensions/developing.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/extensions/overview.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/extensions/publishing.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/guides/agentic-sdlc.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/guides/assessment.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/guides/bugfix.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/guides/contract-driven-development.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/guides/customization.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/guides/evolving-specs.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/guides/existing-projects.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/guides/monorepo.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/history.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/images/spec-kit-logo.webp +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/index.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/install/air-gapped.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/install/one-time.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/install/pipx.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/install/pypi.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/install/uv.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/installation.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/agy.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/alquimia.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/amp.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/auggie.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/bob.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/catalog.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/claude.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/cli.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/cline.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/codebuddy.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/codex.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/command-code.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/contributing.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/copilot.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/cursor-agent.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/devin.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/docker-agent.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/dsh.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/firebender.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/forge.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/gemini.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/generic.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/goose.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/grok.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/hermes.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/index.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/junie.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/kilocode.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/kimi.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/kiro-cli.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/lingma.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/mcode.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/muse.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/none.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/omp.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/opencode.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/pi.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/qodercli.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/qwen.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/rovodev.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/shai.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/tabnine.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/trae.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/vibe.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/zcode.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/integrations/zed.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/local-development.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/quickstart.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/reference/agentic-assessment.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/reference/agentic-bugfix.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/reference/agentic-sdd.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/reference/artifacts.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/reference/authentication.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/reference/catalogs.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/reference/core.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/reference/extensions.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/reference/mcp.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/reference/overview.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/reference/presets.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/template/public/main.css +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/docs/upgrade.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/examples/bundles/business-analyst/README.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/examples/bundles/business-analyst/bundle.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/examples/bundles/developer/README.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/examples/bundles/developer/bundle.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/examples/bundles/product-manager/README.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/examples/bundles/product-manager/bundle.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/examples/bundles/security-researcher/README.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/examples/bundles/security-researcher/bundle.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/README.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/agent-context/README.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/agent-context/agent-context-config.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/agent-context/agent-context-defaults.json +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/agent-context/extension.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/agent-context/scripts/bash/update-agent-context.sh +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/agent-context/scripts/python/update_agent_context.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/assess/commands/speckit.assess.decide.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/assess/commands/speckit.assess.define.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/assess/commands/speckit.assess.intake.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/assess/commands/speckit.assess.research.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/assess/commands/speckit.assess.shape.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/bug/commands/speckit.bug.assess.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/bug/commands/speckit.bug.fix.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/bug/commands/speckit.bug.test.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/catalog.community.json +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/README.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/commands/speckit.git.commit.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/commands/speckit.git.feature.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/commands/speckit.git.initialize.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/commands/speckit.git.remote.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/commands/speckit.git.validate.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/config-template.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/extension.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/git-config.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/scripts/bash/auto-commit.sh +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/scripts/bash/git-common.sh +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/scripts/python/auto_commit.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/scripts/python/create_new_feature_branch.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/scripts/python/git_common.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/git/scripts/python/initialize_repo.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/github/commands/speckit.github.taskstoissues.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/github/scripts/bash/resolve-tasks.sh +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/github/scripts/powershell/resolve-tasks.ps1 +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/github/scripts/python/resolve_tasks.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/selftest/commands/selftest.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/selftest/extension.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/template/.gitignore +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/template/CHANGELOG.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/template/EXAMPLE-README.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/template/LICENSE +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/template/commands/example.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/template/config-template.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/extensions/template/extension.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/integrations/catalog.community.json +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/integrations/catalog.json +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/media/bootstrap-claude-code.gif +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/media/logo_large.webp +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/media/logo_small.webp +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/media/spec-kit-video-header.jpg +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/media/specify_cli.gif +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/newsletters/2026-April.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/newsletters/2026-August.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/newsletters/2026-February.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/newsletters/2026-July.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/newsletters/2026-June.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/newsletters/2026-March.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/newsletters/2026-May.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/newsletters/2026-September.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/ARCHITECTURE.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/PUBLISHING.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/README.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/catalog.json +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/constitution-sync/README.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/constitution-sync/commands/speckit.constitution.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/constitution-sync/preset.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/lean/README.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/lean/commands/speckit.constitution.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/lean/commands/speckit.implement.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/lean/commands/speckit.plan.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/lean/commands/speckit.specify.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/lean/commands/speckit.tasks.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/lean/preset.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/scaffold/README.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/scaffold/commands/speckit.specify.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/scaffold/preset.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/scaffold/templates/myext-template.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/scaffold/templates/spec-template.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/self-test/commands/speckit.specify.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/self-test/commands/speckit.wrap-test.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/self-test/preset.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/self-test/templates/checklist-template.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/self-test/templates/constitution-template.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/self-test/templates/plan-template.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/self-test/templates/spec-template.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/presets/self-test/templates/tasks-template.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/scripts/bash/check-prerequisites.sh +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/scripts/bash/common.sh +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/scripts/bash/create-new-feature.sh +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/scripts/bash/resolve-template.sh +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/scripts/bash/setup-plan.sh +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/scripts/bash/setup-tasks.sh +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/scripts/powershell/check-prerequisites.ps1 +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/scripts/powershell/common.ps1 +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/scripts/powershell/create-new-feature.ps1 +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/scripts/powershell/resolve-template.ps1 +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/scripts/powershell/setup-plan.ps1 +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/scripts/powershell/setup-tasks.ps1 +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/scripts/python/check_prerequisites.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/scripts/python/common.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/scripts/python/create_new_feature.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/scripts/python/resolve_template.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/scripts/python/setup_plan.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/scripts/python/setup_tasks.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/spec-driven.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/spec-kit.code-workspace +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/_agent_config.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/_assets.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/_console.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/_download_security.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/_file_policy.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/_init_options.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/_install_ignore.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/_installed_info_json.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/_invocation_style.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/_operation_version.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/_project.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/_toml_string.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/_utils.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/agents.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/artifacts/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/artifacts/_commands.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/artifacts/_identifiers.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/artifacts/_mcp.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/artifacts/_operation_info.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/artifacts/_operation_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/artifacts/catalog.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/artifacts/command_info.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/artifacts/command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/artifacts/command_lookup.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/artifacts/mcp_info.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/artifacts/mcp_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/artifacts/models.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/artifacts/resolution.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/authentication/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/authentication/azure_devops.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/authentication/base.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/authentication/bitbucket.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/authentication/config.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/authentication/github.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/authentication/github_http.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/authentication/http.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundler.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/_commands.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/adapters.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/catalog/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/catalog/command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/catalog/command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/catalog/command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/catalog_config.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/catalog_stack.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/catalog_versions.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/catalogs.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/command_build.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/command_info.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/command_init.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/command_install.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/command_search.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/command_update.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/command_validate.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/component_catalog.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/conflict.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/expansion.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/installer.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/manifest.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/primitives.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/project.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/records.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/references.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/resolver.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/sources.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/validator.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/versioning.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/bundles/yamlio.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/catalogs.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/command_check.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/command_mcp.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/command_version.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/events/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/events/command_run.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/_catalog_versions.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/_command_update_artifacts.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/_command_update_discovery.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/_command_update_transaction.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/catalog/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/catalog/_helpers.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/catalog/command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/catalog/command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/catalog/command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/command_disable.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/command_enable.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/command_info.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/command_search.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/command_set_priority.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/extensions/command_update.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/file_helper.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integration_runtime.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integration_status.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/_capture.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/_catalog_versions.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/_command_scaffold_generation.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/_command_upgrade_layout.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/_commands.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/_file_changes.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/_lifecycle.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/_registration.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/agy/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/alquimia/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/amp/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/auggie/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/base.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/bob/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/catalog/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/catalog/command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/catalog/command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/catalog/command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/claude/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/cline/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/codex/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/command_code/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/command_info.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/command_install.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/command_scaffold.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/command_search.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/command_status.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/command_uninstall.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/command_upgrade.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/copilot/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/devin/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/docker_agent/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/dsh/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/firebender/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/forge/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/gemini/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/generic/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/goose/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/grok/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/hermes/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/installer.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/junie/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/kilocode/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/kimi/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/lingma/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/manifest.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/mcode/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/muse/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/none/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/omp/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/opencode/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/pi/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/qwen/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/rovodev/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/shai/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/trae/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/vibe/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/zcode/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/integrations/zed/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/mcp_server/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/mcp_server/_worker.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/mcp_server/catalog.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/mcp_server/executor.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/mcp_server/server.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/mcp_version.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/_catalog.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/_catalog_versions.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/_commands.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/_manager.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/_manager_commands.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/_manager_skills.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/_registry.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/_resolver.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/catalog/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/catalog/command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/catalog/command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/catalog/command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/command_disable.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/command_enable.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/command_info.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/command_resolve.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/command_search.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/command_set_priority.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/presets/command_update.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/selfs/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/selfs/command_check.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/shared_infra.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/_catalog_cache.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/_command_resume_state.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/_command_run_ownership.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/_operation_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/_storage.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/base.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/catalog/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/catalog/_domain.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/catalog/_versions.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/catalog/command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/catalog/command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/catalog/command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/command_disable.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/command_enable.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/command_info.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/command_resolve.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/command_resume.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/command_run.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/command_search.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/command_update.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/composition.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/expressions/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/expressions/api.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/expressions/diagnostics.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/expressions/engine.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/expressions/engine_current.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/expressions/filters.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/expressions/namespace.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/expressions/operators.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/expressions/template.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/mcp_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/overlay/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/overlay/command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/overlay/command_disable.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/overlay/command_enable.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/overlay/command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/overlay/command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/overlay/command_set_priority.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/overlay/composer.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/overlay/layer_sources.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/overlay/merge.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/overlay/operations.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/overlay/resolver.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/overlay/schema.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/_capture.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/_helpers.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/catalog/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/catalog/_domain.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/catalog/_versions.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/catalog/command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/catalog/command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/catalog/command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/command_info.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/command_search.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/do_while/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/fan_in/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/fan_out/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/gate/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/github/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/if_then/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/init/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/installer.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/prompt/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/slot/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/switch/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/while_loop/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/src/specify_cli/workflows/step/workflow/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/templates/checklist-template.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/templates/commands/analyze.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/templates/commands/checklist.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/templates/commands/clarify.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/templates/commands/constitution.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/templates/commands/converge.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/templates/commands/implement.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/templates/commands/plan.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/templates/commands/tasks.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/templates/commands/taskstoissues.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/templates/constitution-template.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/templates/plan-template.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/templates/spec-template.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/templates/tasks-template.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/templates/vscode-settings.json +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/conftest.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/contract/test_bundled_extension_update_delivery.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/contract/test_bundled_extension_versions.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/contract/test_catalog_schema.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/contract/test_extension_version_guard_script.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/contract/test_firstparty_bundle_catalog_consistency.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/contract/test_manifest_schema.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/contract/test_wheel_bundled_presets.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/contract/test_wheel_bundled_workflows.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/contract/test_wheel_core_pack_scripts.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/extensions/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/extensions/assess/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/extensions/assess/test_assess_extension.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/extensions/bug/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/extensions/bug/test_bug_extension.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/extensions/git/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/extensions/git/test_git_extension.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/extensions/git/test_git_extension_python_parity.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/extensions/github/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/extensions/github/test_taskstoissues_deprecation.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/extensions/test_agent_context_cli_free.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/extensions/test_extension_agent_context.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/extensions/test_update_agent_context_feature_json.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/extensions/test_update_agent_context_python_parity.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/hooks/TESTING.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/hooks/plan.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/hooks/spec.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/hooks/tasks.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/http_helpers.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integration/test_preset_update_workflow.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/conftest.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_base.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_capture.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_cli.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_extra_args.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_home_isolation.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_agy.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_alquimia.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_amp.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_auggie.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_base_markdown.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_base_skills.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_base_toml.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_base_yaml.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_bob.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_characterization.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_claude.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_cline.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_codebuddy.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_codex.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_command_code.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_cursor_agent.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_devin.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_docker_agent.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_dsh.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_firebender.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_forge.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_gemini.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_generic.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_goose.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_grok.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_hermes.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_junie.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_kilocode.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_kimi.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_kiro_cli.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_lingma.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_mcode.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_muse.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_none.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_omp.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_opencode.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_pi.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_qodercli.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_qwen.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_rovodev.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_shai.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_tabnine.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_trae.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_vibe.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_zcode.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_integration_zed.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_manifest.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_registry.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/integrations/test_skill_frontmatter_quoting.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/lock_helpers.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/parity_helpers.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/artifacts/conftest.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/artifacts/helpers.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/artifacts/test_catalog.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/artifacts/test_catalog_parity.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/artifacts/test_command_info.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/artifacts/test_command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/artifacts/test_command_lookup.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/artifacts/test_mcp_info.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/artifacts/test_mcp_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/artifacts/test_operation_info.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/artifacts/test_operation_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/artifacts/test_registration.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/authentication/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/authentication/helpers.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/authentication/test_github_http.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/_command_helpers.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/catalog/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/catalog/test_command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/catalog/test_command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/catalog/test_command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/conftest.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/helpers.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_adapters.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_bundles.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_catalog_config.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_catalog_stack.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_catalog_versions.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_command_build.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_command_info.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_command_init.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_command_install.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_command_install_version.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_command_search.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_command_update.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_command_validate.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_commands.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_conflict.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_expansion.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_installer.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_manifest.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_offline.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_primitives.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_records.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_references.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_resolver.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_security_paths.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_sources.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_validator.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_versioning.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/bundles/test_yamlio.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/events/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/events/test_command_run.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/events/test_events.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/_helpers.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/catalog/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/catalog/test_command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/catalog/test_command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/catalog/test_command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/conftest.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/test_catalog_versions.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/test_command_add_path_traversal.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/test_command_disable.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/test_command_enable.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/test_command_info.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/test_command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/test_command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/test_command_set_priority.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/test_command_update.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/test_command_update_artifacts.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/test_command_update_discovery.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/extensions/test_command_update_transaction.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/_catalog_helpers.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/_helpers.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/_scaffold_helpers.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/catalog/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/catalog/test_command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/catalog/test_command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/catalog/test_command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/test_catalog.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/test_catalog_versions.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/test_command_info.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/test_command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/test_command_scaffold.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/test_command_scaffold_generation.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/test_command_search.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/test_command_uninstall.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/test_command_upgrade_layout.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/test_installed_adapters.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/test_lifecycle.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/integrations/test_registration.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/mcp_server/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/mcp_server/test_catalog.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/mcp_server/test_executor.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/mcp_server/test_server.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/mcp_server/test_stdio.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/_fixtures.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/_helpers.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/catalog/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/catalog/test_command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/catalog/test_command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/catalog/test_command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/conftest.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_catalog.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_catalog_versions.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_command_disable.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_command_enable.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_command_info.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_command_resolve.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_command_search.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_command_set_priority.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_command_update.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_domain_exports.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_manager.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_manager_commands.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_manager_skills.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_registration.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_registry.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/presets/test_resolver.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/self_upgrade_helpers.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/selfs/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/selfs/test_command_check.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/test_agent_config.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/test_catalog_contracts.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/test_check_tool.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/test_command_check.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/test_command_mcp.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/test_command_version.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/test_file_policy.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/test_install_ignore.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/test_mcp_version.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/test_operation_version.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/test_root_version_callback.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/test_version_guidance.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/test_version_imports.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/test_version_release.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/catalog/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/catalog/test_command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/catalog/test_command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/catalog/test_command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/conftest.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/helpers.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/overlay/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/overlay/test_command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/overlay/test_command_disable.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/overlay/test_command_enable.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/overlay/test_command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/overlay/test_command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/overlay/test_command_set_priority.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/step/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/step/catalog/__init__.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/step/catalog/test_command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/step/catalog/test_command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/step/catalog/test_command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/step/catalog/test_registry.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/step/test_catalog_versions.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/step/test_command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/step/test_command_info.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/step/test_command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/step/test_command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/step/test_command_search.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/step/test_installer.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_catalog_cache.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_catalog_versions.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_command_add.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_command_disable.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_command_enable.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_command_info.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_command_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_command_remove.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_command_resolve.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_command_resume.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_command_resume_state.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_command_run.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_command_run_ownership.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_command_search.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_command_update.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_custom_steps.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_mcp.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_mcp_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/specify_cli/workflows/test_operation_list.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_agent_config_consistency.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_branch_numbering.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_bug_fix_workflow.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_catalog_trust_docs.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_check_prerequisites_paths_only.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_check_prerequisites_python_parity.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_clarify_stage_gate.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_command_template_hooks.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_command_template_py_scripts.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_community_preset_validation.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_console_imports.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_constitution_template_sync_report.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_converge_template_scaffold.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_create_new_feature_python_parity.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_download_security.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_extension_registration.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_extension_skills.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_file_helper.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_github_workflows.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_init_dir.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_init_dir_cli.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_installed_info_json.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_installed_list_json.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_live_transient_windows.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_merge.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_post_process.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_ps1_encoding.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_registrar_path_traversal.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_resolve_template_python_parity.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_security_workflow.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_setup_plan_feature_json.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_setup_plan_no_overwrite.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_setup_plan_python_parity.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_setup_tasks.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_setup_tasks_python_parity.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_shared_infra_gitignore.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_shared_infra_integrity.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_shared_infra_lock.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_skill_placeholder_py.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_specify_no_persist.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_specify_template_numbering.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_tasks_template_constraints.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_timestamp_branches.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_utils.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_utils_assets_imports.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/test_workflow_step_submission.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/unit/test_condition_expression_block.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/unit/test_expression_package_boundary.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/workflows/conftest.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/workflows/test_bundled_bugfix_assess_workflows.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/workflows/test_bundled_speckit_workflow.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/workflows/test_composition_execution.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/workflows/test_github_step.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/workflows/test_overlay_composer.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/workflows/test_overlay_layer_sources.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/workflows/test_overlay_merge.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/workflows/test_overlay_schema.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/workflows/test_resolver_integration.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/workflows/test_slot_step.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/tests/workflows/test_step_capture.py +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/workflows/ARCHITECTURE.md +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/workflows/assess/workflow.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/workflows/bugfix/workflow.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/workflows/catalog.community.json +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/workflows/catalog.json +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/workflows/speckit/workflow.yml +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/workflows/step-catalog.community.json +0 -0
- {specify_cli-1.2.5 → specify_cli-1.2.6}/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@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # 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@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # v4
|
|
31
31
|
with:
|
|
32
32
|
category: "/language:${{ matrix.language }}"
|
|
@@ -88,7 +88,7 @@ jobs:
|
|
|
88
88
|
fi
|
|
89
89
|
|
|
90
90
|
- name: Run markdownlint-cli2
|
|
91
|
-
uses: DavidAnson/markdownlint-cli2-action@
|
|
91
|
+
uses: DavidAnson/markdownlint-cli2-action@696eb3f2509270d7b882d2aa68347bc676e7af34 # v25.0.0
|
|
92
92
|
with:
|
|
93
93
|
globs: ${{ env.DOC_GLOBS }}
|
|
94
94
|
|
|
@@ -2,6 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- insert new changelog below this comment -->
|
|
4
4
|
|
|
5
|
+
## [1.2.6] - 2026-11-02
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- feat(droid): add --no-model-invocation integration option (#5116)
|
|
10
|
+
- fix(extensions): make extension add name optional with --from (#5197)
|
|
11
|
+
- fix(extensions): skip non-UTF-8 catalog responses (#5196)
|
|
12
|
+
- feat: add `specify workflow definition` for run-scoped definitions (#4912)
|
|
13
|
+
- fix(integrations): refresh manifest hashes after init --force and switch rollback (#5193)
|
|
14
|
+
- fix(workflows): stop dispatching "None" as command step arguments (#5016)
|
|
15
|
+
- feat(workflows): add opt-in strict shell execution (#5181)
|
|
16
|
+
- chore(deps): bump DavidAnson/markdownlint-cli2-action (#5191)
|
|
17
|
+
- chore(deps): bump the codeql-action group with 2 updates (#5189)
|
|
18
|
+
- fix: reject symlinked integration state (#5176)
|
|
19
|
+
- fix: reject trailing newlines in extension IDs (#5186)
|
|
20
|
+
- fix: reject trailing newlines in preset IDs (#5188)
|
|
21
|
+
- fix(templates): start spec.md from the composed spec-template (#5187)
|
|
22
|
+
- docs: move extension API reference into documentation (#5174)
|
|
23
|
+
- Update iSAQB Architecture Governance preset to v0.2.5 (#5183)
|
|
24
|
+
- fix: reject unsafe self-upgrade installer paths (#5172)
|
|
25
|
+
- fix(bundles): refuse to build when bundle.yml or README.md is a symlink (#5169)
|
|
26
|
+
- docs(assess): clarify README invocation guidance (#5068)
|
|
27
|
+
- fix(integrations): refresh manifest hashes after preset registration on switch and use (#5145)
|
|
28
|
+
- chore: release 1.2.5, begin 1.2.6.dev0 development (#5167)
|
|
29
|
+
|
|
5
30
|
## [1.2.5] - 2026-10-28
|
|
6
31
|
|
|
7
32
|
### Changed
|
|
@@ -3,7 +3,7 @@ schema_version: "1.0"
|
|
|
3
3
|
bundle:
|
|
4
4
|
id: "bugfix"
|
|
5
5
|
name: "Guided Bug Fix"
|
|
6
|
-
version: "1.0.
|
|
6
|
+
version: "1.0.2"
|
|
7
7
|
role: "developer"
|
|
8
8
|
description: "Orchestrated bug triage: assess a bug report, review the assessment behind a human gate, apply the fix, and verify it with tests."
|
|
9
9
|
author: "GitHub"
|
|
@@ -17,7 +17,7 @@ requires:
|
|
|
17
17
|
provides:
|
|
18
18
|
extensions:
|
|
19
19
|
- id: "bug"
|
|
20
|
-
version: "1.0.
|
|
20
|
+
version: "1.0.2"
|
|
21
21
|
workflows:
|
|
22
22
|
- id: "bugfix"
|
|
23
23
|
version: "1.0.0"
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"bugfix": {
|
|
7
7
|
"id": "bugfix",
|
|
8
8
|
"name": "Guided Bug Fix",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.2",
|
|
10
10
|
"role": "developer",
|
|
11
11
|
"description": "Orchestrated bug triage: assess a bug report, review behind a human gate, apply the fix, and verify with tests.",
|
|
12
12
|
"author": "GitHub",
|
|
@@ -69,6 +69,16 @@ adapters. Commands using another established root call `project_files` on
|
|
|
69
69
|
their actually selected root. Retain a helper only for the current operation;
|
|
70
70
|
a later invocation resolves a new helper, so manual edits take effect.
|
|
71
71
|
|
|
72
|
+
The `specify_cli.integration_state` helpers are an explicit managed-metadata
|
|
73
|
+
exception to this handoff. Their reads and writes of `.specify/integration.json`
|
|
74
|
+
always use deny mode, including contained links when `allow_symlinks` is true.
|
|
75
|
+
This preserves the
|
|
76
|
+
[integration lifecycle's restriction](integration.md#storage-loading-and-lifecycle)
|
|
77
|
+
against symlinked write destinations before snapshotting and mutation.
|
|
78
|
+
This guarantee does not cover unmigrated consumers such as
|
|
79
|
+
`bundles.project.active_integration`, whose containment-checked reads can still
|
|
80
|
+
follow contained state-file links.
|
|
81
|
+
|
|
72
82
|
Existing Path-returning resolvers preflight policy without changing their return
|
|
73
83
|
type or domain constructors. They do not implicitly equip unmigrated domain
|
|
74
84
|
consumers with an operation helper. Failures are translated into existing
|
|
@@ -43,6 +43,18 @@ automatically validate a definition passed to `execute()`. Guard invalid
|
|
|
43
43
|
configurations in `execute()` too, returning a failed result rather than a
|
|
44
44
|
successful default or an unhandled exception.
|
|
45
45
|
|
|
46
|
+
The built-in shell step preserves raw `run` interpolation by default.
|
|
47
|
+
Per-step `strict: true` rejects expression markers in `run` during validation
|
|
48
|
+
and execution. Its optional `env` mapping evaluates string templates separately,
|
|
49
|
+
requires NUL-free string results encodable for the process environment on
|
|
50
|
+
POSIX, and overrides only the child environment.
|
|
51
|
+
`SPECKIT_WORKFLOW_DIR` remains engine-owned. This prevents workflow expression
|
|
52
|
+
values from becoming shell source in strict mode; it is not a sandbox or a
|
|
53
|
+
guarantee that an authored script handles environment data safely.
|
|
54
|
+
Environment bindings and inherited settings can intentionally affect executable
|
|
55
|
+
lookup, module loading, and runtime startup. Strict mode does not filter them;
|
|
56
|
+
workflow source review must cover both `run` and `env` and referenced code.
|
|
57
|
+
|
|
46
58
|
New runs persist an execution tree. Resume replays completed occurrences into
|
|
47
59
|
their expression contexts without calling their implementations, then continues
|
|
48
60
|
at the unfinished occurrence. Selected branches, custom expansions, loop
|
|
@@ -26,7 +26,7 @@ The following community-contributed presets customize how Spec Kit behaves — o
|
|
|
26
26
|
| Intake Review Governance | Reviews single, series, campaign, and language-aware requirements collections before Spec Kit execution. | 9 templates, 3 commands, 5 scripts | — | [spec-kit-preset-intake-review-governance](https://github.com/hindermath/spec-kit-preset-intake-review-governance) |
|
|
27
27
|
| Intake Sequencing Governance | Manages language-aware intake-series order, typed dependencies, lifecycle, and authority-neutral next-candidate selection. | 12 templates, 6 commands, 8 scripts | — | [spec-kit-preset-intake-sequencing-governance](https://github.com/hindermath/spec-kit-preset-intake-sequencing-governance) |
|
|
28
28
|
| Inventory Alignment | Classifies each requirement against a read-only inventory of live IDs before writing, so reworded requirements are updated instead of duplicated. | 1 template, 2 commands | speckit-inventory extension | [spec-kit-inventory-alignment](https://github.com/Yash-Chindam/spec-kit-inventory-alignment) |
|
|
29
|
-
| iSAQB Architecture Governance | Adds iSAQB/CPSA-F and arc42 architecture governance,
|
|
29
|
+
| iSAQB Architecture Governance | Adds iSAQB/CPSA-F and arc42 architecture governance with Spec-Kit evidence for goals, views, quality scenarios, ADRs, risks, and technical debt. | 14 templates, 3 commands | — | [spec-kit-preset-isaqb-architecture-governance](https://github.com/hindermath/spec-kit-preset-isaqb-architecture-governance) |
|
|
30
30
|
| Jira Issue Tracking | Overrides `speckit.taskstoissues` to create Jira epics, stories, and tasks instead of GitHub Issues via Atlassian MCP tools | 1 command | — | [spec-kit-preset-jira](https://github.com/luno/spec-kit-preset-jira) |
|
|
31
31
|
| Model Driven Engineering | Focuses on streamlined commands, app repository support, cross-spec support, and capability-aware project memory for model-driven engineering workflows | 6 templates, 11 commands | MDE extension | [spec-kit-preset-mde](https://github.com/AI-MDE/spec-kit-preset-mde) |
|
|
32
32
|
| Model Routing Governance | Maps provider-neutral Spec Kit roles to validated harness-local runner profiles without storing model availability, credentials, or machine-specific selections in Git. | 4 templates, 2 commands, 2 scripts | — | [spec-kit-preset-model-routing-governance](https://github.com/hindermath/spec-kit-preset-model-routing-governance) |
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Factory Droid
|
|
2
|
+
|
|
3
|
+
Install [Factory Droid](https://docs.factory.ai/cli/getting-started/overview) before setup.
|
|
4
|
+
The integration key is `droid`.
|
|
5
|
+
|
|
6
|
+
## Multi-Install Safety
|
|
7
|
+
|
|
8
|
+
This integration is declared multi-install safe. See the
|
|
9
|
+
[shared multi-install rules](cli.md#can-i-install-multiple-integrations-in-the-same-project).
|
|
10
|
+
|
|
11
|
+
## Setup
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
specify init my-project --integration droid
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
For an existing Spec Kit project, use `specify integration install droid`.
|
|
18
|
+
See [integration management](cli.md) for activation, upgrades, and removal.
|
|
19
|
+
|
|
20
|
+
## Installed Skills
|
|
21
|
+
|
|
22
|
+
Skills are installed as `.factory/skills/speckit-<command>/SKILL.md`.
|
|
23
|
+
Invoke them in the agent's chat, for example `/speckit-specify` or
|
|
24
|
+
`/speckit-bug-assess` for the installed bug extension.
|
|
25
|
+
|
|
26
|
+
Generated skills are both user- and model-invocable by default.
|
|
27
|
+
|
|
28
|
+
## User-Invocable-Only Skills
|
|
29
|
+
|
|
30
|
+
To stop Droid invoking the core Spec Kit command skills automatically:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
specify init my-project --integration droid --integration-options="--no-model-invocation"
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
This writes `disable-model-invocation: true` into the core command skills.
|
|
37
|
+
In Droid 1.0.0 the model no longer lists them among its available skills, so it
|
|
38
|
+
does not run them unprompted, while `/speckit-<command>` and workflow dispatch
|
|
39
|
+
still run them. It is not a hard block: a prompt that names a skill (for
|
|
40
|
+
example "use the speckit-specify skill") still lets the model invoke it through
|
|
41
|
+
its `Skill` tool. Factory's
|
|
42
|
+
[skills documentation](https://docs.factory.com/cli/configuration/skills) does
|
|
43
|
+
not describe this behaviour.
|
|
44
|
+
|
|
45
|
+
- Extension skills stay model-invocable, because mandatory extension hooks rely
|
|
46
|
+
on the model invoking them. If an extension's mandatory hook runs a core
|
|
47
|
+
command (its `command:` is a core `speckit.<command>`), leave this option off:
|
|
48
|
+
the model cannot run that hook while the core skill is user-invocable only.
|
|
49
|
+
- The option is stored with the integration's other options and reapplied by
|
|
50
|
+
`specify integration upgrade droid`. Passing `--integration-options` to
|
|
51
|
+
`upgrade` replaces all stored options; `--integration-options=""` clears
|
|
52
|
+
them. Re-running `specify init` likewise stores only the options passed to it.
|
|
53
|
+
- Core command skills that a preset overrides, or stops overriding, are reverted
|
|
54
|
+
to the default by commands that re-register preset skills without reinstalling
|
|
55
|
+
Droid: commands that install, remove or update presets (including `specify
|
|
56
|
+
bundle` commands that carry presets), `specify integration use droid`, and
|
|
57
|
+
`specify integration switch droid` when Droid is installed but not the
|
|
58
|
+
default. To reapply the option, run `specify integration upgrade droid
|
|
59
|
+
--force` while Droid is the default integration (`--force` is needed because
|
|
60
|
+
those commands modify installed skill files, and it overwrites local edits to
|
|
61
|
+
Spec Kit-managed files).
|
|
62
|
+
|
|
63
|
+
## Workflow Dispatch
|
|
64
|
+
|
|
65
|
+
Workflow steps use `droid exec <prompt>`, forwarding `--model` and requesting
|
|
66
|
+
`--output-format json` when appropriate. Spec Kit does not add a
|
|
67
|
+
permission-bypass flag. Operators can explicitly configure permission flags
|
|
68
|
+
through `SPECKIT_INTEGRATION_DROID_EXTRA_ARGS`; those arguments follow Spec
|
|
69
|
+
Kit's model/output flags and may override them under duplicate-flag parsing.
|
|
70
|
+
The only integration-specific setup option is `--no-model-invocation`.
|
|
@@ -335,6 +335,11 @@ non-default source.
|
|
|
335
335
|
|
|
336
336
|
> **Vet both the bundle source and its component catalogs.** A project can supply its own bundle catalog and `install-allowed` component catalogs (extension, preset, workflow, and step) under `.specify/`; that project configuration existing is not evidence anything in it was reviewed. Before installing a bundle from an unfamiliar project, run `specify bundle catalog list` — and the equivalent `extension`/`preset`/`workflow catalog list` and `specify workflow step catalog list` commands for the components it pulls in — and treat any source you didn't add yourself as unvetted until you've reviewed it.
|
|
337
337
|
|
|
338
|
+
For workflow components, inspect shell `run` and `env` fields and their
|
|
339
|
+
referenced code, including changes introduced by active overlays. This applies
|
|
340
|
+
even to `strict: true` steps: environment bindings can change executable lookup
|
|
341
|
+
or runtime loading. See [Reviewing shell execution](workflows.md#reviewing-shell-execution).
|
|
342
|
+
|
|
338
343
|
### List the Catalog Stack
|
|
339
344
|
|
|
340
345
|
```bash
|
|
@@ -109,6 +109,56 @@ specify workflow status [<run_id>]
|
|
|
109
109
|
|
|
110
110
|
Shows the status of a specific run, or lists all runs if no ID is given. Run states: `created`, `running`, `completed`, `paused`, `failed`, `aborted`.
|
|
111
111
|
|
|
112
|
+
## Workflow Definition
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
specify workflow definition <run_id> --json
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
| Option | Description |
|
|
119
|
+
| -------- | ---------------------------------------------------------------- |
|
|
120
|
+
| `--json` | Required. Emit the run's workflow definition as a JSON object |
|
|
121
|
+
|
|
122
|
+
Returns the workflow definition a run was **started with**, so an integration can render a run (for example the gates it declares and their messages) without drifting from what the engine actually executes. It reads only the run's own persisted data and never the installed workflow: editing or removing the installed workflow does not change the output. Runtime progress and the active gate come from [`specify workflow status --json`](#workflow-status).
|
|
123
|
+
|
|
124
|
+
Omitting `--json` exits with code `2` and prints a usage message on stderr; no stdout is produced. A text renderer is deferred, so the JSON shape below is the only contract.
|
|
125
|
+
|
|
126
|
+
```json
|
|
127
|
+
{
|
|
128
|
+
"run_id": "662bf791",
|
|
129
|
+
"definition": {
|
|
130
|
+
"schema_version": "1.0",
|
|
131
|
+
"workflow": { "id": "spec-review", "name": "Spec review", "version": "1.0.0" },
|
|
132
|
+
"steps": [
|
|
133
|
+
{ "id": "draft", "type": "command", "command": "speckit.specify" },
|
|
134
|
+
{ "id": "approve", "type": "gate", "message": "Review the specification." }
|
|
135
|
+
]
|
|
136
|
+
},
|
|
137
|
+
"workflow_scopes": []
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
- **`definition`** is the workflow as persisted for the run, verbatim and with overlays already applied, so it reflects the steps as executed. Every key is passed through (including `requires`, `outputs` and unknown keys). Nothing is added, renamed or filled in: an omitted field, such as a gate's `options`, means the engine default applies at run time. Expressions (`{{ ... }}`) are not evaluated. The structure follows the [workflow YAML schema](#workflow-yaml-schema), so `schema_version` is the version of this interface and a schema change is a change to it; because `definition` is emitted as authored, an omitted `schema_version` defaults to `"1.0"` and the engine compares `str(schema_version)` (so unquoted `schema_version: 1.0` in YAML appears as the JSON number `1.0`). Keys may be added to the top-level response envelope (`run_id`, `definition`, `workflow_scopes`) in future versions, but existing envelope keys are never removed or renamed.
|
|
142
|
+
- **Plain JSON.** YAML-native values that JSON cannot represent, such as an unquoted date, appear as strings. Binary values (`!!binary`) are not emitted: each appears as a `"<binary: N bytes>"` placeholder, and the value itself stays in the run's snapshot. A set (`!!set`) appears as a list sorted by its JSON form, so the output does not depend on hash randomization. Non-string mapping keys and non-finite numbers are stringified too. Two mapping keys that collapse to the same JSON property name (for example `1` and `"1"`) make the command fail rather than emit lossy JSON. JSON cannot share a reference, so a reused YAML alias (anchor) is duplicated; a recursive alias, or a non-recursive alias graph that expands past a fixed node or output-size budget, fails instead of consuming unbounded CPU, memory and stdout. The budget applies to each definition separately (the root and every entry in `workflow_scopes`), so a run with many bound workflow calls is not rejected for its total size. A separate, much larger limit (32 MiB) caps the whole response, so a loop or fan-out that repeats a large definition fails instead of multiplying it. A non-string mapping key longer than 256 characters once stringified is rejected for the same reason.
|
|
143
|
+
- **`workflow_scopes`** (always present) holds the frozen definition of every [workflow call](#workflow-composition) that has been reached, in execution order. Each entry is `{ "scope_path", "workflow_id", "definition" }`, with `scope_path` and `workflow_id` identical to the values in `status --json`. A call step inside `definition` stays as authored; the callee is never expanded in place. A call that has not been reached yet, or whose target could not be resolved, has no entry, and its definition is never read from the installed workflow. The list grows as calls are reached, and a call inside a loop or fan-out has one entry per iteration or item.
|
|
144
|
+
- **Not included: dynamically generated steps.** The output contains the authored root definition and the frozen definitions of bound workflow calls. Steps that a custom step type generates at run time through `StepResult.next_steps` are persisted in the run's execution state but are not exported, so a gate created that way has no definition in this output. The built-in `if`, `switch`, `while`, `do-while` and `fan-out` steps take their steps from the authored definition and are covered.
|
|
145
|
+
- **`scope_path`** is a list of strings from the root: the authored `id` of every enclosing step (`step-<index>` for a step without an `id`). Containers such as `if`, `switch`, loops and fan-out are elements; each loop iteration and fan-out item adds its index as a string, including the first (`["loop", "0", "call"]`). `workflow_scopes` is always present here, while `status --json` includes it only when the run has workflow calls.
|
|
146
|
+
|
|
147
|
+
### Matching a gate to its definition
|
|
148
|
+
|
|
149
|
+
`status --json` reports an active gate as `gate.step_id` and `gate.scope_path`. To find the gate's definition:
|
|
150
|
+
|
|
151
|
+
1. Read `gate.scope_path` as `[]` when it is missing: `status --json` omits it for a gate directly in the root workflow. Then take the `workflow_scopes` entry with the longest `scope_path` that is a prefix of `gate.scope_path`. If there is none, use the root `definition`. Do not require an exact match: `gate.scope_path` lists every enclosing step, including `if`, `switch`, loops and fan-out containers, while an entry's `scope_path` ends at the call step. A gate in an `if` named `wrap` inside a workflow called by `call`, itself in an `if` named `route`, reports `["route", "call", "wrap"]`, and its entry has `["route", "call"]`.
|
|
152
|
+
2. In that definition, find the step whose `id` equals the authored step ID. In later loop iterations and in fan-out items `step_id` is qualified as `<container>:<id>:<n>` (for example `fan:g:0`); the authored ID is the second-to-last `:`-separated segment, because `:` is not allowed in authored step IDs. Step IDs are unique within a definition except across fan-out templates, which have their own ID namespace: a root step and a fan-out template step may share an ID. If `gate.scope_path` runs through a fan-out step, look only inside that step's `step` template; otherwise ignore fan-out templates. For example, a root shell `g` and a gate `g` in the template of fan-out `fan` both exist, and `fan:g:0` with `scope_path` `["fan", "0"]` is the template's gate, not the root shell.
|
|
153
|
+
|
|
154
|
+
A gate generated at run time by a custom step has no definition to match; see the note on dynamically generated steps above.
|
|
155
|
+
|
|
156
|
+
`status --json` does not report per-step status for steps inside called workflows.
|
|
157
|
+
|
|
158
|
+
### Errors
|
|
159
|
+
|
|
160
|
+
Failures write a single `{"error": "<message>"}` object to stderr, leave stdout empty and exit with code `1`: not a Spec Kit project, an invalid `SPECIFY_INIT_DIR`, unsafe (including symlinked) workflow storage, an invalid or unknown run ID, an unreadable or too deeply nested run state, a run with no persisted definition (for example one created before definitions were persisted), a corrupt definition or execution state, a definition whose mapping keys collapse to the same JSON property name, and a definition with recursive or too-large-to-expand YAML aliases. Usage errors with `--json` also use this JSON error contract and exit with code `2`.
|
|
161
|
+
|
|
112
162
|
## List Installed Workflows
|
|
113
163
|
|
|
114
164
|
```bash
|
|
@@ -453,7 +503,7 @@ referents, so a pre-existing cache-file symlink can be replaced without changing
|
|
|
453
503
|
its target. If a cache cannot be safely written, a warning is logged and
|
|
454
504
|
discovery continues using the fetched catalog.
|
|
455
505
|
|
|
456
|
-
> **A project's `.specify/workflow-catalogs.yml` can point `add` and `search` at a catalog you didn't choose.** Before running a workflow from an unfamiliar project, run `specify workflow catalog list` (and `specify workflow step catalog list` for the step catalogs its steps can pull in) — a project supplying that config is not evidence its workflows or steps were vetted. Maintainers do not audit `run`
|
|
506
|
+
> **A project's `.specify/workflow-catalogs.yml` can point `add` and `search` at a catalog you didn't choose.** Before running a workflow from an unfamiliar project, run `specify workflow catalog list` (and `specify workflow step catalog list` for the step catalogs its steps can pull in) — a project supplying that config is not evidence its workflows or steps were vetted. Maintainers do not audit workflow code; review both `run` and `env` in its shell steps yourself, including strict steps (see [Reviewing shell execution](#reviewing-shell-execution) and [Who maintains workflows?](#who-maintains-workflows)).
|
|
457
507
|
|
|
458
508
|
### List Catalogs
|
|
459
509
|
|
|
@@ -496,7 +546,7 @@ Catalogs are resolved in this order (first match wins):
|
|
|
496
546
|
3. **User config** — `~/.specify/workflow-catalogs.yml`
|
|
497
547
|
4. **Built-in defaults** — official catalog + community catalog
|
|
498
548
|
|
|
499
|
-
## Workflow
|
|
549
|
+
## Workflow YAML Schema
|
|
500
550
|
|
|
501
551
|
Workflows are defined in YAML files. Here is the built-in **Full SDD Cycle** workflow that ships with Spec Kit:
|
|
502
552
|
|
|
@@ -782,6 +832,32 @@ qualified `step_id`. A step emits completion after its checkpoint; containers
|
|
|
782
832
|
emit before their children, while replayed completed occurrences emit no step
|
|
783
833
|
events.
|
|
784
834
|
|
|
835
|
+
### Shell step
|
|
836
|
+
|
|
837
|
+
`type: shell` executes `run` through the platform shell, retaining support for
|
|
838
|
+
pipes, redirects, and multiple commands. Set `strict: true` to reject `{{`
|
|
839
|
+
expression markers anywhere in `run`, including inside quotes. This is checked
|
|
840
|
+
both during validation and immediately before execution. `strict` must be a
|
|
841
|
+
boolean; omitted or `false` preserves existing raw interpolation behavior.
|
|
842
|
+
|
|
843
|
+
Use an `env` mapping to bind dynamic values without inserting them into shell
|
|
844
|
+
source. For example, on POSIX:
|
|
845
|
+
|
|
846
|
+
```yaml
|
|
847
|
+
- id: display-result
|
|
848
|
+
type: shell
|
|
849
|
+
strict: true
|
|
850
|
+
env:
|
|
851
|
+
RESULT: "{{ steps.plan.output.stdout }}"
|
|
852
|
+
run: 'printf "%s\n" "$RESULT"'
|
|
853
|
+
```
|
|
854
|
+
|
|
855
|
+
For cross-platform scripts, read the environment in the program itself, such
|
|
856
|
+
as `os.environ["RESULT"]` in Python. See
|
|
857
|
+
[Shell Step Environment Variables](#shell-step-environment-variables) for the
|
|
858
|
+
binding contract and [Interpolation and shell safety](#interpolation-and-shell-safety)
|
|
859
|
+
for the remaining trust boundary.
|
|
860
|
+
|
|
785
861
|
> **Security note:** a `shell` step runs a local command with **your** privileges. There is no capability sandbox — `requires` is an advisory pre-condition block (spec-kit version, integrations), not a runtime gate, so it does **not** restrict what a step can do. In particular there is no `requires.permissions` capability gate: it is rejected by validation precisely because it would imply a sandbox that does not exist. Review any catalog or downloaded workflow before running it, and use a `gate` step to require explicit approval before sensitive or destructive shell commands.
|
|
786
862
|
|
|
787
863
|
### GitHub step
|
|
@@ -1237,9 +1313,11 @@ If an interpolated value can contain characters like `;`, `|`, `&`, `$( )`, back
|
|
|
1237
1313
|
- **Workflow `inputs.*`** — supplied by whoever runs the workflow.
|
|
1238
1314
|
- **A prior step's output**, e.g. `{{ steps.plan.output.stdout }}` — for a `command` or `prompt` step with [`capture: true`](#capturing-command-and-prompt-output) this is **text produced by the AI agent**, which can in turn be influenced by files, tickets, or web content the agent read. Treat agent output as untrusted when it flows into a `shell` step.
|
|
1239
1315
|
|
|
1240
|
-
There is **no shell-escaping filter** in the expression language and **no sandbox** around a `shell` step
|
|
1316
|
+
There is **no shell-escaping filter** in the expression language and **no sandbox** around a `shell` step. Prefer [`strict: true`](#shell-step) with `env` bindings to keep dynamic values out of shell source. Strict mode does not sanitise data, inspect commands, or prevent an authored script from interpreting data as code. Do not use `eval`, build another `sh -c` command from a variable, or pass untrusted values through shell startup variables such as `BASH_ENV`. On Windows, `cmd.exe` expansion of `%VALUE%` can introduce shell syntax; read untrusted values inside a program instead. On POSIX, quote variable expansions and use the target program's argument validation or `--` where appropriate to prevent option injection.
|
|
1241
1317
|
|
|
1242
|
-
|
|
1318
|
+
For compatibility, raw interpolation remains enabled when `strict` is omitted or `false`. Its injection risk remains unchanged. Keep values you cannot constrain out of `run` fields entirely. Scrutinise every non-strict `run` field that interpolates a value you do not control, and at minimum:
|
|
1319
|
+
|
|
1320
|
+
- **Constrain the value at the source with `enum`/an allowlist.** When `inputs.*` feeds a non-strict `run` field, restrict it to a fixed set of known-safe values so a caller cannot supply arbitrary shell text at all.
|
|
1243
1321
|
|
|
1244
1322
|
```yaml
|
|
1245
1323
|
inputs:
|
|
@@ -1262,6 +1340,60 @@ Shell steps automatically receive the following environment variables:
|
|
|
1262
1340
|
| -------- | ----------- |
|
|
1263
1341
|
| `SPECKIT_WORKFLOW_DIR` | Resolved absolute path to the workflow source directory (same value as `{{ context.workflow_dir }}`). Not set when the workflow has no source path. |
|
|
1264
1342
|
|
|
1343
|
+
An optional per-step `env` mapping is available in both strict and non-strict
|
|
1344
|
+
mode. Names must match `[A-Za-z_][A-Za-z0-9_]*`; names are literal, not
|
|
1345
|
+
expressions. Values must be strings and may contain workflow expressions.
|
|
1346
|
+
Each value is evaluated once and must resolve to a string without NUL
|
|
1347
|
+
characters. On POSIX, the string must also be encodable for the process
|
|
1348
|
+
environment using the filesystem encoding and its error handler.
|
|
1349
|
+
Invalid bindings fail the step before launching a process.
|
|
1350
|
+
|
|
1351
|
+
Single-expression bindings preserve the expression's result type:
|
|
1352
|
+
`COUNT: "{{ inputs.count }}"` rejects a number, boolean, null, list, or mapping
|
|
1353
|
+
instead of converting it to text. Mixed templates use standard expression
|
|
1354
|
+
interpolation: `COUNT: "n={{ inputs.count }}"` produces `n=42` for integer
|
|
1355
|
+
`42`; embedded null becomes empty text, and other values use their string
|
|
1356
|
+
representation. To serialize structured data explicitly, use `to_json`.
|
|
1357
|
+
|
|
1358
|
+
Bindings override inherited environment values for that subprocess only;
|
|
1359
|
+
they do not modify the parent process or subsequent steps. An empty string is
|
|
1360
|
+
valid. `SPECKIT_WORKFLOW_DIR` is reserved (case-insensitively) and cannot be
|
|
1361
|
+
overridden. Keep environment names and executable-loading settings under the
|
|
1362
|
+
workflow author's control: environment binding is a data channel, not a sandbox.
|
|
1363
|
+
|
|
1364
|
+
### Reviewing shell execution
|
|
1365
|
+
|
|
1366
|
+
Before installing or running an unfamiliar workflow, audit each shell step's
|
|
1367
|
+
`run` **and** `env`, including nested branches and fan-out templates. Review
|
|
1368
|
+
referenced scripts and resources, called workflows, and active overlay YAML
|
|
1369
|
+
that can replace or insert steps. Apply the same review to workflow components
|
|
1370
|
+
of bundles, and repeat it when definitions, overlays, or referenced code change.
|
|
1371
|
+
Custom step packages require their own source review because loading them
|
|
1372
|
+
executes Python code.
|
|
1373
|
+
|
|
1374
|
+
An environment value can control execution rather than merely supply data.
|
|
1375
|
+
For example, `PATH` selects executables, `PYTHONPATH` affects Python imports,
|
|
1376
|
+
`BASH_ENV` can select Bash startup code, and `NODE_OPTIONS` can change Node.js
|
|
1377
|
+
startup behavior. Native loaders and other programs have their own settings;
|
|
1378
|
+
these examples are not an exhaustive list. A fixed `run` can therefore execute
|
|
1379
|
+
different code even with `strict: true` and no `eval`. Strict mode neither
|
|
1380
|
+
filters execution-controlling bindings nor cleans the inherited environment.
|
|
1381
|
+
Keep those settings literal and author-vetted, or constrain dynamic values to
|
|
1382
|
+
an approved set of trusted paths/options. Use unconstrained input or agent
|
|
1383
|
+
output only for application-data variables whose consumers handle it as data.
|
|
1384
|
+
|
|
1385
|
+
When a shell step invokes Specify itself, catalog overrides such as
|
|
1386
|
+
`SPECKIT_WORKFLOW_CATALOG_URL` can also change where child commands discover
|
|
1387
|
+
or install components. Vet those bindings alongside the
|
|
1388
|
+
[active catalog sources](catalogs.md#discovery-and-trust).
|
|
1389
|
+
|
|
1390
|
+
Workflow validation checks configuration, not whether environment settings or
|
|
1391
|
+
commands are safe. `specify workflow info` shows metadata and step identities;
|
|
1392
|
+
`specify workflow resolve` shows layer and step attribution. Neither displays
|
|
1393
|
+
the complete `run`/`env` configuration or replaces reading the contributing
|
|
1394
|
+
source files. Catalog install permission, bundle installation, and strict mode
|
|
1395
|
+
are not security endorsements.
|
|
1396
|
+
|
|
1265
1397
|
## Input Types
|
|
1266
1398
|
|
|
1267
1399
|
| Type | Coercion |
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
A five-stage assessment pipeline for Spec Kit that turns **any idea** into a defensible **go / needs-clarification / kill** decision *before* it enters Spec-Driven Development. It is the missing **discovery track** that sits in front of the SDD **delivery track** (`specify → clarify → plan → tasks → analyze → implement`).
|
|
4
4
|
|
|
5
|
-
Discovery answers *"is this worth building?"* Delivery answers *"how do we build it?"* Only ideas that survive assessment hand off to `/speckit
|
|
5
|
+
Discovery answers *"is this worth building?"* Delivery answers *"how do we build it?"* Only ideas that survive assessment hand off to `/speckit-specify`.
|
|
6
6
|
|
|
7
7
|
## Overview
|
|
8
8
|
|
|
@@ -12,11 +12,11 @@ Each idea lives in its own directory under `.specify/assessments/<slug>/`, with
|
|
|
12
12
|
|
|
13
13
|
```
|
|
14
14
|
.specify/assessments/<slug>/
|
|
15
|
-
├── intake.md # speckit
|
|
16
|
-
├── research.md # speckit
|
|
17
|
-
├── problem.md # speckit
|
|
18
|
-
├── concept.md # speckit
|
|
19
|
-
└── decision.md # speckit
|
|
15
|
+
├── intake.md # /speckit-assess-intake — capture the raw idea
|
|
16
|
+
├── research.md # /speckit-assess-research — gather (and challenge with) evidence
|
|
17
|
+
├── problem.md # /speckit-assess-define — define the problem, goals, metrics
|
|
18
|
+
├── concept.md # /speckit-assess-shape — shape solution options + appetite
|
|
19
|
+
└── decision.md # /speckit-assess-decide — go / needs-clarification / kill → handoff
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
The pipeline is a **funnel**: most ideas should be killed or parked before `shape`. Killing an idea with a documented reason is a successful outcome, not a failure.
|
|
@@ -24,7 +24,7 @@ The pipeline is a **funnel**: most ideas should be killed or parked before `shap
|
|
|
24
24
|
```mermaid
|
|
25
25
|
flowchart LR
|
|
26
26
|
A[intake] --> R[research] --> D[define] --> S[shape] --> C{decide}
|
|
27
|
-
C -->|go| SPEC[/speckit
|
|
27
|
+
C -->|go| SPEC[/"/speckit-specify"/]
|
|
28
28
|
C -->|kill| X[closed, recorded]
|
|
29
29
|
C -.->|needs-clarification| F[refine named artifact in place]
|
|
30
30
|
F -.->|then revise decision.md| C
|
|
@@ -32,13 +32,17 @@ flowchart LR
|
|
|
32
32
|
|
|
33
33
|
## Commands
|
|
34
34
|
|
|
35
|
+
Slash commands in this README use GitHub Copilot's default skills syntax.
|
|
36
|
+
For another agent, use its
|
|
37
|
+
[equivalent invocation syntax](https://github.github.io/spec-kit/integrations/cli.html#command-invocation).
|
|
38
|
+
|
|
35
39
|
| Command | Stage | Output |
|
|
36
40
|
|---------|-------|--------|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
|
|
|
41
|
+
| `/speckit-assess-intake` | Capture & normalize a raw idea (text, URL, ticket, or codebase pointer). | `intake.md` |
|
|
42
|
+
| `/speckit-assess-research` | Gather users/market/prior-art/data evidence — and evidence *against* the idea. | `research.md` |
|
|
43
|
+
| `/speckit-assess-define` | Define the problem: users, goals, non-goals, success metrics, cost of inaction. | `problem.md` |
|
|
44
|
+
| `/speckit-assess-shape` | Shape 2–3 concept-level options with appetite and trade-offs; recommend one (or none). | `concept.md` |
|
|
45
|
+
| `/speckit-assess-decide` | Score against criteria and render the verdict; hand `go` ideas to `/speckit-specify`. | `decision.md` |
|
|
42
46
|
|
|
43
47
|
Stages are meant to run in order but are not rigidly gated:
|
|
44
48
|
|
|
@@ -65,14 +69,14 @@ Then ask whether the new information clears the blocker and to update any downst
|
|
|
65
69
|
|
|
66
70
|
When you add evidence, keep the source and confidence tags the research stage already uses (`ASSUMPTION` vs cited claims). Do not invent citations.
|
|
67
71
|
|
|
68
|
-
Rerunning an earlier
|
|
72
|
+
Rerunning an earlier assessment command is the exception (for example after a wrong slug or a discarded draft), not the default path for answering clarification markers.
|
|
69
73
|
|
|
70
74
|
## Slug Conventions
|
|
71
75
|
|
|
72
76
|
A *slug* is the per-idea directory name under `.specify/assessments/`. It is the handle all five commands share.
|
|
73
77
|
|
|
74
78
|
- **User-provided**: normalized to lowercase kebab-case (e.g. `offline-mode`, `cut-onboarding-friction`). Preserved verbatim after normalization — no timestamps or numbers appended.
|
|
75
|
-
- **Asked for**: in interactive use,
|
|
79
|
+
- **Asked for**: in interactive use, `/speckit-assess-intake` asks for a slug when none is supplied, suggesting a kebab-case default derived from the idea.
|
|
76
80
|
- **Automated**: when no human is available, the agent generates a unique slug and never overwrites an existing assessment directory (appending `-2`, `-3`, … or a short date as needed).
|
|
77
81
|
- **Reuse from context**: later stages reuse the slug reported earlier in the same session, confirmed by the presence of the assessment directory.
|
|
78
82
|
|
|
@@ -91,31 +95,37 @@ specify extension enable assess
|
|
|
91
95
|
|
|
92
96
|
## Typical Flow
|
|
93
97
|
|
|
94
|
-
|
|
98
|
+
Run these skills in your agent's chat, not your terminal, one at a time,
|
|
99
|
+
reviewing each result before continuing.
|
|
100
|
+
|
|
101
|
+
This example uses GitHub Copilot's default skills syntax. For another agent,
|
|
102
|
+
use its [equivalent invocation syntax](https://github.github.io/spec-kit/integrations/cli.html#command-invocation).
|
|
103
|
+
|
|
104
|
+
```text
|
|
95
105
|
# 1. Capture an idea (pasted text, a URL, or "assess this repo")
|
|
96
|
-
/speckit
|
|
106
|
+
/speckit-assess-intake "Let users work offline and sync when they reconnect" slug=offline-mode
|
|
97
107
|
|
|
98
108
|
# 2. Gather evidence — and reasons it might not be worth it
|
|
99
|
-
/speckit
|
|
109
|
+
/speckit-assess-research slug=offline-mode
|
|
100
110
|
|
|
101
111
|
# 3. Define the actual problem
|
|
102
|
-
/speckit
|
|
112
|
+
/speckit-assess-define slug=offline-mode
|
|
103
113
|
|
|
104
114
|
# 4. Shape 2–3 concept options with appetites
|
|
105
|
-
/speckit
|
|
115
|
+
/speckit-assess-shape slug=offline-mode
|
|
106
116
|
|
|
107
117
|
# 5. Decide — go, clarify, or kill
|
|
108
|
-
/speckit
|
|
109
|
-
# → on "go",
|
|
118
|
+
/speckit-assess-decide slug=offline-mode
|
|
119
|
+
# → on "go", optionally pass the decision.md handoff summary to /speckit-specify
|
|
110
120
|
```
|
|
111
121
|
|
|
112
122
|
## Handoff
|
|
113
123
|
|
|
114
|
-
`assess` is a **standalone pipeline you enter deliberately** — it registers no lifecycle hooks and never inserts itself into `/speckit
|
|
124
|
+
`assess` is a **standalone pipeline you enter deliberately** — it registers no lifecycle hooks and never inserts itself into `/speckit-specify`. The only coupling runs forward and by choice: a `go` verdict from `/speckit-assess-decide` hands its `decision.md` summary to `/speckit-specify`. Discovery and specification stay separate processes.
|
|
115
125
|
|
|
116
126
|
## Guardrails
|
|
117
127
|
|
|
118
|
-
- Only
|
|
128
|
+
- Only the five assessment commands write, and only inside `.specify/assessments/<slug>/`. **None of them modify source code** — solution design and implementation belong to the SDD lifecycle (`/speckit-specify` onward).
|
|
119
129
|
- Web content fetched during `intake`/`research` is treated as untrusted data, governed by an explicit URL Trust Policy (allowlisted public sources fetched freely; unknown hosts prompted or skipped; loopback/RFC1918/metadata endpoints refused).
|
|
120
130
|
- Evidence is never over-claimed: unsourced statements are tagged `ASSUMPTION`, and `research.md` always includes an *Evidence Against the Idea* section.
|
|
121
131
|
- Verdicts are never over-claimed: a `go` requires a valid problem, `adequate`+ evidence (never weak/unknown), and a shaped concept; otherwise the honest verdict is `needs-clarification`.
|
|
@@ -124,4 +134,4 @@ specify extension enable assess
|
|
|
124
134
|
|
|
125
135
|
## Relationship to Other Extensions
|
|
126
136
|
|
|
127
|
-
`assess` is deliberately the **generic, role-neutral** discovery track — usable by a founder, PM, BA, engineer, or designer. Richer or more specialized pre-SDD flows in the community catalog (e.g. product-lifecycle orchestrators, technical-discovery, intake-normalization, brownfield onboarding) can layer on top of or feed into it; `assess` aims to be the minimal, opinionated funnel that ends cleanly at the `/speckit
|
|
137
|
+
`assess` is deliberately the **generic, role-neutral** discovery track — usable by a founder, PM, BA, engineer, or designer. Richer or more specialized pre-SDD flows in the community catalog (e.g. product-lifecycle orchestrators, technical-discovery, intake-normalization, brownfield onboarding) can layer on top of or feed into it; `assess` aims to be the minimal, opinionated funnel that ends cleanly at the `/speckit-specify` handoff.
|
|
@@ -3,7 +3,7 @@ schema_version: "1.0"
|
|
|
3
3
|
extension:
|
|
4
4
|
id: assess
|
|
5
5
|
name: "Idea Assessment Pipeline"
|
|
6
|
-
version: "1.0.
|
|
6
|
+
version: "1.0.2"
|
|
7
7
|
description: "Assess an idea before Spec-Driven Development via intake, research, define, shape, and decide. A go verdict hands off to /speckit.specify; a kill closes it. Lives under .specify/assessments/<slug>/"
|
|
8
8
|
category: "process"
|
|
9
9
|
effect: "read-write"
|
|
@@ -99,4 +99,4 @@ hooks:
|
|
|
99
99
|
description: Collect evidence in the resolved bug directory
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
-
Mandatory hooks are invoked and awaited; optional hooks are presented for the user to run. Disabled hooks and hooks with non-empty conditions are skipped by the command templates. With no registered hooks, the workflow proceeds as before. See the [Extension API Reference](
|
|
102
|
+
Mandatory hooks are invoked and awaited; optional hooks are presented for the user to run. Disabled hooks and hooks with non-empty conditions are skipped by the command templates. With no registered hooks, the workflow proceeds as before. See the [Extension API Reference](https://github.github.io/spec-kit/extensions/api.html#hook-events) for the shared hook contract.
|
|
@@ -3,7 +3,7 @@ schema_version: "1.0"
|
|
|
3
3
|
extension:
|
|
4
4
|
id: bug
|
|
5
5
|
name: "Bug Triage Workflow"
|
|
6
|
-
version: "1.0.
|
|
6
|
+
version: "1.0.2"
|
|
7
7
|
description: "Assess, fix, and validate bug reports against the codebase with per-bug reports stored under .specify/bugs/<slug>/"
|
|
8
8
|
author: spec-kit-core
|
|
9
9
|
repository: https://github.com/github/spec-kit
|