specify-cli 0.11.6__tar.gz → 0.11.8__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 (446) hide show
  1. {specify_cli-0.11.6 → specify_cli-0.11.8}/.devcontainer/post-create.sh +2 -2
  2. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/ISSUE_TEMPLATE/agent_request.yml +1 -1
  3. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/ISSUE_TEMPLATE/bug_report.yml +1 -0
  4. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/ISSUE_TEMPLATE/feature_request.yml +1 -0
  5. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/ISSUE_TEMPLATE/preset_submission.yml +13 -1
  6. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/workflows/add-community-preset.lock.yml +1 -1
  7. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/workflows/add-community-preset.md +58 -4
  8. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/workflows/catalog-assign.yml +1 -1
  9. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/workflows/lint.yml +12 -0
  10. {specify_cli-0.11.6 → specify_cli-0.11.8}/CHANGELOG.md +30 -0
  11. {specify_cli-0.11.6 → specify_cli-0.11.8}/CONTRIBUTING.md +10 -0
  12. {specify_cli-0.11.6 → specify_cli-0.11.8}/PKG-INFO +2 -2
  13. {specify_cli-0.11.6 → specify_cli-0.11.8}/README.md +1 -1
  14. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/community/extensions.md +2 -0
  15. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/community/friends.md +3 -1
  16. specify_cli-0.11.8/docs/guides/monorepo.md +111 -0
  17. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/installation.md +2 -1
  18. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/quickstart.md +14 -14
  19. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/reference/integrations.md +3 -3
  20. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/reference/workflows.md +2 -0
  21. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/toc.yml +2 -0
  22. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/upgrade.md +5 -1
  23. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/EXTENSION-PUBLISHING-GUIDE.md +1 -0
  24. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/catalog.community.json +84 -8
  25. {specify_cli-0.11.6 → specify_cli-0.11.8}/integrations/catalog.json +10 -1
  26. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/PUBLISHING.md +54 -3
  27. {specify_cli-0.11.6 → specify_cli-0.11.8}/pyproject.toml +11 -1
  28. {specify_cli-0.11.6 → specify_cli-0.11.8}/scripts/powershell/check-prerequisites.ps1 +6 -6
  29. {specify_cli-0.11.6 → specify_cli-0.11.8}/scripts/powershell/create-new-feature.ps1 +5 -2
  30. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/_utils.py +21 -4
  31. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/agents.py +34 -4
  32. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/extensions/__init__.py +14 -5
  33. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/__init__.py +2 -0
  34. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/base.py +3 -0
  35. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/codex/__init__.py +1 -0
  36. specify_cli-0.11.8/src/specify_cli/integrations/kimi/__init__.py +489 -0
  37. specify_cli-0.11.8/src/specify_cli/integrations/omp/__init__.py +45 -0
  38. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/presets/__init__.py +5 -0
  39. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/shared_infra.py +71 -0
  40. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/workflows/engine.py +51 -3
  41. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/workflows/expressions.py +38 -1
  42. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/workflows/steps/shell/__init__.py +1 -1
  43. specify_cli-0.11.8/tests/integrations/test_integration_kimi.py +593 -0
  44. specify_cli-0.11.8/tests/integrations/test_integration_omp.py +31 -0
  45. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_subcommand.py +1 -1
  46. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_agent_config_consistency.py +10 -3
  47. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_check_prerequisites_paths_only.py +60 -4
  48. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_extension_skills.py +78 -0
  49. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_extensions.py +256 -1
  50. specify_cli-0.11.8/tests/test_github_workflows.py +41 -0
  51. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_presets.py +96 -8
  52. specify_cli-0.11.8/tests/test_shared_infra_integrity.py +101 -0
  53. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_timestamp_branches.py +46 -0
  54. specify_cli-0.11.8/tests/test_utils.py +15 -0
  55. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_workflows.py +160 -0
  56. {specify_cli-0.11.6 → specify_cli-0.11.8}/workflows/PUBLISHING.md +12 -0
  57. specify_cli-0.11.6/src/specify_cli/integrations/kimi/__init__.py +0 -125
  58. specify_cli-0.11.6/tests/integrations/test_integration_kimi.py +0 -149
  59. {specify_cli-0.11.6 → specify_cli-0.11.8}/.devcontainer/devcontainer.json +0 -0
  60. {specify_cli-0.11.6 → specify_cli-0.11.8}/.editorconfig +0 -0
  61. {specify_cli-0.11.6 → specify_cli-0.11.8}/.gitattributes +0 -0
  62. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/CODEOWNERS +0 -0
  63. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  64. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
  65. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  66. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/aw/actions-lock.json +0 -0
  67. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/dependabot.yml +0 -0
  68. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/skills/add-community-extension/SKILL.md +0 -0
  69. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/workflows/RELEASE-PROCESS.md +0 -0
  70. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/workflows/add-community-extension.lock.yml +0 -0
  71. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/workflows/add-community-extension.md +0 -0
  72. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/workflows/bug-assess.lock.yml +0 -0
  73. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/workflows/bug-assess.md +0 -0
  74. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/workflows/codeql.yml +0 -0
  75. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/workflows/docs.yml +0 -0
  76. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/workflows/publish-pypi.yml +0 -0
  77. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/workflows/release-trigger.yml +0 -0
  78. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/workflows/release.yml +0 -0
  79. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/workflows/stale.yml +0 -0
  80. {specify_cli-0.11.6 → specify_cli-0.11.8}/.github/workflows/test.yml +0 -0
  81. {specify_cli-0.11.6 → specify_cli-0.11.8}/.gitignore +0 -0
  82. {specify_cli-0.11.6 → specify_cli-0.11.8}/.markdownlint-cli2.jsonc +0 -0
  83. {specify_cli-0.11.6 → specify_cli-0.11.8}/.zenodo.json +0 -0
  84. {specify_cli-0.11.6 → specify_cli-0.11.8}/AGENTS.md +0 -0
  85. {specify_cli-0.11.6 → specify_cli-0.11.8}/CITATION.cff +0 -0
  86. {specify_cli-0.11.6 → specify_cli-0.11.8}/CODE_OF_CONDUCT.md +0 -0
  87. {specify_cli-0.11.6 → specify_cli-0.11.8}/DEVELOPMENT.md +0 -0
  88. {specify_cli-0.11.6 → specify_cli-0.11.8}/LICENSE +0 -0
  89. {specify_cli-0.11.6 → specify_cli-0.11.8}/SECURITY.md +0 -0
  90. {specify_cli-0.11.6 → specify_cli-0.11.8}/SUPPORT.md +0 -0
  91. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/.gitignore +0 -0
  92. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/README.md +0 -0
  93. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/community/overview.md +0 -0
  94. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/community/presets.md +0 -0
  95. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/community/walkthroughs.md +0 -0
  96. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/concepts/complex-features.md +0 -0
  97. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/concepts/sdd.md +0 -0
  98. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/concepts/spec-persistence.md +0 -0
  99. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/docfx.json +0 -0
  100. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/guides/evolving-specs.md +0 -0
  101. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/index.md +0 -0
  102. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/install/air-gapped.md +0 -0
  103. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/install/one-time.md +0 -0
  104. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/install/pipx.md +0 -0
  105. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/install/uv.md +0 -0
  106. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/local-development.md +0 -0
  107. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/reference/authentication.md +0 -0
  108. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/reference/bundles.md +0 -0
  109. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/reference/core.md +0 -0
  110. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/reference/extensions.md +0 -0
  111. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/reference/overview.md +0 -0
  112. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/reference/presets.md +0 -0
  113. {specify_cli-0.11.6 → specify_cli-0.11.8}/docs/template/public/main.css +0 -0
  114. {specify_cli-0.11.6 → specify_cli-0.11.8}/examples/bundles/business-analyst/README.md +0 -0
  115. {specify_cli-0.11.6 → specify_cli-0.11.8}/examples/bundles/business-analyst/bundle.yml +0 -0
  116. {specify_cli-0.11.6 → specify_cli-0.11.8}/examples/bundles/developer/README.md +0 -0
  117. {specify_cli-0.11.6 → specify_cli-0.11.8}/examples/bundles/developer/bundle.yml +0 -0
  118. {specify_cli-0.11.6 → specify_cli-0.11.8}/examples/bundles/product-manager/README.md +0 -0
  119. {specify_cli-0.11.6 → specify_cli-0.11.8}/examples/bundles/product-manager/bundle.yml +0 -0
  120. {specify_cli-0.11.6 → specify_cli-0.11.8}/examples/bundles/security-researcher/README.md +0 -0
  121. {specify_cli-0.11.6 → specify_cli-0.11.8}/examples/bundles/security-researcher/bundle.yml +0 -0
  122. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/EXTENSION-API-REFERENCE.md +0 -0
  123. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -0
  124. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/EXTENSION-USER-GUIDE.md +0 -0
  125. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/README.md +0 -0
  126. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
  127. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/agent-context/README.md +0 -0
  128. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/agent-context/agent-context-config.yml +0 -0
  129. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
  130. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/agent-context/extension.yml +0 -0
  131. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/agent-context/scripts/bash/update-agent-context.sh +0 -0
  132. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -0
  133. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/bug/README.md +0 -0
  134. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/bug/commands/speckit.bug.assess.md +0 -0
  135. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/bug/commands/speckit.bug.fix.md +0 -0
  136. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/bug/commands/speckit.bug.test.md +0 -0
  137. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/bug/extension.yml +0 -0
  138. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/catalog.json +0 -0
  139. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/git/README.md +0 -0
  140. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/git/commands/speckit.git.commit.md +0 -0
  141. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/git/commands/speckit.git.feature.md +0 -0
  142. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/git/commands/speckit.git.initialize.md +0 -0
  143. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/git/commands/speckit.git.remote.md +0 -0
  144. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/git/commands/speckit.git.validate.md +0 -0
  145. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/git/config-template.yml +0 -0
  146. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/git/extension.yml +0 -0
  147. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/git/git-config.yml +0 -0
  148. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/git/scripts/bash/auto-commit.sh +0 -0
  149. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
  150. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/git/scripts/bash/git-common.sh +0 -0
  151. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
  152. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
  153. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +0 -0
  154. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
  155. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
  156. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/selftest/commands/selftest.md +0 -0
  157. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/selftest/extension.yml +0 -0
  158. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/template/.gitignore +0 -0
  159. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/template/CHANGELOG.md +0 -0
  160. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/template/EXAMPLE-README.md +0 -0
  161. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/template/LICENSE +0 -0
  162. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/template/README.md +0 -0
  163. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/template/commands/example.md +0 -0
  164. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/template/config-template.yml +0 -0
  165. {specify_cli-0.11.6 → specify_cli-0.11.8}/extensions/template/extension.yml +0 -0
  166. {specify_cli-0.11.6 → specify_cli-0.11.8}/integrations/CONTRIBUTING.md +0 -0
  167. {specify_cli-0.11.6 → specify_cli-0.11.8}/integrations/README.md +0 -0
  168. {specify_cli-0.11.6 → specify_cli-0.11.8}/integrations/catalog.community.json +0 -0
  169. {specify_cli-0.11.6 → specify_cli-0.11.8}/media/bootstrap-claude-code.gif +0 -0
  170. {specify_cli-0.11.6 → specify_cli-0.11.8}/media/logo_large.webp +0 -0
  171. {specify_cli-0.11.6 → specify_cli-0.11.8}/media/logo_small.webp +0 -0
  172. {specify_cli-0.11.6 → specify_cli-0.11.8}/media/spec-kit-video-header.jpg +0 -0
  173. {specify_cli-0.11.6 → specify_cli-0.11.8}/media/specify_cli.gif +0 -0
  174. {specify_cli-0.11.6 → specify_cli-0.11.8}/newsletters/2026-April.md +0 -0
  175. {specify_cli-0.11.6 → specify_cli-0.11.8}/newsletters/2026-February.md +0 -0
  176. {specify_cli-0.11.6 → specify_cli-0.11.8}/newsletters/2026-March.md +0 -0
  177. {specify_cli-0.11.6 → specify_cli-0.11.8}/newsletters/2026-May.md +0 -0
  178. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/ARCHITECTURE.md +0 -0
  179. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/README.md +0 -0
  180. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/catalog.community.json +0 -0
  181. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/catalog.json +0 -0
  182. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/lean/README.md +0 -0
  183. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/lean/commands/speckit.constitution.md +0 -0
  184. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/lean/commands/speckit.implement.md +0 -0
  185. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/lean/commands/speckit.plan.md +0 -0
  186. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/lean/commands/speckit.specify.md +0 -0
  187. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/lean/commands/speckit.tasks.md +0 -0
  188. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/lean/preset.yml +0 -0
  189. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/scaffold/README.md +0 -0
  190. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
  191. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/scaffold/commands/speckit.specify.md +0 -0
  192. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/scaffold/preset.yml +0 -0
  193. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/scaffold/templates/myext-template.md +0 -0
  194. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/scaffold/templates/spec-template.md +0 -0
  195. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/self-test/commands/speckit.specify.md +0 -0
  196. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/self-test/commands/speckit.wrap-test.md +0 -0
  197. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/self-test/preset.yml +0 -0
  198. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/self-test/templates/agent-file-template.md +0 -0
  199. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/self-test/templates/checklist-template.md +0 -0
  200. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/self-test/templates/constitution-template.md +0 -0
  201. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/self-test/templates/plan-template.md +0 -0
  202. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/self-test/templates/spec-template.md +0 -0
  203. {specify_cli-0.11.6 → specify_cli-0.11.8}/presets/self-test/templates/tasks-template.md +0 -0
  204. {specify_cli-0.11.6 → specify_cli-0.11.8}/scripts/bash/check-prerequisites.sh +0 -0
  205. {specify_cli-0.11.6 → specify_cli-0.11.8}/scripts/bash/common.sh +0 -0
  206. {specify_cli-0.11.6 → specify_cli-0.11.8}/scripts/bash/create-new-feature.sh +0 -0
  207. {specify_cli-0.11.6 → specify_cli-0.11.8}/scripts/bash/setup-plan.sh +0 -0
  208. {specify_cli-0.11.6 → specify_cli-0.11.8}/scripts/bash/setup-tasks.sh +0 -0
  209. {specify_cli-0.11.6 → specify_cli-0.11.8}/scripts/powershell/common.ps1 +0 -0
  210. {specify_cli-0.11.6 → specify_cli-0.11.8}/scripts/powershell/setup-plan.ps1 +0 -0
  211. {specify_cli-0.11.6 → specify_cli-0.11.8}/scripts/powershell/setup-tasks.ps1 +0 -0
  212. {specify_cli-0.11.6 → specify_cli-0.11.8}/spec-driven.md +0 -0
  213. {specify_cli-0.11.6 → specify_cli-0.11.8}/spec-kit.code-workspace +0 -0
  214. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/__init__.py +0 -0
  215. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/_agent_config.py +0 -0
  216. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/_assets.py +0 -0
  217. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/_console.py +0 -0
  218. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/_github_http.py +0 -0
  219. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/_init_options.py +0 -0
  220. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/_invocation_style.py +0 -0
  221. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/_version.py +0 -0
  222. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/authentication/__init__.py +0 -0
  223. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/authentication/azure_devops.py +0 -0
  224. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/authentication/base.py +0 -0
  225. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/authentication/config.py +0 -0
  226. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/authentication/github.py +0 -0
  227. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/authentication/http.py +0 -0
  228. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/__init__.py +0 -0
  229. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/commands_impl/__init__.py +0 -0
  230. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/commands_impl/catalog_config.py +0 -0
  231. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/lib/__init__.py +0 -0
  232. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/lib/project.py +0 -0
  233. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/lib/versioning.py +0 -0
  234. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/lib/yamlio.py +0 -0
  235. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/models/__init__.py +0 -0
  236. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/models/catalog.py +0 -0
  237. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/models/manifest.py +0 -0
  238. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/models/records.py +0 -0
  239. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/services/__init__.py +0 -0
  240. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/services/adapters.py +0 -0
  241. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/services/catalog_stack.py +0 -0
  242. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/services/conflict.py +0 -0
  243. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/services/installer.py +0 -0
  244. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/services/packager.py +0 -0
  245. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/services/primitives.py +0 -0
  246. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/services/references.py +0 -0
  247. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/services/resolver.py +0 -0
  248. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/bundler/services/validator.py +0 -0
  249. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/catalogs.py +0 -0
  250. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/commands/__init__.py +0 -0
  251. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/commands/bundle/__init__.py +0 -0
  252. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/commands/init.py +0 -0
  253. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/extensions/_commands.py +0 -0
  254. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integration_runtime.py +0 -0
  255. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integration_scaffold.py +0 -0
  256. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integration_state.py +0 -0
  257. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integration_status.py +0 -0
  258. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/_commands.py +0 -0
  259. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/_helpers.py +0 -0
  260. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/_install_commands.py +0 -0
  261. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/_migrate_commands.py +0 -0
  262. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/_query_commands.py +0 -0
  263. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/_scaffold_commands.py +0 -0
  264. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/agy/__init__.py +0 -0
  265. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/amp/__init__.py +0 -0
  266. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/auggie/__init__.py +0 -0
  267. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/bob/__init__.py +0 -0
  268. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/catalog.py +0 -0
  269. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/claude/__init__.py +0 -0
  270. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/cline/__init__.py +0 -0
  271. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
  272. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/copilot/__init__.py +0 -0
  273. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -0
  274. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/devin/__init__.py +0 -0
  275. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/firebender/__init__.py +0 -0
  276. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/forge/__init__.py +0 -0
  277. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/gemini/__init__.py +0 -0
  278. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/generic/__init__.py +0 -0
  279. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/goose/__init__.py +0 -0
  280. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/hermes/__init__.py +0 -0
  281. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/iflow/__init__.py +0 -0
  282. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/junie/__init__.py +0 -0
  283. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/kilocode/__init__.py +0 -0
  284. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -0
  285. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/lingma/__init__.py +0 -0
  286. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/manifest.py +0 -0
  287. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/opencode/__init__.py +0 -0
  288. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/pi/__init__.py +0 -0
  289. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
  290. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/qwen/__init__.py +0 -0
  291. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/roo/__init__.py +0 -0
  292. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/rovodev/__init__.py +0 -0
  293. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/shai/__init__.py +0 -0
  294. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
  295. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/trae/__init__.py +0 -0
  296. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/vibe/__init__.py +0 -0
  297. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/windsurf/__init__.py +0 -0
  298. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/zcode/__init__.py +0 -0
  299. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/integrations/zed/__init__.py +0 -0
  300. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/presets/_commands.py +0 -0
  301. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/workflows/__init__.py +0 -0
  302. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/workflows/base.py +0 -0
  303. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/workflows/catalog.py +0 -0
  304. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/workflows/steps/__init__.py +0 -0
  305. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/workflows/steps/command/__init__.py +0 -0
  306. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/workflows/steps/do_while/__init__.py +0 -0
  307. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/workflows/steps/fan_in/__init__.py +0 -0
  308. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/workflows/steps/fan_out/__init__.py +0 -0
  309. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/workflows/steps/gate/__init__.py +0 -0
  310. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/workflows/steps/if_then/__init__.py +0 -0
  311. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/workflows/steps/init/__init__.py +0 -0
  312. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/workflows/steps/prompt/__init__.py +0 -0
  313. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/workflows/steps/switch/__init__.py +0 -0
  314. {specify_cli-0.11.6 → specify_cli-0.11.8}/src/specify_cli/workflows/steps/while_loop/__init__.py +0 -0
  315. {specify_cli-0.11.6 → specify_cli-0.11.8}/templates/checklist-template.md +0 -0
  316. {specify_cli-0.11.6 → specify_cli-0.11.8}/templates/commands/analyze.md +0 -0
  317. {specify_cli-0.11.6 → specify_cli-0.11.8}/templates/commands/checklist.md +0 -0
  318. {specify_cli-0.11.6 → specify_cli-0.11.8}/templates/commands/clarify.md +0 -0
  319. {specify_cli-0.11.6 → specify_cli-0.11.8}/templates/commands/constitution.md +0 -0
  320. {specify_cli-0.11.6 → specify_cli-0.11.8}/templates/commands/converge.md +0 -0
  321. {specify_cli-0.11.6 → specify_cli-0.11.8}/templates/commands/implement.md +0 -0
  322. {specify_cli-0.11.6 → specify_cli-0.11.8}/templates/commands/plan.md +0 -0
  323. {specify_cli-0.11.6 → specify_cli-0.11.8}/templates/commands/specify.md +0 -0
  324. {specify_cli-0.11.6 → specify_cli-0.11.8}/templates/commands/tasks.md +0 -0
  325. {specify_cli-0.11.6 → specify_cli-0.11.8}/templates/commands/taskstoissues.md +0 -0
  326. {specify_cli-0.11.6 → specify_cli-0.11.8}/templates/constitution-template.md +0 -0
  327. {specify_cli-0.11.6 → specify_cli-0.11.8}/templates/plan-template.md +0 -0
  328. {specify_cli-0.11.6 → specify_cli-0.11.8}/templates/spec-template.md +0 -0
  329. {specify_cli-0.11.6 → specify_cli-0.11.8}/templates/tasks-template.md +0 -0
  330. {specify_cli-0.11.6 → specify_cli-0.11.8}/templates/vscode-settings.json +0 -0
  331. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/__init__.py +0 -0
  332. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/auth_helpers.py +0 -0
  333. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/bundler_helpers.py +0 -0
  334. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/conftest.py +0 -0
  335. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/contract/test_bundle_cli.py +0 -0
  336. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/contract/test_catalog_schema.py +0 -0
  337. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/contract/test_manifest_schema.py +0 -0
  338. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/extensions/__init__.py +0 -0
  339. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/extensions/bug/__init__.py +0 -0
  340. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/extensions/bug/test_bug_extension.py +0 -0
  341. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/extensions/git/__init__.py +0 -0
  342. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/extensions/git/test_git_extension.py +0 -0
  343. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/extensions/test_extension_agent_context.py +0 -0
  344. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/hooks/TESTING.md +0 -0
  345. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/hooks/plan.md +0 -0
  346. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/hooks/spec.md +0 -0
  347. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/hooks/tasks.md +0 -0
  348. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/http_helpers.py +0 -0
  349. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integration/test_bundler_catalog_stack.py +0 -0
  350. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integration/test_bundler_init_install.py +0 -0
  351. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integration/test_bundler_install_flow.py +0 -0
  352. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integration/test_bundler_local_install.py +0 -0
  353. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integration/test_bundler_offline.py +0 -0
  354. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integration/test_bundler_security_paths.py +0 -0
  355. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/__init__.py +0 -0
  356. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/conftest.py +0 -0
  357. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_base.py +0 -0
  358. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_cli.py +0 -0
  359. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_extra_args.py +0 -0
  360. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_agy.py +0 -0
  361. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_amp.py +0 -0
  362. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_auggie.py +0 -0
  363. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_base_markdown.py +0 -0
  364. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_base_skills.py +0 -0
  365. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_base_toml.py +0 -0
  366. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_base_yaml.py +0 -0
  367. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_bob.py +0 -0
  368. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_catalog.py +0 -0
  369. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_claude.py +0 -0
  370. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_cline.py +0 -0
  371. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_codebuddy.py +0 -0
  372. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_codex.py +0 -0
  373. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_copilot.py +0 -0
  374. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_cursor_agent.py +0 -0
  375. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_devin.py +0 -0
  376. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_firebender.py +0 -0
  377. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_forge.py +0 -0
  378. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_gemini.py +0 -0
  379. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_generic.py +0 -0
  380. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_goose.py +0 -0
  381. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_hermes.py +0 -0
  382. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_iflow.py +0 -0
  383. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_junie.py +0 -0
  384. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_kilocode.py +0 -0
  385. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_kiro_cli.py +0 -0
  386. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_lingma.py +0 -0
  387. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_opencode.py +0 -0
  388. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_pi.py +0 -0
  389. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_qodercli.py +0 -0
  390. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_qwen.py +0 -0
  391. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_roo.py +0 -0
  392. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_rovodev.py +0 -0
  393. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_scaffold.py +0 -0
  394. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_shai.py +0 -0
  395. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_state.py +0 -0
  396. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_tabnine.py +0 -0
  397. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_trae.py +0 -0
  398. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_vibe.py +0 -0
  399. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_windsurf.py +0 -0
  400. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_zcode.py +0 -0
  401. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_integration_zed.py +0 -0
  402. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_manifest.py +0 -0
  403. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/integrations/test_registry.py +0 -0
  404. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/self_upgrade_helpers.py +0 -0
  405. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_authentication.py +0 -0
  406. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_branch_numbering.py +0 -0
  407. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_check_tool.py +0 -0
  408. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_cli_version.py +0 -0
  409. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_commands_package.py +0 -0
  410. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_console_imports.py +0 -0
  411. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_extension_registration.py +0 -0
  412. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_extension_update_hardening.py +0 -0
  413. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_github_http.py +0 -0
  414. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_init_dir.py +0 -0
  415. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_live_transient_windows.py +0 -0
  416. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_merge.py +0 -0
  417. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_ps1_encoding.py +0 -0
  418. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_registrar_path_traversal.py +0 -0
  419. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_self_upgrade_detection.py +0 -0
  420. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_self_upgrade_execution.py +0 -0
  421. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_self_upgrade_guidance.py +0 -0
  422. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_self_upgrade_verification.py +0 -0
  423. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_setup_plan_feature_json.py +0 -0
  424. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_setup_plan_no_overwrite.py +0 -0
  425. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_setup_tasks.py +0 -0
  426. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_upgrade.py +0 -0
  427. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_utils_assets_imports.py +0 -0
  428. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_version_imports.py +0 -0
  429. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/test_workflow_run_without_project.py +0 -0
  430. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/unit/test_bundler_adapters.py +0 -0
  431. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/unit/test_bundler_catalog_config.py +0 -0
  432. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/unit/test_bundler_conflict.py +0 -0
  433. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/unit/test_bundler_packager.py +0 -0
  434. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/unit/test_bundler_primitives.py +0 -0
  435. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/unit/test_bundler_records.py +0 -0
  436. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/unit/test_bundler_references.py +0 -0
  437. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/unit/test_bundler_resolver.py +0 -0
  438. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/unit/test_bundler_validator.py +0 -0
  439. {specify_cli-0.11.6 → specify_cli-0.11.8}/tests/unit/test_bundler_versioning.py +0 -0
  440. {specify_cli-0.11.6 → specify_cli-0.11.8}/workflows/ARCHITECTURE.md +0 -0
  441. {specify_cli-0.11.6 → specify_cli-0.11.8}/workflows/README.md +0 -0
  442. {specify_cli-0.11.6 → specify_cli-0.11.8}/workflows/catalog.community.json +0 -0
  443. {specify_cli-0.11.6 → specify_cli-0.11.8}/workflows/catalog.json +0 -0
  444. {specify_cli-0.11.6 → specify_cli-0.11.8}/workflows/speckit/workflow.yml +0 -0
  445. {specify_cli-0.11.6 → specify_cli-0.11.8}/workflows/step-catalog.community.json +0 -0
  446. {specify_cli-0.11.6 → specify_cli-0.11.8}/workflows/step-catalog.json +0 -0
