specify-cli 0.13.3__tar.gz → 0.13.4__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 (513) hide show
  1. {specify_cli-0.13.3 → specify_cli-0.13.4}/.devcontainer/post-create.sh +11 -0
  2. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/agent_request.yml +1 -1
  3. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/bug_report.yml +1 -0
  4. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/feature_request.yml +1 -0
  5. {specify_cli-0.13.3 → specify_cli-0.13.4}/CHANGELOG.md +25 -0
  6. {specify_cli-0.13.3 → specify_cli-0.13.4}/PKG-INFO +1 -1
  7. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/community/presets.md +1 -0
  8. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/concepts/complex-features.md +8 -4
  9. specify_cli-0.13.4/docs/concepts/spec-of-specs.md +171 -0
  10. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/installation.md +4 -2
  11. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/core.md +1 -1
  12. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/integrations.md +1 -0
  13. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/toc.yml +2 -0
  14. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/upgrade.md +75 -69
  15. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +7 -1
  16. {specify_cli-0.13.3 → specify_cli-0.13.4}/integrations/catalog.json +10 -1
  17. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/catalog.community.json +29 -0
  18. {specify_cli-0.13.3 → specify_cli-0.13.4}/pyproject.toml +1 -1
  19. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/commands_impl/catalog_config.py +9 -2
  20. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/models/catalog.py +15 -1
  21. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/models/manifest.py +5 -0
  22. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/commands/init.py +2 -0
  23. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/extensions/__init__.py +5 -0
  24. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/__init__.py +2 -0
  25. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/catalog.py +34 -14
  26. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/cline/__init__.py +13 -0
  27. specify_cli-0.13.4/src/specify_cli/integrations/droid/__init__.py +135 -0
  28. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/_commands.py +2 -2
  29. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/catalog.py +5 -1
  30. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/expressions.py +4 -0
  31. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/command/__init__.py +5 -1
  32. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/gate/__init__.py +5 -1
  33. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/prompt/__init__.py +4 -1
  34. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/contract/test_catalog_schema.py +36 -0
  35. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/contract/test_manifest_schema.py +10 -0
  36. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/git/test_git_extension.py +16 -0
  37. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_base.py +18 -0
  38. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_catalog.py +67 -0
  39. specify_cli-0.13.4/tests/integrations/test_integration_droid.py +262 -0
  40. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_forge.py +36 -0
  41. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_registry.py +1 -0
  42. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_agent_config_consistency.py +1 -0
  43. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_extensions.py +36 -0
  44. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_workflows.py +121 -0
  45. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_catalog_config.py +41 -0
  46. {specify_cli-0.13.3 → specify_cli-0.13.4}/.devcontainer/devcontainer.json +0 -0
  47. {specify_cli-0.13.3 → specify_cli-0.13.4}/.editorconfig +0 -0
  48. {specify_cli-0.13.3 → specify_cli-0.13.4}/.gitattributes +0 -0
  49. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/CODEOWNERS +0 -0
  50. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/bundle_submission.yml +0 -0
  51. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  52. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
  53. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/ISSUE_TEMPLATE/preset_submission.yml +0 -0
  54. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  55. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/aw/actions-lock.json +0 -0
  56. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/dependabot.yml +0 -0
  57. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/scripts/check_security_requirements.py +0 -0
  58. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/security-audit-requirements.txt +0 -0
  59. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/skills/add-community-extension/SKILL.md +0 -0
  60. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/RELEASE-PROCESS.md +0 -0
  61. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/add-community-bundle.lock.yml +0 -0
  62. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/add-community-bundle.md +0 -0
  63. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/add-community-extension.lock.yml +0 -0
  64. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/add-community-extension.md +0 -0
  65. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/add-community-preset.lock.yml +0 -0
  66. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/add-community-preset.md +0 -0
  67. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/bug-assess.lock.yml +0 -0
  68. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/bug-assess.md +0 -0
  69. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/bug-fix.lock.yml +0 -0
  70. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/bug-fix.md +0 -0
  71. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/bug-test.lock.yml +0 -0
  72. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/bug-test.md +0 -0
  73. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/catalog-assign.yml +0 -0
  74. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/codeql.yml +0 -0
  75. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/docs.yml +0 -0
  76. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/lint.yml +0 -0
  77. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/publish-pypi.yml +0 -0
  78. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/release-trigger.yml +0 -0
  79. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/release.yml +0 -0
  80. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/security.yml +0 -0
  81. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/stale.yml +0 -0
  82. {specify_cli-0.13.3 → specify_cli-0.13.4}/.github/workflows/test.yml +0 -0
  83. {specify_cli-0.13.3 → specify_cli-0.13.4}/.gitignore +0 -0
  84. {specify_cli-0.13.3 → specify_cli-0.13.4}/.markdownlint-cli2.jsonc +0 -0
  85. {specify_cli-0.13.3 → specify_cli-0.13.4}/.pre-commit-config.yaml +0 -0
  86. {specify_cli-0.13.3 → specify_cli-0.13.4}/.zenodo.json +0 -0
  87. {specify_cli-0.13.3 → specify_cli-0.13.4}/AGENTS.md +0 -0
  88. {specify_cli-0.13.3 → specify_cli-0.13.4}/CITATION.cff +0 -0
  89. {specify_cli-0.13.3 → specify_cli-0.13.4}/CODE_OF_CONDUCT.md +0 -0
  90. {specify_cli-0.13.3 → specify_cli-0.13.4}/CONTRIBUTING.md +0 -0
  91. {specify_cli-0.13.3 → specify_cli-0.13.4}/DEVELOPMENT.md +0 -0
  92. {specify_cli-0.13.3 → specify_cli-0.13.4}/LICENSE +0 -0
  93. {specify_cli-0.13.3 → specify_cli-0.13.4}/README.md +0 -0
  94. {specify_cli-0.13.3 → specify_cli-0.13.4}/SECURITY.md +0 -0
  95. {specify_cli-0.13.3 → specify_cli-0.13.4}/SUPPORT.md +0 -0
  96. {specify_cli-0.13.3 → specify_cli-0.13.4}/bundles/catalog.community.json +0 -0
  97. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/.gitignore +0 -0
  98. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/README.md +0 -0
  99. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/community/bundles.md +0 -0
  100. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/community/extensions.md +0 -0
  101. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/community/friends.md +0 -0
  102. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/community/overview.md +0 -0
  103. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/community/walkthroughs.md +0 -0
  104. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/concepts/sdd.md +0 -0
  105. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/concepts/spec-persistence.md +0 -0
  106. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/docfx.json +0 -0
  107. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/guides/evolving-specs.md +0 -0
  108. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/guides/monorepo.md +0 -0
  109. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/index.md +0 -0
  110. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/install/air-gapped.md +0 -0
  111. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/install/one-time.md +0 -0
  112. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/install/pipx.md +0 -0
  113. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/install/pypi.md +0 -0
  114. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/install/uv.md +0 -0
  115. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/local-development.md +0 -0
  116. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/quickstart.md +0 -0
  117. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/agentic-bugfix.md +0 -0
  118. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/agentic-sdd.md +0 -0
  119. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/authentication.md +0 -0
  120. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/bundles.md +0 -0
  121. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/extensions.md +0 -0
  122. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/overview.md +0 -0
  123. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/presets.md +0 -0
  124. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/reference/workflows.md +0 -0
  125. {specify_cli-0.13.3 → specify_cli-0.13.4}/docs/template/public/main.css +0 -0
  126. {specify_cli-0.13.3 → specify_cli-0.13.4}/examples/bundles/business-analyst/README.md +0 -0
  127. {specify_cli-0.13.3 → specify_cli-0.13.4}/examples/bundles/business-analyst/bundle.yml +0 -0
  128. {specify_cli-0.13.3 → specify_cli-0.13.4}/examples/bundles/developer/README.md +0 -0
  129. {specify_cli-0.13.3 → specify_cli-0.13.4}/examples/bundles/developer/bundle.yml +0 -0
  130. {specify_cli-0.13.3 → specify_cli-0.13.4}/examples/bundles/product-manager/README.md +0 -0
  131. {specify_cli-0.13.3 → specify_cli-0.13.4}/examples/bundles/product-manager/bundle.yml +0 -0
  132. {specify_cli-0.13.3 → specify_cli-0.13.4}/examples/bundles/security-researcher/README.md +0 -0
  133. {specify_cli-0.13.3 → specify_cli-0.13.4}/examples/bundles/security-researcher/bundle.yml +0 -0
  134. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/EXTENSION-API-REFERENCE.md +0 -0
  135. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -0
  136. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/EXTENSION-PUBLISHING-GUIDE.md +0 -0
  137. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/EXTENSION-USER-GUIDE.md +0 -0
  138. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/README.md +0 -0
  139. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
  140. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/agent-context/README.md +0 -0
  141. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/agent-context/agent-context-config.yml +0 -0
  142. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/agent-context/agent-context-defaults.json +0 -0
  143. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
  144. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/agent-context/extension.yml +0 -0
  145. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/agent-context/scripts/bash/update-agent-context.sh +0 -0
  146. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -0
  147. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/agent-context/scripts/python/update_agent_context.py +0 -0
  148. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/assess/README.md +0 -0
  149. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/assess/commands/speckit.assess.decide.md +0 -0
  150. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/assess/commands/speckit.assess.define.md +0 -0
  151. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/assess/commands/speckit.assess.intake.md +0 -0
  152. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/assess/commands/speckit.assess.research.md +0 -0
  153. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/assess/commands/speckit.assess.shape.md +0 -0
  154. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/assess/extension.yml +0 -0
  155. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/bug/README.md +0 -0
  156. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/bug/commands/speckit.bug.assess.md +0 -0
  157. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/bug/commands/speckit.bug.fix.md +0 -0
  158. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/bug/commands/speckit.bug.test.md +0 -0
  159. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/bug/extension.yml +0 -0
  160. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/catalog.community.json +0 -0
  161. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/catalog.json +0 -0
  162. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/README.md +0 -0
  163. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/commands/speckit.git.commit.md +0 -0
  164. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/commands/speckit.git.feature.md +0 -0
  165. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/commands/speckit.git.initialize.md +0 -0
  166. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/commands/speckit.git.remote.md +0 -0
  167. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/commands/speckit.git.validate.md +0 -0
  168. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/config-template.yml +0 -0
  169. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/extension.yml +0 -0
  170. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/git-config.yml +0 -0
  171. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/bash/auto-commit.sh +0 -0
  172. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
  173. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/bash/git-common.sh +0 -0
  174. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
  175. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
  176. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
  177. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
  178. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/python/auto_commit.py +0 -0
  179. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/python/create_new_feature_branch.py +0 -0
  180. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/python/git_common.py +0 -0
  181. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/git/scripts/python/initialize_repo.py +0 -0
  182. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/selftest/commands/selftest.md +0 -0
  183. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/selftest/extension.yml +0 -0
  184. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/template/.gitignore +0 -0
  185. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/template/CHANGELOG.md +0 -0
  186. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/template/EXAMPLE-README.md +0 -0
  187. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/template/LICENSE +0 -0
  188. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/template/README.md +0 -0
  189. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/template/commands/example.md +0 -0
  190. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/template/config-template.yml +0 -0
  191. {specify_cli-0.13.3 → specify_cli-0.13.4}/extensions/template/extension.yml +0 -0
  192. {specify_cli-0.13.3 → specify_cli-0.13.4}/integrations/CONTRIBUTING.md +0 -0
  193. {specify_cli-0.13.3 → specify_cli-0.13.4}/integrations/README.md +0 -0
  194. {specify_cli-0.13.3 → specify_cli-0.13.4}/integrations/catalog.community.json +0 -0
  195. {specify_cli-0.13.3 → specify_cli-0.13.4}/media/bootstrap-claude-code.gif +0 -0
  196. {specify_cli-0.13.3 → specify_cli-0.13.4}/media/logo_large.webp +0 -0
  197. {specify_cli-0.13.3 → specify_cli-0.13.4}/media/logo_small.webp +0 -0
  198. {specify_cli-0.13.3 → specify_cli-0.13.4}/media/spec-kit-video-header.jpg +0 -0
  199. {specify_cli-0.13.3 → specify_cli-0.13.4}/media/specify_cli.gif +0 -0
  200. {specify_cli-0.13.3 → specify_cli-0.13.4}/newsletters/2026-April.md +0 -0
  201. {specify_cli-0.13.3 → specify_cli-0.13.4}/newsletters/2026-February.md +0 -0
  202. {specify_cli-0.13.3 → specify_cli-0.13.4}/newsletters/2026-June.md +0 -0
  203. {specify_cli-0.13.3 → specify_cli-0.13.4}/newsletters/2026-March.md +0 -0
  204. {specify_cli-0.13.3 → specify_cli-0.13.4}/newsletters/2026-May.md +0 -0
  205. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/ARCHITECTURE.md +0 -0
  206. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/PUBLISHING.md +0 -0
  207. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/README.md +0 -0
  208. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/catalog.json +0 -0
  209. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/lean/README.md +0 -0
  210. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/lean/commands/speckit.constitution.md +0 -0
  211. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/lean/commands/speckit.implement.md +0 -0
  212. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/lean/commands/speckit.plan.md +0 -0
  213. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/lean/commands/speckit.specify.md +0 -0
  214. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/lean/commands/speckit.tasks.md +0 -0
  215. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/lean/preset.yml +0 -0
  216. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/scaffold/README.md +0 -0
  217. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
  218. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/scaffold/commands/speckit.specify.md +0 -0
  219. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/scaffold/preset.yml +0 -0
  220. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/scaffold/templates/myext-template.md +0 -0
  221. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/scaffold/templates/spec-template.md +0 -0
  222. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/self-test/commands/speckit.specify.md +0 -0
  223. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/self-test/commands/speckit.wrap-test.md +0 -0
  224. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/self-test/preset.yml +0 -0
  225. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/self-test/templates/checklist-template.md +0 -0
  226. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/self-test/templates/constitution-template.md +0 -0
  227. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/self-test/templates/plan-template.md +0 -0
  228. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/self-test/templates/spec-template.md +0 -0
  229. {specify_cli-0.13.3 → specify_cli-0.13.4}/presets/self-test/templates/tasks-template.md +0 -0
  230. {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/bash/check-prerequisites.sh +0 -0
  231. {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/bash/common.sh +0 -0
  232. {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/bash/create-new-feature.sh +0 -0
  233. {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/bash/setup-plan.sh +0 -0
  234. {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/bash/setup-tasks.sh +0 -0
  235. {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/powershell/check-prerequisites.ps1 +0 -0
  236. {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/powershell/common.ps1 +0 -0
  237. {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/powershell/create-new-feature.ps1 +0 -0
  238. {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/powershell/setup-plan.ps1 +0 -0
  239. {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/powershell/setup-tasks.ps1 +0 -0
  240. {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/python/check_prerequisites.py +0 -0
  241. {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/python/common.py +0 -0
  242. {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/python/create_new_feature.py +0 -0
  243. {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/python/setup_plan.py +0 -0
  244. {specify_cli-0.13.3 → specify_cli-0.13.4}/scripts/python/setup_tasks.py +0 -0
  245. {specify_cli-0.13.3 → specify_cli-0.13.4}/spec-driven.md +0 -0
  246. {specify_cli-0.13.3 → specify_cli-0.13.4}/spec-kit.code-workspace +0 -0
  247. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/__init__.py +0 -0
  248. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_agent_config.py +0 -0
  249. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_assets.py +0 -0
  250. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_console.py +0 -0
  251. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_github_http.py +0 -0
  252. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_init_options.py +0 -0
  253. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_invocation_style.py +0 -0
  254. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_project.py +0 -0
  255. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_toml_string.py +0 -0
  256. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_utils.py +0 -0
  257. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/_version.py +0 -0
  258. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/agents.py +0 -0
  259. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/authentication/__init__.py +0 -0
  260. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/authentication/azure_devops.py +0 -0
  261. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/authentication/base.py +0 -0
  262. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/authentication/config.py +0 -0
  263. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/authentication/github.py +0 -0
  264. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/authentication/http.py +0 -0
  265. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/__init__.py +0 -0
  266. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/commands_impl/__init__.py +0 -0
  267. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/lib/__init__.py +0 -0
  268. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/lib/project.py +0 -0
  269. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/lib/versioning.py +0 -0
  270. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/lib/yamlio.py +0 -0
  271. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/models/__init__.py +0 -0
  272. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/models/records.py +0 -0
  273. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/__init__.py +0 -0
  274. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/adapters.py +0 -0
  275. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/catalog_stack.py +0 -0
  276. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/conflict.py +0 -0
  277. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/installer.py +0 -0
  278. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/packager.py +0 -0
  279. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/primitives.py +0 -0
  280. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/references.py +0 -0
  281. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/resolver.py +0 -0
  282. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/bundler/services/validator.py +0 -0
  283. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/catalogs.py +0 -0
  284. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/commands/__init__.py +0 -0
  285. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/commands/bundle/__init__.py +0 -0
  286. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/extensions/_commands.py +0 -0
  287. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integration_runtime.py +0 -0
  288. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integration_scaffold.py +0 -0
  289. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integration_state.py +0 -0
  290. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integration_status.py +0 -0
  291. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/_commands.py +0 -0
  292. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/_helpers.py +0 -0
  293. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/_install_commands.py +0 -0
  294. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/_migrate_commands.py +0 -0
  295. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/_query_commands.py +0 -0
  296. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/_scaffold_commands.py +0 -0
  297. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/agy/__init__.py +0 -0
  298. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/amp/__init__.py +0 -0
  299. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/auggie/__init__.py +0 -0
  300. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/base.py +0 -0
  301. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/bob/__init__.py +0 -0
  302. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/claude/__init__.py +0 -0
  303. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
  304. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/codex/__init__.py +0 -0
  305. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/copilot/__init__.py +0 -0
  306. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -0
  307. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/devin/__init__.py +0 -0
  308. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/firebender/__init__.py +0 -0
  309. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/forge/__init__.py +0 -0
  310. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/gemini/__init__.py +0 -0
  311. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/generic/__init__.py +0 -0
  312. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/goose/__init__.py +0 -0
  313. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/grok/__init__.py +0 -0
  314. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/hermes/__init__.py +0 -0
  315. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/junie/__init__.py +0 -0
  316. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/kilocode/__init__.py +0 -0
  317. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/kimi/__init__.py +0 -0
  318. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -0
  319. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/lingma/__init__.py +0 -0
  320. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/manifest.py +0 -0
  321. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/omp/__init__.py +0 -0
  322. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/opencode/__init__.py +0 -0
  323. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/pi/__init__.py +0 -0
  324. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
  325. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/qwen/__init__.py +0 -0
  326. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/rovodev/__init__.py +0 -0
  327. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/shai/__init__.py +0 -0
  328. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
  329. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/trae/__init__.py +0 -0
  330. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/vibe/__init__.py +0 -0
  331. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/zcode/__init__.py +0 -0
  332. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/integrations/zed/__init__.py +0 -0
  333. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/presets/__init__.py +0 -0
  334. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/presets/_commands.py +0 -0
  335. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/shared_infra.py +0 -0
  336. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/__init__.py +0 -0
  337. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/base.py +0 -0
  338. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/engine.py +0 -0
  339. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/overlays/__init__.py +0 -0
  340. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/overlays/_commands.py +0 -0
  341. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/overlays/composer.py +0 -0
  342. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/overlays/layer_sources.py +0 -0
  343. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/overlays/merge.py +0 -0
  344. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/overlays/schema.py +0 -0
  345. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/__init__.py +0 -0
  346. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/do_while/__init__.py +0 -0
  347. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/fan_in/__init__.py +0 -0
  348. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/fan_out/__init__.py +0 -0
  349. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/if_then/__init__.py +0 -0
  350. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/init/__init__.py +0 -0
  351. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/shell/__init__.py +0 -0
  352. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/switch/__init__.py +0 -0
  353. {specify_cli-0.13.3 → specify_cli-0.13.4}/src/specify_cli/workflows/steps/while_loop/__init__.py +0 -0
  354. {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/checklist-template.md +0 -0
  355. {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/analyze.md +0 -0
  356. {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/checklist.md +0 -0
  357. {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/clarify.md +0 -0
  358. {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/constitution.md +0 -0
  359. {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/converge.md +0 -0
  360. {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/implement.md +0 -0
  361. {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/plan.md +0 -0
  362. {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/specify.md +0 -0
  363. {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/tasks.md +0 -0
  364. {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/commands/taskstoissues.md +0 -0
  365. {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/constitution-template.md +0 -0
  366. {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/plan-template.md +0 -0
  367. {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/spec-template.md +0 -0
  368. {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/tasks-template.md +0 -0
  369. {specify_cli-0.13.3 → specify_cli-0.13.4}/templates/vscode-settings.json +0 -0
  370. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/__init__.py +0 -0
  371. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/auth_helpers.py +0 -0
  372. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/bundler_helpers.py +0 -0
  373. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/conftest.py +0 -0
  374. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/contract/test_bundle_cli.py +0 -0
  375. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/__init__.py +0 -0
  376. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/assess/__init__.py +0 -0
  377. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/assess/test_assess_extension.py +0 -0
  378. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/bug/__init__.py +0 -0
  379. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/bug/test_bug_extension.py +0 -0
  380. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/git/__init__.py +0 -0
  381. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/git/test_git_extension_python_parity.py +0 -0
  382. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/test_agent_context_cli_free.py +0 -0
  383. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/test_extension_agent_context.py +0 -0
  384. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/test_update_agent_context_feature_json.py +0 -0
  385. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/extensions/test_update_agent_context_python_parity.py +0 -0
  386. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/hooks/TESTING.md +0 -0
  387. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/hooks/plan.md +0 -0
  388. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/hooks/spec.md +0 -0
  389. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/hooks/tasks.md +0 -0
  390. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/http_helpers.py +0 -0
  391. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integration/test_bundler_catalog_stack.py +0 -0
  392. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integration/test_bundler_init_install.py +0 -0
  393. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integration/test_bundler_install_flow.py +0 -0
  394. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integration/test_bundler_local_install.py +0 -0
  395. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integration/test_bundler_offline.py +0 -0
  396. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integration/test_bundler_security_paths.py +0 -0
  397. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/__init__.py +0 -0
  398. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/conftest.py +0 -0
  399. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_cli.py +0 -0
  400. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_extra_args.py +0 -0
  401. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_home_isolation.py +0 -0
  402. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_agy.py +0 -0
  403. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_amp.py +0 -0
  404. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_auggie.py +0 -0
  405. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_base_markdown.py +0 -0
  406. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_base_skills.py +0 -0
  407. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_base_toml.py +0 -0
  408. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_base_yaml.py +0 -0
  409. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_bob.py +0 -0
  410. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_claude.py +0 -0
  411. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_cline.py +0 -0
  412. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_codebuddy.py +0 -0
  413. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_codex.py +0 -0
  414. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_copilot.py +0 -0
  415. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_cursor_agent.py +0 -0
  416. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_devin.py +0 -0
  417. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_firebender.py +0 -0
  418. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_gemini.py +0 -0
  419. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_generic.py +0 -0
  420. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_goose.py +0 -0
  421. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_grok.py +0 -0
  422. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_hermes.py +0 -0
  423. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_junie.py +0 -0
  424. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_kilocode.py +0 -0
  425. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_kimi.py +0 -0
  426. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_kiro_cli.py +0 -0
  427. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_lingma.py +0 -0
  428. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_omp.py +0 -0
  429. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_opencode.py +0 -0
  430. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_pi.py +0 -0
  431. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_qodercli.py +0 -0
  432. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_qwen.py +0 -0
  433. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_rovodev.py +0 -0
  434. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_scaffold.py +0 -0
  435. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_shai.py +0 -0
  436. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_state.py +0 -0
  437. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_subcommand.py +0 -0
  438. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_tabnine.py +0 -0
  439. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_trae.py +0 -0
  440. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_vibe.py +0 -0
  441. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_zcode.py +0 -0
  442. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_integration_zed.py +0 -0
  443. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_manifest.py +0 -0
  444. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/integrations/test_skill_frontmatter_quoting.py +0 -0
  445. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/parity_helpers.py +0 -0
  446. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/self_upgrade_helpers.py +0 -0
  447. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_authentication.py +0 -0
  448. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_branch_numbering.py +0 -0
  449. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_check_prerequisites_paths_only.py +0 -0
  450. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_check_prerequisites_python_parity.py +0 -0
  451. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_check_tool.py +0 -0
  452. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_cli_version.py +0 -0
  453. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_command_template_py_scripts.py +0 -0
  454. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_commands_package.py +0 -0
  455. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_console_imports.py +0 -0
  456. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_create_new_feature_python_parity.py +0 -0
  457. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_extension_registration.py +0 -0
  458. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_extension_skills.py +0 -0
  459. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_extension_update_hardening.py +0 -0
  460. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_github_http.py +0 -0
  461. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_github_workflows.py +0 -0
  462. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_init_dir.py +0 -0
  463. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_init_dir_cli.py +0 -0
  464. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_live_transient_windows.py +0 -0
  465. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_merge.py +0 -0
  466. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_post_process.py +0 -0
  467. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_presets.py +0 -0
  468. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_ps1_encoding.py +0 -0
  469. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_registrar_path_traversal.py +0 -0
  470. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_security_workflow.py +0 -0
  471. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_self_upgrade_detection.py +0 -0
  472. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_self_upgrade_execution.py +0 -0
  473. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_self_upgrade_guidance.py +0 -0
  474. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_self_upgrade_verification.py +0 -0
  475. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_setup_plan_feature_json.py +0 -0
  476. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_setup_plan_no_overwrite.py +0 -0
  477. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_setup_plan_python_parity.py +0 -0
  478. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_setup_tasks.py +0 -0
  479. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_setup_tasks_python_parity.py +0 -0
  480. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_shared_infra_integrity.py +0 -0
  481. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_skill_placeholder_py.py +0 -0
  482. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_timestamp_branches.py +0 -0
  483. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_upgrade.py +0 -0
  484. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_utils.py +0 -0
  485. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_utils_assets_imports.py +0 -0
  486. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_version_imports.py +0 -0
  487. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/test_workflow_run_without_project.py +0 -0
  488. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundle_download_url.py +0 -0
  489. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_adapters.py +0 -0
  490. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_conflict.py +0 -0
  491. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_packager.py +0 -0
  492. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_primitives.py +0 -0
  493. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_records.py +0 -0
  494. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_references.py +0 -0
  495. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_resolver.py +0 -0
  496. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_validator.py +0 -0
  497. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/unit/test_bundler_versioning.py +0 -0
  498. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/workflows/conftest.py +0 -0
  499. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/workflows/test_overlay_commands.py +0 -0
  500. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/workflows/test_overlay_composer.py +0 -0
  501. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/workflows/test_overlay_layer_sources.py +0 -0
  502. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/workflows/test_overlay_merge.py +0 -0
  503. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/workflows/test_overlay_schema.py +0 -0
  504. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/workflows/test_overlay_security.py +0 -0
  505. {specify_cli-0.13.3 → specify_cli-0.13.4}/tests/workflows/test_resolver_integration.py +0 -0
  506. {specify_cli-0.13.3 → specify_cli-0.13.4}/workflows/ARCHITECTURE.md +0 -0
  507. {specify_cli-0.13.3 → specify_cli-0.13.4}/workflows/PUBLISHING.md +0 -0
  508. {specify_cli-0.13.3 → specify_cli-0.13.4}/workflows/README.md +0 -0
  509. {specify_cli-0.13.3 → specify_cli-0.13.4}/workflows/catalog.community.json +0 -0
  510. {specify_cli-0.13.3 → specify_cli-0.13.4}/workflows/catalog.json +0 -0
  511. {specify_cli-0.13.3 → specify_cli-0.13.4}/workflows/speckit/workflow.yml +0 -0
  512. {specify_cli-0.13.3 → specify_cli-0.13.4}/workflows/step-catalog.community.json +0 -0
  513. {specify_cli-0.13.3 → specify_cli-0.13.4}/workflows/step-catalog.json +0 -0
@@ -97,6 +97,17 @@ echo -e "\n🤖 Installing CodeBuddy CLI..."
97
97
  run_command "npm install -g @tencent-ai/codebuddy-code@latest"
98
98
  echo "✅ Done"
99
99
 
100
+ echo -e "\n🤖 Installing Factory Droid CLI..."
101
+ run_command "npm install -g droid@latest"
102
+
103
+ if ! command -v droid >/dev/null 2>&1; then
104
+ echo -e "\033[0;31m[ERROR] Droid CLI installation did not create 'droid' in PATH.\033[0m" >&2
105
+ exit 1
106
+ fi
107
+
108
+ run_command "droid --version > /dev/null"
109
+ echo "✅ Done"
110
+
100
111
  # Installing UV (Python package manager)
101
112
  echo -e "\n🐍 Installing UV - Python Package Manager..."
102
113
  run_command "pipx install uv"
@@ -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, Grok Build, Hermes Agent, IBM Bob, Junie, Kilo Code, Kimi Code, Kiro CLI, Lingma, Mistral Vibe, Oh My Pi, opencode, Pi Coding Agent, Qoder CLI, Qwen Code, RovoDev ACLI, SHAI, Tabnine CLI, Trae, ZCode, Zed
11
+ **Currently supported agents**: Amp, Antigravity, Auggie CLI, Claude Code, Cline, CodeBuddy, Codex CLI, Cursor, Devin for Terminal, Factory Droid, Firebender, Forge, Gemini CLI, GitHub Copilot, Goose, Grok Build, Hermes Agent, IBM Bob, Junie, Kilo Code, Kimi Code, Kiro CLI, Lingma, Mistral Vibe, Oh My Pi, opencode, Pi Coding Agent, Qoder CLI, Qwen Code, RovoDev ACLI, SHAI, Tabnine CLI, Trae, ZCode, Zed
12
12
 
13
13
  - type: input
14
14
  id: agent-name
@@ -71,6 +71,7 @@ body:
71
71
  - Codex CLI
72
72
  - Cursor
73
73
  - Devin for Terminal
74
+ - Factory Droid
74
75
  - Firebender
75
76
  - Forge
76
77
  - Gemini CLI
@@ -65,6 +65,7 @@ body:
65
65
  - Codex CLI
66
66
  - Cursor
67
67
  - Devin for Terminal
68
+ - Factory Droid
68
69
  - Firebender
69
70
  - Forge
70
71
  - Gemini CLI
@@ -2,6 +2,31 @@
2
2
 
3
3
  <!-- insert new changelog below this comment -->
4
4
 
5
+ ## [0.13.4] - 2026-07-22
6
+
7
+ ### Changed
8
+
9
+ - docs(concepts): document the spec-of-specs feature breakdown approach (#3648)
10
+ - fix(scripts): git-ext PowerShell emits the '# To persist' SPECIFY_FEATURE hint (parity) (#3632)
11
+ - fix(integrations): validate cached catalog shape before returning it (#3627)
12
+ - fix(bundler): reject non-list 'catalogs' in bundle-catalogs.yml with a clean error (#3623)
13
+ - fix(bundler): guard lazy .hostname ValueError in catalog add_source (#3644)
14
+ - Add Intake Authoring Governance preset to community catalog (#3643)
15
+ - feat: add Factory Droid CLI integration (#822) (#3587)
16
+ - docs(installation): document the 'py' (Python) script type (#3640)
17
+ - fix(init): show hyphenated /speckit-<name> in Next Steps for Forge projects (#3642)
18
+ - fix(extensions): render hyphenated hook invocations for Forge projects (#3641)
19
+ - fix(workflows): workflow add detects local YAML files case-insensitively (#3633)
20
+ - fix(workflows): list-literal expression ignores trailing/empty commas (#3631)
21
+ - fix(workflows): StepRegistry.add tolerates a corrupted non-dict existing entry (#3630)
22
+ - fix(bundler): reject non-mapping 'integration' in a bundle manifest (#3629)
23
+ - fix(workflows): command/prompt steps fail cleanly on a non-string integration (#3626)
24
+ - docs(core): document the 'py' (Python) --script type in the init option table (#3625)
25
+ - fix(workflows): gate prompt uses isdecimal() so a superscript digit doesn't crash (#3624)
26
+ - fix(integrations): Cline dispatches hyphenated /speckit-<cmd> invocations (#3622)
27
+ - docs(upgrade): document integration upgrade / extension update as the project-files upgrade path (#3326)
28
+ - chore: release 0.13.3, begin 0.13.4.dev0 development (#3645)
29
+
5
30
  ## [0.13.3] - 2026-07-22
6
31
 
7
32
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specify-cli
3
- Version: 0.13.3
3
+ Version: 0.13.4
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
@@ -19,6 +19,7 @@ The following community-contributed presets customize how Spec Kit behaves — o
19
19
  | Explicit Task Dependencies | Adds explicit `(depends on T###)` dependency declarations and an Execution Wave DAG to tasks.md for parallel scheduling | 1 template, 1 command | — | [spec-kit-preset-explicit-task-dependencies](https://github.com/Quratulain-bilal/spec-kit-preset-explicit-task-dependencies) |
20
20
  | Fiction Book Writing | It adapts the Spec-Driven Development workflow for storytelling to create books or audiobooks (with annotations) in 12 languages: features become story elements, specs become story briefs, plans become story structures, and tasks become scene-by-scene writing tasks. Supports single and multi-POV, all major plot structure frameworks, and two style modes: an author voice sample or humanized AI prose principles. Supports interactive elements like brainstorming, interview, roleplay, and extras like statistics, cover builder, illustration builder, and bio command. Export with templates for KDP, D2D, etc. | 26 templates, 34 commands, 2 scripts | — | [speckit-preset-fiction-book-writing](https://github.com/adaumann/speckit-preset-fiction-book-writing) |
21
21
  | Game Narrative Writing | Preset for game narrative design and interactive storytelling. It adapts the Spec-Driven Development workflow for game narratives: features become story mechanics, specs become narrative briefs, plans become story maps, and tasks become dialogue and scene-writing tasks. Supports branching narratives, player agency systems, state machines, and interactive dialogue trees. | 37 templates, 34 commands, 5 scripts | — | [speckit-preset-game-narrative-writing](https://github.com/adaumann/speckit-preset-game-narrative-writing) |
22
+ | Intake Authoring Governance | Creates traceable Spec Kit intake files and receipts from ordered text sources while preserving clarification, update, and delivery-authority boundaries. | 7 templates, 2 commands, 2 scripts | — | [spec-kit-preset-intake-authoring-governance](https://github.com/hindermath/spec-kit-preset-intake-authoring-governance) |
22
23
  | Intake Review Governance | Adds hash-bound review, repair, and status gates for single, series, and campaign intake files before interactive, autonomous, or parallel Spec Kit execution. | 8 templates, 3 commands, 2 scripts | — | [spec-kit-preset-intake-review-governance](https://github.com/hindermath/spec-kit-preset-intake-review-governance) |
23
24
  | iSAQB Architecture Governance | Adds general iSAQB/CPSA-F and arc42 software-architecture governance, including audit-ready Spec Kit run evidence for architecture goals, views, quality scenarios, ADRs, risks, and technical debt. | 13 templates, 3 commands | — | [spec-kit-preset-isaqb-architecture-governance](https://github.com/hindermath/spec-kit-preset-isaqb-architecture-governance) |
24
25
  | Jira Issue Tracking | Overrides `speckit.taskstoissues` to create Jira epics, stories, and tasks instead of GitHub Issues via Atlassian MCP tools | 1 command | — | [spec-kit-preset-jira](https://github.com/luno/spec-kit-preset-jira) |
@@ -63,10 +63,14 @@ independently specified sub-features. Each sub-feature gets its own
63
63
  `spec.md`, `plan.md`, and `tasks.md`, and runs through its own
64
64
  specify/plan/tasks/implement cycle.
65
65
 
66
- This is the "spec of specs" approach: the first iteration breaks a massive
67
- feature into smaller, self-contained specs that can each be implemented without
68
- overwhelming the model. It adds the most overhead, so reserve it for features
69
- that are too large to handle any other way.
66
+ This is the "spec of specs" approach: a first pass breaks a massive feature into
67
+ smaller, self-contained specs that can each be implemented without overwhelming the
68
+ model. It adds the most overhead, so reserve it for features that are too large to
69
+ handle any other way.
70
+
71
+ See [Spec of Specs](spec-of-specs.md) for the full procedure — how to run the
72
+ roadmap pass, structure the roadmap artifact, link sub-specs back to it, and a worked
73
+ example.
70
74
 
71
75
  ## Which Approach to Choose
72
76
 
@@ -0,0 +1,171 @@
1
+ # Spec of Specs
2
+
3
+ When a feature is too large to run through a single
4
+ `/speckit.specify` → `/speckit.plan` → `/speckit.tasks` → `/speckit.implement`
5
+ cycle without the model losing track mid-implementation, you can break it into a
6
+ **roadmap** of smaller, independently-specified sub-features. This is the "spec of
7
+ specs" approach: one up-front pass decomposes a massive feature into self-contained
8
+ specs, and each of those runs through its own specify/plan/tasks/implement cycle.
9
+
10
+ > **When to reach for this.** Decomposition adds the most overhead of any strategy
11
+ > in [Handling Complex Features](complex-features.md). Use it **only when the lighter
12
+ > options there are insufficient** — first try limiting how many tasks run per
13
+ > `/speckit.implement` invocation, then sub-agent delegation, then a combination.
14
+ > Reach for a spec of specs only when even a single phase is too large to handle in
15
+ > one run.
16
+
17
+ The rest of this page describes *how* to do it with the tools you already have. No
18
+ new commands or extensions are required.
19
+
20
+ ## The roadmap pass
21
+
22
+ Before writing any sub-spec, do a single decomposition pass to produce a roadmap.
23
+ Treat this as a lightweight planning conversation with your agent, not a full spec:
24
+
25
+ 1. **State the whole feature.** Describe the large feature (the "epic") in a
26
+ sentence or two so the agent has the full picture up front.
27
+ 2. **Identify independent slices.** Ask the agent to propose a small set of
28
+ sub-features that each deliver a coherent piece of the epic and can be specified
29
+ on their own. Aim for slices that are independently testable — implementing just
30
+ one should leave you with something demonstrable.
31
+ 3. **Draw the boundaries.** For each slice, write one line of intent and an explicit
32
+ scope boundary (what is in, what is deferred to a sibling slice). Sharp
33
+ boundaries are what keep each sub-spec small enough to fit in context.
34
+ 4. **Order by dependency.** Note which slices depend on others and sequence them so
35
+ prerequisites come first. Slices with no dependency on each other can be built in
36
+ any order. To build independent slices in parallel, use separate worktrees so each
37
+ run has isolated active-feature state.
38
+ 5. **Record the result as a roadmap.** Capture the slices in a durable roadmap file
39
+ (below) so every later sub-spec can point back to it.
40
+
41
+ The roadmap is deliberately shallow: it names and orders the sub-features but does
42
+ **not** design them. The design happens when each slice runs through its own
43
+ `/speckit.specify`.
44
+
45
+ ## The roadmap artifact
46
+
47
+ The roadmap is an ordinary Markdown file you author and keep under version control —
48
+ there is no special tooling behind it. Put it where the sub-specs can find it:
49
+
50
+ - For a feature-scoped epic: `specs/<epic-slug>/roadmap.md`.
51
+ - For a larger, cross-cutting epic: a top-level `ROADMAP.md`.
52
+
53
+ Each roadmap entry carries a stable id (used later for linking), a name, its intent,
54
+ its scope boundary, its dependencies, a status, and — once the sub-spec exists — a
55
+ link to it. A minimal template:
56
+
57
+ ```markdown
58
+ # Roadmap: <epic name>
59
+
60
+ <One or two sentences: what the epic is and why it is being decomposed.>
61
+
62
+ **Status legend**: planned · in-progress · done
63
+
64
+ | ID | Sub-feature | Intent | Scope boundary | Depends on | Status | Sub-spec |
65
+ |----|-------------|--------|----------------|-----------|--------|----------|
66
+ | R1 | <name> | <one line> | <in / deferred> | — | planned | — |
67
+ | R2 | <name> | <one line> | <in / deferred> | R1 | planned | — |
68
+ | R3 | <name> | <one line> | <in / deferred> | R1 | planned | — |
69
+ ```
70
+
71
+ Keep the `ID` column immutable once a sub-spec references it — it is the anchor for
72
+ traceability. Fill in the `Sub-spec` column with the path to each sub-feature's spec
73
+ directory as you create it, and update `Status` as work progresses.
74
+
75
+ ## Specifying each sub-feature
76
+
77
+ With the roadmap in hand, work through the entries one at a time using the normal
78
+ Spec Kit flow — nothing new to learn:
79
+
80
+ 1. Pick the next roadmap entry whose dependencies are already `done` (or have none).
81
+ 2. Run `/speckit.specify` for just that slice, describing only its intent and scope
82
+ from the roadmap entry. Because the slice is bounded, its spec, plan, and tasks
83
+ stay well within the context window.
84
+ 3. Run `/speckit.plan`, `/speckit.tasks`, and `/speckit.implement` for that slice as
85
+ usual.
86
+ 4. Mark the roadmap entry `done` and move to the next one.
87
+
88
+ Each slice is a complete, independent Spec Kit feature with its own
89
+ `spec.md`/`plan.md`/`tasks.md`. The roadmap is what ties them together.
90
+
91
+ ## Linking sub-specs to the roadmap
92
+
93
+ To keep scope and intent from drifting across separate runs, every sub-spec
94
+ references its roadmap entry, and the roadmap links back — a simple, greppable,
95
+ bidirectional convention:
96
+
97
+ - **Sub-spec → roadmap.** In the sub-feature's `spec.md`, name the parent roadmap
98
+ and entry id in the `Input` / summary line, for example:
99
+
100
+ ```markdown
101
+ **Input**: Parent roadmap: `specs/<epic>/roadmap.md` → entry **R3**. <feature description>
102
+ ```
103
+
104
+ - **Roadmap → sub-spec.** In the roadmap table, set the entry's `Sub-spec` column to
105
+ the sub-feature's directory, e.g. `specs/<epic>-part-3/`.
106
+
107
+ Because both directions are plain text, you can trace any sub-spec back to its place
108
+ in the epic (and find its siblings) with a quick search — no tooling, no metadata
109
+ schema.
110
+
111
+ ## Keeping the roadmap and sub-specs in sync
112
+
113
+ The roadmap is a living document. As you learn more, keep it and the sub-specs
114
+ aligned:
115
+
116
+ - **Roadmap first, then reconcile.** When scope shifts, update the roadmap entry
117
+ first, then update any sub-specs it affects. The roadmap is the source of truth for
118
+ how the epic is divided.
119
+ - **Respect dependencies and ordering.** If a slice depends on another, build the
120
+ prerequisite first and cross-reference the dependent sub-spec so the relationship
121
+ is visible from both sides.
122
+ - **Recurse when a slice is still too big.** If a sub-feature turns out to be too
123
+ large to specify in one cycle, give it its own roadmap and decompose it further —
124
+ the same approach applies one level down. Recursion adds overhead, so only go as
125
+ deep as the context problem actually requires.
126
+
127
+ ## Worked example
128
+
129
+ Suppose the epic is **"Add a self-service billing portal"** — far too large for a
130
+ single cycle. The roadmap pass breaks it into three independently-specifiable
131
+ slices.
132
+
133
+ `specs/billing-portal/roadmap.md`:
134
+
135
+ ```markdown
136
+ # Roadmap: Self-service billing portal
137
+
138
+ Let customers view invoices, manage payment methods, and change plans without
139
+ contacting support. Too large for one cycle, so it is split into independent slices.
140
+
141
+ **Status legend**: planned · in-progress · done
142
+
143
+ | ID | Sub-feature | Intent | Scope boundary | Depends on | Status | Sub-spec |
144
+ |----|--------------------|------------------------------------------|---------------------------------------------|-----------|---------|----------|
145
+ | R1 | Invoice history | Customers view and download past invoices | Read-only; no payment actions | — | done | specs/billing-invoices/ |
146
+ | R2 | Payment methods | Add, remove, and set a default card | No plan changes; assumes invoices exist | R1 | in-progress | specs/billing-payment-methods/ |
147
+ | R3 | Plan changes | Upgrade/downgrade the subscription plan | Uses R2's default payment method | R1, R2 | planned | — |
148
+ ```
149
+
150
+ Each slice is then specified on its own. For example, the **R2** sub-feature's
151
+ `spec.md` opens with a back-reference:
152
+
153
+ ```markdown
154
+ # Feature Specification: Billing — payment methods
155
+
156
+ **Input**: Parent roadmap: `specs/billing-portal/roadmap.md` → entry **R2**.
157
+ Let customers add, remove, and set a default payment method in the billing portal.
158
+ ```
159
+
160
+ From here a reader can trace **R2** back to the roadmap, see that it depends on
161
+ **R1** (invoice history, already `done`), and see that **R3** (plan changes) is
162
+ waiting on it. Building R1, then R2, then R3 keeps every run small while the roadmap
163
+ preserves the shape of the whole epic.
164
+
165
+ ## For automation (optional)
166
+
167
+ If you would rather automate roadmap capture and consistency checks than maintain
168
+ the file by hand, the community-maintained
169
+ [Spec Roadmap extension](https://github.com/srobroek/speckit-roadmap) explores that
170
+ direction. It is a third-party extension and is not required — the manual convention
171
+ above is enough on its own.
@@ -77,9 +77,9 @@ specify init <project_name> --integration pi
77
77
  specify init <project_name> --integration omp
78
78
  ```
79
79
 
80
- ### Specify Script Type (Shell vs PowerShell)
80
+ ### Specify Script Type (Shell, PowerShell, or Python)
81
81
 
82
- All automation scripts now have both Bash (`.sh`) and PowerShell (`.ps1`) variants.
82
+ Automation scripts are available as Bash (`.sh`), PowerShell (`.ps1`), and Python (`.py`) variants.
83
83
 
84
84
  Auto behavior:
85
85
 
@@ -92,6 +92,7 @@ Force a specific script type:
92
92
  ```bash
93
93
  specify init <project_name> --script sh
94
94
  specify init <project_name> --script ps
95
+ specify init <project_name> --script py
95
96
  ```
96
97
 
97
98
  ### Ignore Agent Tools Check
@@ -131,6 +132,7 @@ Scripts are installed into a variant subdirectory matching the chosen script typ
131
132
 
132
133
  - `.specify/scripts/bash/` — contains `.sh` scripts (default on Linux/macOS)
133
134
  - `.specify/scripts/powershell/` — contains `.ps1` scripts (default on Windows)
135
+ - `.specify/scripts/python/` — contains `.py` scripts (chosen with `--script py`; also installs the platform shell fallback)
134
136
 
135
137
  ## Troubleshooting
136
138
 
@@ -12,7 +12,7 @@ specify init [<project_name>]
12
12
  | ------------------------ | ------------------------------------------------------------------------ |
13
13
  | `--integration <key>` | AI coding agent integration to use (e.g. `copilot`, `claude`, `gemini`). See the [Integrations reference](integrations.md) for all available keys |
14
14
  | `--integration-options` | Options for the integration (e.g. `--integration-options="--commands-dir .myagent/cmds"`) |
15
- | `--script sh\|ps` | Script type: `sh` (bash/zsh) or `ps` (PowerShell) |
15
+ | `--script sh\|ps\|py` | Script type: `sh` (bash/zsh), `ps` (PowerShell), or `py` (Python) |
16
16
  | `--here` | Initialize in the current directory instead of creating a new one |
17
17
  | `--force` | Force merge/overwrite when initializing in an existing directory |
18
18
  | `--ignore-agent-tools` | Skip checks for AI coding agent CLI tools |
@@ -15,6 +15,7 @@ The Specify CLI supports a wide range of AI coding agents. When you run `specify
15
15
  | [Codex CLI](https://github.com/openai/codex) | `codex` | Skills-based integration; installs skills into `.agents/skills` and invokes them as `$speckit-<command>` |
16
16
  | [Cursor](https://cursor.sh/) | `cursor-agent` | |
17
17
  | [Devin for Terminal](https://cli.devin.ai/docs) | `devin` | Skills-based integration; installs skills into `.devin/skills/` and invokes them as `/speckit-<command>` |
18
+ | [Factory Droid](https://docs.factory.ai/cli/getting-started/overview) | `droid` | Skills-based integration; installs skills into `.factory/skills/` and invokes them as `/speckit-<command>` |
18
19
  | [Firebender](https://firebender.com/) | `firebender` | IDE-based agent for Android Studio / IntelliJ |
19
20
  | [Forge](https://forgecode.dev/) | `forge` | |
20
21
  | [Gemini CLI](https://github.com/google-gemini/gemini-cli) | `gemini` | |
@@ -55,6 +55,8 @@
55
55
  href: concepts/spec-persistence.md
56
56
  - name: Handling Complex Features
57
57
  href: concepts/complex-features.md
58
+ - name: Spec of Specs
59
+ href: concepts/spec-of-specs.md
58
60
 
59
61
  # Development workflows
60
62
  - name: Development
@@ -12,7 +12,7 @@
12
12
  | **CLI Tool — pin a version** | `specify self upgrade --tag vX.Y.Z[suffix]` | Upgrade to a specific release tag instead of the latest stable. Suffixes are limited to dev, alpha/beta/rc, and/or build metadata forms. |
13
13
  | **CLI Tool — manual fallback** | `uv tool install specify-cli --force --from git+https://github.com/github/spec-kit.git@vX.Y.Z` | When `specify self upgrade` isn't available (older installs) or when you want explicit control. |
14
14
  | **CLI Tool — manual fallback (pipx)** | `pipx install --force git+https://github.com/github/spec-kit.git@vX.Y.Z` | Same as above, for pipx installs. |
15
- | **Project Files** | `specify init --here --force --integration <your-agent>` | Update slash commands, templates, and scripts in your project |
15
+ | **Project Files** | Run `specify integration upgrade <key>`, then `specify extension update` | Refresh installed integration files and extensions in your project |
16
16
  | **Both** | Run CLI upgrade, then project update | Recommended for major version updates |
17
17
 
18
18
  ---
@@ -89,91 +89,94 @@ specify self check
89
89
 
90
90
  ## Part 2: Updating Project Files
91
91
 
92
- When Spec Kit releases new features (like new slash commands or updated templates), you need to refresh your project's Spec Kit files.
92
+ When Spec Kit releases new features (like new slash commands, updated templates, or extension changes), you need to refresh the Spec Kit files that were installed into your project.
93
93
 
94
94
  ### What gets updated?
95
95
 
96
- Running `specify init --here --force` will update:
96
+ For existing Spec Kit projects, use the manifest-aware upgrade path first:
97
97
 
98
- - ✅ **Slash command files** (`.claude/commands/`, `.github/prompts/`, etc.)
99
- - ✅ **Script files** (`.specify/scripts/`) **only with `--force`**; without it, only missing files are added
100
- - ✅ **Template files** (`.specify/templates/`) **only with `--force`**; without it, only missing files are added
101
- - ✅ **Shared memory files** (`.specify/memory/`) - **⚠️ See warnings below**
98
+ - ✅ **Integration command/skill files** (`.claude/skills/`, `.github/prompts/`, `.agents/skills/`, etc.)
99
+ - ✅ **Managed shared scripts and templates** (`.specify/scripts/`, `.specify/templates/`) when they are unchanged from the previous managed copy
100
+ - ✅ **Installed extensions** when you run `specify extension update`
101
+
102
+ The integration upgrade command uses the install manifest to detect local edits. If a managed integration file was modified after install, the command stops and asks you to inspect the change or rerun with `--force`.
102
103
 
103
104
  ### What stays safe?
104
105
 
105
- These files are **never touched** by the upgrade—the template packages don't even contain them:
106
+ These files are **never touched** by the manifest-aware integration/extension upgrade path:
106
107
 
107
108
  - ✅ **Your specifications** (`specs/001-my-feature/spec.md`, etc.) - **CONFIRMED SAFE**
108
109
  - ✅ **Your implementation plans** (`specs/001-my-feature/plan.md`, `tasks.md`, etc.) - **CONFIRMED SAFE**
110
+ - ✅ **Your constitution** (`.specify/memory/constitution.md`) when using `specify integration upgrade`
109
111
  - ✅ **Your source code** - **CONFIRMED SAFE**
110
112
  - ✅ **Your git history** - **CONFIRMED SAFE**
111
113
 
112
114
  The `specs/` directory is completely excluded from template packages and will never be modified during upgrades.
113
115
 
114
- ### Update command
116
+ ### 1. Check installed integrations
115
117
 
116
118
  Run this inside your project directory:
117
119
 
118
120
  ```bash
119
- specify init --here --force --integration <your-agent>
121
+ specify integration status
120
122
  ```
121
123
 
122
- Replace `<your-agent>` with your AI coding agent. Refer to this list of [Supported AI Coding Agent Integrations](reference/integrations.md)
124
+ This reports the default integration, all installed integrations, and any modified or missing managed files. You can also inspect `.specify/integration.json`; installed integrations are listed under `installed_integrations`.
123
125
 
124
- **Example:**
126
+ ### 2. Upgrade each installed integration
127
+
128
+ Run this inside your project directory:
125
129
 
126
130
  ```bash
127
- specify init --here --force --integration copilot
131
+ specify integration upgrade <key>
128
132
  ```
129
133
 
130
- ### Understanding the `--force` flag
134
+ Replace `<key>` with an installed integration key such as `copilot`, `claude`, or `codex`. In projects with multiple installed integrations, run the command once per installed key.
131
135
 
132
- Without `--force`, the CLI warns you and asks for confirmation:
136
+ **Example:**
133
137
 
134
- ```text
135
- Warning: Current directory is not empty (25 items)
136
- Template files will be merged with existing content and may overwrite existing files
137
- Proceed? [y/N]
138
+ ```bash
139
+ specify integration upgrade claude
140
+ specify integration upgrade codex
138
141
  ```
139
142
 
140
- With `--force`, it skips the confirmation and proceeds immediately. It also **overwrites shared infrastructure files** (`.specify/scripts/` and `.specify/templates/`) with the latest versions from the installed Spec Kit release.
143
+ See the [integration reference](reference/integrations.md#upgrade-an-integration) for options such as `--script`, `--integration-options`, and `--force`.
141
144
 
142
- Without `--force`, shared infrastructure files that already exist are skipped — the CLI will print a warning listing the skipped files so you know which ones were not updated.
145
+ ### 3. Update installed extensions
143
146
 
144
- **Important: Your `specs/` directory is always safe.** The `--force` flag only affects template files (commands, scripts, templates, memory). Your feature specifications, plans, and tasks in `specs/` are never included in upgrade packages and cannot be overwritten.
145
-
146
- ---
147
+ Run:
147
148
 
148
- ## ⚠️ Important Warnings
149
+ ```bash
150
+ specify extension update
151
+ ```
149
152
 
150
- ### 1. Constitution file will be overwritten
153
+ With no extension argument, this updates all installed extensions. Use `specify extension update <extension-id-or-name>` to update only one extension. See the [extensions reference](reference/extensions.md#update-extensions) for details.
151
154
 
152
- **Known issue:** `specify init --here --force` currently overwrites `.specify/memory/constitution.md` with the default template, erasing any customizations you made.
155
+ ### Fallback: re-run init
153
156
 
154
- **Workaround:**
157
+ If a project predates manifests, has missing integration metadata, or needs a broader recovery, you can still re-run init:
155
158
 
156
159
  ```bash
157
- # 1. Back up your constitution before upgrading
158
- cp .specify/memory/constitution.md .specify/memory/constitution-backup.md
160
+ specify init --here --force --integration <your-agent>
161
+ ```
159
162
 
160
- # 2. Run the upgrade
161
- specify init --here --force --integration copilot
163
+ Use this as an escape hatch rather than the default project-file upgrade path. It refreshes the selected integration and shared project scaffolding, but it does not use the same per-integration manifest checks before overwriting files.
162
164
 
163
- # 3. Restore your customized constitution
164
- mv .specify/memory/constitution-backup.md .specify/memory/constitution.md
165
- ```
165
+ ## ⚠️ Important Warnings
166
166
 
167
- Or use git to restore it:
167
+ ### 1. Constitution file and memory customizations
168
168
 
169
- ```bash
170
- # After upgrade, restore from git history
171
- git restore .specify/memory/constitution.md
172
- ```
169
+ `specify integration upgrade <key>` does not update `.specify/memory/constitution.md`.
170
+
171
+ The fallback `specify init --here --force --integration <your-agent>` path also preserves an existing `.specify/memory/constitution.md`; if the file is missing, init creates it from the current constitution template. You do not need a constitution backup/restore step for the manifest-aware upgrade path.
173
172
 
174
- ### 2. Custom script or template modifications
173
+ As with any broad fallback refresh, commit or back up local customizations before using `init --here --force` so you can review the resulting diff.
175
174
 
176
- If you customized files in `.specify/scripts/` or `.specify/templates/`, the `--force` flag will overwrite them. Back them up first:
175
+ ### 2. Custom integration, script, or template modifications
176
+
177
+ `specify integration upgrade <key>` blocks when manifest-tracked integration files were modified locally, unless you pass `--force`.
178
+
179
+ Shared scripts and templates are refreshed when they still match the previously recorded managed copy. Local customizations are preserved unless you explicitly use a force/refresh option that overwrites them. If you customized files in `.specify/scripts/` or `.specify/templates/`, commit or back them up first:
177
180
 
178
181
  ```bash
179
182
  # Back up custom templates and scripts
@@ -215,29 +218,29 @@ Restart your IDE to refresh the command list.
215
218
  # Upgrade CLI (auto-detects uv tool vs pipx install)
216
219
  specify self upgrade
217
220
 
218
- # Update project files to get new commands
219
- specify init --here --force --integration copilot
221
+ # Inspect installed integrations
222
+ specify integration status
220
223
 
221
- # Restore your constitution if customized
222
- git restore .specify/memory/constitution.md
224
+ # Update project files to get new commands
225
+ specify integration upgrade <key>
226
+ specify extension update
223
227
  ```
224
228
 
225
229
  ### Scenario 2: "I customized templates and constitution"
226
230
 
227
231
  ```bash
228
- # 1. Back up customizations
229
- cp .specify/memory/constitution.md /tmp/constitution-backup.md
232
+ # 1. Commit or back up customizations
233
+ git status
230
234
  cp -r .specify/templates /tmp/templates-backup
231
235
 
232
236
  # 2. Upgrade CLI
233
237
  specify self upgrade
234
238
 
235
- # 3. Update project
236
- specify init --here --force --integration copilot
239
+ # 3. Use the manifest-aware project update first
240
+ specify integration upgrade <key>
241
+ specify extension update
237
242
 
238
- # 4. Restore customizations
239
- mv /tmp/constitution-backup.md .specify/memory/constitution.md
240
- # Manually merge template changes if needed
243
+ # 4. If the upgrade reports modified managed files, inspect the diff before using --force
241
244
  ```
242
245
 
243
246
  ### Scenario 3: "I see duplicate slash commands in my IDE"
@@ -262,14 +265,14 @@ rm speckit.old-command-name.md
262
265
  The git extension is now opt-in, so upgrades do not install it unless you add it explicitly.
263
266
 
264
267
  ```bash
265
- # Manually back up files you customized
266
- cp .specify/memory/constitution.md .specify/memory/constitution.backup.md
268
+ # Upgrade CLI
269
+ specify self upgrade
267
270
 
268
- # Run upgrade
269
- specify init --here --force --integration copilot
271
+ # Refresh integration files and installed extensions
272
+ specify integration upgrade <key>
273
+ specify extension update
270
274
 
271
- # Restore customizations
272
- mv .specify/memory/constitution.backup.md .specify/memory/constitution.md
275
+ # The git extension is not added unless you run `specify extension add git`
273
276
  ```
274
277
 
275
278
  If you later decide you want the git extension's commands and hooks, install it explicitly:
@@ -315,19 +318,21 @@ Alternatively, run the `/speckit.specify` command which creates `.specify/featur
315
318
  - Codex requires `CODEX_HOME` environment variable
316
319
  - Some agents need workspace restart or cache clearing
317
320
 
318
- ### "I lost my constitution customizations"
321
+ ### "Will init overwrite my constitution customizations?"
322
+
323
+ Current `specify init --here --force` preserves an existing `.specify/memory/constitution.md`; it creates the file from the template only when it is missing.
319
324
 
320
- **Fix:** Restore from git or backup:
325
+ If you previously lost constitution changes through an older workflow or manual replacement, restore from git or backup:
321
326
 
322
327
  ```bash
323
- # If you committed before upgrading
328
+ # If you committed the customized constitution
324
329
  git restore .specify/memory/constitution.md
325
330
 
326
331
  # If you backed up manually
327
332
  cp /tmp/constitution-backup.md .specify/memory/constitution.md
328
333
  ```
329
334
 
330
- **Prevention:** Always commit or back up `constitution.md` before upgrading.
335
+ **Prevention:** Use `specify integration upgrade <key>` for routine project-file updates. If you need the fallback `specify init --here --force` path, commit first so you can review the full diff afterward.
331
336
 
332
337
  ### "Warning: Current directory is not empty"
333
338
 
@@ -354,7 +359,7 @@ Only Spec Kit infrastructure files:
354
359
  - Agent command files (`.claude/commands/`, `.github/prompts/`, etc.)
355
360
  - Scripts in `.specify/scripts/`
356
361
  - Templates in `.specify/templates/`
357
- - Memory files in `.specify/memory/` (including constitution)
362
+ - Missing memory files such as `.specify/memory/constitution.md` may be created from templates; an existing constitution is preserved
358
363
 
359
364
  **What stays untouched:**
360
365
 
@@ -365,7 +370,7 @@ Only Spec Kit infrastructure files:
365
370
 
366
371
  **How to respond:**
367
372
 
368
- - **Type `y` and press Enter** - Proceed with the merge (recommended if upgrading)
373
+ - **Type `y` and press Enter** - Proceed with the merge when using the fallback init path
369
374
  - **Type `n` and press Enter** - Cancel the operation
370
375
  - **Use `--force` flag** - Skip this confirmation entirely:
371
376
 
@@ -375,11 +380,11 @@ Only Spec Kit infrastructure files:
375
380
 
376
381
  **When you see this warning:**
377
382
 
378
- - ✅ **Expected** when upgrading an existing Spec Kit project
383
+ - ✅ **Expected** when using the fallback init path in an existing Spec Kit project
379
384
  - ✅ **Expected** when adding Spec Kit to an existing codebase
380
385
  - ⚠️ **Unexpected** if you thought you were creating a new project in an empty directory
381
386
 
382
- **Prevention tip:** Before upgrading, commit or back up your `.specify/memory/constitution.md` if you customized it.
387
+ **Prevention tip:** Before using the fallback init path, commit your current work so any refreshed files are easy to review or restore.
383
388
 
384
389
  ### "CLI upgrade doesn't seem to work"
385
390
 
@@ -418,14 +423,15 @@ uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
418
423
 
419
424
  ### "Do I need to run specify every time I open my project?"
420
425
 
421
- **Short answer:** No, you only run `specify init` once per project (or when upgrading).
426
+ **Short answer:** No, you only run `specify init` once per project, or later as a fallback recovery path.
422
427
 
423
428
  **Explanation:**
424
429
 
425
430
  The `specify` CLI tool is used for:
426
431
 
427
432
  - **Initial setup:** `specify init` to bootstrap Spec Kit in your project
428
- - **Upgrades:** `specify init --here --force` to update templates and commands
433
+ - **Routine project-file upgrades:** `specify integration upgrade <key>` and `specify extension update`
434
+ - **Fallback recovery:** `specify init --here --force` when integration metadata is missing or the manifest-aware path cannot be used
429
435
  - **Diagnostics:** `specify check` to verify tool installation
430
436
 
431
437
  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.