specify-cli 1.0.7__tar.gz → 1.0.9__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 (642) hide show
  1. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/ISSUE_TEMPLATE/agent_request.yml +13 -0
  2. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/ISSUE_TEMPLATE/bug_report.yml +13 -0
  3. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/ISSUE_TEMPLATE/feature_request.yml +13 -0
  4. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/PULL_REQUEST_TEMPLATE.md +4 -2
  5. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/aw/actions-lock.json +5 -0
  6. specify_cli-1.0.9/.github/workflows/RELEASE-PROCESS.md +245 -0
  7. specify_cli-1.0.9/.github/workflows/add-community-bundle.lock.yml +2010 -0
  8. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/add-community-bundle.md +19 -1
  9. specify_cli-1.0.9/.github/workflows/add-community-extension.lock.yml +1993 -0
  10. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/add-community-extension.md +20 -1
  11. specify_cli-1.0.9/.github/workflows/add-community-preset.lock.yml +1993 -0
  12. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/add-community-preset.md +20 -1
  13. specify_cli-1.0.9/.github/workflows/bug-fix.lock.yml +1997 -0
  14. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/bug-fix.md +12 -1
  15. specify_cli-1.0.9/.github/workflows/bug-test.lock.yml +1937 -0
  16. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/bug-test.md +16 -4
  17. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/codeql.yml +2 -2
  18. specify_cli-1.0.9/.github/workflows/feature-assess.lock.yml +1956 -0
  19. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/feature-assess.md +6 -2
  20. {specify_cli-1.0.7 → specify_cli-1.0.9}/AGENTS.md +11 -2
  21. {specify_cli-1.0.7 → specify_cli-1.0.9}/CHANGELOG.md +50 -0
  22. {specify_cli-1.0.7 → specify_cli-1.0.9}/CONTRIBUTING.md +16 -8
  23. {specify_cli-1.0.7 → specify_cli-1.0.9}/PKG-INFO +1 -1
  24. specify_cli-1.0.9/bundles/assess/README.md +40 -0
  25. specify_cli-1.0.9/bundles/assess/bundle.yml +25 -0
  26. specify_cli-1.0.9/bundles/bugfix/README.md +38 -0
  27. specify_cli-1.0.9/bundles/bugfix/bundle.yml +25 -0
  28. specify_cli-1.0.9/bundles/catalog.json +51 -0
  29. specify_cli-1.0.9/design/cli.md +303 -0
  30. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/community/extensions.md +7 -4
  31. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/community/presets.md +1 -0
  32. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/concepts/sdd.md +5 -0
  33. specify_cli-1.0.9/docs/guides/contract-driven-development.md +264 -0
  34. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/guides/monorepo.md +6 -0
  35. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/reference/bundles.md +22 -1
  36. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/reference/core.md +18 -0
  37. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/reference/integrations.md +3 -1
  38. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/toc.yml +2 -0
  39. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/catalog.community.json +178 -51
  40. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/catalog.community.json +32 -1
  41. {specify_cli-1.0.7 → specify_cli-1.0.9}/pyproject.toml +6 -3
  42. {specify_cli-1.0.7 → specify_cli-1.0.9}/scripts/bash/common.sh +1 -1
  43. {specify_cli-1.0.7 → specify_cli-1.0.9}/scripts/bash/create-new-feature.sh +4 -0
  44. {specify_cli-1.0.7 → specify_cli-1.0.9}/scripts/powershell/common.ps1 +1 -0
  45. {specify_cli-1.0.7 → specify_cli-1.0.9}/scripts/powershell/create-new-feature.ps1 +4 -0
  46. {specify_cli-1.0.7 → specify_cli-1.0.9}/scripts/python/create_new_feature.py +7 -0
  47. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/__init__.py +9 -0
  48. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/_github_http.py +103 -7
  49. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/_invocation_style.py +1 -0
  50. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/agents.py +2 -0
  51. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/authentication/http.py +6 -2
  52. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/services/adapters.py +117 -22
  53. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/services/primitives.py +32 -8
  54. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/commands/bundle/__init__.py +22 -0
  55. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/events.py +18 -5
  56. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/extensions/__init__.py +63 -8
  57. specify_cli-1.0.9/src/specify_cli/extensions/_command_update_artifacts.py +164 -0
  58. specify_cli-1.0.9/src/specify_cli/extensions/_command_update_discovery.py +145 -0
  59. specify_cli-1.0.9/src/specify_cli/extensions/_command_update_transaction.py +871 -0
  60. specify_cli-1.0.9/src/specify_cli/extensions/_commands.py +690 -0
  61. specify_cli-1.0.9/src/specify_cli/extensions/catalog/__init__.py +32 -0
  62. specify_cli-1.0.9/src/specify_cli/extensions/catalog/_helpers.py +37 -0
  63. specify_cli-1.0.9/src/specify_cli/extensions/catalog/command_add.py +102 -0
  64. specify_cli-1.0.9/src/specify_cli/extensions/catalog/command_list.py +94 -0
  65. specify_cli-1.0.9/src/specify_cli/extensions/catalog/command_remove.py +66 -0
  66. specify_cli-1.0.9/src/specify_cli/extensions/command_add.py +292 -0
  67. specify_cli-1.0.9/src/specify_cli/extensions/command_disable.py +62 -0
  68. specify_cli-1.0.9/src/specify_cli/extensions/command_enable.py +84 -0
  69. specify_cli-1.0.9/src/specify_cli/extensions/command_info.py +261 -0
  70. specify_cli-1.0.9/src/specify_cli/extensions/command_list.py +75 -0
  71. specify_cli-1.0.9/src/specify_cli/extensions/command_remove.py +86 -0
  72. specify_cli-1.0.9/src/specify_cli/extensions/command_search.py +111 -0
  73. specify_cli-1.0.9/src/specify_cli/extensions/command_set_priority.py +66 -0
  74. specify_cli-1.0.9/src/specify_cli/extensions/command_update.py +25 -0
  75. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/agy/__init__.py +17 -4
  76. specify_cli-1.0.9/src/specify_cli/integrations/amp/__init__.py +52 -0
  77. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/base.py +5 -0
  78. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/bob/__init__.py +2 -2
  79. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/codex/__init__.py +2 -0
  80. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/copilot/__init__.py +1 -0
  81. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/cursor_agent/__init__.py +2 -0
  82. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/devin/__init__.py +2 -0
  83. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/docker_agent/__init__.py +3 -0
  84. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/droid/__init__.py +2 -0
  85. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/dsh/__init__.py +2 -0
  86. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/generic/__init__.py +113 -2
  87. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/goose/__init__.py +2 -0
  88. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/grok/__init__.py +2 -0
  89. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/hermes/__init__.py +1 -0
  90. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/muse/__init__.py +2 -0
  91. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/omp/__init__.py +2 -0
  92. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/opencode/__init__.py +2 -0
  93. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/rovodev/__init__.py +1 -0
  94. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/_commands.py +2 -0
  95. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/engine.py +31 -1
  96. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/overlays/merge.py +66 -7
  97. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/steps/command/__init__.py +3 -2
  98. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/steps/prompt/__init__.py +10 -5
  99. {specify_cli-1.0.7 → specify_cli-1.0.9}/templates/commands/converge.md +6 -0
  100. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/conftest.py +5 -0
  101. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/contract/test_bundle_cli.py +162 -8
  102. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/contract/test_catalog_schema.py +13 -0
  103. specify_cli-1.0.9/tests/contract/test_firstparty_bundle_catalog_consistency.py +155 -0
  104. specify_cli-1.0.9/tests/contract/test_wheel_bundled_workflows.py +52 -0
  105. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integration/test_bundler_offline.py +59 -3
  106. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_base.py +1 -0
  107. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_cli.py +0 -68
  108. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_events.py +118 -1
  109. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_agy.py +102 -11
  110. specify_cli-1.0.9/tests/integrations/test_integration_amp.py +84 -0
  111. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_bob.py +22 -6
  112. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_generic.py +192 -1
  113. specify_cli-1.0.9/tests/specify_cli/__init__.py +1 -0
  114. specify_cli-1.0.9/tests/specify_cli/extensions/__init__.py +6 -0
  115. specify_cli-1.0.9/tests/specify_cli/extensions/_helpers.py +46 -0
  116. specify_cli-1.0.9/tests/specify_cli/extensions/catalog/__init__.py +1 -0
  117. specify_cli-1.0.9/tests/specify_cli/extensions/catalog/test_command_add.py +196 -0
  118. specify_cli-1.0.9/tests/specify_cli/extensions/catalog/test_command_list.py +129 -0
  119. specify_cli-1.0.9/tests/specify_cli/extensions/catalog/test_command_remove.py +75 -0
  120. specify_cli-1.0.9/tests/specify_cli/extensions/conftest.py +89 -0
  121. specify_cli-1.0.9/tests/specify_cli/extensions/test_command_add.py +1270 -0
  122. specify_cli-1.0.7/tests/test_extension_add_path_traversal.py → specify_cli-1.0.9/tests/specify_cli/extensions/test_command_add_path_traversal.py +4 -1
  123. specify_cli-1.0.9/tests/specify_cli/extensions/test_command_disable.py +55 -0
  124. specify_cli-1.0.9/tests/specify_cli/extensions/test_command_enable.py +52 -0
  125. specify_cli-1.0.9/tests/specify_cli/extensions/test_command_info.py +241 -0
  126. specify_cli-1.0.9/tests/specify_cli/extensions/test_command_list.py +110 -0
  127. specify_cli-1.0.9/tests/specify_cli/extensions/test_command_remove.py +102 -0
  128. specify_cli-1.0.9/tests/specify_cli/extensions/test_command_search.py +102 -0
  129. specify_cli-1.0.9/tests/specify_cli/extensions/test_command_set_priority.py +142 -0
  130. specify_cli-1.0.9/tests/specify_cli/extensions/test_command_update.py +863 -0
  131. specify_cli-1.0.7/tests/test_extension_content_staleness.py → specify_cli-1.0.9/tests/specify_cli/extensions/test_command_update_artifacts.py +3 -2
  132. specify_cli-1.0.9/tests/specify_cli/extensions/test_command_update_discovery.py +102 -0
  133. specify_cli-1.0.7/tests/test_extension_update_hardening.py → specify_cli-1.0.9/tests/specify_cli/extensions/test_command_update_transaction.py +5 -0
  134. specify_cli-1.0.9/tests/test_bug_fix_workflow.py +102 -0
  135. specify_cli-1.0.9/tests/test_converge_template_scaffold.py +37 -0
  136. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_create_new_feature_python_parity.py +54 -0
  137. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_extensions.py +312 -3153
  138. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_github_http.py +169 -0
  139. specify_cli-1.0.9/tests/test_github_workflows.py +1104 -0
  140. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_workflows.py +166 -0
  141. specify_cli-1.0.9/tests/unit/test_bundler_adapters.py +517 -0
  142. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/unit/test_bundler_primitives.py +7 -2
  143. specify_cli-1.0.9/tests/workflows/test_bundled_bugfix_assess_workflows.py +93 -0
  144. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/workflows/test_overlay_merge.py +197 -0
  145. {specify_cli-1.0.7 → specify_cli-1.0.9}/workflows/README.md +5 -1
  146. specify_cli-1.0.9/workflows/assess/workflow.yml +62 -0
  147. specify_cli-1.0.9/workflows/bugfix/workflow.yml +50 -0
  148. specify_cli-1.0.9/workflows/catalog.json +37 -0
  149. specify_cli-1.0.7/.github/workflows/RELEASE-PROCESS.md +0 -191
  150. specify_cli-1.0.7/.github/workflows/add-community-bundle.lock.yml +0 -1745
  151. specify_cli-1.0.7/.github/workflows/add-community-extension.lock.yml +0 -1725
  152. specify_cli-1.0.7/.github/workflows/add-community-preset.lock.yml +0 -1725
  153. specify_cli-1.0.7/.github/workflows/bug-fix.lock.yml +0 -1732
  154. specify_cli-1.0.7/.github/workflows/bug-test.lock.yml +0 -1655
  155. specify_cli-1.0.7/.github/workflows/feature-assess.lock.yml +0 -1677
  156. specify_cli-1.0.7/src/specify_cli/extensions/_commands.py +0 -2911
  157. specify_cli-1.0.7/src/specify_cli/integrations/amp/__init__.py +0 -20
  158. specify_cli-1.0.7/tests/integrations/test_integration_amp.py +0 -10
  159. specify_cli-1.0.7/tests/test_github_workflows.py +0 -356
  160. specify_cli-1.0.7/tests/unit/test_bundler_adapters.py +0 -203
  161. specify_cli-1.0.7/workflows/catalog.json +0 -16
  162. {specify_cli-1.0.7 → specify_cli-1.0.9}/.devcontainer/devcontainer.json +0 -0
  163. {specify_cli-1.0.7 → specify_cli-1.0.9}/.devcontainer/post-create.sh +0 -0
  164. {specify_cli-1.0.7 → specify_cli-1.0.9}/.editorconfig +0 -0
  165. {specify_cli-1.0.7 → specify_cli-1.0.9}/.gitattributes +0 -0
  166. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/CODEOWNERS +0 -0
  167. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/ISSUE_TEMPLATE/bundle_submission.yml +0 -0
  168. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  169. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
  170. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/ISSUE_TEMPLATE/preset_submission.yml +0 -0
  171. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/dependabot.yml +0 -0
  172. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/scripts/check_extension_version_bump.py +0 -0
  173. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/scripts/check_security_requirements.py +0 -0
  174. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/security-audit-requirements.txt +0 -0
  175. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/skills/add-community-extension/SKILL.md +0 -0
  176. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/skills/code-review/SKILL.md +0 -0
  177. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/bug-assess.lock.yml +0 -0
  178. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/bug-assess.md +0 -0
  179. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/catalog-assign.yml +0 -0
  180. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/docs.yml +0 -0
  181. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/extension-version-guard.yml +0 -0
  182. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/lint.yml +0 -0
  183. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/publish-pypi.yml +0 -0
  184. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/release-trigger.yml +0 -0
  185. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/release.yml +0 -0
  186. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/security.yml +0 -0
  187. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/stale.yml +0 -0
  188. {specify_cli-1.0.7 → specify_cli-1.0.9}/.github/workflows/test.yml +0 -0
  189. {specify_cli-1.0.7 → specify_cli-1.0.9}/.gitignore +0 -0
  190. {specify_cli-1.0.7 → specify_cli-1.0.9}/.markdownlint-cli2.jsonc +0 -0
  191. {specify_cli-1.0.7 → specify_cli-1.0.9}/.pre-commit-config.yaml +0 -0
  192. {specify_cli-1.0.7 → specify_cli-1.0.9}/.zenodo.json +0 -0
  193. {specify_cli-1.0.7 → specify_cli-1.0.9}/CITATION.cff +0 -0
  194. {specify_cli-1.0.7 → specify_cli-1.0.9}/CODE_OF_CONDUCT.md +0 -0
  195. {specify_cli-1.0.7 → specify_cli-1.0.9}/DEVELOPMENT.md +0 -0
  196. {specify_cli-1.0.7 → specify_cli-1.0.9}/LICENSE +0 -0
  197. {specify_cli-1.0.7 → specify_cli-1.0.9}/README.md +0 -0
  198. {specify_cli-1.0.7 → specify_cli-1.0.9}/README.zh-CN.md +0 -0
  199. {specify_cli-1.0.7 → specify_cli-1.0.9}/SECURITY.md +0 -0
  200. {specify_cli-1.0.7 → specify_cli-1.0.9}/SUPPORT.md +0 -0
  201. {specify_cli-1.0.7 → specify_cli-1.0.9}/bundles/catalog.community.json +0 -0
  202. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/.gitignore +0 -0
  203. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/README.md +0 -0
  204. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/community/bundles.md +0 -0
  205. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/community/friends.md +0 -0
  206. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/community/overview.md +0 -0
  207. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/community/walkthroughs.md +0 -0
  208. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/concepts/complex-features.md +0 -0
  209. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/concepts/spec-of-specs.md +0 -0
  210. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/concepts/spec-persistence.md +0 -0
  211. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/docfx.json +0 -0
  212. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/guides/assessment.md +0 -0
  213. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/guides/bugfix.md +0 -0
  214. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/guides/customization.md +0 -0
  215. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/guides/evolving-specs.md +0 -0
  216. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/guides/existing-projects.md +0 -0
  217. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/history.md +0 -0
  218. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/images/spec-kit-logo.webp +0 -0
  219. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/index.md +0 -0
  220. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/install/air-gapped.md +0 -0
  221. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/install/one-time.md +0 -0
  222. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/install/pipx.md +0 -0
  223. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/install/pypi.md +0 -0
  224. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/install/uv.md +0 -0
  225. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/installation.md +0 -0
  226. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/local-development.md +0 -0
  227. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/quickstart.md +0 -0
  228. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/reference/agentic-assessment.md +0 -0
  229. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/reference/agentic-bugfix.md +0 -0
  230. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/reference/agentic-sdd.md +0 -0
  231. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/reference/artifacts.md +0 -0
  232. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/reference/authentication.md +0 -0
  233. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/reference/extensions.md +0 -0
  234. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/reference/overview.md +0 -0
  235. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/reference/presets.md +0 -0
  236. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/reference/workflows.md +0 -0
  237. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/template/public/main.css +0 -0
  238. {specify_cli-1.0.7 → specify_cli-1.0.9}/docs/upgrade.md +0 -0
  239. {specify_cli-1.0.7 → specify_cli-1.0.9}/examples/bundles/business-analyst/README.md +0 -0
  240. {specify_cli-1.0.7 → specify_cli-1.0.9}/examples/bundles/business-analyst/bundle.yml +0 -0
  241. {specify_cli-1.0.7 → specify_cli-1.0.9}/examples/bundles/developer/README.md +0 -0
  242. {specify_cli-1.0.7 → specify_cli-1.0.9}/examples/bundles/developer/bundle.yml +0 -0
  243. {specify_cli-1.0.7 → specify_cli-1.0.9}/examples/bundles/product-manager/README.md +0 -0
  244. {specify_cli-1.0.7 → specify_cli-1.0.9}/examples/bundles/product-manager/bundle.yml +0 -0
  245. {specify_cli-1.0.7 → specify_cli-1.0.9}/examples/bundles/security-researcher/README.md +0 -0
  246. {specify_cli-1.0.7 → specify_cli-1.0.9}/examples/bundles/security-researcher/bundle.yml +0 -0
  247. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/EXTENSION-API-REFERENCE.md +0 -0
  248. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -0
  249. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/EXTENSION-PUBLISHING-GUIDE.md +0 -0
  250. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/EXTENSION-USER-GUIDE.md +0 -0
  251. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/README.md +0 -0
  252. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
  253. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/agent-context/README.md +0 -0
  254. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/agent-context/agent-context-config.yml +0 -0
  255. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/agent-context/agent-context-defaults.json +0 -0
  256. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
  257. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/agent-context/extension.yml +0 -0
  258. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/agent-context/scripts/bash/update-agent-context.sh +0 -0
  259. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -0
  260. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/agent-context/scripts/python/update_agent_context.py +0 -0
  261. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/assess/README.md +0 -0
  262. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/assess/commands/speckit.assess.decide.md +0 -0
  263. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/assess/commands/speckit.assess.define.md +0 -0
  264. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/assess/commands/speckit.assess.intake.md +0 -0
  265. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/assess/commands/speckit.assess.research.md +0 -0
  266. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/assess/commands/speckit.assess.shape.md +0 -0
  267. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/assess/extension.yml +0 -0
  268. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/bug/README.md +0 -0
  269. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/bug/commands/speckit.bug.assess.md +0 -0
  270. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/bug/commands/speckit.bug.fix.md +0 -0
  271. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/bug/commands/speckit.bug.test.md +0 -0
  272. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/bug/extension.yml +0 -0
  273. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/catalog.json +0 -0
  274. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/README.md +0 -0
  275. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/commands/speckit.git.commit.md +0 -0
  276. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/commands/speckit.git.feature.md +0 -0
  277. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/commands/speckit.git.initialize.md +0 -0
  278. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/commands/speckit.git.remote.md +0 -0
  279. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/commands/speckit.git.validate.md +0 -0
  280. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/config-template.yml +0 -0
  281. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/extension.yml +0 -0
  282. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/git-config.yml +0 -0
  283. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/scripts/bash/auto-commit.sh +0 -0
  284. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
  285. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/scripts/bash/git-common.sh +0 -0
  286. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
  287. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
  288. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +0 -0
  289. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
  290. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
  291. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/scripts/python/auto_commit.py +0 -0
  292. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/scripts/python/create_new_feature_branch.py +0 -0
  293. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/scripts/python/git_common.py +0 -0
  294. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/git/scripts/python/initialize_repo.py +0 -0
  295. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/selftest/commands/selftest.md +0 -0
  296. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/selftest/extension.yml +0 -0
  297. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/template/.gitignore +0 -0
  298. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/template/CHANGELOG.md +0 -0
  299. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/template/EXAMPLE-README.md +0 -0
  300. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/template/LICENSE +0 -0
  301. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/template/README.md +0 -0
  302. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/template/commands/example.md +0 -0
  303. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/template/config-template.yml +0 -0
  304. {specify_cli-1.0.7 → specify_cli-1.0.9}/extensions/template/extension.yml +0 -0
  305. {specify_cli-1.0.7 → specify_cli-1.0.9}/integrations/CONTRIBUTING.md +0 -0
  306. {specify_cli-1.0.7 → specify_cli-1.0.9}/integrations/README.md +0 -0
  307. {specify_cli-1.0.7 → specify_cli-1.0.9}/integrations/catalog.community.json +0 -0
  308. {specify_cli-1.0.7 → specify_cli-1.0.9}/integrations/catalog.json +0 -0
  309. {specify_cli-1.0.7 → specify_cli-1.0.9}/media/bootstrap-claude-code.gif +0 -0
  310. {specify_cli-1.0.7 → specify_cli-1.0.9}/media/logo_large.webp +0 -0
  311. {specify_cli-1.0.7 → specify_cli-1.0.9}/media/logo_small.webp +0 -0
  312. {specify_cli-1.0.7 → specify_cli-1.0.9}/media/spec-kit-video-header.jpg +0 -0
  313. {specify_cli-1.0.7 → specify_cli-1.0.9}/media/specify_cli.gif +0 -0
  314. {specify_cli-1.0.7 → specify_cli-1.0.9}/newsletters/2026-April.md +0 -0
  315. {specify_cli-1.0.7 → specify_cli-1.0.9}/newsletters/2026-August.md +0 -0
  316. {specify_cli-1.0.7 → specify_cli-1.0.9}/newsletters/2026-February.md +0 -0
  317. {specify_cli-1.0.7 → specify_cli-1.0.9}/newsletters/2026-July.md +0 -0
  318. {specify_cli-1.0.7 → specify_cli-1.0.9}/newsletters/2026-June.md +0 -0
  319. {specify_cli-1.0.7 → specify_cli-1.0.9}/newsletters/2026-March.md +0 -0
  320. {specify_cli-1.0.7 → specify_cli-1.0.9}/newsletters/2026-May.md +0 -0
  321. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/ARCHITECTURE.md +0 -0
  322. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/PUBLISHING.md +0 -0
  323. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/README.md +0 -0
  324. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/catalog.json +0 -0
  325. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/constitution-sync/README.md +0 -0
  326. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/constitution-sync/commands/speckit.constitution.md +0 -0
  327. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/constitution-sync/preset.yml +0 -0
  328. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/lean/README.md +0 -0
  329. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/lean/commands/speckit.constitution.md +0 -0
  330. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/lean/commands/speckit.implement.md +0 -0
  331. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/lean/commands/speckit.plan.md +0 -0
  332. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/lean/commands/speckit.specify.md +0 -0
  333. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/lean/commands/speckit.tasks.md +0 -0
  334. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/lean/preset.yml +0 -0
  335. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/scaffold/README.md +0 -0
  336. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
  337. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/scaffold/commands/speckit.specify.md +0 -0
  338. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/scaffold/preset.yml +0 -0
  339. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/scaffold/templates/myext-template.md +0 -0
  340. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/scaffold/templates/spec-template.md +0 -0
  341. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/self-test/commands/speckit.specify.md +0 -0
  342. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/self-test/commands/speckit.wrap-test.md +0 -0
  343. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/self-test/preset.yml +0 -0
  344. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/self-test/templates/checklist-template.md +0 -0
  345. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/self-test/templates/constitution-template.md +0 -0
  346. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/self-test/templates/plan-template.md +0 -0
  347. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/self-test/templates/spec-template.md +0 -0
  348. {specify_cli-1.0.7 → specify_cli-1.0.9}/presets/self-test/templates/tasks-template.md +0 -0
  349. {specify_cli-1.0.7 → specify_cli-1.0.9}/scripts/bash/check-prerequisites.sh +0 -0
  350. {specify_cli-1.0.7 → specify_cli-1.0.9}/scripts/bash/resolve-template.sh +0 -0
  351. {specify_cli-1.0.7 → specify_cli-1.0.9}/scripts/bash/setup-plan.sh +0 -0
  352. {specify_cli-1.0.7 → specify_cli-1.0.9}/scripts/bash/setup-tasks.sh +0 -0
  353. {specify_cli-1.0.7 → specify_cli-1.0.9}/scripts/powershell/check-prerequisites.ps1 +0 -0
  354. {specify_cli-1.0.7 → specify_cli-1.0.9}/scripts/powershell/resolve-template.ps1 +0 -0
  355. {specify_cli-1.0.7 → specify_cli-1.0.9}/scripts/powershell/setup-plan.ps1 +0 -0
  356. {specify_cli-1.0.7 → specify_cli-1.0.9}/scripts/powershell/setup-tasks.ps1 +0 -0
  357. {specify_cli-1.0.7 → specify_cli-1.0.9}/scripts/python/check_prerequisites.py +0 -0
  358. {specify_cli-1.0.7 → specify_cli-1.0.9}/scripts/python/common.py +0 -0
  359. {specify_cli-1.0.7 → specify_cli-1.0.9}/scripts/python/resolve_template.py +0 -0
  360. {specify_cli-1.0.7 → specify_cli-1.0.9}/scripts/python/setup_plan.py +0 -0
  361. {specify_cli-1.0.7 → specify_cli-1.0.9}/scripts/python/setup_tasks.py +0 -0
  362. {specify_cli-1.0.7 → specify_cli-1.0.9}/spec-driven.md +0 -0
  363. {specify_cli-1.0.7 → specify_cli-1.0.9}/spec-kit.code-workspace +0 -0
  364. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/_agent_config.py +0 -0
  365. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/_assets.py +0 -0
  366. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/_console.py +0 -0
  367. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/_download_security.py +0 -0
  368. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/_init_options.py +0 -0
  369. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/_installed_list_json.py +0 -0
  370. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/_project.py +0 -0
  371. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/_toml_string.py +0 -0
  372. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/_utils.py +0 -0
  373. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/_version.py +0 -0
  374. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/artifacts/__init__.py +0 -0
  375. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/artifacts/_commands.py +0 -0
  376. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/artifacts/_identifiers.py +0 -0
  377. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/artifacts/catalog.py +0 -0
  378. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/artifacts/models.py +0 -0
  379. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/artifacts/resolution.py +0 -0
  380. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/authentication/__init__.py +0 -0
  381. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/authentication/azure_devops.py +0 -0
  382. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/authentication/base.py +0 -0
  383. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/authentication/config.py +0 -0
  384. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/authentication/github.py +0 -0
  385. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/__init__.py +0 -0
  386. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/commands_impl/__init__.py +0 -0
  387. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/commands_impl/catalog_config.py +0 -0
  388. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/lib/__init__.py +0 -0
  389. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/lib/project.py +0 -0
  390. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/lib/versioning.py +0 -0
  391. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/lib/yamlio.py +0 -0
  392. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/models/__init__.py +0 -0
  393. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/models/catalog.py +0 -0
  394. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/models/manifest.py +0 -0
  395. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/models/records.py +0 -0
  396. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/services/__init__.py +0 -0
  397. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/services/catalog_stack.py +0 -0
  398. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/services/conflict.py +0 -0
  399. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/services/installer.py +0 -0
  400. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/services/packager.py +0 -0
  401. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/services/references.py +0 -0
  402. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/services/resolver.py +0 -0
  403. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/bundler/services/validator.py +0 -0
  404. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/catalogs.py +0 -0
  405. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/commands/__init__.py +0 -0
  406. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/commands/event.py +0 -0
  407. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/commands/init.py +0 -0
  408. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integration_runtime.py +0 -0
  409. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integration_scaffold.py +0 -0
  410. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integration_state.py +0 -0
  411. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integration_status.py +0 -0
  412. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/__init__.py +0 -0
  413. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/_commands.py +0 -0
  414. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/_helpers.py +0 -0
  415. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/_install_commands.py +0 -0
  416. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/_migrate_commands.py +0 -0
  417. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/_query_commands.py +0 -0
  418. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/_scaffold_commands.py +0 -0
  419. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/alquimia/__init__.py +0 -0
  420. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/auggie/__init__.py +0 -0
  421. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/catalog.py +0 -0
  422. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/claude/__init__.py +0 -0
  423. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/cline/__init__.py +0 -0
  424. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
  425. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/command_code/__init__.py +0 -0
  426. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/firebender/__init__.py +0 -0
  427. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/forge/__init__.py +0 -0
  428. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/gemini/__init__.py +0 -0
  429. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/junie/__init__.py +0 -0
  430. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/kilocode/__init__.py +0 -0
  431. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/kimi/__init__.py +0 -0
  432. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -0
  433. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/lingma/__init__.py +0 -0
  434. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/manifest.py +0 -0
  435. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/pi/__init__.py +0 -0
  436. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
  437. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/qwen/__init__.py +0 -0
  438. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/shai/__init__.py +0 -0
  439. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
  440. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/trae/__init__.py +0 -0
  441. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/vibe/__init__.py +0 -0
  442. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/zcode/__init__.py +0 -0
  443. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/integrations/zed/__init__.py +0 -0
  444. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/presets/__init__.py +0 -0
  445. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/presets/_commands.py +0 -0
  446. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/shared_infra.py +0 -0
  447. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/__init__.py +0 -0
  448. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/base.py +0 -0
  449. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/catalog.py +0 -0
  450. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/expressions.py +0 -0
  451. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/overlays/__init__.py +0 -0
  452. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/overlays/_commands.py +0 -0
  453. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/overlays/composer.py +0 -0
  454. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/overlays/layer_sources.py +0 -0
  455. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/overlays/schema.py +0 -0
  456. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/steps/__init__.py +0 -0
  457. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/steps/do_while/__init__.py +0 -0
  458. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/steps/fan_in/__init__.py +0 -0
  459. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/steps/fan_out/__init__.py +0 -0
  460. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/steps/gate/__init__.py +0 -0
  461. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/steps/if_then/__init__.py +0 -0
  462. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/steps/init/__init__.py +0 -0
  463. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/steps/shell/__init__.py +0 -0
  464. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/steps/slot/__init__.py +0 -0
  465. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/steps/switch/__init__.py +0 -0
  466. {specify_cli-1.0.7 → specify_cli-1.0.9}/src/specify_cli/workflows/steps/while_loop/__init__.py +0 -0
  467. {specify_cli-1.0.7 → specify_cli-1.0.9}/templates/checklist-template.md +0 -0
  468. {specify_cli-1.0.7 → specify_cli-1.0.9}/templates/commands/analyze.md +0 -0
  469. {specify_cli-1.0.7 → specify_cli-1.0.9}/templates/commands/checklist.md +0 -0
  470. {specify_cli-1.0.7 → specify_cli-1.0.9}/templates/commands/clarify.md +0 -0
  471. {specify_cli-1.0.7 → specify_cli-1.0.9}/templates/commands/constitution.md +0 -0
  472. {specify_cli-1.0.7 → specify_cli-1.0.9}/templates/commands/implement.md +0 -0
  473. {specify_cli-1.0.7 → specify_cli-1.0.9}/templates/commands/plan.md +0 -0
  474. {specify_cli-1.0.7 → specify_cli-1.0.9}/templates/commands/specify.md +0 -0
  475. {specify_cli-1.0.7 → specify_cli-1.0.9}/templates/commands/tasks.md +0 -0
  476. {specify_cli-1.0.7 → specify_cli-1.0.9}/templates/commands/taskstoissues.md +0 -0
  477. {specify_cli-1.0.7 → specify_cli-1.0.9}/templates/constitution-template.md +0 -0
  478. {specify_cli-1.0.7 → specify_cli-1.0.9}/templates/plan-template.md +0 -0
  479. {specify_cli-1.0.7 → specify_cli-1.0.9}/templates/spec-template.md +0 -0
  480. {specify_cli-1.0.7 → specify_cli-1.0.9}/templates/tasks-template.md +0 -0
  481. {specify_cli-1.0.7 → specify_cli-1.0.9}/templates/vscode-settings.json +0 -0
  482. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/__init__.py +0 -0
  483. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/auth_helpers.py +0 -0
  484. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/bundler_helpers.py +0 -0
  485. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/contract/test_bundled_extension_versions.py +0 -0
  486. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/contract/test_extension_version_guard_script.py +0 -0
  487. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/contract/test_manifest_schema.py +0 -0
  488. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/contract/test_wheel_bundled_presets.py +0 -0
  489. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/contract/test_wheel_core_pack_scripts.py +0 -0
  490. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/extensions/__init__.py +0 -0
  491. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/extensions/assess/__init__.py +0 -0
  492. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/extensions/assess/test_assess_extension.py +0 -0
  493. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/extensions/bug/__init__.py +0 -0
  494. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/extensions/bug/test_bug_extension.py +0 -0
  495. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/extensions/git/__init__.py +0 -0
  496. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/extensions/git/test_git_extension.py +0 -0
  497. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/extensions/git/test_git_extension_python_parity.py +0 -0
  498. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/extensions/test_agent_context_cli_free.py +0 -0
  499. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/extensions/test_extension_agent_context.py +0 -0
  500. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/extensions/test_update_agent_context_feature_json.py +0 -0
  501. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/extensions/test_update_agent_context_python_parity.py +0 -0
  502. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/hooks/TESTING.md +0 -0
  503. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/hooks/plan.md +0 -0
  504. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/hooks/spec.md +0 -0
  505. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/hooks/tasks.md +0 -0
  506. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/http_helpers.py +0 -0
  507. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integration/test_bundler_catalog_stack.py +0 -0
  508. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integration/test_bundler_init_install.py +0 -0
  509. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integration/test_bundler_install_flow.py +0 -0
  510. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integration/test_bundler_local_install.py +0 -0
  511. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integration/test_bundler_security_paths.py +0 -0
  512. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/__init__.py +0 -0
  513. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/conftest.py +0 -0
  514. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_extra_args.py +0 -0
  515. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_home_isolation.py +0 -0
  516. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_alquimia.py +0 -0
  517. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_auggie.py +0 -0
  518. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_base_markdown.py +0 -0
  519. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_base_skills.py +0 -0
  520. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_base_toml.py +0 -0
  521. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_base_yaml.py +0 -0
  522. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_catalog.py +0 -0
  523. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_claude.py +0 -0
  524. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_cline.py +0 -0
  525. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_codebuddy.py +0 -0
  526. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_codex.py +0 -0
  527. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_command_code.py +0 -0
  528. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_copilot.py +0 -0
  529. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_cursor_agent.py +0 -0
  530. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_devin.py +0 -0
  531. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_docker_agent.py +0 -0
  532. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_droid.py +0 -0
  533. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_dsh.py +0 -0
  534. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_firebender.py +0 -0
  535. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_forge.py +0 -0
  536. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_gemini.py +0 -0
  537. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_goose.py +0 -0
  538. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_grok.py +0 -0
  539. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_hermes.py +0 -0
  540. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_junie.py +0 -0
  541. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_kilocode.py +0 -0
  542. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_kimi.py +0 -0
  543. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_kiro_cli.py +0 -0
  544. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_lingma.py +0 -0
  545. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_muse.py +0 -0
  546. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_omp.py +0 -0
  547. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_opencode.py +0 -0
  548. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_pi.py +0 -0
  549. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_qodercli.py +0 -0
  550. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_qwen.py +0 -0
  551. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_rovodev.py +0 -0
  552. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_scaffold.py +0 -0
  553. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_shai.py +0 -0
  554. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_state.py +0 -0
  555. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_subcommand.py +0 -0
  556. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_tabnine.py +0 -0
  557. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_trae.py +0 -0
  558. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_vibe.py +0 -0
  559. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_zcode.py +0 -0
  560. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_integration_zed.py +0 -0
  561. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_manifest.py +0 -0
  562. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_registry.py +0 -0
  563. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/integrations/test_skill_frontmatter_quoting.py +0 -0
  564. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/parity_helpers.py +0 -0
  565. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/self_upgrade_helpers.py +0 -0
  566. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_agent_config_consistency.py +0 -0
  567. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_artifact_command.py +0 -0
  568. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_artifact_command_parity.py +0 -0
  569. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_authentication.py +0 -0
  570. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_branch_numbering.py +0 -0
  571. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_check_prerequisites_paths_only.py +0 -0
  572. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_check_prerequisites_python_parity.py +0 -0
  573. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_check_tool.py +0 -0
  574. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_clarify_stage_gate.py +0 -0
  575. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_cli_version.py +0 -0
  576. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_command_template_hooks.py +0 -0
  577. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_command_template_py_scripts.py +0 -0
  578. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_commands_package.py +0 -0
  579. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_console_imports.py +0 -0
  580. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_constitution_template_sync_report.py +0 -0
  581. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_download_security.py +0 -0
  582. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_event_command.py +0 -0
  583. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_extension_registration.py +0 -0
  584. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_extension_skills.py +0 -0
  585. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_init_dir.py +0 -0
  586. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_init_dir_cli.py +0 -0
  587. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_init_output_markup.py +0 -0
  588. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_installed_list_json.py +0 -0
  589. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_live_transient_windows.py +0 -0
  590. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_merge.py +0 -0
  591. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_post_process.py +0 -0
  592. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_presets.py +0 -0
  593. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_ps1_encoding.py +0 -0
  594. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_registrar_path_traversal.py +0 -0
  595. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_resolve_template_python_parity.py +0 -0
  596. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_security_workflow.py +0 -0
  597. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_self_upgrade_detection.py +0 -0
  598. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_self_upgrade_execution.py +0 -0
  599. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_self_upgrade_guidance.py +0 -0
  600. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_self_upgrade_verification.py +0 -0
  601. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_setup_plan_feature_json.py +0 -0
  602. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_setup_plan_no_overwrite.py +0 -0
  603. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_setup_plan_python_parity.py +0 -0
  604. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_setup_tasks.py +0 -0
  605. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_setup_tasks_python_parity.py +0 -0
  606. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_shared_infra_gitignore.py +0 -0
  607. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_shared_infra_integrity.py +0 -0
  608. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_skill_placeholder_py.py +0 -0
  609. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_specify_template_numbering.py +0 -0
  610. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_tasks_template_constraints.py +0 -0
  611. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_timestamp_branches.py +0 -0
  612. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_upgrade.py +0 -0
  613. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_utils.py +0 -0
  614. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_utils_assets_imports.py +0 -0
  615. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_version_imports.py +0 -0
  616. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/test_workflow_run_without_project.py +0 -0
  617. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/unit/test_bundle_download_url.py +0 -0
  618. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/unit/test_bundler_catalog_config.py +0 -0
  619. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/unit/test_bundler_conflict.py +0 -0
  620. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/unit/test_bundler_packager.py +0 -0
  621. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/unit/test_bundler_records.py +0 -0
  622. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/unit/test_bundler_references.py +0 -0
  623. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/unit/test_bundler_resolver.py +0 -0
  624. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/unit/test_bundler_validator.py +0 -0
  625. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/unit/test_bundler_versioning.py +0 -0
  626. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/unit/test_bundler_yamlio.py +0 -0
  627. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/unit/test_condition_expression_block.py +0 -0
  628. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/workflows/conftest.py +0 -0
  629. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/workflows/test_bundled_speckit_workflow.py +0 -0
  630. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/workflows/test_overlay_commands.py +0 -0
  631. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/workflows/test_overlay_composer.py +0 -0
  632. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/workflows/test_overlay_layer_sources.py +0 -0
  633. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/workflows/test_overlay_schema.py +0 -0
  634. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/workflows/test_overlay_security.py +0 -0
  635. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/workflows/test_resolver_integration.py +0 -0
  636. {specify_cli-1.0.7 → specify_cli-1.0.9}/tests/workflows/test_slot_step.py +0 -0
  637. {specify_cli-1.0.7 → specify_cli-1.0.9}/workflows/ARCHITECTURE.md +0 -0
  638. {specify_cli-1.0.7 → specify_cli-1.0.9}/workflows/PUBLISHING.md +0 -0
  639. {specify_cli-1.0.7 → specify_cli-1.0.9}/workflows/catalog.community.json +0 -0
  640. {specify_cli-1.0.7 → specify_cli-1.0.9}/workflows/speckit/workflow.yml +0 -0
  641. {specify_cli-1.0.7 → specify_cli-1.0.9}/workflows/step-catalog.community.json +0 -0
  642. {specify_cli-1.0.7 → specify_cli-1.0.9}/workflows/step-catalog.json +0 -0