@@ -88,9 +88,9 @@ fi
88
88
  run_command "$kiro_binary --help > /dev/null"
89
89
  echo "✅ Done"
90
90
 
91
- echo -e "\n🤖 Installing Kimi CLI..."
91
+ echo -e "\n🤖 Installing Kimi Code CLI..."
92
92
  # https://code.kimi.com
93
- run_command "pipx install kimi-cli"
93
+ run_command "npm install -g @moonshot-ai/kimi-code@latest"
94
94
  echo "✅ Done"
95
95
 
96
96
  echo -e "\n🤖 Installing CodeBuddy CLI..."
@@ -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, 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, 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
12
12
 
13
13
  - type: input
14
14
  id: agent-name
@@ -85,6 +85,7 @@ body:
85
85
  - Kiro CLI
86
86
  - Lingma
87
87
  - Mistral Vibe
88
+ - Oh My Pi
88
89
  - opencode
89
90
  - Pi Coding Agent
90
91
  - Qoder CLI
@@ -79,6 +79,7 @@ body:
79
79
  - Kiro CLI
80
80
  - Lingma
81
81
  - Mistral Vibe
82
+ - Oh My Pi
82
83
  - opencode
83
84
  - Pi Coding Agent
84
85
  - Qoder CLI
@@ -77,6 +77,18 @@ body:
77
77
  validations:
