specify-cli 0.12.1__tar.gz → 0.12.2__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 (449) hide show
  1. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/ISSUE_TEMPLATE/agent_request.yml +1 -1
  2. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -2
  3. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -2
  4. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/workflows/lint.yml +13 -0
  5. {specify_cli-0.12.1 → specify_cli-0.12.2}/AGENTS.md +11 -11
  6. {specify_cli-0.12.1 → specify_cli-0.12.2}/CHANGELOG.md +16 -0
  7. {specify_cli-0.12.1 → specify_cli-0.12.2}/PKG-INFO +1 -1
  8. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/community/extensions.md +3 -2
  9. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/index.md +1 -1
  10. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/installation.md +1 -1
  11. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/reference/integrations.md +2 -6
  12. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/upgrade.md +5 -5
  13. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/agent-context/agent-context-defaults.json +0 -1
  14. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/catalog.community.json +51 -11
  15. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/git/scripts/bash/create-new-feature-branch.sh +3 -1
  16. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +4 -3
  17. {specify_cli-0.12.1 → specify_cli-0.12.2}/integrations/catalog.json +0 -18
  18. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/ARCHITECTURE.md +1 -1
  19. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/catalog.community.json +5 -5
  20. {specify_cli-0.12.1 → specify_cli-0.12.2}/pyproject.toml +1 -1
  21. {specify_cli-0.12.1 → specify_cli-0.12.2}/scripts/bash/create-new-feature.sh +4 -2
  22. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/catalogs.py +1 -1
  23. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/__init__.py +0 -4
  24. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/presets/__init__.py +1 -1
  25. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/workflows/base.py +7 -0
  26. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/workflows/engine.py +289 -54
  27. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_catalog.py +6 -5
  28. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_devin.py +1 -1
  29. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_forge.py +8 -8
  30. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_registry.py +1 -1
  31. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_agent_config_consistency.py +0 -24
  32. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_presets.py +6 -5
  33. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_workflows.py +206 -2
  34. specify_cli-0.12.1/src/specify_cli/integrations/iflow/__init__.py +0 -21
  35. specify_cli-0.12.1/src/specify_cli/integrations/windsurf/__init__.py +0 -21
  36. specify_cli-0.12.1/tests/integrations/test_integration_iflow.py +0 -10
  37. specify_cli-0.12.1/tests/integrations/test_integration_windsurf.py +0 -10
  38. {specify_cli-0.12.1 → specify_cli-0.12.2}/.devcontainer/devcontainer.json +0 -0
  39. {specify_cli-0.12.1 → specify_cli-0.12.2}/.devcontainer/post-create.sh +0 -0
  40. {specify_cli-0.12.1 → specify_cli-0.12.2}/.editorconfig +0 -0
  41. {specify_cli-0.12.1 → specify_cli-0.12.2}/.gitattributes +0 -0
  42. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/CODEOWNERS +0 -0
  43. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/ISSUE_TEMPLATE/bundle_submission.yml +0 -0
  44. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  45. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
  46. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/ISSUE_TEMPLATE/preset_submission.yml +0 -0
  47. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  48. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/aw/actions-lock.json +0 -0
  49. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/dependabot.yml +0 -0
  50. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/skills/add-community-extension/SKILL.md +0 -0
  51. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/workflows/RELEASE-PROCESS.md +0 -0
  52. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/workflows/add-community-extension.lock.yml +0 -0
  53. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/workflows/add-community-extension.md +0 -0
  54. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/workflows/add-community-preset.lock.yml +0 -0
  55. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/workflows/add-community-preset.md +0 -0
  56. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/workflows/bug-assess.lock.yml +0 -0
  57. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/workflows/bug-assess.md +0 -0
  58. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/workflows/catalog-assign.yml +0 -0
  59. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/workflows/codeql.yml +0 -0
  60. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/workflows/docs.yml +0 -0
  61. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/workflows/publish-pypi.yml +0 -0
  62. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/workflows/release-trigger.yml +0 -0
  63. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/workflows/release.yml +0 -0
  64. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/workflows/stale.yml +0 -0
  65. {specify_cli-0.12.1 → specify_cli-0.12.2}/.github/workflows/test.yml +0 -0
  66. {specify_cli-0.12.1 → specify_cli-0.12.2}/.gitignore +0 -0
  67. {specify_cli-0.12.1 → specify_cli-0.12.2}/.markdownlint-cli2.jsonc +0 -0
  68. {specify_cli-0.12.1 → specify_cli-0.12.2}/.zenodo.json +0 -0
  69. {specify_cli-0.12.1 → specify_cli-0.12.2}/CITATION.cff +0 -0
  70. {specify_cli-0.12.1 → specify_cli-0.12.2}/CODE_OF_CONDUCT.md +0 -0
  71. {specify_cli-0.12.1 → specify_cli-0.12.2}/CONTRIBUTING.md +0 -0
  72. {specify_cli-0.12.1 → specify_cli-0.12.2}/DEVELOPMENT.md +0 -0
  73. {specify_cli-0.12.1 → specify_cli-0.12.2}/LICENSE +0 -0
  74. {specify_cli-0.12.1 → specify_cli-0.12.2}/README.md +0 -0
  75. {specify_cli-0.12.1 → specify_cli-0.12.2}/SECURITY.md +0 -0
  76. {specify_cli-0.12.1 → specify_cli-0.12.2}/SUPPORT.md +0 -0
  77. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/.gitignore +0 -0
  78. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/README.md +0 -0
  79. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/community/bundles.md +0 -0
  80. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/community/friends.md +0 -0
  81. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/community/overview.md +0 -0
  82. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/community/presets.md +0 -0
  83. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/community/walkthroughs.md +0 -0
  84. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/concepts/complex-features.md +0 -0
  85. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/concepts/sdd.md +0 -0
  86. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/concepts/spec-persistence.md +0 -0
  87. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/docfx.json +0 -0
  88. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/guides/evolving-specs.md +0 -0
  89. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/guides/monorepo.md +0 -0
  90. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/install/air-gapped.md +0 -0
  91. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/install/one-time.md +0 -0
  92. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/install/pipx.md +0 -0
  93. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/install/uv.md +0 -0
  94. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/local-development.md +0 -0
  95. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/quickstart.md +0 -0
  96. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/reference/authentication.md +0 -0
  97. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/reference/bundles.md +0 -0
  98. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/reference/core.md +0 -0
  99. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/reference/extensions.md +0 -0
  100. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/reference/overview.md +0 -0
  101. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/reference/presets.md +0 -0
  102. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/reference/workflows.md +0 -0
  103. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/template/public/main.css +0 -0
  104. {specify_cli-0.12.1 → specify_cli-0.12.2}/docs/toc.yml +0 -0
  105. {specify_cli-0.12.1 → specify_cli-0.12.2}/examples/bundles/business-analyst/README.md +0 -0
  106. {specify_cli-0.12.1 → specify_cli-0.12.2}/examples/bundles/business-analyst/bundle.yml +0 -0
  107. {specify_cli-0.12.1 → specify_cli-0.12.2}/examples/bundles/developer/README.md +0 -0
  108. {specify_cli-0.12.1 → specify_cli-0.12.2}/examples/bundles/developer/bundle.yml +0 -0
  109. {specify_cli-0.12.1 → specify_cli-0.12.2}/examples/bundles/product-manager/README.md +0 -0
  110. {specify_cli-0.12.1 → specify_cli-0.12.2}/examples/bundles/product-manager/bundle.yml +0 -0
  111. {specify_cli-0.12.1 → specify_cli-0.12.2}/examples/bundles/security-researcher/README.md +0 -0
  112. {specify_cli-0.12.1 → specify_cli-0.12.2}/examples/bundles/security-researcher/bundle.yml +0 -0
  113. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/EXTENSION-API-REFERENCE.md +0 -0
  114. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -0
  115. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/EXTENSION-PUBLISHING-GUIDE.md +0 -0
  116. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/EXTENSION-USER-GUIDE.md +0 -0
  117. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/README.md +0 -0
  118. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
  119. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/agent-context/README.md +0 -0
  120. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/agent-context/agent-context-config.yml +0 -0
  121. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
  122. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/agent-context/extension.yml +0 -0
  123. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/agent-context/scripts/bash/update-agent-context.sh +0 -0
  124. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -0
  125. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/bug/README.md +0 -0
  126. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/bug/commands/speckit.bug.assess.md +0 -0
  127. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/bug/commands/speckit.bug.fix.md +0 -0
  128. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/bug/commands/speckit.bug.test.md +0 -0
  129. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/bug/extension.yml +0 -0
  130. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/catalog.json +0 -0
  131. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/git/README.md +0 -0
  132. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/git/commands/speckit.git.commit.md +0 -0
  133. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/git/commands/speckit.git.feature.md +0 -0
  134. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/git/commands/speckit.git.initialize.md +0 -0
  135. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/git/commands/speckit.git.remote.md +0 -0
  136. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/git/commands/speckit.git.validate.md +0 -0
  137. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/git/config-template.yml +0 -0
  138. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/git/extension.yml +0 -0
  139. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/git/git-config.yml +0 -0
  140. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/git/scripts/bash/auto-commit.sh +0 -0
  141. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/git/scripts/bash/git-common.sh +0 -0
  142. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
  143. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
  144. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
  145. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
  146. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/selftest/commands/selftest.md +0 -0
  147. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/selftest/extension.yml +0 -0
  148. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/template/.gitignore +0 -0
  149. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/template/CHANGELOG.md +0 -0
  150. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/template/EXAMPLE-README.md +0 -0
  151. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/template/LICENSE +0 -0
  152. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/template/README.md +0 -0
  153. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/template/commands/example.md +0 -0
  154. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/template/config-template.yml +0 -0
  155. {specify_cli-0.12.1 → specify_cli-0.12.2}/extensions/template/extension.yml +0 -0
  156. {specify_cli-0.12.1 → specify_cli-0.12.2}/integrations/CONTRIBUTING.md +0 -0
  157. {specify_cli-0.12.1 → specify_cli-0.12.2}/integrations/README.md +0 -0
  158. {specify_cli-0.12.1 → specify_cli-0.12.2}/integrations/catalog.community.json +0 -0
  159. {specify_cli-0.12.1 → specify_cli-0.12.2}/media/bootstrap-claude-code.gif +0 -0
  160. {specify_cli-0.12.1 → specify_cli-0.12.2}/media/logo_large.webp +0 -0
  161. {specify_cli-0.12.1 → specify_cli-0.12.2}/media/logo_small.webp +0 -0
  162. {specify_cli-0.12.1 → specify_cli-0.12.2}/media/spec-kit-video-header.jpg +0 -0
  163. {specify_cli-0.12.1 → specify_cli-0.12.2}/media/specify_cli.gif +0 -0
  164. {specify_cli-0.12.1 → specify_cli-0.12.2}/newsletters/2026-April.md +0 -0
  165. {specify_cli-0.12.1 → specify_cli-0.12.2}/newsletters/2026-February.md +0 -0
  166. {specify_cli-0.12.1 → specify_cli-0.12.2}/newsletters/2026-March.md +0 -0
  167. {specify_cli-0.12.1 → specify_cli-0.12.2}/newsletters/2026-May.md +0 -0
  168. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/PUBLISHING.md +0 -0
  169. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/README.md +0 -0
  170. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/catalog.json +0 -0
  171. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/lean/README.md +0 -0
  172. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/lean/commands/speckit.constitution.md +0 -0
  173. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/lean/commands/speckit.implement.md +0 -0
  174. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/lean/commands/speckit.plan.md +0 -0
  175. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/lean/commands/speckit.specify.md +0 -0
  176. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/lean/commands/speckit.tasks.md +0 -0
  177. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/lean/preset.yml +0 -0
  178. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/scaffold/README.md +0 -0
  179. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
  180. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/scaffold/commands/speckit.specify.md +0 -0
  181. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/scaffold/preset.yml +0 -0
  182. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/scaffold/templates/myext-template.md +0 -0
  183. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/scaffold/templates/spec-template.md +0 -0
  184. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/self-test/commands/speckit.specify.md +0 -0
  185. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/self-test/commands/speckit.wrap-test.md +0 -0
  186. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/self-test/preset.yml +0 -0
  187. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/self-test/templates/agent-file-template.md +0 -0
  188. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/self-test/templates/checklist-template.md +0 -0
  189. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/self-test/templates/constitution-template.md +0 -0
  190. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/self-test/templates/plan-template.md +0 -0
  191. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/self-test/templates/spec-template.md +0 -0
  192. {specify_cli-0.12.1 → specify_cli-0.12.2}/presets/self-test/templates/tasks-template.md +0 -0
  193. {specify_cli-0.12.1 → specify_cli-0.12.2}/scripts/bash/check-prerequisites.sh +0 -0
  194. {specify_cli-0.12.1 → specify_cli-0.12.2}/scripts/bash/common.sh +0 -0
  195. {specify_cli-0.12.1 → specify_cli-0.12.2}/scripts/bash/setup-plan.sh +0 -0
  196. {specify_cli-0.12.1 → specify_cli-0.12.2}/scripts/bash/setup-tasks.sh +0 -0
  197. {specify_cli-0.12.1 → specify_cli-0.12.2}/scripts/powershell/check-prerequisites.ps1 +0 -0
  198. {specify_cli-0.12.1 → specify_cli-0.12.2}/scripts/powershell/common.ps1 +0 -0
  199. {specify_cli-0.12.1 → specify_cli-0.12.2}/scripts/powershell/create-new-feature.ps1 +0 -0
  200. {specify_cli-0.12.1 → specify_cli-0.12.2}/scripts/powershell/setup-plan.ps1 +0 -0
  201. {specify_cli-0.12.1 → specify_cli-0.12.2}/scripts/powershell/setup-tasks.ps1 +0 -0
  202. {specify_cli-0.12.1 → specify_cli-0.12.2}/spec-driven.md +0 -0
  203. {specify_cli-0.12.1 → specify_cli-0.12.2}/spec-kit.code-workspace +0 -0
  204. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/__init__.py +0 -0
  205. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/_agent_config.py +0 -0
  206. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/_assets.py +0 -0
  207. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/_console.py +0 -0
  208. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/_github_http.py +0 -0
  209. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/_init_options.py +0 -0
  210. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/_invocation_style.py +0 -0
  211. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/_utils.py +0 -0
  212. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/_version.py +0 -0
  213. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/agents.py +0 -0
  214. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/authentication/__init__.py +0 -0
  215. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/authentication/azure_devops.py +0 -0
  216. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/authentication/base.py +0 -0
  217. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/authentication/config.py +0 -0
  218. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/authentication/github.py +0 -0
  219. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/authentication/http.py +0 -0
  220. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/__init__.py +0 -0
  221. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/commands_impl/__init__.py +0 -0
  222. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/commands_impl/catalog_config.py +0 -0
  223. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/lib/__init__.py +0 -0
  224. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/lib/project.py +0 -0
  225. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/lib/versioning.py +0 -0
  226. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/lib/yamlio.py +0 -0
  227. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/models/__init__.py +0 -0
  228. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/models/catalog.py +0 -0
  229. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/models/manifest.py +0 -0
  230. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/models/records.py +0 -0
  231. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/services/__init__.py +0 -0
  232. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/services/adapters.py +0 -0
  233. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/services/catalog_stack.py +0 -0
  234. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/services/conflict.py +0 -0
  235. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/services/installer.py +0 -0
  236. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/services/packager.py +0 -0
  237. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/services/primitives.py +0 -0
  238. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/services/references.py +0 -0
  239. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/services/resolver.py +0 -0
  240. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/bundler/services/validator.py +0 -0
  241. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/commands/__init__.py +0 -0
  242. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/commands/bundle/__init__.py +0 -0
  243. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/commands/init.py +0 -0
  244. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/extensions/__init__.py +0 -0
  245. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/extensions/_commands.py +0 -0
  246. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integration_runtime.py +0 -0
  247. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integration_scaffold.py +0 -0
  248. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integration_state.py +0 -0
  249. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integration_status.py +0 -0
  250. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/_commands.py +0 -0
  251. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/_helpers.py +0 -0
  252. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/_install_commands.py +0 -0
  253. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/_migrate_commands.py +0 -0
  254. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/_query_commands.py +0 -0
  255. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/_scaffold_commands.py +0 -0
  256. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/agy/__init__.py +0 -0
  257. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/amp/__init__.py +0 -0
  258. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/auggie/__init__.py +0 -0
  259. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/base.py +0 -0
  260. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/bob/__init__.py +0 -0
  261. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/catalog.py +0 -0
  262. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/claude/__init__.py +0 -0
  263. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/cline/__init__.py +0 -0
  264. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
  265. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/codex/__init__.py +0 -0
  266. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/copilot/__init__.py +0 -0
  267. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -0
  268. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/devin/__init__.py +0 -0
  269. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/firebender/__init__.py +0 -0
  270. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/forge/__init__.py +0 -0
  271. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/gemini/__init__.py +0 -0
  272. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/generic/__init__.py +0 -0
  273. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/goose/__init__.py +0 -0
  274. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/hermes/__init__.py +0 -0
  275. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/junie/__init__.py +0 -0
  276. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/kilocode/__init__.py +0 -0
  277. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/kimi/__init__.py +0 -0
  278. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -0
  279. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/lingma/__init__.py +0 -0
  280. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/manifest.py +0 -0
  281. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/omp/__init__.py +0 -0
  282. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/opencode/__init__.py +0 -0
  283. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/pi/__init__.py +0 -0
  284. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
  285. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/qwen/__init__.py +0 -0
  286. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/roo/__init__.py +0 -0
  287. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/rovodev/__init__.py +0 -0
  288. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/shai/__init__.py +0 -0
  289. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
  290. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/trae/__init__.py +0 -0
  291. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/vibe/__init__.py +0 -0
  292. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/zcode/__init__.py +0 -0
  293. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/integrations/zed/__init__.py +0 -0
  294. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/presets/_commands.py +0 -0
  295. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/shared_infra.py +0 -0
  296. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/workflows/__init__.py +0 -0
  297. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/workflows/catalog.py +0 -0
  298. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/workflows/expressions.py +0 -0
  299. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/workflows/steps/__init__.py +0 -0
  300. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/workflows/steps/command/__init__.py +0 -0
  301. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/workflows/steps/do_while/__init__.py +0 -0
  302. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/workflows/steps/fan_in/__init__.py +0 -0
  303. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/workflows/steps/fan_out/__init__.py +0 -0
  304. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/workflows/steps/gate/__init__.py +0 -0
  305. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/workflows/steps/if_then/__init__.py +0 -0
  306. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/workflows/steps/init/__init__.py +0 -0
  307. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/workflows/steps/prompt/__init__.py +0 -0
  308. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/workflows/steps/shell/__init__.py +0 -0
  309. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/workflows/steps/switch/__init__.py +0 -0
  310. {specify_cli-0.12.1 → specify_cli-0.12.2}/src/specify_cli/workflows/steps/while_loop/__init__.py +0 -0
  311. {specify_cli-0.12.1 → specify_cli-0.12.2}/templates/checklist-template.md +0 -0
  312. {specify_cli-0.12.1 → specify_cli-0.12.2}/templates/commands/analyze.md +0 -0
  313. {specify_cli-0.12.1 → specify_cli-0.12.2}/templates/commands/checklist.md +0 -0
  314. {specify_cli-0.12.1 → specify_cli-0.12.2}/templates/commands/clarify.md +0 -0
  315. {specify_cli-0.12.1 → specify_cli-0.12.2}/templates/commands/constitution.md +0 -0
  316. {specify_cli-0.12.1 → specify_cli-0.12.2}/templates/commands/converge.md +0 -0
  317. {specify_cli-0.12.1 → specify_cli-0.12.2}/templates/commands/implement.md +0 -0
  318. {specify_cli-0.12.1 → specify_cli-0.12.2}/templates/commands/plan.md +0 -0
  319. {specify_cli-0.12.1 → specify_cli-0.12.2}/templates/commands/specify.md +0 -0
  320. {specify_cli-0.12.1 → specify_cli-0.12.2}/templates/commands/tasks.md +0 -0
  321. {specify_cli-0.12.1 → specify_cli-0.12.2}/templates/commands/taskstoissues.md +0 -0
  322. {specify_cli-0.12.1 → specify_cli-0.12.2}/templates/constitution-template.md +0 -0
  323. {specify_cli-0.12.1 → specify_cli-0.12.2}/templates/plan-template.md +0 -0
  324. {specify_cli-0.12.1 → specify_cli-0.12.2}/templates/spec-template.md +0 -0
  325. {specify_cli-0.12.1 → specify_cli-0.12.2}/templates/tasks-template.md +0 -0
  326. {specify_cli-0.12.1 → specify_cli-0.12.2}/templates/vscode-settings.json +0 -0
  327. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/__init__.py +0 -0
  328. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/auth_helpers.py +0 -0
  329. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/bundler_helpers.py +0 -0
  330. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/conftest.py +0 -0
  331. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/contract/test_bundle_cli.py +0 -0
  332. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/contract/test_catalog_schema.py +0 -0
  333. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/contract/test_manifest_schema.py +0 -0
  334. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/extensions/__init__.py +0 -0
  335. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/extensions/bug/__init__.py +0 -0
  336. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/extensions/bug/test_bug_extension.py +0 -0
  337. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/extensions/git/__init__.py +0 -0
  338. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/extensions/git/test_git_extension.py +0 -0
  339. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/extensions/test_agent_context_cli_free.py +0 -0
  340. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/extensions/test_extension_agent_context.py +0 -0
  341. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/extensions/test_update_agent_context_feature_json.py +0 -0
  342. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/hooks/TESTING.md +0 -0
  343. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/hooks/plan.md +0 -0
  344. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/hooks/spec.md +0 -0
  345. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/hooks/tasks.md +0 -0
  346. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/http_helpers.py +0 -0
  347. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integration/test_bundler_catalog_stack.py +0 -0
  348. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integration/test_bundler_init_install.py +0 -0
  349. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integration/test_bundler_install_flow.py +0 -0
  350. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integration/test_bundler_local_install.py +0 -0
  351. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integration/test_bundler_offline.py +0 -0
  352. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integration/test_bundler_security_paths.py +0 -0
  353. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/__init__.py +0 -0
  354. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/conftest.py +0 -0
  355. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_base.py +0 -0
  356. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_cli.py +0 -0
  357. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_extra_args.py +0 -0
  358. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_agy.py +0 -0
  359. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_amp.py +0 -0
  360. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_auggie.py +0 -0
  361. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_base_markdown.py +0 -0
  362. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_base_skills.py +0 -0
  363. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_base_toml.py +0 -0
  364. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_base_yaml.py +0 -0
  365. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_bob.py +0 -0
  366. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_claude.py +0 -0
  367. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_cline.py +0 -0
  368. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_codebuddy.py +0 -0
  369. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_codex.py +0 -0
  370. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_copilot.py +0 -0
  371. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_cursor_agent.py +0 -0
  372. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_firebender.py +0 -0
  373. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_gemini.py +0 -0
  374. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_generic.py +0 -0
  375. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_goose.py +0 -0
  376. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_hermes.py +0 -0
  377. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_junie.py +0 -0
  378. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_kilocode.py +0 -0
  379. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_kimi.py +0 -0
  380. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_kiro_cli.py +0 -0
  381. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_lingma.py +0 -0
  382. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_omp.py +0 -0
  383. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_opencode.py +0 -0
  384. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_pi.py +0 -0
  385. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_qodercli.py +0 -0
  386. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_qwen.py +0 -0
  387. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_roo.py +0 -0
  388. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_rovodev.py +0 -0
  389. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_scaffold.py +0 -0
  390. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_shai.py +0 -0
  391. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_state.py +0 -0
  392. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_subcommand.py +0 -0
  393. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_tabnine.py +0 -0
  394. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_trae.py +0 -0
  395. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_vibe.py +0 -0
  396. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_zcode.py +0 -0
  397. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_integration_zed.py +0 -0
  398. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/integrations/test_manifest.py +0 -0
  399. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/self_upgrade_helpers.py +0 -0
  400. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_authentication.py +0 -0
  401. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_branch_numbering.py +0 -0
  402. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_check_prerequisites_paths_only.py +0 -0
  403. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_check_tool.py +0 -0
  404. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_cli_version.py +0 -0
  405. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_commands_package.py +0 -0
  406. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_console_imports.py +0 -0
  407. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_extension_registration.py +0 -0
  408. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_extension_skills.py +0 -0
  409. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_extension_update_hardening.py +0 -0
  410. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_extensions.py +0 -0
  411. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_github_http.py +0 -0
  412. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_github_workflows.py +0 -0
  413. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_init_dir.py +0 -0
  414. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_live_transient_windows.py +0 -0
  415. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_merge.py +0 -0
  416. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_ps1_encoding.py +0 -0
  417. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_registrar_path_traversal.py +0 -0
  418. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_self_upgrade_detection.py +0 -0
  419. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_self_upgrade_execution.py +0 -0
  420. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_self_upgrade_guidance.py +0 -0
  421. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_self_upgrade_verification.py +0 -0
  422. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_setup_plan_feature_json.py +0 -0
  423. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_setup_plan_no_overwrite.py +0 -0
  424. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_setup_tasks.py +0 -0
  425. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_shared_infra_integrity.py +0 -0
  426. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_timestamp_branches.py +0 -0
  427. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_upgrade.py +0 -0
  428. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_utils.py +0 -0
  429. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_utils_assets_imports.py +0 -0
  430. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_version_imports.py +0 -0
  431. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/test_workflow_run_without_project.py +0 -0
  432. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/unit/test_bundler_adapters.py +0 -0
  433. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/unit/test_bundler_catalog_config.py +0 -0
  434. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/unit/test_bundler_conflict.py +0 -0
  435. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/unit/test_bundler_packager.py +0 -0
  436. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/unit/test_bundler_primitives.py +0 -0
  437. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/unit/test_bundler_records.py +0 -0
  438. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/unit/test_bundler_references.py +0 -0
  439. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/unit/test_bundler_resolver.py +0 -0
  440. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/unit/test_bundler_validator.py +0 -0
  441. {specify_cli-0.12.1 → specify_cli-0.12.2}/tests/unit/test_bundler_versioning.py +0 -0
  442. {specify_cli-0.12.1 → specify_cli-0.12.2}/workflows/ARCHITECTURE.md +0 -0
  443. {specify_cli-0.12.1 → specify_cli-0.12.2}/workflows/PUBLISHING.md +0 -0
  444. {specify_cli-0.12.1 → specify_cli-0.12.2}/workflows/README.md +0 -0
  445. {specify_cli-0.12.1 → specify_cli-0.12.2}/workflows/catalog.community.json +0 -0
  446. {specify_cli-0.12.1 → specify_cli-0.12.2}/workflows/catalog.json +0 -0
  447. {specify_cli-0.12.1 → specify_cli-0.12.2}/workflows/speckit/workflow.yml +0 -0
  448. {specify_cli-0.12.1 → specify_cli-0.12.2}/workflows/step-catalog.community.json +0 -0
  449. {specify_cli-0.12.1 → specify_cli-0.12.2}/workflows/step-catalog.json +0 -0
