boost-skill-cli 1.0.67__tar.gz → 1.0.68__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 (229) hide show
  1. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/PKG-INFO +1 -1
  2. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/_version.py +2 -2
  3. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/commands/configuration.py +14 -7
  4. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_skill_cli.egg-info/PKG-INFO +1 -1
  5. boost_skill_cli-1.0.68/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +25 -0
  6. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap.html +22 -12
  7. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/functional/test_cli_configuration.py +37 -3
  8. boost_skill_cli-1.0.67/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -16
  9. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/.gitattributes +0 -0
  10. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/.gitignore +0 -0
  11. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/CLAUDE.md +0 -0
  12. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/CONTRIBUTING.md +0 -0
  13. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/LICENSE +0 -0
  14. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/MANIFEST.in +0 -0
  15. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/Makefile +0 -0
  16. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/README.md +0 -0
  17. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/SECURITY.md +0 -0
  18. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost +0 -0
  19. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/__init__.py +0 -0
  20. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/__main__.py +0 -0
  21. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/cli.py +0 -0
  22. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/cliparse.py +0 -0
  23. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/commands/__init__.py +0 -0
  24. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/commands/bmad.py +0 -0
  25. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/commands/discovery.py +0 -0
  26. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/commands/hooks.py +0 -0
  27. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/commands/info.py +0 -0
  28. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/commands/intelligence.py +0 -0
  29. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/commands/pkg.py +0 -0
  30. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/commands/quality.py +0 -0
  31. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/commands/taps.py +0 -0
  32. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/commands/team.py +0 -0
  33. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/__init__.py +0 -0
  34. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/agents.py +0 -0
  35. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/ai.py +0 -0
  36. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/catalog.py +0 -0
  37. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/claude_settings.py +0 -0
  38. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/config.py +0 -0
  39. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/dense.py +0 -0
  40. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/embed.py +0 -0
  41. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/frontmatter.py +0 -0
  42. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/gitutil.py +0 -0
  43. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/journal.py +0 -0
  44. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/lockfile.py +0 -0
  45. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/logs.py +0 -0
  46. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/mcp.py +0 -0
  47. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/output.py +0 -0
  48. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/paths.py +0 -0
  49. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/policy.py +0 -0
  50. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/rag.py +0 -0
  51. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/registry.py +0 -0
  52. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/store.py +0 -0
  53. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/core/util.py +0 -0
  54. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/data/registries.json +0 -0
  55. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/errors.py +0 -0
  56. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_cli/spin.py +0 -0
  57. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
  58. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  59. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  60. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_skill_cli.egg-info/requires.txt +0 -0
  61. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/boost_skill_cli.egg-info/top_level.txt +0 -0
  62. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/.claude/settings.local.json +0 -0
  63. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/DEBUGGING.md +0 -0
  64. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/demo.gif +0 -0
  65. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/demo.tape +0 -0
  66. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/design-roadmap.html +0 -0
  67. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/index.html +0 -0
  68. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/mcp-hub.html +0 -0
  69. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/rag-architecture.md +0 -0
  70. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D01.md +0 -0
  71. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D02.md +0 -0
  72. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D03.md +0 -0
  73. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D04.md +0 -0
  74. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D05.md +0 -0
  75. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D06.md +0 -0
  76. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D07.md +0 -0
  77. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D08.md +0 -0
  78. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D09.md +0 -0
  79. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D10.md +0 -0
  80. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D11.md +0 -0
  81. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D12.md +0 -0
  82. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D13.md +0 -0
  83. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D14.md +0 -0
  84. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D15.md +0 -0
  85. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D16.md +0 -0
  86. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D17.md +0 -0
  87. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D18.md +0 -0
  88. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D19.md +0 -0
  89. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D20.md +0 -0
  90. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D21.md +0 -0
  91. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D22.md +0 -0
  92. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D23.md +0 -0
  93. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D24.md +0 -0
  94. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/BOOST-D25.md +0 -0
  95. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  96. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  97. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  98. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  99. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  100. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  101. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  102. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  103. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  104. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  105. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  106. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  107. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  108. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  109. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  110. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  111. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  112. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  113. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  114. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  115. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  116. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  117. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  118. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  119. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/guard-output-table-against-ragged-rows.md +0 -0
  120. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  121. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  122. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  123. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  124. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  125. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  126. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  127. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  128. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  129. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  130. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  131. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  132. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  133. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  134. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  135. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  136. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  137. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  138. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  139. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  140. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  141. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  142. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  143. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  144. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  145. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  146. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  147. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  148. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  149. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  150. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  151. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  152. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  153. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  154. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  155. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  156. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  157. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  158. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  159. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  160. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  161. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  162. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  163. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  164. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  165. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  166. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  167. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  168. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  169. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  170. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  171. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  172. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  173. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  174. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  175. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  176. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  177. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  178. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/index.html +0 -0
  179. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/pyproject.toml +0 -0
  180. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/scripts/build_registries.py +0 -0
  181. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/scripts/build_roadmap.py +0 -0
  182. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/scripts/mutation_gate.py +0 -0
  183. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/setup.cfg +0 -0
  184. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/style/README.md +0 -0
  185. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/style/boost.css +0 -0
  186. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/style/boost.js +0 -0
  187. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/style/demo.html +0 -0
  188. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/conftest.py +0 -0
  189. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/functional/test_cli_bmad.py +0 -0
  190. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/functional/test_cli_discovery.py +0 -0
  191. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/functional/test_cli_hooks.py +0 -0
  192. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/functional/test_cli_info.py +0 -0
  193. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/functional/test_cli_intelligence.py +0 -0
  194. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/functional/test_cli_pkg.py +0 -0
  195. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/functional/test_cli_quality.py +0 -0
  196. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/functional/test_cli_taps.py +0 -0
  197. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/functional/test_cli_team.py +0 -0
  198. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/functional/test_everyday_loop.py +0 -0
  199. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/make_fixture.py +0 -0
  200. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/smoke.sh +0 -0
  201. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_agents.py +0 -0
  202. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_ai.py +0 -0
  203. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_catalog.py +0 -0
  204. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_claude_settings.py +0 -0
  205. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_cliparse.py +0 -0
  206. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_config.py +0 -0
  207. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_dense.py +0 -0
  208. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_dense_fallback.py +0 -0
  209. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_embed.py +0 -0
  210. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_errors_and_cli_table.py +0 -0
  211. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_frontmatter.py +0 -0
  212. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_gitutil.py +0 -0
  213. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_journal.py +0 -0
  214. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_lockfile.py +0 -0
  215. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_logs.py +0 -0
  216. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_mcp.py +0 -0
  217. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_mutation_hardening.py +0 -0
  218. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_output.py +0 -0
  219. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_paths.py +0 -0
  220. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_policy.py +0 -0
  221. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_rag.py +0 -0
  222. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_registries_fresh.py +0 -0
  223. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_registry.py +0 -0
  224. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_roadmap_fresh.py +0 -0
  225. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_spin.py +0 -0
  226. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_store.py +0 -0
  227. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_token_parity.py +0 -0
  228. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_util.py +0 -0
  229. {boost_skill_cli-1.0.67 → boost_skill_cli-1.0.68}/tests/unit/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.67
