specify-cli 0.14.0__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 (521) hide show
  1. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/test.yml +1 -1
  2. {specify_cli-0.14.0 → specify_cli-0.14.1}/CHANGELOG.md +25 -0
  3. {specify_cli-0.14.0 → specify_cli-0.14.1}/PKG-INFO +1 -1
  4. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/community/presets.md +7 -7
  5. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/reference/integrations.md +1 -0
  6. specify_cli-0.14.1/extensions/agent-context/README.md +63 -0
  7. specify_cli-0.14.1/extensions/agent-context/agent-context-config.yml +24 -0
  8. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/README.md +6 -1
  9. specify_cli-0.14.1/extensions/git/commands/speckit.git.commit.md +63 -0
  10. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/config-template.yml +7 -0
  11. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/git-config.yml +7 -0
  12. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/scripts/bash/auto-commit.sh +68 -2
  13. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/scripts/powershell/auto-commit.ps1 +63 -2
  14. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/catalog.community.json +38 -37
  15. {specify_cli-0.14.0 → specify_cli-0.14.1}/pyproject.toml +1 -1
  16. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/commands_impl/catalog_config.py +5 -2
  17. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/lib/yamlio.py +23 -5
  18. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/models/catalog.py +22 -5
  19. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/models/records.py +14 -4
  20. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/services/installer.py +4 -1
  21. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/extensions/__init__.py +24 -22
  22. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/extensions/_commands.py +15 -2
  23. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/omp/__init__.py +1 -0
  24. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/_commands.py +9 -1
  25. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/expressions.py +8 -2
  26. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/contract/test_catalog_schema.py +51 -3
  27. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/extensions/git/test_git_extension.py +554 -0
  28. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integration/test_bundler_install_flow.py +13 -0
  29. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_omp.py +6 -0
  30. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_extension_skills.py +111 -0
  31. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_extensions.py +105 -0
  32. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_presets.py +52 -0
  33. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_workflows.py +53 -0
  34. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/unit/test_bundler_catalog_config.py +14 -0
  35. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/unit/test_bundler_records.py +21 -0
  36. specify_cli-0.14.0/extensions/agent-context/README.md +0 -67
  37. specify_cli-0.14.0/extensions/agent-context/agent-context-config.yml +0 -20
  38. specify_cli-0.14.0/extensions/git/commands/speckit.git.commit.md +0 -48
  39. {specify_cli-0.14.0 → specify_cli-0.14.1}/.devcontainer/devcontainer.json +0 -0
  40. {specify_cli-0.14.0 → specify_cli-0.14.1}/.devcontainer/post-create.sh +0 -0
  41. {specify_cli-0.14.0 → specify_cli-0.14.1}/.editorconfig +0 -0
  42. {specify_cli-0.14.0 → specify_cli-0.14.1}/.gitattributes +0 -0
  43. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/CODEOWNERS +0 -0
  44. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/ISSUE_TEMPLATE/agent_request.yml +0 -0
  45. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  46. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/ISSUE_TEMPLATE/bundle_submission.yml +0 -0
  47. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  48. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
  49. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  50. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/ISSUE_TEMPLATE/preset_submission.yml +0 -0
  51. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  52. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/aw/actions-lock.json +0 -0
  53. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/dependabot.yml +0 -0
  54. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/scripts/check_security_requirements.py +0 -0
  55. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/security-audit-requirements.txt +0 -0
  56. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/skills/add-community-extension/SKILL.md +0 -0
  57. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/RELEASE-PROCESS.md +0 -0
  58. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/add-community-bundle.lock.yml +0 -0
  59. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/add-community-bundle.md +0 -0
  60. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/add-community-extension.lock.yml +0 -0
  61. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/add-community-extension.md +0 -0
  62. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/add-community-preset.lock.yml +0 -0
  63. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/add-community-preset.md +0 -0
  64. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/bug-assess.lock.yml +0 -0
  65. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/bug-assess.md +0 -0
  66. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/bug-fix.lock.yml +0 -0
  67. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/bug-fix.md +0 -0
  68. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/bug-test.lock.yml +0 -0
  69. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/bug-test.md +0 -0
  70. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/catalog-assign.yml +0 -0
  71. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/codeql.yml +0 -0
  72. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/docs.yml +0 -0
  73. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/lint.yml +0 -0
  74. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/publish-pypi.yml +0 -0
  75. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/release-trigger.yml +0 -0
  76. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/release.yml +0 -0
  77. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/security.yml +0 -0
  78. {specify_cli-0.14.0 → specify_cli-0.14.1}/.github/workflows/stale.yml +0 -0
  79. {specify_cli-0.14.0 → specify_cli-0.14.1}/.gitignore +0 -0
  80. {specify_cli-0.14.0 → specify_cli-0.14.1}/.markdownlint-cli2.jsonc +0 -0
  81. {specify_cli-0.14.0 → specify_cli-0.14.1}/.pre-commit-config.yaml +0 -0
  82. {specify_cli-0.14.0 → specify_cli-0.14.1}/.zenodo.json +0 -0
  83. {specify_cli-0.14.0 → specify_cli-0.14.1}/AGENTS.md +0 -0
  84. {specify_cli-0.14.0 → specify_cli-0.14.1}/CITATION.cff +0 -0
  85. {specify_cli-0.14.0 → specify_cli-0.14.1}/CODE_OF_CONDUCT.md +0 -0
  86. {specify_cli-0.14.0 → specify_cli-0.14.1}/CONTRIBUTING.md +0 -0
  87. {specify_cli-0.14.0 → specify_cli-0.14.1}/DEVELOPMENT.md +0 -0
  88. {specify_cli-0.14.0 → specify_cli-0.14.1}/LICENSE +0 -0
  89. {specify_cli-0.14.0 → specify_cli-0.14.1}/README.md +0 -0
  90. {specify_cli-0.14.0 → specify_cli-0.14.1}/SECURITY.md +0 -0
  91. {specify_cli-0.14.0 → specify_cli-0.14.1}/SUPPORT.md +0 -0
  92. {specify_cli-0.14.0 → specify_cli-0.14.1}/bundles/catalog.community.json +0 -0
  93. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/.gitignore +0 -0
  94. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/README.md +0 -0
  95. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/community/bundles.md +0 -0
  96. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/community/extensions.md +0 -0
  97. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/community/friends.md +0 -0
  98. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/community/overview.md +0 -0
  99. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/community/walkthroughs.md +0 -0
  100. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/concepts/complex-features.md +0 -0
  101. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/concepts/sdd.md +0 -0
  102. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/concepts/spec-of-specs.md +0 -0
  103. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/concepts/spec-persistence.md +0 -0
  104. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/docfx.json +0 -0
  105. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/guides/evolving-specs.md +0 -0
  106. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/guides/monorepo.md +0 -0
  107. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/index.md +0 -0
  108. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/install/air-gapped.md +0 -0
  109. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/install/one-time.md +0 -0
  110. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/install/pipx.md +0 -0
  111. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/install/pypi.md +0 -0
  112. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/install/uv.md +0 -0
  113. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/installation.md +0 -0
  114. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/local-development.md +0 -0
  115. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/quickstart.md +0 -0
  116. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/reference/agentic-bugfix.md +0 -0
  117. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/reference/agentic-sdd.md +0 -0
  118. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/reference/authentication.md +0 -0
  119. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/reference/bundles.md +0 -0
  120. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/reference/core.md +0 -0
  121. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/reference/extensions.md +0 -0
  122. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/reference/overview.md +0 -0
  123. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/reference/presets.md +0 -0
  124. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/reference/workflows.md +0 -0
  125. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/template/public/main.css +0 -0
  126. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/toc.yml +0 -0
  127. {specify_cli-0.14.0 → specify_cli-0.14.1}/docs/upgrade.md +0 -0
  128. {specify_cli-0.14.0 → specify_cli-0.14.1}/examples/bundles/business-analyst/README.md +0 -0
  129. {specify_cli-0.14.0 → specify_cli-0.14.1}/examples/bundles/business-analyst/bundle.yml +0 -0
  130. {specify_cli-0.14.0 → specify_cli-0.14.1}/examples/bundles/developer/README.md +0 -0
  131. {specify_cli-0.14.0 → specify_cli-0.14.1}/examples/bundles/developer/bundle.yml +0 -0
  132. {specify_cli-0.14.0 → specify_cli-0.14.1}/examples/bundles/product-manager/README.md +0 -0
  133. {specify_cli-0.14.0 → specify_cli-0.14.1}/examples/bundles/product-manager/bundle.yml +0 -0
  134. {specify_cli-0.14.0 → specify_cli-0.14.1}/examples/bundles/security-researcher/README.md +0 -0
  135. {specify_cli-0.14.0 → specify_cli-0.14.1}/examples/bundles/security-researcher/bundle.yml +0 -0
  136. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/EXTENSION-API-REFERENCE.md +0 -0
  137. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -0
  138. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/EXTENSION-PUBLISHING-GUIDE.md +0 -0
  139. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/EXTENSION-USER-GUIDE.md +0 -0
  140. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/README.md +0 -0
  141. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
  142. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/agent-context/agent-context-defaults.json +0 -0
  143. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
  144. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/agent-context/extension.yml +0 -0
  145. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/agent-context/scripts/bash/update-agent-context.sh +0 -0
  146. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -0
  147. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/agent-context/scripts/python/update_agent_context.py +0 -0
  148. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/assess/README.md +0 -0
  149. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/assess/commands/speckit.assess.decide.md +0 -0
  150. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/assess/commands/speckit.assess.define.md +0 -0
  151. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/assess/commands/speckit.assess.intake.md +0 -0
  152. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/assess/commands/speckit.assess.research.md +0 -0
  153. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/assess/commands/speckit.assess.shape.md +0 -0
  154. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/assess/extension.yml +0 -0
  155. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/bug/README.md +0 -0
  156. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/bug/commands/speckit.bug.assess.md +0 -0
  157. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/bug/commands/speckit.bug.fix.md +0 -0
  158. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/bug/commands/speckit.bug.test.md +0 -0
  159. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/bug/extension.yml +0 -0
  160. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/catalog.community.json +0 -0
  161. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/catalog.json +0 -0
  162. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/commands/speckit.git.feature.md +0 -0
  163. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/commands/speckit.git.initialize.md +0 -0
  164. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/commands/speckit.git.remote.md +0 -0
  165. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/commands/speckit.git.validate.md +0 -0
  166. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/extension.yml +0 -0
  167. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
  168. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/scripts/bash/git-common.sh +0 -0
  169. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
  170. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +0 -0
  171. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
  172. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
  173. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/scripts/python/auto_commit.py +0 -0
  174. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/scripts/python/create_new_feature_branch.py +0 -0
  175. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/scripts/python/git_common.py +0 -0
  176. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/git/scripts/python/initialize_repo.py +0 -0
  177. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/selftest/commands/selftest.md +0 -0
  178. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/selftest/extension.yml +0 -0
  179. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/template/.gitignore +0 -0
  180. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/template/CHANGELOG.md +0 -0
  181. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/template/EXAMPLE-README.md +0 -0
  182. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/template/LICENSE +0 -0
  183. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/template/README.md +0 -0
  184. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/template/commands/example.md +0 -0
  185. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/template/config-template.yml +0 -0
  186. {specify_cli-0.14.0 → specify_cli-0.14.1}/extensions/template/extension.yml +0 -0
  187. {specify_cli-0.14.0 → specify_cli-0.14.1}/integrations/CONTRIBUTING.md +0 -0
  188. {specify_cli-0.14.0 → specify_cli-0.14.1}/integrations/README.md +0 -0
  189. {specify_cli-0.14.0 → specify_cli-0.14.1}/integrations/catalog.community.json +0 -0
  190. {specify_cli-0.14.0 → specify_cli-0.14.1}/integrations/catalog.json +0 -0
  191. {specify_cli-0.14.0 → specify_cli-0.14.1}/media/bootstrap-claude-code.gif +0 -0
  192. {specify_cli-0.14.0 → specify_cli-0.14.1}/media/logo_large.webp +0 -0
  193. {specify_cli-0.14.0 → specify_cli-0.14.1}/media/logo_small.webp +0 -0
  194. {specify_cli-0.14.0 → specify_cli-0.14.1}/media/spec-kit-video-header.jpg +0 -0
  195. {specify_cli-0.14.0 → specify_cli-0.14.1}/media/specify_cli.gif +0 -0
  196. {specify_cli-0.14.0 → specify_cli-0.14.1}/newsletters/2026-April.md +0 -0
  197. {specify_cli-0.14.0 → specify_cli-0.14.1}/newsletters/2026-February.md +0 -0
  198. {specify_cli-0.14.0 → specify_cli-0.14.1}/newsletters/2026-June.md +0 -0
  199. {specify_cli-0.14.0 → specify_cli-0.14.1}/newsletters/2026-March.md +0 -0
  200. {specify_cli-0.14.0 → specify_cli-0.14.1}/newsletters/2026-May.md +0 -0
  201. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/ARCHITECTURE.md +0 -0
  202. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/PUBLISHING.md +0 -0
  203. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/README.md +0 -0
  204. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/catalog.json +0 -0
  205. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/lean/README.md +0 -0
  206. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/lean/commands/speckit.constitution.md +0 -0
  207. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/lean/commands/speckit.implement.md +0 -0
  208. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/lean/commands/speckit.plan.md +0 -0
  209. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/lean/commands/speckit.specify.md +0 -0
  210. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/lean/commands/speckit.tasks.md +0 -0
  211. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/lean/preset.yml +0 -0
  212. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/scaffold/README.md +0 -0
  213. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
  214. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/scaffold/commands/speckit.specify.md +0 -0
  215. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/scaffold/preset.yml +0 -0
  216. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/scaffold/templates/myext-template.md +0 -0
  217. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/scaffold/templates/spec-template.md +0 -0
  218. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/self-test/commands/speckit.specify.md +0 -0
  219. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/self-test/commands/speckit.wrap-test.md +0 -0
  220. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/self-test/preset.yml +0 -0
  221. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/self-test/templates/checklist-template.md +0 -0
  222. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/self-test/templates/constitution-template.md +0 -0
  223. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/self-test/templates/plan-template.md +0 -0
  224. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/self-test/templates/spec-template.md +0 -0
  225. {specify_cli-0.14.0 → specify_cli-0.14.1}/presets/self-test/templates/tasks-template.md +0 -0
  226. {specify_cli-0.14.0 → specify_cli-0.14.1}/scripts/bash/check-prerequisites.sh +0 -0
  227. {specify_cli-0.14.0 → specify_cli-0.14.1}/scripts/bash/common.sh +0 -0
  228. {specify_cli-0.14.0 → specify_cli-0.14.1}/scripts/bash/create-new-feature.sh +0 -0
  229. {specify_cli-0.14.0 → specify_cli-0.14.1}/scripts/bash/setup-plan.sh +0 -0
  230. {specify_cli-0.14.0 → specify_cli-0.14.1}/scripts/bash/setup-tasks.sh +0 -0
  231. {specify_cli-0.14.0 → specify_cli-0.14.1}/scripts/powershell/check-prerequisites.ps1 +0 -0
  232. {specify_cli-0.14.0 → specify_cli-0.14.1}/scripts/powershell/common.ps1 +0 -0
  233. {specify_cli-0.14.0 → specify_cli-0.14.1}/scripts/powershell/create-new-feature.ps1 +0 -0
  234. {specify_cli-0.14.0 → specify_cli-0.14.1}/scripts/powershell/setup-plan.ps1 +0 -0
  235. {specify_cli-0.14.0 → specify_cli-0.14.1}/scripts/powershell/setup-tasks.ps1 +0 -0
  236. {specify_cli-0.14.0 → specify_cli-0.14.1}/scripts/python/check_prerequisites.py +0 -0
  237. {specify_cli-0.14.0 → specify_cli-0.14.1}/scripts/python/common.py +0 -0
  238. {specify_cli-0.14.0 → specify_cli-0.14.1}/scripts/python/create_new_feature.py +0 -0
  239. {specify_cli-0.14.0 → specify_cli-0.14.1}/scripts/python/setup_plan.py +0 -0
  240. {specify_cli-0.14.0 → specify_cli-0.14.1}/scripts/python/setup_tasks.py +0 -0
  241. {specify_cli-0.14.0 → specify_cli-0.14.1}/spec-driven.md +0 -0
  242. {specify_cli-0.14.0 → specify_cli-0.14.1}/spec-kit.code-workspace +0 -0
  243. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/__init__.py +0 -0
  244. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/_agent_config.py +0 -0
  245. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/_assets.py +0 -0
  246. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/_console.py +0 -0
  247. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/_download_security.py +0 -0
  248. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/_github_http.py +0 -0
  249. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/_init_options.py +0 -0
  250. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/_invocation_style.py +0 -0
  251. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/_project.py +0 -0
  252. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/_toml_string.py +0 -0
  253. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/_utils.py +0 -0
  254. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/_version.py +0 -0
  255. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/agents.py +0 -0
  256. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/authentication/__init__.py +0 -0
  257. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/authentication/azure_devops.py +0 -0
  258. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/authentication/base.py +0 -0
  259. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/authentication/config.py +0 -0
  260. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/authentication/github.py +0 -0
  261. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/authentication/http.py +0 -0
  262. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/__init__.py +0 -0
  263. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/commands_impl/__init__.py +0 -0
  264. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/lib/__init__.py +0 -0
  265. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/lib/project.py +0 -0
  266. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/lib/versioning.py +0 -0
  267. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/models/__init__.py +0 -0
  268. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/models/manifest.py +0 -0
  269. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/services/__init__.py +0 -0
  270. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/services/adapters.py +0 -0
  271. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/services/catalog_stack.py +0 -0
  272. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/services/conflict.py +0 -0
  273. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/services/packager.py +0 -0
  274. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/services/primitives.py +0 -0
  275. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/services/references.py +0 -0
  276. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/services/resolver.py +0 -0
  277. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/bundler/services/validator.py +0 -0
  278. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/catalogs.py +0 -0
  279. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/commands/__init__.py +0 -0
  280. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/commands/bundle/__init__.py +0 -0
  281. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/commands/init.py +0 -0
  282. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integration_runtime.py +0 -0
  283. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integration_scaffold.py +0 -0
  284. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integration_state.py +0 -0
  285. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integration_status.py +0 -0
  286. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/__init__.py +0 -0
  287. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/_commands.py +0 -0
  288. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/_helpers.py +0 -0
  289. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/_install_commands.py +0 -0
  290. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/_migrate_commands.py +0 -0
  291. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/_query_commands.py +0 -0
  292. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/_scaffold_commands.py +0 -0
  293. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/agy/__init__.py +0 -0
  294. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/amp/__init__.py +0 -0
  295. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/auggie/__init__.py +0 -0
  296. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/base.py +0 -0
  297. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/bob/__init__.py +0 -0
  298. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/catalog.py +0 -0
  299. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/claude/__init__.py +0 -0
  300. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/cline/__init__.py +0 -0
  301. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
  302. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/codex/__init__.py +0 -0
  303. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/copilot/__init__.py +0 -0
  304. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -0
  305. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/devin/__init__.py +0 -0
  306. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/droid/__init__.py +0 -0
  307. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/firebender/__init__.py +0 -0
  308. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/forge/__init__.py +0 -0
  309. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/gemini/__init__.py +0 -0
  310. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/generic/__init__.py +0 -0
  311. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/goose/__init__.py +0 -0
  312. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/grok/__init__.py +0 -0
  313. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/hermes/__init__.py +0 -0
  314. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/junie/__init__.py +0 -0
  315. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/kilocode/__init__.py +0 -0
  316. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/kimi/__init__.py +0 -0
  317. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -0
  318. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/lingma/__init__.py +0 -0
  319. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/manifest.py +0 -0
  320. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/opencode/__init__.py +0 -0
  321. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/pi/__init__.py +0 -0
  322. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
  323. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/qwen/__init__.py +0 -0
  324. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/rovodev/__init__.py +0 -0
  325. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/shai/__init__.py +0 -0
  326. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
  327. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/trae/__init__.py +0 -0
  328. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/vibe/__init__.py +0 -0
  329. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/zcode/__init__.py +0 -0
  330. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/integrations/zed/__init__.py +0 -0
  331. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/presets/__init__.py +0 -0
  332. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/presets/_commands.py +0 -0
  333. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/shared_infra.py +0 -0
  334. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/__init__.py +0 -0
  335. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/base.py +0 -0
  336. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/catalog.py +0 -0
  337. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/engine.py +0 -0
  338. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/overlays/__init__.py +0 -0
  339. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/overlays/_commands.py +0 -0
  340. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/overlays/composer.py +0 -0
  341. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/overlays/layer_sources.py +0 -0
  342. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/overlays/merge.py +0 -0
  343. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/overlays/schema.py +0 -0
  344. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/__init__.py +0 -0
  345. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/command/__init__.py +0 -0
  346. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/do_while/__init__.py +0 -0
  347. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/fan_in/__init__.py +0 -0
  348. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/fan_out/__init__.py +0 -0
  349. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/gate/__init__.py +0 -0
  350. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/if_then/__init__.py +0 -0
  351. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/init/__init__.py +0 -0
  352. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/prompt/__init__.py +0 -0
  353. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/shell/__init__.py +0 -0
  354. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/switch/__init__.py +0 -0
  355. {specify_cli-0.14.0 → specify_cli-0.14.1}/src/specify_cli/workflows/steps/while_loop/__init__.py +0 -0
  356. {specify_cli-0.14.0 → specify_cli-0.14.1}/templates/checklist-template.md +0 -0
  357. {specify_cli-0.14.0 → specify_cli-0.14.1}/templates/commands/analyze.md +0 -0
  358. {specify_cli-0.14.0 → specify_cli-0.14.1}/templates/commands/checklist.md +0 -0
  359. {specify_cli-0.14.0 → specify_cli-0.14.1}/templates/commands/clarify.md +0 -0
  360. {specify_cli-0.14.0 → specify_cli-0.14.1}/templates/commands/constitution.md +0 -0
  361. {specify_cli-0.14.0 → specify_cli-0.14.1}/templates/commands/converge.md +0 -0
  362. {specify_cli-0.14.0 → specify_cli-0.14.1}/templates/commands/implement.md +0 -0
  363. {specify_cli-0.14.0 → specify_cli-0.14.1}/templates/commands/plan.md +0 -0
  364. {specify_cli-0.14.0 → specify_cli-0.14.1}/templates/commands/specify.md +0 -0
  365. {specify_cli-0.14.0 → specify_cli-0.14.1}/templates/commands/tasks.md +0 -0
  366. {specify_cli-0.14.0 → specify_cli-0.14.1}/templates/commands/taskstoissues.md +0 -0
  367. {specify_cli-0.14.0 → specify_cli-0.14.1}/templates/constitution-template.md +0 -0
  368. {specify_cli-0.14.0 → specify_cli-0.14.1}/templates/plan-template.md +0 -0
  369. {specify_cli-0.14.0 → specify_cli-0.14.1}/templates/spec-template.md +0 -0
  370. {specify_cli-0.14.0 → specify_cli-0.14.1}/templates/tasks-template.md +0 -0
  371. {specify_cli-0.14.0 → specify_cli-0.14.1}/templates/vscode-settings.json +0 -0
  372. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/__init__.py +0 -0
  373. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/auth_helpers.py +0 -0
  374. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/bundler_helpers.py +0 -0
  375. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/conftest.py +0 -0
  376. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/contract/test_bundle_cli.py +0 -0
  377. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/contract/test_manifest_schema.py +0 -0
  378. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/contract/test_wheel_core_pack_scripts.py +0 -0
  379. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/extensions/__init__.py +0 -0
  380. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/extensions/assess/__init__.py +0 -0
  381. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/extensions/assess/test_assess_extension.py +0 -0
  382. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/extensions/bug/__init__.py +0 -0
  383. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/extensions/bug/test_bug_extension.py +0 -0
  384. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/extensions/git/__init__.py +0 -0
  385. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/extensions/git/test_git_extension_python_parity.py +0 -0
  386. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/extensions/test_agent_context_cli_free.py +0 -0
  387. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/extensions/test_extension_agent_context.py +0 -0
  388. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/extensions/test_update_agent_context_feature_json.py +0 -0
  389. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/extensions/test_update_agent_context_python_parity.py +0 -0
  390. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/hooks/TESTING.md +0 -0
  391. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/hooks/plan.md +0 -0
  392. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/hooks/spec.md +0 -0
  393. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/hooks/tasks.md +0 -0
  394. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/http_helpers.py +0 -0
  395. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integration/test_bundler_catalog_stack.py +0 -0
  396. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integration/test_bundler_init_install.py +0 -0
  397. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integration/test_bundler_local_install.py +0 -0
  398. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integration/test_bundler_offline.py +0 -0
  399. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integration/test_bundler_security_paths.py +0 -0
  400. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/__init__.py +0 -0
  401. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/conftest.py +0 -0
  402. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_base.py +0 -0
  403. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_cli.py +0 -0
  404. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_extra_args.py +0 -0
  405. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_home_isolation.py +0 -0
  406. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_agy.py +0 -0
  407. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_amp.py +0 -0
  408. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_auggie.py +0 -0
  409. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_base_markdown.py +0 -0
  410. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_base_skills.py +0 -0
  411. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_base_toml.py +0 -0
  412. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_base_yaml.py +0 -0
  413. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_bob.py +0 -0
  414. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_catalog.py +0 -0
  415. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_claude.py +0 -0
  416. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_cline.py +0 -0
  417. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_codebuddy.py +0 -0
  418. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_codex.py +0 -0
  419. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_copilot.py +0 -0
  420. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_cursor_agent.py +0 -0
  421. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_devin.py +0 -0
  422. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_droid.py +0 -0
  423. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_firebender.py +0 -0
  424. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_forge.py +0 -0
  425. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_gemini.py +0 -0
  426. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_generic.py +0 -0
  427. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_goose.py +0 -0
  428. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_grok.py +0 -0
  429. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_hermes.py +0 -0
  430. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_junie.py +0 -0
  431. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_kilocode.py +0 -0
  432. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_kimi.py +0 -0
  433. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_kiro_cli.py +0 -0
  434. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_lingma.py +0 -0
  435. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_opencode.py +0 -0
  436. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_pi.py +0 -0
  437. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_qodercli.py +0 -0
  438. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_qwen.py +0 -0
  439. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_rovodev.py +0 -0
  440. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_scaffold.py +0 -0
  441. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_shai.py +0 -0
  442. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_state.py +0 -0
  443. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_subcommand.py +0 -0
  444. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_tabnine.py +0 -0
  445. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_trae.py +0 -0
  446. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_vibe.py +0 -0
  447. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_zcode.py +0 -0
  448. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_integration_zed.py +0 -0
  449. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_manifest.py +0 -0
  450. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_registry.py +0 -0
  451. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/integrations/test_skill_frontmatter_quoting.py +0 -0
  452. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/parity_helpers.py +0 -0
  453. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/self_upgrade_helpers.py +0 -0
  454. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_agent_config_consistency.py +0 -0
  455. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_authentication.py +0 -0
  456. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_branch_numbering.py +0 -0
  457. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_check_prerequisites_paths_only.py +0 -0
  458. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_check_prerequisites_python_parity.py +0 -0
  459. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_check_tool.py +0 -0
  460. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_cli_version.py +0 -0
  461. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_command_template_py_scripts.py +0 -0
  462. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_commands_package.py +0 -0
  463. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_console_imports.py +0 -0
  464. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_create_new_feature_python_parity.py +0 -0
  465. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_download_security.py +0 -0
  466. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_extension_registration.py +0 -0
  467. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_extension_update_hardening.py +0 -0
  468. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_github_http.py +0 -0
  469. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_github_workflows.py +0 -0
  470. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_init_dir.py +0 -0
  471. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_init_dir_cli.py +0 -0
  472. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_live_transient_windows.py +0 -0
  473. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_merge.py +0 -0
  474. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_post_process.py +0 -0
  475. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_ps1_encoding.py +0 -0
  476. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_registrar_path_traversal.py +0 -0
  477. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_security_workflow.py +0 -0
  478. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_self_upgrade_detection.py +0 -0
  479. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_self_upgrade_execution.py +0 -0
  480. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_self_upgrade_guidance.py +0 -0
  481. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_self_upgrade_verification.py +0 -0
  482. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_setup_plan_feature_json.py +0 -0
  483. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_setup_plan_no_overwrite.py +0 -0
  484. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_setup_plan_python_parity.py +0 -0
  485. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_setup_tasks.py +0 -0
  486. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_setup_tasks_python_parity.py +0 -0
  487. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_shared_infra_integrity.py +0 -0
  488. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_skill_placeholder_py.py +0 -0
  489. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_specify_template_numbering.py +0 -0
  490. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_timestamp_branches.py +0 -0
  491. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_upgrade.py +0 -0
  492. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_utils.py +0 -0
  493. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_utils_assets_imports.py +0 -0
  494. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_version_imports.py +0 -0
  495. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/test_workflow_run_without_project.py +0 -0
  496. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/unit/test_bundle_download_url.py +0 -0
  497. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/unit/test_bundler_adapters.py +0 -0
  498. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/unit/test_bundler_conflict.py +0 -0
  499. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/unit/test_bundler_packager.py +0 -0
  500. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/unit/test_bundler_primitives.py +0 -0
  501. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/unit/test_bundler_references.py +0 -0
  502. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/unit/test_bundler_resolver.py +0 -0
  503. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/unit/test_bundler_validator.py +0 -0
  504. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/unit/test_bundler_versioning.py +0 -0
  505. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/unit/test_bundler_yamlio.py +0 -0
  506. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/workflows/conftest.py +0 -0
  507. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/workflows/test_overlay_commands.py +0 -0
  508. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/workflows/test_overlay_composer.py +0 -0
  509. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/workflows/test_overlay_layer_sources.py +0 -0
  510. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/workflows/test_overlay_merge.py +0 -0
  511. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/workflows/test_overlay_schema.py +0 -0
  512. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/workflows/test_overlay_security.py +0 -0
  513. {specify_cli-0.14.0 → specify_cli-0.14.1}/tests/workflows/test_resolver_integration.py +0 -0
  514. {specify_cli-0.14.0 → specify_cli-0.14.1}/workflows/ARCHITECTURE.md +0 -0
  515. {specify_cli-0.14.0 → specify_cli-0.14.1}/workflows/PUBLISHING.md +0 -0
  516. {specify_cli-0.14.0 → specify_cli-0.14.1}/workflows/README.md +0 -0
  517. {specify_cli-0.14.0 → specify_cli-0.14.1}/workflows/catalog.community.json +0 -0
  518. {specify_cli-0.14.0 → specify_cli-0.14.1}/workflows/catalog.json +0 -0
  519. {specify_cli-0.14.0 → specify_cli-0.14.1}/workflows/speckit/workflow.yml +0 -0
  520. {specify_cli-0.14.0 → specify_cli-0.14.1}/workflows/step-catalog.community.json +0 -0
  521. {specify_cli-0.14.0 → specify_cli-0.14.1}/workflows/step-catalog.json +0 -0