78
78
  required: true
79
79
 
80
+ - type: input
81
+ id: documentation
82
+ attributes:
83
+ label: Documentation URL
84
+ description: |
85
+ Link to the README that explains how to use **this preset** (not a general product/framework pitch).
86
+ Prefer the preset-scoped README (e.g. `presets/<id>/README.md` in a monorepo) over the repository root README.
87
+ It must contain at least one valid `specify preset add ...` install command — ideally `specify preset add --from <download-url>` using the exact Download URL above (other forms such as `specify preset add <preset-id>` or `specify preset add --dev <path>` are also accepted).
88
+ placeholder: "https://github.com/your-org/spec-kit-presets/blob/main/presets/your-preset/README.md"
89
+ validations:
90
+ required: true
91
+
80
92
  - type: input
81
93
  id: license
82
94
  attributes:
@@ -175,7 +187,7 @@ body:
175
187
  options:
176
188
  - label: Valid `preset.yml` manifest included
177
189
  required: true
178
- - label: README.md with description and usage instructions
190
+ - label: Linked README (Documentation URL) explains how to use this preset and includes a valid `specify preset add ...` command (preferably `specify preset add --from <download-url>` using the exact download URL)
179
191
  required: true
180
192
  - label: LICENSE file included
181
193
  required: true