3
+ Version: 1.0.68
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.0.67'
22
- __version_tuple__ = version_tuple = (1, 0, 67)
21
+ __version__ = version = '1.0.68'
22
+ __version_tuple__ = version_tuple = (1, 0, 68)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -1147,14 +1147,21 @@ def cmd_self_update(argv) -> int:
1147
1147
  raise BoostError("boost is not running from a git checkout",
1148
1148
  hint="git clone the boost repo and symlink bin")
1149
1149
  old = __version__
1150
+ before = gitutil.head_commit(root)
1150
1151
  gitutil.run(["-C", str(root), "pull", "--ff-only"], timeout=120)
1151
- new = old
1152
- m = re.search(r"__version__\s*=\s*[\"']([^\"']+)[\"']",
1153
- (root / "boost_cli" / "__init__.py").read_text())
1154
- if m:
1155
- new = m.group(1)
1156
- journal.log("self-update", new, previous=old)
1157
- if new != old:
1152
+ after = gitutil.head_commit(root)
1153
+ # The version is setuptools-scm derived — there is no `__version__ = "…"`
1154
+ # literal to grep, and the build-time _version.py / installed metadata are
1155
+ # stale until a reinstall. Ask git for the freshly-pulled version directly
1156
+ # (mirrors boost_cli._detect_version()'s git-checkout fallback), and treat a
1157
+ # moved HEAD as the unambiguous "an update landed" signal — independent of
1158
+ # how the two version strings happen to be formatted.
1159
+ new = gitutil.run(
1160
+ ["-C", str(root), "describe", "--tags", "--always", "--dirty"],
1161
+ check=False, timeout=10).stdout.strip().lstrip("v") or old
1162
+ updated = bool(after) and after != before
1163
+ journal.log("self-update", new if updated else old, previous=old)
1164
+ if updated:
1158
1165
  out.ok("boost v%s → v%s" % (old, new))