@@ -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 }}
@@ -2,6 +2,31 @@
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
+
5
30
  ## [0.14.0] - 2026-07-23
6
31
 
7
32
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specify-cli
3
- Version: 0.14.0
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
@@ -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) |
@@ -275,6 +275,7 @@ The currently declared multi-install safe integrations are:
275
275
  | `junie` | `.junie/commands` |
276
276
  | `kilocode` | `.kilocode/workflows` |
277
277
  | `kiro-cli` | `.kiro/prompts` |
278
+ | `omp` | `.omp/commands` |
278
279
  | `qodercli` | `.qoder/commands` |
279
280
  | `qwen` | `.qwen/commands` |
280
281
  | `shai` | `.shai/commands` |
@@ -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.
@@ -3,16 +3,57 @@
3
3
  # Automatically commit changes after a Spec Kit command completes.
4
4
  # Checks per-command config keys in git-config.yml before committing.
5
5
  #
6
- # Usage: auto-commit.sh <event_name>
6
+ # Usage: auto-commit.sh <event_name> [generated_message]
7
+ # auto-commit.sh <event_name> --message-file <path>
7
8
  # e.g.: auto-commit.sh after_specify
9
+ # e.g.: auto-commit.sh after_specify --message-file /tmp/commit-msg.txt (commit_style: conventional)
10
+ #
11
+ # --message-file is the preferred way to supply an agent-generated commit
12
+ # message: it reads the message from a file instead of a shell argument,
13
+ # so message content (which may contain quotes, `$(...)`, backticks, etc.)
14
+ # is never interpolated into a shell command line.
8
15
 
