specify-cli 0.13.4__tar.gz → 0.14.1__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 (524) hide show
  1. {specify_cli-0.13.4 → specify_cli-0.14.1}/.devcontainer/devcontainer.json +2 -1
  2. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/test.yml +1 -1
  3. {specify_cli-0.13.4 → specify_cli-0.14.1}/AGENTS.md +41 -2
  4. {specify_cli-0.13.4 → specify_cli-0.14.1}/CHANGELOG.md +50 -0
  5. {specify_cli-0.13.4 → specify_cli-0.14.1}/PKG-INFO +1 -1
  6. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/community/friends.md +3 -1
  7. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/community/presets.md +7 -7
  8. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/local-development.md +2 -2
  9. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/quickstart.md +1 -1
  10. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/reference/integrations.md +24 -24
  11. specify_cli-0.14.1/extensions/agent-context/README.md +63 -0
  12. specify_cli-0.14.1/extensions/agent-context/agent-context-config.yml +24 -0
  13. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/README.md +6 -1
  14. specify_cli-0.14.1/extensions/git/commands/speckit.git.commit.md +63 -0
  15. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/config-template.yml +7 -0
  16. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/git-config.yml +7 -0
  17. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/scripts/bash/auto-commit.sh +74 -3
  18. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/scripts/powershell/auto-commit.ps1 +63 -2
  19. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/scripts/python/auto_commit.py +9 -1
  20. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/catalog.community.json +38 -37
  21. specify_cli-0.14.1/presets/lean/commands/speckit.constitution.md +33 -0
  22. {specify_cli-0.13.4 → specify_cli-0.14.1}/pyproject.toml +2 -1
  23. specify_cli-0.14.1/src/specify_cli/_download_security.py +218 -0
  24. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/_github_http.py +9 -4
  25. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/_version.py +10 -3
  26. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/authentication/azure_devops.py +49 -7
  27. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/authentication/http.py +30 -5
  28. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/commands_impl/catalog_config.py +5 -2
  29. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/lib/yamlio.py +30 -6
  30. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/models/catalog.py +22 -5
  31. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/models/manifest.py +8 -4
  32. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/models/records.py +14 -4
  33. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/services/installer.py +4 -1
  34. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/services/packager.py +7 -1
  35. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/extensions/__init__.py +24 -22
  36. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/extensions/_commands.py +15 -2
  37. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integration_runtime.py +8 -1
  38. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/cline/__init__.py +9 -3
  39. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/kiro_cli/__init__.py +7 -7
  40. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/lingma/__init__.py +1 -0
  41. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/omp/__init__.py +1 -0
  42. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/presets/_commands.py +10 -19
  43. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/_commands.py +24 -75
  44. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/expressions.py +8 -2
  45. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/overlays/merge.py +15 -3
  46. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/gate/__init__.py +1 -1
  47. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/init/__init__.py +1 -1
  48. {specify_cli-0.13.4 → specify_cli-0.14.1}/templates/commands/constitution.md +20 -0
  49. {specify_cli-0.13.4 → specify_cli-0.14.1}/templates/commands/specify.md +2 -2
  50. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/contract/test_catalog_schema.py +51 -3
  51. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/contract/test_manifest_schema.py +31 -0
  52. specify_cli-0.14.1/tests/contract/test_wheel_core_pack_scripts.py +40 -0
  53. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/extensions/git/test_git_extension.py +554 -0
  54. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/extensions/git/test_git_extension_python_parity.py +26 -0
  55. specify_cli-0.14.1/tests/http_helpers.py +46 -0
  56. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integration/test_bundler_install_flow.py +13 -0
  57. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_catalog.py +2 -0
  58. specify_cli-0.14.1/tests/integrations/test_integration_lingma.py +18 -0
  59. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_omp.py +6 -0
  60. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_state.py +28 -0
  61. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/self_upgrade_helpers.py +2 -1
  62. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_authentication.py +342 -28
  63. specify_cli-0.14.1/tests/test_download_security.py +227 -0
  64. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_extension_skills.py +111 -0
  65. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_extensions.py +112 -5
  66. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_github_http.py +52 -8
  67. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_post_process.py +31 -0
  68. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_presets.py +85 -5
  69. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_self_upgrade_detection.py +1 -0
  70. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_self_upgrade_execution.py +1 -0
  71. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_self_upgrade_guidance.py +1 -0
  72. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_self_upgrade_verification.py +1 -0
  73. specify_cli-0.14.1/tests/test_specify_template_numbering.py +39 -0
  74. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_upgrade.py +51 -6
  75. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_workflows.py +112 -50
  76. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/unit/test_bundler_catalog_config.py +14 -0
  77. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/unit/test_bundler_packager.py +17 -0
  78. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/unit/test_bundler_records.py +21 -0
  79. specify_cli-0.14.1/tests/unit/test_bundler_yamlio.py +26 -0
  80. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/workflows/test_overlay_merge.py +17 -0
  81. specify_cli-0.13.4/extensions/agent-context/README.md +0 -67
  82. specify_cli-0.13.4/extensions/agent-context/agent-context-config.yml +0 -20
  83. specify_cli-0.13.4/extensions/git/commands/speckit.git.commit.md +0 -48
  84. specify_cli-0.13.4/presets/lean/commands/speckit.constitution.md +0 -15
  85. specify_cli-0.13.4/tests/http_helpers.py +0 -15
  86. specify_cli-0.13.4/tests/integrations/test_integration_lingma.py +0 -10
  87. {specify_cli-0.13.4 → specify_cli-0.14.1}/.devcontainer/post-create.sh +0 -0
  88. {specify_cli-0.13.4 → specify_cli-0.14.1}/.editorconfig +0 -0
  89. {specify_cli-0.13.4 → specify_cli-0.14.1}/.gitattributes +0 -0
  90. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/CODEOWNERS +0 -0
  91. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/ISSUE_TEMPLATE/agent_request.yml +0 -0
  92. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  93. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/ISSUE_TEMPLATE/bundle_submission.yml +0 -0
  94. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  95. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
  96. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  97. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/ISSUE_TEMPLATE/preset_submission.yml +0 -0
  98. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  99. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/aw/actions-lock.json +0 -0
  100. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/dependabot.yml +0 -0
  101. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/scripts/check_security_requirements.py +0 -0
  102. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/security-audit-requirements.txt +0 -0
  103. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/skills/add-community-extension/SKILL.md +0 -0
  104. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/RELEASE-PROCESS.md +0 -0
  105. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/add-community-bundle.lock.yml +0 -0
  106. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/add-community-bundle.md +0 -0
  107. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/add-community-extension.lock.yml +0 -0
  108. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/add-community-extension.md +0 -0
  109. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/add-community-preset.lock.yml +0 -0
  110. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/add-community-preset.md +0 -0
  111. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/bug-assess.lock.yml +0 -0
  112. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/bug-assess.md +0 -0
  113. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/bug-fix.lock.yml +0 -0
  114. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/bug-fix.md +0 -0
  115. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/bug-test.lock.yml +0 -0
  116. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/bug-test.md +0 -0
  117. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/catalog-assign.yml +0 -0
  118. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/codeql.yml +0 -0
  119. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/docs.yml +0 -0
  120. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/lint.yml +0 -0
  121. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/publish-pypi.yml +0 -0
  122. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/release-trigger.yml +0 -0
  123. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/release.yml +0 -0
  124. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/security.yml +0 -0
  125. {specify_cli-0.13.4 → specify_cli-0.14.1}/.github/workflows/stale.yml +0 -0
  126. {specify_cli-0.13.4 → specify_cli-0.14.1}/.gitignore +0 -0
  127. {specify_cli-0.13.4 → specify_cli-0.14.1}/.markdownlint-cli2.jsonc +0 -0
  128. {specify_cli-0.13.4 → specify_cli-0.14.1}/.pre-commit-config.yaml +0 -0
  129. {specify_cli-0.13.4 → specify_cli-0.14.1}/.zenodo.json +0 -0
  130. {specify_cli-0.13.4 → specify_cli-0.14.1}/CITATION.cff +0 -0
  131. {specify_cli-0.13.4 → specify_cli-0.14.1}/CODE_OF_CONDUCT.md +0 -0
  132. {specify_cli-0.13.4 → specify_cli-0.14.1}/CONTRIBUTING.md +0 -0
  133. {specify_cli-0.13.4 → specify_cli-0.14.1}/DEVELOPMENT.md +0 -0
  134. {specify_cli-0.13.4 → specify_cli-0.14.1}/LICENSE +0 -0
  135. {specify_cli-0.13.4 → specify_cli-0.14.1}/README.md +0 -0
  136. {specify_cli-0.13.4 → specify_cli-0.14.1}/SECURITY.md +0 -0
  137. {specify_cli-0.13.4 → specify_cli-0.14.1}/SUPPORT.md +0 -0
  138. {specify_cli-0.13.4 → specify_cli-0.14.1}/bundles/catalog.community.json +0 -0
  139. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/.gitignore +0 -0
  140. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/README.md +0 -0
  141. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/community/bundles.md +0 -0
  142. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/community/extensions.md +0 -0
  143. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/community/overview.md +0 -0
  144. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/community/walkthroughs.md +0 -0
  145. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/concepts/complex-features.md +0 -0
  146. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/concepts/sdd.md +0 -0
  147. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/concepts/spec-of-specs.md +0 -0
  148. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/concepts/spec-persistence.md +0 -0
  149. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/docfx.json +0 -0
  150. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/guides/evolving-specs.md +0 -0
  151. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/guides/monorepo.md +0 -0
  152. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/index.md +0 -0
  153. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/install/air-gapped.md +0 -0
  154. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/install/one-time.md +0 -0
  155. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/install/pipx.md +0 -0
  156. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/install/pypi.md +0 -0
  157. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/install/uv.md +0 -0
  158. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/installation.md +0 -0
  159. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/reference/agentic-bugfix.md +0 -0
  160. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/reference/agentic-sdd.md +0 -0
  161. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/reference/authentication.md +0 -0
  162. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/reference/bundles.md +0 -0
  163. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/reference/core.md +0 -0
  164. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/reference/extensions.md +0 -0
  165. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/reference/overview.md +0 -0
  166. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/reference/presets.md +0 -0
  167. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/reference/workflows.md +0 -0
  168. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/template/public/main.css +0 -0
  169. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/toc.yml +0 -0
  170. {specify_cli-0.13.4 → specify_cli-0.14.1}/docs/upgrade.md +0 -0
  171. {specify_cli-0.13.4 → specify_cli-0.14.1}/examples/bundles/business-analyst/README.md +0 -0
  172. {specify_cli-0.13.4 → specify_cli-0.14.1}/examples/bundles/business-analyst/bundle.yml +0 -0
  173. {specify_cli-0.13.4 → specify_cli-0.14.1}/examples/bundles/developer/README.md +0 -0
  174. {specify_cli-0.13.4 → specify_cli-0.14.1}/examples/bundles/developer/bundle.yml +0 -0
  175. {specify_cli-0.13.4 → specify_cli-0.14.1}/examples/bundles/product-manager/README.md +0 -0
  176. {specify_cli-0.13.4 → specify_cli-0.14.1}/examples/bundles/product-manager/bundle.yml +0 -0
  177. {specify_cli-0.13.4 → specify_cli-0.14.1}/examples/bundles/security-researcher/README.md +0 -0
  178. {specify_cli-0.13.4 → specify_cli-0.14.1}/examples/bundles/security-researcher/bundle.yml +0 -0
  179. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/EXTENSION-API-REFERENCE.md +0 -0
  180. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -0
  181. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/EXTENSION-PUBLISHING-GUIDE.md +0 -0
  182. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/EXTENSION-USER-GUIDE.md +0 -0
  183. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/README.md +0 -0
  184. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
  185. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/agent-context/agent-context-defaults.json +0 -0
  186. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
  187. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/agent-context/extension.yml +0 -0
  188. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/agent-context/scripts/bash/update-agent-context.sh +0 -0
  189. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -0
  190. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/agent-context/scripts/python/update_agent_context.py +0 -0
  191. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/assess/README.md +0 -0
  192. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/assess/commands/speckit.assess.decide.md +0 -0
  193. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/assess/commands/speckit.assess.define.md +0 -0
  194. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/assess/commands/speckit.assess.intake.md +0 -0
  195. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/assess/commands/speckit.assess.research.md +0 -0
  196. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/assess/commands/speckit.assess.shape.md +0 -0
  197. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/assess/extension.yml +0 -0
  198. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/bug/README.md +0 -0
  199. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/bug/commands/speckit.bug.assess.md +0 -0
  200. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/bug/commands/speckit.bug.fix.md +0 -0
  201. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/bug/commands/speckit.bug.test.md +0 -0
  202. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/bug/extension.yml +0 -0
  203. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/catalog.community.json +0 -0
  204. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/catalog.json +0 -0
  205. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/commands/speckit.git.feature.md +0 -0
  206. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/commands/speckit.git.initialize.md +0 -0
  207. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/commands/speckit.git.remote.md +0 -0
  208. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/commands/speckit.git.validate.md +0 -0
  209. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/extension.yml +0 -0
  210. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
  211. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/scripts/bash/git-common.sh +0 -0
  212. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
  213. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +0 -0
  214. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
  215. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
  216. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/scripts/python/create_new_feature_branch.py +0 -0
  217. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/scripts/python/git_common.py +0 -0
  218. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/git/scripts/python/initialize_repo.py +0 -0
  219. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/selftest/commands/selftest.md +0 -0
  220. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/selftest/extension.yml +0 -0
  221. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/template/.gitignore +0 -0
  222. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/template/CHANGELOG.md +0 -0
  223. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/template/EXAMPLE-README.md +0 -0
  224. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/template/LICENSE +0 -0
  225. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/template/README.md +0 -0
  226. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/template/commands/example.md +0 -0
  227. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/template/config-template.yml +0 -0
  228. {specify_cli-0.13.4 → specify_cli-0.14.1}/extensions/template/extension.yml +0 -0
  229. {specify_cli-0.13.4 → specify_cli-0.14.1}/integrations/CONTRIBUTING.md +0 -0
  230. {specify_cli-0.13.4 → specify_cli-0.14.1}/integrations/README.md +0 -0
  231. {specify_cli-0.13.4 → specify_cli-0.14.1}/integrations/catalog.community.json +0 -0
  232. {specify_cli-0.13.4 → specify_cli-0.14.1}/integrations/catalog.json +0 -0
  233. {specify_cli-0.13.4 → specify_cli-0.14.1}/media/bootstrap-claude-code.gif +0 -0
  234. {specify_cli-0.13.4 → specify_cli-0.14.1}/media/logo_large.webp +0 -0
  235. {specify_cli-0.13.4 → specify_cli-0.14.1}/media/logo_small.webp +0 -0
  236. {specify_cli-0.13.4 → specify_cli-0.14.1}/media/spec-kit-video-header.jpg +0 -0
  237. {specify_cli-0.13.4 → specify_cli-0.14.1}/media/specify_cli.gif +0 -0
  238. {specify_cli-0.13.4 → specify_cli-0.14.1}/newsletters/2026-April.md +0 -0
  239. {specify_cli-0.13.4 → specify_cli-0.14.1}/newsletters/2026-February.md +0 -0
  240. {specify_cli-0.13.4 → specify_cli-0.14.1}/newsletters/2026-June.md +0 -0
  241. {specify_cli-0.13.4 → specify_cli-0.14.1}/newsletters/2026-March.md +0 -0
  242. {specify_cli-0.13.4 → specify_cli-0.14.1}/newsletters/2026-May.md +0 -0
  243. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/ARCHITECTURE.md +0 -0
  244. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/PUBLISHING.md +0 -0
  245. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/README.md +0 -0
  246. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/catalog.json +0 -0
  247. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/lean/README.md +0 -0
  248. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/lean/commands/speckit.implement.md +0 -0
  249. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/lean/commands/speckit.plan.md +0 -0
  250. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/lean/commands/speckit.specify.md +0 -0
  251. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/lean/commands/speckit.tasks.md +0 -0
  252. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/lean/preset.yml +0 -0
  253. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/scaffold/README.md +0 -0
  254. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
  255. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/scaffold/commands/speckit.specify.md +0 -0
  256. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/scaffold/preset.yml +0 -0
  257. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/scaffold/templates/myext-template.md +0 -0
  258. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/scaffold/templates/spec-template.md +0 -0
  259. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/self-test/commands/speckit.specify.md +0 -0
  260. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/self-test/commands/speckit.wrap-test.md +0 -0
  261. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/self-test/preset.yml +0 -0
  262. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/self-test/templates/checklist-template.md +0 -0
  263. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/self-test/templates/constitution-template.md +0 -0
  264. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/self-test/templates/plan-template.md +0 -0
  265. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/self-test/templates/spec-template.md +0 -0
  266. {specify_cli-0.13.4 → specify_cli-0.14.1}/presets/self-test/templates/tasks-template.md +0 -0
  267. {specify_cli-0.13.4 → specify_cli-0.14.1}/scripts/bash/check-prerequisites.sh +0 -0
  268. {specify_cli-0.13.4 → specify_cli-0.14.1}/scripts/bash/common.sh +0 -0
  269. {specify_cli-0.13.4 → specify_cli-0.14.1}/scripts/bash/create-new-feature.sh +0 -0
  270. {specify_cli-0.13.4 → specify_cli-0.14.1}/scripts/bash/setup-plan.sh +0 -0
  271. {specify_cli-0.13.4 → specify_cli-0.14.1}/scripts/bash/setup-tasks.sh +0 -0
  272. {specify_cli-0.13.4 → specify_cli-0.14.1}/scripts/powershell/check-prerequisites.ps1 +0 -0
  273. {specify_cli-0.13.4 → specify_cli-0.14.1}/scripts/powershell/common.ps1 +0 -0
  274. {specify_cli-0.13.4 → specify_cli-0.14.1}/scripts/powershell/create-new-feature.ps1 +0 -0
  275. {specify_cli-0.13.4 → specify_cli-0.14.1}/scripts/powershell/setup-plan.ps1 +0 -0
  276. {specify_cli-0.13.4 → specify_cli-0.14.1}/scripts/powershell/setup-tasks.ps1 +0 -0
  277. {specify_cli-0.13.4 → specify_cli-0.14.1}/scripts/python/check_prerequisites.py +0 -0
  278. {specify_cli-0.13.4 → specify_cli-0.14.1}/scripts/python/common.py +0 -0
  279. {specify_cli-0.13.4 → specify_cli-0.14.1}/scripts/python/create_new_feature.py +0 -0
  280. {specify_cli-0.13.4 → specify_cli-0.14.1}/scripts/python/setup_plan.py +0 -0
  281. {specify_cli-0.13.4 → specify_cli-0.14.1}/scripts/python/setup_tasks.py +0 -0
  282. {specify_cli-0.13.4 → specify_cli-0.14.1}/spec-driven.md +0 -0
  283. {specify_cli-0.13.4 → specify_cli-0.14.1}/spec-kit.code-workspace +0 -0
  284. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/__init__.py +0 -0
  285. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/_agent_config.py +0 -0
  286. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/_assets.py +0 -0
  287. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/_console.py +0 -0
  288. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/_init_options.py +0 -0
  289. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/_invocation_style.py +0 -0
  290. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/_project.py +0 -0
  291. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/_toml_string.py +0 -0
  292. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/_utils.py +0 -0
  293. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/agents.py +0 -0
  294. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/authentication/__init__.py +0 -0
  295. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/authentication/base.py +0 -0
  296. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/authentication/config.py +0 -0
  297. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/authentication/github.py +0 -0
  298. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/__init__.py +0 -0
  299. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/commands_impl/__init__.py +0 -0
  300. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/lib/__init__.py +0 -0
  301. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/lib/project.py +0 -0
  302. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/lib/versioning.py +0 -0
  303. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/models/__init__.py +0 -0
  304. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/services/__init__.py +0 -0
  305. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/services/adapters.py +0 -0
  306. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/services/catalog_stack.py +0 -0
  307. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/services/conflict.py +0 -0
  308. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/services/primitives.py +0 -0
  309. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/services/references.py +0 -0
  310. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/services/resolver.py +0 -0
  311. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/bundler/services/validator.py +0 -0
  312. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/catalogs.py +0 -0
  313. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/commands/__init__.py +0 -0
  314. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/commands/bundle/__init__.py +0 -0
  315. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/commands/init.py +0 -0
  316. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integration_scaffold.py +0 -0
  317. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integration_state.py +0 -0
  318. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integration_status.py +0 -0
  319. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/__init__.py +0 -0
  320. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/_commands.py +0 -0
  321. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/_helpers.py +0 -0
  322. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/_install_commands.py +0 -0
  323. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/_migrate_commands.py +0 -0
  324. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/_query_commands.py +0 -0
  325. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/_scaffold_commands.py +0 -0
  326. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/agy/__init__.py +0 -0
  327. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/amp/__init__.py +0 -0
  328. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/auggie/__init__.py +0 -0
  329. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/base.py +0 -0
  330. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/bob/__init__.py +0 -0
  331. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/catalog.py +0 -0
  332. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/claude/__init__.py +0 -0
  333. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
  334. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/codex/__init__.py +0 -0
  335. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/copilot/__init__.py +0 -0
  336. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -0
  337. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/devin/__init__.py +0 -0
  338. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/droid/__init__.py +0 -0
  339. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/firebender/__init__.py +0 -0
  340. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/forge/__init__.py +0 -0
  341. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/gemini/__init__.py +0 -0
  342. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/generic/__init__.py +0 -0
  343. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/goose/__init__.py +0 -0
  344. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/grok/__init__.py +0 -0
  345. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/hermes/__init__.py +0 -0
  346. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/junie/__init__.py +0 -0
  347. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/kilocode/__init__.py +0 -0
  348. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/kimi/__init__.py +0 -0
  349. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/manifest.py +0 -0
  350. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/opencode/__init__.py +0 -0
  351. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/pi/__init__.py +0 -0
  352. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
  353. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/qwen/__init__.py +0 -0
  354. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/rovodev/__init__.py +0 -0
  355. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/shai/__init__.py +0 -0
  356. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
  357. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/trae/__init__.py +0 -0
  358. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/vibe/__init__.py +0 -0
  359. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/zcode/__init__.py +0 -0
  360. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/integrations/zed/__init__.py +0 -0
  361. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/presets/__init__.py +0 -0
  362. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/shared_infra.py +0 -0
  363. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/__init__.py +0 -0
  364. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/base.py +0 -0
  365. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/catalog.py +0 -0
  366. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/engine.py +0 -0
  367. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/overlays/__init__.py +0 -0
  368. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/overlays/_commands.py +0 -0
  369. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/overlays/composer.py +0 -0
  370. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/overlays/layer_sources.py +0 -0
  371. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/overlays/schema.py +0 -0
  372. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/__init__.py +0 -0
  373. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/command/__init__.py +0 -0
  374. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/do_while/__init__.py +0 -0
  375. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/fan_in/__init__.py +0 -0
  376. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/fan_out/__init__.py +0 -0
  377. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/if_then/__init__.py +0 -0
  378. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/prompt/__init__.py +0 -0
  379. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/shell/__init__.py +0 -0
  380. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/switch/__init__.py +0 -0
  381. {specify_cli-0.13.4 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/while_loop/__init__.py +0 -0
  382. {specify_cli-0.13.4 → specify_cli-0.14.1}/templates/checklist-template.md +0 -0
  383. {specify_cli-0.13.4 → specify_cli-0.14.1}/templates/commands/analyze.md +0 -0
  384. {specify_cli-0.13.4 → specify_cli-0.14.1}/templates/commands/checklist.md +0 -0
  385. {specify_cli-0.13.4 → specify_cli-0.14.1}/templates/commands/clarify.md +0 -0
  386. {specify_cli-0.13.4 → specify_cli-0.14.1}/templates/commands/converge.md +0 -0
  387. {specify_cli-0.13.4 → specify_cli-0.14.1}/templates/commands/implement.md +0 -0
  388. {specify_cli-0.13.4 → specify_cli-0.14.1}/templates/commands/plan.md +0 -0
  389. {specify_cli-0.13.4 → specify_cli-0.14.1}/templates/commands/tasks.md +0 -0
  390. {specify_cli-0.13.4 → specify_cli-0.14.1}/templates/commands/taskstoissues.md +0 -0
  391. {specify_cli-0.13.4 → specify_cli-0.14.1}/templates/constitution-template.md +0 -0
  392. {specify_cli-0.13.4 → specify_cli-0.14.1}/templates/plan-template.md +0 -0
  393. {specify_cli-0.13.4 → specify_cli-0.14.1}/templates/spec-template.md +0 -0
  394. {specify_cli-0.13.4 → specify_cli-0.14.1}/templates/tasks-template.md +0 -0
  395. {specify_cli-0.13.4 → specify_cli-0.14.1}/templates/vscode-settings.json +0 -0
  396. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/__init__.py +0 -0
  397. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/auth_helpers.py +0 -0
  398. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/bundler_helpers.py +0 -0
  399. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/conftest.py +0 -0
  400. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/contract/test_bundle_cli.py +0 -0
  401. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/extensions/__init__.py +0 -0
  402. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/extensions/assess/__init__.py +0 -0
  403. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/extensions/assess/test_assess_extension.py +0 -0
  404. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/extensions/bug/__init__.py +0 -0
  405. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/extensions/bug/test_bug_extension.py +0 -0
  406. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/extensions/git/__init__.py +0 -0
  407. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/extensions/test_agent_context_cli_free.py +0 -0
  408. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/extensions/test_extension_agent_context.py +0 -0
  409. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/extensions/test_update_agent_context_feature_json.py +0 -0
  410. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/extensions/test_update_agent_context_python_parity.py +0 -0
  411. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/hooks/TESTING.md +0 -0
  412. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/hooks/plan.md +0 -0
  413. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/hooks/spec.md +0 -0
  414. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/hooks/tasks.md +0 -0
  415. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integration/test_bundler_catalog_stack.py +0 -0
  416. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integration/test_bundler_init_install.py +0 -0
  417. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integration/test_bundler_local_install.py +0 -0
  418. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integration/test_bundler_offline.py +0 -0
  419. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integration/test_bundler_security_paths.py +0 -0
  420. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/__init__.py +0 -0
  421. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/conftest.py +0 -0
  422. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_base.py +0 -0
  423. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_cli.py +0 -0
  424. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_extra_args.py +0 -0
  425. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_home_isolation.py +0 -0
  426. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_agy.py +0 -0
  427. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_amp.py +0 -0
  428. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_auggie.py +0 -0
  429. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_base_markdown.py +0 -0
  430. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_base_skills.py +0 -0
  431. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_base_toml.py +0 -0
  432. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_base_yaml.py +0 -0
  433. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_bob.py +0 -0
  434. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_claude.py +0 -0
  435. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_cline.py +0 -0
  436. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_codebuddy.py +0 -0
  437. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_codex.py +0 -0
  438. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_copilot.py +0 -0
  439. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_cursor_agent.py +0 -0
  440. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_devin.py +0 -0
  441. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_droid.py +0 -0
  442. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_firebender.py +0 -0
  443. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_forge.py +0 -0
  444. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_gemini.py +0 -0
  445. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_generic.py +0 -0
  446. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_goose.py +0 -0
  447. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_grok.py +0 -0
  448. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_hermes.py +0 -0
  449. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_junie.py +0 -0
  450. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_kilocode.py +0 -0
  451. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_kimi.py +0 -0
  452. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_kiro_cli.py +0 -0
  453. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_opencode.py +0 -0
  454. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_pi.py +0 -0
  455. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_qodercli.py +0 -0
  456. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_qwen.py +0 -0
  457. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_rovodev.py +0 -0
  458. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_scaffold.py +0 -0
  459. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_shai.py +0 -0
  460. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_subcommand.py +0 -0
  461. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_tabnine.py +0 -0
  462. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_trae.py +0 -0
  463. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_vibe.py +0 -0
  464. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_zcode.py +0 -0
  465. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_integration_zed.py +0 -0
  466. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_manifest.py +0 -0
  467. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_registry.py +0 -0
  468. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/integrations/test_skill_frontmatter_quoting.py +0 -0
  469. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/parity_helpers.py +0 -0
  470. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_agent_config_consistency.py +0 -0
  471. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_branch_numbering.py +0 -0
  472. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_check_prerequisites_paths_only.py +0 -0
  473. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_check_prerequisites_python_parity.py +0 -0
  474. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_check_tool.py +0 -0
  475. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_cli_version.py +0 -0
  476. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_command_template_py_scripts.py +0 -0
  477. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_commands_package.py +0 -0
  478. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_console_imports.py +0 -0
  479. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_create_new_feature_python_parity.py +0 -0
  480. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_extension_registration.py +0 -0
  481. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_extension_update_hardening.py +0 -0
  482. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_github_workflows.py +0 -0
  483. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_init_dir.py +0 -0
  484. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_init_dir_cli.py +0 -0
  485. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_live_transient_windows.py +0 -0
  486. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_merge.py +0 -0
  487. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_ps1_encoding.py +0 -0
  488. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_registrar_path_traversal.py +0 -0
  489. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_security_workflow.py +0 -0
  490. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_setup_plan_feature_json.py +0 -0
  491. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_setup_plan_no_overwrite.py +0 -0
  492. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_setup_plan_python_parity.py +0 -0
  493. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_setup_tasks.py +0 -0
  494. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_setup_tasks_python_parity.py +0 -0
  495. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_shared_infra_integrity.py +0 -0
  496. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_skill_placeholder_py.py +0 -0
  497. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_timestamp_branches.py +0 -0
  498. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_utils.py +0 -0
  499. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_utils_assets_imports.py +0 -0
  500. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_version_imports.py +0 -0
  501. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/test_workflow_run_without_project.py +0 -0
  502. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/unit/test_bundle_download_url.py +0 -0
  503. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/unit/test_bundler_adapters.py +0 -0
  504. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/unit/test_bundler_conflict.py +0 -0
  505. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/unit/test_bundler_primitives.py +0 -0
  506. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/unit/test_bundler_references.py +0 -0
  507. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/unit/test_bundler_resolver.py +0 -0
  508. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/unit/test_bundler_validator.py +0 -0
  509. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/unit/test_bundler_versioning.py +0 -0
  510. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/workflows/conftest.py +0 -0
  511. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/workflows/test_overlay_commands.py +0 -0
  512. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/workflows/test_overlay_composer.py +0 -0
  513. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/workflows/test_overlay_layer_sources.py +0 -0
  514. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/workflows/test_overlay_schema.py +0 -0
  515. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/workflows/test_overlay_security.py +0 -0
  516. {specify_cli-0.13.4 → specify_cli-0.14.1}/tests/workflows/test_resolver_integration.py +0 -0
  517. {specify_cli-0.13.4 → specify_cli-0.14.1}/workflows/ARCHITECTURE.md +0 -0
  518. {specify_cli-0.13.4 → specify_cli-0.14.1}/workflows/PUBLISHING.md +0 -0
  519. {specify_cli-0.13.4 → specify_cli-0.14.1}/workflows/README.md +0 -0
  520. {specify_cli-0.13.4 → specify_cli-0.14.1}/workflows/catalog.community.json +0 -0
  521. {specify_cli-0.13.4 → specify_cli-0.14.1}/workflows/catalog.json +0 -0
  522. {specify_cli-0.13.4 → specify_cli-0.14.1}/workflows/speckit/workflow.yml +0 -0
  523. {specify_cli-0.13.4 → specify_cli-0.14.1}/workflows/step-catalog.community.json +0 -0
  524. {specify_cli-0.13.4 → specify_cli-0.14.1}/workflows/step-catalog.json +0 -0
@@ -65,7 +65,8 @@
65
65
  },
