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.
Files changed (528) hide show
  1. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/agent_request.yml +1 -1
  2. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/bug_report.yml +1 -0
  3. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/feature_request.yml +1 -0
  4. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/add-community-bundle.lock.yml +8 -8
  5. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/add-community-extension.lock.yml +6 -6
  6. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/add-community-preset.lock.yml +6 -6
  7. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/bug-assess.lock.yml +4 -4
  8. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/bug-fix.lock.yml +6 -6
  9. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/bug-test.lock.yml +4 -4
  10. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/codeql.yml +3 -3
  11. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/docs.yml +1 -1
  12. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/lint.yml +3 -3
  13. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/publish-pypi.yml +3 -3
  14. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/release-trigger.yml +1 -1
  15. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/release.yml +1 -1
  16. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/security.yml +4 -4
  17. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/test.yml +4 -4
  18. {specify_cli-0.14.1 → specify_cli-0.14.3}/AGENTS.md +94 -5
  19. {specify_cli-0.14.1 → specify_cli-0.14.3}/CHANGELOG.md +56 -0
  20. {specify_cli-0.14.1 → specify_cli-0.14.3}/PKG-INFO +1 -1
  21. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/community/extensions.md +2 -1
  22. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/community/presets.md +3 -2
  23. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/integrations.md +20 -3
  24. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/presets.md +1 -1
  25. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/workflows.md +26 -0
  26. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/upgrade.md +12 -16
  27. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/agent-context/agent-context-defaults.json +1 -0
  28. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/agent-context/scripts/bash/update-agent-context.sh +9 -4
  29. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/agent-context/scripts/python/update_agent_context.py +4 -3
  30. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/assess/README.md +2 -0
  31. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/assess/commands/speckit.assess.intake.md +2 -0
  32. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/catalog.community.json +67 -22
  33. {specify_cli-0.14.1 → specify_cli-0.14.3}/integrations/catalog.json +10 -1
  34. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/catalog.community.json +45 -16
  35. {specify_cli-0.14.1 → specify_cli-0.14.3}/pyproject.toml +1 -1
  36. {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/bash/create-new-feature.sh +65 -17
  37. {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/powershell/create-new-feature.ps1 +65 -17
  38. {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/python/create_new_feature.py +73 -6
  39. specify_cli-0.14.3/src/specify_cli/_download_security.py +896 -0
  40. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/_github_http.py +11 -2
  41. specify_cli-0.14.3/src/specify_cli/_init_options.py +83 -0
  42. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/_utils.py +23 -17
  43. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/agents.py +50 -4
  44. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/authentication/config.py +18 -4
  45. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/commands_impl/catalog_config.py +3 -2
  46. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/models/catalog.py +29 -0
  47. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/adapters.py +18 -2
  48. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/commands/bundle/__init__.py +85 -6
  49. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/extensions/__init__.py +763 -190
  50. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/extensions/_commands.py +739 -67
  51. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/__init__.py +2 -0
  52. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/_helpers.py +93 -13
  53. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/_migrate_commands.py +242 -81
  54. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/_query_commands.py +11 -4
  55. specify_cli-0.14.3/src/specify_cli/integrations/alquimia/__init__.py +165 -0
  56. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/copilot/__init__.py +9 -1
  57. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/kilocode/__init__.py +4 -3
  58. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/pi/__init__.py +1 -0
  59. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/presets/__init__.py +2057 -214
  60. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/presets/_commands.py +24 -18
  61. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/_commands.py +124 -28
  62. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/catalog.py +26 -6
  63. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/engine.py +19 -0
  64. {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/clarify.md +6 -0
  65. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/contract/test_catalog_schema.py +57 -0
  66. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/test_update_agent_context_python_parity.py +47 -0
  67. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integration/test_bundler_local_install.py +61 -0
  68. specify_cli-0.14.3/tests/integrations/test_integration_alquimia.py +607 -0
  69. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_catalog.py +34 -0
  70. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_claude.py +1 -1
  71. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_copilot.py +37 -0
  72. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_forge.py +6 -1
  73. specify_cli-0.14.3/tests/integrations/test_integration_kilocode.py +76 -0
  74. specify_cli-0.14.3/tests/integrations/test_integration_pi.py +18 -0
  75. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_subcommand.py +1051 -35
  76. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_agent_config_consistency.py +1 -0
  77. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_authentication.py +41 -0
  78. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_create_new_feature_python_parity.py +146 -14
  79. specify_cli-0.14.3/tests/test_download_security.py +1071 -0
  80. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_extension_skills.py +1438 -0
  81. specify_cli-0.14.3/tests/test_extension_update_hardening.py +2225 -0
  82. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_extensions.py +1051 -32
  83. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_github_http.py +17 -0
  84. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_presets.py +4342 -61
  85. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_registrar_path_traversal.py +46 -3
  86. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_timestamp_branches.py +113 -4
  87. specify_cli-0.14.3/tests/test_utils.py +21 -0
  88. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_workflows.py +579 -0
  89. specify_cli-0.14.3/tests/unit/test_bundle_download_url.py +162 -0
  90. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_adapters.py +35 -2
  91. {specify_cli-0.14.1 → specify_cli-0.14.3}/workflows/PUBLISHING.md +2 -1
  92. {specify_cli-0.14.1 → specify_cli-0.14.3}/workflows/README.md +13 -1
  93. {specify_cli-0.14.1 → specify_cli-0.14.3}/workflows/speckit/workflow.yml +1 -0
  94. specify_cli-0.14.1/src/specify_cli/_download_security.py +0 -218
  95. specify_cli-0.14.1/src/specify_cli/_init_options.py +0 -36
  96. specify_cli-0.14.1/tests/integrations/test_integration_kilocode.py +0 -10
  97. specify_cli-0.14.1/tests/integrations/test_integration_pi.py +0 -10
  98. specify_cli-0.14.1/tests/test_download_security.py +0 -227
  99. specify_cli-0.14.1/tests/test_extension_update_hardening.py +0 -157
  100. specify_cli-0.14.1/tests/test_utils.py +0 -15
  101. specify_cli-0.14.1/tests/unit/test_bundle_download_url.py +0 -42
  102. {specify_cli-0.14.1 → specify_cli-0.14.3}/.devcontainer/devcontainer.json +0 -0
  103. {specify_cli-0.14.1 → specify_cli-0.14.3}/.devcontainer/post-create.sh +0 -0
  104. {specify_cli-0.14.1 → specify_cli-0.14.3}/.editorconfig +0 -0
  105. {specify_cli-0.14.1 → specify_cli-0.14.3}/.gitattributes +0 -0
  106. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/CODEOWNERS +0 -0
  107. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/bundle_submission.yml +0 -0
  108. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  109. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
  110. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/ISSUE_TEMPLATE/preset_submission.yml +0 -0
  111. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  112. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/aw/actions-lock.json +0 -0
  113. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/dependabot.yml +0 -0
  114. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/scripts/check_security_requirements.py +0 -0
  115. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/security-audit-requirements.txt +0 -0
  116. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/skills/add-community-extension/SKILL.md +0 -0
  117. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/RELEASE-PROCESS.md +0 -0
  118. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/add-community-bundle.md +0 -0
  119. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/add-community-extension.md +0 -0
  120. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/add-community-preset.md +0 -0
  121. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/bug-assess.md +0 -0
  122. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/bug-fix.md +0 -0
  123. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/bug-test.md +0 -0
  124. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/catalog-assign.yml +0 -0
  125. {specify_cli-0.14.1 → specify_cli-0.14.3}/.github/workflows/stale.yml +0 -0
  126. {specify_cli-0.14.1 → specify_cli-0.14.3}/.gitignore +0 -0
  127. {specify_cli-0.14.1 → specify_cli-0.14.3}/.markdownlint-cli2.jsonc +0 -0
  128. {specify_cli-0.14.1 → specify_cli-0.14.3}/.pre-commit-config.yaml +0 -0
  129. {specify_cli-0.14.1 → specify_cli-0.14.3}/.zenodo.json +0 -0
  130. {specify_cli-0.14.1 → specify_cli-0.14.3}/CITATION.cff +0 -0
  131. {specify_cli-0.14.1 → specify_cli-0.14.3}/CODE_OF_CONDUCT.md +0 -0
  132. {specify_cli-0.14.1 → specify_cli-0.14.3}/CONTRIBUTING.md +0 -0
  133. {specify_cli-0.14.1 → specify_cli-0.14.3}/DEVELOPMENT.md +0 -0
  134. {specify_cli-0.14.1 → specify_cli-0.14.3}/LICENSE +0 -0
  135. {specify_cli-0.14.1 → specify_cli-0.14.3}/README.md +0 -0
  136. {specify_cli-0.14.1 → specify_cli-0.14.3}/SECURITY.md +0 -0
  137. {specify_cli-0.14.1 → specify_cli-0.14.3}/SUPPORT.md +0 -0
  138. {specify_cli-0.14.1 → specify_cli-0.14.3}/bundles/catalog.community.json +0 -0
  139. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/.gitignore +0 -0
  140. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/README.md +0 -0
  141. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/community/bundles.md +0 -0
  142. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/community/friends.md +0 -0
  143. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/community/overview.md +0 -0
  144. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/community/walkthroughs.md +0 -0
  145. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/concepts/complex-features.md +0 -0
  146. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/concepts/sdd.md +0 -0
  147. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/concepts/spec-of-specs.md +0 -0
  148. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/concepts/spec-persistence.md +0 -0
  149. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/docfx.json +0 -0
  150. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/guides/evolving-specs.md +0 -0
  151. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/guides/monorepo.md +0 -0
  152. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/index.md +0 -0
  153. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/install/air-gapped.md +0 -0
  154. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/install/one-time.md +0 -0
  155. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/install/pipx.md +0 -0
  156. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/install/pypi.md +0 -0
  157. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/install/uv.md +0 -0
  158. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/installation.md +0 -0
  159. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/local-development.md +0 -0
  160. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/quickstart.md +0 -0
  161. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/agentic-bugfix.md +0 -0
  162. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/agentic-sdd.md +0 -0
  163. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/authentication.md +0 -0
  164. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/bundles.md +0 -0
  165. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/core.md +0 -0
  166. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/extensions.md +0 -0
  167. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/reference/overview.md +0 -0
  168. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/template/public/main.css +0 -0
  169. {specify_cli-0.14.1 → specify_cli-0.14.3}/docs/toc.yml +0 -0
  170. {specify_cli-0.14.1 → specify_cli-0.14.3}/examples/bundles/business-analyst/README.md +0 -0
  171. {specify_cli-0.14.1 → specify_cli-0.14.3}/examples/bundles/business-analyst/bundle.yml +0 -0
  172. {specify_cli-0.14.1 → specify_cli-0.14.3}/examples/bundles/developer/README.md +0 -0
  173. {specify_cli-0.14.1 → specify_cli-0.14.3}/examples/bundles/developer/bundle.yml +0 -0
  174. {specify_cli-0.14.1 → specify_cli-0.14.3}/examples/bundles/product-manager/README.md +0 -0
  175. {specify_cli-0.14.1 → specify_cli-0.14.3}/examples/bundles/product-manager/bundle.yml +0 -0
  176. {specify_cli-0.14.1 → specify_cli-0.14.3}/examples/bundles/security-researcher/README.md +0 -0
  177. {specify_cli-0.14.1 → specify_cli-0.14.3}/examples/bundles/security-researcher/bundle.yml +0 -0
  178. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/EXTENSION-API-REFERENCE.md +0 -0
  179. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -0
  180. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/EXTENSION-PUBLISHING-GUIDE.md +0 -0
  181. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/EXTENSION-USER-GUIDE.md +0 -0
  182. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/README.md +0 -0
  183. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
  184. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/agent-context/README.md +0 -0
  185. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/agent-context/agent-context-config.yml +0 -0
  186. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
  187. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/agent-context/extension.yml +0 -0
  188. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -0
  189. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/assess/commands/speckit.assess.decide.md +0 -0
  190. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/assess/commands/speckit.assess.define.md +0 -0
  191. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/assess/commands/speckit.assess.research.md +0 -0
  192. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/assess/commands/speckit.assess.shape.md +0 -0
  193. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/assess/extension.yml +0 -0
  194. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/bug/README.md +0 -0
  195. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/bug/commands/speckit.bug.assess.md +0 -0
  196. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/bug/commands/speckit.bug.fix.md +0 -0
  197. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/bug/commands/speckit.bug.test.md +0 -0
  198. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/bug/extension.yml +0 -0
  199. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/catalog.json +0 -0
  200. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/README.md +0 -0
  201. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/commands/speckit.git.commit.md +0 -0
  202. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/commands/speckit.git.feature.md +0 -0
  203. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/commands/speckit.git.initialize.md +0 -0
  204. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/commands/speckit.git.remote.md +0 -0
  205. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/commands/speckit.git.validate.md +0 -0
  206. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/config-template.yml +0 -0
  207. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/extension.yml +0 -0
  208. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/git-config.yml +0 -0
  209. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/bash/auto-commit.sh +0 -0
  210. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
  211. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/bash/git-common.sh +0 -0
  212. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
  213. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
  214. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +0 -0
  215. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
  216. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
  217. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/python/auto_commit.py +0 -0
  218. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/python/create_new_feature_branch.py +0 -0
  219. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/python/git_common.py +0 -0
  220. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/git/scripts/python/initialize_repo.py +0 -0
  221. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/selftest/commands/selftest.md +0 -0
  222. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/selftest/extension.yml +0 -0
  223. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/template/.gitignore +0 -0
  224. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/template/CHANGELOG.md +0 -0
  225. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/template/EXAMPLE-README.md +0 -0
  226. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/template/LICENSE +0 -0
  227. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/template/README.md +0 -0
  228. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/template/commands/example.md +0 -0
  229. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/template/config-template.yml +0 -0
  230. {specify_cli-0.14.1 → specify_cli-0.14.3}/extensions/template/extension.yml +0 -0
  231. {specify_cli-0.14.1 → specify_cli-0.14.3}/integrations/CONTRIBUTING.md +0 -0
  232. {specify_cli-0.14.1 → specify_cli-0.14.3}/integrations/README.md +0 -0
  233. {specify_cli-0.14.1 → specify_cli-0.14.3}/integrations/catalog.community.json +0 -0
  234. {specify_cli-0.14.1 → specify_cli-0.14.3}/media/bootstrap-claude-code.gif +0 -0
  235. {specify_cli-0.14.1 → specify_cli-0.14.3}/media/logo_large.webp +0 -0
  236. {specify_cli-0.14.1 → specify_cli-0.14.3}/media/logo_small.webp +0 -0
  237. {specify_cli-0.14.1 → specify_cli-0.14.3}/media/spec-kit-video-header.jpg +0 -0
  238. {specify_cli-0.14.1 → specify_cli-0.14.3}/media/specify_cli.gif +0 -0
  239. {specify_cli-0.14.1 → specify_cli-0.14.3}/newsletters/2026-April.md +0 -0
  240. {specify_cli-0.14.1 → specify_cli-0.14.3}/newsletters/2026-February.md +0 -0
  241. {specify_cli-0.14.1 → specify_cli-0.14.3}/newsletters/2026-June.md +0 -0
  242. {specify_cli-0.14.1 → specify_cli-0.14.3}/newsletters/2026-March.md +0 -0
  243. {specify_cli-0.14.1 → specify_cli-0.14.3}/newsletters/2026-May.md +0 -0
  244. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/ARCHITECTURE.md +0 -0
  245. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/PUBLISHING.md +0 -0
  246. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/README.md +0 -0
  247. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/catalog.json +0 -0
  248. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/lean/README.md +0 -0
  249. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/lean/commands/speckit.constitution.md +0 -0
  250. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/lean/commands/speckit.implement.md +0 -0
  251. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/lean/commands/speckit.plan.md +0 -0
  252. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/lean/commands/speckit.specify.md +0 -0
  253. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/lean/commands/speckit.tasks.md +0 -0
  254. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/lean/preset.yml +0 -0
  255. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/scaffold/README.md +0 -0
  256. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
  257. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/scaffold/commands/speckit.specify.md +0 -0
  258. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/scaffold/preset.yml +0 -0
  259. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/scaffold/templates/myext-template.md +0 -0
  260. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/scaffold/templates/spec-template.md +0 -0
  261. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/self-test/commands/speckit.specify.md +0 -0
  262. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/self-test/commands/speckit.wrap-test.md +0 -0
  263. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/self-test/preset.yml +0 -0
  264. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/self-test/templates/checklist-template.md +0 -0
  265. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/self-test/templates/constitution-template.md +0 -0
  266. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/self-test/templates/plan-template.md +0 -0
  267. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/self-test/templates/spec-template.md +0 -0
  268. {specify_cli-0.14.1 → specify_cli-0.14.3}/presets/self-test/templates/tasks-template.md +0 -0
  269. {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/bash/check-prerequisites.sh +0 -0
  270. {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/bash/common.sh +0 -0
  271. {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/bash/setup-plan.sh +0 -0
  272. {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/bash/setup-tasks.sh +0 -0
  273. {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/powershell/check-prerequisites.ps1 +0 -0
  274. {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/powershell/common.ps1 +0 -0
  275. {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/powershell/setup-plan.ps1 +0 -0
  276. {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/powershell/setup-tasks.ps1 +0 -0
  277. {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/python/check_prerequisites.py +0 -0
  278. {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/python/common.py +0 -0
  279. {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/python/setup_plan.py +0 -0
  280. {specify_cli-0.14.1 → specify_cli-0.14.3}/scripts/python/setup_tasks.py +0 -0
  281. {specify_cli-0.14.1 → specify_cli-0.14.3}/spec-driven.md +0 -0
  282. {specify_cli-0.14.1 → specify_cli-0.14.3}/spec-kit.code-workspace +0 -0
  283. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/__init__.py +0 -0
  284. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/_agent_config.py +0 -0
  285. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/_assets.py +0 -0
  286. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/_console.py +0 -0
  287. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/_invocation_style.py +0 -0
  288. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/_project.py +0 -0
  289. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/_toml_string.py +0 -0
  290. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/_version.py +0 -0
  291. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/authentication/__init__.py +0 -0
  292. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/authentication/azure_devops.py +0 -0
  293. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/authentication/base.py +0 -0
  294. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/authentication/github.py +0 -0
  295. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/authentication/http.py +0 -0
  296. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/__init__.py +0 -0
  297. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/commands_impl/__init__.py +0 -0
  298. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/lib/__init__.py +0 -0
  299. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/lib/project.py +0 -0
  300. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/lib/versioning.py +0 -0
  301. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/lib/yamlio.py +0 -0
  302. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/models/__init__.py +0 -0
  303. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/models/manifest.py +0 -0
  304. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/models/records.py +0 -0
  305. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/__init__.py +0 -0
  306. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/catalog_stack.py +0 -0
  307. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/conflict.py +0 -0
  308. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/installer.py +0 -0
  309. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/packager.py +0 -0
  310. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/primitives.py +0 -0
  311. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/references.py +0 -0
  312. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/resolver.py +0 -0
  313. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/bundler/services/validator.py +0 -0
  314. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/catalogs.py +0 -0
  315. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/commands/__init__.py +0 -0
  316. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/commands/init.py +0 -0
  317. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integration_runtime.py +0 -0
  318. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integration_scaffold.py +0 -0
  319. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integration_state.py +0 -0
  320. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integration_status.py +0 -0
  321. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/_commands.py +0 -0
  322. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/_install_commands.py +0 -0
  323. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/_scaffold_commands.py +0 -0
  324. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/agy/__init__.py +0 -0
  325. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/amp/__init__.py +0 -0
  326. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/auggie/__init__.py +0 -0
  327. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/base.py +0 -0
  328. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/bob/__init__.py +0 -0
  329. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/catalog.py +0 -0
  330. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/claude/__init__.py +0 -0
  331. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/cline/__init__.py +0 -0
  332. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
  333. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/codex/__init__.py +0 -0
  334. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -0
  335. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/devin/__init__.py +0 -0
  336. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/droid/__init__.py +0 -0
  337. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/firebender/__init__.py +0 -0
  338. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/forge/__init__.py +0 -0
  339. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/gemini/__init__.py +0 -0
  340. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/generic/__init__.py +0 -0
  341. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/goose/__init__.py +0 -0
  342. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/grok/__init__.py +0 -0
  343. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/hermes/__init__.py +0 -0
  344. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/junie/__init__.py +0 -0
  345. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/kimi/__init__.py +0 -0
  346. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -0
  347. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/lingma/__init__.py +0 -0
  348. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/manifest.py +0 -0
  349. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/omp/__init__.py +0 -0
  350. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/opencode/__init__.py +0 -0
  351. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
  352. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/qwen/__init__.py +0 -0
  353. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/rovodev/__init__.py +0 -0
  354. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/shai/__init__.py +0 -0
  355. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
  356. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/trae/__init__.py +0 -0
  357. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/vibe/__init__.py +0 -0
  358. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/zcode/__init__.py +0 -0
  359. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/integrations/zed/__init__.py +0 -0
  360. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/shared_infra.py +0 -0
  361. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/__init__.py +0 -0
  362. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/base.py +0 -0
  363. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/expressions.py +0 -0
  364. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/overlays/__init__.py +0 -0
  365. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/overlays/_commands.py +0 -0
  366. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/overlays/composer.py +0 -0
  367. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/overlays/layer_sources.py +0 -0
  368. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/overlays/merge.py +0 -0
  369. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/overlays/schema.py +0 -0
  370. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/__init__.py +0 -0
  371. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/command/__init__.py +0 -0
  372. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/do_while/__init__.py +0 -0
  373. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/fan_in/__init__.py +0 -0
  374. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/fan_out/__init__.py +0 -0
  375. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/gate/__init__.py +0 -0
  376. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/if_then/__init__.py +0 -0
  377. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/init/__init__.py +0 -0
  378. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/prompt/__init__.py +0 -0
  379. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/shell/__init__.py +0 -0
  380. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/switch/__init__.py +0 -0
  381. {specify_cli-0.14.1 → specify_cli-0.14.3}/src/specify_cli/workflows/steps/while_loop/__init__.py +0 -0
  382. {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/checklist-template.md +0 -0
  383. {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/analyze.md +0 -0
  384. {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/checklist.md +0 -0
  385. {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/constitution.md +0 -0
  386. {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/converge.md +0 -0
  387. {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/implement.md +0 -0
  388. {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/plan.md +0 -0
  389. {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/specify.md +0 -0
  390. {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/tasks.md +0 -0
  391. {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/commands/taskstoissues.md +0 -0
  392. {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/constitution-template.md +0 -0
  393. {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/plan-template.md +0 -0
  394. {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/spec-template.md +0 -0
  395. {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/tasks-template.md +0 -0
  396. {specify_cli-0.14.1 → specify_cli-0.14.3}/templates/vscode-settings.json +0 -0
  397. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/__init__.py +0 -0
  398. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/auth_helpers.py +0 -0
  399. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/bundler_helpers.py +0 -0
  400. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/conftest.py +0 -0
  401. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/contract/test_bundle_cli.py +0 -0
  402. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/contract/test_manifest_schema.py +0 -0
  403. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/contract/test_wheel_core_pack_scripts.py +0 -0
  404. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/__init__.py +0 -0
  405. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/assess/__init__.py +0 -0
  406. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/assess/test_assess_extension.py +0 -0
  407. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/bug/__init__.py +0 -0
  408. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/bug/test_bug_extension.py +0 -0
  409. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/git/__init__.py +0 -0
  410. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/git/test_git_extension.py +0 -0
  411. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/git/test_git_extension_python_parity.py +0 -0
  412. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/test_agent_context_cli_free.py +0 -0
  413. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/test_extension_agent_context.py +0 -0
  414. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/extensions/test_update_agent_context_feature_json.py +0 -0
  415. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/hooks/TESTING.md +0 -0
  416. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/hooks/plan.md +0 -0
  417. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/hooks/spec.md +0 -0
  418. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/hooks/tasks.md +0 -0
  419. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/http_helpers.py +0 -0
  420. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integration/test_bundler_catalog_stack.py +0 -0
  421. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integration/test_bundler_init_install.py +0 -0
  422. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integration/test_bundler_install_flow.py +0 -0
  423. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integration/test_bundler_offline.py +0 -0
  424. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integration/test_bundler_security_paths.py +0 -0
  425. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/__init__.py +0 -0
  426. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/conftest.py +0 -0
  427. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_base.py +0 -0
  428. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_cli.py +0 -0
  429. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_extra_args.py +0 -0
  430. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_home_isolation.py +0 -0
  431. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_agy.py +0 -0
  432. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_amp.py +0 -0
  433. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_auggie.py +0 -0
  434. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_base_markdown.py +0 -0
  435. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_base_skills.py +0 -0
  436. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_base_toml.py +0 -0
  437. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_base_yaml.py +0 -0
  438. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_bob.py +0 -0
  439. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_cline.py +0 -0
  440. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_codebuddy.py +0 -0
  441. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_codex.py +0 -0
  442. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_cursor_agent.py +0 -0
  443. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_devin.py +0 -0
  444. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_droid.py +0 -0
  445. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_firebender.py +0 -0
  446. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_gemini.py +0 -0
  447. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_generic.py +0 -0
  448. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_goose.py +0 -0
  449. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_grok.py +0 -0
  450. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_hermes.py +0 -0
  451. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_junie.py +0 -0
  452. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_kimi.py +0 -0
  453. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_kiro_cli.py +0 -0
  454. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_lingma.py +0 -0
  455. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_omp.py +0 -0
  456. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_opencode.py +0 -0
  457. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_qodercli.py +0 -0
  458. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_qwen.py +0 -0
  459. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_rovodev.py +0 -0
  460. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_scaffold.py +0 -0
  461. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_shai.py +0 -0
  462. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_state.py +0 -0
  463. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_tabnine.py +0 -0
  464. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_trae.py +0 -0
  465. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_vibe.py +0 -0
  466. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_zcode.py +0 -0
  467. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_integration_zed.py +0 -0
  468. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_manifest.py +0 -0
  469. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_registry.py +0 -0
  470. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/integrations/test_skill_frontmatter_quoting.py +0 -0
  471. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/parity_helpers.py +0 -0
  472. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/self_upgrade_helpers.py +0 -0
  473. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_branch_numbering.py +0 -0
  474. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_check_prerequisites_paths_only.py +0 -0
  475. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_check_prerequisites_python_parity.py +0 -0
  476. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_check_tool.py +0 -0
  477. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_cli_version.py +0 -0
  478. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_command_template_py_scripts.py +0 -0
  479. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_commands_package.py +0 -0
  480. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_console_imports.py +0 -0
  481. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_extension_registration.py +0 -0
  482. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_github_workflows.py +0 -0
  483. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_init_dir.py +0 -0
  484. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_init_dir_cli.py +0 -0
  485. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_live_transient_windows.py +0 -0
  486. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_merge.py +0 -0
  487. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_post_process.py +0 -0
  488. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_ps1_encoding.py +0 -0
  489. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_security_workflow.py +0 -0
  490. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_self_upgrade_detection.py +0 -0
  491. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_self_upgrade_execution.py +0 -0
  492. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_self_upgrade_guidance.py +0 -0
  493. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_self_upgrade_verification.py +0 -0
  494. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_setup_plan_feature_json.py +0 -0
  495. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_setup_plan_no_overwrite.py +0 -0
  496. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_setup_plan_python_parity.py +0 -0
  497. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_setup_tasks.py +0 -0
  498. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_setup_tasks_python_parity.py +0 -0
  499. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_shared_infra_integrity.py +0 -0
  500. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_skill_placeholder_py.py +0 -0
  501. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_specify_template_numbering.py +0 -0
  502. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_upgrade.py +0 -0
  503. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_utils_assets_imports.py +0 -0
  504. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_version_imports.py +0 -0
  505. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/test_workflow_run_without_project.py +0 -0
  506. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_catalog_config.py +0 -0
  507. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_conflict.py +0 -0
  508. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_packager.py +0 -0
  509. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_primitives.py +0 -0
  510. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_records.py +0 -0
  511. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_references.py +0 -0
  512. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_resolver.py +0 -0
  513. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_validator.py +0 -0
  514. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_versioning.py +0 -0
  515. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/unit/test_bundler_yamlio.py +0 -0
  516. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/workflows/conftest.py +0 -0
  517. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/workflows/test_overlay_commands.py +0 -0
  518. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/workflows/test_overlay_composer.py +0 -0
  519. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/workflows/test_overlay_layer_sources.py +0 -0
  520. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/workflows/test_overlay_merge.py +0 -0
  521. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/workflows/test_overlay_schema.py +0 -0
  522. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/workflows/test_overlay_security.py +0 -0
  523. {specify_cli-0.14.1 → specify_cli-0.14.3}/tests/workflows/test_resolver_integration.py +0 -0
  524. {specify_cli-0.14.1 → specify_cli-0.14.3}/workflows/ARCHITECTURE.md +0 -0
  525. {specify_cli-0.14.1 → specify_cli-0.14.3}/workflows/catalog.community.json +0 -0
  526. {specify_cli-0.14.1 → specify_cli-0.14.3}/workflows/catalog.json +0 -0
  527. {specify_cli-0.14.1 → specify_cli-0.14.3}/workflows/step-catalog.community.json +0 -0
  528. {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
@@ -62,6 +62,7 @@ body:
62
62
  label: AI Agent
63
63
  description: Which AI agent are you using?
64
64
  options:
65
+ - Alquimia AI
65
66
  - Amp
66
67
  - Antigravity
67
68
  - Auggie CLI
@@ -56,6 +56,7 @@ body:
56
56
  description: Does this feature relate to a specific AI agent?
57
57
  options:
58
58
  - All agents
59
+ - Alquimia AI
59
60
  - Amp
60
61
  - Antigravity
61
62
  - Auggie CLI
@@ -33,10 +33,10 @@
33
33
  # - GITHUB_TOKEN
34
34
  #
35
35
  # Custom actions used:
36
- # - actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
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@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
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@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
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@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
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@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
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@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
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@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
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@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
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 }}
@@ -33,7 +33,7 @@
33
33
  # - GITHUB_TOKEN
34
34
  #
35
35
  # Custom actions used:
36
- # - actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
22
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
23
23
 
24
24
  - name: Initialize CodeQL
25
- uses: github/codeql-action/init@7188fc363630916deb702c7fdcf4e481b751f97a # v4
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@7188fc363630916deb702c7fdcf4e481b751f97a # v4
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@8de2aa07cae85fd17c0b35642db70cf5495f1d25 # v24.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
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@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
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@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
55
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
56
56
 
57
57
  - name: Install uv
58
- uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
16
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
17
17
 
18
18
  - name: Install uv
19
- uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
37
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
38
38
 
39
39
  - name: Install uv
40
- uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
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": ".kilocode/",
68
- "commands_subdir": "workflows",
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": ".kilocode/workflows",
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, .kilocode/workflows/)
205
- ls -R my-project/.kilocode/workflows/
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.*