boost-skill-cli 1.0.412__tar.gz → 1.0.413__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 (633) hide show
  1. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/PKG-INFO +1 -1
  2. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/_version.py +2 -2
  3. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/cli.py +4 -5
  4. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/commands/_common.py +3 -5
  5. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/commands/discovery.py +7 -7
  6. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/commands/info.py +5 -6
  7. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/commands/intelligence.py +33 -34
  8. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/commands/pkg.py +28 -29
  9. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/commands/quality.py +18 -18
  10. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/commands/run.py +1 -2
  11. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/commands/safety.py +2 -2
  12. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/adapters.py +25 -25
  13. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/agents.py +4 -5
  14. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/ai.py +9 -10
  15. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/capabilities.py +9 -10
  16. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/catalog.py +20 -21
  17. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/chat.py +12 -11
  18. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/claude_settings.py +11 -12
  19. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/complete.py +10 -10
  20. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/dense.py +20 -21
  21. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/embed.py +11 -11
  22. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/faithfulness.py +5 -6
  23. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/frontmatter.py +2 -3
  24. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/gitutil.py +2 -3
  25. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/imperative.py +3 -4
  26. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/injectscan.py +4 -4
  27. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/installscan.py +5 -5
  28. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/integrity.py +3 -4
  29. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/journal.py +2 -3
  30. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/localembed.py +4 -5
  31. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/lockfile.py +8 -9
  32. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/logs.py +5 -6
  33. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/mcp.py +9 -9
  34. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/mcpdecl.py +12 -13
  35. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/mcphost.py +8 -10
  36. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/nethttp.py +1 -2
  37. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/policy.py +4 -5
  38. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/projectlock.py +1 -2
  39. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/provenance.py +6 -7
  40. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/rag.py +54 -54
  41. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/registry.py +2 -3
  42. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/resolve.py +13 -14
  43. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/rules.py +3 -4
  44. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/scopes.py +3 -4
  45. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/secretscan.py +4 -4
  46. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/selfupdate.py +5 -6
  47. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/serve.py +3 -4
  48. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/stackprobe.py +1 -2
  49. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/staleness.py +4 -6
  50. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/store.py +55 -56
  51. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/trustaudit.py +17 -17
  52. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/typosquat.py +2 -3
  53. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/updatediff.py +9 -9
  54. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/util.py +2 -3
  55. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/workflows.py +4 -5
  56. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/spin.py +1 -2
  57. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_skill_cli.egg-info/PKG-INFO +1 -1
  58. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/pep585-604-modernization-sweep.md +4 -2
  59. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap.html +38 -37
  60. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/evals/faithfulness.py +11 -12
  61. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/evals/make_corpus.py +7 -8
  62. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/evals/make_golden.py +8 -9
  63. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/evals/metrics.py +6 -6
  64. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/evals/run_evals.py +16 -16
  65. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/pyproject.toml +0 -16
  66. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_chat.py +1 -3
  67. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_eval_metrics.py +4 -4
  68. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/.gitattributes +0 -0
  69. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/.gitignore +0 -0
  70. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/.gitleaks.toml +0 -0
  71. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/.htmlvalidate.json +0 -0
  72. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/.lighthouserc.json +0 -0
  73. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/.lycheeignore +0 -0
  74. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/.markdownlint-cli2.jsonc +0 -0
  75. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/.pre-commit-config.yaml +0 -0
  76. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/.stylelintrc.json +0 -0
  77. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/.vale/styles/boost/Terminology.yml +0 -0
  78. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  79. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/.vale.ini +0 -0
  80. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/CLAUDE.md +0 -0
  81. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/CODE_OF_CONDUCT.md +0 -0
  82. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/CONTRIBUTING.md +0 -0
  83. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/LICENSE +0 -0
  84. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/MANIFEST.in +0 -0
  85. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/Makefile +0 -0
  86. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/README.md +0 -0
  87. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/SECURITY.md +0 -0
  88. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost +0 -0
  89. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/__init__.py +0 -0
  90. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/__main__.py +0 -0
  91. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/cliparse.py +0 -0
  92. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/commands/__init__.py +0 -0
  93. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/commands/bmad.py +0 -0
  94. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/commands/configuration.py +0 -0
  95. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/commands/hooks.py +0 -0
  96. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/commands/taps.py +0 -0
  97. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/commands/team.py +0 -0
  98. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/__init__.py +0 -0
  99. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/config.py +0 -0
  100. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/ed25519.py +0 -0
  101. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/minisign.py +0 -0
  102. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/output.py +0 -0
  103. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/core/paths.py +0 -0
  104. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/data/registries.json +0 -0
  105. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_cli/errors.py +0 -0
  106. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
  107. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  108. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  109. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_skill_cli.egg-info/requires.txt +0 -0
  110. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/boost_skill_cli.egg-info/top_level.txt +0 -0
  111. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/codecov.yml +0 -0
  112. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/.claude/settings.local.json +0 -0
  113. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/DEBUGGING.md +0 -0
  114. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/adapters.html +0 -0
  115. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/architecture/README.md +0 -0
  116. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/architecture/c4-components-core.md +0 -0
  117. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/architecture/c4-containers.md +0 -0
  118. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/architecture/c4-context.md +0 -0
  119. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/architecture/c4-dynamic-install.md +0 -0
  120. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/carousel/gifs/distill.gif +0 -0
  121. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/carousel/gifs/doctor.gif +0 -0
  122. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/carousel/gifs/explain.gif +0 -0
  123. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/carousel/gifs/hooks.gif +0 -0
  124. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/carousel/gifs/install.gif +0 -0
  125. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/carousel/gifs/pulse.gif +0 -0
  126. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/carousel/gifs/search.gif +0 -0
  127. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/carousel/gifs/tap.gif +0 -0
  128. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/carousel/tapes/distill.tape +0 -0
  129. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/carousel/tapes/doctor.tape +0 -0
  130. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/carousel/tapes/explain.tape +0 -0
  131. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/carousel/tapes/hooks.tape +0 -0
  132. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/carousel/tapes/install.tape +0 -0
  133. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/carousel/tapes/pulse.tape +0 -0
  134. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/carousel/tapes/search.tape +0 -0
  135. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/carousel/tapes/tap.tape +0 -0
  136. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/carousel.html +0 -0
  137. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/chat.html +0 -0
  138. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/commands.html +0 -0
  139. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/demo-index.json +0 -0
  140. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/demo.gif +0 -0
  141. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/demo.html +0 -0
  142. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/demo.tape +0 -0
  143. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/design-roadmap.html +0 -0
  144. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/eval-latest.json +0 -0
  145. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/eval.html +0 -0
  146. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/index.html +0 -0
  147. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/langchain.html +0 -0
  148. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/mcp-hub.html +0 -0
  149. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/rag-architecture.md +0 -0
  150. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D01.md +0 -0
  151. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D02.md +0 -0
  152. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D03.md +0 -0
  153. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D04.md +0 -0
  154. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D05.md +0 -0
  155. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D06.md +0 -0
  156. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D07.md +0 -0
  157. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D08.md +0 -0
  158. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D09.md +0 -0
  159. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D10.md +0 -0
  160. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D11.md +0 -0
  161. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D12.md +0 -0
  162. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D13.md +0 -0
  163. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D14.md +0 -0
  164. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D15.md +0 -0
  165. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D16.md +0 -0
  166. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D17.md +0 -0
  167. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D18.md +0 -0
  168. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D19.md +0 -0
  169. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D20.md +0 -0
  170. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D21.md +0 -0
  171. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D22.md +0 -0
  172. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D23.md +0 -0
  173. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D24.md +0 -0
  174. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D25.md +0 -0
  175. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/BOOST-D26.md +0 -0
  176. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  177. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  178. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  179. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  180. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  181. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  182. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  183. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  184. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  185. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  186. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  187. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  188. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  189. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  190. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  191. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  192. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  193. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  194. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  195. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  196. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  197. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  198. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  199. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  200. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  201. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  202. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/command-carousel-page.md +0 -0
  203. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  204. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  205. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  206. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  207. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  208. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  209. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  210. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  211. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  212. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  213. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  214. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  215. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  216. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  217. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  218. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  219. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  220. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  221. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/dry-run-promised-a-link-nobody-makes.md +0 -0
  222. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  223. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  224. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  225. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  226. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  227. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  228. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  229. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  230. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  231. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  232. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  233. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  234. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  235. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  236. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  237. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  238. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  239. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/github-community-health-files.md +0 -0
  240. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  241. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  242. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  243. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  244. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/heal-deleted-links-it-never-made.md +0 -0
  245. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  246. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  247. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  248. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  249. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  250. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  251. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  252. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  253. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  254. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  255. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  256. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  257. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  258. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/langchain-integration-explainer-page.md +0 -0
  259. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +0 -0
  260. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  261. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  262. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  263. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/lighthouse-scored-a-page-nobody-is-served.md +0 -0
  264. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  265. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  266. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  267. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  268. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  269. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  270. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  271. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  272. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  273. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  274. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  275. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  276. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  277. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  278. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  279. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  280. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  281. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  282. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  283. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  284. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  285. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  286. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/mcp-search-hid-which-ranking-ran.md +0 -0
  287. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  288. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  289. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  290. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  291. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  292. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  293. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  294. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  295. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  296. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  297. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  298. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  299. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  300. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  301. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  302. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  303. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  304. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/one-dead-tap-broke-every-update.md +0 -0
  305. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  306. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  307. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  308. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  309. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  310. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  311. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  312. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  313. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  314. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  315. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  316. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  317. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  318. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  319. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  320. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  321. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  322. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  323. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  324. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  325. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/python-floor-moves-to-312.md +0 -0
  326. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  327. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  328. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  329. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  330. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  331. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  332. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  333. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  334. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  335. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  336. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  337. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  338. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  339. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  340. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  341. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  342. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  343. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/rules-install-but-cannot-be-governed.md +0 -0
  344. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  345. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  346. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  347. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  348. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  349. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  350. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  351. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  352. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  353. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/search-never-notices-a-new-tap.md +0 -0
  354. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  355. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  356. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  357. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  358. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  359. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  360. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  361. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  362. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  363. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  364. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  365. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  366. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  367. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  368. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  369. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  370. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  371. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  372. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  373. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  374. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  375. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  376. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  377. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  378. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/update-advertises-a-flag-it-rejects.md +0 -0
  379. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  380. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/update-refreshed-rules-without-a-gate.md +0 -0
  381. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  382. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  383. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  384. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  385. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  386. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  387. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  388. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  389. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  390. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/workspace-scope-install.md +0 -0
  391. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/zip-strict-audit.md +0 -0
  392. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  393. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/eslint.config.mjs +0 -0
  394. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/evals/README.md +0 -0
  395. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/evals/__init__.py +0 -0
  396. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/evals/baseline.json +0 -0
  397. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/evals/golden_set.json +0 -0
  398. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/examples/README.md +0 -0
  399. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/examples/adapt-demo.sh +0 -0
  400. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/examples/boost-run-prototype.sh +0 -0
  401. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/index.html +0 -0
  402. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/noxfile.py +0 -0
  403. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/requirements/coverage-tools.in +0 -0
  404. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/requirements/coverage-tools.txt +0 -0
  405. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/requirements/lint-tools.in +0 -0
  406. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/requirements/lint-tools.txt +0 -0
  407. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/requirements/mutation-tools.in +0 -0
  408. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/requirements/mutation-tools.txt +0 -0
  409. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/requirements/platform-pins.lock +0 -0
  410. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/requirements/release-tools.in +0 -0
  411. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/requirements/release-tools.txt +0 -0
  412. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/requirements/test-tools.in +0 -0
  413. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/requirements/test-tools.txt +0 -0
  414. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/a11y_check.py +0 -0
  415. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/bench_cli.sh +0 -0
  416. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/build_command_reference.py +0 -0
  417. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/build_demo_index.py +0 -0
  418. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/build_registries.py +0 -0
  419. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/build_roadmap.py +0 -0
  420. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/build_scale_corpus.py +0 -0
  421. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/check_anchors.py +0 -0
  422. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/check_licenses.py +0 -0
  423. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/check_required_checks.py +0 -0
  424. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/ensure_eval_corpus.sh +0 -0
  425. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/eval_corpus.py +0 -0
  426. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/eval_explain.py +0 -0
  427. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/eval_gate.py +0 -0
  428. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/eval_recommend.py +0 -0
  429. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/eval_retrieval.py +0 -0
  430. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/eval_stats_summary.py +0 -0
  431. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/import_budget.py +0 -0
  432. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/lock_toolchain.py +0 -0
  433. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/mutation_gate.py +0 -0
  434. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/mutation_shards.py +0 -0
  435. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/mutation_weights.json +0 -0
  436. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/page_budget.py +0 -0
  437. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/perf_gate.py +0 -0
  438. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/post_deploy_smoke.py +0 -0
  439. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/publish_eval_json.py +0 -0
  440. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/release_guard.py +0 -0
  441. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/release_preflight.py +0 -0
  442. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/scripts/serve_docs.py +0 -0
  443. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/setup.cfg +0 -0
  444. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/sonar-project.properties +0 -0
  445. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/style/README.md +0 -0
  446. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/style/boost.css +0 -0
  447. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/style/boost.js +0 -0
  448. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/style/demo.html +0 -0
  449. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/bdd/features/adapt.feature +0 -0
  450. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/bdd/features/browse.feature +0 -0
  451. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/bdd/features/count.feature +0 -0
  452. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/bdd/features/discover.feature +0 -0
  453. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/bdd/features/doctor.feature +0 -0
  454. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/bdd/features/environment.py +0 -0
  455. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/bdd/features/explain.feature +0 -0
  456. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/bdd/features/index.feature +0 -0
  457. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/bdd/features/install.feature +0 -0
  458. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/bdd/features/list.feature +0 -0
  459. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/bdd/features/mcp.feature +0 -0
  460. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/bdd/features/search.feature +0 -0
  461. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/bdd/features/steps/cli_steps.py +0 -0
  462. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/bdd/features/steps/discovery_steps.py +0 -0
  463. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/bdd/features/steps/mcp_steps.py +0 -0
  464. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/bdd/features/steps/quality_steps.py +0 -0
  465. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/conftest.py +0 -0
  466. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/eval/baseline.json +0 -0
  467. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/eval/explain.jsonl +0 -0
  468. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/eval/golden-natural.jsonl +0 -0
  469. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/eval/golden.jsonl +0 -0
  470. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/eval/recommend.jsonl +0 -0
  471. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/eval/taps-scale.txt +0 -0
  472. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/eval/taps.txt +0 -0
  473. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_capabilities_policy.py +0 -0
  474. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_cli_adapt.py +0 -0
  475. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_cli_bmad.py +0 -0
  476. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_cli_chat.py +0 -0
  477. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_cli_configuration.py +0 -0
  478. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_cli_discovery.py +0 -0
  479. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_cli_hooks.py +0 -0
  480. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_cli_info.py +0 -0
  481. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_cli_intelligence.py +0 -0
  482. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_cli_pkg.py +0 -0
  483. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_cli_quality.py +0 -0
  484. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_cli_taps.py +0 -0
  485. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_cli_team.py +0 -0
  486. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_everyday_loop.py +0 -0
  487. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_integrity_enforce.py +0 -0
  488. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_kind_conformance.py +0 -0
  489. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_property_parsers.py +0 -0
  490. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_run.py +0 -0
  491. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_tap_signing.py +0 -0
  492. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/functional/test_workspace_scope.py +0 -0
  493. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/README.md +0 -0
  494. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  495. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  496. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  497. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  498. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  499. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  500. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  501. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  502. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  503. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  504. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  505. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  506. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  507. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  508. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  509. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  510. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  511. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  512. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  513. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  514. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/fuzz_frontmatter.py +0 -0
  515. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/fuzz/fuzz_registry.py +0 -0
  516. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/make_fixture.py +0 -0
  517. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/perf/test_benchmarks.py +0 -0
  518. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/smoke.sh +0 -0
  519. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_a11y_check.py +0 -0
  520. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_adapters.py +0 -0
  521. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_adapters_multi.py +0 -0
  522. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_adapters_runner.py +0 -0
  523. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_agents.py +0 -0
  524. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_ai.py +0 -0
  525. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_capabilities.py +0 -0
  526. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_catalog.py +0 -0
  527. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_check_anchors.py +0 -0
  528. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_check_licenses.py +0 -0
  529. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_claude_settings.py +0 -0
  530. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_cliparse.py +0 -0
  531. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_codeql_analysis_key.py +0 -0
  532. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_command_reference_fresh.py +0 -0
  533. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_community_health_files.py +0 -0
  534. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_complete.py +0 -0
  535. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_config.py +0 -0
  536. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_content_dedupe.py +0 -0
  537. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_dedup_trust.py +0 -0
  538. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_demo_index.py +0 -0
  539. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_dense.py +0 -0
  540. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_dense_fallback.py +0 -0
  541. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_dense_fix_hint.py +0 -0
  542. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_dense_shards.py +0 -0
  543. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_dense_status.py +0 -0
  544. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_dependabot_config.py +0 -0
  545. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_docs_pages_linked.py +0 -0
  546. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_docsite_chrome.py +0 -0
  547. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_ed25519.py +0 -0
  548. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_embed.py +0 -0
  549. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_embed_local.py +0 -0
  550. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_entry_key.py +0 -0
  551. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_errors_and_cli_table.py +0 -0
  552. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_eval_baseline.py +0 -0
  553. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_eval_corpus.py +0 -0
  554. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_eval_faithfulness.py +0 -0
  555. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_eval_gate.py +0 -0
  556. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_eval_grading.py +0 -0
  557. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_eval_stats_summary.py +0 -0
  558. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_faithfulness.py +0 -0
  559. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_frontmatter.py +0 -0
  560. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_fuzz_targets.py +0 -0
  561. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_gitleaks_config.py +0 -0
  562. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_gitutil.py +0 -0
  563. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_imperative.py +0 -0
  564. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_import_budget.py +0 -0
  565. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_injectscan.py +0 -0
  566. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_installscan.py +0 -0
  567. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_integrity.py +0 -0
  568. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_journal.py +0 -0
  569. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_link_ownership.py +0 -0
  570. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_localembed.py +0 -0
  571. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_localembed_e2e.py +0 -0
  572. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_lockfile.py +0 -0
  573. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_logs.py +0 -0
  574. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_marketing_counts.py +0 -0
  575. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_mcp.py +0 -0
  576. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_mcp_install_scan.py +0 -0
  577. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_mcpdecl.py +0 -0
  578. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_mcphost.py +0 -0
  579. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_minisign.py +0 -0
  580. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_mutation_hardening.py +0 -0
  581. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_mutation_shards.py +0 -0
  582. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_mutation_subfile_shards.py +0 -0
  583. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_mutmut_source_paths.py +0 -0
  584. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_nethttp.py +0 -0
  585. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_output.py +0 -0
  586. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_page_budget.py +0 -0
  587. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_paths.py +0 -0
  588. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_perf_gate.py +0 -0
  589. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_pkg_confusions.py +0 -0
  590. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_pkg_injection.py +0 -0
  591. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_pkg_secrets.py +0 -0
  592. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_platform_pins.py +0 -0
  593. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_policy.py +0 -0
  594. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_post_deploy_smoke.py +0 -0
  595. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_project_mcp_sidecar.py +0 -0
  596. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_projectlock.py +0 -0
  597. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_provenance.py +0 -0
  598. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_rag.py +0 -0
  599. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_rag_fusion.py +0 -0
  600. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_registries_fresh.py +0 -0
  601. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_registry.py +0 -0
  602. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_registry_categories.py +0 -0
  603. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_release_guard.py +0 -0
  604. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_release_preflight.py +0 -0
  605. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_required_checks.py +0 -0
  606. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_resolve.py +0 -0
  607. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_roadmap_fresh.py +0 -0
  608. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_rules.py +0 -0
  609. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_scale_corpus.py +0 -0
  610. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_scopes.py +0 -0
  611. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_secretscan.py +0 -0
  612. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_selfupdate.py +0 -0
  613. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_serve.py +0 -0
  614. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_serve_docs.py +0 -0
  615. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_spin.py +0 -0
  616. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_stackprobe.py +0 -0
  617. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_staleness.py +0 -0
  618. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_store.py +0 -0
  619. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_token_parity.py +0 -0
  620. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_toolchain_lock.py +0 -0
  621. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_trustaudit.py +0 -0
  622. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_typosquat.py +0 -0
  623. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_updatediff.py +0 -0
  624. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_util.py +0 -0
  625. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_version.py +0 -0
  626. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_workflow_concurrency.py +0 -0
  627. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_workflow_timeouts.py +0 -0
  628. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/unit/test_workflows.py +0 -0
  629. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/visual/a11y_check.mjs +0 -0
  630. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/visual/console_check.mjs +0 -0
  631. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/visual/package-lock.json +0 -0
  632. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/visual/package.json +0 -0
  633. {boost_skill_cli-1.0.412 → boost_skill_cli-1.0.413}/tests/visual/visual_check.mjs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.412