@@ -1,4 +1,4 @@
1
- # gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"b4ba1db5fdec754fa825cc3160879924118bc454a781eed70ef6c90beab83a95","body_hash":"392ace500b7cb9b0aa6b020d150841de398bcbcfe54dbad729f0d860d698bde2","compiler_version":"v0.79.8","strict":true,"agent_id":"copilot","engine_versions":{"copilot":"1.0.60"}}
1
+ # gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"b4ba1db5fdec754fa825cc3160879924118bc454a781eed70ef6c90beab83a95","body_hash":"cb6c19088fa13da0a8320c174e8c14c4887d2c8a005a5cb2d2d2faa3f890de39","compiler_version":"v0.79.8","strict":true,"agent_id":"copilot","engine_versions":{"copilot":"1.0.60"}}
2
2
  # gh-aw-manifest: {"version":1,"secrets":["COPILOT_GITHUB_TOKEN","GH_AW_CI_TRIGGER_TOKEN","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/checkout","sha":"df4cb1c069e1874edd31b4311f1884172cec0e10","version":"v6.0.3"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e","version":"v6.4.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"},{"repo":"github/gh-aw-actions/setup","sha":"c0338fef4749d08c21f8f975fb0e37efa17dda47","version":"v0.79.8"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.27.2","digest":"sha256:f88e5b17b6b7a600117bc121114d6ce2155c88c983c0c939c5df884f730fa1d6","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.27.2@sha256:f88e5b17b6b7a600117bc121114d6ce2155c88c983c0c939c5df884f730fa1d6"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.27.2","digest":"sha256:ee39841d980878ebbb87592903b06d31a1af500c71525c9616f7e8e2a27041a4","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.27.2@sha256:ee39841d980878ebbb87592903b06d31a1af500c71525c9616f7e8e2a27041a4"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.27.2","digest":"sha256:2e3a717e5f19a654cd9a2263beb52012b56bcb68562ec5ae2e42f9d156b49591","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.27.2@sha256:2e3a717e5f19a654cd9a2263beb52012b56bcb68562ec5ae2e42f9d156b49591"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.3.25","digest":"sha256:c10331ad17668ef89f38f5e356678788a40b0cd5fef96e8f92e1d9c1de47cbaa","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.3.25@sha256:c10331ad17668ef89f38f5e356678788a40b0cd5fef96e8f92e1d9c1de47cbaa"},{"image":"ghcr.io/github/github-mcp-server:v1.1.2","digest":"sha256:30197479d8036c7811892bc07e06f9a05c9ef3cdd79bc59f256d50647f95788c","pinned_image":"ghcr.io/github/github-mcp-server:v1.1.2@sha256:30197479d8036c7811892bc07e06f9a05c9ef3cdd79bc59f256d50647f95788c"}]}
3
3
  # This file was automatically generated by gh-aw (v0.79.8). DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md
4
4
  #
@@ -73,6 +73,7 @@ fields):
73
73
  | Author | `author` | Yes |
74
74
  | Repository URL | `repository` | Yes |
75
75
  | Download URL | `download-url` | Yes |
