specify-cli 0.14.1__tar.gz → 0.14.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.14.1 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/agent_request.yml +1 -1
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/bug_report.yml +1 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/feature_request.yml +1 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/add-community-bundle.lock.yml +8 -8
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/add-community-extension.lock.yml +6 -6
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/add-community-preset.lock.yml +6 -6
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/bug-assess.lock.yml +4 -4
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/bug-fix.lock.yml +6 -6
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/bug-test.lock.yml +4 -4
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/codeql.yml +3 -3
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/docs.yml +1 -1
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/lint.yml +3 -3
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/publish-pypi.yml +3 -3
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/release-trigger.yml +1 -1
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/release.yml +1 -1
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/security.yml +4 -4
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/test.yml +4 -4
- {specify_cli-0.14.1 → specify_cli-0.14.3}/AGENTS.md +94 -5
- {specify_cli-0.14.1 → specify_cli-0.14.3}/CHANGELOG.md +56 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/PKG-INFO +1 -1
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/community/extensions.md +2 -1
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/community/presets.md +3 -2
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/integrations.md +20 -3
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/presets.md +1 -1
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/workflows.md +26 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/upgrade.md +12 -16
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/agent-context/agent-context-defaults.json +1 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/agent-context/scripts/bash/update-agent-context.sh +9 -4
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/agent-context/scripts/python/update_agent_context.py +4 -3
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/assess/README.md +2 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/assess/commands/speckit.assess.intake.md +2 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/catalog.community.json +67 -22
- {specify_cli-0.14.1 → specify_cli-0.14.3}/integrations/catalog.json +10 -1
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/catalog.community.json +45 -16
- {specify_cli-0.14.1 → specify_cli-0.14.3}/pyproject.toml +1 -1
- {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/bash/create-new-feature.sh +65 -17
- {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/powershell/create-new-feature.ps1 +65 -17
- {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/python/create_new_feature.py +73 -6
- specify_cli-0.14.3/src/specify_cli/_download_security.py +896 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/_github_http.py +11 -2
- specify_cli-0.14.3/src/specify_cli/_init_options.py +83 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/_utils.py +23 -17
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/agents.py +50 -4
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/authentication/config.py +18 -4
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/commands_impl/catalog_config.py +3 -2
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/models/catalog.py +29 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/adapters.py +18 -2
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/commands/bundle/__init__.py +85 -6
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/extensions/__init__.py +763 -190
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/extensions/_commands.py +739 -67
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/__init__.py +2 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/_helpers.py +93 -13
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/_migrate_commands.py +242 -81
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/_query_commands.py +11 -4
- specify_cli-0.14.3/src/specify_cli/integrations/alquimia/__init__.py +165 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/copilot/__init__.py +9 -1
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/kilocode/__init__.py +4 -3
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/pi/__init__.py +1 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/presets/__init__.py +2057 -214
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/presets/_commands.py +24 -18
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/_commands.py +124 -28
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/catalog.py +26 -6
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/engine.py +19 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/clarify.md +6 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/contract/test_catalog_schema.py +57 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/test_update_agent_context_python_parity.py +47 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integration/test_bundler_local_install.py +61 -0
- specify_cli-0.14.3/tests/integrations/test_integration_alquimia.py +607 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_catalog.py +34 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_claude.py +1 -1
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_copilot.py +37 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_forge.py +6 -1
- specify_cli-0.14.3/tests/integrations/test_integration_kilocode.py +76 -0
- specify_cli-0.14.3/tests/integrations/test_integration_pi.py +18 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_subcommand.py +1051 -35
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_agent_config_consistency.py +1 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_authentication.py +41 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_create_new_feature_python_parity.py +146 -14
- specify_cli-0.14.3/tests/test_download_security.py +1071 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_extension_skills.py +1438 -0
- specify_cli-0.14.3/tests/test_extension_update_hardening.py +2225 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_extensions.py +1051 -32
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_github_http.py +17 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_presets.py +4342 -61
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_registrar_path_traversal.py +46 -3
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_timestamp_branches.py +113 -4
- specify_cli-0.14.3/tests/test_utils.py +21 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_workflows.py +579 -0
- specify_cli-0.14.3/tests/unit/test_bundle_download_url.py +162 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_adapters.py +35 -2
- {specify_cli-0.14.1 → specify_cli-0.14.3}/workflows/PUBLISHING.md +2 -1
- {specify_cli-0.14.1 → specify_cli-0.14.3}/workflows/README.md +13 -1
- {specify_cli-0.14.1 → specify_cli-0.14.3}/workflows/speckit/workflow.yml +1 -0
- specify_cli-0.14.1/src/specify_cli/_download_security.py +0 -218
- specify_cli-0.14.1/src/specify_cli/_init_options.py +0 -36
- specify_cli-0.14.1/tests/integrations/test_integration_kilocode.py +0 -10
- specify_cli-0.14.1/tests/integrations/test_integration_pi.py +0 -10
- specify_cli-0.14.1/tests/test_download_security.py +0 -227
- specify_cli-0.14.1/tests/test_extension_update_hardening.py +0 -157
- specify_cli-0.14.1/tests/test_utils.py +0 -15
- specify_cli-0.14.1/tests/unit/test_bundle_download_url.py +0 -42
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.devcontainer/devcontainer.json +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.devcontainer/post-create.sh +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.editorconfig +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.gitattributes +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/CODEOWNERS +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/bundle_submission.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/preset_submission.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/aw/actions-lock.json +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/dependabot.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/scripts/check_security_requirements.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/security-audit-requirements.txt +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/skills/add-community-extension/SKILL.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/RELEASE-PROCESS.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/add-community-bundle.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/add-community-extension.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/add-community-preset.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/bug-assess.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/bug-fix.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/bug-test.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/catalog-assign.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/stale.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.gitignore +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.markdownlint-cli2.jsonc +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.pre-commit-config.yaml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/.zenodo.json +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/CITATION.cff +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/CODE_OF_CONDUCT.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/CONTRIBUTING.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/DEVELOPMENT.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/LICENSE +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/README.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/SECURITY.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/SUPPORT.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/bundles/catalog.community.json +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/.gitignore +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/README.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/community/bundles.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/community/friends.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/community/overview.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/community/walkthroughs.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/concepts/complex-features.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/concepts/sdd.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/concepts/spec-of-specs.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/concepts/spec-persistence.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/docfx.json +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/guides/evolving-specs.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/guides/monorepo.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/index.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/install/air-gapped.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/install/one-time.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/install/pipx.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/install/pypi.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/install/uv.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/installation.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/local-development.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/quickstart.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/agentic-bugfix.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/agentic-sdd.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/authentication.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/bundles.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/core.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/extensions.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/overview.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/template/public/main.css +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/toc.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/examples/bundles/business-analyst/README.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/examples/bundles/business-analyst/bundle.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/examples/bundles/developer/README.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/examples/bundles/developer/bundle.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/examples/bundles/product-manager/README.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/examples/bundles/product-manager/bundle.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/examples/bundles/security-researcher/README.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/examples/bundles/security-researcher/bundle.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/EXTENSION-API-REFERENCE.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/EXTENSION-PUBLISHING-GUIDE.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/EXTENSION-USER-GUIDE.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/README.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/agent-context/README.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/agent-context/agent-context-config.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/agent-context/extension.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/assess/commands/speckit.assess.decide.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/assess/commands/speckit.assess.define.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/assess/commands/speckit.assess.research.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/assess/commands/speckit.assess.shape.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/assess/extension.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/bug/README.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/bug/commands/speckit.bug.assess.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/bug/commands/speckit.bug.fix.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/bug/commands/speckit.bug.test.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/bug/extension.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/catalog.json +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/README.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/commands/speckit.git.commit.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/commands/speckit.git.feature.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/commands/speckit.git.initialize.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/commands/speckit.git.remote.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/commands/speckit.git.validate.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/config-template.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/extension.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/git-config.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/bash/auto-commit.sh +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/bash/git-common.sh +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/python/auto_commit.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/python/create_new_feature_branch.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/python/git_common.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/python/initialize_repo.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/selftest/commands/selftest.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/selftest/extension.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/template/.gitignore +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/template/CHANGELOG.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/template/EXAMPLE-README.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/template/LICENSE +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/template/README.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/template/commands/example.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/template/config-template.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/template/extension.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/integrations/CONTRIBUTING.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/integrations/README.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/integrations/catalog.community.json +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/media/bootstrap-claude-code.gif +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/media/logo_large.webp +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/media/logo_small.webp +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/media/spec-kit-video-header.jpg +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/media/specify_cli.gif +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/newsletters/2026-April.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/newsletters/2026-February.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/newsletters/2026-June.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/newsletters/2026-March.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/newsletters/2026-May.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/ARCHITECTURE.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/PUBLISHING.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/README.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/catalog.json +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/lean/README.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/lean/commands/speckit.constitution.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/lean/commands/speckit.implement.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/lean/commands/speckit.plan.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/lean/commands/speckit.specify.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/lean/commands/speckit.tasks.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/lean/preset.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/scaffold/README.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/scaffold/commands/speckit.specify.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/scaffold/preset.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/scaffold/templates/myext-template.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/scaffold/templates/spec-template.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/self-test/commands/speckit.specify.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/self-test/commands/speckit.wrap-test.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/self-test/preset.yml +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/self-test/templates/checklist-template.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/self-test/templates/constitution-template.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/self-test/templates/plan-template.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/self-test/templates/spec-template.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/self-test/templates/tasks-template.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/bash/check-prerequisites.sh +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/bash/common.sh +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/bash/setup-plan.sh +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/bash/setup-tasks.sh +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/powershell/check-prerequisites.ps1 +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/powershell/common.ps1 +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/powershell/setup-plan.ps1 +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/powershell/setup-tasks.ps1 +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/python/check_prerequisites.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/python/common.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/python/setup_plan.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/python/setup_tasks.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/spec-driven.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/spec-kit.code-workspace +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/_agent_config.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/_assets.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/_console.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/_invocation_style.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/_project.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/_toml_string.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/_version.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/authentication/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/authentication/azure_devops.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/authentication/base.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/authentication/github.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/authentication/http.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/commands_impl/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/lib/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/lib/project.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/lib/versioning.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/lib/yamlio.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/models/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/models/manifest.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/models/records.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/catalog_stack.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/conflict.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/installer.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/packager.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/primitives.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/references.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/resolver.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/validator.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/catalogs.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/commands/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/commands/init.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integration_runtime.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integration_scaffold.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integration_state.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integration_status.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/_commands.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/_install_commands.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/_scaffold_commands.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/agy/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/amp/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/auggie/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/base.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/bob/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/catalog.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/claude/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/cline/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/codex/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/devin/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/droid/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/firebender/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/forge/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/gemini/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/generic/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/goose/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/grok/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/hermes/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/junie/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/kimi/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/lingma/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/manifest.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/omp/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/opencode/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/qwen/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/rovodev/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/shai/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/trae/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/vibe/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/zcode/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/zed/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/shared_infra.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/base.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/expressions.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/overlays/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/overlays/_commands.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/overlays/composer.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/overlays/layer_sources.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/overlays/merge.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/overlays/schema.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/command/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/do_while/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/fan_in/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/fan_out/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/gate/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/if_then/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/init/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/prompt/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/shell/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/switch/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/while_loop/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/checklist-template.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/analyze.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/checklist.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/constitution.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/converge.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/implement.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/plan.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/specify.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/tasks.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/taskstoissues.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/constitution-template.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/plan-template.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/spec-template.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/tasks-template.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/vscode-settings.json +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/auth_helpers.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/bundler_helpers.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/conftest.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/contract/test_bundle_cli.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/contract/test_manifest_schema.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/contract/test_wheel_core_pack_scripts.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/assess/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/assess/test_assess_extension.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/bug/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/bug/test_bug_extension.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/git/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/git/test_git_extension.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/git/test_git_extension_python_parity.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/test_agent_context_cli_free.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/test_extension_agent_context.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/test_update_agent_context_feature_json.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/hooks/TESTING.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/hooks/plan.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/hooks/spec.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/hooks/tasks.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/http_helpers.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integration/test_bundler_catalog_stack.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integration/test_bundler_init_install.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integration/test_bundler_install_flow.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integration/test_bundler_offline.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integration/test_bundler_security_paths.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/__init__.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/conftest.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_base.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_cli.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_extra_args.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_home_isolation.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_agy.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_amp.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_auggie.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_base_markdown.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_base_skills.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_base_toml.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_base_yaml.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_bob.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_cline.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_codebuddy.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_codex.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_cursor_agent.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_devin.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_droid.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_firebender.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_gemini.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_generic.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_goose.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_grok.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_hermes.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_junie.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_kimi.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_kiro_cli.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_lingma.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_omp.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_opencode.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_qodercli.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_qwen.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_rovodev.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_scaffold.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_shai.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_state.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_tabnine.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_trae.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_vibe.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_zcode.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_zed.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_manifest.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_registry.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_skill_frontmatter_quoting.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/parity_helpers.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/self_upgrade_helpers.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_branch_numbering.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_check_prerequisites_paths_only.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_check_prerequisites_python_parity.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_check_tool.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_cli_version.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_command_template_py_scripts.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_commands_package.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_console_imports.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_extension_registration.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_github_workflows.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_init_dir.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_init_dir_cli.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_live_transient_windows.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_merge.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_post_process.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_ps1_encoding.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_security_workflow.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_self_upgrade_detection.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_self_upgrade_execution.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_self_upgrade_guidance.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_self_upgrade_verification.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_setup_plan_feature_json.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_setup_plan_no_overwrite.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_setup_plan_python_parity.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_setup_tasks.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_setup_tasks_python_parity.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_shared_infra_integrity.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_skill_placeholder_py.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_specify_template_numbering.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_upgrade.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_utils_assets_imports.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_version_imports.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_workflow_run_without_project.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_catalog_config.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_conflict.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_packager.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_primitives.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_records.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_references.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_resolver.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_validator.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_versioning.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_yamlio.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/workflows/conftest.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/workflows/test_overlay_commands.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/workflows/test_overlay_composer.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/workflows/test_overlay_layer_sources.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/workflows/test_overlay_merge.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/workflows/test_overlay_schema.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/workflows/test_overlay_security.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/workflows/test_resolver_integration.py +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/workflows/ARCHITECTURE.md +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/workflows/catalog.community.json +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/workflows/catalog.json +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/workflows/step-catalog.community.json +0 -0
- {specify_cli-0.14.1 → specify_cli-0.14.3}/workflows/step-catalog.json +0 -0
|
@@ -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, 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
|
|
11
|
+
**Currently supported agents**: Alquimia AI, 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
|
|
@@ -33,10 +33,10 @@
|
|
|
33
33
|
# - GITHUB_TOKEN
|
|
34
34
|
#
|
|
35
35
|
# Custom actions used:
|
|
36
|
-
# - actions/checkout@
|
|
36
|
+
# - actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
37
37
|
# - actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
38
38
|
# - actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
|
39
|
-
# - actions/setup-node@
|
|
39
|
+
# - actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
40
40
|
# - actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
41
41
|
# - github/gh-aw-actions/setup@c0338fef4749d08c21f8f975fb0e37efa17dda47 # v0.79.8
|
|
42
42
|
#
|
|
@@ -162,7 +162,7 @@ jobs:
|
|
|
162
162
|
env:
|
|
163
163
|
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
|
|
164
164
|
- name: Checkout .github and .agents folders
|
|
165
|
-
uses: actions/checkout@
|
|
165
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
166
166
|
with:
|
|
167
167
|
persist-credentials: false
|
|
168
168
|
sparse-checkout: |
|
|
@@ -434,7 +434,7 @@ jobs:
|
|
|
434
434
|
echo "GH_AW_SAFE_OUTPUTS_TOOLS_PATH=${RUNNER_TEMP}/gh-aw/safeoutputs/tools.json"
|
|
435
435
|
} >> "$GITHUB_OUTPUT"
|
|
436
436
|
- name: Checkout repository
|
|
437
|
-
uses: actions/checkout@
|
|
437
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
438
438
|
with:
|
|
439
439
|
persist-credentials: false
|
|
440
440
|
fetch-depth: 0
|
|
@@ -1352,7 +1352,7 @@ jobs:
|
|
|
1352
1352
|
echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/agent_output.json" >> "$GITHUB_OUTPUT"
|
|
1353
1353
|
- name: Checkout repository for patch context
|
|
1354
1354
|
if: needs.agent.outputs.has_patch == 'true'
|
|
1355
|
-
uses: actions/checkout@
|
|
1355
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
1356
1356
|
with:
|
|
1357
1357
|
persist-credentials: false
|
|
1358
1358
|
# --- Threat Detection ---
|
|
@@ -1419,7 +1419,7 @@ jobs:
|
|
|
1419
1419
|
mkdir -p /tmp/gh-aw/threat-detection
|
|
1420
1420
|
touch /tmp/gh-aw/threat-detection/detection.log
|
|
1421
1421
|
- name: Setup Node.js
|
|
1422
|
-
uses: actions/setup-node@
|
|
1422
|
+
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
1423
1423
|
with:
|
|
1424
1424
|
node-version: '24'
|
|
1425
1425
|
package-manager-cache: false
|
|
@@ -1678,7 +1678,7 @@ jobs:
|
|
|
1678
1678
|
await main();
|
|
1679
1679
|
- name: Checkout repository (trusted default branch for comment events)
|
|
1680
1680
|
if: (!cancelled()) && needs.agent.result != 'skipped' && contains(needs.agent.outputs.output_types, 'create_pull_request') && (github.event_name == 'issue_comment' || github.event_name == 'pull_request_review_comment')
|
|
1681
|
-
uses: actions/checkout@
|
|
1681
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
1682
1682
|
with:
|
|
1683
1683
|
ref: ${{ github.event.repository.default_branch }}
|
|
1684
1684
|
token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
|
@@ -1686,7 +1686,7 @@ jobs:
|
|
|
1686
1686
|
fetch-depth: 0
|
|
1687
1687
|
- name: Checkout repository
|
|
1688
1688
|
if: (!cancelled()) && needs.agent.result != 'skipped' && contains(needs.agent.outputs.output_types, 'create_pull_request') && github.event_name != 'issue_comment' && github.event_name != 'pull_request_review_comment'
|
|
1689
|
-
uses: actions/checkout@
|
|
1689
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
1690
1690
|
with:
|
|
1691
1691
|
ref: ${{ steps.extract-base-branch.outputs.base-branch || github.base_ref || github.event.pull_request.base.ref || github.ref_name || github.event.repository.default_branch }}
|
|
1692
1692
|
token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
{specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/add-community-extension.lock.yml
RENAMED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
# - GITHUB_TOKEN
|
|
34
34
|
#
|
|
35
35
|
# Custom actions used:
|
|
36
|
-
# - actions/checkout@
|
|
36
|
+
# - actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
37
37
|
# - actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
38
38
|
# - actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
|
39
39
|
# - actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
@@ -162,7 +162,7 @@ jobs:
|
|
|
162
162
|
env:
|
|
163
163
|
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
|
|
164
164
|
- name: Checkout .github and .agents folders
|
|
165
|
-
uses: actions/checkout@
|
|
165
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
166
166
|
with:
|
|
167
167
|
persist-credentials: false
|
|
168
168
|
sparse-checkout: |
|
|
@@ -434,7 +434,7 @@ jobs:
|
|
|
434
434
|
echo "GH_AW_SAFE_OUTPUTS_TOOLS_PATH=${RUNNER_TEMP}/gh-aw/safeoutputs/tools.json"
|
|
435
435
|
} >> "$GITHUB_OUTPUT"
|
|
436
436
|
- name: Checkout repository
|
|
437
|
-
uses: actions/checkout@
|
|
437
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
438
438
|
with:
|
|
439
439
|
persist-credentials: false
|
|
440
440
|
fetch-depth: 0
|
|
@@ -1332,7 +1332,7 @@ jobs:
|
|
|
1332
1332
|
echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/agent_output.json" >> "$GITHUB_OUTPUT"
|
|
1333
1333
|
- name: Checkout repository for patch context
|
|
1334
1334
|
if: needs.agent.outputs.has_patch == 'true'
|
|
1335
|
-
uses: actions/checkout@
|
|
1335
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
1336
1336
|
with:
|
|
1337
1337
|
persist-credentials: false
|
|
1338
1338
|
# --- Threat Detection ---
|
|
@@ -1658,7 +1658,7 @@ jobs:
|
|
|
1658
1658
|
await main();
|
|
1659
1659
|
- name: Checkout repository (trusted default branch for comment events)
|
|
1660
1660
|
if: (!cancelled()) && needs.agent.result != 'skipped' && contains(needs.agent.outputs.output_types, 'create_pull_request') && (github.event_name == 'issue_comment' || github.event_name == 'pull_request_review_comment')
|
|
1661
|
-
uses: actions/checkout@
|
|
1661
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
1662
1662
|
with:
|
|
1663
1663
|
ref: ${{ github.event.repository.default_branch }}
|
|
1664
1664
|
token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
|
@@ -1666,7 +1666,7 @@ jobs:
|
|
|
1666
1666
|
fetch-depth: 0
|
|
1667
1667
|
- name: Checkout repository
|
|
1668
1668
|
if: (!cancelled()) && needs.agent.result != 'skipped' && contains(needs.agent.outputs.output_types, 'create_pull_request') && github.event_name != 'issue_comment' && github.event_name != 'pull_request_review_comment'
|
|
1669
|
-
uses: actions/checkout@
|
|
1669
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
1670
1670
|
with:
|
|
1671
1671
|
ref: ${{ steps.extract-base-branch.outputs.base-branch || github.base_ref || github.event.pull_request.base.ref || github.ref_name || github.event.repository.default_branch }}
|
|
1672
1672
|
token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
# - GITHUB_TOKEN
|
|
34
34
|
#
|
|
35
35
|
# Custom actions used:
|
|
36
|
-
# - actions/checkout@
|
|
36
|
+
# - actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
37
37
|
# - actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
38
38
|
# - actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
|
39
39
|
# - actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
@@ -162,7 +162,7 @@ jobs:
|
|
|
162
162
|
env:
|
|
163
163
|
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
|
|
164
164
|
- name: Checkout .github and .agents folders
|
|
165
|
-
uses: actions/checkout@
|
|
165
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
166
166
|
with:
|
|
167
167
|
persist-credentials: false
|
|
168
168
|
sparse-checkout: |
|
|
@@ -434,7 +434,7 @@ jobs:
|
|
|
434
434
|
echo "GH_AW_SAFE_OUTPUTS_TOOLS_PATH=${RUNNER_TEMP}/gh-aw/safeoutputs/tools.json"
|
|
435
435
|
} >> "$GITHUB_OUTPUT"
|
|
436
436
|
- name: Checkout repository
|
|
437
|
-
uses: actions/checkout@
|
|
437
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
438
438
|
with:
|
|
439
439
|
persist-credentials: false
|
|
440
440
|
fetch-depth: 0
|
|
@@ -1332,7 +1332,7 @@ jobs:
|
|
|
1332
1332
|
echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/agent_output.json" >> "$GITHUB_OUTPUT"
|
|
1333
1333
|
- name: Checkout repository for patch context
|
|
1334
1334
|
if: needs.agent.outputs.has_patch == 'true'
|
|
1335
|
-
uses: actions/checkout@
|
|
1335
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
1336
1336
|
with:
|
|
1337
1337
|
persist-credentials: false
|
|
1338
1338
|
# --- Threat Detection ---
|
|
@@ -1658,7 +1658,7 @@ jobs:
|
|
|
1658
1658
|
await main();
|
|
1659
1659
|
- name: Checkout repository (trusted default branch for comment events)
|
|
1660
1660
|
if: (!cancelled()) && needs.agent.result != 'skipped' && contains(needs.agent.outputs.output_types, 'create_pull_request') && (github.event_name == 'issue_comment' || github.event_name == 'pull_request_review_comment')
|
|
1661
|
-
uses: actions/checkout@
|
|
1661
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
1662
1662
|
with:
|
|
1663
1663
|
ref: ${{ github.event.repository.default_branch }}
|
|
1664
1664
|
token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
|
@@ -1666,7 +1666,7 @@ jobs:
|
|
|
1666
1666
|
fetch-depth: 0
|
|
1667
1667
|
- name: Checkout repository
|
|
1668
1668
|
if: (!cancelled()) && needs.agent.result != 'skipped' && contains(needs.agent.outputs.output_types, 'create_pull_request') && github.event_name != 'issue_comment' && github.event_name != 'pull_request_review_comment'
|
|
1669
|
-
uses: actions/checkout@
|
|
1669
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
1670
1670
|
with:
|
|
1671
1671
|
ref: ${{ steps.extract-base-branch.outputs.base-branch || github.base_ref || github.event.pull_request.base.ref || github.ref_name || github.event.repository.default_branch }}
|
|
1672
1672
|
token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
# - GITHUB_TOKEN
|
|
33
33
|
#
|
|
34
34
|
# Custom actions used:
|
|
35
|
-
# - actions/checkout@
|
|
35
|
+
# - actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
36
36
|
# - actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
37
37
|
# - actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
|
38
38
|
# - actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
@@ -161,7 +161,7 @@ jobs:
|
|
|
161
161
|
env:
|
|
162
162
|
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
|
|
163
163
|
- name: Checkout .github and .agents folders
|
|
164
|
-
uses: actions/checkout@
|
|
164
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
165
165
|
with:
|
|
166
166
|
persist-credentials: false
|
|
167
167
|
sparse-checkout: |
|
|
@@ -430,7 +430,7 @@ jobs:
|
|
|
430
430
|
echo "GH_AW_SAFE_OUTPUTS_TOOLS_PATH=${RUNNER_TEMP}/gh-aw/safeoutputs/tools.json"
|
|
431
431
|
} >> "$GITHUB_OUTPUT"
|
|
432
432
|
- name: Checkout repository
|
|
433
|
-
uses: actions/checkout@
|
|
433
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
434
434
|
with:
|
|
435
435
|
persist-credentials: false
|
|
436
436
|
fetch-depth: 0
|
|
@@ -1277,7 +1277,7 @@ jobs:
|
|
|
1277
1277
|
echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/agent_output.json" >> "$GITHUB_OUTPUT"
|
|
1278
1278
|
- name: Checkout repository for patch context
|
|
1279
1279
|
if: needs.agent.outputs.has_patch == 'true'
|
|
1280
|
-
uses: actions/checkout@
|
|
1280
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
1281
1281
|
with:
|
|
1282
1282
|
persist-credentials: false
|
|
1283
1283
|
# --- Threat Detection ---
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
# - GITHUB_TOKEN
|
|
34
34
|
#
|
|
35
35
|
# Custom actions used:
|
|
36
|
-
# - actions/checkout@
|
|
36
|
+
# - actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
37
37
|
# - actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
38
38
|
# - actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
|
39
39
|
# - actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
@@ -162,7 +162,7 @@ jobs:
|
|
|
162
162
|
env:
|
|
163
163
|
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
|
|
164
164
|
- name: Checkout .github and .agents folders
|
|
165
|
-
uses: actions/checkout@
|
|
165
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
166
166
|
with:
|
|
167
167
|
persist-credentials: false
|
|
168
168
|
sparse-checkout: |
|
|
@@ -434,7 +434,7 @@ jobs:
|
|
|
434
434
|
echo "GH_AW_SAFE_OUTPUTS_TOOLS_PATH=${RUNNER_TEMP}/gh-aw/safeoutputs/tools.json"
|
|
435
435
|
} >> "$GITHUB_OUTPUT"
|
|
436
436
|
- name: Checkout repository
|
|
437
|
-
uses: actions/checkout@
|
|
437
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
438
438
|
with:
|
|
439
439
|
persist-credentials: false
|
|
440
440
|
fetch-depth: 0
|
|
@@ -1338,7 +1338,7 @@ jobs:
|
|
|
1338
1338
|
echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/agent_output.json" >> "$GITHUB_OUTPUT"
|
|
1339
1339
|
- name: Checkout repository for patch context
|
|
1340
1340
|
if: needs.agent.outputs.has_patch == 'true'
|
|
1341
|
-
uses: actions/checkout@
|
|
1341
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
1342
1342
|
with:
|
|
1343
1343
|
persist-credentials: false
|
|
1344
1344
|
# --- Threat Detection ---
|
|
@@ -1664,7 +1664,7 @@ jobs:
|
|
|
1664
1664
|
await main();
|
|
1665
1665
|
- name: Checkout repository (trusted default branch for comment events)
|
|
1666
1666
|
if: (!cancelled()) && needs.agent.result != 'skipped' && contains(needs.agent.outputs.output_types, 'create_pull_request') && (github.event_name == 'issue_comment' || github.event_name == 'pull_request_review_comment')
|
|
1667
|
-
uses: actions/checkout@
|
|
1667
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
1668
1668
|
with:
|
|
1669
1669
|
ref: ${{ github.event.repository.default_branch }}
|
|
1670
1670
|
token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
|
@@ -1672,7 +1672,7 @@ jobs:
|
|
|
1672
1672
|
fetch-depth: 0
|
|
1673
1673
|
- name: Checkout repository
|
|
1674
1674
|
if: (!cancelled()) && needs.agent.result != 'skipped' && contains(needs.agent.outputs.output_types, 'create_pull_request') && github.event_name != 'issue_comment' && github.event_name != 'pull_request_review_comment'
|
|
1675
|
-
uses: actions/checkout@
|
|
1675
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
1676
1676
|
with:
|
|
1677
1677
|
ref: ${{ steps.extract-base-branch.outputs.base-branch || github.base_ref || github.event.pull_request.base.ref || github.ref_name || github.event.repository.default_branch }}
|
|
1678
1678
|
token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
# - GITHUB_TOKEN
|
|
33
33
|
#
|
|
34
34
|
# Custom actions used:
|
|
35
|
-
# - actions/checkout@
|
|
35
|
+
# - actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
36
36
|
# - actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
37
37
|
# - actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
|
38
38
|
# - actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
@@ -161,7 +161,7 @@ jobs:
|
|
|
161
161
|
env:
|
|
162
162
|
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
|
|
163
163
|
- name: Checkout .github and .agents folders
|
|
164
|
-
uses: actions/checkout@
|
|
164
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
165
165
|
with:
|
|
166
166
|
persist-credentials: false
|
|
167
167
|
sparse-checkout: |
|
|
@@ -431,7 +431,7 @@ jobs:
|
|
|
431
431
|
echo "GH_AW_SAFE_OUTPUTS_TOOLS_PATH=${RUNNER_TEMP}/gh-aw/safeoutputs/tools.json"
|
|
432
432
|
} >> "$GITHUB_OUTPUT"
|
|
433
433
|
- name: Checkout repository
|
|
434
|
-
uses: actions/checkout@
|
|
434
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
435
435
|
with:
|
|
436
436
|
persist-credentials: false
|
|
437
437
|
fetch-depth: 0
|
|
@@ -1299,7 +1299,7 @@ jobs:
|
|
|
1299
1299
|
echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/agent_output.json" >> "$GITHUB_OUTPUT"
|
|
1300
1300
|
- name: Checkout repository for patch context
|
|
1301
1301
|
if: needs.agent.outputs.has_patch == 'true'
|
|
1302
|
-
uses: actions/checkout@
|
|
1302
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
1303
1303
|
with:
|
|
1304
1304
|
persist-credentials: false
|
|
1305
1305
|
# --- Threat Detection ---
|
|
@@ -19,14 +19,14 @@ jobs:
|
|
|
19
19
|
language: [ 'actions', 'python' ]
|
|
20
20
|
steps:
|
|
21
21
|
- name: Checkout repository
|
|
22
|
-
uses: actions/checkout@
|
|
22
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
23
23
|
|
|
24
24
|
- name: Initialize CodeQL
|
|
25
|
-
uses: github/codeql-action/init@
|
|
25
|
+
uses: github/codeql-action/init@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4
|
|
26
26
|
with:
|
|
27
27
|
languages: ${{ matrix.language }}
|
|
28
28
|
|
|
29
29
|
- name: Perform CodeQL Analysis
|
|
30
|
-
uses: github/codeql-action/analyze@
|
|
30
|
+
uses: github/codeql-action/analyze@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4
|
|
31
31
|
with:
|
|
32
32
|
category: "/language:${{ matrix.language }}"
|
|
@@ -30,7 +30,7 @@ jobs:
|
|
|
30
30
|
runs-on: ubuntu-latest
|
|
31
31
|
steps:
|
|
32
32
|
- name: Checkout
|
|
33
|
-
uses: actions/checkout@
|
|
33
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
34
34
|
with:
|
|
35
35
|
fetch-depth: 0 # Fetch all history for git info
|
|
36
36
|
|
|
@@ -12,7 +12,7 @@ jobs:
|
|
|
12
12
|
runs-on: ubuntu-latest
|
|
13
13
|
steps:
|
|
14
14
|
- name: Checkout
|
|
15
|
-
uses: actions/checkout@
|
|
15
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
16
16
|
with:
|
|
17
17
|
fetch-depth: 1
|
|
18
18
|
|
|
@@ -37,7 +37,7 @@ jobs:
|
|
|
37
37
|
fi
|
|
38
38
|
|
|
39
39
|
- name: Run markdownlint-cli2
|
|
40
|
-
uses: DavidAnson/markdownlint-cli2-action@
|
|
40
|
+
uses: DavidAnson/markdownlint-cli2-action@6bf21b07787794f89a243495939cd651942aeabe # v24.1.0
|
|
41
41
|
with:
|
|
42
42
|
globs: |
|
|
43
43
|
'**/*.md'
|
|
@@ -47,7 +47,7 @@ jobs:
|
|
|
47
47
|
runs-on: ubuntu-latest
|
|
48
48
|
steps:
|
|
49
49
|
- name: Checkout
|
|
50
|
-
uses: actions/checkout@
|
|
50
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
51
51
|
|
|
52
52
|
# shellcheck is preinstalled on ubuntu-latest runners.
|
|
53
53
|
# Start at --severity=error to block real bugs without flagging style
|
|
@@ -27,12 +27,12 @@ jobs:
|
|
|
27
27
|
fi
|
|
28
28
|
|
|
29
29
|
- name: Checkout release tag
|
|
30
|
-
uses: actions/checkout@
|
|
30
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
31
31
|
with:
|
|
32
32
|
ref: refs/tags/${{ inputs.tag }}
|
|
33
33
|
|
|
34
34
|
- name: Install uv
|
|
35
|
-
uses: astral-sh/setup-uv@
|
|
35
|
+
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
|
|
36
36
|
|
|
37
37
|
- name: Set up Python
|
|
38
38
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
|
|
@@ -74,7 +74,7 @@ jobs:
|
|
|
74
74
|
path: dist/
|
|
75
75
|
|
|
76
76
|
- name: Install uv
|
|
77
|
-
uses: astral-sh/setup-uv@
|
|
77
|
+
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
|
|
78
78
|
|
|
79
79
|
- name: Publish to PyPI
|
|
80
80
|
run: uv publish
|
|
@@ -16,7 +16,7 @@ jobs:
|
|
|
16
16
|
pull-requests: write
|
|
17
17
|
steps:
|
|
18
18
|
- name: Checkout repository
|
|
19
|
-
uses: actions/checkout@
|
|
19
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
20
20
|
with:
|
|
21
21
|
fetch-depth: 0
|
|
22
22
|
token: ${{ secrets.RELEASE_PAT }}
|
|
@@ -12,7 +12,7 @@ jobs:
|
|
|
12
12
|
contents: write
|
|
13
13
|
steps:
|
|
14
14
|
- name: Checkout repository
|
|
15
|
-
uses: actions/checkout@
|
|
15
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
16
16
|
with:
|
|
17
17
|
fetch-depth: 0
|
|
18
18
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -19,12 +19,12 @@ jobs:
|
|
|
19
19
|
runs-on: ubuntu-latest
|
|
20
20
|
steps:
|
|
21
21
|
- name: Checkout
|
|
22
|
-
uses: actions/checkout@
|
|
22
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
23
23
|
with:
|
|
24
24
|
fetch-depth: 0
|
|
25
25
|
|
|
26
26
|
- name: Install uv
|
|
27
|
-
uses: astral-sh/setup-uv@
|
|
27
|
+
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
|
|
28
28
|
|
|
29
29
|
- name: Set up Python
|
|
30
30
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
|
|
@@ -52,10 +52,10 @@ jobs:
|
|
|
52
52
|
python-version: ["3.11", "3.12", "3.13", "3.14"]
|
|
53
53
|
steps:
|
|
54
54
|
- name: Checkout
|
|
55
|
-
uses: actions/checkout@
|
|
55
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
56
56
|
|
|
57
57
|
- name: Install uv
|
|
58
|
-
uses: astral-sh/setup-uv@
|
|
58
|
+
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
|
|
59
59
|
|
|
60
60
|
- name: Set up Python ${{ matrix.python-version }}
|
|
61
61
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
|
|
@@ -13,10 +13,10 @@ jobs:
|
|
|
13
13
|
runs-on: ubuntu-latest
|
|
14
14
|
steps:
|
|
15
15
|
- name: Checkout
|
|
16
|
-
uses: actions/checkout@
|
|
16
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
17
17
|
|
|
18
18
|
- name: Install uv
|
|
19
|
-
uses: astral-sh/setup-uv@
|
|
19
|
+
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
|
|
20
20
|
|
|
21
21
|
- name: Set up Python
|
|
22
22
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
|
|
@@ -34,10 +34,10 @@ jobs:
|
|
|
34
34
|
python-version: ["3.13", "3.14"]
|
|
35
35
|
steps:
|
|
36
36
|
- name: Checkout
|
|
37
|
-
uses: actions/checkout@
|
|
37
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
38
38
|
|
|
39
39
|
- name: Install uv
|
|
40
|
-
uses: astral-sh/setup-uv@
|
|
40
|
+
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
|
|
41
41
|
|
|
42
42
|
- name: Set up Python ${{ matrix.python-version }}
|
|
43
43
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
|
|
@@ -10,6 +10,20 @@ The toolkit supports multiple AI coding assistants, allowing teams to use their
|
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
+
## Quickstart — Add a New Integration in 5 Steps
|
|
14
|
+
|
|
15
|
+
If you are new to the codebase and want to add support for a new AI agent, here is the shortest path from zero to a working integration:
|
|
16
|
+
|
|
17
|
+
1. **Choose a base class** — most agents only need `MarkdownIntegration`. See [Choose a base class](#1-choose-a-base-class).
|
|
18
|
+
2. **Create a subpackage** — add `src/specify_cli/integrations/<package_dir>/__init__.py` with the required `key`, `config`, and `registrar_config` fields.
|
|
19
|
+
3. **Register it** — add one import and one `_register()` call in `src/specify_cli/integrations/__init__.py` (both alphabetical).
|
|
20
|
+
4. **Write a test file** — create `tests/integrations/test_integration_<key>.py` (hyphens in the key become underscores in the filename).
|
|
21
|
+
5. **Run and verify** — use `specify init --integration <key>` to exercise the full install/uninstall cycle.
|
|
22
|
+
|
|
23
|
+
Each step is expanded under [Adding a New Integration](#adding-a-new-integration). Note that agent **context files** (`CLAUDE.md`, `AGENTS.md`, …) are **not** handled by the integration — that is owned by the opt-in `agent-context` extension; see [Context file behavior](#4-context-file-behavior).
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
13
27
|
## Integration Architecture
|
|
14
28
|
|
|
15
29
|
Each AI agent is a self-contained **integration subpackage** under `src/specify_cli/integrations/<key>/`. The subpackage exposes a single class that declares all metadata and inherits setup/teardown logic from a base class. Built-in integrations are then instantiated and added to the global `INTEGRATION_REGISTRY` by `src/specify_cli/integrations/__init__.py` via `_register_builtins()`.
|
|
@@ -34,6 +48,30 @@ The registry is the **single source of truth for Python integration metadata**.
|
|
|
34
48
|
|
|
35
49
|
---
|
|
36
50
|
|
|
51
|
+
## IntegrationManifest — File Tracking
|
|
52
|
+
|
|
53
|
+
`manifest.py` provides the `IntegrationManifest` class, which records every file an integration installs. This record is what makes uninstall reliable and safe.
|
|
54
|
+
|
|
55
|
+
### How it works
|
|
56
|
+
|
|
57
|
+
`setup()` receives an `IntegrationManifest` and writes files through it rather than touching the filesystem directly:
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
# Produce a new file and record its hash for later verification.
|
|
61
|
+
manifest.record_file("commands/speckit.plan.md", processed_content)
|
|
62
|
+
|
|
63
|
+
# Adopt a pre-existing file the integration is now responsible for.
|
|
64
|
+
manifest.record_existing(".vscode/settings.json")
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
The manifest is persisted at `.specify/integrations/<key>.manifest.json` (one per integration, keyed by `key`) and stores a SHA-256 hash per file. When the user runs `specify integration uninstall <key>`, `teardown()` delegates to `manifest.uninstall()`, which removes only files whose current hash still matches the recorded value — so files the user later edited by hand are skipped, not clobbered (use `specify integration uninstall <key> --force` to remove modified tracked files anyway).
|
|
68
|
+
|
|
69
|
+
### Why this matters
|
|
70
|
+
|
|
71
|
+
Without hash-tracked manifests, uninstall would either remove files it should not (destructive) or leave orphans behind (messy). If you write a custom `setup()`, route **every** file you create through `manifest.record_file(...)` (or `record_existing(...)` for files you adopt) so uninstall can reason about them.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
37
75
|
## Adding a New Integration
|
|
38
76
|
|
|
39
77
|
### 1. Choose a base class
|
|
@@ -64,13 +102,14 @@ class KilocodeIntegration(MarkdownIntegration):
|
|
|
64
102
|
key = "kilocode"
|
|
65
103
|
config = {
|
|
66
104
|
"name": "Kilo Code",
|
|
67
|
-
"folder": ".
|
|
68
|
-
"commands_subdir": "
|
|
105
|
+
"folder": ".kilo/",
|
|
106
|
+
"commands_subdir": "commands",
|
|
69
107
|
"install_url": None,
|
|
70
108
|
"requires_cli": False,
|
|
71
109
|
}
|
|
72
110
|
registrar_config = {
|
|
73
|
-
"dir": ".
|
|
111
|
+
"dir": ".kilo/commands",
|
|
112
|
+
"legacy_dir": ".kilocode/workflows",
|
|
74
113
|
"format": "markdown",
|
|
75
114
|
"args": "$ARGUMENTS",
|
|
76
115
|
"extension": ".md",
|
|
@@ -201,8 +240,8 @@ Only add custom setup logic when the agent needs non-standard behavior. Integrat
|
|
|
201
240
|
specify init my-project --integration <key>
|
|
202
241
|
|
|
203
242
|
# Verify files were created in the commands directory configured by
|
|
204
|
-
# config["folder"] + config["commands_subdir"] (for example, .
|
|
205
|
-
ls -R my-project/.
|
|
243
|
+
# config["folder"] + config["commands_subdir"] (for example, .kilo/commands/)
|
|
244
|
+
ls -R my-project/.kilo/commands/
|
|
206
245
|
|
|
207
246
|
# Uninstall cleanly
|
|
208
247
|
cd my-project && specify integration uninstall <key>
|
|
@@ -510,4 +549,54 @@ Disclosure is **continuous**, not a one-time event. A single AI-disclosure parag
|
|
|
510
549
|
|
|
511
550
|
---
|
|
512
551
|
|
|
552
|
+
## Error Handling and Debugging
|
|
553
|
+
|
|
554
|
+
### Common Errors and Fixes
|
|
555
|
+
|
|
556
|
+
| Symptom | Likely Cause | Fix |
|
|
557
|
+
|---|---|---|
|
|
558
|
+
| `Integration '<key>' not found` | Missing `_register()` call | Add `_register(<Name>Integration())` inside `_register_builtins()` |
|
|
559
|
+
| `NameError: name '<Name>Integration' is not defined` at startup | Missing import | Add `from .<package_dir> import <Name>Integration` inside `_register_builtins()` |
|
|
560
|
+
| CLI check fails for a `requires_cli: True` agent | `key` does not match the executable name | Set `key` to the exact name `shutil.which(key)` must resolve (e.g. `"cursor-agent"`, not `"cursor"`) |
|
|
561
|
+
| Command files have the wrong argument syntax | Wrong `args` value in `registrar_config` | Use `$ARGUMENTS` for Markdown agents, `{{args}}` for TOML/YAML agents, or the agent's custom placeholder |
|
|
562
|
+
| `ModuleNotFoundError` on a brand-new subpackage under pytest only | Ambient interpreter with a stale editable `.pth` | Run inside this tree's own venv (see Common Pitfall 6) |
|
|
563
|
+
| Uninstall leaves files behind, or skips files you expected removed | Files not recorded via the manifest, or their hash changed after install | Route every created file through `manifest.record_file(...)`; user-edited files are intentionally skipped unless `force=True` |
|
|
564
|
+
| Context file (`CLAUDE.md`, etc.) not updated | Expecting the CLI to manage it | Context files are owned by the opt-in `agent-context` extension, not the integration — see [Context file behavior](#4-context-file-behavior) |
|
|
565
|
+
|
|
566
|
+
### Debugging Tips
|
|
567
|
+
|
|
568
|
+
**Inspect the manifest** to see what an installed integration tracks:
|
|
569
|
+
|
|
570
|
+
```bash
|
|
571
|
+
cat .specify/integrations/<key>.manifest.json
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
**Verify a CLI tool is detected** before debugging a `requires_cli` agent:
|
|
575
|
+
|
|
576
|
+
```bash
|
|
577
|
+
which <key> # Should print the executable path if installed
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
**Verify the installed output structure** after `specify init`:
|
|
581
|
+
|
|
582
|
+
```bash
|
|
583
|
+
find my-project/<folder> -type f
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
---
|
|
587
|
+
|
|
588
|
+
## Contribution Checklist
|
|
589
|
+
|
|
590
|
+
Before opening or merging an integration PR, confirm the following:
|
|
591
|
+
|
|
592
|
+
- [ ] Added the integration subpackage under `src/specify_cli/integrations/<package_dir>/`.
|
|
593
|
+
- [ ] Registered it (import **and** `_register()`) in `src/specify_cli/integrations/__init__.py`, both alphabetical.
|
|
594
|
+
- [ ] Added or updated tests in `tests/integrations/test_integration_<key>.py`.
|
|
595
|
+
- [ ] Verified the install/uninstall flow with `specify init --integration <key>`.
|
|
596
|
+
- [ ] Did **not** add `context_file` handling to the CLI (that belongs to the `agent-context` extension).
|
|
597
|
+
- [ ] Updated devcontainer files if the agent needs a VS Code extension or CLI install step.
|
|
598
|
+
- [ ] Updated this guide or other relevant docs if the integration has special setup or limitations.
|
|
599
|
+
|
|
600
|
+
---
|
|
601
|
+
|
|
513
602
|
*This documentation should be updated whenever new integrations are added to maintain accuracy and completeness.*
|