3
+ Version: 1.0.413
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.412'
22
- __version_tuple__ = version_tuple = (1, 0, 412)
21
+ __version__ = version = '1.0.413'
22
+ __version_tuple__ = version_tuple = (1, 0, 413)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -11,7 +11,6 @@ import difflib
11
11
  import importlib
12
12
  import sys
13
13
  import time
14
- from typing import List
15
14
 
16
15
  from . import PRODUCT, TAGLINE, __version__
17
16
  from .core import logs, nethttp
@@ -197,7 +196,7 @@ def _unknown(name: str) -> int:
197
196
  return 2
198
197
 
199
198
 
200
- def _complete_candidates(argv: List[str]) -> int:
199
+ def _complete_candidates(argv: list[str]) -> int:
201
200
  """`boost __complete <words…>` — one candidate per line, for a shell.
202
201
 
203
202
  Runs on every TAB, so it never fails loudly: core.complete swallows its own
@@ -212,7 +211,7 @@ def _complete_candidates(argv: List[str]) -> int:
212
211
  _PLUMBING = {"__complete": _complete_candidates}
213
212
 
214
213
 
215
- def _dispatch(name: str, argv: List[str], soft: bool = False) -> int:
214
+ def _dispatch(name: str, argv: list[str], soft: bool = False) -> int:
216
215
  _group, module, _summary = _BY_NAME[name]
217
216
  mod = importlib.import_module("boost_cli.commands.%s" % module)
218
217
  func = getattr(mod, "cmd_%s" % name.replace("-", "_"), None)
@@ -225,7 +224,7 @@ def _dispatch(name: str, argv: List[str], soft: bool = False) -> int:
225
224
  return int(rc or 0)
226
225
 
227
226
 
228
- def _extract_globals(argv: List[str]) -> tuple[dict, List[str]]:
227
+ def _extract_globals(argv: list[str]) -> tuple[dict, list[str]]:
229
228
  """Peel leading global flags (`boost --debug install …`) off argv.