9
16
  set -e
10
17
 
11
18
  EVENT_NAME="${1:-}"
12
19
  if [ -z "$EVENT_NAME" ]; then
13
- echo "Usage: $0 <event_name>" >&2
20
+ echo "Usage: $0 <event_name> [generated_message | --message-file <path>]" >&2
14
21
  exit 1
15
22
  fi
23
+ shift || true
24
+
25
+ # Optional second argument: an agent-generated commit message (used when
26
+ # commit_style: conventional is configured). Prefer --message-file over
27
+ # passing the message directly as a shell argument.
28
+ GENERATED_MESSAGE=""
29
+ while [ $# -gt 0 ]; do
30
+ case "$1" in
31
+ --message-file)
32
+ _message_file="${2:-}"
33
+ if [ -z "$_message_file" ]; then
34
+ echo "[specify] Error: --message-file requires a path argument" >&2
35
+ exit 1
36
+ fi
37
+ if [ ! -f "$_message_file" ]; then
38
+ echo "[specify] Error: message file '$_message_file' not found" >&2
39
+ exit 1
40
+ fi
41
+ GENERATED_MESSAGE="$(cat "$_message_file")"
42
+ # The message file is a transport-only artifact: its content is
43
+ # now captured above, so remove it immediately. Otherwise, if it
44
+ # was written inside the worktree, it would be picked up as an
45
+ # untracked change by both the "any changes?" check below and by
46
+ # `git add .`, polluting the commit or defeating the no-changes
47
+ # short-circuit even when nothing else changed.
48
+ rm -f "$_message_file"
49
+ shift 2
50
+ ;;
51
+ *)
52
+ GENERATED_MESSAGE="$1"
53
+ shift
54
+ ;;
55
+ esac
56
+ done
16
57
 