@@ -139,3 +139,16 @@ body:
139
139
  label: Additional Context
140
140
  description: Any other relevant information about this agent
141
141
  placeholder: Screenshots, community links, comparison to existing agents, etc.
142
+
143
+ - type: textarea
144
+ id: ai-disclosure
145
+ attributes:
146
+ label: AI Disclosure
147
+ description: >-
148
+ Per our [Contributing guidelines](https://github.com/github/spec-kit/blob/main/CONTRIBUTING.md#ai-contributions-in-spec-kit),
149
+ any AI assistance used to create this issue must be disclosed. If you used AI, name the agent/tool, model(s),
150
+ settings/mode (reasoning effort; autonomous vs. human-supervised), and extent. Otherwise leave this as "N/A".
151
+ This does not change how your issue is handled — it just gives maintainers visibility into model/agent usage.
152
+ value: "N/A"
153
+ validations:
154
+ required: true
@@ -138,3 +138,16 @@ body:
138
138
  label: Additional Context
139
139
  description: Add any other context about the problem
140
140
  placeholder: Screenshots, related issues, workarounds attempted, etc.
141
+
142
+ - type: textarea
143
+ id: ai-disclosure
144
+ attributes:
145
+ label: AI Disclosure
146
+ description: >-
147
+ Per our [Contributing guidelines](https://github.com/github/spec-kit/blob/main/CONTRIBUTING.md#ai-contributions-in-spec-kit),
148
+ any AI assistance used to create this issue must be disclosed. If you used AI, name the agent/tool, model(s),
149
+ settings/mode (reasoning effort; autonomous vs. human-supervised), and extent. Otherwise leave this as "N/A".
150
+ This does not change how your issue is handled — it just gives maintainers visibility into model/agent usage.
151
+ value: "N/A"
152
+ validations:
153
+ required: true
@@ -124,3 +124,16 @@ body:
124
124
  label: Additional Context
125
125
  description: Add any other context, screenshots, or examples
126
126
  placeholder: Links to similar features, mockups, related discussions, etc.
127
+
128
+ - type: textarea
129
+ id: ai-disclosure
130
+ attributes:
131
+ label: AI Disclosure
132
+ description: >-
133
+ Per our [Contributing guidelines](https://github.com/github/spec-kit/blob/main/CONTRIBUTING.md#ai-contributions-in-spec-kit),
134
+ any AI assistance used to create this issue must be disclosed. If you used AI, name the agent/tool, model(s),
135
+ settings/mode (reasoning effort; autonomous vs. human-supervised), and extent. Otherwise leave this as "N/A".
136
+ This does not change how your issue is handled — it just gives maintainers visibility into model/agent usage.
137
+ value: "N/A"
138
+ validations:
139
+ required: true
@@ -16,6 +16,8 @@
16
16
  <!-- See: https://github.com/github/spec-kit/blob/main/CONTRIBUTING.md#ai-contributions-in-spec-kit -->
17
17
 
18
18
  - [ ] I **did not** use AI assistance for this contribution
19
- - [ ] I **did** use AI assistance (describe below)
19
+ - [ ] I **did** use AI assistance (fill in the disclosure below)
20
20
 
21
- <!-- If you used AI, briefly describe how (e.g., "Code generated by Copilot", "Consulted ChatGPT for approach"): -->
21
+ <!-- If you used AI assistance, replace "N/A" below with a free-form disclosure that names the agent/tool, model(s), settings/mode (reasoning effort; autonomous vs. human-supervised), and extent (docs vs. code generation). This does not change how much scrutiny your PR receives — the same evidence bar applies to everyone. It just gives maintainers visibility into model/agent usage. -->
22
+
23
+ **AI disclosure:** N/A
@@ -35,6 +35,11 @@
35
35
  "version": "v10.0.1",
36
36
  "sha": "20cfd1bf945f4377ade1205e4dbc17946fc9a30d"
37
37
  },
38
+ "github/gh-aw-actions/setup-cli@v0.88.7": {
39
+ "repo": "github/gh-aw-actions/setup-cli",
40
+ "version": "v0.88.7",
41
+ "sha": "5e508589e03a7757a7e05b26e834292f5445bfb6"
42
+ },
38
43
  "github/gh-aw-actions/setup@v0.88.7": {
39
44
  "repo": "github/gh-aw-actions/setup",
40
45
  "version": "v0.88.7",
@@ -0,0 +1,245 @@
1
+ # Release Process
2
+
3
+ This document describes the automated release process for Spec Kit.
4
+
5
+ ## Overview
6
+
7
+ The release process is split into three workflows:
8
+
9
+ 1. **Release Trigger Workflow** (`release-trigger.yml`) - Manages versioning, creates the tag, and opens the release PR
10
+ 2. **Release Workflow** (`release.yml`) - Creates the GitHub Release and release notes
11
+ 3. **Publish to PyPI Workflow** (`publish-pypi.yml`) - Builds and publishes the Python package from an exact tag
12
+
13
+ This separation ensures that git tags point to commits with the correct version in `pyproject.toml` and lets maintainers recover the GitHub and PyPI publishing steps independently.
14
+
15
+ ## Before Creating a Release
16
+
17
+ **Important**: Write clear, descriptive commit messages!
18
+
19
+ ### How CHANGELOG.md Works
20
+
21
+ The CHANGELOG is **automatically generated** from your git commit messages:
22
+
23
+ 1. **During Development**: Write clear, descriptive commit messages:
24
+
25
+ ```bash
26
+ git commit -m "feat: Add new authentication feature"
27
+ git commit -m "fix: Resolve timeout issue in API client (#123)"
28
+ git commit -m "docs: Update installation instructions"
29
+ ```
30
+
31
+ 2. **When Releasing**: The release trigger workflow automatically:
32
+ - Finds all commits since the last release tag
33
+ - Formats them as changelog entries
34
+ - Inserts them into CHANGELOG.md
35
+ - Commits the updated changelog before creating the new tag
36
+
37
+ ### Commit Message Best Practices
38
+
39
+ Good commit messages make good changelogs:
40
+
41
+ - **Be descriptive**: "Add user authentication" not "Update files"
42
+ - **Reference issues/PRs**: Include `(#123)` for automated linking
43
+ - **Use conventional commits** (optional): `feat:`, `fix:`, `docs:`, `chore:`
44
+ - **Keep it concise**: One line is ideal, details go in commit body
45
+
46
+ **Example commits that become good changelog entries:**
47
+
48
+ ```text
49
+ fix: prepend YAML frontmatter to Cursor .mdc files (#1699)
50
+ feat: add generic agent support with customizable command directories (#1639)
51
+ docs: document dual-catalog system for extensions (#1689)
52
+ ```
53
+
54
+ ## Creating a Release
55
+
56
+ ### Option 1: Auto-Increment (Recommended for patches)
57
+
58
+ 1. Go to **Actions** → **Release Trigger**
59
+ 2. Click **Run workflow**
60
+ 3. Leave the version field **empty**
61
+ 4. Click **Run workflow**
62
+
63
+ The workflow will:
64
+
65
+ - Auto-increment the patch version (e.g., `0.1.10` → `0.1.11`)
66
+ - Update `pyproject.toml`
67
+ - Update `CHANGELOG.md` by adding a new section for the release based on commits since the last tag
68
+ - Commit changes to a `chore/release-vX.Y.Z` branch
69
+ - Create and push the git tag from that branch
70
+ - Bump the release branch to the next patch development version (for example, `1.2.3` → `1.2.4.dev0`)
71
+ - Open a PR to merge the version bump into `main`
72
+ - Trigger the release workflow automatically via the tag push
73
+
74
+ ### Option 2: Manual Version (For major/minor bumps)
75
+
76
+ 1. Go to **Actions** → **Release Trigger**
77
+ 2. Click **Run workflow**
78
+ 3. Enter the desired version (e.g., `0.2.0` or `v0.2.0`)
79
+ 4. Click **Run workflow**
80
+
81
+ The workflow will:
82
+
83
+ - Use your specified version
84
+ - Update `pyproject.toml`
85
+ - Update `CHANGELOG.md` by adding a new section for the release based on commits since the last tag
86
+ - Commit changes to a `chore/release-vX.Y.Z` branch
87
+ - Create and push the git tag from that branch
88
+ - Bump the release branch to the next patch development version (for example, `1.2.3` → `1.2.4.dev0`)
89
+ - Open a PR to merge the version bump into `main`
90
+ - Trigger the release workflow automatically via the tag push
91
+
92
+ ## What Happens Next
93
+
94
+ The release trigger pushes a `chore/release-vX.Y.Z` branch with the release version commit, then pushes the tag pointing to that commit. After the tag push, two paths proceed independently:
95
+
96
+ - The **Release Workflow** creates a GitHub Release with generated release notes. No per-agent ZIP assets are built or uploaded; GitHub still provides its standard source archives.
97
+ - The **Release Trigger Workflow** continues by bumping the release branch to the next patch development version and opening a PR to merge both version commits into `main`.
98
+
99
+ GitHub Release creation may finish before or after the development bump and PR creation. Run the **Publish to PyPI Workflow** manually with the same tag to build and publish the wheel and source distribution.
100
+
101
+ > **Note**: The GitHub Release and PyPI workflows do not depend on each other. Waiting for the GitHub Release to complete before publishing to PyPI makes the release state easier to verify. Merge the auto-opened PR after publishing to keep `main` on the next development version.
102
+
103
+ ## Workflow Details
104
+
105
+ ### Release Trigger Workflow
106
+
107
+ **File**: `.github/workflows/release-trigger.yml`
108
+
109
+ **Trigger**: Manual (`workflow_dispatch`)
110
+
111
+ **Permissions Required**: `contents: write`, `pull-requests: write`
112
+
113
+ **Steps**:
114
+
115
+ 1. Checkout repository
116
+ 2. Determine version (manual or auto-increment)
117
+ 3. Check if tag already exists (prevents duplicates)
118
+ 4. Create `chore/release-vX.Y.Z` branch
119
+ 5. Update `pyproject.toml`
120
+ 6. Update `CHANGELOG.md` from git commits
121
+ 7. Commit changes
122
+ 8. Push branch and tag
123
+ 9. Bump `pyproject.toml` to the next patch development version and push the branch
124
+ 10. Open PR to merge the release and development version commits into `main`
125
+
126
+ ### Release Workflow
127
+
128
+ **File**: `.github/workflows/release.yml`
129
+
130
+ **Trigger**: Tag push (`v*`)
131
+
132
+ **Permissions Required**: `contents: write`
133
+
134
+ **Steps**:
135
+
136
+ 1. Checkout repository at tag
137
+ 2. Extract version from tag name
138
+ 3. Check if release already exists
139
+ 4. Generate release notes from commits
140
+ 5. Create the GitHub Release without additional uploaded assets
141
+
142
+ ### Publish to PyPI Workflow
143
+
144
+ **File**: `.github/workflows/publish-pypi.yml`
145
+
146
+ **Trigger**: Manual (`workflow_dispatch`) with the exact release tag
147
+
148
+ **Permissions Required**: `contents: read`, `actions: write` for the build job; `actions: read`, `id-token: write` for the publish job
149
+
150
+ **Steps**:
151
+
152
+ 1. Validate that the input uses the strict `vX.Y.Z` tag format
153
+ 2. Checkout `refs/tags/vX.Y.Z`
154
+ 3. Verify that the tag version exactly matches the version in `pyproject.toml`
155
+ 4. Build the wheel and source distribution with `uv build`
156
+ 5. Transfer the distributions between jobs as a GitHub Actions artifact
157
+ 6. Publish them to PyPI with `uv publish` and Trusted Publishing
158
+
159
+ ## Version Constraints
160
+
161
+ - Tags must follow format: `v{MAJOR}.{MINOR}.{PATCH}`
162
+ - Example valid versions: `v0.1.11`, `v0.2.0`, `v1.0.0`
163
+ - Auto-increment only bumps patch version
164
+ - Cannot create duplicate tags (workflow will fail)
165
+
166
+ ## Benefits of This Approach
167
+
168
+ ✅ **Version Consistency**: Git tags point to commits with matching `pyproject.toml` version
169
+
170
+ ✅ **Single Source of Truth**: Version set once, used everywhere
171
+
172
+ ✅ **Prevents Drift**: No more manual version synchronization needed
173
+
174
+ ✅ **Independent Publishing**: GitHub Release creation and PyPI publishing can be verified and recovered separately
175
+
176
+ ✅ **Flexibility**: Supports both auto-increment and manual versioning
177
+
178
+ ## Troubleshooting
179
+
180
+ ### No Commits Since Last Release
181
+
182
+ If you run the release trigger workflow when there are no new commits since the last tag:
183
+
184
+ - The workflow will still succeed
185
+ - The CHANGELOG will show "- Initial release" if it's the first release
186
+ - Or it will be empty if there are no commits
187
+ - Consider adding meaningful commits before releasing
188
+
189
+ **Best Practice**: Use descriptive commit messages - they become your changelog!
190
+
191
+ ### Tag Already Exists
192
+
193
+ If you see "Error: Tag vX.Y.Z already exists!", inspect the existing tag, GitHub Release, and PyPI version before taking action. Do not move or delete a tag for a version that has already been published to PyPI. PyPI does not allow an uploaded distribution filename to be reused, even after deletion.
194
+
195
+ If the existing tag identifies the intended release, keep it and recover any missing outputs using the guidance below. Choose a new version when publishing different release contents under a version that is already in use. Only consider removing an erroneous tag when you have confirmed that the version was not published to PyPI and that no consumers rely on it.
196
+
197
+ ### Recovering an Incomplete Release
198
+
199
+ Verify the release branch/tag, GitHub Release, wheel (`.whl`), and source distribution (`.tar.gz`) separately. A PyPI version page alone does not confirm that both distributions were uploaded.
200
+
201
+ | State | Recovery |
202
+ |---|---|
203
+ | Release branch exists, tag is missing | Inspect the failed run and confirm the intended release commit has package version `X.Y.Z`. Create or reuse the local `vX.Y.Z` tag only if it points to that commit, then push it. Do not tag a subsequent `.dev0` commit. Complete any missing development bump or PR as described below. |
204
+ | Tag exists, release branch development bump or PR is incomplete | Keep the tag unchanged. Inspect `chore/release-vX.Y.Z` and any existing PR; restore the branch from the release commit if missing, apply the next patch development bump if needed, and open or reuse the PR into `main`. Merge after publication is complete. Do not rerun Release Trigger for the existing tag. |
205
+ | Tag exists, GitHub Release is missing | Confirm that the tag points to the intended release commit, then create the GitHub Release from that existing tag with the same notes format used by `release.yml`. |
206
+ | Valid tag exists, neither wheel nor sdist is published to PyPI | Run **Publish to PyPI** manually with the exact release tag, independently of GitHub Release creation. |
207
+ | PyPI version exists, GitHub Release is missing | Keep the existing tag unchanged and create the GitHub Release from it. |
208
+ | Wheel is published, sdist is missing | Recover the original build artifacts and publish the missing sdist using the procedure below; verify the existing wheel matches exactly. |
209
+ | Sdist is published, wheel is missing | Recover the original build artifacts and publish the missing wheel using the procedure below; verify the existing sdist matches exactly. |
210
+
211
+ For partial PyPI uploads, use a recovery procedure that does not depend on a failed-job rerun retaining access to the original build:
212
+
213
+ 1. Inspect the original **Publish to PyPI** run and the files already on PyPI. Download and preserve its original `dist` artifact before any rerun, if it is still accessible, and confirm the run used the intended release tag.
214
+ 2. Extract the wheel and sdist into a clean `dist/` directory. Compare the SHA-256 hashes of files whose names are already on PyPI with the hashes published by PyPI; they must match exactly.
215
+ 3. Have a maintainer with PyPI publishing permission run `uv publish` against that directory using an authorized PyPI token. The current workflow accepts only a tag and cannot take a saved artifact as input; its Trusted Publishing identity does not grant credentials to a local shell. With PyPI, [repeating `uv publish` skips existing identical files](https://docs.astral.sh/uv/guides/package/#publishing-your-package) and uploads missing files. Confirm that both the wheel and sdist are present afterward.
216
+
217
+ If the original artifact is unavailable, rebuild from the unchanged release tag and perform the same hash comparison before publishing. The same tag alone does not guarantee identical build output. If any already-published file differs, stop and investigate; do not replace published files or move the tag. Previously used distribution filenames cannot be replaced or reused for different contents, even after deletion.
218
+
219
+ Rerunning the entire workflow also reruns `uv build` and proceeds to publication without a separate manual comparison step. Do not use it as a substitute for the verification above after a partial upload. If no authorized publishing path is available for the verified artifacts, ask a PyPI project owner to arrange recovery.
220
+
221
+ ### Release Workflow Didn't Trigger
222
+
223
+ Check that:
224
+
225
+ - The release trigger workflow completed successfully
226
+ - The tag was pushed (check repository tags)
227
+ - The release workflow is enabled in Actions settings
228
+
229
+ ### Version Mismatch
230
+
231
+ After a release PR is merged, `pyproject.toml` on `main` is expected to differ from the latest release tag. The tag `vX.Y.Z` points to a commit whose package version is exactly `X.Y.Z`; the release branch is subsequently bumped to the next patch development version (for example, `1.2.3` → `1.2.4.dev0`). Do not sync `main` back to the released version.
232
+
233
+ The **Publish to PyPI** workflow checks out the release tag and verifies that its version, without the `v` prefix, exactly matches `pyproject.toml` at that commit. A mismatch at the tagged commit is an error; the next development version on `main` is expected.
234
+
235
+ If that check fails, inspect the tag, GitHub Release, and PyPI publication state before choosing a recovery path (see **Tag Already Exists** and **Recovering an Incomplete Release** above). Do not move or recreate a published tag.
236
+
237
+ ## Legacy Behavior (Pre-v0.1.10)
238
+
239
+ Before this change, the release workflow:
240
+
241
+ - Created tags automatically on main branch pushes
242
+ - Updated `pyproject.toml` AFTER creating the tag
243
+ - Resulted in tags pointing to commits with outdated versions
244
+
245
+ This has been fixed in v0.1.10+.