230
229
 
231
230
  Only flags *before* the command name are treated as global, so a
@@ -239,7 +238,7 @@ def _extract_globals(argv: List[str]) -> tuple[dict, List[str]]:
239
238
  return opts, argv[i:]
240
239
 
241
240
 
242
- def main(argv: List[str] | None = None) -> int:
241
+ def main(argv: list[str] | None = None) -> int:
243
242
  argv = list(sys.argv[1:] if argv is None else argv)
244
243
  out.harden_console_encoding()
245
244
  # Belt-and-suspenders fork safety: a host may fork() into `boost mcp
@@ -6,8 +6,6 @@ place lets the modules split without either importing back into the other.
6
6
  """
7
7
  from __future__ import annotations
8
8
 
9
- from typing import List, Optional, Tuple
10
-
11
9
  from ..core import lockfile
12
10
  from ..errors import BoostError
13
11
 
@@ -17,7 +15,7 @@ def _s(n: int) -> str:
17
15
  return "" if n == 1 else "s"
18
16
 
19
17
 
20
- def _iter_installed(names: Optional[List[str]] = None) -> List[Tuple[str, dict]]:
18
+ def _iter_installed(names: list[str] | None = None) -> list[tuple[str, dict]]:
21
19
  """[(name, lock_entry)] — all installed skills, or the given names.