@@ -8,7 +8,7 @@ body:
8
8
  value: |
9
9
  Thanks for requesting a new agent! Before submitting, please check if the agent is already supported.
10
10
 
11
- **Currently supported agents**: Amp, Antigravity, Auggie CLI, Claude Code, Cline, CodeBuddy, Codex CLI, Cursor, Devin for Terminal, Firebender, Forge, Gemini CLI, GitHub Copilot, Goose, Hermes Agent, IBM Bob, iFlow CLI, Junie, Kilo Code, Kimi Code, Kiro CLI, Lingma, Mistral Vibe, Oh My Pi, opencode, Pi Coding Agent, Qoder CLI, Qwen Code, Roo Code, RovoDev ACLI, SHAI, Tabnine CLI, Trae, Windsurf, ZCode, Zed
11
+ **Currently supported agents**: Amp, Antigravity, Auggie CLI, Claude Code, Cline, CodeBuddy, Codex CLI, Cursor, Devin for Terminal, Firebender, Forge, Gemini CLI, GitHub Copilot, Goose, Hermes Agent, IBM Bob, Junie, Kilo Code, Kimi Code, Kiro CLI, Lingma, Mistral Vibe, Oh My Pi, opencode, Pi Coding Agent, Qoder CLI, Qwen Code, Roo Code, RovoDev ACLI, SHAI, Tabnine CLI, Trae, ZCode, Zed
12
12
 
