specify-cli 0.12.14__tar.gz → 0.12.16__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 (468) hide show
  1. {specify_cli-0.12.14 → specify_cli-0.12.16}/CHANGELOG.md +30 -0
  2. {specify_cli-0.12.14 → specify_cli-0.12.16}/PKG-INFO +7 -1
  3. {specify_cli-0.12.14 → specify_cli-0.12.16}/README.md +6 -0
  4. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/community/extensions.md +3 -1
  5. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/community/presets.md +1 -1
  6. specify_cli-0.12.16/docs/install/pypi.md +83 -0
  7. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/installation.md +27 -4
  8. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/reference/workflows.md +36 -3
  9. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/toc.yml +2 -0
  10. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/catalog.community.json +98 -8
  11. specify_cli-0.12.16/extensions/git/scripts/python/auto_commit.py +187 -0
  12. specify_cli-0.12.16/extensions/git/scripts/python/create_new_feature_branch.py +634 -0
  13. specify_cli-0.12.16/extensions/git/scripts/python/git_common.py +81 -0
  14. specify_cli-0.12.16/extensions/git/scripts/python/initialize_repo.py +89 -0
  15. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/catalog.community.json +8 -7
  16. {specify_cli-0.12.14 → specify_cli-0.12.16}/pyproject.toml +1 -1
  17. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/_github_http.py +30 -5
  18. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/_init_options.py +1 -1
  19. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/lib/yamlio.py +50 -2
  20. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/services/installer.py +32 -10
  21. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/commands/init.py +27 -15
  22. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/extensions/__init__.py +65 -1
  23. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/base.py +31 -3
  24. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/presets/__init__.py +212 -1
  25. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/presets/_commands.py +9 -0
  26. specify_cli-0.12.16/src/specify_cli/workflows/_commands.py +3153 -0
  27. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/workflows/base.py +3 -0
  28. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/workflows/catalog.py +215 -30
  29. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/workflows/engine.py +135 -9
  30. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/workflows/expressions.py +46 -5
  31. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/workflows/steps/do_while/__init__.py +24 -0
  32. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/workflows/steps/shell/__init__.py +9 -0
  33. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/workflows/steps/while_loop/__init__.py +26 -0
  34. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/contract/test_bundle_cli.py +39 -11
  35. specify_cli-0.12.16/tests/extensions/git/test_git_extension_python_parity.py +647 -0
  36. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integration/test_bundler_install_flow.py +208 -2
  37. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_cli.py +12 -0
  38. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_base_markdown.py +1 -0
  39. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_base_skills.py +1 -0
  40. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_base_toml.py +1 -0
  41. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_base_yaml.py +31 -0
  42. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_cline.py +1 -0
  43. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_copilot.py +3 -0
  44. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_generic.py +2 -0
  45. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_extensions.py +132 -0
  46. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_github_http.py +38 -0
  47. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_presets.py +690 -44
  48. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_workflows.py +5499 -59
  49. {specify_cli-0.12.14 → specify_cli-0.12.16}/workflows/README.md +7 -0
  50. specify_cli-0.12.14/src/specify_cli/workflows/_commands.py +0 -1729
  51. {specify_cli-0.12.14 → specify_cli-0.12.16}/.devcontainer/devcontainer.json +0 -0
  52. {specify_cli-0.12.14 → specify_cli-0.12.16}/.devcontainer/post-create.sh +0 -0
  53. {specify_cli-0.12.14 → specify_cli-0.12.16}/.editorconfig +0 -0
  54. {specify_cli-0.12.14 → specify_cli-0.12.16}/.gitattributes +0 -0
  55. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/CODEOWNERS +0 -0
  56. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/ISSUE_TEMPLATE/agent_request.yml +0 -0
  57. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  58. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/ISSUE_TEMPLATE/bundle_submission.yml +0 -0
  59. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  60. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
  61. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  62. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/ISSUE_TEMPLATE/preset_submission.yml +0 -0
  63. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  64. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/aw/actions-lock.json +0 -0
  65. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/dependabot.yml +0 -0
  66. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/skills/add-community-extension/SKILL.md +0 -0
  67. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/RELEASE-PROCESS.md +0 -0
  68. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/add-community-extension.lock.yml +0 -0
  69. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/add-community-extension.md +0 -0
  70. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/add-community-preset.lock.yml +0 -0
  71. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/add-community-preset.md +0 -0
  72. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/bug-assess.lock.yml +0 -0
  73. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/bug-assess.md +0 -0
  74. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/bug-fix.lock.yml +0 -0
  75. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/bug-fix.md +0 -0
  76. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/bug-test.lock.yml +0 -0
  77. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/bug-test.md +0 -0
  78. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/catalog-assign.yml +0 -0
  79. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/codeql.yml +0 -0
  80. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/docs.yml +0 -0
  81. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/lint.yml +0 -0
  82. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/publish-pypi.yml +0 -0
  83. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/release-trigger.yml +0 -0
  84. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/release.yml +0 -0
  85. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/stale.yml +0 -0
  86. {specify_cli-0.12.14 → specify_cli-0.12.16}/.github/workflows/test.yml +0 -0
  87. {specify_cli-0.12.14 → specify_cli-0.12.16}/.gitignore +0 -0
  88. {specify_cli-0.12.14 → specify_cli-0.12.16}/.markdownlint-cli2.jsonc +0 -0
  89. {specify_cli-0.12.14 → specify_cli-0.12.16}/.pre-commit-config.yaml +0 -0
  90. {specify_cli-0.12.14 → specify_cli-0.12.16}/.zenodo.json +0 -0
  91. {specify_cli-0.12.14 → specify_cli-0.12.16}/AGENTS.md +0 -0
  92. {specify_cli-0.12.14 → specify_cli-0.12.16}/CITATION.cff +0 -0
  93. {specify_cli-0.12.14 → specify_cli-0.12.16}/CODE_OF_CONDUCT.md +0 -0
  94. {specify_cli-0.12.14 → specify_cli-0.12.16}/CONTRIBUTING.md +0 -0
  95. {specify_cli-0.12.14 → specify_cli-0.12.16}/DEVELOPMENT.md +0 -0
  96. {specify_cli-0.12.14 → specify_cli-0.12.16}/LICENSE +0 -0
  97. {specify_cli-0.12.14 → specify_cli-0.12.16}/SECURITY.md +0 -0
  98. {specify_cli-0.12.14 → specify_cli-0.12.16}/SUPPORT.md +0 -0
  99. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/.gitignore +0 -0
  100. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/README.md +0 -0
  101. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/community/bundles.md +0 -0
  102. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/community/friends.md +0 -0
  103. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/community/overview.md +0 -0
  104. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/community/walkthroughs.md +0 -0
  105. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/concepts/complex-features.md +0 -0
  106. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/concepts/sdd.md +0 -0
  107. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/concepts/spec-persistence.md +0 -0
  108. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/docfx.json +0 -0
  109. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/guides/evolving-specs.md +0 -0
  110. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/guides/monorepo.md +0 -0
  111. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/index.md +0 -0
  112. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/install/air-gapped.md +0 -0
  113. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/install/one-time.md +0 -0
  114. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/install/pipx.md +0 -0
  115. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/install/uv.md +0 -0
  116. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/local-development.md +0 -0
  117. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/quickstart.md +0 -0
  118. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/reference/authentication.md +0 -0
  119. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/reference/bundles.md +0 -0
  120. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/reference/core.md +0 -0
  121. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/reference/extensions.md +0 -0
  122. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/reference/integrations.md +0 -0
  123. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/reference/overview.md +0 -0
  124. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/reference/presets.md +0 -0
  125. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/template/public/main.css +0 -0
  126. {specify_cli-0.12.14 → specify_cli-0.12.16}/docs/upgrade.md +0 -0
  127. {specify_cli-0.12.14 → specify_cli-0.12.16}/examples/bundles/business-analyst/README.md +0 -0
  128. {specify_cli-0.12.14 → specify_cli-0.12.16}/examples/bundles/business-analyst/bundle.yml +0 -0
  129. {specify_cli-0.12.14 → specify_cli-0.12.16}/examples/bundles/developer/README.md +0 -0
  130. {specify_cli-0.12.14 → specify_cli-0.12.16}/examples/bundles/developer/bundle.yml +0 -0
  131. {specify_cli-0.12.14 → specify_cli-0.12.16}/examples/bundles/product-manager/README.md +0 -0
  132. {specify_cli-0.12.14 → specify_cli-0.12.16}/examples/bundles/product-manager/bundle.yml +0 -0
  133. {specify_cli-0.12.14 → specify_cli-0.12.16}/examples/bundles/security-researcher/README.md +0 -0
  134. {specify_cli-0.12.14 → specify_cli-0.12.16}/examples/bundles/security-researcher/bundle.yml +0 -0
  135. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/EXTENSION-API-REFERENCE.md +0 -0
  136. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -0
  137. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/EXTENSION-PUBLISHING-GUIDE.md +0 -0
  138. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/EXTENSION-USER-GUIDE.md +0 -0
  139. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/README.md +0 -0
  140. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
  141. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/agent-context/README.md +0 -0
  142. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/agent-context/agent-context-config.yml +0 -0
  143. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/agent-context/agent-context-defaults.json +0 -0
  144. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
  145. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/agent-context/extension.yml +0 -0
  146. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/agent-context/scripts/bash/update-agent-context.sh +0 -0
  147. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -0
  148. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/agent-context/scripts/python/update_agent_context.py +0 -0
  149. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/bug/README.md +0 -0
  150. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/bug/commands/speckit.bug.assess.md +0 -0
  151. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/bug/commands/speckit.bug.fix.md +0 -0
  152. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/bug/commands/speckit.bug.test.md +0 -0
  153. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/bug/extension.yml +0 -0
  154. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/catalog.json +0 -0
  155. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/git/README.md +0 -0
  156. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/git/commands/speckit.git.commit.md +0 -0
  157. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/git/commands/speckit.git.feature.md +0 -0
  158. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/git/commands/speckit.git.initialize.md +0 -0
  159. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/git/commands/speckit.git.remote.md +0 -0
  160. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/git/commands/speckit.git.validate.md +0 -0
  161. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/git/config-template.yml +0 -0
  162. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/git/extension.yml +0 -0
  163. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/git/git-config.yml +0 -0
  164. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/git/scripts/bash/auto-commit.sh +0 -0
  165. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
  166. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/git/scripts/bash/git-common.sh +0 -0
  167. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
  168. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
  169. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +0 -0
  170. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
  171. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
  172. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/selftest/commands/selftest.md +0 -0
  173. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/selftest/extension.yml +0 -0
  174. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/template/.gitignore +0 -0
  175. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/template/CHANGELOG.md +0 -0
  176. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/template/EXAMPLE-README.md +0 -0
  177. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/template/LICENSE +0 -0
  178. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/template/README.md +0 -0
  179. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/template/commands/example.md +0 -0
  180. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/template/config-template.yml +0 -0
  181. {specify_cli-0.12.14 → specify_cli-0.12.16}/extensions/template/extension.yml +0 -0
  182. {specify_cli-0.12.14 → specify_cli-0.12.16}/integrations/CONTRIBUTING.md +0 -0
  183. {specify_cli-0.12.14 → specify_cli-0.12.16}/integrations/README.md +0 -0
  184. {specify_cli-0.12.14 → specify_cli-0.12.16}/integrations/catalog.community.json +0 -0
  185. {specify_cli-0.12.14 → specify_cli-0.12.16}/integrations/catalog.json +0 -0
  186. {specify_cli-0.12.14 → specify_cli-0.12.16}/media/bootstrap-claude-code.gif +0 -0
  187. {specify_cli-0.12.14 → specify_cli-0.12.16}/media/logo_large.webp +0 -0
  188. {specify_cli-0.12.14 → specify_cli-0.12.16}/media/logo_small.webp +0 -0
  189. {specify_cli-0.12.14 → specify_cli-0.12.16}/media/spec-kit-video-header.jpg +0 -0
  190. {specify_cli-0.12.14 → specify_cli-0.12.16}/media/specify_cli.gif +0 -0
  191. {specify_cli-0.12.14 → specify_cli-0.12.16}/newsletters/2026-April.md +0 -0
  192. {specify_cli-0.12.14 → specify_cli-0.12.16}/newsletters/2026-February.md +0 -0
  193. {specify_cli-0.12.14 → specify_cli-0.12.16}/newsletters/2026-June.md +0 -0
  194. {specify_cli-0.12.14 → specify_cli-0.12.16}/newsletters/2026-March.md +0 -0
  195. {specify_cli-0.12.14 → specify_cli-0.12.16}/newsletters/2026-May.md +0 -0
  196. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/ARCHITECTURE.md +0 -0
  197. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/PUBLISHING.md +0 -0
  198. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/README.md +0 -0
  199. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/catalog.json +0 -0
  200. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/lean/README.md +0 -0
  201. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/lean/commands/speckit.constitution.md +0 -0
  202. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/lean/commands/speckit.implement.md +0 -0
  203. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/lean/commands/speckit.plan.md +0 -0
  204. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/lean/commands/speckit.specify.md +0 -0
  205. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/lean/commands/speckit.tasks.md +0 -0
  206. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/lean/preset.yml +0 -0
  207. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/scaffold/README.md +0 -0
  208. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
  209. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/scaffold/commands/speckit.specify.md +0 -0
  210. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/scaffold/preset.yml +0 -0
  211. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/scaffold/templates/myext-template.md +0 -0
  212. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/scaffold/templates/spec-template.md +0 -0
  213. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/self-test/commands/speckit.specify.md +0 -0
  214. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/self-test/commands/speckit.wrap-test.md +0 -0
  215. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/self-test/preset.yml +0 -0
  216. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/self-test/templates/checklist-template.md +0 -0
  217. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/self-test/templates/constitution-template.md +0 -0
  218. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/self-test/templates/plan-template.md +0 -0
  219. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/self-test/templates/spec-template.md +0 -0
  220. {specify_cli-0.12.14 → specify_cli-0.12.16}/presets/self-test/templates/tasks-template.md +0 -0
  221. {specify_cli-0.12.14 → specify_cli-0.12.16}/scripts/bash/check-prerequisites.sh +0 -0
  222. {specify_cli-0.12.14 → specify_cli-0.12.16}/scripts/bash/common.sh +0 -0
  223. {specify_cli-0.12.14 → specify_cli-0.12.16}/scripts/bash/create-new-feature.sh +0 -0
  224. {specify_cli-0.12.14 → specify_cli-0.12.16}/scripts/bash/setup-plan.sh +0 -0
  225. {specify_cli-0.12.14 → specify_cli-0.12.16}/scripts/bash/setup-tasks.sh +0 -0
  226. {specify_cli-0.12.14 → specify_cli-0.12.16}/scripts/powershell/check-prerequisites.ps1 +0 -0
  227. {specify_cli-0.12.14 → specify_cli-0.12.16}/scripts/powershell/common.ps1 +0 -0
  228. {specify_cli-0.12.14 → specify_cli-0.12.16}/scripts/powershell/create-new-feature.ps1 +0 -0
  229. {specify_cli-0.12.14 → specify_cli-0.12.16}/scripts/powershell/setup-plan.ps1 +0 -0
  230. {specify_cli-0.12.14 → specify_cli-0.12.16}/scripts/powershell/setup-tasks.ps1 +0 -0
  231. {specify_cli-0.12.14 → specify_cli-0.12.16}/scripts/python/check_prerequisites.py +0 -0
  232. {specify_cli-0.12.14 → specify_cli-0.12.16}/scripts/python/common.py +0 -0
  233. {specify_cli-0.12.14 → specify_cli-0.12.16}/spec-driven.md +0 -0
  234. {specify_cli-0.12.14 → specify_cli-0.12.16}/spec-kit.code-workspace +0 -0
  235. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/__init__.py +0 -0
  236. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/_agent_config.py +0 -0
  237. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/_assets.py +0 -0
  238. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/_console.py +0 -0
  239. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/_invocation_style.py +0 -0
  240. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/_project.py +0 -0
  241. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/_toml_string.py +0 -0
  242. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/_utils.py +0 -0
  243. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/_version.py +0 -0
  244. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/agents.py +0 -0
  245. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/authentication/__init__.py +0 -0
  246. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/authentication/azure_devops.py +0 -0
  247. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/authentication/base.py +0 -0
  248. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/authentication/config.py +0 -0
  249. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/authentication/github.py +0 -0
  250. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/authentication/http.py +0 -0
  251. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/__init__.py +0 -0
  252. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/commands_impl/__init__.py +0 -0
  253. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/commands_impl/catalog_config.py +0 -0
  254. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/lib/__init__.py +0 -0
  255. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/lib/project.py +0 -0
  256. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/lib/versioning.py +0 -0
  257. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/models/__init__.py +0 -0
  258. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/models/catalog.py +0 -0
  259. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/models/manifest.py +0 -0
  260. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/models/records.py +0 -0
  261. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/services/__init__.py +0 -0
  262. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/services/adapters.py +0 -0
  263. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/services/catalog_stack.py +0 -0
  264. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/services/conflict.py +0 -0
  265. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/services/packager.py +0 -0
  266. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/services/primitives.py +0 -0
  267. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/services/references.py +0 -0
  268. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/services/resolver.py +0 -0
  269. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/bundler/services/validator.py +0 -0
  270. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/catalogs.py +0 -0
  271. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/commands/__init__.py +0 -0
  272. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/commands/bundle/__init__.py +0 -0
  273. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/extensions/_commands.py +0 -0
  274. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integration_runtime.py +0 -0
  275. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integration_scaffold.py +0 -0
  276. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integration_state.py +0 -0
  277. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integration_status.py +0 -0
  278. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/__init__.py +0 -0
  279. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/_commands.py +0 -0
  280. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/_helpers.py +0 -0
  281. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/_install_commands.py +0 -0
  282. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/_migrate_commands.py +0 -0
  283. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/_query_commands.py +0 -0
  284. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/_scaffold_commands.py +0 -0
  285. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/agy/__init__.py +0 -0
  286. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/amp/__init__.py +0 -0
  287. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/auggie/__init__.py +0 -0
  288. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/bob/__init__.py +0 -0
  289. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/catalog.py +0 -0
  290. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/claude/__init__.py +0 -0
  291. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/cline/__init__.py +0 -0
  292. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
  293. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/codex/__init__.py +0 -0
  294. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/copilot/__init__.py +0 -0
  295. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -0
  296. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/devin/__init__.py +0 -0
  297. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/firebender/__init__.py +0 -0
  298. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/forge/__init__.py +0 -0
  299. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/gemini/__init__.py +0 -0
  300. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/generic/__init__.py +0 -0
  301. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/goose/__init__.py +0 -0
  302. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/hermes/__init__.py +0 -0
  303. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/junie/__init__.py +0 -0
  304. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/kilocode/__init__.py +0 -0
  305. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/kimi/__init__.py +0 -0
  306. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -0
  307. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/lingma/__init__.py +0 -0
  308. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/manifest.py +0 -0
  309. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/omp/__init__.py +0 -0
  310. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/opencode/__init__.py +0 -0
  311. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/pi/__init__.py +0 -0
  312. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
  313. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/qwen/__init__.py +0 -0
  314. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/rovodev/__init__.py +0 -0
  315. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/shai/__init__.py +0 -0
  316. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
  317. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/trae/__init__.py +0 -0
  318. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/vibe/__init__.py +0 -0
  319. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/zcode/__init__.py +0 -0
  320. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/integrations/zed/__init__.py +0 -0
  321. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/shared_infra.py +0 -0
  322. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/workflows/__init__.py +0 -0
  323. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/workflows/steps/__init__.py +0 -0
  324. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/workflows/steps/command/__init__.py +0 -0
  325. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/workflows/steps/fan_in/__init__.py +0 -0
  326. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/workflows/steps/fan_out/__init__.py +0 -0
  327. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/workflows/steps/gate/__init__.py +0 -0
  328. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/workflows/steps/if_then/__init__.py +0 -0
  329. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/workflows/steps/init/__init__.py +0 -0
  330. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/workflows/steps/prompt/__init__.py +0 -0
  331. {specify_cli-0.12.14 → specify_cli-0.12.16}/src/specify_cli/workflows/steps/switch/__init__.py +0 -0
  332. {specify_cli-0.12.14 → specify_cli-0.12.16}/templates/checklist-template.md +0 -0
  333. {specify_cli-0.12.14 → specify_cli-0.12.16}/templates/commands/analyze.md +0 -0
  334. {specify_cli-0.12.14 → specify_cli-0.12.16}/templates/commands/checklist.md +0 -0
  335. {specify_cli-0.12.14 → specify_cli-0.12.16}/templates/commands/clarify.md +0 -0
  336. {specify_cli-0.12.14 → specify_cli-0.12.16}/templates/commands/constitution.md +0 -0
  337. {specify_cli-0.12.14 → specify_cli-0.12.16}/templates/commands/converge.md +0 -0
  338. {specify_cli-0.12.14 → specify_cli-0.12.16}/templates/commands/implement.md +0 -0
  339. {specify_cli-0.12.14 → specify_cli-0.12.16}/templates/commands/plan.md +0 -0
  340. {specify_cli-0.12.14 → specify_cli-0.12.16}/templates/commands/specify.md +0 -0
  341. {specify_cli-0.12.14 → specify_cli-0.12.16}/templates/commands/tasks.md +0 -0
  342. {specify_cli-0.12.14 → specify_cli-0.12.16}/templates/commands/taskstoissues.md +0 -0
  343. {specify_cli-0.12.14 → specify_cli-0.12.16}/templates/constitution-template.md +0 -0
  344. {specify_cli-0.12.14 → specify_cli-0.12.16}/templates/plan-template.md +0 -0
  345. {specify_cli-0.12.14 → specify_cli-0.12.16}/templates/spec-template.md +0 -0
  346. {specify_cli-0.12.14 → specify_cli-0.12.16}/templates/tasks-template.md +0 -0
  347. {specify_cli-0.12.14 → specify_cli-0.12.16}/templates/vscode-settings.json +0 -0
  348. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/__init__.py +0 -0
  349. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/auth_helpers.py +0 -0
  350. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/bundler_helpers.py +0 -0
  351. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/conftest.py +0 -0
  352. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/contract/test_catalog_schema.py +0 -0
  353. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/contract/test_manifest_schema.py +0 -0
  354. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/extensions/__init__.py +0 -0
  355. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/extensions/bug/__init__.py +0 -0
  356. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/extensions/bug/test_bug_extension.py +0 -0
  357. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/extensions/git/__init__.py +0 -0
  358. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/extensions/git/test_git_extension.py +0 -0
  359. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/extensions/test_agent_context_cli_free.py +0 -0
  360. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/extensions/test_extension_agent_context.py +0 -0
  361. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/extensions/test_update_agent_context_feature_json.py +0 -0
  362. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/extensions/test_update_agent_context_python_parity.py +0 -0
  363. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/hooks/TESTING.md +0 -0
  364. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/hooks/plan.md +0 -0
  365. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/hooks/spec.md +0 -0
  366. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/hooks/tasks.md +0 -0
  367. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/http_helpers.py +0 -0
  368. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integration/test_bundler_catalog_stack.py +0 -0
  369. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integration/test_bundler_init_install.py +0 -0
  370. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integration/test_bundler_local_install.py +0 -0
  371. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integration/test_bundler_offline.py +0 -0
  372. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integration/test_bundler_security_paths.py +0 -0
  373. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/__init__.py +0 -0
  374. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/conftest.py +0 -0
  375. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_base.py +0 -0
  376. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_extra_args.py +0 -0
  377. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_home_isolation.py +0 -0
  378. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_agy.py +0 -0
  379. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_amp.py +0 -0
  380. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_auggie.py +0 -0
  381. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_bob.py +0 -0
  382. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_catalog.py +0 -0
  383. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_claude.py +0 -0
  384. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_codebuddy.py +0 -0
  385. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_codex.py +0 -0
  386. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_cursor_agent.py +0 -0
  387. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_devin.py +0 -0
  388. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_firebender.py +0 -0
  389. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_forge.py +0 -0
  390. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_gemini.py +0 -0
  391. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_goose.py +0 -0
  392. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_hermes.py +0 -0
  393. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_junie.py +0 -0
  394. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_kilocode.py +0 -0
  395. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_kimi.py +0 -0
  396. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_kiro_cli.py +0 -0
  397. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_lingma.py +0 -0
  398. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_omp.py +0 -0
  399. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_opencode.py +0 -0
  400. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_pi.py +0 -0
  401. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_qodercli.py +0 -0
  402. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_qwen.py +0 -0
  403. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_rovodev.py +0 -0
  404. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_scaffold.py +0 -0
  405. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_shai.py +0 -0
  406. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_state.py +0 -0
  407. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_subcommand.py +0 -0
  408. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_tabnine.py +0 -0
  409. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_trae.py +0 -0
  410. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_vibe.py +0 -0
  411. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_zcode.py +0 -0
  412. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_integration_zed.py +0 -0
  413. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_manifest.py +0 -0
  414. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_registry.py +0 -0
  415. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/integrations/test_skill_frontmatter_quoting.py +0 -0
  416. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/self_upgrade_helpers.py +0 -0
  417. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_agent_config_consistency.py +0 -0
  418. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_authentication.py +0 -0
  419. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_branch_numbering.py +0 -0
  420. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_check_prerequisites_paths_only.py +0 -0
  421. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_check_prerequisites_python_parity.py +0 -0
  422. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_check_tool.py +0 -0
  423. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_cli_version.py +0 -0
  424. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_command_template_py_scripts.py +0 -0
  425. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_commands_package.py +0 -0
  426. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_console_imports.py +0 -0
  427. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_extension_registration.py +0 -0
  428. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_extension_skills.py +0 -0
  429. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_extension_update_hardening.py +0 -0
  430. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_github_workflows.py +0 -0
  431. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_init_dir.py +0 -0
  432. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_init_dir_cli.py +0 -0
  433. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_live_transient_windows.py +0 -0
  434. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_merge.py +0 -0
  435. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_post_process.py +0 -0
  436. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_ps1_encoding.py +0 -0
  437. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_registrar_path_traversal.py +0 -0
  438. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_self_upgrade_detection.py +0 -0
  439. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_self_upgrade_execution.py +0 -0
  440. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_self_upgrade_guidance.py +0 -0
  441. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_self_upgrade_verification.py +0 -0
  442. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_setup_plan_feature_json.py +0 -0
  443. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_setup_plan_no_overwrite.py +0 -0
  444. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_setup_tasks.py +0 -0
  445. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_shared_infra_integrity.py +0 -0
  446. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_timestamp_branches.py +0 -0
  447. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_upgrade.py +0 -0
  448. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_utils.py +0 -0
  449. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_utils_assets_imports.py +0 -0
  450. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_version_imports.py +0 -0
  451. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/test_workflow_run_without_project.py +0 -0
  452. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/unit/test_bundler_adapters.py +0 -0
  453. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/unit/test_bundler_catalog_config.py +0 -0
  454. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/unit/test_bundler_conflict.py +0 -0
  455. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/unit/test_bundler_packager.py +0 -0
  456. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/unit/test_bundler_primitives.py +0 -0
  457. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/unit/test_bundler_records.py +0 -0
  458. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/unit/test_bundler_references.py +0 -0
  459. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/unit/test_bundler_resolver.py +0 -0
  460. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/unit/test_bundler_validator.py +0 -0
  461. {specify_cli-0.12.14 → specify_cli-0.12.16}/tests/unit/test_bundler_versioning.py +0 -0
  462. {specify_cli-0.12.14 → specify_cli-0.12.16}/workflows/ARCHITECTURE.md +0 -0
  463. {specify_cli-0.12.14 → specify_cli-0.12.16}/workflows/PUBLISHING.md +0 -0
  464. {specify_cli-0.12.14 → specify_cli-0.12.16}/workflows/catalog.community.json +0 -0
  465. {specify_cli-0.12.14 → specify_cli-0.12.16}/workflows/catalog.json +0 -0
  466. {specify_cli-0.12.14 → specify_cli-0.12.16}/workflows/speckit/workflow.yml +0 -0
  467. {specify_cli-0.12.14 → specify_cli-0.12.16}/workflows/step-catalog.community.json +0 -0
  468. {specify_cli-0.12.14 → specify_cli-0.12.16}/workflows/step-catalog.json +0 -0