66
66
  "chat.tools.terminal.autoApprove": {
67
67
  ".specify/scripts/bash/": true,
68
- ".specify/scripts/powershell/": true
68
+ ".specify/scripts/powershell/": true,
69
+ ".specify/scripts/python/": true
69
70
  }
70
71
  }
71
72
  }
@@ -24,7 +24,7 @@ jobs:
24
24
  python-version: "3.14"
25
25
 
26
26
  - name: Run ruff check
27
- run: uvx ruff check src tests
27
+ run: uvx ruff@0.15.0 check src tests
28
28
 
29
29
  pytest:
30
30
  runs-on: ${{ matrix.os }}
@@ -187,7 +187,7 @@ context_markers:
187
187
  end: "<!-- SPECKIT END -->"
188
188
  ```
189
189
 
190
- - The Specify CLI does **not** write this config. When `context_file` is empty, the extension's bundled scripts self-seed it by looking up the active integration's key in the extension's own `agent-context-defaults.json` map (`extensions/agent-context/scripts/bash/update-agent-context.sh` and `.ps1`). The CLI registry is never consulted — all agent→context-file knowledge lives inside the extension.
190
+ - The Specify CLI does **not** write this config. When `context_file` is empty, the extension's bundled scripts self-seed it by looking up the active integration's key in the extension's own `agent-context-defaults.json` map (`extensions/agent-context/scripts/bash/update-agent-context.sh`, `.ps1`, and `extensions/agent-context/scripts/python/update_agent_context.py`). The CLI registry is never consulted — all agent→context-file knowledge lives inside the extension.
191
191
  - `context_markers.{start,end}` are read solely by the extension's scripts; they default to the Spec Kit markers shown above and can be customized by editing `agent-context-config.yml` directly.
192
192
 
193
193
  Existing projects created by older Spec Kit versions keep working: any previously written managed section or extension config is left intact and is only ever updated by the extension when run.
@@ -268,6 +268,25 @@ echo "✅ Done"
268
268
 
269
269
  ## Command File Formats
270
270
 
271
+ ### Script References (`scripts:` frontmatter)
272
+
273
+ Core command templates (`templates/commands/*.md`) that invoke a helper script declare it in a `scripts:` frontmatter block with one line per supported script type. The `{SCRIPT}` placeholder in the command body is replaced at install time with the entry matching the project's selected script type (`--script sh|ps|py`):
274
+
275
+ ```yaml
276
+ scripts:
277
+ sh: scripts/bash/setup-plan.sh --json
278
+ ps: scripts/powershell/setup-plan.ps1 -Json
279
+ py: scripts/python/setup_plan.py --json
280
+ ```
281
+
282
+ | Key | Script type | Location |
283
+ | ---- | ---------------------- | -------------------------- |
284
+ | `sh` | POSIX shell (bash/zsh) | `scripts/bash/*.sh` |
285
+ | `ps` | PowerShell | `scripts/powershell/*.ps1` |
286
+ | `py` | Python | `scripts/python/*.py` |
287
+
288
+ All three entries must be present and behaviorally equivalent — agents parse the same stdout contract (`FEATURE_DIR:…`, `AVAILABLE_DOCS:…`, `--json` shapes) regardless of which one runs. (The bundled `agent-context` and `git` extension command templates also invoke helpers but do not yet use `scripts:` frontmatter — see [Script Types and Migration](#script-types-and-migration).)
289
+
271
290
  ### Markdown Format
272
291
 
273
292
  **Standard format:**
@@ -328,9 +347,29 @@ Different agents use different argument placeholders. The placeholder used in co
328
347
  - **TOML-based**: `{{args}}` (e.g., Gemini)
329
348
  - **YAML-based**: `{{args}}` (e.g., Goose)
330
349
  - **Custom**: some agents override the default (e.g., Forge uses `{{parameters}}`)
331
- - **Script placeholders**: `{SCRIPT}` (replaced with actual script path)
350
+ - **Script placeholders**: `{SCRIPT}` (replaced with the resolved command from the template's `scripts:` frontmatter, per the project's `--script sh|ps|py` selection)
332
351
  - **Agent placeholders**: `__AGENT__` (replaced with agent name)
333
352
 
353
+ ## Script Types and Migration
354
+
355
+ Spec Kit ships every core workflow script in three interchangeable variants — POSIX shell (`sh`), PowerShell (`ps`), and Python (`py`) — selected per project with `specify init --script sh|ps|py`. Each core command template that invokes a helper script carries all three in its `scripts:` frontmatter (templates that don't call a script, e.g. `constitution`/`specify`, have no `scripts:` block); see [Script References](#script-references-scripts-frontmatter).
356
+
357
+ ### Why Python is recommended
358
+
359
+ - **No extra runtime.** The `specify` CLI is already Python, so the interpreter is guaranteed present — `py` adds no new dependency.
360
+ - **Path toward a single source of truth.** The shell variants require paired `.sh` + `.ps1` maintenance and diverge on JSON handling (`jq` vs manual parsing). The Python variant avoids `jq` and is intended to eventually replace that dual-maintenance — but that consolidation has not happened yet: all three variants are still maintained in parallel (see the parity rule below).
361
+ - **Parity-tested.** The Python ports are covered by tests — output-parity tests against the shell scripts where the contract is stdout-based, and direct unit tests elsewhere — so the stdout contract agents rely on stays stable.
362
+
363
+ ### Defaults and availability
364
+
365
+ - `py` is available today for the core command templates (via their `scripts:` frontmatter). The bundled extensions (`agent-context`, `git`) ship Python script variants on disk, but their command templates still hard-code the Bash/PowerShell invocations, so `--script py` does not yet route those extension commands to Python — wiring `py` into the extension command templates is tracked separately.
366
+ - Selection is per project: interactive `specify init` prompts for the script type, while non-interactive runs default to a shell variant by OS (`sh` on Linux/macOS, `ps` on Windows). `py` is chosen at the prompt or via `--script py`.
367
+ - `sh` and `ps` remain fully supported. Nothing is removed, and `py` is not yet the default.
368
+
369
+ ### Parity rule for contributors
370
+
371
+ All three script types are first-class: any change to a workflow script must update `sh`, `ps`, and `py` together and keep their tests (parity and unit) green. Making `py` the default and eventually retiring `sh`/`ps` is future work gated on adoption, tracked under the script-unification epic ([#3277](https://github.com/github/spec-kit/issues/3277)) — not something to act on from this doc.
372
+
334
373
  ## Special Processing Requirements
335
374
 
336
375
  Some agents require custom processing beyond the standard template transformations:
@@ -2,6 +2,56 @@
2
2
 
3
3
  <!-- insert new changelog below this comment -->
4
4
 
5
+ ## [0.14.1] - 2026-07-23
6
+
7
+ ### Changed
8
+
9
+ - Update Agent Parity Governance preset to v0.4.0 (#3697)
10
+ - fix(bundler): InstallResult.changed counts uninstalled as a change (#3692)
11
+ - [preset] Update Cross-Platform Governance preset to v0.2.1 (#3695)
12
+ - Update A11Y Governance preset to v0.4.1 (#3693)
13
+ - fix(workflows): escape step-graph brackets in `workflow info` so the type shows (#3690)
14
+ - fix(workflows): filter parser rejects trailing tokens (fullmatch, not match) (#3689)
15
+ - Update iSAQB Architecture Governance preset to v0.2.1 (#3687)
16
+ - fix(extensions): parse SKILL.md on the --- delimiter line during removal (#3634)
17
+ - fix(cli): guard lazy .hostname ValueError in extension/preset add --from (#3651)
18
+ - Update Architecture Governance preset to v0.5.1 (#3686)
19
+ - fix(bundler): reject a top-level non-mapping bundle-catalogs.yml in _merge_config (#3659)
20
+ - Update Security Governance preset to v0.6.1 (#3685)
21
+ - fix(integrations): declare OmpIntegration multi_install_safe (#3650)
22
+ - feat(git-extension): add configurable Conventional Commit support (#3390) (#3413)
23
+ - fix(extensions): hyphenate command names in the Forge post-install listing (#3669)
24
+ - fix(bundler): reject falsy non-mapping requires/provides in CatalogEntry.from_dict (#3667)
25
+ - fix(bundler): reject falsy non-list bundles/contributed_components in records (#3666)
26
+ - Update Intake Authoring Governance preset to v0.1.1 (#3678)
27
+ - docs(extensions): clarify agent-context README and add config examples (#3389)
28
+ - chore: release 0.14.0, begin 0.14.1.dev0 development (#3677)
29
+
30
+ ## [0.14.0] - 2026-07-23
31
+
32
+ ### Changed
33
+
34
+ - docs: add spec-kit-copilot to community friends (#3675)
35
+ - fix(integrations): recompute invoke_separator from retained parsed_options (#3664)
36
+ - fix(workflows): preserve intra-overlay order for multiple insert_after edits (#3662)
37
+ - fix(bundler): reject falsy non-mapping requires/provides in manifest from_dict (#3661)
38
+ - fix(bundler): dump_yaml writes literal UTF-8 (allow_unicode=True) (#3660)
39
+ - fix(integrations): declare kiro-cli multi-install safe (#3477)
40
+ - fix(git-extension): trim trailing whitespace before stripping commit-message quotes (#3673)
41
+ - fix(bundler): order bundle members by canonical POSIX arcname (reproducible builds) (#3658)
42
+ - fix(integrations): Cline overrides post_process_command_content (correct hook name) (#3657)
43
+ - docs(workflows): gate step docstring lists the 'retry' on_reject behaviour (#3656)
44
+ - fix: harden bounded reads and redirect validation (#3671)
45
+ - fix(packaging): bundle scripts/python into the wheel core_pack (#3665) (#3670)
46
+ - fix: bundle scripts/python in wheel so --script py works (#3665) (#3668)
47
+ - docs(workflows): init step docstring lists the 'py' script type (#3655)
48
+ - fix(integrations): declare LingmaIntegration multi_install_safe (#3654)
49
+ - fix: guard constitution command against feature execution (#3646)
50
+ - Fix duplicate step numbering in specify command (#3647)
51
+ - docs(scripts): document the 'py' script type and sh/ps migration plan (#3284) (#3653)
52
+ - harden: bound HTTP reads and enforce strict redirects (#3140)
53
+ - chore: release 0.13.4, begin 0.13.5.dev0 development (#3649)
54
+
5
55
  ## [0.13.4] - 2026-07-22
6
56
 
7
57
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specify-cli
3
- Version: 0.13.4
3
+ Version: 0.14.1
4
4
  Summary: Specify CLI, part of GitHub Spec Kit. A tool to bootstrap your projects for Spec-Driven Development (SDD).
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.11
@@ -1,7 +1,7 @@
1
1
  # Community Friends
2
2
 
3
3
  > [!NOTE]
4
- > Community projects listed here are independently created and maintained by their respective authors. They are **not reviewed, nor endorsed, nor supported by GitHub**. Review their source code before installation and use at your own discretion.
4
+ > Community projects listed here are independently created and maintained by their respective authors. Unless explicitly marked as a **first-party GitHub project**, they are **not reviewed, nor endorsed, nor supported by GitHub**. Review their source code before installation and use at your own discretion.
5
5
 
6
6
  Community projects that extend, visualize, or build on Spec Kit:
7
7
 
@@ -16,3 +16,5 @@ Community projects that extend, visualize, or build on Spec Kit:
16
16
  - **[cc-spec-kit](https://github.com/speckit-community/cc-spec-kit)** — Community-maintained plugin for Claude Code and GitHub Copilot CLI that installs Spec Kit skills via the plugin marketplace.
17
17
 
18
18
  - **[spectatui](https://github.com/tinesoft/spectatui)** — A terminal UI (TUI) dashboard for Spec Kit that lets you track features, manage specifications, integrations, presets, workflows, and extensions, and monitor AI agent workflows. Attach to existing AI sessions or launch new ones from your terminal. Keyboard and mouse support. Light/dark theme support. Customizable and performance-oriented. Requires the `specify` CLI in your PATH.
19
+
20
+ - **[spec-kit-copilot](https://github.com/github/spec-kit-copilot)** — _First-party GitHub project._ A GitHub Copilot **skills plugin** that exposes the Spec Kit `specify` CLI to the Copilot agent in both the Copilot CLI and the GitHub Copilot app. It provides a focused skill per `specify` command group — setup, init, check, extensions, presets, bundles, workflows, workflow steps, and self-upgrade — so you can navigate and drive the entire Spec Kit ecosystem through natural language, letting Copilot decide when and how to run the right `specify` commands on your behalf.
@@ -7,28 +7,28 @@ The following community-contributed presets customize how Spec Kit behaves — o
7
7
 
8
8
  | Preset | Purpose | Provides | Requires | URL |
9
9
  |--------|---------|----------|----------|-----|
10
- | A11Y Governance | Adds accessibility (WCAG 2.2 AA), bilingual DE/EN delivery, CEFR-B2 readability, inclusive-content governance, didactic inline-code-comment review, and audit-ready Spec Kit run evidence | 10 templates, 3 commands | — | [spec-kit-preset-a11y-governance](https://github.com/hindermath/spec-kit-preset-a11y-governance) |
11
- | Agent Parity Governance | Adds shared-guidance parity, audit-ready Spec-Kit run evidence, and agent-neutral model-routing guidance across a project's declared AI-agent instruction surfaces so agent guidance does not drift. | 6 templates, 3 commands | — | [spec-kit-preset-agent-parity-governance](https://github.com/hindermath/spec-kit-preset-agent-parity-governance) |
10
+ | A11Y Governance | Adds WCAG 2.2 AA governance, accessible text/JSON status parity, bilingual DE/EN delivery, CEFR-B2 readability, inclusive content, didactic-comment review, and audit-ready evidence | 10 templates, 3 commands | — | [spec-kit-preset-a11y-governance](https://github.com/hindermath/spec-kit-preset-a11y-governance) |
11
+ | Agent Parity Governance | Adds shared-guidance and generated-command parity, fleet-completion evidence, secret-free runner/status metadata, audit-ready evidence, and agent-neutral model routing. | 6 templates, 3 commands | — | [spec-kit-preset-agent-parity-governance](https://github.com/hindermath/spec-kit-preset-agent-parity-governance) |
12
12
  | AIDE In-Place Migration | Adapts the AIDE extension workflow for in-place technology migrations (X → Y pattern) — adds migration objectives, verification gates, knowledge documents, and behavioral equivalence criteria | 2 templates, 8 commands | AIDE extension | [spec-kit-presets](https://github.com/mnriem/spec-kit-presets) |
13
- | Architecture Governance | Adds secure software architecture, STRIDE+CAPEC threat modeling, arc42 security cross-cutting concepts, S-ADRs, Zero Trust applicability, OWASP SAMM governance, BSI C3A cloud autonomy, BSI C5 cloud compliance assurance, and audit-ready Spec Kit run evidence | 13 templates, 3 commands | — | [spec-kit-preset-architecture-governance](https://github.com/hindermath/spec-kit-preset-architecture-governance) |
13
+ | Architecture Governance | Adds secure software architecture, resumable remote-transaction boundaries, STRIDE+CAPEC threat modeling, arc42 security cross-cutting concepts, S-ADRs, Zero Trust applicability, OWASP SAMM governance, BSI C3A cloud autonomy, BSI C5 cloud compliance assurance, and audit-ready Spec Kit run evidence | 13 templates, 3 commands | — | [spec-kit-preset-architecture-governance](https://github.com/hindermath/spec-kit-preset-architecture-governance) |
14
14
  | Autonomous Run Governance | Adds permission-bounded, evidence-first governance for complete autonomous Spec Kit delivery, including validated status, stop, explicit resume, exact-head proof, post-merge closeout, retrospective learning, and an optional policy-driven intake-review gate before feature creation. | 13 templates, 5 commands, 4 scripts | — | [spec-kit-preset-autonomous-run-governance](https://github.com/hindermath/spec-kit-preset-autonomous-run-governance) |
15
15
  | Canon Core | Adapts original Spec Kit workflow to work together with Canon extension | 2 templates, 8 commands | — | [spec-kit-canon](https://github.com/maximiliamus/spec-kit-canon) |
16
16
  | Claude AskUserQuestion | Upgrades `/speckit.clarify` and `/speckit.checklist` on Claude Code from Markdown-table prompts to the native AskUserQuestion picker, with a recommended option and reasoning on every question | 2 commands | — | [spec-kit-preset-claude-ask-questions](https://github.com/0xrafasec/spec-kit-preset-claude-ask-questions) |
17
17
  | Command Density | Compacts the nine core Spec Kit command prompts while preserving scripts, handoffs, placeholders, hook output blocks, and rule structure | 9 commands | — | [spec-kit-preset-command-density](https://github.com/Xopoko/spec-kit-preset-command-density) |
18
- | Cross-Platform Governance | Adds Bash + PowerShell parity, Unix man-pages, bilingual comment-based help, Verb-Noun Cmdlet discipline, and audit-ready Spec Kit run evidence for scripting projects managed with Spec Kit | 8 templates, 3 commands | — | [spec-kit-preset-cross-platform-governance](https://github.com/hindermath/spec-kit-preset-cross-platform-governance) |
18
+ | Cross-Platform Governance | Adds Bash/PowerShell and read-only check parity, root-path and native-override review, Unix man pages, bilingual help, Verb-Noun discipline, and audit-ready evidence. | 8 templates, 3 commands | — | [spec-kit-preset-cross-platform-governance](https://github.com/hindermath/spec-kit-preset-cross-platform-governance) |
19
19
  | Explicit Task Dependencies | Adds explicit `(depends on T###)` dependency declarations and an Execution Wave DAG to tasks.md for parallel scheduling | 1 template, 1 command | — | [spec-kit-preset-explicit-task-dependencies](https://github.com/Quratulain-bilal/spec-kit-preset-explicit-task-dependencies) |
20
20
  | Fiction Book Writing | It adapts the Spec-Driven Development workflow for storytelling to create books or audiobooks (with annotations) in 12 languages: features become story elements, specs become story briefs, plans become story structures, and tasks become scene-by-scene writing tasks. Supports single and multi-POV, all major plot structure frameworks, and two style modes: an author voice sample or humanized AI prose principles. Supports interactive elements like brainstorming, interview, roleplay, and extras like statistics, cover builder, illustration builder, and bio command. Export with templates for KDP, D2D, etc. | 26 templates, 34 commands, 2 scripts | — | [speckit-preset-fiction-book-writing](https://github.com/adaumann/speckit-preset-fiction-book-writing) |
21
21
  | Game Narrative Writing | Preset for game narrative design and interactive storytelling. It adapts the Spec-Driven Development workflow for game narratives: features become story mechanics, specs become narrative briefs, plans become story maps, and tasks become dialogue and scene-writing tasks. Supports branching narratives, player agency systems, state machines, and interactive dialogue trees. | 37 templates, 34 commands, 5 scripts | — | [speckit-preset-game-narrative-writing](https://github.com/adaumann/speckit-preset-game-narrative-writing) |
22
- | Intake Authoring Governance | Creates traceable Spec Kit intake files and receipts from ordered text sources while preserving clarification, update, and delivery-authority boundaries. | 7 templates, 2 commands, 2 scripts | — | [spec-kit-preset-intake-authoring-governance](https://github.com/hindermath/spec-kit-preset-intake-authoring-governance) |
22
+ | Intake Authoring Governance | Creates traceable Spec Kit intakes from ordered text sources and now truthfully adopts legacy intakes without inventing predecessor receipts. | 7 templates, 2 commands, 2 scripts | — | [spec-kit-preset-intake-authoring-governance](https://github.com/hindermath/spec-kit-preset-intake-authoring-governance) |
23
23
  | Intake Review Governance | Adds hash-bound review, repair, and status gates for single, series, and campaign intake files before interactive, autonomous, or parallel Spec Kit execution. | 8 templates, 3 commands, 2 scripts | — | [spec-kit-preset-intake-review-governance](https://github.com/hindermath/spec-kit-preset-intake-review-governance) |
24
- | iSAQB Architecture Governance | Adds general iSAQB/CPSA-F and arc42 software-architecture governance, including audit-ready Spec Kit run evidence for architecture goals, views, quality scenarios, ADRs, risks, and technical debt. | 13 templates, 3 commands | — | [spec-kit-preset-isaqb-architecture-governance](https://github.com/hindermath/spec-kit-preset-isaqb-architecture-governance) |
24
+ | iSAQB Architecture Governance | Adds iSAQB/CPSA-F and arc42 architecture governance with audit-ready evidence for goals, views, resumability, partial-failure scenarios, ADRs, risks, and technical debt. | 13 templates, 3 commands | — | [spec-kit-preset-isaqb-architecture-governance](https://github.com/hindermath/spec-kit-preset-isaqb-architecture-governance) |
25
25
  | Jira Issue Tracking | Overrides `speckit.taskstoissues` to create Jira epics, stories, and tasks instead of GitHub Issues via Atlassian MCP tools | 1 command | — | [spec-kit-preset-jira](https://github.com/luno/spec-kit-preset-jira) |
26
26
  | Model Driven Engineering | Focuses on streamlined commands, app repository support, cross-spec support, and capability-aware project memory for model-driven engineering workflows | 6 templates, 11 commands | MDE extension | [spec-kit-preset-mde](https://github.com/AI-MDE/spec-kit-preset-mde) |
27
27
  | Multi-Repo Branching | Coordinates feature branch creation across multiple git repositories (independent repos and submodules) during plan and tasks phases | 2 commands | — | [spec-kit-preset-multi-repo-branching](https://github.com/sakitA/spec-kit-preset-multi-repo-branching) |
28
28
  | Parallel Autonomous Run Governance | Coordinates isolated autonomous Spec Kit campaigns with bounded concurrency, mixed agents, resumable consolidation, governed post-merge closeout, schema 1.2, and an optional current intake-review gate before worker scheduling. | 9 templates, 5 commands, 2 scripts | autonomous-run-governance >=0.3.2; optional: intake-review-governance >=0.1.0 | [spec-kit-preset-parallel-autonomous-run-governance](https://github.com/hindermath/spec-kit-preset-parallel-autonomous-run-governance) |
29
29
  | Pirate Speak (Full) | Transforms all Spec Kit output into pirate speak — specs become "Voyage Manifests", plans become "Battle Plans", tasks become "Crew Assignments" | 6 templates, 9 commands | — | [spec-kit-presets](https://github.com/mnriem/spec-kit-presets) |
30
30
  | Screenwriting | Spec-Driven Development for screenwriting/scriptwriting/tutorials: feature films, television (pilot, episode, limited series), and stage plays. Adapts the Spec Kit workflow to screenplay craft — slug lines, action lines, act breaks, beat sheets, and industry-standard pitch documents. Supports three-act, Save the Cat, TV pilot, network episode, cable/streaming episode, and stage-play structural frameworks. Export to Fountain, FTX, PDF | 26 templates, 32 commands, 1 script | — | [speckit-preset-screenwriting](https://github.com/adaumann/speckit-preset-screenwriting) |
31
- | Security Governance | Adds memory-safe-language preference, language-specific secure coding profiles, audit-ready Spec-Kit run evidence, ASVS verification, SBOM/AI-SBOM supply-chain transparency, CRA awareness, and regulatory applicability screening for NIS2, CRA, EU AI Act, and DORA | 14 templates, 3 commands | — | [spec-kit-preset-security-governance](https://github.com/hindermath/spec-kit-preset-security-governance) |
31
+ | Security Governance | Adds memory-safe-language and secure-coding governance, exact-head and security-gate evidence, provider-failure classification, ASVS, supply-chain transparency, and EU regulatory screening. | 14 templates, 3 commands | — | [spec-kit-preset-security-governance](https://github.com/hindermath/spec-kit-preset-security-governance) |
32
32
  | SicarioSpec Core | Baseline secure-by-default Spec Kit governance profile. | 5 templates | — | [sicario-spec](https://github.com/dfirs1car1o/sicario-spec) |
33
33
  | Spec2Cloud | Spec-driven workflow tuned for shipping to Azure: spec → plan → tasks → implement → deploy | 5 templates, 8 commands | — | [spec2cloud](https://github.com/Azure-Samples/Spec2Cloud) |
34
34
  | Table of Contents Navigation | Adds a navigable Table of Contents to generated spec.md, plan.md, and tasks.md documents | 3 templates, 3 commands | — | [spec-kit-preset-toc-navigation](https://github.com/Quratulain-bilal/spec-kit-preset-toc-navigation) |
@@ -2,7 +2,7 @@
2
2
 
3
3
  This guide shows how to iterate on the `specify` CLI locally without publishing a release or committing to `main` first.
4
4
 
5
- > Scripts now have both Bash (`.sh`) and PowerShell (`.ps1`) variants. The CLI auto-selects based on OS unless you pass `--script sh|ps`.
5
+ > Scripts are available as Bash (`.sh`), PowerShell (`.ps1`), and Python (`.py`) variants. Interactive `specify init` prompts you to choose one; non-interactive runs default to a shell variant for your OS. Pass `--script sh|ps|py` to select explicitly.
6
6
 
7
7
  ## 1. Clone and Switch Branches
8
8
 
@@ -189,7 +189,7 @@ rm -rf .venv dist build *.egg-info
189
189
  | `ModuleNotFoundError: typer` | Run `uv pip install -e .` |
190
190
  | Scripts not executable (Linux) | Re-run init or `chmod +x scripts/*.sh` |
191
191
  | Git commands unavailable | Install the git extension with `specify extension add git` |
192
- | Wrong script type downloaded | Pass `--script sh` or `--script ps` explicitly |
192
+ | Wrong script type downloaded | Pass `--script sh`, `--script ps`, or `--script py` explicitly |
193
193
  | TLS errors on corporate network | Configure your environment's certificate store or proxy. The `--skip-tls` flag is deprecated and has no effect. |
194
194
 
195
195
  ## 14. Next Steps
@@ -3,7 +3,7 @@
3
3
  This guide will help you get started with Spec-Driven Development using Spec Kit. Throughout, we illustrate each step with a running example: **Taskify**, a small team productivity platform.
4
4
 
5
5
  > [!NOTE]
6
- > Automation scripts are provided as both Bash (`.sh`) and PowerShell (`.ps1`) variants. The `specify` CLI auto-selects based on your OS unless you pass `--script sh|ps`.
6
+ > Automation scripts are provided as Bash (`.sh`), PowerShell (`.ps1`), and Python (`.py`) variants. Interactive `specify init` prompts you to choose one; non-interactive runs default to a shell variant for your OS. Pass `--script sh|ps|py` to select explicitly.
7
7
 
8
8
  > [!NOTE]
9
9
  > Commands are shown here in `/speckit.*` form, but the exact invocation depends on your agent. Some skills-based agents use `$speckit-*` (e.g. Codex, ZCode) or `/skill:speckit-*` (e.g. Kimi). Use whichever form your agent exposes — the steps are otherwise identical.
@@ -86,7 +86,7 @@ specify integration install <key>
86
86
 
87
87
  | Option | Description |
88
88
  | ------------------------ | ------------------------------------------------------------------------ |
89
- | `--script sh\|ps` | Script type: `sh` (bash/zsh) or `ps` (PowerShell) |
89
+ | `--script sh\|ps\|py` | Script type: `sh` (bash/zsh), `ps` (PowerShell), or `py` (Python) |
90
90
  | `--force` | Opt in to installing alongside integrations that are not declared multi-install safe |
91
91
  | `--integration-options` | Integration-specific options (e.g. `--integration-options="--commands-dir .myagent/cmds"`) |
92
92
 
@@ -122,7 +122,7 @@ specify integration switch <key>
122
122
 
123
123
  | Option | Description |
124
124
  | ------------------------ | ------------------------------------------------------------------------ |
125
- | `--script sh\|ps` | Script type: `sh` (bash/zsh) or `ps` (PowerShell) |
125
+ | `--script sh\|ps\|py` | Script type: `sh` (bash/zsh), `ps` (PowerShell), or `py` (Python) |
126
126
  | `--force` | Force removal of modified files during uninstall; when the target is already installed, overwrite managed shared templates while changing the default |
127
127
  | `--refresh-shared-infra` | Also overwrite shared infrastructure files even if you customized them (otherwise customizations are preserved) |
128
128
  | `--integration-options` | Options for the target integration when it is not already installed |
@@ -150,7 +150,7 @@ specify integration upgrade [<key>]
150
150
  | Option | Description |
151
151
  | ------------------------ | ------------------------------------------------------------------------ |
152
152
  | `--force` | Overwrite files even if they have been modified |
153
- | `--script sh\|ps` | Script type: `sh` (bash/zsh) or `ps` (PowerShell) |
153
+ | `--script sh\|ps\|py` | Script type: `sh` (bash/zsh), `ps` (PowerShell), or `py` (Python) |
154
154
  | `--integration-options` | Options for the integration |
155
155
 
156
156
  Reinstalls an installed integration with updated templates and commands (e.g., after upgrading Spec Kit). Defaults to the default integration; if a key is provided, it must be one of the installed integrations. Detects locally modified files and blocks the upgrade unless `--force` is used. Stale files from the previous install that are no longer needed are removed automatically. Shared templates stay aligned with the default integration even when upgrading a non-default integration.
@@ -257,31 +257,31 @@ Spec Kit tracks one default integration in `.specify/integration.json` with `def
257
257
 
258
258
  An integration is multi-install safe when it uses a static, unique agent root and command directory, stable command invocation settings, and a separate install manifest whose managed files do not overlap another safe integration. Registry tests enforce those path and manifest invariants. Shared Spec Kit templates remain aligned to the single default integration.
259
259
 
260
- The Isolation column below lists paths Spec Kit manages for that integration (skills/commands roots and any integration-owned rule files). It is not a full inventory of every file an agent may read.
261
-
262
- **Agent-context defaults are separate.** The optional agent-context extension maps each integration to a default context file in `extensions/agent-context/agent-context-defaults.json`. Those defaults are independent of multi-install safety: several agents may share a root file such as `AGENTS.md` when the extension is enabled. Multi-install safety does not require a unique context file per safe integration.
260
+ The Command directory column below lists the directory each integration installs its commands or skills into. Context-file targeting is a separate concern from integration multi-install safety: `multi_install_safe` is an integration declaration about command/skill paths, whereas the optional agent-context extension manages a per-agent context file (for example `AGENTS.md` or `CLAUDE.md`) and can even synchronize several anchors at once via its `context_files` setting. Multiple agents mapping to the same context file is expected there and does not affect whether an integration is multi-install safe; see the agent-context extension for details.
263
261
 
264
262
  The currently declared multi-install safe integrations are:
265
263
 
266
- | Key | Isolation |
267
- | --- | --------- |
268
- | `auggie` | `.augment/commands`, `.augment/rules/specify-rules.md` |
269
- | `claude` | `.claude/skills`, `CLAUDE.md` |
270
- | `cline` | `.clinerules/workflows`, `.clinerules/specify-rules.md` |
271
- | `codebuddy` | `.codebuddy/commands`, `CODEBUDDY.md` |
272
- | `codex` | `.agents/skills`, `AGENTS.md` |
273
- | `cursor-agent` | `.cursor/skills`, `.cursor/rules/specify-rules.mdc` |
274
- | `firebender` | `.firebender/commands`, `.firebender/rules/specify-rules.mdc` |
275
- | `gemini` | `.gemini/commands`, `GEMINI.md` |
264
+ | Key | Command directory |
265
+ | --- | ----------------- |
266
+ | `auggie` | `.augment/commands` |
267
+ | `claude` | `.claude/skills` |
268
+ | `cline` | `.clinerules/workflows` |
269
+ | `codebuddy` | `.codebuddy/commands` |
270
+ | `codex` | `.agents/skills` |
271
+ | `cursor-agent` | `.cursor/skills` |
272
+ | `firebender` | `.firebender/commands` |
273
+ | `gemini` | `.gemini/commands` |
276
274
  | `grok` | `.grok/skills` |
277
- | `junie` | `.junie/commands`, `.junie/AGENTS.md` |
278
- | `kilocode` | `.kilocode/workflows`, `.kilocode/rules/specify-rules.md` |
279
- | `qodercli` | `.qoder/commands`, `QODER.md` |
280
- | `qwen` | `.qwen/commands`, `QWEN.md` |
281
- | `shai` | `.shai/commands`, `SHAI.md` |
282
- | `tabnine` | `.tabnine/agent/commands`, `TABNINE.md` |
283
- | `trae` | `.trae/skills`, `.trae/rules/project_rules.md` |
284
- | `zcode` | `.zcode/skills`, `ZCODE.md` |
275
+ | `junie` | `.junie/commands` |
276
+ | `kilocode` | `.kilocode/workflows` |
277
+ | `kiro-cli` | `.kiro/prompts` |
278
+ | `omp` | `.omp/commands` |
279
+ | `qodercli` | `.qoder/commands` |
280
+ | `qwen` | `.qwen/commands` |
281
+ | `shai` | `.shai/commands` |
282
+ | `tabnine` | `.tabnine/agent/commands` |
283
+ | `trae` | `.trae/skills` |
284
+ | `zcode` | `.zcode/skills` |
285
285
 
286
286
  Integrations that share a command directory with another integration, require dynamic install paths such as `--commands-dir`, or merge shared tool settings are not declared safe by default. They can still be installed alongside another integration with `--force`.
287
287
 
@@ -0,0 +1,63 @@
1
+ # Coding Agent Context Extension
2
+
3
+ This bundled extension manages the **coding agent context/instruction file** (e.g. `CLAUDE.md`, `.github/copilot-instructions.md`, `AGENTS.md`, `GEMINI.md`, …) for the active integration.
4
+
5
+ It owns the lifecycle of the managed section delimited by the configurable start/end markers (defaults: `<!-- SPECKIT START -->` / `<!-- SPECKIT END -->`). For `.mdc` files, it also ensures the YAML frontmatter (the metadata block at the top of the file) contains `alwaysApply: true`. Otherwise, everything outside the managed section is untouched.
6
+
7
+ > NOTE: Spec Kit itself never touches your agent context file. This extension is the only thing that does, and it's opt-in: install it if you want the block kept in sync, skip it if you'd rather manage that file yourself.
8
+
9
+ ## Why an extension?
10
+
11
+ Not every Spec Kit user wants Spec Kit to write into the coding agent's context file. Keeping this behavior in a dedicated, **opt-in** extension lets users:
12
+
13
+ - **Choose whether to install it at all** - `specify init` does **not** install it. Add it explicitly when you want Spec Kit to manage the agent context file; when it is absent, the file is never modified, and when it is disabled, its automatic hooks do not run.
14
+ - **Customize the markers** by editing `.specify/extensions/agent-context/agent-context-config.yml` ([agent-context-config.yml](./agent-context-config.yml) in this repo) - the bundled scripts honor the `context_markers` value.
15
+ - **Synchronize multiple agent anchors** by setting `context_files` when a project intentionally uses more than one coding agent context file, such as `AGENTS.md` and `CLAUDE.md`.
16
+ - **Refresh on demand** by running the `speckit.agent-context.update` command in your agent, or automatically through the hooks declared in [extension.yml](./extension.yml) (`after_specify`, `after_plan`).
17
+
18
+ ## Installation
19
+
20
+ To install the extension, from the root of an initialized Spec Kit project, run:
21
+
22
+ ```bash
23
+ specify extension add agent-context
24
+ ```
25
+
26
+ ## Disabling
27
+
28
+ ```bash
29
+ specify extension disable agent-context
30
+
31
+ # Re-enable it
32
+ specify extension enable agent-context
33
+ ```
34
+
35
+ While this extension is disabled (or not installed), nothing in Spec Kit creates, updates, or removes the managed block - the `__CONTEXT_FILE__` placeholder in any template is left as-is, and the extension's own config is never read.
36
+
37
+ ## Commands
38
+
39
+ | Command | Description |
40
+ | ------------------------------ | --------------------------------------------------------------------------------- |
41
+ | `speckit.agent-context.update` | Refresh the managed section in the agent context file with the current plan path. |
42
+
43
+ > NOTE: The command ID above is canonical. Invoke it using the syntax for your integration: `/speckit.agent-context.update` for dot-command integrations; `/speckit-agent-context-update` for hyphen/skills integrations (including Forge and Cline); `$speckit-agent-context-update` for Codex or ZCode in skills mode; or `/skill:speckit-agent-context-update` for Kimi.
44
+
45
+ ## Configuration
46
+
47
+ All configuration flows through the extension's own config file at `.specify/extensions/agent-context/agent-context-config.yml` ([agent-context-config.yml](./agent-context-config.yml) in the repo).
48
+
49
+ ## Requirements
50
+
51
+ The bundled update scripts require **Python 3** with **PyYAML** for YAML/upsert processing (PowerShell can also use `ConvertFrom-Yaml` when available).
52
+
53
+ PyYAML ships with the `specify` CLI and is normally available via the same `python3` interpreter. If a hook reports _"PyYAML is required … not available in the current Python environment"_, it means the system `python3` differs from the one used to install Spec Kit. To resolve, run:
54
+
55
+ ```bash
56
+ pip install pyyaml
57
+ # or target the specific interpreter Spec Kit uses:
58
+ /path/to/speckit-python -m pip install pyyaml
59
+ ```
60
+
61
+ ## Issues
62
+
63
+ For any other issues, please create an issue in the [official GitHub repo](https://github.com/github/spec-kit/issues).
@@ -0,0 +1,24 @@
1
+ # Coding Agent Context Extension Configuration
2
+
3
+ # WHAT: The single agent context file relative to the project root (the directory containing .specify/). Absolute paths, backslash separators, and `..` path segments are rejected.
4
+ # REQUIREMENT: OPTIONAL. Use this if you want to manually specify a single context file. If you leave this entry blank, it will use the default context file for the coding agent you picked when you set up Spec Kit. See `agent-context-defaults.json` for the defaults.
5
+ # EXAMPLE: context_file: CLAUDE.md
6
+ context_file: ""
7
+
8
+ # WHAT: List of agent context files relative to the project root (the directory containing .specify/). If you have both `context_file` and `context_files` filled, then this (`context_files`) takes precedence. Absolute paths, backslash separators, and `..` path segments are rejected.
9
+ # REQUIREMENT: OPTIONAL. Use this if your project requires you to keep multiple agent context files in sync.
10
+ # EXAMPLE:
11
+ # context_files:
12
+ # - AGENTS.md
13
+ # - CLAUDE.md
14
+ context_files: []
15
+
16
+ # WHAT: Markers (delimiters) for the managed Spec Kit section. This extension injects information only between these markers.
17
+ # REQUIREMENT: OPTIONAL. Only change if you wish to have a custom marker name.
18
+ # EXAMPLE:
19
+ # context_markers:
20
+ # start: "<!-- AGENT SPEC KIT CONTEXT START -->"
21
+ # end: "<!-- AGENT SPEC KIT CONTEXT END -->"
22
+ context_markers:
23
+ start: "<!-- SPECKIT START -->"
24
+ end: "<!-- SPECKIT END -->"
@@ -10,7 +10,7 @@ This extension provides Git operations as an optional, self-contained module. It
10
10
  - **Feature branch creation** with sequential (`001-feature-name`) or timestamp (`20260319-143022-feature-name`) numbering and optional templates for branch namespaces
11
11
  - **Branch validation** to ensure branches follow naming conventions
12
12
  - **Git remote detection** for GitHub integration (e.g., issue creation)
13
- - **Auto-commit** after core commands (configurable per-command with custom messages)
13
+ - **Auto-commit** after core commands (configurable per-command with custom messages, or Conventional Commit messages generated by the agent)
14
14
 
15
15
  ## Commands
16
16
 
@@ -66,6 +66,11 @@ branch_prefix: ""
66
66
  # Custom commit message for git init
67
67
  init_commit_message: "[Spec Kit] Initial commit"
68
68
 
69
+ # Commit message style for auto-commit hooks: "fixed" (default) uses the
70
+ # messages below; "conventional" asks the agent to generate a Conventional
71
+ # Commit message (e.g. "feat: add OAuth spec") from the diff instead.
72
+ commit_style: fixed
73
+
69
74
  # Auto-commit per command (all disabled by default)
70
75
  # Example: enable auto-commit after specify
71
76
  auto_commit:
@@ -0,0 +1,63 @@
1
+ ---
2
+ description: "Auto-commit changes after a Spec Kit command completes"
3
+ ---
4
+
5
+ # Auto-Commit Changes
6
+
7
+ Automatically stage and commit all changes after a Spec Kit command completes.
8
+
9
+ ## Behavior
10
+
11
+ This command is invoked as a hook after (or before) core commands. It:
12
+
13
+ 1. Determines the event name from the hook context (e.g., if invoked as an `after_specify` hook, the event is `after_specify`; if `before_plan`, the event is `before_plan`)
14
+ 2. Checks `.specify/extensions/git/git-config.yml` for the `auto_commit` section
15
+ 3. Looks up the specific event key to see if auto-commit is enabled
16
+ 4. Falls back to `auto_commit.default` if no event-specific key exists
17
+ 5. Determines the commit message based on `commit_style` (see below)
18
+ 6. If enabled and there are uncommitted changes, runs `git add .` + `git commit`
19
+
20
+ ## Commit Message Styles
21
+
22
+ Controlled by the `commit_style` key in `.specify/extensions/git/git-config.yml`:
23
+
24
+ - **`fixed`** (default): use the per-command `message` if configured, otherwise a generic `[Spec Kit] Auto-commit <phase> <command>` message.
25
+ - **`conventional`**: inspect the actual changes (`git diff` / `git status`) since the last commit and generate a single-line [Conventional Commit](https://www.conventionalcommits.org/) message (`type(scope): subject`, e.g. `feat: add OAuth specification` or `docs: update implementation plan`) that accurately summarizes the change. Write this message to a temporary file and pass the file's path to the script (see Execution below). The configured `message` values are ignored in this mode.
26
+
27
+ ## Execution
28
+
29
+ Determine the event name from the hook that triggered this command, then run the script:
30
+
31
+ - **Bash**: `.specify/extensions/git/scripts/bash/auto-commit.sh <event_name> [--message-file <path>]`
32
+ - **PowerShell**: `.specify/extensions/git/scripts/powershell/auto-commit.ps1 <event_name> [-MessageFile <path>]`
33
+
34
+ Replace `<event_name>` with the actual hook event (e.g., `after_specify`, `before_plan`, `after_implement`). Only pass a generated message when `commit_style: conventional` is configured — first check `.specify/extensions/git/git-config.yml` for the value of `commit_style`:
35
+
36
+ - If `conventional`: inspect the diff and generate a Conventional Commit message. **Do not interpolate the generated message directly into a shell command string** — its content is derived from repository changes and may contain characters (quotes, `$(...)`, backticks) that a shell would execute or that would break command quoting. Instead, write the message to a temporary file using your file-editing tool (not a shell `echo`/`printf`), then pass that file's path via `--message-file <path>` (Bash) or `-MessageFile <path>` (PowerShell).
37
+ - If `fixed` or absent: run the script with just `<event_name>`; it uses the configured/static message.
38
+
39
+ ## Configuration
40
+
41
+ In `.specify/extensions/git/git-config.yml`:
42
+
43
+ ```yaml
44
+ # "fixed" (default) uses the messages below; "conventional" asks the agent
45
+ # to generate a Conventional Commit message from the diff instead.
46
+ commit_style: fixed
47
+
48
+ auto_commit:
49
+ default: false # Global toggle — set true to enable for all commands
50
+ after_specify:
51
+ enabled: true # Override per-command
52
+ message: "[Spec Kit] Add specification"
53
+ after_plan:
54
+ enabled: false
55
+ message: "[Spec Kit] Add implementation plan"
56
+ ```
57
+
58
+ ## Graceful Degradation
59
+
60
+ - If Git is not available or the current directory is not a repository: skips with a warning
61
+ - If no config file exists: skips (disabled by default)
62
+ - If no changes to commit: skips with a message
63
+ - If `commit_style: conventional` is set and no generated message was supplied: fails with a clear error instead of silently falling back to the fixed message format
@@ -17,6 +17,13 @@ branch_prefix: ""
17
17
  # Commit message used by `git commit` during repository initialization
18
18
  init_commit_message: "[Spec Kit] Initial commit"
19
19
 
20
+ # Commit message style used by auto-commit hooks (speckit.git.commit):
21
+ # "fixed" - default; use the configured/static messages below.
22
+ # "conventional" - ask the agent to inspect the diff and generate a
23
+ # Conventional Commit message (e.g. "feat: add OAuth spec")
24
+ # instead of using the messages configured below.
25
+ commit_style: fixed
26
+
20
27
  # Auto-commit before/after core commands.
21
28
  # Set "default" to enable for all commands, then override per-command.
22
29
  # Each key can be true/false. Message is customizable per-command.
@@ -17,6 +17,13 @@ branch_prefix: ""
17
17
  # Commit message used by `git commit` during repository initialization
18
18
  init_commit_message: "[Spec Kit] Initial commit"
19
19
 
20
+ # Commit message style used by auto-commit hooks (speckit.git.commit):
21
+ # "fixed" - default; use the configured/static messages below.
22
+ # "conventional" - ask the agent to inspect the diff and generate a
23
+ # Conventional Commit message (e.g. "feat: add OAuth spec")
24
+ # instead of using the messages configured below.
25
+ commit_style: fixed
26
+
20
27
  # Auto-commit before/after core commands.
21
28
  # Set "default" to enable for all commands, then override per-command.
22
29
  # Each key can be true/false. Message is customizable per-command.