17
58
  SCRIPT_DIR="$(CDPATH="" cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
18
59
 
@@ -46,8 +87,22 @@ fi
46
87
  _config_file="$REPO_ROOT/.specify/extensions/git/git-config.yml"
47
88
  _enabled=false
48
89
  _commit_msg=""
90
+ _commit_style="fixed"
49
91
 
50
92
  if [ -f "$_config_file" ]; then
93
+ # Top-level scalar key: commit_style (fixed | conventional)
94
+ _style_val=$(grep -m1 '^commit_style:' "$_config_file" 2>/dev/null | sed 's/^commit_style:[[:space:]]*//' | sed 's/[[:space:]]\{1,\}#.*$//' | sed 's/[[:space:]]*$//' | sed 's/^["'\'']//' | sed 's/["'\'']*$//' | tr '[:upper:]' '[:lower:]')
95
+ if [ -n "$_style_val" ]; then
96
+ case "$_style_val" in
97
+ fixed|conventional)
98
+ _commit_style="$_style_val"
99
+ ;;
100
+ *)
101
+ echo "[specify] Warning: unknown commit_style '$_style_val' in git-config.yml (expected 'fixed' or 'conventional'); defaulting to 'fixed'" >&2
102
+ ;;
103
+ esac
104
+ fi
105
+
51
106
  # Parse the auto_commit section for this event.
