specify-cli 0.11.3__tar.gz → 0.11.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 (433) hide show
  1. specify_cli-0.11.4/.gitattributes +7 -0
  2. {specify_cli-0.11.3 → specify_cli-0.11.4}/.gitignore +2 -2
  3. {specify_cli-0.11.3 → specify_cli-0.11.4}/AGENTS.md +10 -2
  4. {specify_cli-0.11.3 → specify_cli-0.11.4}/CHANGELOG.md +15 -2
  5. {specify_cli-0.11.3 → specify_cli-0.11.4}/CONTRIBUTING.md +18 -0
  6. {specify_cli-0.11.3 → specify_cli-0.11.4}/PKG-INFO +53 -1
  7. {specify_cli-0.11.3 → specify_cli-0.11.4}/README.md +52 -0
  8. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/community/extensions.md +1 -0
  9. specify_cli-0.11.4/docs/reference/bundles.md +156 -0
  10. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/reference/overview.md +6 -0
  11. specify_cli-0.11.4/examples/bundles/business-analyst/README.md +22 -0
  12. specify_cli-0.11.4/examples/bundles/business-analyst/bundle.yml +33 -0
  13. specify_cli-0.11.4/examples/bundles/developer/README.md +22 -0
  14. specify_cli-0.11.4/examples/bundles/developer/bundle.yml +33 -0
  15. specify_cli-0.11.4/examples/bundles/product-manager/README.md +22 -0
  16. specify_cli-0.11.4/examples/bundles/product-manager/bundle.yml +35 -0
  17. specify_cli-0.11.4/examples/bundles/security-researcher/README.md +23 -0
  18. specify_cli-0.11.4/examples/bundles/security-researcher/bundle.yml +33 -0
  19. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/catalog.community.json +42 -4
  20. {specify_cli-0.11.3 → specify_cli-0.11.4}/pyproject.toml +1 -1
  21. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/__init__.py +80 -1
  22. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/_utils.py +39 -1
  23. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/agents.py +56 -3
  24. specify_cli-0.11.4/src/specify_cli/bundler/__init__.py +19 -0
  25. specify_cli-0.11.4/src/specify_cli/bundler/commands_impl/__init__.py +2 -0
  26. specify_cli-0.11.4/src/specify_cli/bundler/commands_impl/catalog_config.py +191 -0
  27. specify_cli-0.11.4/src/specify_cli/bundler/lib/__init__.py +2 -0
  28. specify_cli-0.11.4/src/specify_cli/bundler/lib/project.py +62 -0
  29. specify_cli-0.11.4/src/specify_cli/bundler/lib/versioning.py +99 -0
  30. specify_cli-0.11.4/src/specify_cli/bundler/lib/yamlio.py +119 -0
  31. specify_cli-0.11.4/src/specify_cli/bundler/models/__init__.py +2 -0
  32. specify_cli-0.11.4/src/specify_cli/bundler/models/catalog.py +258 -0
  33. specify_cli-0.11.4/src/specify_cli/bundler/models/manifest.py +263 -0
  34. specify_cli-0.11.4/src/specify_cli/bundler/models/records.py +229 -0
  35. specify_cli-0.11.4/src/specify_cli/bundler/services/__init__.py +2 -0
  36. specify_cli-0.11.4/src/specify_cli/bundler/services/adapters.py +193 -0
  37. specify_cli-0.11.4/src/specify_cli/bundler/services/catalog_stack.py +114 -0
  38. specify_cli-0.11.4/src/specify_cli/bundler/services/conflict.py +54 -0
  39. specify_cli-0.11.4/src/specify_cli/bundler/services/installer.py +210 -0
  40. specify_cli-0.11.4/src/specify_cli/bundler/services/packager.py +145 -0
  41. specify_cli-0.11.4/src/specify_cli/bundler/services/primitives.py +345 -0
  42. specify_cli-0.11.4/src/specify_cli/bundler/services/references.py +114 -0
  43. specify_cli-0.11.4/src/specify_cli/bundler/services/resolver.py +122 -0
  44. specify_cli-0.11.4/src/specify_cli/bundler/services/validator.py +60 -0
  45. specify_cli-0.11.4/src/specify_cli/commands/bundle/__init__.py +834 -0
  46. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/extensions.py +17 -15
  47. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/presets/__init__.py +6 -2
  48. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/workflows/base.py +4 -3
  49. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/workflows/engine.py +1 -0
  50. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/workflows/expressions.py +34 -1
  51. specify_cli-0.11.4/tests/bundler_helpers.py +125 -0
  52. specify_cli-0.11.4/tests/contract/test_bundle_cli.py +391 -0
  53. specify_cli-0.11.4/tests/contract/test_catalog_schema.py +147 -0
  54. specify_cli-0.11.4/tests/contract/test_manifest_schema.py +126 -0
  55. specify_cli-0.11.4/tests/integration/test_bundler_catalog_stack.py +79 -0
  56. specify_cli-0.11.4/tests/integration/test_bundler_init_install.py +92 -0
  57. specify_cli-0.11.4/tests/integration/test_bundler_install_flow.py +222 -0
  58. specify_cli-0.11.4/tests/integration/test_bundler_local_install.py +114 -0
  59. specify_cli-0.11.4/tests/integration/test_bundler_offline.py +78 -0
  60. specify_cli-0.11.4/tests/integration/test_bundler_security_paths.py +173 -0
  61. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_extensions.py +34 -0
  62. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_presets.py +78 -0
  63. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_registrar_path_traversal.py +180 -2
  64. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_workflows.py +298 -0
  65. specify_cli-0.11.4/tests/unit/test_bundler_adapters.py +71 -0
  66. specify_cli-0.11.4/tests/unit/test_bundler_catalog_config.py +181 -0
  67. specify_cli-0.11.4/tests/unit/test_bundler_conflict.py +54 -0
  68. specify_cli-0.11.4/tests/unit/test_bundler_packager.py +193 -0
  69. specify_cli-0.11.4/tests/unit/test_bundler_primitives.py +133 -0
  70. specify_cli-0.11.4/tests/unit/test_bundler_records.py +190 -0
  71. specify_cli-0.11.4/tests/unit/test_bundler_references.py +41 -0
  72. specify_cli-0.11.4/tests/unit/test_bundler_resolver.py +81 -0
  73. specify_cli-0.11.4/tests/unit/test_bundler_validator.py +32 -0
  74. specify_cli-0.11.4/tests/unit/test_bundler_versioning.py +68 -0
  75. specify_cli-0.11.3/.gitattributes +0 -3
  76. {specify_cli-0.11.3 → specify_cli-0.11.4}/.devcontainer/devcontainer.json +0 -0
  77. {specify_cli-0.11.3 → specify_cli-0.11.4}/.devcontainer/post-create.sh +0 -0
  78. {specify_cli-0.11.3 → specify_cli-0.11.4}/.editorconfig +0 -0
  79. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/CODEOWNERS +0 -0
  80. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/ISSUE_TEMPLATE/agent_request.yml +0 -0
  81. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  82. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  83. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/ISSUE_TEMPLATE/extension_submission.yml +0 -0
  84. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  85. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/ISSUE_TEMPLATE/preset_submission.yml +0 -0
  86. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  87. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/aw/actions-lock.json +0 -0
  88. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/dependabot.yml +0 -0
  89. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/skills/add-community-extension/SKILL.md +0 -0
  90. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/workflows/RELEASE-PROCESS.md +0 -0
  91. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/workflows/add-community-extension.lock.yml +0 -0
  92. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/workflows/add-community-extension.md +0 -0
  93. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/workflows/add-community-preset.lock.yml +0 -0
  94. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/workflows/add-community-preset.md +0 -0
  95. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/workflows/bug-assess.lock.yml +0 -0
  96. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/workflows/bug-assess.md +0 -0
  97. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/workflows/catalog-assign.yml +0 -0
  98. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/workflows/codeql.yml +0 -0
  99. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/workflows/docs.yml +0 -0
  100. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/workflows/lint.yml +0 -0
  101. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/workflows/release-trigger.yml +0 -0
  102. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/workflows/release.yml +0 -0
  103. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/workflows/stale.yml +0 -0
  104. {specify_cli-0.11.3 → specify_cli-0.11.4}/.github/workflows/test.yml +0 -0
  105. {specify_cli-0.11.3 → specify_cli-0.11.4}/.markdownlint-cli2.jsonc +0 -0
  106. {specify_cli-0.11.3 → specify_cli-0.11.4}/.zenodo.json +0 -0
  107. {specify_cli-0.11.3 → specify_cli-0.11.4}/CITATION.cff +0 -0
  108. {specify_cli-0.11.3 → specify_cli-0.11.4}/CODE_OF_CONDUCT.md +0 -0
  109. {specify_cli-0.11.3 → specify_cli-0.11.4}/DEVELOPMENT.md +0 -0
  110. {specify_cli-0.11.3 → specify_cli-0.11.4}/LICENSE +0 -0
  111. {specify_cli-0.11.3 → specify_cli-0.11.4}/SECURITY.md +0 -0
  112. {specify_cli-0.11.3 → specify_cli-0.11.4}/SUPPORT.md +0 -0
  113. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/.gitignore +0 -0
  114. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/README.md +0 -0
  115. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/community/friends.md +0 -0
  116. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/community/overview.md +0 -0
  117. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/community/presets.md +0 -0
  118. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/community/walkthroughs.md +0 -0
  119. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/concepts/complex-features.md +0 -0
  120. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/concepts/sdd.md +0 -0
  121. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/concepts/spec-persistence.md +0 -0
  122. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/docfx.json +0 -0
  123. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/guides/evolving-specs.md +0 -0
  124. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/index.md +0 -0
  125. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/install/air-gapped.md +0 -0
  126. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/install/one-time.md +0 -0
  127. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/install/pipx.md +0 -0
  128. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/install/uv.md +0 -0
  129. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/installation.md +0 -0
  130. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/local-development.md +0 -0
  131. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/quickstart.md +0 -0
  132. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/reference/authentication.md +0 -0
  133. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/reference/core.md +0 -0
  134. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/reference/extensions.md +0 -0
  135. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/reference/integrations.md +0 -0
  136. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/reference/presets.md +0 -0
  137. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/reference/workflows.md +0 -0
  138. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/template/public/main.css +0 -0
  139. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/toc.yml +0 -0
  140. {specify_cli-0.11.3 → specify_cli-0.11.4}/docs/upgrade.md +0 -0
  141. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/EXTENSION-API-REFERENCE.md +0 -0
  142. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/EXTENSION-DEVELOPMENT-GUIDE.md +0 -0
  143. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/EXTENSION-PUBLISHING-GUIDE.md +0 -0
  144. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/EXTENSION-USER-GUIDE.md +0 -0
  145. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/README.md +0 -0
  146. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/RFC-EXTENSION-SYSTEM.md +0 -0
  147. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/agent-context/README.md +0 -0
  148. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/agent-context/agent-context-config.yml +0 -0
  149. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/agent-context/commands/speckit.agent-context.update.md +0 -0
  150. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/agent-context/extension.yml +0 -0
  151. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/agent-context/scripts/bash/update-agent-context.sh +0 -0
  152. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -0
  153. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/bug/README.md +0 -0
  154. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/bug/commands/speckit.bug.assess.md +0 -0
  155. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/bug/commands/speckit.bug.fix.md +0 -0
  156. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/bug/commands/speckit.bug.test.md +0 -0
  157. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/bug/extension.yml +0 -0
  158. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/catalog.json +0 -0
  159. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/git/README.md +0 -0
  160. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/git/commands/speckit.git.commit.md +0 -0
  161. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/git/commands/speckit.git.feature.md +0 -0
  162. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/git/commands/speckit.git.initialize.md +0 -0
  163. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/git/commands/speckit.git.remote.md +0 -0
  164. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/git/commands/speckit.git.validate.md +0 -0
  165. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/git/config-template.yml +0 -0
  166. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/git/extension.yml +0 -0
  167. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/git/git-config.yml +0 -0
  168. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/git/scripts/bash/auto-commit.sh +0 -0
  169. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/git/scripts/bash/create-new-feature-branch.sh +0 -0
  170. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/git/scripts/bash/git-common.sh +0 -0
  171. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/git/scripts/bash/initialize-repo.sh +0 -0
  172. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/git/scripts/powershell/auto-commit.ps1 +0 -0
  173. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/git/scripts/powershell/create-new-feature-branch.ps1 +0 -0
  174. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/git/scripts/powershell/git-common.ps1 +0 -0
  175. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/git/scripts/powershell/initialize-repo.ps1 +0 -0
  176. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/selftest/commands/selftest.md +0 -0
  177. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/selftest/extension.yml +0 -0
  178. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/template/.gitignore +0 -0
  179. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/template/CHANGELOG.md +0 -0
  180. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/template/EXAMPLE-README.md +0 -0
  181. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/template/LICENSE +0 -0
  182. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/template/README.md +0 -0
  183. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/template/commands/example.md +0 -0
  184. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/template/config-template.yml +0 -0
  185. {specify_cli-0.11.3 → specify_cli-0.11.4}/extensions/template/extension.yml +0 -0
  186. {specify_cli-0.11.3 → specify_cli-0.11.4}/integrations/CONTRIBUTING.md +0 -0
  187. {specify_cli-0.11.3 → specify_cli-0.11.4}/integrations/README.md +0 -0
  188. {specify_cli-0.11.3 → specify_cli-0.11.4}/integrations/catalog.community.json +0 -0
  189. {specify_cli-0.11.3 → specify_cli-0.11.4}/integrations/catalog.json +0 -0
  190. {specify_cli-0.11.3 → specify_cli-0.11.4}/media/bootstrap-claude-code.gif +0 -0
  191. {specify_cli-0.11.3 → specify_cli-0.11.4}/media/logo_large.webp +0 -0
  192. {specify_cli-0.11.3 → specify_cli-0.11.4}/media/logo_small.webp +0 -0
  193. {specify_cli-0.11.3 → specify_cli-0.11.4}/media/spec-kit-video-header.jpg +0 -0
  194. {specify_cli-0.11.3 → specify_cli-0.11.4}/media/specify_cli.gif +0 -0
  195. {specify_cli-0.11.3 → specify_cli-0.11.4}/newsletters/2026-April.md +0 -0
  196. {specify_cli-0.11.3 → specify_cli-0.11.4}/newsletters/2026-February.md +0 -0
  197. {specify_cli-0.11.3 → specify_cli-0.11.4}/newsletters/2026-March.md +0 -0
  198. {specify_cli-0.11.3 → specify_cli-0.11.4}/newsletters/2026-May.md +0 -0
  199. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/ARCHITECTURE.md +0 -0
  200. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/PUBLISHING.md +0 -0
  201. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/README.md +0 -0
  202. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/catalog.community.json +0 -0
  203. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/catalog.json +0 -0
  204. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/lean/README.md +0 -0
  205. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/lean/commands/speckit.constitution.md +0 -0
  206. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/lean/commands/speckit.implement.md +0 -0
  207. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/lean/commands/speckit.plan.md +0 -0
  208. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/lean/commands/speckit.specify.md +0 -0
  209. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/lean/commands/speckit.tasks.md +0 -0
  210. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/lean/preset.yml +0 -0
  211. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/scaffold/README.md +0 -0
  212. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/scaffold/commands/speckit.myext.myextcmd.md +0 -0
  213. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/scaffold/commands/speckit.specify.md +0 -0
  214. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/scaffold/preset.yml +0 -0
  215. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/scaffold/templates/myext-template.md +0 -0
  216. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/scaffold/templates/spec-template.md +0 -0
  217. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/self-test/commands/speckit.specify.md +0 -0
  218. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/self-test/commands/speckit.wrap-test.md +0 -0
  219. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/self-test/preset.yml +0 -0
  220. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/self-test/templates/agent-file-template.md +0 -0
  221. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/self-test/templates/checklist-template.md +0 -0
  222. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/self-test/templates/constitution-template.md +0 -0
  223. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/self-test/templates/plan-template.md +0 -0
  224. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/self-test/templates/spec-template.md +0 -0
  225. {specify_cli-0.11.3 → specify_cli-0.11.4}/presets/self-test/templates/tasks-template.md +0 -0
  226. {specify_cli-0.11.3 → specify_cli-0.11.4}/scripts/bash/check-prerequisites.sh +0 -0
  227. {specify_cli-0.11.3 → specify_cli-0.11.4}/scripts/bash/common.sh +0 -0
  228. {specify_cli-0.11.3 → specify_cli-0.11.4}/scripts/bash/create-new-feature.sh +0 -0
  229. {specify_cli-0.11.3 → specify_cli-0.11.4}/scripts/bash/setup-plan.sh +0 -0
  230. {specify_cli-0.11.3 → specify_cli-0.11.4}/scripts/bash/setup-tasks.sh +0 -0
  231. {specify_cli-0.11.3 → specify_cli-0.11.4}/scripts/powershell/check-prerequisites.ps1 +0 -0
  232. {specify_cli-0.11.3 → specify_cli-0.11.4}/scripts/powershell/common.ps1 +0 -0
  233. {specify_cli-0.11.3 → specify_cli-0.11.4}/scripts/powershell/create-new-feature.ps1 +0 -0
  234. {specify_cli-0.11.3 → specify_cli-0.11.4}/scripts/powershell/setup-plan.ps1 +0 -0
  235. {specify_cli-0.11.3 → specify_cli-0.11.4}/scripts/powershell/setup-tasks.ps1 +0 -0
  236. {specify_cli-0.11.3 → specify_cli-0.11.4}/spec-driven.md +0 -0
  237. {specify_cli-0.11.3 → specify_cli-0.11.4}/spec-kit.code-workspace +0 -0
  238. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/_agent_config.py +0 -0
  239. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/_assets.py +0 -0
  240. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/_console.py +0 -0
  241. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/_github_http.py +0 -0
  242. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/_init_options.py +0 -0
  243. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/_invocation_style.py +0 -0
  244. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/_version.py +0 -0
  245. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/authentication/__init__.py +0 -0
  246. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/authentication/azure_devops.py +0 -0
  247. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/authentication/base.py +0 -0
  248. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/authentication/config.py +0 -0
  249. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/authentication/github.py +0 -0
  250. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/authentication/http.py +0 -0
  251. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/catalogs.py +0 -0
  252. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/commands/__init__.py +0 -0
  253. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/commands/init.py +0 -0
  254. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integration_runtime.py +0 -0
  255. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integration_scaffold.py +0 -0
  256. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integration_state.py +0 -0
  257. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integration_status.py +0 -0
  258. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/__init__.py +0 -0
  259. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/_commands.py +0 -0
  260. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/_helpers.py +0 -0
  261. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/_install_commands.py +0 -0
  262. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/_migrate_commands.py +0 -0
  263. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/_query_commands.py +0 -0
  264. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/_scaffold_commands.py +0 -0
  265. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/agy/__init__.py +0 -0
  266. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/amp/__init__.py +0 -0
  267. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/auggie/__init__.py +0 -0
  268. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/base.py +0 -0
  269. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/bob/__init__.py +0 -0
  270. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/catalog.py +0 -0
  271. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/claude/__init__.py +0 -0
  272. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/cline/__init__.py +0 -0
  273. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/codebuddy/__init__.py +0 -0
  274. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/codex/__init__.py +0 -0
  275. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/copilot/__init__.py +0 -0
  276. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/cursor_agent/__init__.py +0 -0
  277. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/devin/__init__.py +0 -0
  278. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/forge/__init__.py +0 -0
  279. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/gemini/__init__.py +0 -0
  280. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/generic/__init__.py +0 -0
  281. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/goose/__init__.py +0 -0
  282. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/hermes/__init__.py +0 -0
  283. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/iflow/__init__.py +0 -0
  284. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/junie/__init__.py +0 -0
  285. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/kilocode/__init__.py +0 -0
  286. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/kimi/__init__.py +0 -0
  287. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/kiro_cli/__init__.py +0 -0
  288. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/lingma/__init__.py +0 -0
  289. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/manifest.py +0 -0
  290. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/opencode/__init__.py +0 -0
  291. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/pi/__init__.py +0 -0
  292. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/qodercli/__init__.py +0 -0
  293. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/qwen/__init__.py +0 -0
  294. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/roo/__init__.py +0 -0
  295. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/rovodev/__init__.py +0 -0
  296. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/shai/__init__.py +0 -0
  297. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/tabnine/__init__.py +0 -0
  298. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/trae/__init__.py +0 -0
  299. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/vibe/__init__.py +0 -0
  300. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/windsurf/__init__.py +0 -0
  301. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/integrations/zed/__init__.py +0 -0
  302. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/presets/_commands.py +0 -0
  303. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/shared_infra.py +0 -0
  304. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/workflows/__init__.py +0 -0
  305. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/workflows/catalog.py +0 -0
  306. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/workflows/steps/__init__.py +0 -0
  307. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/workflows/steps/command/__init__.py +0 -0
  308. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/workflows/steps/do_while/__init__.py +0 -0
  309. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/workflows/steps/fan_in/__init__.py +0 -0
  310. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/workflows/steps/fan_out/__init__.py +0 -0
  311. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/workflows/steps/gate/__init__.py +0 -0
  312. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/workflows/steps/if_then/__init__.py +0 -0
  313. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/workflows/steps/init/__init__.py +0 -0
  314. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/workflows/steps/prompt/__init__.py +0 -0
  315. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/workflows/steps/shell/__init__.py +0 -0
  316. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/workflows/steps/switch/__init__.py +0 -0
  317. {specify_cli-0.11.3 → specify_cli-0.11.4}/src/specify_cli/workflows/steps/while_loop/__init__.py +0 -0
  318. {specify_cli-0.11.3 → specify_cli-0.11.4}/templates/checklist-template.md +0 -0
  319. {specify_cli-0.11.3 → specify_cli-0.11.4}/templates/commands/analyze.md +0 -0
  320. {specify_cli-0.11.3 → specify_cli-0.11.4}/templates/commands/checklist.md +0 -0
  321. {specify_cli-0.11.3 → specify_cli-0.11.4}/templates/commands/clarify.md +0 -0
  322. {specify_cli-0.11.3 → specify_cli-0.11.4}/templates/commands/constitution.md +0 -0
  323. {specify_cli-0.11.3 → specify_cli-0.11.4}/templates/commands/converge.md +0 -0
  324. {specify_cli-0.11.3 → specify_cli-0.11.4}/templates/commands/implement.md +0 -0
  325. {specify_cli-0.11.3 → specify_cli-0.11.4}/templates/commands/plan.md +0 -0
  326. {specify_cli-0.11.3 → specify_cli-0.11.4}/templates/commands/specify.md +0 -0
  327. {specify_cli-0.11.3 → specify_cli-0.11.4}/templates/commands/tasks.md +0 -0
  328. {specify_cli-0.11.3 → specify_cli-0.11.4}/templates/commands/taskstoissues.md +0 -0
  329. {specify_cli-0.11.3 → specify_cli-0.11.4}/templates/constitution-template.md +0 -0
  330. {specify_cli-0.11.3 → specify_cli-0.11.4}/templates/plan-template.md +0 -0
  331. {specify_cli-0.11.3 → specify_cli-0.11.4}/templates/spec-template.md +0 -0
  332. {specify_cli-0.11.3 → specify_cli-0.11.4}/templates/tasks-template.md +0 -0
  333. {specify_cli-0.11.3 → specify_cli-0.11.4}/templates/vscode-settings.json +0 -0
  334. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/__init__.py +0 -0
  335. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/auth_helpers.py +0 -0
  336. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/conftest.py +0 -0
  337. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/extensions/__init__.py +0 -0
  338. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/extensions/bug/__init__.py +0 -0
  339. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/extensions/bug/test_bug_extension.py +0 -0
  340. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/extensions/git/__init__.py +0 -0
  341. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/extensions/git/test_git_extension.py +0 -0
  342. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/extensions/test_extension_agent_context.py +0 -0
  343. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/hooks/TESTING.md +0 -0
  344. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/hooks/plan.md +0 -0
  345. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/hooks/spec.md +0 -0
  346. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/hooks/tasks.md +0 -0
  347. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/http_helpers.py +0 -0
  348. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/__init__.py +0 -0
  349. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/conftest.py +0 -0
  350. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_base.py +0 -0
  351. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_cli.py +0 -0
  352. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_extra_args.py +0 -0
  353. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_agy.py +0 -0
  354. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_amp.py +0 -0
  355. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_auggie.py +0 -0
  356. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_base_markdown.py +0 -0
  357. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_base_skills.py +0 -0
  358. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_base_toml.py +0 -0
  359. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_base_yaml.py +0 -0
  360. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_bob.py +0 -0
  361. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_catalog.py +0 -0
  362. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_claude.py +0 -0
  363. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_cline.py +0 -0
  364. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_codebuddy.py +0 -0
  365. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_codex.py +0 -0
  366. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_copilot.py +0 -0
  367. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_cursor_agent.py +0 -0
  368. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_devin.py +0 -0
  369. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_forge.py +0 -0
  370. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_gemini.py +0 -0
  371. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_generic.py +0 -0
  372. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_goose.py +0 -0
  373. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_hermes.py +0 -0
  374. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_iflow.py +0 -0
  375. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_junie.py +0 -0
  376. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_kilocode.py +0 -0
  377. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_kimi.py +0 -0
  378. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_kiro_cli.py +0 -0
  379. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_lingma.py +0 -0
  380. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_opencode.py +0 -0
  381. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_pi.py +0 -0
  382. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_qodercli.py +0 -0
  383. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_qwen.py +0 -0
  384. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_roo.py +0 -0
  385. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_rovodev.py +0 -0
  386. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_scaffold.py +0 -0
  387. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_shai.py +0 -0
  388. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_state.py +0 -0
  389. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_subcommand.py +0 -0
  390. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_tabnine.py +0 -0
  391. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_trae.py +0 -0
  392. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_vibe.py +0 -0
  393. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_windsurf.py +0 -0
  394. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_integration_zed.py +0 -0
  395. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_manifest.py +0 -0
  396. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/integrations/test_registry.py +0 -0
  397. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/self_upgrade_helpers.py +0 -0
  398. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_agent_config_consistency.py +0 -0
  399. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_authentication.py +0 -0
  400. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_branch_numbering.py +0 -0
  401. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_check_prerequisites_paths_only.py +0 -0
  402. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_check_tool.py +0 -0
  403. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_cli_version.py +0 -0
  404. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_commands_package.py +0 -0
  405. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_console_imports.py +0 -0
  406. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_extension_registration.py +0 -0
  407. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_extension_skills.py +0 -0
  408. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_extension_update_hardening.py +0 -0
  409. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_github_http.py +0 -0
  410. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_init_dir.py +0 -0
  411. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_live_transient_windows.py +0 -0
  412. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_merge.py +0 -0
  413. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_ps1_encoding.py +0 -0
  414. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_self_upgrade_detection.py +0 -0
  415. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_self_upgrade_execution.py +0 -0
  416. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_self_upgrade_guidance.py +0 -0
  417. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_self_upgrade_verification.py +0 -0
  418. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_setup_plan_feature_json.py +0 -0
  419. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_setup_plan_no_overwrite.py +0 -0
  420. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_setup_tasks.py +0 -0
  421. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_timestamp_branches.py +0 -0
  422. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_upgrade.py +0 -0
  423. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_utils_assets_imports.py +0 -0
  424. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_version_imports.py +0 -0
  425. {specify_cli-0.11.3 → specify_cli-0.11.4}/tests/test_workflow_run_without_project.py +0 -0
  426. {specify_cli-0.11.3 → specify_cli-0.11.4}/workflows/ARCHITECTURE.md +0 -0
  427. {specify_cli-0.11.3 → specify_cli-0.11.4}/workflows/PUBLISHING.md +0 -0
  428. {specify_cli-0.11.3 → specify_cli-0.11.4}/workflows/README.md +0 -0
  429. {specify_cli-0.11.3 → specify_cli-0.11.4}/workflows/catalog.community.json +0 -0
  430. {specify_cli-0.11.3 → specify_cli-0.11.4}/workflows/catalog.json +0 -0
  431. {specify_cli-0.11.3 → specify_cli-0.11.4}/workflows/speckit/workflow.yml +0 -0
  432. {specify_cli-0.11.3 → specify_cli-0.11.4}/workflows/step-catalog.community.json +0 -0
  433. {specify_cli-0.11.3 → specify_cli-0.11.4}/workflows/step-catalog.json +0 -0