76
+ | Documentation URL | `documentation` | Yes |
76
77
  | License | `license` | Yes |
77
78
  | Required Spec Kit Version | `speckit-version` | Yes |
78
79
  | Required Extensions | `required-extensions` | No |
@@ -100,17 +101,70 @@ deciding pass/fail:
100
101
  ### 2c. Repository validation
101
102
  - Fetch the repository URL — confirm it exists and is publicly accessible
102
103
  - Confirm the repository contains a `preset.yml` file
103
- - Confirm the repository contains a `README.md` file
104
104
  - Confirm the repository contains a `LICENSE` file
105
105
 
106
- ### 2d. Release and download URL validation
106
+ > The README requirement is enforced once, in **Step 2d**, against the specific file the
107
+ > `documentation` field points to — not a generic repository-root `README.md`. This avoids
108
+ > the monorepo false-positive where a root README exists but isn't the preset-usage doc.
109
+
110
+ ### 2d. Documentation README validation
111
+
112
+ The `documentation` field must point to the README that explains **how to use this
113
+ preset** — not just any file named `README.md`, and not a product/framework pitch.
114
+
115
+ - **Restrict the URL to GitHub before fetching.** The `documentation` value is
116
+ user-provided input. Only accept GitHub-hosted README URLs:
117
+ - `https://github.com/<owner>/<repo>/blob/<ref>/<path>`
118
+ - `https://github.com/<owner>/<repo>/raw/<ref>/<path>`
119
+ - `https://raw.githubusercontent.com/<owner>/<repo>/<ref>/<path>`
120
+
121
+ If the URL points anywhere else (or isn't a URL), **fail this check** and do not fetch it.
122
+ - **Require the URL to point at a README file.** After stripping any fragment/query (see
123
+ below), the URL path must end with `README.md` (case-insensitive). If it points at some
124
+ other Markdown file, **fail this check** and ask the submitter to link the preset's README.
125
+ - Fetch the **exact URL** in the `documentation` field. First strip any fragment (`#...`)
126
+ or query string (`?...`) — these are common when copying from the browser UI and must be
127
+ ignored so the fetch target is deterministic. Then resolve the raw content to fetch:
128
+ - For a `github.com/<owner>/<repo>/blob/<ref>/<path>` URL, fetch the equivalent
129
+ `github.com/<owner>/<repo>/raw/<ref>/<path>` URL (only swap `/blob/` → `/raw/`).
130
+ - Fetch `github.com/.../raw/...` and `raw.githubusercontent.com/...` URLs as-is.
131
+
132
+ Do **not** rewrite into `raw.githubusercontent.com/<owner>/<repo>/<ref>/<path>` form — that
133
+ format can't reliably represent refs containing slashes (e.g. a `feature/foo` branch).
134
+ Confirm the fetched URL resolves to a readable Markdown file.
135
+ - **Validate that the README contains a valid Spec Kit CLI install command.** The fetched
136
+ README must contain at least one `specify preset add ...` invocation. The strongest
137
+ signal is the catalog-install form whose URL matches the submitted **Download URL**:
138
+ - `specify preset add --from <download-url>` (preferred), or
139
+ - `specify preset add <preset-id>`, or
140
+ - `specify preset add --dev <path>`
141
+
142
+ A `specify preset add --from <url>` command only counts when its `<url>` **matches the
143
+ submitted Download URL exactly**. A `--from` command pointing at a *different* URL does
144
+ **not** satisfy the install-command requirement (treat it as if absent) — but the README
145
+ may still pass on one of the other accepted forms (`specify preset add <preset-id>` or
146
+ `specify preset add --dev <path>`).
147
+
148
+ If **no** accepted `specify preset add ...` command is present, the README is treated as a
149
+ generic description/pitch rather than preset-usage documentation — **fail this check** and
150
+ tell the submitter to add a valid install command (ideally
151
+ `specify preset add --from <download-url>`).
152
+ - **Prefer a preset-scoped README in monorepos.** If `documentation` resolves to a generic
153
+ repository-root README in a monorepo (the preset lives in a subdirectory such as
154
+ `presets/<id>/` and a preset-scoped README exists there), **flag it** in your comment and
155
+ recommend the submitter point `documentation` at the preset-scoped README
156
+ (e.g. `presets/<id>/README.md`) so the catalog surfaces usage instead of marketing. Treat
157
+ this as a flag rather than a hard failure **only if** the root README still contains a valid
158
+ `specify preset add ...` command for this preset; otherwise it fails check 2d above.
159
+
160
+ ### 2e. Release and download URL validation
107
161
  - The download URL should follow the pattern
108
162
  `https://github.com/<owner>/<repo>/archive/refs/tags/v<version>.zip`
109
163
  or
110
164
  `https://github.com/<owner>/<repo>/releases/download/<tag>/<asset>.zip`
111
165
  - Verify a GitHub release exists matching the submitted version
112
166
 
113
- ### 2e. Submission checklists
167
+ ### 2f. Submission checklists
114
168
  - Confirm that all required checkboxes in the Testing Checklist and Submission
115
169
  Requirements sections are checked (`[x]`)
116
170
 
@@ -154,7 +208,7 @@ Insert the entry in **alphabetical order by preset ID** within the
154
208
  "repository": "<repository>",
155
209
  "download_url": "<download_url>",
156
210
  "homepage": "<homepage or repository>",
157
- "documentation": "<documentation or repository README>",
211
+ "documentation": "<documentation URL the validated preset-usage README>",
158
212
  "license": "<license>",
159
213
  "requires": {
160
214
  "speckit_version": "<speckit_version>"
@@ -19,7 +19,7 @@ jobs:
19
19
  permissions:
20
20
  issues: write
21
21
  steps:
22
- - uses: actions/github-script@v9
22
+ - uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9
23
23
  with:
24
24
  script: |
25
25
  const issue = context.payload.issue;
@@ -42,3 +42,15 @@ jobs:
42
42
  globs: |
43
43
  '**/*.md'
44
44
  !extensions/**/*.md
45
+
46
+ shellcheck:
47
+ runs-on: ubuntu-latest
48
+ steps:
49
+ - name: Checkout
50
+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
51
+
52
+ # shellcheck is preinstalled on ubuntu-latest runners.
53
+ # Start at --severity=error to block real bugs without flagging style
54
+ # (notably SC2155). Tighten in a follow-up after cleanup.
55
+ - name: Run shellcheck on shell scripts
56
+ run: git ls-files -z -- '*.sh' | xargs -0 shellcheck --severity=error
@@ -2,6 +2,36 @@
2
2
 
3
3
  <!-- insert new changelog below this comment -->
4
4
 
5
+ ## [0.11.8] - 2026-06-24
6
+
7
+ ### Changed
8
+
9
+ - docs: add SpecKit Assistant npm package to Community Friends (#3142)
10
+ - Require preset-usage README with Spec Kit CLI syntax in preset submissions (#3104)
11
+ - [extension] Update Jira Integration (Sync Engine) extension to v0.4.0 (#3152)
12
+ - Add Spec Roadmap extension to community catalog (#3153)
13
+ - feat(integration): update Kimi integration for Kimi Code CLI (#2979)
14
+ - [extension] Add Golden Demo extension to community catalog (#3151)
15
+ - docs: run /speckit.checklist after /speckit.plan in quickstart (#3108)
16
+ - fix(workflows): preserve commas inside quoted list-literal elements (#3134)
17
+ - ci: pin actions to commit SHAs and add shellcheck (#3126)
18
+ - chore: release 0.11.7, begin 0.11.8.dev0 development (#3154)
19
+
20
+ ## [0.11.7] - 2026-06-24
21
+
22
+ ### Changed
23
+
24
+ - feat(extensions): verify catalog archive sha256 before install (#3080)
25
+ - fix(workflows): validate requires keys and reject phantom permissions gate (#3079)
26
+ - fix(scripts): use case-sensitive match for acronym retention in PS branch names (#3130)
27
+ - feat(integrations): add omp support (#3107)
28
+ - fix: render valid TOML when a command body contains backslashes (#3135)
29
+ - harden: reject shell=True in run_command (#3132)
30
+ - docs: add monorepo guide (#3084)
31
+ - fix(scripts): send check-prerequisites.ps1 errors to stderr (#3123)
32
+ - fix: write Codex dev skills as files (#2988)
33
+ - chore: release 0.11.6, begin 0.11.7.dev0 development (#3121)
34
+
5
35
  ## [0.11.6] - 2026-06-23
6
36
 
7
37
  ### Changed
@@ -113,6 +113,16 @@ uv pip install -e ".[test]"
113
113
  > `specify_cli` to this checkout's `src/`. This matches the gotcha documented in
114
114
  > `AGENTS.md` (Common Pitfalls).
115
115
 
116
+ #### Shell scripts
117
+
118
+ ```bash
119
+ git ls-files -z -- '*.sh' | xargs -0 shellcheck --severity=error
120
+ ```
121
+
122
+ The CI `lint.yml` `shellcheck` job currently reports and blocks only
123
+ error-severity findings. Warnings such as SC2155 are intentionally outside this
124
+ job until a follow-up cleanup tightens the threshold.
125
+
116
126
  ### Manual testing
117
127
 
118
128
  #### Testing setup
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specify-cli
3
- Version: 0.11.6
3
+ Version: 0.11.8
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
@@ -423,7 +423,7 @@ specify init . --force --integration copilot
423
423
  specify init --here --force --integration copilot
424
424
  ```
425
425
 
426
- The CLI will check if you have Claude Code, Gemini CLI, Cursor CLI, Qwen CLI, opencode, Codex CLI, Qoder CLI, Tabnine CLI, Kiro CLI, Pi, Forge, Goose, Mistral Vibe, or ZCode installed. If you do not, or you prefer to get the templates without checking for the right tools, use `--ignore-agent-tools` with your command:
426
+ The CLI will check if you have Claude Code, Gemini CLI, Cursor CLI, Qwen CLI, opencode, Codex CLI, Qoder CLI, Tabnine CLI, Kiro CLI, Pi, Oh My Pi, Forge, Goose, Mistral Vibe, or ZCode installed. If you do not, or you prefer to get the templates without checking for the right tools, use `--ignore-agent-tools` with your command:
427
427
 
428
428
  ```bash
429
429
  specify init <project_name> --integration copilot --ignore-agent-tools
@@ -403,7 +403,7 @@ specify init . --force --integration copilot
403
403
  specify init --here --force --integration copilot
404
404
  ```
405
405
 
406
- The CLI will check if you have Claude Code, Gemini CLI, Cursor CLI, Qwen CLI, opencode, Codex CLI, Qoder CLI, Tabnine CLI, Kiro CLI, Pi, Forge, Goose, Mistral Vibe, or ZCode installed. If you do not, or you prefer to get the templates without checking for the right tools, use `--ignore-agent-tools` with your command:
406
+ The CLI will check if you have Claude Code, Gemini CLI, Cursor CLI, Qwen CLI, opencode, Codex CLI, Qoder CLI, Tabnine CLI, Kiro CLI, Pi, Oh My Pi, Forge, Goose, Mistral Vibe, or ZCode installed. If you do not, or you prefer to get the templates without checking for the right tools, use `--ignore-agent-tools` with your command:
407
407
 
408
408
  ```bash
409
409
  specify init <project_name> --integration copilot --ignore-agent-tools
@@ -56,6 +56,7 @@ The following community-contributed extensions are available in [`catalog.commun
56
56
  | Fleet Orchestrator | Orchestrate a full feature lifecycle with human-in-the-loop gates across all SpecKit phases | `process` | Read+Write | [spec-kit-fleet](https://github.com/sharathsatish/spec-kit-fleet) |
57
57
  | GitHub Issues Integration 1 | Generate spec artifacts from GitHub Issues - import issues, sync updates, and maintain bidirectional traceability | `integration` | Read+Write | [spec-kit-github-issues](https://github.com/Fatima367/spec-kit-github-issues) |
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
+ | 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) |
59
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) |
60
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
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) |
@@ -117,6 +118,7 @@ The following community-contributed extensions are available in [`catalog.commun
117
118
  | Spec Orchestrator | Cross-feature orchestration — track state, select tasks, and detect conflicts across parallel specs | `process` | Read-only | [spec-kit-orchestrator](https://github.com/Quratulain-bilal/spec-kit-orchestrator) |
118
119
  | Spec Reference Loader | Reads the ## References section from the feature spec and loads only the listed docs into context | `docs` | Read-only | [spec-kit-spec-reference-loader](https://github.com/KevinBrown5280/spec-kit-spec-reference-loader) |
119
120
  | Spec Refine | Update specs in-place, propagate changes to plan and tasks, and diff impact across artifacts | `process` | Read+Write | [spec-kit-refine](https://github.com/Quratulain-bilal/spec-kit-refine) |
121
+ | Spec Roadmap | Capture a durable spec roadmap after the constitution, then review specs against it before and after implementation so spec-specific decisions, outcomes, and constraints are never lost. | `process` | Read+Write | [speckit-roadmap](https://github.com/srobroek/speckit-roadmap) |
120
122
  | Spec Scope | Effort estimation and scope tracking — estimate work, detect creep, and budget time per phase | `process` | Read-only | [spec-kit-scope-](https://github.com/Quratulain-bilal/spec-kit-scope-) |
121
123
  | Spec Sync | Detect and resolve drift between specs and implementation. AI-assisted resolution with human approval | `docs` | Read+Write | [spec-kit-sync](https://github.com/bgervin/spec-kit-sync) |
122
124
  | Spec Trace | Build a requirement → test traceability matrix from spec.md and the test suite — surface untested requirements and orphan tests | `code` | Read+Write | [spec-kit-trace](https://github.com/Quratulain-bilal/spec-kit-trace) |
@@ -7,7 +7,9 @@ Community projects that extend, visualize, or build on Spec Kit:
7
7
 
8
8
  - **[cc-spex](https://github.com/rhuss/cc-spex)** — A Claude Code plugin that adds composable traits on top of Spec Kit with [Superpowers](https://github.com/obra/superpowers)-based quality gates, spec/code review, git worktree isolation, and parallel implementation via agent teams.
9
9
 
10
- - **[Spec Kit Assistant](https://marketplace.visualstudio.com/items?itemName=rfsales.speckit-assistant)** — A VS Code extension that provides a visual orchestrator for the full SDD workflow (constitution → specification → planning → tasks → implementation) with phase status visualization, an interactive task checklist, DAG visualization, and support for Claude, Gemini, GitHub Copilot, and OpenAI backends. Requires the `specify` CLI in your PATH.
10
+ - **[VS Code Spec Kit Assistant](https://marketplace.visualstudio.com/items?itemName=rfsales.speckit-assistant)** — A VS Code extension that provides a visual orchestrator for the full SDD workflow (constitution → specification → planning → tasks → implementation) with phase status visualization, an interactive task checklist, DAG visualization, and support for Claude, Gemini, GitHub Copilot, and OpenAI backends. Requires the `specify` CLI in your PATH.
11
+
12
+ - **[SpecKit Assistant](https://www.npmjs.com/package/speckit-assistant)** — A visual orchestrator for Spec-Driven Development (SDD). It connects your local specification, planning, and task checklists with AI agents (Claude, Gemini, GitHub Copilot). No global installation required — just run it via `npx speckit-assistant`.
11
13
 
12
14
  - **[SpecKit Companion](https://marketplace.visualstudio.com/items?itemName=alfredoperez.speckit-companion)** — A VS Code extension that brings a visual GUI to Spec Kit. Browse specs in a rich markdown viewer with clickable file references, create specifications with image attachments, comment and refine each step inline (GitHub-style review), track your progress through the SDD workflow with a visual phase stepper, and manage steering documents like constitutions and templates.
13
15
 
@@ -0,0 +1,111 @@
1
+ # Using Spec Kit in a Monorepo
2
+
3
+ A Spec Kit project is **directory-scoped**: the project is whichever directory
4
+ contains `.specify/`. A monorepo can hold several independent Spec Kit projects
5
+ under one repository root, each with its own `.specify/`, `specs/`, constitution,
6
+ and feature numbering.
7
+
8
+ Root resolution already prefers the **nearest** `.specify/` over the Git
9
+ toplevel, so commands run from inside a member project resolve to that project,
10
+ not the repo root.
11
+
12
+ ## Layout
13
+
14
+ ```text
15
+ my-monorepo/
16
+ ├── .git/ # one Git repository at the root
17
+ ├── apps/
18
+ │ ├── web/
19
+ │ │ └── .specify/ # Spec Kit project "web"
20
+ │ │ └── memory/constitution.md
21
+ │ └── api/
22
+ │ └── .specify/ # Spec Kit project "api"
23
+ │ └── memory/constitution.md
24
+ └── packages/
25
+ └── ui/
26
+ └── .specify/ # Spec Kit project "ui"
27
+ ```
28
+
29
+ Initialize each member project independently:
30
+
31
+ ```bash
32
+ specify init apps/web --integration claude
33
+ specify init apps/api --integration claude
34
+ ```
35
+
36
+ Each project keeps its own `specs/` directory and numbers features
37
+ independently (`apps/web/specs/001-…`, `apps/api/specs/001-…`).
38
+
39
+ ## Working inside a member project
40
+
41
+ The default workflow is unchanged: change into the project directory and run the
42
+ slash commands. Root resolution finds the nearest `.specify/`.
43
+
44
+ ```bash
45
+ cd apps/web
46
+ # then run /speckit.specify, /speckit.plan, … in your agent
47
+ ```
48
+
49
+ ## Targeting a member project from the repo root
50
+
51
+ For non-interactive or CI runs where you do not want to `cd`, set
52
+ **`SPECIFY_INIT_DIR`** to the member project root (the directory *containing*
53
+ `.specify/`). Relative paths resolve against the current directory.
54
+
55
+ ```bash
56
+ # operate on apps/web from the monorepo root (no cd required)
57
+ export SPECIFY_INIT_DIR=apps/web
58
+ ```
59
+
60
+ The path must exist and contain `.specify/`. If it does not, the command
61
+ **errors and does not fall back** to the current directory or the Git toplevel.
62
+ This is deliberate: a typo never writes specs into the wrong project. A
63
+ nonexistent path is reported as you typed it; a path that exists but is not a
64
+ Spec Kit project is reported as its resolved absolute path:
65
+
66
+ ```text
67
+ # SPECIFY_INIT_DIR=apps/wbe (typo: no such directory)
68
+ ERROR: SPECIFY_INIT_DIR does not point to an existing directory: apps/wbe
69
+
70
+ # SPECIFY_INIT_DIR=apps (exists, but has no .specify/ of its own)
71
+ ERROR: SPECIFY_INIT_DIR is not a Spec Kit project (no .specify/ directory): /home/you/my-monorepo/apps
72
+ ```
73
+
74
+ `SPECIFY_INIT_DIR` selects the **project**; `SPECIFY_FEATURE_DIRECTORY` selects
75
+ the **feature** within it. They compose: set both to pick a project and a
76
+ feature non-interactively. See the
77
+ [`SPECIFY_INIT_DIR` reference](../reference/core.md#environment-variables) for
78
+ the full contract and the two-axes model.
79
+
80
+ ## How `SPECIFY_INIT_DIR` reaches your agent
81
+
82
+ `SPECIFY_INIT_DIR` is read by the shell scripts that the slash commands invoke
83
+ (`get_repo_root` in Bash, `Get-RepoRoot` in PowerShell). It takes effect only
84
+ when it is present in the environment of the shell that runs those scripts.
85
+
86
+ - **Scripted / CI runs:** export it in the same shell that drives the commands;
87
+ it is reliable there.
88
+ - **Interactive agents:** whether an exported variable reaches the shell tool an
89
+ agent uses is agent-specific. Export `SPECIFY_INIT_DIR` *before* launching the
90
+ agent, and verify once (e.g. run `/speckit.specify` and confirm the new feature
91
+ landed under the intended project's `specs/`).
92
+
93
+ ## Git in a monorepo
94
+
95
+ > [!NOTE]
96
+ > Spec Kit project files are scoped to the **resolved project root**, but Git
97
+ > operations still run in the containing Git work tree. In a monorepo with a
98
+ > single Git repository at the root and projects in subdirectories, feature
99
+ > branch creation creates or switches branches in the shared root repository.
100
+ > Spec directories still live under the selected member project, while the Git
101
+ > branch namespace is shared by the whole monorepo. Manage branches and commits
102
+ > at the repository root, or initialize Git per member project if you want
103
+ > isolated per-project branch namespaces.
104
+
105
+ ## Constitutions
106
+
107
+ Each member project has its own `.specify/memory/constitution.md` and
108
+ `/speckit.constitution` edits the local project's file. Spec Kit does not provide
109
+ a built-in base/inheritance mechanism; if you want one constitution to reference
110
+ shared rules elsewhere in the monorepo, you need to maintain that wiring yourself.
111
+ Otherwise, duplicate or sync shared engineering rules per project.
@@ -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), or [Pi Coding Agent](https://pi.dev)
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)
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)_
@@ -51,6 +51,7 @@ specify init <project_name> --integration gemini
51
51
  specify init <project_name> --integration copilot
52
52
  specify init <project_name> --integration codebuddy
53
53
  specify init <project_name> --integration pi
54
+ specify init <project_name> --integration omp
54
55
  ```
55
56
 
56
57
  ### Specify Script Type (Shell vs PowerShell)
@@ -13,10 +13,10 @@ This guide will help you get started with Spec-Driven Development using Spec Kit
13
13
  After installing Spec Kit and defining your project constitution, quick experiments can use the lean feature path: `/speckit.specify` -> `/speckit.plan` -> `/speckit.tasks` -> `/speckit.implement`. For production features or any work with meaningful ambiguity, treat `/speckit.clarify`, `/speckit.checklist`, and `/speckit.analyze` as regular quality gates:
14
14
 
15
15
  ```text
16
- /speckit.constitution -> /speckit.specify -> /speckit.clarify -> /speckit.checklist -> /speckit.plan -> /speckit.tasks -> /speckit.analyze -> /speckit.implement
16
+ /speckit.constitution -> /speckit.specify -> /speckit.clarify -> /speckit.plan -> /speckit.checklist -> /speckit.tasks -> /speckit.analyze -> /speckit.implement
17
17
  ```
18
18
 
19
- Use `/speckit.clarify` to reduce requirement ambiguity before planning, `/speckit.checklist` to validate requirements quality before planning, and `/speckit.analyze` to check spec/plan/task consistency before implementation starts. You can repeat `/speckit.analyze` after implementation as an extra review, but keep the first analysis before `/speckit.implement` so gaps are caught while the plan and tasks can still be adjusted.
19
+ Use `/speckit.clarify` to reduce requirement ambiguity before planning, `/speckit.checklist` (after `/speckit.plan`) to generate quality checklists that validate requirements completeness, clarity, and consistency, and `/speckit.analyze` to check spec/plan/task consistency before implementation starts. You can repeat `/speckit.analyze` after implementation as an extra review, but keep the first analysis before `/speckit.implement` so gaps are caught while the plan and tasks can still be adjusted.
20
20
 
21
21
  ### Step 1: Install Specify
22
22
 
@@ -75,12 +75,6 @@ uvx --from git+https://github.com/github/spec-kit.git specify init <PROJECT_NAME
75
75
  /speckit.clarify Focus on security and performance requirements.
76
76
  ```
77
77
 
78
- Then validate the requirements with `/speckit.checklist` before creating the technical plan:
79
-
80
- ```bash
81
- /speckit.checklist
82
- ```
83
-
84
78
  ### Step 5: Create a Technical Implementation Plan
85
79
 
86
80
  **In the chat**, use the `/speckit.plan` slash command to provide your tech stack and architecture choices.
@@ -89,6 +83,12 @@ Then validate the requirements with `/speckit.checklist` before creating the tec
89
83
  /speckit.plan The application uses Vite with minimal number of libraries. Use vanilla HTML, CSS, and JavaScript as much as possible. Images are not uploaded anywhere and metadata is stored in a local SQLite database.
90
84
  ```
91
85
 
86
+ Then generate quality checklists with `/speckit.checklist` once the plan exists:
87
+
88
+ ```bash
89
+ /speckit.checklist
90
+ ```
91
+
92
92
  ### Step 6: Break Down, Analyze, and Implement
93
93
 
94
94
  **In the chat**, use the `/speckit.tasks` slash command to create an actionable task list.
@@ -150,20 +150,20 @@ You can continue to refine the spec with more details using `/speckit.clarify`:
150
150
  /speckit.clarify When you first launch Taskify, it's going to give you a list of the five users to pick from. There will be no password required. When you click on a user, you go into the main view, which displays the list of projects. When you click on a project, you open the Kanban board for that project. You're going to see the columns. You'll be able to drag and drop cards back and forth between different columns. You will see any cards that are assigned to you, the currently logged in user, in a different color from all the other ones, so you can quickly see yours. You can edit any comments that you make, but you can't edit comments that other people made. You can delete any comments that you made, but you can't delete comments anybody else made.
151
151
  ```
152
152
 
153
- ### Step 4: Validate the Spec
153
+ ### Step 4: Generate Technical Plan with `/speckit.plan`
154
154
 
155
- Validate the specification checklist using the `/speckit.checklist` command:
155
+ Be specific about your tech stack and technical requirements:
156
156
 
157
157
  ```bash
158
- /speckit.checklist
158
+ /speckit.plan We are going to generate this using .NET Aspire, using Postgres as the database. The frontend should use Blazor server with drag-and-drop task boards, real-time updates. There should be a REST API created with a projects API, tasks API, and a notifications API.
159
159
  ```
160
160
 
161
- ### Step 5: Generate Technical Plan with `/speckit.plan`
161
+ ### Step 5: Validate the Spec
162
162
 
163
- Be specific about your tech stack and technical requirements:
163
+ Generate quality checklists to validate the specification using the `/speckit.checklist` command:
164
164
 
165
165
  ```bash
166
- /speckit.plan We are going to generate this using .NET Aspire, using Postgres as the database. The frontend should use Blazor server with drag-and-drop task boards, real-time updates. There should be a REST API created with a projects API, tasks API, and a notifications API.
166
+ /speckit.checklist
167
167
  ```
168
168
 
169
169
  ### Step 6: Define Tasks
@@ -25,10 +25,11 @@ The Specify CLI supports a wide range of AI coding agents. When you run `specify
25
25
  | [iFlow CLI](https://docs.iflow.cn/en/cli/quickstart) | `iflow` | |
26
26
  | [Junie](https://junie.jetbrains.com/) | `junie` | |
27
27
  | [Kilo Code](https://github.com/Kilo-Org/kilocode) | `kilocode` | |
28
- | [Kimi Code](https://code.kimi.com/) | `kimi` | Skills-based integration; supports `--migrate-legacy` for dotted→hyphenated directory migration |
28
+ | [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` |
29
29
  | [Kiro CLI](https://kiro.dev/docs/cli/) | `kiro-cli` | Kiro CLI does not substitute `$ARGUMENTS` in file-based prompts, so Spec Kit ships a prose fallback at render time (see [Manage prompts](https://kiro.dev/docs/cli/chat/manage-prompts/) and issue [#1926](https://github.com/github/spec-kit/issues/1926)). Alias: `--integration kiro` |
30
30
  | [Lingma](https://lingma.aliyun.com/) | `lingma` | Skills-based integration; skills are installed automatically |
31
31
  | [Mistral Vibe](https://github.com/mistralai/mistral-vibe) | `vibe` | |
32
+ | [Oh My Pi](https://www.npmjs.com/package/@oh-my-pi/pi-coding-agent) | `omp` | Installs slash commands into `.omp/commands` |
32
33
  | [opencode](https://opencode.ai/) | `opencode` | |
33
34
  | [Pi Coding Agent](https://pi.dev) | `pi` | Pi doesn't have MCP support out of the box, so `taskstoissues` won't work as intended. MCP support can be added via [extensions](https://github.com/badlogic/pi-mono/tree/main/packages/coding-agent#extensions) |
34
35
  | [Qoder CLI](https://qoder.com/cli) | `qodercli` | |
@@ -157,7 +158,7 @@ Some integrations accept additional options via `--integration-options`:
157
158
  | Integration | Option | Description |
158
159
  | ----------- | ------------------- | -------------------------------------------------------------- |
159
160
  | `generic` | `--commands-dir` | Required. Directory for command files |
160
- | `kimi` | `--migrate-legacy` | Migrate legacy dotted skill directories to hyphenated format |
161
+ | `kimi` | `--migrate-legacy` | Migrate legacy `.kimi/skills/` installs to `.kimi-code/skills/` (including dotted→hyphenated directory names); when the `agent-context` extension is enabled, also migrates `KIMI.md` to `AGENTS.md` |
161
162
 
162
163
  Example:
163
164
 
@@ -191,7 +192,6 @@ The currently declared multi-install safe integrations are:
191
192
  | `iflow` | `.iflow/commands`, `IFLOW.md` |
192
193
  | `junie` | `.junie/commands`, `.junie/AGENTS.md` |
193
194
  | `kilocode` | `.kilocode/workflows`, `.kilocode/rules/specify-rules.md` |
194
- | `kimi` | `.kimi/skills`, `KIMI.md` |
195
195
  | `qodercli` | `.qoder/commands`, `QODER.md` |
196
196
  | `qwen` | `.qwen/commands`, `QWEN.md` |
197
197
  | `roo` | `.roo/commands`, `.roo/rules/specify-rules.md` |
@@ -270,6 +270,8 @@ specify workflow run speckit -i spec="Build a kanban board with drag-and-drop ta
270
270
  | `fan-out` | Dispatch a step for each item in a list |
271
271
  | `fan-in` | Aggregate results from a fan-out step |
272
272
 
273
+ > **Security note:** a `shell` step runs a local command with **your** privileges. There is no capability sandbox — `requires` is an advisory pre-condition block (spec-kit version, integrations), not a runtime gate, so it does **not** restrict what a step can do. In particular there is no `requires.permissions` capability gate: it is rejected by validation precisely because it would imply a sandbox that does not exist. Review any catalog or downloaded workflow before running it, and use a `gate` step to require explicit approval before sensitive or destructive shell commands.
274
+
273
275
  ## Expressions
274
276
 
275
277
  Steps can reference inputs and previous step outputs using `{{ expression }}` syntax:
@@ -53,6 +53,8 @@
53
53
  href: local-development.md
54
54
  - name: Evolving Specs
55
55
  href: guides/evolving-specs.md
56
+ - name: Monorepos
57
+ href: guides/monorepo.md
56
58
 
57
59
  # Community
58
60
  - name: Community
@@ -308,6 +308,7 @@ Alternatively, run the `/speckit.specify` command which creates `.specify/featur
308
308
  ls -la .gemini/commands/ # Gemini
309
309
  ls -la .cursor/skills/ # Cursor
310
310
  ls -la .pi/prompts/ # Pi Coding Agent
311
+ ls -la .omp/commands/ # Oh My Pi
311
312
  ```
312
313
 
313
314
  3. **Check agent-specific setup:**
@@ -427,7 +428,7 @@ The `specify` CLI tool is used for:
427
428
  - **Upgrades:** `specify init --here --force` to update templates and commands
428
429
  - **Diagnostics:** `specify check` to verify tool installation
429
430
 
430
- Once you've run `specify init`, the slash commands (like `/speckit.specify`, `/speckit.plan`, etc.) are **permanently installed** in your project's agent folder (`.claude/`, `.github/prompts/`, `.pi/prompts/`, etc.). Your AI coding agent reads these command files directly—no need to run `specify` again.
431
+ Once you've run `specify init`, the slash commands (like `/speckit.specify`, `/speckit.plan`, etc.) are **permanently installed** in your project's agent folder (`.claude/`, `.github/prompts/`, `.pi/prompts/`, `.omp/commands/`, etc.). Your AI coding agent reads these command files directly—no need to run `specify` again.
431
432
 
432
433
  **If your agent isn't recognizing slash commands:**
433
434
 
@@ -442,6 +443,9 @@ Once you've run `specify init`, the slash commands (like `/speckit.specify`, `/s
442
443
 
443
444
  # For Pi
444
445
  ls -la .pi/prompts/
446
+
447
+ # For Oh My Pi
448
+ ls -la .omp/commands/
445
449
  ```
446
450
 
447
451
  2. **Restart your IDE/editor completely** (not just reload window)
@@ -320,6 +320,7 @@ A: Extensions should be free and open-source. Commercial support/services are al
320
320
  "author": "string (required)",
321
321
  "version": "string (required, semver)",
322
322
  "download_url": "string (required, valid URL)",
323
+ "sha256": "string (optional, SHA-256 hex digest of the archive at download_url; verified before install)",
323
324
  "repository": "string (required, valid URL)",
324
325
  "homepage": "string (optional, valid URL)",
325
326
  "documentation": "string (optional, valid URL)",