52
107
  # Look for auto_commit.<event_name>.enabled and .message
53
108
  # Also check auto_commit.default as fallback.
@@ -128,6 +183,17 @@ if git diff --quiet HEAD 2>/dev/null && git diff --cached --quiet 2>/dev/null &&
128
183
  exit 0
129
184
  fi
130
185
 
186
+ # In conventional mode, the commit message must be supplied by the agent
187
+ # (via the generated_message argument); never fall back to the fixed message.
188
+ if [ "$_commit_style" = "conventional" ]; then
189
+ if [ -n "$GENERATED_MESSAGE" ]; then
190
+ _commit_msg="$GENERATED_MESSAGE"
191
+ else
192
+ echo "[specify] Error: commit_style is 'conventional' but no generated commit message was supplied; aborting auto-commit (pass --message-file <path>, or a raw message as arg 2, or set commit_style: fixed)" >&2
193
+ exit 1
194
+ fi
195
+ fi
196
+
131
197
  # Derive a human-readable command name from the event
132
198
  # e.g., after_specify -> specify, before_plan -> plan
133
199
  _command_name=$(echo "$EVENT_NAME" | sed 's/^after_//' | sed 's/^before_//')
@@ -3,14 +3,47 @@
3
3
  # Automatically commit changes after a Spec Kit command completes.