@@ -2,6 +2,36 @@
2
2
 
3
3
  <!-- insert new changelog below this comment -->
4
4
 
5
+ ## [0.12.16] - 2026-07-15
6
+
7
+ ### Changed
8
+
9
+ - fix(workflows): raise a clear error, not a cryptic crash, on non-string filter args (#3522)
10
+ - feat(workflows): expose workflow source directory to steps (#3469)
11
+ - fix(workflows): fan-out max_concurrency .inf falls back to sequential, not crash (#3521)
12
+ - Update Coding Standards Drift Control extension to v0.4.0 (#3540)
13
+ - fix(presets): seed constitution from preset constitution-template (#3272) (#3276)
14
+ - docs: add PyPI as second supported install route (#3425) (#3516)
15
+ - fix(workflows): fail while/do-while steps on non-list steps instead of crashing (#3519)
16
+ - Add PatchWarden Evidence Pack extension to community catalog (#3514)
17
+ - feat(extensions): port git extension scripts to Python (#3400)
18
+ - chore: release 0.12.15, begin 0.12.16.dev0 development (#3513)
19
+
20
+ ## [0.12.15] - 2026-07-14
21
+
22
+ ### Changed
23
+
24
+ - Update Autonomous Run Governance preset to v0.1.4 (#3511)
25
+ - fix(workflows): raise catalog error, not raw ValueError, on a malformed catalog URL (#3484)
26
+ - fix(workflows): evaluate 'in'/'not in' safely on a non-iterable right operand (#3447) (#3468)
27
+ - fix: add trailing newline to init-options.json output (#3509)
28
+ - feat(workflows): align workflow CLI with extension command surface (#3419)
29
+ - fix(extensions): stop env-var config leaking across prefix-colliding extension IDs (#3497)
30
+ - fix(integrations): escape control characters in goose recipe YAML renderer (#3384)
31
+ - [extension] Update DocGuard — CDD Enforcement extension to v0.32.0 (#3489)
32
+ - [extension] Add Multi-Repo Branch Sync extension to community catalog (#3411)
33
+ - chore: release 0.12.14, begin 0.12.15.dev0 development (#3506)
34
+
5
35
  ## [0.12.14] - 2026-07-13
6
36
 
7
37
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specify-cli
3
- Version: 0.12.14
3
+ Version: 0.12.16
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
@@ -71,6 +71,12 @@ Requires **[uv](https://docs.astral.sh/uv/)** ([install uv](./docs/install/uv.md
71
71
  uv tool install specify-cli --from git+https://github.com/github/spec-kit.git@vX.Y.Z
72
72
  ```
73
73
 
74
+ Prefer installing from PyPI? The `specify-cli` package is also published there:
75
+
76
+ ```bash
77
+ uv tool install specify-cli
78
+ ```
79
+
74
80
  See the [Installation Guide](./docs/installation.md) for alternative methods, verification, upgrade, and troubleshooting.
75
81
 
76
82
  ### 2. Initialize a project
@@ -51,6 +51,12 @@ Requires **[uv](https://docs.astral.sh/uv/)** ([install uv](./docs/install/uv.md
51
51
  uv tool install specify-cli --from git+https://github.com/github/spec-kit.git@vX.Y.Z
52
52
  ```
53
53
 
54
+ Prefer installing from PyPI? The `specify-cli` package is also published there:
55
+
56
+ ```bash
57
+ uv tool install specify-cli
58
+ ```
59
+
54
60
  See the [Installation Guide](./docs/installation.md) for alternative methods, verification, upgrade, and troubleshooting.
55
61
 
56
62
  ### 2. Initialize a project
@@ -51,7 +51,7 @@ The following community-contributed extensions are available in [`catalog.commun
51
51
  | Confluence Extension | Create a doc in Confluence summarizing the specifications and planning files | `integration` | Read+Write | [spec-kit-confluence](https://github.com/aaronrsun/spec-kit-confluence) |
52
52
  | Cost Tracker | Track real LLM dollar cost across SDD workflows — per-feature budgets, per-integration comparison, and finance-ready exports | `visibility` | Read+Write | [spec-kit-cost](https://github.com/Quratulain-bilal/spec-kit-cost) |
53
53
  | Data Model Diagram | Generates Mermaid ER diagrams from Spec Kit data models after planning | `docs` | Read+Write | [spec-kit-data-model-diagram](https://github.com/benizzio/spec-kit-data-model-diagram) |
54
- | DocGuard — CDD Enforcement | The only doc-integrity engine with an MCP server, SARIF output, and a deterministic zero-LLM core. Validates, scores, and traces documentation against code — 24 validators, stable finding codes, GitHub Action with PR annotations, spec-kit hooks. Pure Node.js, one pinned dep. | `docs` | Read+Write | [spec-kit-docguard](https://github.com/raccioly/docguard) |
54
+ | DocGuard — CDD Enforcement | Doc-integrity engine with MCP server, SARIF output, and zero-LLM core. Validates, scores, and traces documentation against code — 24 validators, stable finding codes, spec-kit hooks. Pure Node.js. | `docs` | Read+Write | [spec-kit-docguard](https://github.com/raccioly/docguard) |
55
55
  | EARS Requirements Syntax | Author, lint, and convert requirements using EARS - the five industry-standard sentence patterns for unambiguous, testable requirements | `docs` | Read+Write | [spec-kit-ears](https://github.com/dhruv-15-03/spec-kit-ears) |
56
56
  | Extensify | Create and validate extensions and extension catalogs | `process` | Read+Write | [extensify](https://github.com/mnriem/spec-kit-extensions/tree/main/extensify) |
57
57
  | Fix Findings | Automated analyze-fix-reanalyze loop that resolves spec findings until clean | `code` | Read+Write | [spec-kit-fix-findings](https://github.com/Quratulain-bilal/spec-kit-fix-findings) |
@@ -84,12 +84,14 @@ The following community-contributed extensions are available in [`catalog.commun
84
84
  | MemoryLint | Evidence-driven instruction drift checker: audits agent memory files for boundary, reality, conflict, and redundancy drift. | `process` | Read+Write | [memorylint](https://github.com/RbBtSn0w/spec-kit-extensions/tree/main/memorylint) |
85
85
  | Microsoft 365 Integration | Fetch Teams messages, meeting transcripts, and SharePoint/OneDrive files as local Markdown for spec generation | `integration` | Read+Write | [spec-kit-m365](https://github.com/BenBtg/spec-kit-m365) |
86
86
  | Multi-Model Review | Cross-model Spec Kit handoffs for spec authoring, implementation routing, and review. | `process` | Read+Write | [multi-model-review](https://github.com/formin/multi-model-review) |
87
+ | Multi-Repo Branch Sync | Creates the feature branch in affected sub-repositories and git submodules via plan/tasks hooks | `process` | Read+Write | [multi-repo-sync](https://github.com/fyloss/spec-kit-multi-repo-sync) |
87
88
  | Multi-Sites Spec Kit | Multi-site aware specify command with per-site spec folders, auto-increment, and Drupal support | `process` | Read+Write | [spec-kit-multi-sites](https://github.com/teeyo/spec-kit-multi-sites) |
88
89
  | .NET Framework to Modern .NET Migration | Orchestrate end-to-end .NET Framework to modern .NET migration across 7 phases, with SDD lifecycle integration | `process` | Read+Write | [spec-kit-fx-to-net](https://github.com/RogerBestMsft/spec-kit-FxToNet) |
89
90
  | Onboard | Contextual onboarding and progressive growth for developers new to spec-kit projects. Explains specs, maps dependencies, validates understanding, and guides the next step | `process` | Read+Write | [spec-kit-onboard](https://github.com/dmux/spec-kit-onboard) |
90
91
  | Optimize | Audit and optimize AI governance for context efficiency — token budgets, rule health, interpretability, compression, coherence, and echo detection | `process` | Read+Write | [spec-kit-optimize](https://github.com/sakitA/spec-kit-optimize) |
91
92
  | Orchestration Task Context Management | Adds subagent work-unit orchestration to generated Spec Kit task files | `process` | Read+Write | [spec-kit-orchestration-task-context-management](https://github.com/benizzio/spec-kit-orchestration-task-context-management) |
92
93
  | OWASP LLM Threat Model | OWASP Top 10 for LLM Applications 2025 threat analysis on agent artifacts | `code` | Read-only | [spec-kit-threatmodel](https://github.com/NaviaSamal/spec-kit-threatmodel) |
94
+ | PatchWarden Evidence Pack | Map Spec Kit tasks into a guarded PatchWarden Goal and export bounded, traceable evidence for an accepted lineage. | `process` | Read+Write | [spec-kit-patchwarden](https://github.com/jiezeng2004-design/spec-kit-patchwarden) |
93
95
  | Plan Review Gate | Require spec.md and plan.md to be merged via MR/PR before allowing task generation | `process` | Read-only | [spec-kit-plan-review-gate](https://github.com/luno/spec-kit-plan-review-gate) |
94
96
  | PR Bridge | Auto-generate pull request descriptions, checklists, and summaries from spec artifacts | `process` | Read-only | [spec-kit-pr-bridge-](https://github.com/Quratulain-bilal/spec-kit-pr-bridge-) |
95
97
  | Presetify | Create and validate presets and preset catalogs | `process` | Read+Write | [presetify](https://github.com/mnriem/spec-kit-extensions/tree/main/presetify) |
@@ -11,7 +11,7 @@ The following community-contributed presets customize how Spec Kit behaves — o
11
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) |
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
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) |
14
- | Autonomous Run Governance | Adds permission-bounded, evidence-first governance for autonomous Spec Kit delivery, convergence, resume, closeout, and retrospective learning. | 10 templates, 2 commands | — | [spec-kit-preset-autonomous-run-governance](https://github.com/hindermath/spec-kit-preset-autonomous-run-governance) |
14
+ | Autonomous Run Governance | Adds permission-bounded, evidence-first governance for autonomous Spec Kit delivery, convergence, resume, closeout, and retrospective learning. | 12 templates, 2 commands, 2 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) |
@@ -0,0 +1,83 @@
1
+ # Installing from PyPI
2
+
3
+ Spec Kit is published to PyPI as [`specify-cli`](https://pypi.org/project/specify-cli/), maintained by the Spec Kit maintainers. Installing from PyPI is the second supported install route alongside installing from the [GitHub source](../installation.md#install-from-source--persistent-installation-recommended). Use whichever fits your workflow — both provide the same `specify` CLI.
4
+
5
+ > [!NOTE]
6
+ > The PyPI release version tracks the GitHub release tags (for example, PyPI `0.12.11` corresponds to the `v0.12.11` tag). `specify version` is only a local version/runtime sanity check — it reports the installed version but not where the `specify` executable came from, so it cannot distinguish a PyPI install from a Git install. To confirm the install source, inspect the source metadata your package manager records: `pipx list --json` reports the exact install specification for each tool, and for uv/pip installs you can check the package's [PEP 610](https://peps.python.org/pep-0610/) `direct_url.json` inside its `*.dist-info` directory (a Git or URL install records the repository/archive URL there, while a plain PyPI index install does not create that file). Note that `pip show specify-cli` only prints package metadata and will not see uv/pipx-managed environments from the host interpreter.
7
+
8
+ ## Install Specify CLI
9
+
10
+ Use whichever Python tool you already have:
11
+
12
+ ```bash
13
+ # Using uv (recommended)
14
+ uv tool install specify-cli
15
+
16
+ # Or using pipx
17
+ pipx install specify-cli
18
+
19
+ # Or using pip
20
+ pip install specify-cli
21
+ ```
22
+
23
+ ### Install a specific release
24
+
25
+ Pin an exact version for reproducible installs (check [PyPI](https://pypi.org/project/specify-cli/#history) or [Releases](https://github.com/github/spec-kit/releases) for available versions):
26
+
27
+ ```bash
28
+ # Using uv
29
+ uv tool install specify-cli==0.12.11
30
+
31
+ # Or using pipx
32
+ pipx install specify-cli==0.12.11
33
+
34
+ # Or using pip
35
+ pip install specify-cli==0.12.11
36
+ ```
37
+
38
+ ## Verify
39
+
40
+ ```bash
41
+ specify version
42
+ ```
43
+
44
+ ## Initialize a project
45
+
46
+ ```bash
47
+ specify init <PROJECT_NAME> --integration copilot
48
+ ```
49
+
50
+ ## Upgrade
51
+
52
+ Upgrade by reinstalling the package through the same tool you used for the original install. If you originally pinned a version, note that `uv tool upgrade` preserves that pin; to move to the newest PyPI release, use an unpinned install command so you do not keep the existing version pin:
53
+
54
+ ```bash
55
+ # Using uv
56
+ uv tool install --force specify-cli
57
+
58
+ # Or using pipx
59
+ pipx install --force specify-cli
60
+
61
+ # Or using pip
62
+ pip install --upgrade specify-cli
63
+ ```
64
+
65
+ > [!NOTE]
66
+ > `specify self upgrade` currently rebuilds `uv tool` and `pipx` installs from the GitHub source release URL rather than preserving a PyPI-based installation. If you want to stay on the PyPI route, use the package-manager commands above. A plain `pip install specify-cli` is treated as an unmanaged install — upgrade it with `pip install --upgrade specify-cli`. See the [Upgrade Guide](../upgrade.md) for details.
67
+
68
+ ## Uninstall
69
+
70
+ ```bash
71
+ # Using uv
72
+ uv tool uninstall specify-cli
73
+
74
+ # Or using pipx
75
+ pipx uninstall specify-cli
76
+
77
+ # Or using pip
78
+ pip uninstall specify-cli
79
+ ```
80
+
81
+ ## Next steps
82
+
83
+ Head to the [Quick Start](../quickstart.md) to initialize your first project.
@@ -11,9 +11,14 @@
11
11
  ## Installation
12
12
 
13
13
  > [!IMPORTANT]
14
- > The only official, maintained packages for Spec Kit come from the [github/spec-kit](https://github.com/github/spec-kit) GitHub repository. Any packages with the same name available on PyPI (e.g. `specify-cli` on pypi.org) are **not** affiliated with this project and are not maintained by the Spec Kit maintainers. For normal installs, use the GitHub-based commands shown below. For offline or air-gapped environments, locally built wheels created from this repository are also valid.
14
+ > Spec Kit is distributed through two official channels, both published and maintained by the Spec Kit maintainers: the [github/spec-kit](https://github.com/github/spec-kit) GitHub repository (source installs) and the [`specify-cli`](https://pypi.org/project/specify-cli/) package on [PyPI](https://pypi.org/project/specify-cli/). Either route is supported for normal installs — use the commands shown below. After installing, run `specify version` as a local version/runtime sanity check. It confirms that the `specify` command is available and reports its version, but it does not prove whether the executable came from PyPI or GitHub. For offline or air-gapped environments, locally built wheels created from this repository are also valid.
15
15
 
16
- ### Persistent Installation (Recommended)
16
+ Spec Kit supports two install routes:
17
+
18
+ 1. **Install from source (GitHub)** — the recommended route, pinned to a release tag.
19
+ 2. **Install from PyPI** — install the published `specify-cli` package with your usual Python tooling.
20
+
21
+ ### Install from Source — Persistent Installation (Recommended)
17
22
 
18
23
  Install once and use everywhere. Replace `vX.Y.Z` with a release tag from [Releases](https://github.com/github/spec-kit/releases) — keep the leading `v` (for example, `v0.12.11`, not `0.12.11`):
19
24
 
@@ -30,12 +35,30 @@ Then initialize a project:
30
35
  specify init <PROJECT_NAME> --integration copilot
31
36
  ```
32
37
 
38
+ ### Install from PyPI
39
+
40
+ Spec Kit is also published to PyPI as [`specify-cli`](https://pypi.org/project/specify-cli/), so you can install it with your preferred Python package manager without referencing the Git URL:
41
+
42
+ ```bash
43
+ # Using uv (recommended)
44
+ uv tool install specify-cli
45
+
46
+ # Or using pipx
47
+ pipx install specify-cli
48
+
49
+ # Or using pip
50
+ pip install specify-cli
51
+ ```
52
+
53
+ To install a specific release, pin the version — for example `uv tool install specify-cli==0.12.11`. See the [PyPI installation guide](install/pypi.md) for details, including how to upgrade.
54
+
33
55
  ### One-time Usage
34
56
 
35
57
  Run directly without installing — see the [One-time usage (uvx)](install/one-time.md) guide.
36
58
 
37
59
  ### Alternative Package Managers
38
60
 
61
+ - **PyPI** — see the [PyPI installation guide](install/pypi.md)
39
62
  - **pipx** — see the [pipx installation guide](install/pipx.md)
40
63
  - **Enterprise / Air-Gapped** — see the [air-gapped installation guide](install/air-gapped.md)
41
64
 
@@ -81,13 +104,13 @@ specify init <project_name> --integration claude --ignore-agent-tools
81
104
 
82
105
  ## Verification
83
106
 
84
- After installation, run the following command to confirm the correct version is installed:
107
+ After installation, run the following command as a local version/runtime check:
85
108
 
86
109
  ```bash
87
110
  specify version
88
111
  ```
89
112
 
90
- This helps verify you are running the official Spec Kit build from GitHub, not an unrelated package with the same name.
113
+ This confirms that the `specify` command is available and reporting the expected version. It does not prove whether that executable came from PyPI or GitHub.
91
114
 
92
115
  **Stay current:** Run `specify self check` periodically to learn whether a newer release is available — it is read-only and never modifies your installation. When you are ready to upgrade, follow the [Upgrade Guide](./upgrade.md).
93
116
 
@@ -86,8 +86,30 @@ Lists workflows installed in the current project.
86
86
  specify workflow add <source>
87
87
  ```
88
88
 
89
+ | Option | Description |
90
+ | --------------- | ------------------------------------------------------ |
91
+ | `--dev` | Install from a local workflow YAML file or directory |
92
+ | `--from <url>` | Install from a custom URL (`<source>` names the expected workflow ID) |
93
+
89
94
  Installs a workflow from the catalog, a URL (HTTPS required), or a local file path.
90
95
 
96
+ ## Update Workflows
97
+
98
+ ```bash
99
+ specify workflow update [workflow_id]
100
+ ```
101
+
102
+ Updates one installed catalog workflow — or all of them when no ID is given — to the latest catalog version. Prompts for confirmation and keeps the installed copy if a download or validation fails.
103
+
104
+ ## Enable or Disable a Workflow
105
+
106
+ ```bash
107
+ specify workflow enable <workflow_id>
108
+ specify workflow disable <workflow_id>
109
+ ```
110
+
111
+ Disabled workflows stay installed and listed (marked `[disabled]`) but refuse to run until re-enabled.
112
+
91
113
  ## Remove a Workflow
92
114
 
93
115
  ```bash
@@ -102,9 +124,10 @@ Removes an installed workflow from the project.
102
124
  specify workflow search [query]
103
125
  ```
104
126
 
105
- | Option | Description |
106
- | ------- | --------------- |
107
- | `--tag` | Filter by tag |
127
+ | Option | Description |
128
+ | ---------- | ----------------- |
129
+ | `--tag` | Filter by tag |
130
+ | `--author` | Filter by author |
108
131
 
109
132
  Searches all active catalogs for workflows matching the query.
110
133
 
@@ -282,6 +305,8 @@ Steps can reference inputs and previous step outputs using `{{ expression }}` sy
282
305
  | `inputs.spec` | Workflow input values |
283
306
  | `steps.specify.output.file` | Output from a previous step |
284
307
  | `item` | Current item in a fan-out iteration |
308
+ | `context.run_id` | Current workflow run ID |
309
+ | `context.workflow_dir` | Resolved absolute path to the workflow source directory. Empty string for string-loaded workflows. |
285
310
 
286
311
  Available filters: `default`, `join`, `contains`, `map`, `from_json`.
287
312
 
@@ -293,6 +318,14 @@ args: "{{ inputs.spec }}"
293
318
  message: "{{ status | default('pending') }}"
294
319
  ```
295
320
 
321
+ ## Shell Step Environment Variables
322
+
323
+ Shell steps automatically receive the following environment variables:
324
+
325
+ | Variable | Description |
326
+ | -------- | ----------- |
327
+ | `SPECKIT_WORKFLOW_DIR` | Resolved absolute path to the workflow source directory (same value as `{{ context.workflow_dir }}`). Not set when the workflow has no source path. |
328
+
296
329
  ## Input Types
297
330
 
298
331
  | Type | Coercion |
@@ -13,6 +13,8 @@
13
13
  href: upgrade.md
14
14
  - name: Install uv
15
15
  href: install/uv.md
16
+ - name: Install from PyPI
17
+ href: install/pypi.md
16
18
  - name: Install with pipx
17
19
  href: install/pipx.md
18
20
  - name: One-time Usage (uvx)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema_version": "1.0",
3
- "updated_at": "2026-07-13T00:00:00Z",
3
+ "updated_at": "2026-07-15T00:00:00Z",
4
4
  "catalog_url": "https://raw.githubusercontent.com/github/spec-kit/main/extensions/catalog.community.json",
5
5
  "extensions": {
6
6
  "aide": {
@@ -809,8 +809,8 @@
809
809
  "id": "coding-standards-drift-control",
810
810
  "description": "Generate coding-standards drift reports and remediation tasks for active Spec Kit features",
811
811
  "author": "Igor Benicio de Mesquita",
812
- "version": "0.3.1",
813
- "download_url": "https://github.com/benizzio/spec-kit-coding-standards-drift-control/archive/refs/tags/v0.3.1.zip",
812
+ "version": "0.4.0",
813
+ "download_url": "https://github.com/benizzio/spec-kit-coding-standards-drift-control/archive/refs/tags/v0.4.0.zip",
814
814
  "repository": "https://github.com/benizzio/spec-kit-coding-standards-drift-control",
815
815
  "homepage": "https://github.com/benizzio/spec-kit-coding-standards-drift-control",
816
816
  "documentation": "https://github.com/benizzio/spec-kit-coding-standards-drift-control#readme",
@@ -835,7 +835,7 @@
835
835
  "downloads": 0,
836
836
  "stars": 0,
837
837
  "created_at": "2026-06-11T00:00:00Z",
838
- "updated_at": "2026-06-11T00:00:00Z"
838
+ "updated_at": "2026-07-15T00:00:00Z"
839
839
  },
840
840
  "companion": {
841
841
  "name": "SpecKit Companion",
@@ -1106,10 +1106,10 @@
1106
1106
  "docguard": {
1107
1107
  "name": "DocGuard — CDD Enforcement",
1108
1108
  "id": "docguard",
1109
- "description": "The only doc-integrity engine with an MCP server, SARIF output, and a deterministic zero-LLM core. Validates, scores, and traces documentation against code — 24 validators, stable finding codes, GitHub Action with PR annotations, spec-kit hooks. Pure Node.js, one pinned dep.",
1109
+ "description": "Doc-integrity engine with MCP server, SARIF output, and zero-LLM core. Validates, scores, and traces documentation against code — 24 validators, stable finding codes, spec-kit hooks. Pure Node.js.",
1110
1110
  "author": "raccioly",
1111
- "version": "0.30.0",
1112
- "download_url": "https://github.com/raccioly/docguard/releases/download/v0.30.0/spec-kit-docguard-v0.30.0.zip",
1111
+ "version": "0.32.0",
1112
+ "download_url": "https://github.com/raccioly/docguard/releases/download/v0.32.0/spec-kit-docguard-v0.32.0.zip",
1113
1113
  "repository": "https://github.com/raccioly/docguard",
1114
1114
  "homepage": "https://www.npmjs.com/package/docguard-cli",
1115
1115
  "documentation": "https://github.com/raccioly/docguard/blob/main/extensions/spec-kit-docguard/README.md",
@@ -1124,6 +1124,14 @@
1124
1124
  "name": "node",
1125
1125
  "version": ">=18.0.0",
1126
1126
  "required": true
1127
+ },
1128
+ {
1129
+ "name": "npx",
1130
+ "required": true
1131
+ },
1132
+ {
1133
+ "name": "specify",
1134
+ "required": false
1127
1135
  }
1128
1136
  ]
1129
1137
  },
@@ -1145,7 +1153,7 @@
1145
1153
  "downloads": 0,
1146
1154
  "stars": 0,
1147
1155
  "created_at": "2026-03-13T00:00:00Z",
1148
- "updated_at": "2026-07-06T00:00:00Z"
1156
+ "updated_at": "2026-07-13T00:00:00Z"
1149
1157
  },
1150
1158
  "doctor": {
1151
1159
  "name": "Project Health Check",
@@ -2458,6 +2466,48 @@
2458
2466
  "created_at": "2026-05-04T02:51:52Z",
2459
2467
  "updated_at": "2026-06-18T00:00:00Z"
2460
2468
  },
2469
+ "multi-repo-sync": {
2470
+ "name": "Multi-Repo Branch Sync",
2471
+ "id": "multi-repo-sync",
2472
+ "description": "Creates the feature branch in affected sub-repositories and git submodules via plan/tasks hooks",
2473
+ "author": "Fyloss",
2474
+ "version": "1.0.0",
2475
+ "download_url": "https://github.com/fyloss/spec-kit-multi-repo-sync/releases/download/v1.0.0/spec-kit-multi-repo-sync.zip",
2476
+ "sha256": "12a5c7392145b4424b20715aaa3d8b6a8218c143dea596873e344146c1a76ba0",
2477
+ "repository": "https://github.com/fyloss/spec-kit-multi-repo-sync",
2478
+ "homepage": "https://github.com/fyloss/spec-kit-multi-repo-sync",
2479
+ "documentation": "https://github.com/fyloss/spec-kit-multi-repo-sync/blob/main/README.md",
2480
+ "changelog": "https://github.com/fyloss/spec-kit-multi-repo-sync/blob/main/CHANGELOG.md",
2481
+ "license": "MIT",
2482
+ "category": "process",
2483
+ "effect": "read-write",
2484
+ "requires": {
2485
+ "speckit_version": ">=0.2.0",
2486
+ "tools": [
2487
+ {
2488
+ "name": "git",
2489
+ "version": ">=2.31",
2490
+ "required": true
2491
+ }
2492
+ ]
2493
+ },
2494
+ "provides": {
2495
+ "commands": 3,
2496
+ "hooks": 2
2497
+ },
2498
+ "tags": [
2499
+ "git",
2500
+ "branching",
2501
+ "multi-repo",
2502
+ "submodules",
2503
+ "workflow"
2504
+ ],
2505
+ "verified": false,
2506
+ "downloads": 0,
2507
+ "stars": 0,
2508
+ "created_at": "2026-07-13T00:00:00Z",
2509
+ "updated_at": "2026-07-13T00:00:00Z"
2510
+ },
2461
2511
  "multi-sites": {
2462
2512
  "name": "Multi-Sites Spec Kit",
2463
2513
  "id": "multi-sites",
@@ -2627,6 +2677,46 @@
2627
2677
  "created_at": "2026-04-24T14:00:00Z",
2628
2678
  "updated_at": "2026-04-24T14:00:00Z"
2629
2679
  },
2680
+ "patchwarden-evidence": {
2681
+ "name": "PatchWarden Evidence Pack",
2682
+ "id": "patchwarden-evidence",
2683
+ "description": "Map Spec Kit tasks into a guarded PatchWarden Goal and export bounded, traceable evidence for an accepted lineage.",
2684
+ "author": "Zengjie",
2685
+ "version": "1.0.1",
2686
+ "download_url": "https://github.com/jiezeng2004-design/spec-kit-patchwarden/archive/refs/tags/v1.0.1.zip",
2687
+ "repository": "https://github.com/jiezeng2004-design/spec-kit-patchwarden",
2688
+ "homepage": "https://github.com/jiezeng2004-design/spec-kit-patchwarden",
2689
+ "documentation": "https://github.com/jiezeng2004-design/spec-kit-patchwarden/blob/main/README.md",
2690
+ "changelog": "https://github.com/jiezeng2004-design/spec-kit-patchwarden/blob/main/CHANGELOG.md",
2691
+ "license": "MIT",
2692
+ "category": "process",
2693
+ "effect": "read-write",
2694
+ "requires": {
2695
+ "speckit_version": ">=0.1.0",
2696
+ "tools": [
2697
+ {
2698
+ "name": "patchwarden",
2699
+ "version": ">=1.5.1",
2700
+ "required": true
2701
+ }
2702
+ ]
2703
+ },
2704
+ "provides": {
2705
+ "commands": 2,
2706
+ "hooks": 2
2707
+ },
2708
+ "tags": [
2709
+ "verification",
2710
+ "evidence",
2711
+ "traceability",
2712
+ "security"
2713
+ ],
2714
+ "verified": false,
2715
+ "downloads": 0,
2716
+ "stars": 0,
2717
+ "created_at": "2026-07-14T00:00:00Z",
2718
+ "updated_at": "2026-07-14T00:00:00Z"
2719
+ },
2630
2720
  "plan-review-gate": {
2631
2721
  "name": "Plan Review Gate",
2632
2722
  "id": "plan-review-gate",