1159
1166
  else:
1160
1167
  out.ok("already up to date (v%s)" % old)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.67
3
+ Version: 1.0.68
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -0,0 +1,25 @@
1
+ ---
2
+ id: fix-self-update-version-detection-dead-branch
3
+ board: code
4
+ section: shipped
5
+ status: shipped
6
+ category: Correctness
7
+ complexity: S
8
+ impact: High
9
+ wow: 3
10
+ note: broken headline command, now works
11
+ order: 7
12
+ owner: loop/self-update-fix
13
+ pr:
14
+ title: Fix <code>self-update</code> version detection (dead branch)
15
+ ---
16
+ <code>boost self-update</code> greped <code>__init__.py</code> for a
17
+ <code>__version__ = "…"</code> literal that setuptools-scm never
18
+ writes, so the regex never matched and it always reported
19
+ <b>"already up to date"</b> — even after a pull brought a newer tag.
20
+ The success path was <em>unreachable</em>. It now derives the pulled
21
+ version straight from git (<code>describe --tags</code>, mirroring
22
+ <code>_detect_version()</code>) and treats a moved <code>HEAD</code>
23
+ as the "an update landed" signal, so the version-bump path finally
24
+ fires. Regression tests cover both the up-to-date and update-landed
25
+ branches.
@@ -115,7 +115,7 @@
115
115
  <section class="block reveal">
116
116
  <div class="stats">
117
117
  <!-- ROADMAP:stats -->
118
- <div class="stat"><b>6</b><span>Shipped</span></div>
118
+ <div class="stat"><b>7</b><span>Shipped</span></div>
119
119
  <div class="stat"><b>3</b><span>Next up</span></div>
120
120
  <div class="stat"><b>4</b><span>Planned</span></div>
121
121
  <div class="stat"><b>84</b><span>Loop finds</span></div>
@@ -227,6 +227,27 @@
227
227
  <span class="m">Wow <b class="wow">★★★★</b></span>
228
228
  </div>
229
229
  </article>
230
+
231
+ <article class="cap rcard">
232
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Correctness</span></div>
233
+ <h3>Fix <code>self-update</code> version detection (dead branch)</h3>
234
+ <p><code>boost self-update</code> greped <code>__init__.py</code> for a
235
+ <code>__version__ = "…"</code> literal that setuptools-scm never
236
+ writes, so the regex never matched and it always reported
237
+ <b>"already up to date"</b> — even after a pull brought a newer tag.
238
+ The success path was <em>unreachable</em>. It now derives the pulled
239
+ version straight from git (<code>describe --tags</code>, mirroring
240
+ <code>_detect_version()</code>) and treats a moved <code>HEAD</code>
241
+ as the "an update landed" signal, so the version-bump path finally
242
+ fires. Regression tests cover both the up-to-date and update-landed
243
+ branches.</p>
244
+ <div class="meta">
245
+ <span class="m">Complexity <b>S</b></span>
246
+ <span class="m hi">Impact <b>High</b></span>
247
+ <span class="m">Wow <b class="wow">★★★</b></span>
248
+ <span class="m">broken headline command, now works</span>
249
+ </div>
250
+ </article>
230
251
  <!-- /ROADMAP:cards -->
231
252
 
232
253
  </div>
@@ -377,17 +398,6 @@
377
398
  </div>
378
399
  </article>
379
400
 
380
- <article class="cap rcard">
381
- <div class="head"><span class="pill next">Next</span><span class="cat">Correctness</span></div>
382
- <h3>Fix <code>self-update</code> version detection (dead branch)</h3>
383
- <p><code>cmd_self_update</code> greps <code>__init__.py</code> for a <code>__version__ = "…"</code> literal (<code>commands/configuration.py:1090</code>), but the constant is <code>_detect_version()</code> (setuptools-scm — no literal). The regex never matches, so it reports <b>"already up to date"</b> even after a pull brings a newer tag. The success path is unreachable.</p>
384
- <div class="meta">
385
- <span class="m">Complexity <b>S</b></span>
386
- <span class="m hi">Impact <b>High</b></span>
387
- <span class="m">Wow <b class="wow">★★★</b></span>
388
- </div>
389
- </article>
390
-
391
401
  <article class="cap rcard">