4
4
  # Checks per-command config keys in git-config.yml before committing.
5
5
  #
6
- # Usage: auto-commit.ps1 <event_name>
6
+ # Usage: auto-commit.ps1 <event_name> [generated_message]
7
+ # auto-commit.ps1 <event_name> -MessageFile <path>
7
8
  # e.g.: auto-commit.ps1 after_specify
9
+ # e.g.: auto-commit.ps1 after_specify -MessageFile C:\temp\commit-msg.txt (commit_style: conventional)
10
+ #
11
+ # -MessageFile is the preferred way to supply an agent-generated commit
12
+ # message: it reads the message from a file instead of a shell argument,
13
+ # so message content (which may contain quotes, $(...), backticks, etc.)
14
+ # is never interpolated into a shell command line.
8
15
  param(
9
16
  [Parameter(Position = 0, Mandatory = $true)]
10
- [string]$EventName
17
+ [string]$EventName,
18
+
19
+ # Optional agent-generated commit message (used when commit_style: conventional is configured).
20
+ # Prefer -MessageFile over passing the message directly as a shell argument.
21
+ [Parameter(Position = 1, Mandatory = $false)]
22
+ [string]$GeneratedMessage = "",
23
+
24
+ [Parameter(Mandatory = $false)]
25
+ [string]$MessageFile = ""
11
26
  )