13
13
  - type: input
14
14
  id: agent-name
@@ -78,7 +78,6 @@ body:
78
78
  - Goose
79
79
  - Hermes Agent
80
80
  - IBM Bob
81
- - iFlow CLI
82
81
  - Junie
83
82
  - Kilo Code
84
83
  - Kimi Code
@@ -95,7 +94,6 @@ body:
95
94
  - SHAI
96
95
  - Tabnine CLI
97
96
  - Trae
98
- - Windsurf
99
97
  - ZCode
100
98
  - Zed
101
99
  - Not applicable
@@ -72,7 +72,6 @@ body:
72
72
  - Goose
73
73
  - Hermes Agent
74
74
  - IBM Bob
75
- - iFlow CLI
76
75
  - Junie
77
76
  - Kilo Code
78
77
  - Kimi Code
@@ -89,7 +88,6 @@ body:
89
88
  - SHAI
90
89
  - Tabnine CLI
91
90
  - Trae
92
- - Windsurf
93
91
  - ZCode
94
92
  - Zed
95
93
  - Not applicable
@@ -54,3 +54,16 @@ jobs:
54
54
  # (notably SC2155). Tighten in a follow-up after cleanup.
55
55
  - name: Run shellcheck on shell scripts
56
56
  run: git ls-files -z -- '*.sh' | xargs -0 shellcheck --severity=error