392
402
  <div class="head"><span class="pill next">Next</span><span class="cat">Correctness</span></div>
393
403
  <h3>Consolidate skill-staleness / drift logic into core</h3>
@@ -809,20 +809,54 @@ class TestSelfUpdate:
809
809
  assert "boost is not running from a git checkout" in r.err
810
810
  assert "git clone the boost repo" in r.err
811
811
 
812
- def test_git_path_pulls_and_reports(self, boost, sandbox, monkeypatch):
812
+ def _fake_git(self, monkeypatch, *, before, after, described):
813
+ """Stub gitutil so self-update sees a controlled HEAD move + describe.
814
+
815
+ ``rev-parse HEAD`` returns ``before`` until the pull runs, ``after``
816
+ afterwards; ``describe`` returns ``described``; ``pull`` is a no-op.
817
+ """
813
818
  calls = []
819
+ pulled = {"done": False}
814
820
  monkeypatch.setattr("boost_cli.core.gitutil.is_repo", lambda p: True)
815
821
 
816
822
  def fake_run(args, **kw):
817
823
  calls.append(list(args))
824
+ if "pull" in args:
825
+ pulled["done"] = True
826
+ return _proc(args, 0)
827
+ if "rev-parse" in args:
828
+ return _proc(args, 0, out=(after if pulled["done"] else before))
829
+ if "describe" in args:
830
+ return _proc(args, 0, out=described)
818
831
  return _proc(args, 0)
819
832
 
820
833
  monkeypatch.setattr("boost_cli.core.gitutil.run", fake_run)
834
+ return calls
835
+
836
+ def test_reports_already_up_to_date_when_head_unchanged(
837
+ self, boost, sandbox, monkeypatch):
838
+ # HEAD is identical before and after the pull -> nothing landed
839
+ calls = self._fake_git(monkeypatch, before="sha1\n", after="sha1\n",
840
+ described="v2.3.3\n")
821
841
  r = boost("self-update")
822
842
  root = paths.repo_root()
823
- assert calls == [["-C", str(root), "pull", "--ff-only"]]
824
843
  from boost_cli import __version__
844
+ assert ["-C", str(root), "pull", "--ff-only"] in calls
825
845
  assert ("already up to date (v%s)" % __version__) in r.out
846
+ assert "→" not in r.out
847
+ ev = journal.events(action="self-update")[0]
848
+ assert ev["subject"] == __version__ and ev["previous"] == __version__
849
+
850
+ def test_reports_new_version_when_pull_advances_head(
851
+ self, boost, sandbox, monkeypatch):
852
+ # the pull fast-forwards HEAD -> report the git-described new version.
853
+ # This path was unreachable before the fix (the old code grepped
854
+ # __init__.py for a __version__ literal setuptools-scm never writes).
855
+ self._fake_git(monkeypatch, before="oldsha\n", after="newsha\n",
856
+ described="v9.9.9\n")
857
+ r = boost("self-update")
858
+ from boost_cli import __version__
859
+ assert ("boost v%s → v9.9.9" % __version__) in r.out
826
860
  ev = journal.events(action="self-update")[0]
827
- assert ev["subject"] == __version__
861
+ assert ev["subject"] == "9.9.9" # git-derived, not the stale const
828
862
  assert ev["previous"] == __version__
@@ -1,16 +0,0 @@
1
- ---
2
- id: fix-self-update-version-detection-dead-branch
3
- board: code
4
- section: internals
5
- status: next
6
- category: Correctness
7
- complexity: S
8
- impact: High
9
- wow: 3
10
- note:
11
- order: 2
12
- owner:
13
- pr:
14
- title: Fix <code>self-update</code> version detection (dead branch)
15
- ---
16
- <code>cmd_self_update</code> greps <code>__init__.py</code> for a <code>__version__ = "…"</code> literal (<code>commands/configuration.py:1090</code>), but the constant is <code>_detect_version()</code> (setuptools-scm — no literal). The regex never matches, so it reports <b>"already up to date"</b> even after a pull brings a newer tag. The success path is unreachable.
File without changes