@@ -0,0 +1,7 @@
1
+ * text=auto eol=lf
2
+
3
+ .github/workflows/*.lock.yml linguist-generated=true merge=ours -whitespace
4
+ # The project constitution is the one dogfooding artifact carried forward.
5
+ # Keep it exempt from git's whitespace checks (git diff --check / CI) since its
6
+ # generated formatting is not hand-edited.
7
+ .specify/memory/constitution.md -whitespace
@@ -10,8 +10,8 @@ dist/
10
10
  downloads/
11
11
  eggs/
12
12
  .eggs/
13
- lib/
14
- lib64/
13
+ /lib/
14
+ /lib64/
15
15
  parts/
16
16
  sdist/
17
17
  var/
@@ -14,7 +14,7 @@ The toolkit supports multiple AI coding assistants, allowing teams to use their
14
14
 
15
15
  Each AI agent is a self-contained **integration subpackage** under `src/specify_cli/integrations/<key>/`. The subpackage exposes a single class that declares all metadata and inherits setup/teardown logic from a base class. Built-in integrations are then instantiated and added to the global `INTEGRATION_REGISTRY` by `src/specify_cli/integrations/__init__.py` via `_register_builtins()`.
16
16
 
17
- ```
17
+ ```text
18
18
  src/specify_cli/integrations/
19
19
  ├── __init__.py # INTEGRATION_REGISTRY + _register_builtins()
20
20
  ├── base.py # IntegrationBase, MarkdownIntegration, TomlIntegration, YamlIntegration, SkillsIntegration
@@ -340,18 +340,21 @@ Some agents require custom processing beyond the standard template transformatio
340
340
  ### Copilot Integration
341
341
 
342
342
  GitHub Copilot has unique requirements:
343
+
343
344
  - Commands use `.agent.md` extension (not `.md`)
344
345
  - Each command gets a companion `.prompt.md` file in `.github/prompts/`
345
346
  - Installs `.vscode/settings.json` with prompt file recommendations
346
347
  - Context file lives at `.github/copilot-instructions.md`
347
348
 
348
349
  Implementation: Extends `IntegrationBase` with custom `setup()` method that:
350
+
349
351
  1. Processes templates with `process_template()`
350
352
  2. Generates companion `.prompt.md` files
351
353
  3. Merges VS Code settings
352
354
 
353
355
  **Skills mode (`--skills`):** Copilot also supports an alternative skills-based layout
354
356
  via `--integration-options="--skills"`. When enabled:
357
+
355
358
  - Commands are scaffolded as `speckit-<name>/SKILL.md` under `.github/skills/`
356
359
  - No companion `.prompt.md` files are generated
357
360
  - No `.vscode/settings.json` merge
@@ -371,11 +374,13 @@ specify init my-project --integration copilot --integration-options="--skills"
371
374
  ### Forge Integration
372
375
 
373
376
  Forge has special frontmatter and argument requirements:
377
+
374
378
  - Uses `{{parameters}}` instead of `$ARGUMENTS`
375
379
  - Strips `handoffs` frontmatter key (Forge-specific collaboration feature)
376
380
  - Injects `name` field into frontmatter when missing
377
381
 
378
382
  Implementation: Extends `MarkdownIntegration` with custom `setup()` method that:
383
+
379
384
  1. Inherits standard template processing from `MarkdownIntegration`
380
385
  2. Adds extra `$ARGUMENTS` → `{{parameters}}` replacement after template processing
381
386
  3. Applies Forge-specific transformations via `_apply_forge_transformations()`
@@ -385,11 +390,13 @@ Implementation: Extends `MarkdownIntegration` with custom `setup()` method that:
385
390
  ### Goose Integration
386
391
 
387
392
  Goose is a YAML-format agent using Block's recipe system:
393
+
388
394
  - Uses `.goose/recipes/` directory for YAML recipe files
389
395
  - Uses `{{args}}` argument placeholder
390
396
  - Produces YAML with `prompt: |` block scalar for command content
391
397
 
392
398
  Implementation: Extends `YamlIntegration` (parallel to `TomlIntegration`):
399
+
393
400
  1. Processes templates through the standard placeholder pipeline
394
401
  2. Extracts title and description from frontmatter
395
402
  3. Renders output as Goose recipe YAML (version, title, description, author, extensions, activities, prompt)
@@ -400,7 +407,7 @@ Implementation: Extends `YamlIntegration` (parallel to `TomlIntegration`):
400
407
 
401
408
  Branches follow one of two patterns depending on whether an issue exists:
402
409
 
403
- ```
410
+ ```text
404
411
  <type>/<number>-<short-slug> # when an issue is created first
405
412
  <type>/<short-slug> # when no issue exists (PR-only changes)
406
413
  ```
@@ -463,6 +470,7 @@ Disclosure is **continuous**, not a one-time event. A single AI-disclosure parag
463
470
  3. **Incorrect `requires_cli` value**: Set to `True` only for agents that have a CLI tool; set to `False` for IDE-based agents.
464
471
  4. **Wrong argument format**: Use `$ARGUMENTS` for Markdown agents, `{{args}}` for TOML agents.
465
472
  5. **Skipping registration**: The import and `_register()` call in `_register_builtins()` must both be added.
473
+ 6. **Running tests against the wrong environment**: Always run the suite inside this working tree's own virtualenv (`uv sync --extra test` then `.venv/bin/python -m pytest`, or activate the venv first). A bare `uv run pytest` can resolve to an ambient/global interpreter whose editable `.pth` points at a *different* worktree. The failure is sneaky: test collection still imports `specify_cli` successfully, but newly-added subpackages (e.g. a fresh `specify_cli/bundler/`) resolve as a stale namespace package and raise `ModuleNotFoundError`. If a brand-new subpackage imports under `python -c` but not under pytest, suspect environment contamination, not your code.
466
474
 
467
475
  ---
468
476
 
@@ -2,6 +2,21 @@
2
2
 
3
3
  <!-- insert new changelog below this comment -->
4
4
 
5
+ ## [0.11.4] - 2026-06-22
6
+
7
+ ### Changed
8
+
9
+ - [extension] Add Tasks to GitHub Project extension to community catalog (#3090)
10
+ - Update Linear Integration extension to v0.7.0 (#3089)
11
+ - fix: fail loudly on an unknown workflow expression filter (#3074)
12
+ - fix: anchor lib/ and lib64/ patterns to repo root in .gitignore (#3083)
13
+ - fix(build): include specify_cli.bundler.lib in built distribution (#3085)
14
+ - Harden command registration path handling (#3088)
15
+ - fix(presets): preserve argument-hint in preset SKILL.md generation (#2978)
16
+ - feat: surface gate detail in the workflow run/resume --json payload (#2965)
17
+ - feat: add `specify bundle` command (#3070)
18
+ - chore: release 0.11.3, begin 0.11.4.dev0 development (#3072)
19
+
5
20
  ## [0.11.3] - 2026-06-19
6
21
 
7
22
  ### Changed
@@ -17,8 +32,6 @@
17
32
  - Add Token Economy extension to community catalog (#3049)
18
33
  - chore: release 0.11.2, begin 0.11.3.dev0 development (#3059)
19
34
 
20
- - feat(scripts): add SPECIFY_INIT_DIR to target a member project from the repo root (#2892)
21
-
22
35
  ## [0.11.2] - 2026-06-18
23
36
 
24
37
  ### Changed
@@ -95,6 +95,24 @@ uv run python -m pytest tests/test_agent_config_consistency.py -q
95
95
 
96
96
  Run this when you change agent metadata, context update scripts, or integration wiring.
97
97
 
98
+ #### Running the full test suite
99
+
100
+ Install the test dependencies into the project's own virtual environment and run
101
+ `pytest` through that interpreter:
102
+
103
+ ```bash
104
+ uv pip install -e ".[test]"
105
+ .venv/bin/python -m pytest tests -q # Windows: .venv\Scripts\python -m pytest tests -q
106
+ ```
107
+
108
+ > **Note:** prefer `.venv/bin/python -m pytest` over a bare `uv run pytest`.
109
+ > If another Spec Kit checkout has an editable (`-e`) install registered in a
110
+ > shared/global environment, `uv run pytest` can resolve `specify_cli` to that
111
+ > *other* worktree, turning it into a partial namespace package that fails to
112
+ > import newly added subpackages. Running through the project `.venv` resolves
113
+ > `specify_cli` to this checkout's `src/`. This matches the gotcha documented in
114
+ > `AGENTS.md` (Common Pitfalls).
115
+
98
116
  ### Manual testing
99
117
 
100
118
  #### Testing setup
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specify-cli
3
- Version: 0.11.3
3
+ Version: 0.11.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
@@ -46,6 +46,7 @@ Description-Content-Type: text/markdown
46
46
  - [🤖 Supported AI Coding Agent Integrations](#-supported-ai-coding-agent-integrations)
47
47
  - [🔧 Specify CLI Reference](#-specify-cli-reference)
48
48
  - [🧩 Making Spec Kit Your Own: Extensions & Presets](#-making-spec-kit-your-own-extensions--presets)
49
+ - [📦 Bundles: Role-Based Setups](#-bundles-role-based-setups)
49
50
  - [📚 Core Philosophy](#-core-philosophy)
50
51
  - [🌟 Development Phases](#-development-phases)
51
52
  - [🎯 Experimental Goals](#-experimental-goals)
@@ -248,6 +249,56 @@ For example, presets could restructure spec templates to require regulatory trac
248
249
 
249
250
  See the [Presets reference](https://github.github.io/spec-kit/reference/presets.html) for the full command guide, including resolution order and priority stacking.
250
251
 
252
+ ## 📦 Bundles: Role-Based Setups
253
+
254
+ Extensions and presets are individual building blocks. A **bundle** packages a
255
+ curated set of them — extensions, presets, steps, and workflows — into a single,
256
+ versioned, role-oriented setup so a whole team persona (product manager, business
257
+ analyst, security researcher, developer, …) can be provisioned with one command.
258
+
259
+ A bundle is described by a hand-written `bundle.yml` manifest. It pins each
260
+ component to a version and, optionally, targets a specific integration; a bundle
261
+ with no `integration` is **agnostic** and inherits whatever integration the
262
+ project already uses.
263
+
264
+ ```bash
265
+ # Discover bundles in the active catalog stack
266
+ specify bundle search [<query>]
267
+
268
+ # Inspect the exact component set a bundle will add (equals what install does)
269
+ specify bundle info <bundle-id>
270
+
271
+ # Install a bundle's full component set in one operation
272
+ specify bundle install <bundle-id>
273
+
274
+ # See what's installed, then update or remove non-destructively
275
+ specify bundle list
276
+ specify bundle update <bundle-id> # or --all
277
+ specify bundle remove <bundle-id> # removes only this bundle's components
278
+ ```
279
+
280
+ Bundles resolve from a **priority-ordered catalog stack** (project > user >
281
+ built-in). Each source carries an install policy: `install-allowed` sources can
282
+ be installed from, while `discovery-only` sources are visible in `search`/`info`
283
+ but refuse installation. Manage the stack with `specify bundle catalog list|add|remove`.
284
+
285
+ Authors validate and package bundles locally — there is no first-class publish;
286
+ distribution is hosting the built artifact and adding a catalog entry:
287
+
288
+ ```bash
289
+ specify bundle validate --path ./my-bundle # structural + reference checks
290
+ specify bundle build --path ./my-bundle # produce a versioned .zip artifact
291
+ ```
292
+
293
+ Four ready-to-read example manifests live under
294
+ [`examples/bundles/`](examples/bundles/) (product manager, business analyst,
295
+ security researcher, developer).
296
+
297
+ Key guarantees: `info` shows exactly what `install` adds (transparency);
298
+ installs are idempotent and confined to the project root; `remove` never touches
299
+ components another installed bundle still needs; and all consume/author commands
300
+ work **offline** against local or pinned sources.
301
+
251
302
  ### When to Use Which
252
303
 
253
304
  | Goal | Use |
@@ -257,6 +308,7 @@ See the [Presets reference](https://github.github.io/spec-kit/reference/presets.
257
308
  | Integrate an external tool or service | Extension |
258
309
  | Enforce organizational or regulatory standards | Preset |
259
310
  | Ship reusable domain-specific templates | Either — presets for template overrides, extensions for templates bundled with new commands |
311
+ | Provision a complete role-based setup in one command | Bundle |
260
312
 
261
313
  ## 📚 Core Philosophy
262
314
 
@@ -26,6 +26,7 @@
26
26
  - [🤖 Supported AI Coding Agent Integrations](#-supported-ai-coding-agent-integrations)
27
27
  - [🔧 Specify CLI Reference](#-specify-cli-reference)
28
28
  - [🧩 Making Spec Kit Your Own: Extensions & Presets](#-making-spec-kit-your-own-extensions--presets)
29
+ - [📦 Bundles: Role-Based Setups](#-bundles-role-based-setups)
29
30
  - [📚 Core Philosophy](#-core-philosophy)
30
31
  - [🌟 Development Phases](#-development-phases)
31
32
  - [🎯 Experimental Goals](#-experimental-goals)
@@ -228,6 +229,56 @@ For example, presets could restructure spec templates to require regulatory trac
228
229
 
229
230
  See the [Presets reference](https://github.github.io/spec-kit/reference/presets.html) for the full command guide, including resolution order and priority stacking.
230
231
 
232
+ ## 📦 Bundles: Role-Based Setups
233
+
234
+ Extensions and presets are individual building blocks. A **bundle** packages a
235
+ curated set of them — extensions, presets, steps, and workflows — into a single,
236
+ versioned, role-oriented setup so a whole team persona (product manager, business
237
+ analyst, security researcher, developer, …) can be provisioned with one command.
238
+
239
+ A bundle is described by a hand-written `bundle.yml` manifest. It pins each
240
+ component to a version and, optionally, targets a specific integration; a bundle
241
+ with no `integration` is **agnostic** and inherits whatever integration the
242
+ project already uses.
243
+
244
+ ```bash
245
+ # Discover bundles in the active catalog stack
246
+ specify bundle search [<query>]
247
+
248
+ # Inspect the exact component set a bundle will add (equals what install does)
249
+ specify bundle info <bundle-id>
250
+
251
+ # Install a bundle's full component set in one operation
252
+ specify bundle install <bundle-id>
253
+
254
+ # See what's installed, then update or remove non-destructively
255
+ specify bundle list
256
+ specify bundle update <bundle-id> # or --all
257
+ specify bundle remove <bundle-id> # removes only this bundle's components
258
+ ```
259
+
260
+ Bundles resolve from a **priority-ordered catalog stack** (project > user >
261
+ built-in). Each source carries an install policy: `install-allowed` sources can
262
+ be installed from, while `discovery-only` sources are visible in `search`/`info`
263
+ but refuse installation. Manage the stack with `specify bundle catalog list|add|remove`.
264
+
265
+ Authors validate and package bundles locally — there is no first-class publish;
266
+ distribution is hosting the built artifact and adding a catalog entry:
267
+
268
+ ```bash
269
+ specify bundle validate --path ./my-bundle # structural + reference checks
270
+ specify bundle build --path ./my-bundle # produce a versioned .zip artifact
271
+ ```
272
+
273
+ Four ready-to-read example manifests live under
274
+ [`examples/bundles/`](examples/bundles/) (product manager, business analyst,
275
+ security researcher, developer).
276
+
277
+ Key guarantees: `info` shows exactly what `install` adds (transparency);
278
+ installs are idempotent and confined to the project root; `remove` never touches
279
+ components another installed bundle still needs; and all consume/author commands
280
+ work **offline** against local or pinned sources.
281
+
231
282
  ### When to Use Which
232
283
 
233
284
  | Goal | Use |
@@ -237,6 +288,7 @@ See the [Presets reference](https://github.github.io/spec-kit/reference/presets.
237
288
  | Integrate an external tool or service | Extension |
238
289
  | Enforce organizational or regulatory standards | Preset |
239
290
  | Ship reusable domain-specific templates | Either — presets for template overrides, extensions for templates bundled with new commands |
291
+ | Provision a complete role-based setup in one command | Bundle |
240
292
 
241
293
  ## 📚 Core Philosophy
242
294
 
@@ -128,6 +128,7 @@ The following community-contributed extensions are available in [`catalog.commun
128
128
  | Superpowers Bridge | Bridges selected Superpowers disciplines into Spec Kit as evidence-first trust gates for agent workflows. | `process` | Read+Write | [superpowers-bridge](https://github.com/RbBtSn0w/spec-kit-extensions/tree/main/superpowers-bridge) |
129
129
  | Superpowers Implementation Bridge | Thin orchestrator between Spec Kit (design) and Superpowers (implementation). Cross-agent. | `process` | Read+Write | [speckit-superpowers-bridge](https://github.com/lihan3238/speckit-superpowers-bridge) |
130
130
  | Superspec | Bridges spec-kit with obra/superpowers (brainstorming, TDD, subagent, code-review) into a unified, resumable workflow with graceful degradation and session progress tracking | `process` | Read+Write | [superspec](https://github.com/WangX0111/superspec) |
131
+ | Tasks to GitHub Project | Publish and synchronize Spec Kit tasks as cards on a GitHub Project (v2) kanban board, with priority and status sync between spec.md/tasks.md and the board. | `integration` | Read+Write | [spec-kit-tasks-to-project](https://github.com/mancioshell/spec-kit-tasks-to-project) |
131
132
  | Team Assign | Assign tasks.md items to human engineers, split into subtasks, and generate a per-engineer workboard | `process` | Read+Write | [spec-kit-team-assign](https://github.com/tarunkumarbhati/spec-kit-team-assign) |
132
133
  | Time Machine | Retroactively apply the full SDD workflow to existing codebases — analyse, spec, and ship feature-by-feature | `process` | Read+Write | [spec-kit-time-machine](https://github.com/teeyo/spec-kit-time-machine) |
133
134
  | TinySpec | Lightweight single-file workflow for small tasks — skip the heavy multi-step SDD process | `process` | Read+Write | [spec-kit-tinyspec](https://github.com/Quratulain-bilal/spec-kit-tinyspec) |
@@ -0,0 +1,156 @@
1
+ # Bundles
2
+
3
+ Bundles compose existing Spec Kit components — extensions, presets, workflows, and steps — into a single, versioned, installable unit. Where extensions and presets are primitives, a bundle is a curated stack that declares everything a team or role needs and installs it in one step through each component's own machinery. Bundles add no new runtime behavior of their own: they are a distribution and composition layer over the primitives you already use.
4
+
5
+ A bundle is described by a `bundle.yml` manifest and is discovered through the same catalog stack as other components. Installing a bundle resolves its declared components against pinned versions, checks for the single cross-bundle conflict point (the active integration), and applies each component idempotently with full provenance tracking so it can be cleanly removed or refreshed later.
6
+
7
+ ## Search Available Bundles
8
+
9
+ ```bash
10
+ specify bundle search [query]
11
+ ```
12
+
13
+ | Option | Description |
14
+ | ----------- | ---------------------------- |
15
+ | `--offline` | Do not access the network |
16
+ | `--json` | Emit machine-readable JSON |
17
+
18
+ Searches all active catalogs for bundles matching the query. Without a query, lists every available bundle with its version, role, source, and a trust indicator (`verified` for org-curated catalog entries, `community` otherwise) so you can judge trust before installing.
19
+
20
+ ## Bundle Info
21
+
22
+ ```bash
23
+ specify bundle info <bundle_id>
24
+ ```
25
+
26
+ | Option | Description |
27
+ | ------------ | --------------------------------- |
28
+ | `--offline` | Do not access the network |
29
+ | `--json` | Emit machine-readable JSON |
30
+
31
+ Shows full metadata for a bundle along with the **fully expanded component set** it installs — every extension, preset, step, and workflow with its pinned version, plus preset priority and strategy. The output also includes a trust indicator (`verified` vs `community`) so you can judge trust before installing. This preview is the same plan `install` applies, so you can see exactly what will be added before committing. Foreseeable overlaps with components already provided by installed bundles are surfaced here as well.
32
+
33
+ ## Install a Bundle
34
+
35
+ ```bash
36
+ specify bundle install <bundle_id | path>
37
+ ```
38
+
39
+ | Option | Description |
40
+ | ---------------- | ------------------------------------------------------------------ |
41
+ | `--integration` | Override the integration used when initializing/installing |
42
+ | `--offline` | Do not access the network |
43
+
44
+ Installs a bundle's full component set through each primitive's machinery. The argument may be a catalog bundle id, or a local path to a built `.zip` artifact, a bundle directory, or a `bundle.yml` file; local sources install directly without consulting the catalog stack.
45
+
46
+ If the current directory is not yet a Spec Kit project, `install` initializes one first so a fresh checkout reaches a working state in a single command. `--integration` selects the integration when initializing a new project, and confirms the target when a bundle pins a specific integration but the project's active integration can't be determined (missing or unreadable `.specify/integration.json`). It does **not** override an already-initialized project's active integration: if a bundle targets a different integration than the project's, install aborts with no changes. Integration-agnostic bundles inherit the project's active integration. Installation is idempotent — components already present are skipped. On failure, no provenance record is written (a failed install records nothing), and the components installed during that run are removed on a best-effort basis — removal errors are swallowed, so partial on-disk state may remain.
47
+
48
+ ## Update Bundles
49
+
50
+ ```bash
51
+ specify bundle update [<bundle_id>]
52
+ ```
53
+
54
+ | Option | Description |
55
+ | ------------ | ------------------------------------ |
56
+ | `--all` | Update every installed bundle |
57
+ | `--offline` | Do not access the network |
58
+
59
+ Re-resolves a bundle and **refreshes** its components through each primitive's update path, bringing already-installed components up to the bundle's newly pinned versions while preserving primitive-level overrides (such as preset priority). Provide a bundle id, or use `--all` to update everything installed.
60
+
61
+ > **Pin enforcement is install-time only.** Idempotency checks are id-based, not version-aware: a component that is already present is skipped during `install` without comparing its on-disk version to the manifest pin. Version pins are therefore guaranteed to be applied only when the bundler actually installs a component for the first time or refreshes it. Run `specify bundle update` to re-apply every owned component at its pinned version.
62
+
63
+ ## Remove a Bundle
64
+
65
+ ```bash
66
+ specify bundle remove <bundle_id>
67
+ ```
68
+
69
+ Uninstalls only the components this bundle contributed, leaving any component that another installed bundle still needs in place (no collateral removals).
70
+
71
+ ## List Installed Bundles
72
+
73
+ ```bash
74
+ specify bundle list
75
+ ```
76
+
77
+ | Option | Description |
78
+ | -------- | ---------------------------- |
79
+ | `--json` | Emit machine-readable JSON |
80
+
81
+ Lists the bundles installed in the project with their versions, component counts, and install timestamps.
82
+
83
+ ## Initialize a Project with a Bundle
84
+
85
+ ```bash
86
+ specify bundle init [<bundle_id>]
87
+ ```
88
+
89
+ | Option | Description |
90
+ | ---------------- | ---------------------------------------- |
91
+ | `--integration` | Integration override |
92
+ | `--offline` | Do not access the network |
93
+
94
+ Ensures the current directory is a Spec Kit project (initializing it idempotently if needed), then optionally installs the given bundle. Useful as an explicit one-step bootstrap for a new checkout.
95
+
96
+ ## Validate a Bundle
97
+
98
+ ```bash
99
+ specify bundle validate
100
+ ```
101
+
102
+ | Option | Description |
103
+ | ------------ | ------------------------------------------------------------------- |
104
+ | `--path` | Bundle directory or `bundle.yml` (default: current directory) |
105
+ | `--offline` | Verify references against bundled/installed components only |
106
+
107
+ Reports whether a `bundle.yml` is well-formed and whether every declared component reference resolves. References are checked against bundled components, the project's installed components, and — when online — the active catalogs. Validation fails only when a reference is definitively absent everywhere it could be checked: that is, when an active catalog is reachable and confirms the component is missing. References that cannot be verified — because validation is offline, or because a catalog is unreachable — are downgraded to warnings so authoring can continue, rather than failing the run.
108
+
109
+ ## Build a Bundle Artifact
110
+
111
+ ```bash
112
+ specify bundle build
113
+ ```
114
+
115
+ | Option | Description |
116
+ | ----------- | ------------------------------------------------------- |
117
+ | `--path` | Bundle directory (default: current directory) |
118
+ | `--output` | Output directory for the artifact |
119
+
120
+ Produces a single versioned, distributable `.zip` artifact from a bundle directory. The artifact embeds the manifest and can be installed directly with `specify bundle install <artifact.zip>`.
121
+
122
+ ## Manage Catalog Sources
123
+
124
+ Bundles are discovered through a priority-ordered stack of catalog sources (project, user, and built-in scopes).
125
+
126
+ ### List the Catalog Stack
127
+
128
+ ```bash
129
+ specify bundle catalog list
130
+ ```
131
+
132
+ Prints the active, priority-ordered catalog stack with each source's scope and install policy.
133
+
134
+ ### Add a Catalog Source
135
+
136
+ ```bash
137
+ specify bundle catalog add <url>
138
+ ```
139
+
140
+ | Option | Description |
141
+ | ------------- | ------------------------------------------------------- |
142
+ | `--policy` | `install-allowed` or `discovery-only` |
143
+ | `--priority` | Source priority (lower = higher precedence; default 10) |
144
+ | `--id` | Explicit source id |
145
+
146
+ Registers a project-scoped catalog source and persists it.
147
+
148
+ ### Remove a Catalog Source
149
+
150
+ ```bash
151
+ specify bundle catalog remove <id_or_url>
152
+ ```
153
+
154
+ Removes a project-scoped catalog source. Built-in default sources cannot be deleted.
155
+
156
+ > **Note:** `search` and `info` work anywhere — with no project they fall back to the built-in/user catalog stack. The remaining state-changing commands (`list`, `update`, `remove`, `catalog`) require a project already initialized with `specify init`. `install` and `init` will initialize a project on demand when run in an uninitialized directory.
@@ -31,3 +31,9 @@ Presets customize how Spec Kit works — overriding command files, template file
31
31
  Workflows automate multi-step Spec-Driven Development processes into repeatable sequences. They chain commands, prompts, shell steps, and human checkpoints together, with support for conditional logic, loops, fan-out/fan-in, and the ability to pause and resume from the exact point of interruption.
32
32
 
33
33
  [Workflows reference →](workflows.md)
34
+
35
+ ## Bundles
36
+
37
+ Bundles compose existing extensions, presets, workflows, and steps into a single, versioned, installable unit. Rather than adding new behavior, a bundle curates a stack of primitives — everything a team or role needs — and installs it in one step through each component's own machinery, with version pinning, conflict checks, and provenance tracking for clean updates and removal.
38
+
39
+ [Bundles reference →](bundles.md)
@@ -0,0 +1,22 @@
1
+ # Business Analyst bundle
2
+
3
+ A role bundle for business analysts working in a Spec-Driven Development flow:
4
+ requirements elicitation, traceability, and acceptance criteria.
5
+
6
+ ## What it installs
7
+
8
+ - **Extension** `agent-context` — keeps the agent context file in sync.
9
+ - **Preset** `requirements-elicitation` (priority 10, append) — elicitation and
10
+ analysis command set.
11
+ - **Steps** `capture-requirements`, `trace-acceptance-criteria`.
12
+ - **Workflow** `requirements-to-spec` — turns captured requirements into a spec.
13
+
14
+ This bundle is **integration-agnostic**: it inherits the project's active
15
+ integration.
16
+
17
+ ## Usage
18
+
19
+ ```bash
20
+ specify bundle validate --path examples/bundles/business-analyst
21
+ specify bundle build --path examples/bundles/business-analyst --output dist/
22
+ ```
@@ -0,0 +1,33 @@
1
+ schema_version: "1.0"
2
+
3
+ bundle:
4
+ id: "business-analyst"
5
+ name: "Business Analyst"
6
+ version: "1.0.0"
7
+ role: "business-analyst"
8
+ description: "Spec-Driven Development setup for business analysts: requirements elicitation, traceability, and acceptance criteria."
9
+ author: "spec-kit-examples"
10
+ license: "MIT"
11
+
12
+ requires:
13
+ speckit_version: ">=0.9.0"
14
+ tools: []
15
+ mcp: []
16
+
17
+ provides:
18
+ extensions:
19
+ - id: "agent-context"
20
+ version: "1.0.0"
21
+ presets:
22
+ - id: "requirements-elicitation"
23
+ version: "1.0.0"
24
+ priority: 10
25
+ strategy: "append"
26
+ steps:
27
+ - id: "capture-requirements"
28
+ - id: "trace-acceptance-criteria"
29
+ workflows:
30
+ - id: "requirements-to-spec"
31
+ version: "1.0.0"
32
+
33
+ tags: ["requirements", "traceability", "analysis"]
@@ -0,0 +1,22 @@
1
+ # Developer bundle
2
+
3
+ A role bundle for developers practicing Spec-Driven Development: implementation
4
+ planning, task breakdown, and code review.
5
+
6
+ ## What it installs
7
+
8
+ - **Extension** `agent-context` — keeps the agent context file in sync.
9
+ - **Preset** `implementation-planning` (priority 10, append) — implementation
10
+ planning command set.
11
+ - **Steps** `plan-implementation`, `break-down-tasks`.
12
+ - **Workflow** `spec-to-implementation` — drives a spec through to code.
13
+
14
+ This bundle is **integration-agnostic**: it inherits the project's active
15
+ integration.
16
+
17
+ ## Usage
18
+
19
+ ```bash
20
+ specify bundle validate --path examples/bundles/developer
21
+ specify bundle build --path examples/bundles/developer --output dist/
22
+ ```
@@ -0,0 +1,33 @@
1
+ schema_version: "1.0"
2
+
3
+ bundle:
4
+ id: "developer"
5
+ name: "Developer"
6
+ version: "1.0.0"
7
+ role: "developer"
8
+ description: "Spec-Driven Development setup for developers: implementation planning, task breakdown, and code review."
9
+ author: "spec-kit-examples"
10
+ license: "MIT"
11
+
12
+ requires:
13
+ speckit_version: ">=0.9.0"
14
+ tools: []
15
+ mcp: []
16
+
17
+ provides:
18
+ extensions:
19
+ - id: "agent-context"
20
+ version: "1.0.0"
21
+ presets:
22
+ - id: "implementation-planning"
23
+ version: "1.0.0"
24
+ priority: 10
25
+ strategy: "append"
26
+ steps:
27
+ - id: "plan-implementation"
28
+ - id: "break-down-tasks"
29
+ workflows:
30
+ - id: "spec-to-implementation"
31
+ version: "1.0.0"
32
+
33
+ tags: ["development", "implementation", "code-review"]
@@ -0,0 +1,22 @@
1
+ # Product Manager bundle
2
+
3
+ A role bundle that prepares a Spec Kit project for product managers driving
4
+ Spec-Driven Development: discovery, specification, and roadmap planning.
5
+
6
+ ## What it installs
7
+
8
+ - **Extension** `agent-context` — keeps the agent context file in sync.
9
+ - **Preset** `product-discovery` (priority 10, append) — discovery-oriented
10
+ command set.
11
+ - **Steps** `draft-spec`, `review-spec` — specification authoring steps.
12
+ - **Workflow** `spec-to-roadmap` — turns an approved spec into a roadmap.
13
+
14
+ This bundle is **integration-agnostic**: it inherits whatever integration the
15
+ project already uses (e.g. `copilot`, `claude`).
16
+
17
+ ## Usage
18
+
19
+ ```bash
20
+ specify bundle validate --path examples/bundles/product-manager
21
+ specify bundle build --path examples/bundles/product-manager --output dist/
22
+ ```
@@ -0,0 +1,35 @@
1
+ schema_version: "1.0"
2
+
3
+ bundle:
4
+ id: "product-manager"
5
+ name: "Product Manager"
6
+ version: "1.0.0"
7
+ role: "product-manager"
8
+ description: "Spec-Driven Development setup for product managers: discovery, specification, and roadmap workflows."
9
+ author: "spec-kit-examples"
10
+ license: "MIT"
11
+
12
+ requires:
13
+ speckit_version: ">=0.9.0"
14
+ tools: []
15
+ mcp: []
16
+
17
+ # Agnostic bundle: inherits the project's active integration.
18
+
19
+ provides:
20
+ extensions:
21
+ - id: "agent-context"
22
+ version: "1.0.0"
23
+ presets:
24
+ - id: "product-discovery"
25
+ version: "1.0.0"
26
+ priority: 10
27
+ strategy: "append"
28
+ steps:
29
+ - id: "draft-spec"
30
+ - id: "review-spec"
31
+ workflows:
32
+ - id: "spec-to-roadmap"
33
+ version: "1.0.0"
34
+
35
+ tags: ["product", "discovery", "roadmap"]