57
+
58
+ # macOS ships bash 3.2, where bash 4+ case-modification parameter
59
+ # expansions error with "bad substitution". shellcheck assumes bash 4+
60
+ # from the shebang and cannot flag these, so guard explicitly; use tr
61
+ # for portable case conversion.
62
+ - name: Reject bash 4+ case-modification expansions
63
+ run: |
64
+ matches=$(git ls-files -z -- '*.sh' | xargs -0 grep -nE '\$\{[A-Za-z_][A-Za-z0-9_]*(\[[^]]*\])?(\^\^?|,,?|~~?|@[UuLl])[^}]*\}' || true)
65
+ if [ -n "$matches" ]; then
66
+ echo "Found bash 4+ case-modification expansion(s); use tr for portability (macOS ships bash 3.2):"
67
+ echo "$matches"
68
+ exit 1
69
+ fi
@@ -23,7 +23,7 @@ src/specify_cli/integrations/
23
23
  │ └── __init__.py # ClaudeIntegration class
24
24
  ├── gemini/ # Example: TomlIntegration subclass
25
25
  │ └── __init__.py
26
- ├── windsurf/ # Example: MarkdownIntegration subclass
26
+ ├── kilocode/ # Example: MarkdownIntegration subclass
27
27
  │ └── __init__.py
28
28
  ├── copilot/ # Example: IntegrationBase subclass (custom setup)
29
29
  │ └── __init__.py
@@ -52,25 +52,25 @@ Most agents only need `MarkdownIntegration` — a minimal subclass with zero met
52
52
 
53
53
  Create `src/specify_cli/integrations/<package_dir>/__init__.py`, where `<package_dir>` is the Python-safe directory name derived from `<key>`: use the key as-is when it contains no hyphens (e.g., key `"gemini"` → `gemini/`), or replace hyphens with underscores when it does (e.g., key `"kiro-cli"` → `kiro_cli/`). The `IntegrationBase.key` class attribute always retains the original hyphenated value, since that is what the CLI and registry use. For CLI-based integrations (`requires_cli: True`), the `key` should match the actual CLI tool name (the executable users install and run) so CLI checks can resolve it correctly. For IDE-based integrations (`requires_cli: False`), use the canonical integration identifier instead.
54
54
 
55
- **Minimal example — Markdown agent (Windsurf):**
55
+ **Minimal example — Markdown agent (Kilo Code):**
56
56
 