22
20
 
23
21
  A named item that exists in another lock section is declined with the
@@ -49,7 +47,7 @@ def _iter_installed(names: Optional[List[str]] = None) -> List[Tuple[str, dict]]
49
47
  return sorted(skills.items())
50
48
 
51
49
 
52
- def _shadowed_kinds(name: str, acted_kind: str) -> List[str]:
50
+ def _shadowed_kinds(name: str, acted_kind: str) -> list[str]:
53
51
  """Other lock sections also holding ``name``.
54
52
 
55
53
  `find_any` resolves a bare name skill-first, which is right for reads but
@@ -61,7 +59,7 @@ def _shadowed_kinds(name: str, acted_kind: str) -> List[str]:
61
59
 
62
60
 
63
61
  def _iter_installed_all(
64
- names: Optional[List[str]] = None) -> List[Tuple[str, str, dict]]:
62
+ names: list[str] | None = None) -> list[tuple[str, str, dict]]:
65
63
  """[(kind, name, lock_entry)] across every section, or the given names."""
66
64
  if names:
67
65
  out, missing = [], []
@@ -17,7 +17,7 @@ import threading
17
17
  import time
18
18
  import urllib.parse
19
19
  from pathlib import Path
20
- from typing import Any, Dict, List
20
+ from typing import Any
21
21
 
22
22
  from .. import cliparse, spin
23
23
  from ..core import (
@@ -333,7 +333,7 @@ def cmd_index(argv):
333
333
  if not shutil.which("gh"):
334
334
  raise BoostError("the GitHub CLI (gh) is required to build the index",
335
335
  hint="brew install gh && gh auth login")
336
- items: List[dict] = []
336
+ items: list[dict] = []
337
337
  total = 0
338
338
  pages = min((max(1, args.limit) + 99) // 100, 10) # code search caps at 1000
339
339
  for page in range(1, pages + 1):
@@ -516,7 +516,7 @@ def cmd_recommend(argv):
516
516
  raise BoostError("no skills in any tap to recommend from",
517
517
  hint="add registries with `boost tap --defaults`")
518
518
  stack = detect_stack(target)
519
- agg: Dict[str, Dict[str, Any]] = {}
519
+ agg: dict[str, dict[str, Any]] = {}
520
520
  for kw in stack["keywords"]:
521
521
  for e, s in catalog.search(kw, entries):
522
522
  rec = agg.setdefault(e["name"], {"entry": e, "score": 0,
@@ -537,12 +537,12 @@ def cmd_recommend(argv):
537
537
  if stack["frameworks"]:
538
538
  line += " · frameworks: " + ", ".join(stack["frameworks"])
539
539
  out.info(out.role("%s (%s)" % (line, _tilde(target)), "muted"))
540
- shown: List[Dict[str, Any]] = ranked[:args.limit]
540
+ shown: list[dict[str, Any]] = ranked[:args.limit]
541
541
  if not shown:
542
542
  # Annotated rather than inlined: an unannotated literal of mixed value
543
543
  # types infers dict[str, object], which then makes every r["entry"][…]
544
544
  # read below an error about indexing `object`.
545
- curated: List[Dict[str, Any]] = [
545
+ curated: list[dict[str, Any]] = [
546
546
  {"entry": e, "score": 0, "because": {"curated"}}
547
547
  for e in entries if e.get("curated")]
548
548
  shown = curated[:args.limit]
@@ -802,7 +802,7 @@ def _browse_tui(curses, entries):
802
802
  """Run the curses UI. Returns the list of entries picked for install
