specify-cli 0.13.2__tar.gz → 0.13.4__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.2 → specify_cli-0.13.4}/.devcontainer/post-create.sh +11 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/agent_request.yml +1 -1
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/bug_report.yml +1 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/feature_request.yml +1 -0
- specify_cli-0.13.4/.github/scripts/check_security_requirements.py +115 -0
- specify_cli-0.13.4/.github/security-audit-requirements.txt +253 -0
- specify_cli-0.13.4/.github/workflows/security.yml +78 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/CHANGELOG.md +45 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/CONTRIBUTING.md +21 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/PKG-INFO +1 -1
- specify_cli-0.13.4/bundles/catalog.community.json +35 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/community/bundles.md +1 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/community/extensions.md +1 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/community/presets.md +4 -1
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/concepts/complex-features.md +8 -4
- specify_cli-0.13.4/docs/concepts/spec-of-specs.md +171 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/installation.md +4 -2
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/reference/core.md +1 -1
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/reference/extensions.md +3 -1
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/reference/integrations.md +1 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/toc.yml +2 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/upgrade.md +75 -69
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +35 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/catalog.community.json +34 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +7 -1
- {specify_cli-0.13.2 → specify_cli-0.13.4}/integrations/catalog.json +10 -1
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/catalog.community.json +100 -11
- {specify_cli-0.13.2 → specify_cli-0.13.4}/pyproject.toml +1 -1
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/commands_impl/catalog_config.py +9 -2
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/models/catalog.py +15 -1
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/models/manifest.py +5 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/commands/init.py +2 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/extensions/__init__.py +5 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/__init__.py +2 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/_helpers.py +3 -2
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/catalog.py +34 -14
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/cline/__init__.py +13 -0
- specify_cli-0.13.4/src/specify_cli/integrations/droid/__init__.py +135 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/_commands.py +2 -2
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/catalog.py +31 -3
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/engine.py +54 -2
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/expressions.py +4 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/command/__init__.py +64 -5
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/fan_out/__init__.py +4 -3
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/gate/__init__.py +5 -1
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/prompt/__init__.py +63 -5
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/contract/test_catalog_schema.py +36 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/contract/test_manifest_schema.py +10 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/extensions/git/test_git_extension.py +16 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_base.py +18 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_catalog.py +67 -0
- specify_cli-0.13.4/tests/integrations/test_integration_droid.py +262 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_forge.py +36 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_subcommand.py +24 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_registry.py +1 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_agent_config_consistency.py +1 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_extensions.py +36 -0
- specify_cli-0.13.4/tests/test_security_workflow.py +349 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_workflows.py +459 -2
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/unit/test_bundler_catalog_config.py +41 -0
- specify_cli-0.13.4/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.4}/.devcontainer/devcontainer.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.editorconfig +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.gitattributes +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/CODEOWNERS +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/bundle_submission.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/preset_submission.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/aw/actions-lock.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/dependabot.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/skills/add-community-extension/SKILL.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/RELEASE-PROCESS.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/add-community-bundle.lock.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/add-community-bundle.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/add-community-extension.lock.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/add-community-extension.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/add-community-preset.lock.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/add-community-preset.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/bug-assess.lock.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/bug-assess.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/bug-fix.lock.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/bug-fix.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/bug-test.lock.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/bug-test.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/catalog-assign.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/codeql.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/docs.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/lint.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/publish-pypi.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/release-trigger.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/release.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/stale.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.github/workflows/test.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.gitignore +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.markdownlint-cli2.jsonc +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.pre-commit-config.yaml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/.zenodo.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/AGENTS.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/CITATION.cff +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/CODE_OF_CONDUCT.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/DEVELOPMENT.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/LICENSE +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/SECURITY.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/SUPPORT.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/.gitignore +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/community/friends.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/community/overview.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/community/walkthroughs.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/concepts/sdd.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/concepts/spec-persistence.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/docfx.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/guides/evolving-specs.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/guides/monorepo.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/index.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/install/air-gapped.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/install/one-time.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/install/pipx.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/install/pypi.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/install/uv.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/local-development.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/quickstart.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/reference/agentic-bugfix.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/reference/agentic-sdd.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/reference/authentication.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/reference/bundles.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/reference/overview.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/reference/presets.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/reference/workflows.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/docs/template/public/main.css +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/examples/bundles/business-analyst/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/examples/bundles/business-analyst/bundle.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/examples/bundles/developer/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/examples/bundles/developer/bundle.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/examples/bundles/product-manager/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/examples/bundles/product-manager/bundle.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/examples/bundles/security-researcher/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/examples/bundles/security-researcher/bundle.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/EXTENSION-API-REFERENCE.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/EXTENSION-PUBLISHING-GUIDE.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/EXTENSION-USER-GUIDE.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/agent-context/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/agent-context/agent-context-config.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/agent-context/agent-context-defaults.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/agent-context/extension.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/agent-context/scripts/bash/update-agent-context.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/agent-context/scripts/python/update_agent_context.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/assess/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/assess/commands/speckit.assess.decide.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/assess/commands/speckit.assess.define.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/assess/commands/speckit.assess.intake.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/assess/commands/speckit.assess.research.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/assess/commands/speckit.assess.shape.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/assess/extension.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/bug/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/bug/commands/speckit.bug.assess.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/bug/commands/speckit.bug.fix.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/bug/commands/speckit.bug.test.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/bug/extension.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/catalog.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/commands/speckit.git.commit.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/commands/speckit.git.feature.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/commands/speckit.git.initialize.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/commands/speckit.git.remote.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/commands/speckit.git.validate.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/config-template.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/extension.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/git-config.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/scripts/bash/auto-commit.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/scripts/bash/git-common.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/scripts/python/auto_commit.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/scripts/python/create_new_feature_branch.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/scripts/python/git_common.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/git/scripts/python/initialize_repo.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/selftest/commands/selftest.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/selftest/extension.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/template/.gitignore +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/template/CHANGELOG.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/template/EXAMPLE-README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/template/LICENSE +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/template/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/template/commands/example.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/template/config-template.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/extensions/template/extension.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/integrations/CONTRIBUTING.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/integrations/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/integrations/catalog.community.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/media/bootstrap-claude-code.gif +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/media/logo_large.webp +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/media/logo_small.webp +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/media/spec-kit-video-header.jpg +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/media/specify_cli.gif +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/newsletters/2026-April.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/newsletters/2026-February.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/newsletters/2026-June.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/newsletters/2026-March.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/newsletters/2026-May.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/ARCHITECTURE.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/PUBLISHING.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/catalog.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/lean/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/lean/commands/speckit.constitution.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/lean/commands/speckit.implement.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/lean/commands/speckit.plan.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/lean/commands/speckit.specify.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/lean/commands/speckit.tasks.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/lean/preset.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/scaffold/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/scaffold/commands/speckit.specify.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/scaffold/preset.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/scaffold/templates/myext-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/scaffold/templates/spec-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/self-test/commands/speckit.specify.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/self-test/commands/speckit.wrap-test.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/self-test/preset.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/self-test/templates/checklist-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/self-test/templates/constitution-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/self-test/templates/plan-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/self-test/templates/spec-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/presets/self-test/templates/tasks-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/scripts/bash/check-prerequisites.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/scripts/bash/common.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/scripts/bash/create-new-feature.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/scripts/bash/setup-plan.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/scripts/bash/setup-tasks.sh +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/scripts/powershell/check-prerequisites.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/scripts/powershell/common.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/scripts/powershell/create-new-feature.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/scripts/powershell/setup-plan.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/scripts/powershell/setup-tasks.ps1 +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/scripts/python/check_prerequisites.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/scripts/python/common.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/scripts/python/create_new_feature.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/scripts/python/setup_plan.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/scripts/python/setup_tasks.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/spec-driven.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/spec-kit.code-workspace +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/_agent_config.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/_assets.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/_console.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/_github_http.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/_init_options.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/_invocation_style.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/_project.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/_toml_string.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/_utils.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/_version.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/agents.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/authentication/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/authentication/azure_devops.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/authentication/base.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/authentication/config.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/authentication/github.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/authentication/http.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/commands_impl/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/lib/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/lib/project.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/lib/versioning.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/lib/yamlio.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/models/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/models/records.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/services/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/services/adapters.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/services/catalog_stack.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/services/conflict.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/services/installer.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/services/packager.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/services/primitives.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/services/references.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/services/resolver.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/bundler/services/validator.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/catalogs.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/commands/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/commands/bundle/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/extensions/_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integration_runtime.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integration_scaffold.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integration_state.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integration_status.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/_install_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/_migrate_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/_query_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/_scaffold_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/agy/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/amp/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/auggie/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/base.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/bob/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/claude/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/codex/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/copilot/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/devin/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/firebender/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/forge/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/gemini/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/generic/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/goose/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/grok/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/hermes/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/junie/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/kilocode/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/kimi/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/lingma/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/manifest.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/omp/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/opencode/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/pi/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/qwen/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/rovodev/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/shai/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/trae/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/vibe/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/zcode/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/integrations/zed/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/presets/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/presets/_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/shared_infra.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/base.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/overlays/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/overlays/_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/overlays/composer.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/overlays/layer_sources.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/overlays/merge.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/overlays/schema.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/do_while/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/fan_in/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/if_then/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/init/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/shell/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/switch/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/while_loop/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/templates/checklist-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/templates/commands/analyze.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/templates/commands/checklist.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/templates/commands/clarify.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/templates/commands/constitution.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/templates/commands/converge.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/templates/commands/implement.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/templates/commands/plan.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/templates/commands/specify.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/templates/commands/tasks.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/templates/commands/taskstoissues.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/templates/constitution-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/templates/plan-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/templates/spec-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/templates/tasks-template.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/templates/vscode-settings.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/auth_helpers.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/bundler_helpers.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/conftest.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/contract/test_bundle_cli.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/extensions/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/extensions/assess/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/extensions/assess/test_assess_extension.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/extensions/bug/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/extensions/bug/test_bug_extension.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/extensions/git/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/extensions/git/test_git_extension_python_parity.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/extensions/test_agent_context_cli_free.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/extensions/test_extension_agent_context.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/extensions/test_update_agent_context_feature_json.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/extensions/test_update_agent_context_python_parity.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/hooks/TESTING.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/hooks/plan.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/hooks/spec.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/hooks/tasks.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/http_helpers.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integration/test_bundler_catalog_stack.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integration/test_bundler_init_install.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integration/test_bundler_install_flow.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integration/test_bundler_local_install.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integration/test_bundler_offline.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integration/test_bundler_security_paths.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/__init__.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/conftest.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_cli.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_extra_args.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_home_isolation.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_agy.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_amp.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_auggie.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_base_markdown.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_base_skills.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_base_toml.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_base_yaml.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_bob.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_claude.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_cline.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_codebuddy.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_codex.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_copilot.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_cursor_agent.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_devin.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_firebender.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_gemini.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_generic.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_goose.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_grok.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_hermes.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_junie.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_kilocode.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_kimi.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_kiro_cli.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_lingma.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_omp.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_opencode.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_pi.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_qodercli.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_qwen.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_rovodev.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_scaffold.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_shai.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_state.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_tabnine.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_trae.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_vibe.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_zcode.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_integration_zed.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_manifest.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/integrations/test_skill_frontmatter_quoting.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/parity_helpers.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/self_upgrade_helpers.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_authentication.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_branch_numbering.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_check_prerequisites_paths_only.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_check_prerequisites_python_parity.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_check_tool.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_cli_version.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_command_template_py_scripts.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_commands_package.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_console_imports.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_create_new_feature_python_parity.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_extension_registration.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_extension_skills.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_extension_update_hardening.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_github_http.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_github_workflows.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_init_dir.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_init_dir_cli.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_live_transient_windows.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_merge.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_post_process.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_presets.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_ps1_encoding.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_registrar_path_traversal.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_self_upgrade_detection.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_self_upgrade_execution.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_self_upgrade_guidance.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_self_upgrade_verification.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_setup_plan_feature_json.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_setup_plan_no_overwrite.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_setup_plan_python_parity.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_setup_tasks.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_setup_tasks_python_parity.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_shared_infra_integrity.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_skill_placeholder_py.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_timestamp_branches.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_upgrade.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_utils.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_utils_assets_imports.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_version_imports.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/test_workflow_run_without_project.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/unit/test_bundle_download_url.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/unit/test_bundler_adapters.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/unit/test_bundler_conflict.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/unit/test_bundler_packager.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/unit/test_bundler_primitives.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/unit/test_bundler_records.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/unit/test_bundler_references.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/unit/test_bundler_resolver.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/unit/test_bundler_validator.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/unit/test_bundler_versioning.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/workflows/conftest.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/workflows/test_overlay_commands.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/workflows/test_overlay_composer.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/workflows/test_overlay_layer_sources.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/workflows/test_overlay_merge.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/workflows/test_overlay_schema.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/workflows/test_overlay_security.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/tests/workflows/test_resolver_integration.py +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/workflows/ARCHITECTURE.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/workflows/PUBLISHING.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/workflows/README.md +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/workflows/catalog.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/workflows/speckit/workflow.yml +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/workflows/step-catalog.community.json +0 -0
- {specify_cli-0.13.2 → specify_cli-0.13.4}/workflows/step-catalog.json +0 -0
|
@@ -97,6 +97,17 @@ echo -e "\n🤖 Installing CodeBuddy CLI..."
|
|
|
97
97
|
run_command "npm install -g @tencent-ai/codebuddy-code@latest"
|
|
98
98
|
echo "✅ Done"
|
|
99
99
|
|
|
100
|
+
echo -e "\n🤖 Installing Factory Droid CLI..."
|
|
101
|
+
run_command "npm install -g droid@latest"
|
|
102
|
+
|
|
103
|
+
if ! command -v droid >/dev/null 2>&1; then
|
|
104
|
+
echo -e "\033[0;31m[ERROR] Droid CLI installation did not create 'droid' in PATH.\033[0m" >&2
|
|
105
|
+
exit 1
|
|
106
|
+
fi
|
|
107
|
+
|
|
108
|
+
run_command "droid --version > /dev/null"
|
|
109
|
+
echo "✅ Done"
|
|
110
|
+
|
|
100
111
|
# Installing UV (Python package manager)
|
|
101
112
|
echo -e "\n🐍 Installing UV - Python Package Manager..."
|
|
102
113
|
run_command "pipx install uv"
|
|
@@ -8,7 +8,7 @@ body:
|
|
|
8
8
|
value: |
|
|
9
9
|
Thanks for requesting a new agent! Before submitting, please check if the agent is already supported.
|
|
10
10
|
|
|
11
|
-
**Currently supported agents**: Amp, Antigravity, Auggie CLI, Claude Code, Cline, CodeBuddy, Codex CLI, Cursor, Devin for Terminal, Firebender, Forge, Gemini CLI, GitHub Copilot, Goose, Grok Build, Hermes Agent, IBM Bob, Junie, Kilo Code, Kimi Code, Kiro CLI, Lingma, Mistral Vibe, Oh My Pi, opencode, Pi Coding Agent, Qoder CLI, Qwen Code, RovoDev ACLI, SHAI, Tabnine CLI, Trae, ZCode, Zed
|
|
11
|
+
**Currently supported agents**: Amp, Antigravity, Auggie CLI, Claude Code, Cline, CodeBuddy, Codex CLI, Cursor, Devin for Terminal, Factory Droid, Firebender, Forge, Gemini CLI, GitHub Copilot, Goose, Grok Build, Hermes Agent, IBM Bob, Junie, Kilo Code, Kimi Code, Kiro CLI, Lingma, Mistral Vibe, Oh My Pi, opencode, Pi Coding Agent, Qoder CLI, Qwen Code, RovoDev ACLI, SHAI, Tabnine CLI, Trae, ZCode, Zed
|
|
12
12
|
|
|
13
13
|
- type: input
|
|
14
14
|
id: agent-name
|
|
@@ -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,51 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- insert new changelog below this comment -->
|
|
4
4
|
|
|
5
|
+
## [0.13.4] - 2026-07-22
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- docs(concepts): document the spec-of-specs feature breakdown approach (#3648)
|
|
10
|
+
- fix(scripts): git-ext PowerShell emits the '# To persist' SPECIFY_FEATURE hint (parity) (#3632)
|
|
11
|
+
- fix(integrations): validate cached catalog shape before returning it (#3627)
|
|
12
|
+
- fix(bundler): reject non-list 'catalogs' in bundle-catalogs.yml with a clean error (#3623)
|
|
13
|
+
- fix(bundler): guard lazy .hostname ValueError in catalog add_source (#3644)
|
|
14
|
+
- Add Intake Authoring Governance preset to community catalog (#3643)
|
|
15
|
+
- feat: add Factory Droid CLI integration (#822) (#3587)
|
|
16
|
+
- docs(installation): document the 'py' (Python) script type (#3640)
|
|
17
|
+
- fix(init): show hyphenated /speckit-<name> in Next Steps for Forge projects (#3642)
|
|
18
|
+
- fix(extensions): render hyphenated hook invocations for Forge projects (#3641)
|
|
19
|
+
- fix(workflows): workflow add detects local YAML files case-insensitively (#3633)
|
|
20
|
+
- fix(workflows): list-literal expression ignores trailing/empty commas (#3631)
|
|
21
|
+
- fix(workflows): StepRegistry.add tolerates a corrupted non-dict existing entry (#3630)
|
|
22
|
+
- fix(bundler): reject non-mapping 'integration' in a bundle manifest (#3629)
|
|
23
|
+
- fix(workflows): command/prompt steps fail cleanly on a non-string integration (#3626)
|
|
24
|
+
- docs(core): document the 'py' (Python) --script type in the init option table (#3625)
|
|
25
|
+
- fix(workflows): gate prompt uses isdecimal() so a superscript digit doesn't crash (#3624)
|
|
26
|
+
- fix(integrations): Cline dispatches hyphenated /speckit-<cmd> invocations (#3622)
|
|
27
|
+
- docs(upgrade): document integration upgrade / extension update as the project-files upgrade path (#3326)
|
|
28
|
+
- chore: release 0.13.3, begin 0.13.4.dev0 development (#3645)
|
|
29
|
+
|
|
30
|
+
## [0.13.3] - 2026-07-22
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
|
|
34
|
+
- fix(integrations): escape Rich markup in --integration-options error messages (#3458)
|
|
35
|
+
- docs: document __SPECKIT_COMMAND_ token for portable cross-command references (#3503)
|
|
36
|
+
- [preset] Add Parallel Autonomous Run Governance preset to community catalog (#3614)
|
|
37
|
+
- docs(workflows): fix stale FanOutStep docstring claiming sequential-only execution (#3639)
|
|
38
|
+
- [bundle] Add SicarioSpec Security & Governance Bundle to community catalog (#3636)
|
|
39
|
+
- [preset] Update Autonomous Run Governance preset to v0.3.2 (#3615)
|
|
40
|
+
- fix(workflows): validate every redirect hop when fetching workflow/step catalogs (#3637)
|
|
41
|
+
- Add pipeline workflow to community catalog (#3338)
|
|
42
|
+
- [extension] Add Linear Weave extension to community catalog (#3609)
|
|
43
|
+
- docs: clarify hook priority validation semantics (#3594)
|
|
44
|
+
- fix(workflows): reject a non-string 'integration'/'model' in command & prompt steps (#3597)
|
|
45
|
+
- ci: add dependency audit workflow (#3138)
|
|
46
|
+
- Add Intake Review Governance preset to community catalog (#3613)
|
|
47
|
+
- fix(workflows): reject non-list input 'enum' instead of crashing (#3601)
|
|
48
|
+
- chore: release 0.13.2, begin 0.13.3.dev0 development (#3617)
|
|
49
|
+
|
|
5
50
|
## [0.13.2] - 2026-07-21
|
|
6
51
|
|
|
7
52
|
### 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) |
|