57
57
  ```python
58
- """Windsurf IDE integration."""
58
+ """Kilo Code IDE integration."""
59
59
 
60
60
  from ..base import MarkdownIntegration
61
61
 
62
62
 
63
- class WindsurfIntegration(MarkdownIntegration):
64
- key = "windsurf"
63
+ class KilocodeIntegration(MarkdownIntegration):
64
+ key = "kilocode"
65
65
  config = {
66
- "name": "Windsurf",
67
- "folder": ".windsurf/",
66
+ "name": "Kilo Code",
67
+ "folder": ".kilocode/",
68
68
  "commands_subdir": "workflows",
69
69
  "install_url": None,
70
70
  "requires_cli": False,
71
71
  }
72
72
  registrar_config = {
73
- "dir": ".windsurf/workflows",
73
+ "dir": ".kilocode/workflows",
74
74
  "format": "markdown",
75
75
  "args": "$ARGUMENTS",
76
76
  "extension": ".md",
@@ -148,7 +148,7 @@ class CodexIntegration(SkillsIntegration):
148
148
  | `config` | Class attribute (dict) | Agent metadata: `name`, `folder`, `commands_subdir`, `install_url`, `requires_cli` |
149
149
  | `registrar_config` | Class attribute (dict) | Command output config: `dir`, `format`, `args` placeholder, file `extension` |
150
150
 
151
- **Key design rule:** For CLI-based integrations (`requires_cli: True`), `key` must be the actual executable name (e.g., `"cursor-agent"` not `"cursor"`). This ensures `shutil.which(key)` works for CLI-tool checks without special-case mappings. IDE-based integrations (`requires_cli: False`) should use their canonical identifier (e.g., `"windsurf"`, `"copilot"`).
151
+ **Key design rule:** For CLI-based integrations (`requires_cli: True`), `key` must be the actual executable name (e.g., `"cursor-agent"` not `"cursor"`). This ensures `shutil.which(key)` works for CLI-tool checks without special-case mappings. IDE-based integrations (`requires_cli: False`) should use their canonical identifier (e.g., `"kilocode"`, `"copilot"`).
152
152
 
153
153
  ### 3. Register it
154
154
 
@@ -201,8 +201,8 @@ Only add custom setup logic when the agent needs non-standard behavior. Integrat
201
201
  specify init my-project --integration <key>
202
202
 
203
203
  # Verify files were created in the commands directory configured by
204
- # config["folder"] + config["commands_subdir"] (for example, .windsurf/workflows/)
205
- ls -R my-project/.windsurf/workflows/
204
+ # config["folder"] + config["commands_subdir"] (for example, .kilocode/workflows/)
205
+ ls -R my-project/.kilocode/workflows/
206
206
 
207
207
  # Uninstall cleanly
208
208
  cd my-project && specify integration uninstall <key>
@@ -2,6 +2,22 @@
2
2
 
3
3
  <!-- insert new changelog below this comment -->
4
4
 
5
+ ## [0.12.2] - 2026-06-30
6
+
7
+ ### Changed
8
+
9
+ - fix(scripts): portable uppercase for branch-name acronym retention (bash 3.2) (#3192)
10
+ - chore: retire Windsurf integration — absorbed into Cognition Devin (#3168) (#3213)
11
+ - [extension] Update Intake extension to v0.1.3 (#3254)
12
+ - feat(workflows): honor max_concurrency in fan-out via a bounded thread pool (#3224)
13
+ - Update Architecture Workflow extension to v1.2.2 (#3255)
14
+ - Add Repository Governance extension to community catalog (#3252)
15
+ - Update Workflow Preset to v1.3.11 (#3251)
16
+ - chore: retire iflow integration — product discontinued (#3166) (#3211)
17
+ - docs(codebuddy): fix dead install links and CodeBuddy capitalization (#3172) (#3216)
18
+ - fix: reject host-less catalog URLs in base and preset validators (#3209) (#3227)
19
+ - chore: release 0.12.1, begin 0.12.2.dev0 development (#3253)
20
+
5
21
  ## [0.12.1] - 2026-06-30
6
22
 
7
23
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specify-cli
3
- Version: 0.12.1
3
+ Version: 0.12.2
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
@@ -31,7 +31,7 @@ The following community-contributed extensions are available in [`catalog.commun
31
31
  | API Evolve | Managed API contract evolution — breaking-change detection, semver enforcement, deprecation orchestration, and lifecycle gates across REST, GraphQL, and gRPC | `process` | Read+Write | [spec-kit-api-evolve](https://github.com/Quratulain-bilal/spec-kit-api-evolve) |
32
32
  | Architect Impact Previewer | Predicts architectural impact, complexity, and risks of proposed changes before implementation. | `visibility` | Read-only | [spec-kit-architect-preview](https://github.com/UmmeHabiba1312/spec-kit-architect-preview) |
33
33
  | Architecture Guard | Framework-agnostic architecture review extension for validating implementation against governance and architecture constitutions, detecting architectural drift, and generating non-blocking refactor tasks | `process` | Read+Write | [spec-kit-architecture-guard](https://github.com/DyanGalih/spec-kit-architecture-guard) |
34
- | Architecture Workflow | Generate or reverse project-level 4+1 architecture views as separate commands | `docs` | Read+Write | [spec-kit-arch](https://github.com/bigsmartben/spec-kit-arch) |
34
+ | Architecture Workflow | Generate or reverse project-level 4+1 architecture views with per-view and full-workflow commands | `docs` | Read+Write | [spec-kit-arch](https://github.com/bigsmartben/spec-kit-arch) |
35
35
  | Archive Extension | Archive merged features into main project memory. | `docs` | Read+Write | [spec-kit-archive](https://github.com/stn1slv/spec-kit-archive) |
36
36
  | Azure DevOps Integration | Sync user stories and tasks to Azure DevOps work items using OAuth authentication | `integration` | Read+Write | [spec-kit-azure-devops](https://github.com/pragya247/spec-kit-azure-devops) |
37
37
  | Blueprint | Stay code-literate in AI-driven development: review a complete code blueprint for every task from spec artifacts before /speckit.implement runs | `docs` | Read+Write | [spec-kit-blueprint](https://github.com/chordpli/spec-kit-blueprint) |
@@ -58,7 +58,7 @@ The following community-contributed extensions are available in [`catalog.commun
58
58
  | GitHub Issues Integration 2 | Creates and syncs local specs from an existing GitHub issue | `integration` | Read+Write | [spec-kit-issue](https://github.com/aaronrsun/spec-kit-issue) |
59
59
  | Golden Demo | Extracts acceptance criteria from specs, builds test vectors, and produces a behavioral drift report — complementary to Architecture Guard and CDD | `docs` | Read+Write | [spec-kit-golden-demo](https://github.com/jasstt/spec-kit-golden-demo) |
60
60
  | Improve Extension | Audits any codebase as a senior advisor and writes prioritized, self-contained spec prompts under specs/ that the spec-kit lifecycle can process | `process` | Read+Write | [spec-kit-improve](https://github.com/d0whc3r/spec-kit-improve) |
61
- | Intake | Normalize PRD, design, and test-case evidence into SDD-ready intake artifacts | `docs` | Read+Write | [spec-kit-intake](https://github.com/bigsmartben/spec-kit-intake) |
61
+ | Intake | Normalize PRD, design, HTML SSOT, and test-case evidence into SDD-ready intake artifacts. | `docs` | Read+Write | [spec-kit-intake](https://github.com/bigsmartben/spec-kit-intake) |
62
62
  | Intelligent Agent Orchestrator | Cross-catalog agent discovery and intelligent prompt-to-command routing | `process` | Read+Write | [spec-kit-orchestrator](https://github.com/pragya247/spec-kit-orchestrator) |
63
63
  | Iterate | Iterate on spec documents with a two-phase define-and-apply workflow — refine specs mid-implementation and go straight back to building | `docs` | Read+Write | [spec-kit-iterate](https://github.com/imviancagrace/spec-kit-iterate) |
64
64
  | Jira Integration | Create Jira Epics, Stories, and Issues from spec-kit specifications and task breakdowns with configurable hierarchy and custom field support | `integration` | Read+Write | [spec-kit-jira](https://github.com/mbachorik/spec-kit-jira) |
@@ -98,6 +98,7 @@ The following community-contributed extensions are available in [`catalog.commun
98
98
  | Reconcile Extension | Reconcile implementation drift by surgically updating feature artifacts. | `docs` | Read+Write | [spec-kit-reconcile](https://github.com/stn1slv/spec-kit-reconcile) |
99
99
  | Red Team | Adversarial review of specs before /speckit.plan — parallel lens agents surface risks that clarify/analyze structurally can't (prompt injection, integrity gaps, cross-spec drift, silent failures). Produces a structured findings report; no auto-edits to specs. | `docs` | Read+Write | [spec-kit-red-team](https://github.com/ashbrener/spec-kit-red-team) |
100
100
  | Research Harness | State-externalizing research harness: budgeted exploration, evidence curation, and claim verification for spec-driven development | `process` | Read+Write | [spec-kit-harness](https://github.com/formin/spec-kit-harness) |
101
+ | Repository Governance | Generate project-governance projections from Spec Kit metadata | `process` | Read+Write | [spec-kit-agent-governance](https://github.com/bigsmartben/spec-kit-agent-governance) |
101
102
  | Repository Index | Generate index for existing repo for overview, architecture and module level. | `docs` | Read-only | [spec-kit-repoindex](https://github.com/liuyiyu/spec-kit-repoindex) |
102
103
  | Reqnroll BDD | Adds Reqnroll BDD planning, Gherkin generation, traceability, safe task injection, handoff, and verification to Spec Kit | `process` | Read+Write | [spec-kit-reqnroll-bdd](https://github.com/LoogacyStudio/spec-kit-reqnroll-bdd) |
103
104
  | Retro Extension | Sprint retrospective analysis with metrics, spec accuracy assessment, and improvement suggestions | `process` | Read+Write | [spec-kit-retro](https://github.com/arunt14/spec-kit-retro) |
@@ -31,7 +31,7 @@ Define what to build before building it. Rich templates, quality checklists, and
31
31
 
32
32
  ### Use any coding agent
33
33
 
34
- <span class="pillar-stat">30+ integrations</span> — Copilot, Gemini, Codex, Windsurf, Zed, Claude, Forge, Kiro, and more. Switch freely between agents with a single command. No lock-in.
34
+ <span class="pillar-stat">30+ integrations</span> — Copilot, Gemini, Codex, Kilo Code, Zed, Claude, Forge, Kiro, and more. Switch freely between agents with a single command. No lock-in.
35
35
 
36
36
  Run `specify init` with your agent of choice and Spec Kit sets up the right command files, context rules, and directory structures automatically. If your agent isn't listed, the `generic` integration is an escape hatch for any tool.
37
37
 
@@ -3,7 +3,7 @@
3
3
  ## Prerequisites
4
4
 
5
5
  - **Linux/macOS** (or Windows; PowerShell scripts now supported without WSL)
6
- - AI coding agent: [Claude Code](https://www.anthropic.com/claude-code), [GitHub Copilot](https://code.visualstudio.com/), [Codebuddy CLI](https://www.codebuddy.ai/cli), [Gemini CLI](https://github.com/google-gemini/gemini-cli), [Pi Coding Agent](https://pi.dev), or [Oh My Pi](https://www.npmjs.com/package/@oh-my-pi/pi-coding-agent)
6
+ - AI coding agent: [Claude Code](https://www.anthropic.com/claude-code), [GitHub Copilot](https://code.visualstudio.com/), [CodeBuddy CLI](https://www.codebuddy.cn/docs/cli/installation), [Gemini CLI](https://github.com/google-gemini/gemini-cli), [Pi Coding Agent](https://pi.dev), or [Oh My Pi](https://www.npmjs.com/package/@oh-my-pi/pi-coding-agent)
7
7
  - [uv](https://docs.astral.sh/uv/) for package management (recommended) or [pipx](https://pipx.pypa.io/) for persistent installation
8
8
  - [Python 3.11+](https://www.python.org/downloads/)
9
9
  - [Git](https://git-scm.com/downloads) _(optional — required only when the git extension is enabled)_
@@ -11,7 +11,7 @@ The Specify CLI supports a wide range of AI coding agents. When you run `specify
11
11
  | [Auggie CLI](https://docs.augmentcode.com/cli/overview) | `auggie` | |
12
12
  | [Claude Code](https://www.anthropic.com/claude-code) | `claude` | Skills-based integration; installs skills in `.claude/skills` |
13
13
  | [Cline](https://github.com/cline/cline) | `cline` | IDE-based agent |
14
- | [CodeBuddy CLI](https://www.codebuddy.ai/cli) | `codebuddy` | |
14
+ | [CodeBuddy CLI](https://www.codebuddy.cn/docs/cli/installation) | `codebuddy` | |
15
15
  | [Codex CLI](https://github.com/openai/codex) | `codex` | Skills-based integration; installs skills into `.agents/skills` and invokes them as `$speckit-<command>` |
16
16
  | [Cursor](https://cursor.sh/) | `cursor-agent` | |
17
17
  | [Devin for Terminal](https://cli.devin.ai/docs) | `devin` | Skills-based integration; installs skills into `.devin/skills/` and invokes them as `/speckit-<command>` |
@@ -22,7 +22,6 @@ The Specify CLI supports a wide range of AI coding agents. When you run `specify
22
22
  | [Goose](https://goose-docs.ai/) | `goose` | Uses YAML recipe format in `.goose/recipes/` |
23
23
  | [Hermes](https://github.com/NousResearch/hermes-agent) | `hermes` | Skills-based integration; installs skills globally into `~/.hermes/skills/` |
24
24
  | [IBM Bob](https://www.ibm.com/products/bob) | `bob` | IDE-based agent |
25
- | [iFlow CLI](https://docs.iflow.cn/en/cli/quickstart) | `iflow` | |
26
25
  | [Junie](https://junie.jetbrains.com/) | `junie` | |
27
26
  | [Kilo Code](https://github.com/Kilo-Org/kilocode) | `kilocode` | |
28
27
  | [Kimi Code](https://code.kimi.com/) | `kimi` | Skills-based integration; installs into `.kimi-code/skills/`. `--migrate-legacy` moves old `.kimi/skills/` installs to the new paths, and (when the `agent-context` extension is enabled) migrates `KIMI.md` context into `AGENTS.md` |
@@ -39,7 +38,6 @@ The Specify CLI supports a wide range of AI coding agents. When you run `specify
39
38
  | [SHAI (OVHcloud)](https://github.com/ovh/shai) | `shai` | |
40
39
  | [Tabnine CLI](https://docs.tabnine.com/main/getting-started/tabnine-cli) | `tabnine` | |
41
40
  | [Trae](https://www.trae.ai/) | `trae` | Skills-based integration; skills are installed automatically |
42
- | [Windsurf](https://windsurf.com/) | `windsurf` | |
43
41
  | [ZCode](https://zcode.z.ai/) | `zcode` | Skills-based integration; installs skills into `.zcode/skills/` and invokes them as `$speckit-<command>` |
44
42
  | [Zed](https://zed.dev/) | `zed` | Skills-based integration; installs skills into `.agents/skills` and invokes them as `/speckit-<command>` |
45
43
  | Generic | `generic` | Bring your own agent — use `--integration generic --integration-options="--commands-dir <path>"` for AI coding agents not listed above |
@@ -265,7 +263,6 @@ The currently declared multi-install safe integrations are:
265
263
  | `cursor-agent` | `.cursor/skills`, `.cursor/rules/specify-rules.mdc` |
266
264
  | `firebender` | `.firebender/commands`, `.firebender/rules/specify-rules.mdc` |
267
265
  | `gemini` | `.gemini/commands`, `GEMINI.md` |
268
- | `iflow` | `.iflow/commands`, `IFLOW.md` |
269
266
  | `junie` | `.junie/commands`, `.junie/AGENTS.md` |
270
267
  | `kilocode` | `.kilocode/workflows`, `.kilocode/rules/specify-rules.md` |
271
268
  | `qodercli` | `.qoder/commands`, `QODER.md` |
@@ -274,7 +271,6 @@ The currently declared multi-install safe integrations are:
274
271
  | `shai` | `.shai/commands`, `SHAI.md` |
275
272
  | `tabnine` | `.tabnine/agent/commands`, `TABNINE.md` |
276
273
  | `trae` | `.trae/skills`, `.trae/rules/project_rules.md` |
277
- | `windsurf` | `.windsurf/workflows`, `.windsurf/rules/specify-rules.md` |
278
274
  | `zcode` | `.zcode/skills`, `ZCODE.md` |
279
275
 
280
276
  Integrations that share a context file or 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`.
@@ -289,7 +285,7 @@ Run `specify integration list` to see all available integrations with their keys
289
285
 
290
286
  ### Do I need the AI coding agent installed to use an integration?
291
287
 
292
- CLI-based integrations (like Claude Code, Gemini CLI) require the tool to be installed. IDE-based integrations (like Windsurf, Cursor) work through the IDE itself. Some agents like GitHub Copilot support both IDE and CLI usage. `specify integration list` shows which type each integration is.
288
+ CLI-based integrations (like Claude Code, Gemini CLI) require the tool to be installed. IDE-based integrations (like Cursor) work through the IDE itself. Some agents like GitHub Copilot support both IDE and CLI usage. `specify integration list` shows which type each integration is.
293
289
 
294
290
  ### When should I use `upgrade` vs `switch`?
295
291
 
@@ -185,7 +185,7 @@ cp -r .specify/scripts .specify/scripts-backup
185
185
 
186
186
  ### 3. Duplicate slash commands (IDE-based agents)
187
187
 
188
- Some IDE-based agents (like Kilo Code, Windsurf) may show **duplicate slash commands** after upgrading—both old and new versions appear.
188
+ Some IDE-based agents (like Kilo Code, Roo Code) may show **duplicate slash commands** after upgrading—both old and new versions appear.
189
189
 
190
190
  **Solution:** Manually delete the old command files from your agent's folder.
191
191
 
@@ -193,7 +193,7 @@ Some IDE-based agents (like Kilo Code, Windsurf) may show **duplicate slash comm
193
193
 
194
194
  ```bash
195
195
  # Navigate to the agent's commands folder
196
- cd .kilocode/rules/
196
+ cd .kilocode/workflows/
197
197
 
198
198
  # List files and identify duplicates
199
199
  ls -la
@@ -242,11 +242,11 @@ mv /tmp/constitution-backup.md .specify/memory/constitution.md
242
242
 
243
243
  ### Scenario 3: "I see duplicate slash commands in my IDE"
244
244
 
245
- This happens with IDE-based agents (Kilo Code, Windsurf, Roo Code, etc.).
245
+ This happens with IDE-based agents (Kilo Code, Roo Code, Cline, etc.).
246
246
 
247
247
  ```bash
248
- # Find the agent folder (example: .kilocode/rules/)
249
- cd .kilocode/rules/
248
+ # Find the agent folder (example: .kilocode/workflows/)
249
+ cd .kilocode/workflows/
250
250
 
251
251
  # List all files
252
252
  ls -la
@@ -18,7 +18,6 @@
18
18
  "generic": "AGENTS.md",
19
19
  "goose": "AGENTS.md",
20
20
  "hermes": "AGENTS.md",
21
- "iflow": "IFLOW.md",
22
21
  "junie": ".junie/AGENTS.md",
23
22
  "kilocode": ".kilocode/rules/specify-rules.md",
24
23
  "kimi": "AGENTS.md",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema_version": "1.0",
3
- "updated_at": "2026-06-29T00:00:00Z",
3
+ "updated_at": "2026-06-30T00:00:00Z",
4
4
  "catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/extensions/catalog.community.json",
5
5
  "extensions": {
6
6
  "aide": {
@@ -187,10 +187,10 @@
187
187
  "arch": {
188
188
  "name": "Architecture Workflow",
189
189
  "id": "arch",
190
- "description": "Generate or reverse project-level 4+1 architecture views as separate commands",
190
+ "description": "Generate or reverse project-level 4+1 architecture views with per-view and full-workflow commands",
191
191
  "author": "bigsmartben",
192
- "version": "1.2.1",
193
- "download_url": "https://github.com/bigsmartben/spec-kit-arch/archive/refs/tags/v1.2.1.zip",
192
+ "version": "1.2.2",
193
+ "download_url": "https://github.com/bigsmartben/spec-kit-arch/archive/refs/tags/v1.2.2.zip",
194
194
  "repository": "https://github.com/bigsmartben/spec-kit-arch",
195
195
  "homepage": "https://github.com/bigsmartben/spec-kit-arch",
196
196
  "documentation": "https://github.com/bigsmartben/spec-kit-arch/blob/main/README.md",
@@ -202,7 +202,7 @@
202
202
  "speckit_version": ">=0.8.10.dev0"
203
203
  },
204
204
  "provides": {
205
- "commands": 10,
205
+ "commands": 12,
206
206
  "hooks": 0
207
207
  },
208
208
  "tags": [
@@ -215,7 +215,7 @@
215
215
  "downloads": 0,
216
216
  "stars": 0,
217
217
  "created_at": "2026-05-14T00:00:00Z",
218
- "updated_at": "2026-06-23T00:00:00Z"
218
+ "updated_at": "2026-06-30T00:00:00Z"
219
219
  },
220
220
  "architect-preview": {
221
221
  "name": "Architect Impact Previewer",
@@ -1440,10 +1440,10 @@
1440
1440
  "intake": {
1441
1441
  "name": "Intake",
1442
1442
  "id": "intake",
1443
- "description": "Normalize PRD, design, and test-case evidence into SDD-ready intake artifacts.",
1443
+ "description": "Normalize PRD, design, HTML SSOT, and test-case evidence into SDD-ready intake artifacts.",
1444
1444
  "author": "bigsmartben",
1445
- "version": "0.1.2",
1446
- "download_url": "https://github.com/bigsmartben/spec-kit-intake/archive/refs/tags/v0.1.2.zip",
1445
+ "version": "0.1.3",
1446
+ "download_url": "https://github.com/bigsmartben/spec-kit-intake/archive/refs/tags/v0.1.3.zip",
1447
1447
  "repository": "https://github.com/bigsmartben/spec-kit-intake",
1448
1448
  "homepage": "https://github.com/bigsmartben/spec-kit-intake",
1449
1449
  "documentation": "https://github.com/bigsmartben/spec-kit-intake/blob/main/README.md",
@@ -1461,7 +1461,7 @@
1461
1461
  ]
1462
1462
  },
1463
1463
  "provides": {
1464
- "commands": 3,
1464
+ "commands": 4,
1465
1465
  "hooks": 1
1466
1466
  },
1467
1467
  "tags": [
@@ -1475,7 +1475,7 @@
1475
1475
  "downloads": 0,
1476
1476
  "stars": 0,
1477
1477
  "created_at": "2026-06-23T00:00:00Z",
1478
- "updated_at": "2026-06-23T00:00:00Z"
1478
+ "updated_at": "2026-06-30T00:00:00Z"
1479
1479
  },
1480
1480
  "issue": {
1481
1481
  "name": "GitHub Issues Integration 2",
@@ -2828,6 +2828,46 @@
2828
2828
  "created_at": "2026-03-23T13:30:00Z",
2829
2829
  "updated_at": "2026-03-23T13:30:00Z"
2830
2830
  },
2831
+ "repository-governance": {
2832
+ "name": "Repository Governance",
2833
+ "id": "repository-governance",
2834
+ "description": "Generate project-governance projections from Spec Kit metadata",
2835
+ "author": "bigben",
2836
+ "version": "3.0.1",
2837
+ "download_url": "https://github.com/bigsmartben/spec-kit-agent-governance/releases/download/v3.0.1/repository-governance-v3.0.1.zip",
2838
+ "repository": "https://github.com/bigsmartben/spec-kit-agent-governance",
2839
+ "homepage": "https://github.com/bigsmartben/spec-kit-agent-governance",
2840
+ "documentation": "https://github.com/bigsmartben/spec-kit-agent-governance/blob/main/README.md",
2841
+ "changelog": "https://github.com/bigsmartben/spec-kit-agent-governance/blob/main/CHANGELOG.md",
2842
+ "license": "MIT",
2843
+ "category": "process",
2844
+ "effect": "read-write",
2845
+ "requires": {
2846
+ "speckit_version": ">=0.8.0",
2847
+ "tools": [
2848
+ {
2849
+ "name": "uv",
2850
+ "required": true
2851
+ }
2852
+ ]
2853
+ },
2854
+ "provides": {
2855
+ "commands": 1,
2856
+ "hooks": 3
2857
+ },
2858
+ "tags": [
2859
+ "governance",
2860
+ "repository",
2861
+ "agents",
2862
+ "memory",
2863
+ "context"
2864
+ ],
2865
+ "verified": false,
2866
+ "downloads": 0,
2867
+ "stars": 0,
2868
+ "created_at": "2026-06-30T00:00:00Z",
2869
+ "updated_at": "2026-06-30T00:00:00Z"
2870
+ },
2831
2871
  "reqnroll-bdd": {
2832
2872
  "name": "Reqnroll BDD",
2833
2873
  "id": "reqnroll-bdd",
@@ -280,7 +280,7 @@ generate_branch_name() {
280
280
 
281
281
  local stop_words="^(i|a|an|the|to|for|of|in|on|at|by|with|from|is|are|was|were|be|been|being|have|has|had|do|does|did|will|would|should|could|can|may|might|must|shall|this|that|these|those|my|your|our|their|want|need|add|get|set)$"
282
282
 
283
- local clean_name=$(echo "$description" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/ /g')
283
+ local clean_name=$(printf '%s' "$description" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/ /g')
284
284
 
285
285
  local meaningful_words=()
286
286
  for word in $clean_name; do
@@ -288,6 +288,8 @@ generate_branch_name() {
288
288
  if ! echo "$word" | grep -qiE "$stop_words"; then
289
289
  if [ ${#word} -ge 3 ]; then
290
290
  meaningful_words+=("$word")
291
+ # Uppercase via tr (portable) rather than bash's 4+ "^^" case
292
+ # expansion, which breaks on macOS's default bash 3.2 (bad substitution).
291
293
  elif printf '%s' "$description" | grep -qw -- "$(printf '%s' "$word" | tr '[:lower:]' '[:upper:]')"; then
292
294
  meaningful_words+=("$word")
293
295
  fi
@@ -253,9 +253,10 @@ function Get-BranchName {
253
253
  if ($word.Length -ge 3) {
254
254
  $meaningfulWords += $word
255
255
  } elseif ($Description -cmatch "\b$($word.ToUpper())\b") {
256
- # Case-sensitive (-cmatch) to mirror the bash twin's `grep -qw -- "${word^^}"`:
257
- # keep a short word only when its UPPERCASE form appears in the original
258
- # (an acronym). -match is case-insensitive and would keep every short word.
256
+ # Case-sensitive (-cmatch) to mirror the bash twin's case-sensitive
257
+ # whole-word acronym match: keep a short word only when its UPPERCASE
258
+ # form appears in the original (an acronym). -match is case-insensitive
259
+ # and would keep every short word.
259
260
  $meaningfulWords += $word
260
261
  }
261
262
  }
@@ -48,15 +48,6 @@
48
48
  "repository": "https://github.com/github/spec-kit",
49
49
  "tags": ["ide"]
50
50
  },
51
- "windsurf": {
52
- "id": "windsurf",
53
- "name": "Windsurf",
54
- "version": "1.0.0",
55
- "description": "Windsurf IDE workflow integration",
56
- "author": "spec-kit-core",
57
- "repository": "https://github.com/github/spec-kit",
58
- "tags": ["ide"]
59
- },
60
51
  "amp": {
61
52
  "id": "amp",
62
53
  "name": "Amp",
@@ -264,15 +255,6 @@
264
255
  "repository": "https://github.com/github/spec-kit",
265
256
  "tags": ["cli"]
266
257
  },
267
- "iflow": {
268
- "id": "iflow",
269
- "name": "iFlow CLI",
270
- "version": "1.0.0",
271
- "description": "iFlow CLI integration by iflow-ai",
272
- "author": "spec-kit-core",
273
- "repository": "https://github.com/github/spec-kit",
274
- "tags": ["cli"]
275
- },
276
258
  "vibe": {
277
259
  "id": "vibe",
278
260
  "name": "Mistral Vibe",
@@ -99,7 +99,7 @@ The `CommandRegistrar` renders commands differently per agent:
99
99
 
100
100
  | Agent | Format | Extension | Arg placeholder |
101
101
  |-------|--------|-----------|-----------------|
102
- | Claude, Cursor, opencode, Windsurf, etc. | Markdown | `.md` | `$ARGUMENTS` |
102
+ | Claude, Kilo Code, opencode, Roo Code, etc. | Markdown | `.md` | `$ARGUMENTS` |
103
103
  | Copilot | Markdown | `.agent.md` + `.prompt.md` | `$ARGUMENTS` |
104
104
  | Gemini, Qwen, Tabnine | TOML | `.toml` | `{{args}}` |
105
105
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema_version": "1.0",
3
- "updated_at": "2026-06-25T00:00:00Z",
3
+ "updated_at": "2026-06-30T00:00:00Z",
4
4
  "catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/presets/catalog.community.json",
5
5
  "presets": {
6
6
  "a11y-governance": {
@@ -670,11 +670,11 @@
670
670
  "workflow-preset": {
671
671
  "name": "Workflow Preset",
672
672
  "id": "workflow-preset",
673
- "version": "1.3.2",
674
- "description": "Behavior-first specification, design artifacts, and agent-native handoff orchestration.",
673
+ "version": "1.3.11",
674
+ "description": "Behavior-first specification, design artifacts, and agent-native handoff orchestration",
675
675
  "author": "bigsmartben",
676
676
  "repository": "https://github.com/bigsmartben/spec-kit-workflow-preset",
677
- "download_url": "https://github.com/bigsmartben/spec-kit-workflow-preset/releases/download/v1.3.2/spec-kit-workflow-preset-v1.3.2.zip",
677
+ "download_url": "https://github.com/bigsmartben/spec-kit-workflow-preset/releases/download/v1.3.11/spec-kit-workflow-preset-v1.3.11.zip",
678
678
  "homepage": "https://github.com/bigsmartben/spec-kit-workflow-preset",
679
679
  "documentation": "https://github.com/bigsmartben/spec-kit-workflow-preset/blob/main/README.md",
680
680
  "license": "MIT",
@@ -693,7 +693,7 @@
693
693
  "handoff"
694
694
  ],
695
695
  "created_at": "2026-05-27T00:00:00Z",
696
- "updated_at": "2026-06-03T00:00:00Z"
696
+ "updated_at": "2026-06-30T00:00:00Z"
697
697
  }
698
698
  }
699
699
  }
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "specify-cli"
3
- version = "0.12.1"
3
+ version = "0.12.2"
4
4
  description = "Specify CLI, part of GitHub Spec Kit. A tool to bootstrap your projects for Spec-Driven Development (SDD)."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -140,7 +140,7 @@ generate_branch_name() {
140
140
  local stop_words="^(i|a|an|the|to|for|of|in|on|at|by|with|from|is|are|was|were|be|been|being|have|has|had|do|does|did|will|would|should|could|can|may|might|must|shall|this|that|these|those|my|your|our|their|want|need|add|get|set)$"
141
141
 
142
142
  # Convert to lowercase and split into words
143
- local clean_name=$(echo "$description" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/ /g')
143
+ local clean_name=$(printf '%s' "$description" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/ /g')
144
144
 
145
145
  # Filter words: remove stop words and words shorter than 3 chars (unless they're uppercase acronyms in original)
146
146
  local meaningful_words=()
@@ -152,8 +152,10 @@ generate_branch_name() {
152
152
  if ! echo "$word" | grep -qiE "$stop_words"; then
153
153
  if [ ${#word} -ge 3 ]; then
154
154
  meaningful_words+=("$word")
155
+ # Keep short words that appear as an uppercase acronym in the original.
156
+ # Uppercase via tr and match with grep -w (both portable) rather than
157
+ # bash's 4+ "^^" case expansion (breaks on macOS bash 3.2) and \b (non-POSIX).
155
158
  elif printf '%s' "$description" | grep -qw -- "$(printf '%s' "$word" | tr '[:lower:]' '[:upper:]')"; then
156
- # Keep short words if they appear as uppercase in original (likely acronyms)
157
159
  meaningful_words+=("$word")
158
160
  fi
159
161
  fi
@@ -80,7 +80,7 @@ class CatalogStackBase:
80
80
  )
81
81
  # Check hostname, not netloc: netloc is truthy for host-less URLs like
82
82
  # "https://:8080" or "https://user@", so the host guarantee this error
83
- # promises would not actually hold. hostname is None in those cases.
83
+ # promises would not actually hold. hostname is None in those cases (#3209).
84
84
  if not parsed.hostname:
85
85
  raise cls._error("Catalog URL must be a valid URL with a host.")
86
86
 
@@ -64,7 +64,6 @@ def _register_builtins() -> None:
64
64
  from .generic import GenericIntegration
65
65
  from .goose import GooseIntegration
66
66
  from .hermes import HermesIntegration
67
- from .iflow import IflowIntegration
68
67
  from .junie import JunieIntegration
69
68
  from .kilocode import KilocodeIntegration
70
69
  from .kimi import KimiIntegration
@@ -81,7 +80,6 @@ def _register_builtins() -> None:
81
80
  from .tabnine import TabnineIntegration
82
81
  from .trae import TraeIntegration
83
82
  from .vibe import VibeIntegration
84
- from .windsurf import WindsurfIntegration
85
83
  from .zcode import ZcodeIntegration
86
84
  from .zed import ZedIntegration
87
85
 
@@ -103,7 +101,6 @@ def _register_builtins() -> None:
103
101
  _register(GenericIntegration())
104
102
  _register(GooseIntegration())
105
103
  _register(HermesIntegration())
106
- _register(IflowIntegration())
107
104
  _register(JunieIntegration())
108
105
  _register(KilocodeIntegration())
109
106
  _register(KimiIntegration())
@@ -120,7 +117,6 @@ def _register_builtins() -> None:
120
117
  _register(TabnineIntegration())
121
118
  _register(TraeIntegration())
122
119
  _register(VibeIntegration())
123
- _register(WindsurfIntegration())
124
120
  _register(ZcodeIntegration())
125
121
  _register(ZedIntegration())
126
122
 
@@ -1863,7 +1863,7 @@ class PresetCatalog:
1863
1863
  )
1864
1864
  # Check hostname, not netloc: netloc is truthy for host-less URLs like
1865
1865
  # "https://:8080" or "https://user@", so the host guarantee this error
1866
- # promises would not actually hold. hostname is None in those cases.
1866
+ # promises would not actually hold. hostname is None in those cases (#3209).
1867
1867
  if not parsed.hostname:
1868
1868
  raise PresetValidationError(
1869
1869
  "Catalog URL must be a valid URL with a host."