803
803
  (one or more, via multi-select), or None if the user quit without picking.
804
804
  """
805
- state: Dict[str, Any] = {"picks": None}
805
+ state: dict[str, Any] = {"picks": None}
806
806
  categories = _tap_categories()
807
807
  desc_cache: dict = {}
808
808
  loading: set = set()
@@ -1017,7 +1017,7 @@ def cmd_trending(argv):
1017
1017
  out.truncate(e["description"], descw))
1018
1018
  for e in sorted(curated, key=operator.itemgetter("name"))[:args.limit]])
1019
1019
  return 0
1020
- agg: Dict[str, Any] = {}
1020
+ agg: dict[str, Any] = {}
1021
1021
  for ev in evs: # most-recent-first, so first ts per subject is the latest
1022
1022
  name = ev.get("subject") or "?"
1023
1023
  rec = agg.setdefault(name, {"count": 0, "last": ev.get("ts", "")})
@@ -15,7 +15,6 @@ import textwrap
15
15
  import webbrowser
16
16
  from itertools import chain
17
17
  from pathlib import Path
18
- from typing import Dict, List
19
18
 
20
19
  from .. import cliparse
21
20
  from ..core import (
@@ -218,7 +217,7 @@ def _kind_table(heading, items, extra=None):
218
217
  count line reuses the heading's trailing noun (`installed rules` -> `rule`)."""