12
27
  $ErrorActionPreference = 'Stop'
13
28
 
29
+ if ($MessageFile) {
30
+ if (-not (Test-Path $MessageFile -PathType Leaf)) {
31
+ Write-Warning "[specify] Error: message file '$MessageFile' not found"
32
+ exit 1
33
+ }
34
+ $GeneratedMessage = (Get-Content -Path $MessageFile -Raw)
35
+ if ($null -ne $GeneratedMessage) {
36
+ $GeneratedMessage = $GeneratedMessage.TrimEnd("`r", "`n")
37
+ }
38
+ # The message file is a transport-only artifact: its content is now
39
+ # captured above, so remove it immediately. Otherwise, if it was written
40
+ # inside the worktree, it would be picked up as an untracked change by
41
+ # both the "any changes?" check below and by `git add .`, polluting the
42
+ # commit or defeating the no-changes short-circuit even when nothing
43
+ # else changed.
44
+ Remove-Item -Path $MessageFile -Force -ErrorAction SilentlyContinue
45
+ }
46
+
14
47
  function Find-ProjectRoot {
15
48
  param([string]$StartDir)
16
49
  $current = Resolve-Path $StartDir
@@ -55,8 +88,25 @@ if (-not $isRepo) {
55
88
  $configFile = Join-Path $repoRoot ".specify/extensions/git/git-config.yml"
56
89
  $enabled = $false
57
90
  $commitMsg = ""
91
+ $commitStyle = "fixed"
58
92
 
59
93
  if (Test-Path $configFile) {
94
+ # Top-level scalar key: commit_style (fixed | conventional)
95
+ foreach ($line in Get-Content $configFile) {
96
+ if ($line -match '^commit_style:\s*(.+)$') {
97
+ $styleVal = (($matches[1] -replace '\s+#.*$', '').Trim()) -replace '^["'']' -replace '["'']$'
98
+ if ($styleVal) {
99
+ $styleVal = $styleVal.ToLower()
100
+ if ($styleVal -eq 'fixed' -or $styleVal -eq 'conventional') {
101
+ $commitStyle = $styleVal
102
+ } else {
103
+ Write-Warning "[specify] Warning: unknown commit_style '$styleVal' in git-config.yml (expected 'fixed' or 'conventional'); defaulting to 'fixed'"
104
+ }
105
+ }
106
+ break
107
+ }
108
+ }
109
+
60
110
  # Parse YAML to find auto_commit section
61
111
  $inAutoCommit = $false
62
112
  $inEvent = $false
@@ -140,6 +190,17 @@ if ($d1 -eq 0 -and $d2 -eq 0 -and -not $untracked) {
140
190
  exit 0
141
191
  }
142
192
 
193
+ # In conventional mode, the commit message must be supplied by the agent
194
+ # (via the GeneratedMessage argument); never fall back to the fixed message.
195
+ if ($commitStyle -eq 'conventional') {
196
+ if ($GeneratedMessage) {
197
+ $commitMsg = $GeneratedMessage
198
+ } else {
199
+ Write-Warning "[specify] Error: commit_style is 'conventional' but no generated commit message was supplied; aborting auto-commit (pass -MessageFile <path>, or a raw message as arg 2, or set commit_style: fixed)"
200
+ exit 1
201
+ }
202
+ }
203
+
143
204
  # Derive a human-readable command name from the event
144
205
  $commandName = $EventName -replace '^after_', '' -replace '^before_', ''
145
206
  $phase = if ($EventName -match '^before_') { 'before' } else { 'after' }