specify-cli 0.13.2__tar.gz → 0.13.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- specify_cli-0.13.3/.github/scripts/check_security_requirements.py +115 -0
- specify_cli-0.13.3/.github/security-audit-requirements.txt +253 -0
- specify_cli-0.13.3/.github/workflows/security.yml +78 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/CHANGELOG.md +20 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/CONTRIBUTING.md +21 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/PKG-INFO +1 -1
- specify_cli-0.13.3/bundles/catalog.community.json +35 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/community/bundles.md +1 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/community/extensions.md +1 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/community/presets.md +3 -1
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/reference/extensions.md +3 -1
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +35 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/catalog.community.json +34 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/catalog.community.json +71 -11
- {specify_cli-0.13.2 → specify_cli-0.13.3}/pyproject.toml +1 -1
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/_helpers.py +3 -2
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/catalog.py +26 -2
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/engine.py +54 -2
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/steps/command/__init__.py +59 -4
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/steps/fan_out/__init__.py +4 -3
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/steps/prompt/__init__.py +59 -4
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_subcommand.py +24 -0
- specify_cli-0.13.3/tests/test_security_workflow.py +349 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_workflows.py +338 -2
- specify_cli-0.13.3/workflows/catalog.community.json +27 -0
- specify_cli-0.13.2/bundles/catalog.community.json +0 -6
- specify_cli-0.13.2/workflows/catalog.community.json +0 -6
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.devcontainer/devcontainer.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.devcontainer/post-create.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.editorconfig +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.gitattributes +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/CODEOWNERS +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/ISSUE_TEMPLATE/agent_request.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/ISSUE_TEMPLATE/bundle_submission.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/ISSUE_TEMPLATE/preset_submission.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/aw/actions-lock.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/dependabot.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/skills/add-community-extension/SKILL.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/RELEASE-PROCESS.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/add-community-bundle.lock.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/add-community-bundle.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/add-community-extension.lock.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/add-community-extension.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/add-community-preset.lock.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/add-community-preset.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/bug-assess.lock.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/bug-assess.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/bug-fix.lock.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/bug-fix.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/bug-test.lock.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/bug-test.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/catalog-assign.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/codeql.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/docs.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/lint.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/publish-pypi.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/release-trigger.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/release.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/stale.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.github/workflows/test.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.gitignore +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.markdownlint-cli2.jsonc +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.pre-commit-config.yaml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/.zenodo.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/AGENTS.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/CITATION.cff +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/CODE_OF_CONDUCT.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/DEVELOPMENT.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/LICENSE +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/SECURITY.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/SUPPORT.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/.gitignore +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/community/friends.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/community/overview.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/community/walkthroughs.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/concepts/complex-features.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/concepts/sdd.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/concepts/spec-persistence.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/docfx.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/guides/evolving-specs.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/guides/monorepo.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/index.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/install/air-gapped.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/install/one-time.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/install/pipx.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/install/pypi.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/install/uv.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/installation.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/local-development.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/quickstart.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/reference/agentic-bugfix.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/reference/agentic-sdd.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/reference/authentication.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/reference/bundles.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/reference/core.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/reference/integrations.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/reference/overview.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/reference/presets.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/reference/workflows.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/template/public/main.css +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/toc.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/docs/upgrade.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/examples/bundles/business-analyst/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/examples/bundles/business-analyst/bundle.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/examples/bundles/developer/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/examples/bundles/developer/bundle.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/examples/bundles/product-manager/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/examples/bundles/product-manager/bundle.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/examples/bundles/security-researcher/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/examples/bundles/security-researcher/bundle.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/EXTENSION-API-REFERENCE.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/EXTENSION-PUBLISHING-GUIDE.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/EXTENSION-USER-GUIDE.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/agent-context/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/agent-context/agent-context-config.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/agent-context/agent-context-defaults.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/agent-context/extension.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/agent-context/scripts/bash/update-agent-context.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/agent-context/scripts/python/update_agent_context.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/assess/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/assess/commands/speckit.assess.decide.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/assess/commands/speckit.assess.define.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/assess/commands/speckit.assess.intake.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/assess/commands/speckit.assess.research.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/assess/commands/speckit.assess.shape.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/assess/extension.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/bug/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/bug/commands/speckit.bug.assess.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/bug/commands/speckit.bug.fix.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/bug/commands/speckit.bug.test.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/bug/extension.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/catalog.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/commands/speckit.git.commit.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/commands/speckit.git.feature.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/commands/speckit.git.initialize.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/commands/speckit.git.remote.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/commands/speckit.git.validate.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/config-template.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/extension.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/git-config.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/scripts/bash/auto-commit.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/scripts/bash/git-common.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/scripts/python/auto_commit.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/scripts/python/create_new_feature_branch.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/scripts/python/git_common.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/git/scripts/python/initialize_repo.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/selftest/commands/selftest.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/selftest/extension.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/template/.gitignore +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/template/CHANGELOG.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/template/EXAMPLE-README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/template/LICENSE +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/template/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/template/commands/example.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/template/config-template.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/extensions/template/extension.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/integrations/CONTRIBUTING.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/integrations/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/integrations/catalog.community.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/integrations/catalog.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/media/bootstrap-claude-code.gif +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/media/logo_large.webp +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/media/logo_small.webp +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/media/spec-kit-video-header.jpg +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/media/specify_cli.gif +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/newsletters/2026-April.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/newsletters/2026-February.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/newsletters/2026-June.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/newsletters/2026-March.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/newsletters/2026-May.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/ARCHITECTURE.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/PUBLISHING.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/catalog.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/lean/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/lean/commands/speckit.constitution.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/lean/commands/speckit.implement.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/lean/commands/speckit.plan.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/lean/commands/speckit.specify.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/lean/commands/speckit.tasks.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/lean/preset.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/scaffold/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/scaffold/commands/speckit.specify.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/scaffold/preset.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/scaffold/templates/myext-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/scaffold/templates/spec-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/self-test/commands/speckit.specify.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/self-test/commands/speckit.wrap-test.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/self-test/preset.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/self-test/templates/checklist-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/self-test/templates/constitution-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/self-test/templates/plan-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/self-test/templates/spec-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/presets/self-test/templates/tasks-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/scripts/bash/check-prerequisites.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/scripts/bash/common.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/scripts/bash/create-new-feature.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/scripts/bash/setup-plan.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/scripts/bash/setup-tasks.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/scripts/powershell/check-prerequisites.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/scripts/powershell/common.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/scripts/powershell/create-new-feature.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/scripts/powershell/setup-plan.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/scripts/powershell/setup-tasks.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/scripts/python/check_prerequisites.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/scripts/python/common.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/scripts/python/create_new_feature.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/scripts/python/setup_plan.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/scripts/python/setup_tasks.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/spec-driven.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/spec-kit.code-workspace +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/_agent_config.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/_assets.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/_console.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/_github_http.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/_init_options.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/_invocation_style.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/_project.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/_toml_string.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/_utils.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/_version.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/agents.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/authentication/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/authentication/azure_devops.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/authentication/base.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/authentication/config.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/authentication/github.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/authentication/http.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/commands_impl/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/commands_impl/catalog_config.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/lib/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/lib/project.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/lib/versioning.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/lib/yamlio.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/models/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/models/catalog.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/models/manifest.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/models/records.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/services/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/services/adapters.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/services/catalog_stack.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/services/conflict.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/services/installer.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/services/packager.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/services/primitives.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/services/references.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/services/resolver.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/bundler/services/validator.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/catalogs.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/commands/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/commands/bundle/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/commands/init.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/extensions/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/extensions/_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integration_runtime.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integration_scaffold.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integration_state.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integration_status.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/_install_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/_migrate_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/_query_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/_scaffold_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/agy/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/amp/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/auggie/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/base.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/bob/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/catalog.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/claude/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/cline/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/codex/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/copilot/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/devin/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/firebender/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/forge/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/gemini/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/generic/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/goose/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/grok/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/hermes/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/junie/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/kilocode/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/kimi/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/lingma/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/manifest.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/omp/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/opencode/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/pi/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/qwen/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/rovodev/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/shai/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/trae/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/vibe/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/zcode/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/integrations/zed/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/presets/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/presets/_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/shared_infra.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/base.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/expressions.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/overlays/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/overlays/_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/overlays/composer.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/overlays/layer_sources.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/overlays/merge.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/overlays/schema.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/steps/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/steps/do_while/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/steps/fan_in/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/steps/gate/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/steps/if_then/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/steps/init/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/steps/shell/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/steps/switch/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/src/specify_cli/workflows/steps/while_loop/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/templates/checklist-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/templates/commands/analyze.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/templates/commands/checklist.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/templates/commands/clarify.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/templates/commands/constitution.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/templates/commands/converge.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/templates/commands/implement.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/templates/commands/plan.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/templates/commands/specify.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/templates/commands/tasks.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/templates/commands/taskstoissues.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/templates/constitution-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/templates/plan-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/templates/spec-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/templates/tasks-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/templates/vscode-settings.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/auth_helpers.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/bundler_helpers.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/conftest.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/contract/test_bundle_cli.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/contract/test_catalog_schema.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/contract/test_manifest_schema.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/extensions/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/extensions/assess/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/extensions/assess/test_assess_extension.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/extensions/bug/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/extensions/bug/test_bug_extension.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/extensions/git/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/extensions/git/test_git_extension.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/extensions/git/test_git_extension_python_parity.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/extensions/test_agent_context_cli_free.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/extensions/test_extension_agent_context.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/extensions/test_update_agent_context_feature_json.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/extensions/test_update_agent_context_python_parity.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/hooks/TESTING.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/hooks/plan.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/hooks/spec.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/hooks/tasks.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/http_helpers.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integration/test_bundler_catalog_stack.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integration/test_bundler_init_install.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integration/test_bundler_install_flow.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integration/test_bundler_local_install.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integration/test_bundler_offline.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integration/test_bundler_security_paths.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/conftest.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_base.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_cli.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_extra_args.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_home_isolation.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_agy.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_amp.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_auggie.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_base_markdown.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_base_skills.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_base_toml.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_base_yaml.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_bob.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_catalog.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_claude.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_cline.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_codebuddy.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_codex.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_copilot.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_cursor_agent.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_devin.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_firebender.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_forge.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_gemini.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_generic.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_goose.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_grok.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_hermes.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_junie.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_kilocode.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_kimi.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_kiro_cli.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_lingma.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_omp.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_opencode.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_pi.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_qodercli.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_qwen.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_rovodev.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_scaffold.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_shai.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_state.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_tabnine.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_trae.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_vibe.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_zcode.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_integration_zed.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_manifest.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_registry.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/integrations/test_skill_frontmatter_quoting.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/parity_helpers.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/self_upgrade_helpers.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_agent_config_consistency.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_authentication.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_branch_numbering.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_check_prerequisites_paths_only.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_check_prerequisites_python_parity.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_check_tool.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_cli_version.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_command_template_py_scripts.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_commands_package.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_console_imports.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_create_new_feature_python_parity.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_extension_registration.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_extension_skills.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_extension_update_hardening.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_extensions.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_github_http.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_github_workflows.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_init_dir.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_init_dir_cli.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_live_transient_windows.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_merge.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_post_process.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_presets.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_ps1_encoding.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_registrar_path_traversal.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_self_upgrade_detection.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_self_upgrade_execution.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_self_upgrade_guidance.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_self_upgrade_verification.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_setup_plan_feature_json.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_setup_plan_no_overwrite.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_setup_plan_python_parity.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_setup_tasks.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_setup_tasks_python_parity.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_shared_infra_integrity.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_skill_placeholder_py.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_timestamp_branches.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_upgrade.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_utils.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_utils_assets_imports.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_version_imports.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/test_workflow_run_without_project.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/unit/test_bundle_download_url.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/unit/test_bundler_adapters.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/unit/test_bundler_catalog_config.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/unit/test_bundler_conflict.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/unit/test_bundler_packager.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/unit/test_bundler_primitives.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/unit/test_bundler_records.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/unit/test_bundler_references.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/unit/test_bundler_resolver.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/unit/test_bundler_validator.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/unit/test_bundler_versioning.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/workflows/conftest.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/workflows/test_overlay_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/workflows/test_overlay_composer.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/workflows/test_overlay_layer_sources.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/workflows/test_overlay_merge.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/workflows/test_overlay_schema.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/workflows/test_overlay_security.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/tests/workflows/test_resolver_integration.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/workflows/ARCHITECTURE.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/workflows/PUBLISHING.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/workflows/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/workflows/catalog.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/workflows/speckit/workflow.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/workflows/step-catalog.community.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.3}/workflows/step-catalog.json +0 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"""Check that committed security audit requirements are up to date."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
import subprocess
|
|
7
|
+
import sys
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
REPO_ROOT = Path(__file__).resolve().parents[2]
|
|
12
|
+
COMMITTED_REQUIREMENTS = REPO_ROOT / ".github" / "security-audit-requirements.txt"
|
|
13
|
+
DEPENDENCY_INPUTS = ("pyproject.toml", ".github/security-audit-requirements.txt")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def _dependency_diff_refs() -> tuple[str, str]:
|
|
17
|
+
base_ref = os.environ.get("DEPENDENCY_DIFF_BASE", "").strip()
|
|
18
|
+
head_ref = os.environ.get("DEPENDENCY_DIFF_HEAD", "").strip() or "HEAD"
|
|
19
|
+
if base_ref and not set(base_ref) <= {"0"}:
|
|
20
|
+
return base_ref, head_ref
|
|
21
|
+
# Fallback when no usable base is supplied (push with an all-zero
|
|
22
|
+
# ``github.event.before``, manual dispatch, etc.). ``HEAD^`` fails on a
|
|
23
|
+
# shallow checkout or a single-commit repo; that ``git diff`` error is
|
|
24
|
+
# caught by the caller and deliberately treated as "inputs changed" so the
|
|
25
|
+
# audit runs anyway — failing safe (audit) rather than skipping silently.
|
|
26
|
+
return "HEAD^", "HEAD"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _dependency_inputs_changed() -> bool:
|
|
30
|
+
base_ref, head_ref = _dependency_diff_refs()
|
|
31
|
+
try:
|
|
32
|
+
result = subprocess.run(
|
|
33
|
+
[
|
|
34
|
+
"git",
|
|
35
|
+
"diff",
|
|
36
|
+
"--name-only",
|
|
37
|
+
base_ref,
|
|
38
|
+
head_ref,
|
|
39
|
+
"--",
|
|
40
|
+
*DEPENDENCY_INPUTS,
|
|
41
|
+
],
|
|
42
|
+
check=True,
|
|
43
|
+
cwd=REPO_ROOT,
|
|
44
|
+
stderr=subprocess.PIPE,
|
|
45
|
+
stdout=subprocess.PIPE,
|
|
46
|
+
text=True,
|
|
47
|
+
)
|
|
48
|
+
except subprocess.CalledProcessError as exc:
|
|
49
|
+
print(
|
|
50
|
+
"Could not determine changed dependency inputs; checking requirements.",
|
|
51
|
+
file=sys.stderr,
|
|
52
|
+
)
|
|
53
|
+
if exc.stderr:
|
|
54
|
+
print(exc.stderr.strip(), file=sys.stderr)
|
|
55
|
+
return True
|
|
56
|
+
|
|
57
|
+
changed_inputs = [line for line in result.stdout.splitlines() if line]
|
|
58
|
+
if not changed_inputs:
|
|
59
|
+
print("Dependency audit inputs unchanged; sync check skipped.")
|
|
60
|
+
return False
|
|
61
|
+
|
|
62
|
+
print(f"Dependency audit inputs changed: {', '.join(changed_inputs)}")
|
|
63
|
+
return True
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def main() -> int:
|
|
67
|
+
if not _dependency_inputs_changed():
|
|
68
|
+
return 0
|
|
69
|
+
|
|
70
|
+
generated_requirements_env = os.environ.get("GENERATED_REQUIREMENTS", "").strip()
|
|
71
|
+
if not generated_requirements_env:
|
|
72
|
+
print(
|
|
73
|
+
"GENERATED_REQUIREMENTS must be set to the temporary output file path.",
|
|
74
|
+
file=sys.stderr,
|
|
75
|
+
)
|
|
76
|
+
return 1
|
|
77
|
+
|
|
78
|
+
generated_requirements = Path(generated_requirements_env)
|
|
79
|
+
generated_requirements.parent.mkdir(parents=True, exist_ok=True)
|
|
80
|
+
|
|
81
|
+
subprocess.run(
|
|
82
|
+
[
|
|
83
|
+
"uv",
|
|
84
|
+
"pip",
|
|
85
|
+
"compile",
|
|
86
|
+
"pyproject.toml",
|
|
87
|
+
"--extra",
|
|
88
|
+
"test",
|
|
89
|
+
"--universal",
|
|
90
|
+
"--upgrade",
|
|
91
|
+
"--generate-hashes",
|
|
92
|
+
"--quiet",
|
|
93
|
+
"--no-header",
|
|
94
|
+
"--output-file",
|
|
95
|
+
str(generated_requirements),
|
|
96
|
+
],
|
|
97
|
+
check=True,
|
|
98
|
+
cwd=REPO_ROOT,
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
committed = COMMITTED_REQUIREMENTS.read_text(encoding="utf-8")
|
|
102
|
+
generated = generated_requirements.read_text(encoding="utf-8")
|
|
103
|
+
if committed == generated:
|
|
104
|
+
return 0
|
|
105
|
+
|
|
106
|
+
print(
|
|
107
|
+
"Regenerate .github/security-audit-requirements.txt with the documented "
|
|
108
|
+
"uv pip compile command.",
|
|
109
|
+
file=sys.stderr,
|
|
110
|
+
)
|
|
111
|
+
return 1
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
if __name__ == "__main__":
|
|
115
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
annotated-doc==0.0.4 \
|
|
2
|
+
--hash=sha256:571ac1dc6991c450b25a9c2d84a3705e2ae7a53467b5d111c24fa8baabbed320 \
|
|
3
|
+
--hash=sha256:fbcda96e87e9c92ad167c2e53839e57503ecfda18804ea28102353485033faa4
|
|
4
|
+
# via typer
|
|
5
|
+
click==8.4.2 \
|
|
6
|
+
--hash=sha256:9a6cea6e60b17ebe0a44c5cc636d94f09bd66142c1cd7d8b4cd731c4917a15f6 \
|
|
7
|
+
--hash=sha256:e6f9f66136c816745b9d65817da91d61d957fb16e02e4dcd0552553c5a197b76
|
|
8
|
+
# via specify-cli (pyproject.toml)
|
|
9
|
+
colorama==0.4.6 ; sys_platform == 'win32' \
|
|
10
|
+
--hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
|
|
11
|
+
--hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
|
|
12
|
+
# via
|
|
13
|
+
# click
|
|
14
|
+
# pytest
|
|
15
|
+
# typer
|
|
16
|
+
coverage==7.15.2 \
|
|
17
|
+
--hash=sha256:075560438765b7a2ef43bf7aa7758661b53d889df47f062a31bda6c1ade553a2 \
|
|
18
|
+
--hash=sha256:0901cfe6c13bcd2302da4f83e884555d2a22bda6e4c476f09ef204ba20ca536e \
|
|
19
|
+
--hash=sha256:094dd37f3ef7b2da8b068b583d1f4c40f91c65197e16c52a71962d5d537fc5db \
|
|
20
|
+
--hash=sha256:09f5c6ec5901f667bd97dd140b5b9a2586b10efec66f46fb1e6d8135f8b95bdf \
|
|
21
|
+
--hash=sha256:0e55510bc98ae943cece9e667a6c0fe94c6a92913720dea34243657a17993d0c \
|
|
22
|
+
--hash=sha256:1121caa19159a38b5463eaae4b1e1fde81e525b15ecc5e000cd5b1a108f743a8 \
|
|
23
|
+
--hash=sha256:1268ac8fb9ddcd783d3948dbabaf80a5d53bfdaa0575e873e2139a692f797443 \
|
|
24
|
+
--hash=sha256:1473b3ba8e7ee0f076117b1a72c23f579a2b9e2bb742f48a8d86ea27ca93f91a \
|
|
25
|
+
--hash=sha256:17c432b5f73ad52ef46fb06019f6fa7c66ce381961cf0f7dfd1d3a4bd3a98145 \
|
|
26
|
+
--hash=sha256:1adac78e5abc7c5438f7a209c9ca69d06542f0bf481d728b6989ea80b813fdf9 \
|
|
27
|
+
--hash=sha256:1cd7a5beb7af3e864a13b1f0fb26efd3695da43ef0daf71e586adfffaf34d5b2 \
|
|
28
|
+
--hash=sha256:1d16e3a7104ea84f03e614611b3edbf6fb6892554b3ab0fe7fbb3f2b2ef04376 \
|
|
29
|
+
--hash=sha256:25fd15dd40a0a2c51a500d664ca29053c09c3259d998407bf982b6e114696138 \
|
|
30
|
+
--hash=sha256:2617f8799d268fabdeef42a7e89ac3a23e1deee9025427db2df970f99a89a578 \
|
|
31
|
+
--hash=sha256:26c3b04a6377fd7c09800921fa934e3a17c0020439cd59df73e73ae1d4b6a78c \
|
|
32
|
+
--hash=sha256:29c052f7c83ccfcc5c577eaae025d2e4a9bb80daf03c0ac31c996e83b000ce88 \
|
|
33
|
+
--hash=sha256:2f1ec6f304b156669cfde653b4e9a953f5de87e247ea02ac599bce0ab2744036 \
|
|
34
|
+
--hash=sha256:2fbeeeecea279727f8ac16c8e1133ddfeee793e985c86ae343d6a5ce744eef8c \
|
|
35
|
+
--hash=sha256:2ff08701be2d1556fc78b326c80a3e8042da09352ecb3819105f8e386c8a3071 \
|
|
36
|
+
--hash=sha256:38c9518b7103826c403a461544e3c2e77151e8676d06eaed85911a97e962584a \
|
|
37
|
+
--hash=sha256:3df60dc267f0a2ca23cb7a9ab1109c62b9335ffbf519fcfe167157c28c09b81d \
|
|
38
|
+
--hash=sha256:3ed010aa1b69cda8e827aabfca9866216c980e2dca82ab9a78c5f83689964c8b \
|
|
39
|
+
--hash=sha256:40f633c5c5fc783732f6312280122e859538fa24461235597c13d803ea9a108a \
|
|
40
|
+
--hash=sha256:42ec3d989421b174a2ab607c1539f24127ad362757b7f1c0c0d7a2993f7eb37b \
|
|
41
|
+
--hash=sha256:434e68d531858205895eb0d74b73d20b84260de426387d53c422a5acda2cf050 \
|
|
42
|
+
--hash=sha256:44826758cfe73fcd0e6af5deb4ba6d5417cc1d13df3acb35c93484a11160f846 \
|
|
43
|
+
--hash=sha256:4510fb9cdf6bb02dfa6af0be4a534b8102d086e22e4a33f8836df663da3d660d \
|
|
44
|
+
--hash=sha256:48ccc6395958eda89093ecdc35644c86f23a8b23a7f4d44958812b721aad67c1 \
|
|
45
|
+
--hash=sha256:4d3361879d736f469f45723c11ea1a5bbdaf1f6928f0e632c940378b5aa9b660 \
|
|
46
|
+
--hash=sha256:582edc45c2040543fef83341be23c43024a3ab3ae0c2d8bc498a06282905ad40 \
|
|
47
|
+
--hash=sha256:63022c4c8dec1d0342f05c3ede99842fe3d007689acc45e86f123a1746e4a026 \
|
|
48
|
+
--hash=sha256:67d7602480a47bdf5b675635403625553ebaa70d5a62a657c035149fd401cea0 \
|
|
49
|
+
--hash=sha256:68af907f595ab01a78f794932ff3bdf929c316d3000810d38dbc247129e26f8b \
|
|
50
|
+
--hash=sha256:6aa28cfb6488e5453b5b762d65f73aa586380f6693a04d58078ce228a29b06c0 \
|
|
51
|
+
--hash=sha256:6c0be82b4d4aa5b2704e08518e2252f3e3d110164bcca826816801052e48a7aa \
|
|
52
|
+
--hash=sha256:6f6966fc30e6f06ca8f98fb0ce51eda6b111b3ee8d066a8b1ec9e77fa06ab55d \
|
|
53
|
+
--hash=sha256:6fc448c377d6eeb00a47c673494bd9bae29280ca53987e1869e67ebedfe20658 \
|
|
54
|
+
--hash=sha256:728a33676d4c3f0db977990a4bd421dcaa3be3e53b5b6273036fff6666008e89 \
|
|
55
|
+
--hash=sha256:7466cc7ab6dc0db871d264bf99e8779f0917ee63d40730af0552f71535a6e072 \
|
|
56
|
+
--hash=sha256:77f091ea3a9cc611cd29f433565476bc1936c084ac8eee00ea0e7e70c27e4199 \
|
|
57
|
+
--hash=sha256:77f0ef5011df53a4bd1b35211ab122287f8d9b8d7aa1c4553e5c2deb24b1d446 \
|
|
58
|
+
--hash=sha256:7c63387e21ab21f512c69c9756a8c7dadd322c7275edb064064433c9a09c3743 \
|
|
59
|
+
--hash=sha256:7d29ca7bd67af6e12e74632d65f026eabc1364da5c254494cd914446a28a3ef7 \
|
|
60
|
+
--hash=sha256:7dc2950a2992cd676d35c20ae63522836deeb034f08874699d14068710af3dc1 \
|
|
61
|
+
--hash=sha256:7e8f27131dc7cd53de2c137dd207b3720919320b3c20d499dc30aa9ee6173287 \
|
|
62
|
+
--hash=sha256:81f382c5a94b434ec1f6da607edb904c76d7212e618cd4d1bc9f97bed4120ef5 \
|
|
63
|
+
--hash=sha256:835ec4e20b45f0a7f63ed78f94065aca00de033403df8377bfe8b9c6abc0a7be \
|
|
64
|
+
--hash=sha256:8bb9f4b4279187560796a4cdaca3b0a93dd97e48ee667df005f4ed9a97403688 \
|
|
65
|
+
--hash=sha256:8c726b232659cbd2ae57ade46509eb068c9bd7a06df9fcbff6fe484870006934 \
|
|
66
|
+
--hash=sha256:913b6c56e110da40e035bbd168353bf7aaa2544a5eaccea5d98a4629aac156c7 \
|
|
67
|
+
--hash=sha256:97a5c5457a9fb1d6c4e06cfb5dc835871fbfb6a6a51addc9e925bdeff5ef7440 \
|
|
68
|
+
--hash=sha256:9854ca62c152874b2060772503535be2e8f53f70b8aaa7686b094888d872f984 \
|
|
69
|
+
--hash=sha256:9911f31aad8906abe337c271343485cf20df5e70df5d2f57f9f136e7b55f26bc \
|
|
70
|
+
--hash=sha256:9b5bd92ff1ec22e535eab0de75fa6db021992791f461a2aceb7822c625a1187d \
|
|
71
|
+
--hash=sha256:9deddf09eecb717b7f980414b43d90a5b22ff3967d2949ab29cb0aa83d9e9098 \
|
|
72
|
+
--hash=sha256:9e36686f7a442185db2400b3df171aac520869faf9deb59df687d28659eda2a6 \
|
|
73
|
+
--hash=sha256:9f4432898c4bf2fba0435bbe35dd4437d7264565e5a88a21f5b49d8662a6b629 \
|
|
74
|
+
--hash=sha256:a0f47002c6eeb7c280228467a4cb0cc15ca2103a8421b986b2d3ec04a0f9bd8b \
|
|
75
|
+
--hash=sha256:a164b50081fc7357331c4024ef4d17b78ba325f8380d05f5a69599a7e05257ee \
|
|
76
|
+
--hash=sha256:a29ec5305a7335aacee2d799e3422e91e1c8a12474986e2b3b07e315c91be82f \
|
|
77
|
+
--hash=sha256:a300c6934e0989c327b9e8a1e110329da4641149f872bbe9f70168be66da76c1 \
|
|
78
|
+
--hash=sha256:a4c46b247b5d4b78f613bd89fea926d32b25c6cc61a50bd1e99ba310348f3dad \
|
|
79
|
+
--hash=sha256:a638db90c61cd219aeee65e83a24fdaa57269a741ae0cf773309208ac862cee3 \
|
|
80
|
+
--hash=sha256:a63b9e190711134d581c4d703df5df09851b1acf99792c7aacbbe9f41f0283c9 \
|
|
81
|
+
--hash=sha256:aaccad4129d735a8a4d526f26929894c9a4e8ef7034566f210b176749d6906e3 \
|
|
82
|
+
--hash=sha256:ae901f7e55ba405c84ee1cab3d3e962e4e871e4a2bcb9c90911adbd69b42ac5a \
|
|
83
|
+
--hash=sha256:afa29e2eff3d5729267e2cb2fd4ce9d61c952932fb2694e34ccb5d9540c6a296 \
|
|
84
|
+
--hash=sha256:affd532502d34c0472d0cdb181325c89f1d2c44992fef0c17e88e7b1576259a1 \
|
|
85
|
+
--hash=sha256:b171bdd71cb7ff792bf32e376173b0ace7e7963e7e57c58dfc42063a6a7174cd \
|
|
86
|
+
--hash=sha256:b868acc62aa5de3be7a9d05c2333bf8359ca987e43f9cb30ff8fbda6a024ab73 \
|
|
87
|
+
--hash=sha256:b9a6367e4aff723e8ee8190836836124284e8fcd4265e307c844010cfa074f3f \
|
|
88
|
+
--hash=sha256:bbc808daf4f5cd567af8075ecc72d21c6dfef9a254709a621a84c217c935ebc0 \
|
|
89
|
+
--hash=sha256:bbf44513ceb1589e31948e20eafbde9deaface90e1a1afa5f5f77b4423d17ce6 \
|
|
90
|
+
--hash=sha256:bcc0aae933921d03096f53b0b03eeb702129fd406dee59f08d2efacc68681fa5 \
|
|
91
|
+
--hash=sha256:bfd341ccf78128e72c094bc70cc25b3ef309c33c7c2c66ba3ed4309549e02de1 \
|
|
92
|
+
--hash=sha256:c6a98d698f9e2c8008d0370ec7fc452ebfcc530002ae2d0061170d768b992589 \
|
|
93
|
+
--hash=sha256:cb0fddaa6884be6aae36ced9544b5e90f7d5f03845a2853bf47a14953a4e8688 \
|
|
94
|
+
--hash=sha256:cee0f89f4767a6057c8fbf168f8135f18be651300496086bd873e3189fed0487 \
|
|
95
|
+
--hash=sha256:d17d7512151fedfcc64c1821a8977fc9be0dbf495754669afcab7b57abc98ae9 \
|
|
96
|
+
--hash=sha256:d46e62cb35d91e6e2589fda6d28074426b0e276422b5d2ebef2c6b11dc60dbfd \
|
|
97
|
+
--hash=sha256:d50dd325e18ec25bfcc10cd7f99b04df1ab9ec76b0918c260e60817ad0643dee \
|
|
98
|
+
--hash=sha256:db9c8438057e5b0f6a22a0af99c0c1d26b57fbbdbd1be5861ddb8f897fcc3a2d \
|
|
99
|
+
--hash=sha256:dee88b1ed88587abd8c0269a1fc1f4cc77f7750d1dfde2869e2a123af420e67d \
|
|
100
|
+
--hash=sha256:dfd3db045e95960ae3683059571e597fda7cc610106a8916f77c5839048c1deb \
|
|
101
|
+
--hash=sha256:e26ff680768b8095e8874aabe0e9d3a47a2a9f176a8340d05f8604c56457c23a \
|
|
102
|
+
--hash=sha256:e370c12133095ff18432de8c044962be85a5a96d90c6fcbce8e17e76236d2328 \
|
|
103
|
+
--hash=sha256:e38def96ad59853824c97953fdcd2c320a84ba3ce99b417db78af8bb6c3db635 \
|
|
104
|
+
--hash=sha256:e8f91bce78e32343af184c3b7fa28fcf5a9e2641f4b6623d392038f804939188 \
|
|
105
|
+
--hash=sha256:eb6bcae8d1a9d305351ecb108232441d11c5cfe9de840a04388ba5d2db8d735c \
|
|
106
|
+
--hash=sha256:f653e5d7248c1191ec988a85c72edeab46c3ff44f90639a4ed4874ec0be90243 \
|
|
107
|
+
--hash=sha256:fe41909c9515c3bfdb5f02c4d1f857dba322d9a9a1178069b91eea77889df63a
|
|
108
|
+
# via pytest-cov
|
|
109
|
+
iniconfig==2.3.0 \
|
|
110
|
+
--hash=sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730 \
|
|
111
|
+
--hash=sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12
|
|
112
|
+
# via pytest
|
|
113
|
+
json5==0.15.0 \
|
|
114
|
+
--hash=sha256:56636a30c0e8a4665fe2179c0212f32eae3796dea89ea6f649b9436ecdb39618 \
|
|
115
|
+
--hash=sha256:7424d1f1eb1d56da6e3d70643f53619862b4ce81440bdb8ecfd6f875e5ba4a71
|
|
116
|
+
# via specify-cli (pyproject.toml)
|
|
117
|
+
markdown-it-py==4.2.0 \
|
|
118
|
+
--hash=sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49 \
|
|
119
|
+
--hash=sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a
|
|
120
|
+
# via rich
|
|
121
|
+
mdurl==0.1.2 \
|
|
122
|
+
--hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \
|
|
123
|
+
--hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba
|
|
124
|
+
# via markdown-it-py
|
|
125
|
+
packaging==26.2 \
|
|
126
|
+
--hash=sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e \
|
|
127
|
+
--hash=sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661
|
|
128
|
+
# via
|
|
129
|
+
# specify-cli (pyproject.toml)
|
|
130
|
+
# pytest
|
|
131
|
+
pathspec==1.1.1 \
|
|
132
|
+
--hash=sha256:17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a \
|
|
133
|
+
--hash=sha256:a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189
|
|
134
|
+
# via specify-cli (pyproject.toml)
|
|
135
|
+
platformdirs==4.11.0 \
|
|
136
|
+
--hash=sha256:0555d18370482847566ffabcaa53ad7c6c1c29f195989ae1ed634a05f76ea1e0 \
|
|
137
|
+
--hash=sha256:360ccded2b7fce0af0ff80cc8f5942a1c5d99b0e856033acb030bfc634709e74
|
|
138
|
+
# via specify-cli (pyproject.toml)
|
|
139
|
+
pluggy==1.6.0 \
|
|
140
|
+
--hash=sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3 \
|
|
141
|
+
--hash=sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746
|
|
142
|
+
# via
|
|
143
|
+
# pytest
|
|
144
|
+
# pytest-cov
|
|
145
|
+
pygments==2.20.0 \
|
|
146
|
+
--hash=sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f \
|
|
147
|
+
--hash=sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176
|
|
148
|
+
# via
|
|
149
|
+
# pytest
|
|
150
|
+
# rich
|
|
151
|
+
pytest==9.1.1 \
|
|
152
|
+
--hash=sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313 \
|
|
153
|
+
--hash=sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c
|
|
154
|
+
# via
|
|
155
|
+
# specify-cli (pyproject.toml)
|
|
156
|
+
# pytest-cov
|
|
157
|
+
pytest-cov==7.1.0 \
|
|
158
|
+
--hash=sha256:30674f2b5f6351aa09702a9c8c364f6a01c27aae0c1366ae8016160d1efc56b2 \
|
|
159
|
+
--hash=sha256:a0461110b7865f9a271aa1b51e516c9a95de9d696734a2f71e3e78f46e1d4678
|
|
160
|
+
# via specify-cli (pyproject.toml)
|
|
161
|
+
pyyaml==6.0.3 \
|
|
162
|
+
--hash=sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c \
|
|
163
|
+
--hash=sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a \
|
|
164
|
+
--hash=sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3 \
|
|
165
|
+
--hash=sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956 \
|
|
166
|
+
--hash=sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6 \
|
|
167
|
+
--hash=sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c \
|
|
168
|
+
--hash=sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65 \
|
|
169
|
+
--hash=sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a \
|
|
170
|
+
--hash=sha256:1ebe39cb5fc479422b83de611d14e2c0d3bb2a18bbcb01f229ab3cfbd8fee7a0 \
|
|
171
|
+
--hash=sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b \
|
|
172
|
+
--hash=sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1 \
|
|
173
|
+
--hash=sha256:22ba7cfcad58ef3ecddc7ed1db3409af68d023b7f940da23c6c2a1890976eda6 \
|
|
174
|
+
--hash=sha256:27c0abcb4a5dac13684a37f76e701e054692a9b2d3064b70f5e4eb54810553d7 \
|
|
175
|
+
--hash=sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e \
|
|
176
|
+
--hash=sha256:2e71d11abed7344e42a8849600193d15b6def118602c4c176f748e4583246007 \
|
|
177
|
+
--hash=sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310 \
|
|
178
|
+
--hash=sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4 \
|
|
179
|
+
--hash=sha256:3c5677e12444c15717b902a5798264fa7909e41153cdf9ef7ad571b704a63dd9 \
|
|
180
|
+
--hash=sha256:3ff07ec89bae51176c0549bc4c63aa6202991da2d9a6129d7aef7f1407d3f295 \
|
|
181
|
+
--hash=sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea \
|
|
182
|
+
--hash=sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0 \
|
|
183
|
+
--hash=sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e \
|
|
184
|
+
--hash=sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac \
|
|
185
|
+
--hash=sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9 \
|
|
186
|
+
--hash=sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7 \
|
|
187
|
+
--hash=sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35 \
|
|
188
|
+
--hash=sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb \
|
|
189
|
+
--hash=sha256:5cf4e27da7e3fbed4d6c3d8e797387aaad68102272f8f9752883bc32d61cb87b \
|
|
190
|
+
--hash=sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69 \
|
|
191
|
+
--hash=sha256:5ed875a24292240029e4483f9d4a4b8a1ae08843b9c54f43fcc11e404532a8a5 \
|
|
192
|
+
--hash=sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b \
|
|
193
|
+
--hash=sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c \
|
|
194
|
+
--hash=sha256:6344df0d5755a2c9a276d4473ae6b90647e216ab4757f8426893b5dd2ac3f369 \
|
|
195
|
+
--hash=sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd \
|
|
196
|
+
--hash=sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824 \
|
|
197
|
+
--hash=sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198 \
|
|
198
|
+
--hash=sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065 \
|
|
199
|
+
--hash=sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c \
|
|
200
|
+
--hash=sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c \
|
|
201
|
+
--hash=sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764 \
|
|
202
|
+
--hash=sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196 \
|
|
203
|
+
--hash=sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b \
|
|
204
|
+
--hash=sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00 \
|
|
205
|
+
--hash=sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac \
|
|
206
|
+
--hash=sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8 \
|
|
207
|
+
--hash=sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e \
|
|
208
|
+
--hash=sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28 \
|
|
209
|
+
--hash=sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3 \
|
|
210
|
+
--hash=sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5 \
|
|
211
|
+
--hash=sha256:9c57bb8c96f6d1808c030b1687b9b5fb476abaa47f0db9c0101f5e9f394e97f4 \
|
|
212
|
+
--hash=sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b \
|
|
213
|
+
--hash=sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf \
|
|
214
|
+
--hash=sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5 \
|
|
215
|
+
--hash=sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702 \
|
|
216
|
+
--hash=sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8 \
|
|
217
|
+
--hash=sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788 \
|
|
218
|
+
--hash=sha256:b865addae83924361678b652338317d1bd7e79b1f4596f96b96c77a5a34b34da \
|
|
219
|
+
--hash=sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d \
|
|
220
|
+
--hash=sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc \
|
|
221
|
+
--hash=sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c \
|
|
222
|
+
--hash=sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba \
|
|
223
|
+
--hash=sha256:c2514fceb77bc5e7a2f7adfaa1feb2fb311607c9cb518dbc378688ec73d8292f \
|
|
224
|
+
--hash=sha256:c3355370a2c156cffb25e876646f149d5d68f5e0a3ce86a5084dd0b64a994917 \
|
|
225
|
+
--hash=sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5 \
|
|
226
|
+
--hash=sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26 \
|
|
227
|
+
--hash=sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f \
|
|
228
|
+
--hash=sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b \
|
|
229
|
+
--hash=sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be \
|
|
230
|
+
--hash=sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c \
|
|
231
|
+
--hash=sha256:efd7b85f94a6f21e4932043973a7ba2613b059c4a000551892ac9f1d11f5baf3 \
|
|
232
|
+
--hash=sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6 \
|
|
233
|
+
--hash=sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926 \
|
|
234
|
+
--hash=sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0
|
|
235
|
+
# via specify-cli (pyproject.toml)
|
|
236
|
+
readchar==4.2.2 \
|
|
237
|
+
--hash=sha256:92daf7e42c52b0787e6c75d01ecfb9a94f4ceff3764958b570c1dddedd47b200 \
|
|
238
|
+
--hash=sha256:e3b270fe16fc90c50ac79107700330a133dd4c63d22939f5b03b4f24564d5dd8
|
|
239
|
+
# via specify-cli (pyproject.toml)
|
|
240
|
+
rich==15.0.0 \
|
|
241
|
+
--hash=sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb \
|
|
242
|
+
--hash=sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36
|
|
243
|
+
# via
|
|
244
|
+
# specify-cli (pyproject.toml)
|
|
245
|
+
# typer
|
|
246
|
+
shellingham==1.5.4 \
|
|
247
|
+
--hash=sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686 \
|
|
248
|
+
--hash=sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de
|
|
249
|
+
# via typer
|
|
250
|
+
typer==0.27.0 \
|
|
251
|
+
--hash=sha256:629bd12ea5d13a17148125d9a264f949eb171fb3f120f9b04d85873cab054fa5 \
|
|
252
|
+
--hash=sha256:6f4b27631e47f077871b7dc30e933ec0131c1390fbe0e387ea5574b5bac9ccf1
|
|
253
|
+
# via specify-cli (pyproject.toml)
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
name: Security Audit
|
|
2
|
+
|
|
3
|
+
permissions:
|
|
4
|
+
contents: read
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
branches: ["main"]
|
|
9
|
+
pull_request:
|
|
10
|
+
types: [opened, synchronize, reopened]
|
|
11
|
+
schedule:
|
|
12
|
+
- cron: "17 4 * * 1"
|
|
13
|
+
workflow_dispatch:
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
dependency-audit:
|
|
17
|
+
name: Dependency audit
|
|
18
|
+
if: ${{ github.event_name != 'schedule' }}
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
steps:
|
|
21
|
+
- name: Checkout
|
|
22
|
+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
23
|
+
with:
|
|
24
|
+
fetch-depth: 0
|
|
25
|
+
|
|
26
|
+
- name: Install uv
|
|
27
|
+
uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
|
|
28
|
+
|
|
29
|
+
- name: Set up Python
|
|
30
|
+
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
|
|
31
|
+
with:
|
|
32
|
+
python-version: "3.14"
|
|
33
|
+
|
|
34
|
+
- name: Check committed audit requirements are current
|
|
35
|
+
env:
|
|
36
|
+
DEPENDENCY_DIFF_BASE: ${{ github.event.pull_request.base.sha || github.event.before || '' }}
|
|
37
|
+
DEPENDENCY_DIFF_HEAD: ${{ github.sha }}
|
|
38
|
+
GENERATED_REQUIREMENTS: ${{ runner.temp }}/security-audit-requirements.txt
|
|
39
|
+
run: python .github/scripts/check_security_requirements.py
|
|
40
|
+
|
|
41
|
+
- name: Run pip-audit (committed requirements)
|
|
42
|
+
run: uvx --from pip-audit==2.10.0 pip-audit --disable-pip --require-hashes -r .github/security-audit-requirements.txt --progress-spinner off
|
|
43
|
+
|
|
44
|
+
dependency-audit-scheduled:
|
|
45
|
+
name: Dependency audit scheduled (${{ matrix.os }}, Python ${{ matrix.python-version }})
|
|
46
|
+
if: ${{ github.event_name == 'schedule' }}
|
|
47
|
+
runs-on: ${{ matrix.os }}
|
|
48
|
+
strategy:
|
|
49
|
+
fail-fast: false
|
|
50
|
+
matrix:
|
|
51
|
+
os: [ubuntu-latest, windows-latest]
|
|
52
|
+
python-version: ["3.11", "3.12", "3.13", "3.14"]
|
|
53
|
+
steps:
|
|
54
|
+
- name: Checkout
|
|
55
|
+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
56
|
+
|
|
57
|
+
- name: Install uv
|
|
58
|
+
uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
|
|
59
|
+
|
|
60
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
61
|
+
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
|
|
62
|
+
with:
|
|
63
|
+
python-version: ${{ matrix.python-version }}
|
|
64
|
+
|
|
65
|
+
# The committed .github/security-audit-requirements.txt is generated with
|
|
66
|
+
# --universal (resolves across all interpreters/platforms) and is what
|
|
67
|
+
# push/PR/workflow_dispatch runs audit. The scheduled job instead compiles
|
|
68
|
+
# per matrix entry with --python-version so it can surface advisories in
|
|
69
|
+
# wheels that only resolve on a specific interpreter (e.g. 3.11-only) —
|
|
70
|
+
# coverage the universal file may not exercise. This broadening is
|
|
71
|
+
# intentional; non-scheduled runs trade that depth for determinism against
|
|
72
|
+
# the committed snapshot.
|
|
73
|
+
- name: Compile scheduled audit requirements
|
|
74
|
+
run: |
|
|
75
|
+
uv pip compile pyproject.toml --extra test --python-version "${{ matrix.python-version }}" --upgrade --generate-hashes --quiet --output-file "${{ runner.temp }}/spec-kit-audit-requirements.txt"
|
|
76
|
+
|
|
77
|
+
- name: Run pip-audit (scheduled live resolution)
|
|
78
|
+
run: uvx --from pip-audit==2.10.0 pip-audit --disable-pip --require-hashes -r "${{ runner.temp }}/spec-kit-audit-requirements.txt" --progress-spinner off
|
|
@@ -2,6 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- insert new changelog below this comment -->
|
|
4
4
|
|
|
5
|
+
## [0.13.3] - 2026-07-22
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- fix(integrations): escape Rich markup in --integration-options error messages (#3458)
|
|
10
|
+
- docs: document __SPECKIT_COMMAND_ token for portable cross-command references (#3503)
|
|
11
|
+
- [preset] Add Parallel Autonomous Run Governance preset to community catalog (#3614)
|
|
12
|
+
- docs(workflows): fix stale FanOutStep docstring claiming sequential-only execution (#3639)
|
|
13
|
+
- [bundle] Add SicarioSpec Security & Governance Bundle to community catalog (#3636)
|
|
14
|
+
- [preset] Update Autonomous Run Governance preset to v0.3.2 (#3615)
|
|
15
|
+
- fix(workflows): validate every redirect hop when fetching workflow/step catalogs (#3637)
|
|
16
|
+
- Add pipeline workflow to community catalog (#3338)
|
|
17
|
+
- [extension] Add Linear Weave extension to community catalog (#3609)
|
|
18
|
+
- docs: clarify hook priority validation semantics (#3594)
|
|
19
|
+
- fix(workflows): reject a non-string 'integration'/'model' in command & prompt steps (#3597)
|
|
20
|
+
- ci: add dependency audit workflow (#3138)
|
|
21
|
+
- Add Intake Review Governance preset to community catalog (#3613)
|
|
22
|
+
- fix(workflows): reject non-list input 'enum' instead of crashing (#3601)
|
|
23
|
+
- chore: release 0.13.2, begin 0.13.3.dev0 development (#3617)
|
|
24
|
+
|
|
5
25
|
## [0.13.2] - 2026-07-21
|
|
6
26
|
|
|
7
27
|
### Changed
|
|
@@ -113,6 +113,27 @@ uv pip install -e ".[test]"
|
|
|
113
113
|
> `specify_cli` to this checkout's `src/`. This matches the gotcha documented in
|
|
114
114
|
> `AGENTS.md` (Common Pitfalls).
|
|
115
115
|
|
|
116
|
+
#### Security checks
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
uvx --from pip-audit==2.10.0 pip-audit --disable-pip --require-hashes -r .github/security-audit-requirements.txt --progress-spinner off
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
This command audits the committed hashed requirements snapshot. Pull request,
|
|
123
|
+
push, and manual CI runs use the same snapshot so their results stay
|
|
124
|
+
deterministic. If dependency metadata changes, refresh and commit the snapshot
|
|
125
|
+
before auditing it:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
uv pip compile pyproject.toml --extra test --universal --upgrade --generate-hashes --quiet --no-header --output-file .github/security-audit-requirements.txt
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
The scheduled CI audit resolves the runtime and `test` extra dependency set
|
|
132
|
+
across the supported Python and OS matrix to catch newly published advisories.
|
|
133
|
+
Upstream package releases drift over time, so even an unrelated PR touching
|
|
134
|
+
`pyproject.toml` can fail the `dependency-audit` check until the committed file
|
|
135
|
+
is regenerated with the command above and re-committed.
|
|
136
|
+
|
|
116
137
|
#### Shell scripts
|
|
117
138
|
|
|
118
139
|
```bash
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "1.0",
|
|
3
|
+
"updated_at": "2026-07-22T00:00:00Z",
|
|
4
|
+
"catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/bundles/catalog.community.json",
|
|
5
|
+
"bundles": {
|
|
6
|
+
"sicario-spec": {
|
|
7
|
+
"name": "SicarioSpec Security & Governance Bundle",
|
|
8
|
+
"id": "sicario-spec",
|
|
9
|
+
"version": "0.5.1",
|
|
10
|
+
"role": "security-engineer",
|
|
11
|
+
"description": "Secure-by-default governance bundle for GitHub Spec Kit. Enforces data classification, threat modeling, and code-owned verification gates.",
|
|
12
|
+
"author": "SicarioSpec Contributors",
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"download_url": "https://github.com/dfirs1car1o/sicario-spec/releases/download/v0.5.1/sicario-spec-0.5.1.zip",
|
|
15
|
+
"repository": "https://github.com/dfirs1car1o/sicario-spec",
|
|
16
|
+
"requires": {
|
|
17
|
+
"speckit_version": ">=0.9.0"
|
|
18
|
+
},
|
|
19
|
+
"provides": {
|
|
20
|
+
"extensions": 1,
|
|
21
|
+
"presets": 11,
|
|
22
|
+
"steps": 0,
|
|
23
|
+
"workflows": 0
|
|
24
|
+
},
|
|
25
|
+
"tags": [
|
|
26
|
+
"security",
|
|
27
|
+
"governance",
|
|
28
|
+
"compliance",
|
|
29
|
+
"appsec",
|
|
30
|
+
"threat-modeling"
|
|
31
|
+
],
|
|
32
|
+
"verified": false
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -9,6 +9,7 @@ Accepted community bundle entries are published in [`bundles/catalog.community.j
|
|
|
9
9
|
|
|
10
10
|
| Bundle | Purpose | Role or team | Provides | Required catalogs | URL |
|
|
11
11
|
|--------|---------|--------------|----------|-------------------|-----|
|
|
12
|
+
| SicarioSpec Security & Governance Bundle | Secure-by-default governance bundle for GitHub Spec Kit. Enforces data classification, threat modeling, and code-owned verification gates. | `security-engineer` | 1 extension, 11 presets | Documented | [sicario-spec](https://github.com/dfirs1car1o/sicario-spec) |
|
|
12
13
|
|
|
13
14
|
## What to Submit
|
|
14
15
|
|
|
@@ -70,6 +70,7 @@ The following community-contributed extensions are available in [`catalog.commun
|
|
|
70
70
|
| Jira Integration (Sync Engine) | Idempotent, drift-aware, fail-closed reconcile engine mirroring spec-kit specs into Jira (Epic per repo, Story per spec, Subtask per phase) | `integration` | Read+Write | [spec-kit-jira-sync](https://github.com/ashbrener/spec-kit-jira-sync) |
|
|
71
71
|
| Learning Extension | Generate educational guides from implementations and enhance clarifications with mentoring context | `docs` | Read+Write | [spec-kit-learn](https://github.com/imviancagrace/spec-kit-learn) |
|
|
72
72
|
| Linear Integration | Mirror spec-kit feature directories into Linear (filesystem → Linear, reconcile-based, unidirectional). | `integration` | Read+Write | [spec-kit-linear-sync](https://github.com/ashbrener/spec-kit-linear-sync) |
|
|
73
|
+
| Linear Weave | Weave Spec Kit into Linear: pull requirements, mirror tasks.md into sub-issues, sync statuses | `integration` | Read+Write | [spec-kit-linear-weave](https://github.com/tonydwoodhouse/spec-kit-linear-weave) |
|
|
73
74
|
| LLM Wiki | LLM-maintained compounding project wiki: source ingestion, cited answers, and consistency linting | `docs` | Read+Write | [spec-kit-wiki](https://github.com/formin/spec-kit-wiki) |
|
|
74
75
|
| Loop Engineering | Engineer safe autonomous agent loops for spec-driven development: a maker/checker split, externalized loop state, and stay-the-engineer guardrails against comprehension debt and cognitive surrender | `process` | Read+Write | [spec-kit-loop](https://github.com/formin/spec-kit-loop) |
|
|
75
76
|
| MAQA — Multi-Agent & Quality Assurance | Coordinator → feature → QA agent workflow with parallel worktree-based implementation. Language-agnostic. Auto-detects installed board plugins. Optional CI gate. | `process` | Read+Write | [spec-kit-maqa-ext](https://github.com/GenieRobot/spec-kit-maqa-ext) |
|
|
@@ -11,7 +11,7 @@ The following community-contributed presets customize how Spec Kit behaves — o
|
|
|
11
11
|
| Agent Parity Governance | Adds shared-guidance parity, audit-ready Spec-Kit run evidence, and agent-neutral model-routing guidance across a project's declared AI-agent instruction surfaces so agent guidance does not drift. | 6 templates, 3 commands | — | [spec-kit-preset-agent-parity-governance](https://github.com/hindermath/spec-kit-preset-agent-parity-governance) |
|
|
12
12
|
| AIDE In-Place Migration | Adapts the AIDE extension workflow for in-place technology migrations (X → Y pattern) — adds migration objectives, verification gates, knowledge documents, and behavioral equivalence criteria | 2 templates, 8 commands | AIDE extension | [spec-kit-presets](https://github.com/mnriem/spec-kit-presets) |
|
|
13
13
|
| Architecture Governance | Adds secure software architecture, STRIDE+CAPEC threat modeling, arc42 security cross-cutting concepts, S-ADRs, Zero Trust applicability, OWASP SAMM governance, BSI C3A cloud autonomy, BSI C5 cloud compliance assurance, and audit-ready Spec Kit run evidence | 13 templates, 3 commands | — | [spec-kit-preset-architecture-governance](https://github.com/hindermath/spec-kit-preset-architecture-governance) |
|
|
14
|
-
| Autonomous Run Governance | Adds permission-bounded, evidence-first governance for autonomous Spec Kit delivery
|
|
14
|
+
| Autonomous Run Governance | Adds permission-bounded, evidence-first governance for complete autonomous Spec Kit delivery, including validated status, stop, explicit resume, exact-head proof, post-merge closeout, retrospective learning, and an optional policy-driven intake-review gate before feature creation. | 13 templates, 5 commands, 4 scripts | — | [spec-kit-preset-autonomous-run-governance](https://github.com/hindermath/spec-kit-preset-autonomous-run-governance) |
|
|
15
15
|
| Canon Core | Adapts original Spec Kit workflow to work together with Canon extension | 2 templates, 8 commands | — | [spec-kit-canon](https://github.com/maximiliamus/spec-kit-canon) |
|
|
16
16
|
| Claude AskUserQuestion | Upgrades `/speckit.clarify` and `/speckit.checklist` on Claude Code from Markdown-table prompts to the native AskUserQuestion picker, with a recommended option and reasoning on every question | 2 commands | — | [spec-kit-preset-claude-ask-questions](https://github.com/0xrafasec/spec-kit-preset-claude-ask-questions) |
|
|
17
17
|
| Command Density | Compacts the nine core Spec Kit command prompts while preserving scripts, handoffs, placeholders, hook output blocks, and rule structure | 9 commands | — | [spec-kit-preset-command-density](https://github.com/Xopoko/spec-kit-preset-command-density) |
|
|
@@ -19,10 +19,12 @@ The following community-contributed presets customize how Spec Kit behaves — o
|
|
|
19
19
|
| Explicit Task Dependencies | Adds explicit `(depends on T###)` dependency declarations and an Execution Wave DAG to tasks.md for parallel scheduling | 1 template, 1 command | — | [spec-kit-preset-explicit-task-dependencies](https://github.com/Quratulain-bilal/spec-kit-preset-explicit-task-dependencies) |
|
|
20
20
|
| Fiction Book Writing | It adapts the Spec-Driven Development workflow for storytelling to create books or audiobooks (with annotations) in 12 languages: features become story elements, specs become story briefs, plans become story structures, and tasks become scene-by-scene writing tasks. Supports single and multi-POV, all major plot structure frameworks, and two style modes: an author voice sample or humanized AI prose principles. Supports interactive elements like brainstorming, interview, roleplay, and extras like statistics, cover builder, illustration builder, and bio command. Export with templates for KDP, D2D, etc. | 26 templates, 34 commands, 2 scripts | — | [speckit-preset-fiction-book-writing](https://github.com/adaumann/speckit-preset-fiction-book-writing) |
|
|
21
21
|
| Game Narrative Writing | Preset for game narrative design and interactive storytelling. It adapts the Spec-Driven Development workflow for game narratives: features become story mechanics, specs become narrative briefs, plans become story maps, and tasks become dialogue and scene-writing tasks. Supports branching narratives, player agency systems, state machines, and interactive dialogue trees. | 37 templates, 34 commands, 5 scripts | — | [speckit-preset-game-narrative-writing](https://github.com/adaumann/speckit-preset-game-narrative-writing) |
|
|
22
|
+
| Intake Review Governance | Adds hash-bound review, repair, and status gates for single, series, and campaign intake files before interactive, autonomous, or parallel Spec Kit execution. | 8 templates, 3 commands, 2 scripts | — | [spec-kit-preset-intake-review-governance](https://github.com/hindermath/spec-kit-preset-intake-review-governance) |
|
|
22
23
|
| iSAQB Architecture Governance | Adds general iSAQB/CPSA-F and arc42 software-architecture governance, including audit-ready Spec Kit run evidence for architecture goals, views, quality scenarios, ADRs, risks, and technical debt. | 13 templates, 3 commands | — | [spec-kit-preset-isaqb-architecture-governance](https://github.com/hindermath/spec-kit-preset-isaqb-architecture-governance) |
|
|
23
24
|
| 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) |
|
|
24
25
|
| 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) |
|
|
25
26
|
| Multi-Repo Branching | Coordinates feature branch creation across multiple git repositories (independent repos and submodules) during plan and tasks phases | 2 commands | — | [spec-kit-preset-multi-repo-branching](https://github.com/sakitA/spec-kit-preset-multi-repo-branching) |
|
|
27
|
+
| Parallel Autonomous Run Governance | Coordinates isolated autonomous Spec Kit campaigns with bounded concurrency, mixed agents, resumable consolidation, governed post-merge closeout, schema 1.2, and an optional current intake-review gate before worker scheduling. | 9 templates, 5 commands, 2 scripts | autonomous-run-governance >=0.3.2; optional: intake-review-governance >=0.1.0 | [spec-kit-preset-parallel-autonomous-run-governance](https://github.com/hindermath/spec-kit-preset-parallel-autonomous-run-governance) |
|
|
26
28
|
| Pirate Speak (Full) | Transforms all Spec Kit output into pirate speak — specs become "Voyage Manifests", plans become "Battle Plans", tasks become "Crew Assignments" | 6 templates, 9 commands | — | [spec-kit-presets](https://github.com/mnriem/spec-kit-presets) |
|
|
27
29
|
| Screenwriting | Spec-Driven Development for screenwriting/scriptwriting/tutorials: feature films, television (pilot, episode, limited series), and stage plays. Adapts the Spec Kit workflow to screenplay craft — slug lines, action lines, act breaks, beat sheets, and industry-standard pitch documents. Supports three-act, Save the Cat, TV pilot, network episode, cable/streaming episode, and stage-play structural frameworks. Export to Fountain, FTX, PDF | 26 templates, 32 commands, 1 script | — | [speckit-preset-screenwriting](https://github.com/adaumann/speckit-preset-screenwriting) |
|
|
28
30
|
| Security Governance | Adds memory-safe-language preference, language-specific secure coding profiles, audit-ready Spec-Kit run evidence, ASVS verification, SBOM/AI-SBOM supply-chain transparency, CRA awareness, and regulatory applicability screening for NIS2, CRA, EU AI Act, and DORA | 14 templates, 3 commands | — | [spec-kit-preset-security-governance](https://github.com/hindermath/spec-kit-preset-security-governance) |
|
|
@@ -221,12 +221,14 @@ Each hook entry supports the following fields:
|
|
|
221
221
|
| `command` | Extension command associated with the hook. |
|
|
222
222
|
| `enabled` | Whether the hook is active. Hooks with `enabled: false` are skipped. |
|
|
223
223
|
| `optional` | Whether the hook is optional. If `true`, the hook is presented with its `prompt` and can be skipped; if `false`, the hook is emitted as an automatic hook (includes `EXECUTE_COMMAND` markers). |
|
|
224
|
-
| `priority` | Priority metadata for the hook.
|
|
224
|
+
| `priority` | Priority metadata for the hook. Registered hook entries use integer values >= 1; entries installed from manifests default to `10` when no priority is declared. Current command templates surface hooks in their configured YAML order and do not sort them by `priority`. |
|
|
225
225
|
| `prompt` | Message shown when asking whether to run an optional hook. |
|
|
226
226
|
| `description` | Human-readable explanation of what the hook does. |
|
|
227
227
|
| `condition` | Optional expression evaluated by `HookExecutor` (using `config.<path>` or `env.<VAR>` with `is set`, `==`, or `!=`). Current command templates do not evaluate conditions and skip hooks with a non-empty condition. |
|
|
228
228
|
Hook event names identify when a hook is invoked. They generally use `before_<command>` or `after_<command>`, such as `before_implement`, `after_implement`, `before_tasks`, and `after_tasks`.
|
|
229
229
|
|
|
230
|
+
Extension manifests reject invalid hook priorities during installation. For existing `.specify/extensions.yml` entries, `HookExecutor.get_hooks_for_event()` sorts with `normalize_priority()`: missing values, booleans, non-numeric values rejected by `int()`, and values less than `1` fall back to `10`; numeric strings and finite floats are coerced with `int()`, while non-finite floats are unsupported and may fail instead of falling back.
|
|
231
|
+
|
|
230
232
|
`HookExecutor.get_hooks_for_event()` returns hooks ordered by `priority`, with lower values first. However, current command templates read hook lists directly and surface them in their configured YAML order rather than using priority ordering.
|
|
231
233
|
|
|
232
234
|
## FAQ
|