219
218
  out.heading(heading)
220
219
  headers: tuple = ("NAME", "VERSION", "TAP", "AGENTS") # `extra` adds a 5th
221
- rows: List[tuple] = [] # 4 columns, or 5 when `extra` adds one
220
+ rows: list[tuple] = [] # 4 columns, or 5 when `extra` adds one
222
221
  for name in sorted(items):
223
222
  e = items[name]
224
223
  row = [name, e.get("version", "?"), e.get("tap", "?"),
@@ -270,7 +269,7 @@ def cmd_list(argv):
270
269
  return 0
271
270
  if skills:
272
271
  out.heading("installed skills")
273
- rows: List[tuple] = [] # 5 columns here, 4 for project skills below
272
+ rows: list[tuple] = [] # 5 columns here, 4 for project skills below
274
273
  for name in sorted(skills):
275
274
  e = skills[name]
276
275
  # Aurora-tinted flags — now that table() aligns by visible width,
@@ -887,8 +886,8 @@ def cmd_deps(argv):
887
886
  out.info(" conflicts: %s %s" % (c_name, state))
888
887
  return 1 if problems else 0
889
888
 
890
- unmet: List[dict] = []
891
- pairs: List[list] = [] # JSON-dumped, so lists rather than tuples
889
+ unmet: list[dict] = []
890
+ pairs: list[list] = [] # JSON-dumped, so lists rather than tuples
892
891
  seen: set = set()
893
892
  for name in sorted(inst):
894
893
  meta = _skill_meta(name) or {}
@@ -943,7 +942,7 @@ def cmd_tag(argv):
943
942
  mods = operands[1:]
944
943
 
945
944
  if args.list_all:
946
- mapping: Dict[str, List[str]] = {}
945
+ mapping: dict[str, list[str]] = {}
947
946
  for name, e in sorted(lockfile.installed().items()):
948
947
  for t in e.get("tags") or []:
949
948
  mapping.setdefault(t, []).append(name)
@@ -16,7 +16,6 @@ import tempfile
16
16
  import textwrap
17
17
  from collections import Counter
18
18
  from pathlib import Path
19
- from typing import List, Optional, Tuple
20
19
 
21
20
  from .. import cliparse
22
21
  from ..core import (
@@ -54,7 +53,7 @@ def _note_fallback() -> None:
54
53
  _tilde = paths.tilde
55
54
 
56
55
 
57
- def _skill_text(name: str) -> Tuple[str, str]:
56
+ def _skill_text(name: str) -> tuple[str, str]:
58
57
  """A skill's SKILL.md text -> (text, origin). Installed store preferred.
59
58
 
60
59
  A rule/workflow is declined by kind — the callers reason about skill
@@ -135,7 +134,7 @@ def _write_generated(dest: Path, text: str) -> bool:
135
134
  return True
136
135
 
137
136
 
138
- def _current_branch(cwd: Optional[Path] = None) -> Optional[str]:
137
+ def _current_branch(cwd: Path | None = None) -> str | None:
139
138
  """Current git branch of cwd, or None when not in a repo / no git."""
140
139
  if not gitutil.has_git():
141
140
  return None
@@ -146,7 +145,7 @@ def _current_branch(cwd: Optional[Path] = None) -> Optional[str]:
146
145
 
147
146
  # ---------------------------------------------------------------- distill
148
147
 
149
- def cmd_distill(argv: List[str]) -> int:
148
+ def cmd_distill(argv: list[str]) -> int:
150
149
  ap = cliparse.parser(
151
150
  prog="boost distill",
152
151
  description="Merge multiple skills into one deduplicated skill")
@@ -187,7 +186,7 @@ def cmd_distill(argv: List[str]) -> int:
187
186
  return 0
188
187
 
189
188
 
190
- def _distill_ai(new: str, sources: List[dict]) -> Optional[str]:
189
+ def _distill_ai(new: str, sources: list[dict]) -> str | None:
191
190
  blocks = "\n\n".join("### SOURCE SKILL: %s\n\n%s" % (s["name"], s["text"])
192
191
  for s in sources)
193
192
  reply = ai.ask_author(
@@ -207,9 +206,9 @@ def _distill_ai(new: str, sources: List[dict]) -> Optional[str]:
207
206
  return text if meta.get("name") else None
208
207
 
209
208
 
210
- def _distill_merge(new: str, sources: List[dict]) -> str:
209
+ def _distill_merge(new: str, sources: list[dict]) -> str:
211
210
  """Mechanical merge: union tags, dedupe exact-duplicate body lines."""
212
- tags: List[str] = []
211
+ tags: list[str] = []
213
212
  for s in sources:
214
213
  for t in s["meta"].get("tags") or []:
215
214
  if t not in tags:
@@ -241,7 +240,7 @@ def _distill_merge(new: str, sources: List[dict]) -> str:
241
240
  # ---------------------------------------------------------------- simulate
242
241
 
243
242
 
244
- def cmd_simulate(argv: List[str]) -> int:
243
+ def cmd_simulate(argv: list[str]) -> int:
245
244
  ap = cliparse.parser(
246
245
  prog="boost simulate",
247
246
  description="Preview how a skill would change Claude's behavior")
@@ -292,7 +291,7 @@ _CONV_RE = re.compile(
292
291
  r"(\(.+?\))?!?:\s")
293
292
 
294
293
 
295
- def cmd_infer(argv: List[str]) -> int:
294
+ def cmd_infer(argv: list[str]) -> int:
296
295
  ap = cliparse.parser(
297
296
  prog="boost infer",
298
297
  description="Generate a SKILL.md from your codebase patterns")
@@ -341,7 +340,7 @@ def _probe_repo(root: Path) -> dict:
341
340
  return facts
342
341
 
343
342
 
344
- def _stack_from_discovery(root: Path) -> Optional[Tuple[List[str], List[str]]]:
343
+ def _stack_from_discovery(root: Path) -> tuple[list[str], list[str]] | None:
345
344
  """Use discovery's shared stack prober when present; normalize its shape."""
346
345
  try:
347
346
  from ..core.stackprobe import detect_stack
@@ -349,7 +348,7 @@ def _stack_from_discovery(root: Path) -> Optional[Tuple[List[str], List[str]]]:
349
348
  except Exception:
350
349
  return None
351
350
 
352
- def _names(val) -> List[str]:
351
+ def _names(val) -> list[str]:
353
352
  items = []
354
353
  for x in (val or []):
355
354
  n = x.get("name") if isinstance(x, dict) else x
@@ -367,11 +366,11 @@ def _stack_from_discovery(root: Path) -> Optional[Tuple[List[str], List[str]]]:
367
366
  return (langs, fws) if (langs or fws) else None
368
367
 
369
368
 
370
- def _local_stack(root: Path) -> Tuple[List[str], List[str]]:
371
- langs: List[str] = []
372
- fws: List[str] = []
369
+ def _local_stack(root: Path) -> tuple[list[str], list[str]]:
370
+ langs: list[str] = []
371
+ fws: list[str] = []
373
372
 
374
- def add(lst: List[str], item: str) -> None:
373
+ def add(lst: list[str], item: str) -> None:
375
374
  if item not in lst:
376
375
  lst.append(item)
377
376
 
@@ -410,8 +409,8 @@ def _local_stack(root: Path) -> Tuple[List[str], List[str]]:
410
409
  return langs, fws
411
410
 
412
411
 
413
- def _formatter_configs(root: Path) -> List[str]:
414
- found: List[str] = []
412
+ def _formatter_configs(root: Path) -> list[str]:
413
+ found: list[str] = []
415
414
  if (root / ".editorconfig").exists():
416
415
  found.append(".editorconfig")
417
416
  try:
@@ -434,7 +433,7 @@ def _formatter_configs(root: Path) -> List[str]:
434
433
  return found
435
434
 
436
435
 
437
- def _commit_style(root: Path) -> Optional[Tuple[int, int]]:
436
+ def _commit_style(root: Path) -> tuple[int, int] | None:
438
437
  """(conventional, total) over the last 20 commit subjects, or None."""
439
438
  if not gitutil.has_git():
440
439
  return None
@@ -447,7 +446,7 @@ def _commit_style(root: Path) -> Optional[Tuple[int, int]]:
447
446
  return sum(1 for s in subjects if _CONV_RE.match(s)), len(subjects)
448
447
 
449
448
 
450
- def _commit_rule(style: Tuple[int, int]) -> str:
449
+ def _commit_rule(style: tuple[int, int]) -> str:
451
450
  conv, total = style
452
451
  if conv / total >= 0.5:
453
452
  return ("Write Conventional Commits (`type(scope): subject`) — "
@@ -456,7 +455,7 @@ def _commit_rule(style: Tuple[int, int]) -> str:
456
455
  "short and imperative." % (conv, total))
457
456
 
458
457
 
459
- def _infer_ai(name: str, root: Path, facts: dict) -> Optional[str]:
458
+ def _infer_ai(name: str, root: Path, facts: dict) -> str | None:
460
459
  listing = ", ".join(sorted(p.name for p in root.iterdir()
461
460
  if not p.name.startswith("."))[:30])
462
461
  detected = facts.copy()
@@ -520,7 +519,7 @@ _TRIVIAL = {"yes", "no", "ok", "okay", "continue", "go ahead", "sounds good",
520
519
  "please continue", "try again"}
521
520
 
522
521
 
523
- def cmd_absorb(argv: List[str]) -> int:
522
+ def cmd_absorb(argv: list[str]) -> int:
524
523
  ap = cliparse.parser(
525
524
  prog="boost absorb",
526
525
  description="Turn recurring chat-history patterns into a skill")
@@ -573,7 +572,7 @@ def cmd_absorb(argv: List[str]) -> int:
573
572
  return 0
574
573
 
575
574
 
576
- def _recurring_patterns(files: List[Path], limit: int) -> List[Tuple[str, int]]:
575
+ def _recurring_patterns(files: list[Path], limit: int) -> list[tuple[str, int]]:
577
576
  counts: Counter = Counter()
578
577
  for f in files:
579
578
  try:
@@ -595,7 +594,7 @@ def _recurring_patterns(files: List[Path], limit: int) -> List[Tuple[str, int]]:
595
594
  return hits[:limit]
596
595
 
597
596
 
598
- def _user_texts(obj) -> List[str]:
597
+ def _user_texts(obj) -> list[str]:
599
598
  """Best-effort user-message text from one history event."""
600
599
  if not isinstance(obj, dict):
601
600
  return []
@@ -612,7 +611,7 @@ def _user_texts(obj) -> List[str]:
612
611
  return []
613
612
 
614
613
 
615
- def _norm_sentences(text: str) -> List[str]:
614
+ def _norm_sentences(text: str) -> list[str]:
616
615
  sents = []
617
616
  for chunk in re.split(r"[.!?\n]+", text):
618
617
  s = re.sub(r"[^a-z0-9\s']", " ", chunk.lower())
@@ -622,7 +621,7 @@ def _norm_sentences(text: str) -> List[str]:
622
621
  return sents
623
622
 
624
623
 
625
- def _absorb_ai(name: str, patterns: List[Tuple[str, int]]) -> Optional[str]:
624
+ def _absorb_ai(name: str, patterns: list[tuple[str, int]]) -> str | None:
626
625
  listing = "\n".join("- (seen %dx) %s" % (n, p) for p, n in patterns)
627
626
  reply = ai.ask_author(
628
627
  "These requests recur in a developer's AI chat history:\n%s\n\n"
@@ -639,7 +638,7 @@ def _absorb_ai(name: str, patterns: List[Tuple[str, int]]) -> Optional[str]:
639
638
  return text if meta.get("name") else None
640
639
 
641
640
 
642
- def _absorb_template(name: str, patterns: List[Tuple[str, int]]) -> str:
641
+ def _absorb_template(name: str, patterns: list[tuple[str, int]]) -> str:
643
642
  meta = {"name": name,
644
643
  "description": "Recurring instructions from your chat history, "
645
644
  "codified as standing rules",
@@ -655,7 +654,7 @@ def _absorb_template(name: str, patterns: List[Tuple[str, int]]) -> str:
655
654
 
656
655
  # ---------------------------------------------------------------- evolve
657
656
 
658
- def cmd_evolve(argv: List[str]) -> int:
657
+ def cmd_evolve(argv: list[str]) -> int:
659
658
  ap = cliparse.parser(
660
659
  prog="boost evolve",
661
660
  description="Iteratively improve a skill from feedback")
@@ -708,7 +707,7 @@ def cmd_evolve(argv: List[str]) -> int:
708
707
  return 0
709
708
 
710
709
 
711
- def _evolve_ai(old: str, old_ver: str, feedback: str) -> Optional[str]:
710
+ def _evolve_ai(old: str, old_ver: str, feedback: str) -> str | None:
712
711
  reply = ai.ask_author(
713
712
  "Revise this SKILL.md based on user feedback. Keep everything that "
714
713
  "still holds, integrate the feedback as concrete rules, and bump the "
@@ -764,7 +763,7 @@ _CONTEXT_STATE = "context.json"
764
763
  _CONTEXT_DEFAULT = {"enabled": False, "rules": []}
765
764
 
766
765
 
767
- def cmd_context(argv: List[str]) -> int:
766
+ def cmd_context(argv: list[str]) -> int:
768
767
  ap = cliparse.parser(
769
768
  prog="boost context", description="Branch-aware skill activation")
770
769
  sub = ap.add_subparsers(dest="action",
@@ -930,7 +929,7 @@ def _context_apply(state: dict) -> int:
930
929
  _FOCUS_STATE = "focus.json"
931
930
 
932
931
 
933
- def cmd_focus(argv: List[str]) -> int:
932
+ def cmd_focus(argv: list[str]) -> int:
934
933
  ap = cliparse.parser(
935
934
  prog="boost focus",
936
935
  description="Temporarily prioritize skills for a work session")
@@ -1008,7 +1007,7 @@ def cmd_focus(argv: List[str]) -> int:
1008
1007
 
1009
1008
  # ---------------------------------------------------------------- impact
1010
1009
 
1011
- def cmd_impact(argv: List[str]) -> int:
1010
+ def cmd_impact(argv: list[str]) -> int:
1012
1011
  ap = cliparse.parser(
1013
1012
  prog="boost impact",
1014
1013
  description="Measure a skill's influence on code quality")
@@ -1083,7 +1082,7 @@ def cmd_impact(argv: List[str]) -> int:
1083
1082
  _IMPACT_NOTE = "correlation, not causation — commits since install in this repo"
1084
1083
 
1085
1084
 
1086
- def _repo_activity(since: str) -> Tuple[Optional[int], Optional[int]]:
1085
+ def _repo_activity(since: str) -> tuple[int | None, int | None]:
1087
1086
  """(commit count, unique files touched) in cwd's repo since a date."""
1088
1087
  if not since:
1089
1088
  return None, None
@@ -1139,7 +1138,7 @@ def _print_reply(reply: chat_engine.Reply, show_sources: bool) -> None:
1139
1138
  "showing the grounded matches instead")
1140
1139
 
1141
1140
 
1142
- def cmd_chat(argv: List[str]) -> int:
1141
+ def cmd_chat(argv: list[str]) -> int:
1143
1142
  """Ask about skills in plain language; answers are grounded in retrieval."""
1144
1143
  ap = cliparse.parser(
1145
1144
  prog="boost chat",
@@ -1195,7 +1194,7 @@ def _chat_session(args) -> int:
1195
1194
  out.info(out.role("no AI configured — answers are the grounded matches "
1196
1195
  "themselves (%s)" % ai.fallback_note(), "muted"))
1197
1196
  out.info(out.role("ask about skills; blank line or Ctrl-D to exit", "muted"))
1198
- history: List[chat_engine.Turn] = []
1197
+ history: list[chat_engine.Turn] = []
1199
1198
  while True:
1200
1199
  try:
1201
1200
  question = input("\n> ").strip()