boost-skill-cli 1.0.385__tar.gz → 1.0.387__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 (616) hide show
  1. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/PKG-INFO +1 -1
  2. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/_version.py +2 -2
  3. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_skill_cli.egg-info/PKG-INFO +1 -1
  4. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_skill_cli.egg-info/SOURCES.txt +2 -0
  5. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/index.html +22 -4
  6. boost_skill_cli-1.0.387/docs/roadmap/items/langchain-integration-explainer-page.md +66 -0
  7. boost_skill_cli-1.0.387/docs/roadmap/items/langchain-langgraph-langsmith-integration.md +89 -0
  8. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap.html +153 -2
  9. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/style/boost.css +6 -1
  10. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.gitattributes +0 -0
  11. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.gitignore +0 -0
  12. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.gitleaks.toml +0 -0
  13. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.htmlvalidate.json +0 -0
  14. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.lighthouserc.json +0 -0
  15. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.lycheeignore +0 -0
  16. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.markdownlint-cli2.jsonc +0 -0
  17. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.pre-commit-config.yaml +0 -0
  18. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.stylelintrc.json +0 -0
  19. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.vale/styles/boost/Terminology.yml +0 -0
  20. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  21. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/.vale.ini +0 -0
  22. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/CLAUDE.md +0 -0
  23. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/CODE_OF_CONDUCT.md +0 -0
  24. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/CONTRIBUTING.md +0 -0
  25. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/LICENSE +0 -0
  26. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/MANIFEST.in +0 -0
  27. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/Makefile +0 -0
  28. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/README.md +0 -0
  29. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/SECURITY.md +0 -0
  30. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost +0 -0
  31. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/__init__.py +0 -0
  32. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/__main__.py +0 -0
  33. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/cli.py +0 -0
  34. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/cliparse.py +0 -0
  35. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/__init__.py +0 -0
  36. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/_common.py +0 -0
  37. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/bmad.py +0 -0
  38. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/configuration.py +0 -0
  39. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/discovery.py +0 -0
  40. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/hooks.py +0 -0
  41. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/info.py +0 -0
  42. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/intelligence.py +0 -0
  43. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/pkg.py +0 -0
  44. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/quality.py +0 -0
  45. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/run.py +0 -0
  46. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/safety.py +0 -0
  47. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/taps.py +0 -0
  48. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/commands/team.py +0 -0
  49. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/__init__.py +0 -0
  50. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/adapters.py +0 -0
  51. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/agents.py +0 -0
  52. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/ai.py +0 -0
  53. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/capabilities.py +0 -0
  54. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/catalog.py +0 -0
  55. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/chat.py +0 -0
  56. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/claude_settings.py +0 -0
  57. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/complete.py +0 -0
  58. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/config.py +0 -0
  59. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/dense.py +0 -0
  60. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/ed25519.py +0 -0
  61. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/embed.py +0 -0
  62. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/faithfulness.py +0 -0
  63. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/frontmatter.py +0 -0
  64. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/gitutil.py +0 -0
  65. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/imperative.py +0 -0
  66. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/injectscan.py +0 -0
  67. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/installscan.py +0 -0
  68. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/integrity.py +0 -0
  69. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/journal.py +0 -0
  70. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/localembed.py +0 -0
  71. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/lockfile.py +0 -0
  72. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/logs.py +0 -0
  73. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/mcp.py +0 -0
  74. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/mcpdecl.py +0 -0
  75. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/mcphost.py +0 -0
  76. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/minisign.py +0 -0
  77. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/nethttp.py +0 -0
  78. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/output.py +0 -0
  79. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/paths.py +0 -0
  80. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/policy.py +0 -0
  81. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/projectlock.py +0 -0
  82. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/provenance.py +0 -0
  83. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/rag.py +0 -0
  84. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/registry.py +0 -0
  85. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/resolve.py +0 -0
  86. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/rules.py +0 -0
  87. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/scopes.py +0 -0
  88. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/secretscan.py +0 -0
  89. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/selfupdate.py +0 -0
  90. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/serve.py +0 -0
  91. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/stackprobe.py +0 -0
  92. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/staleness.py +0 -0
  93. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/store.py +0 -0
  94. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/trustaudit.py +0 -0
  95. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/typosquat.py +0 -0
  96. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/updatediff.py +0 -0
  97. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/util.py +0 -0
  98. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/core/workflows.py +0 -0
  99. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/data/registries.json +0 -0
  100. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/errors.py +0 -0
  101. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_cli/spin.py +0 -0
  102. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  103. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  104. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_skill_cli.egg-info/requires.txt +0 -0
  105. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/boost_skill_cli.egg-info/top_level.txt +0 -0
  106. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/codecov.yml +0 -0
  107. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/.claude/settings.local.json +0 -0
  108. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/DEBUGGING.md +0 -0
  109. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/adapters.html +0 -0
  110. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/architecture/README.md +0 -0
  111. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/architecture/c4-components-core.md +0 -0
  112. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/architecture/c4-containers.md +0 -0
  113. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/architecture/c4-context.md +0 -0
  114. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/architecture/c4-dynamic-install.md +0 -0
  115. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/gifs/distill.gif +0 -0
  116. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/gifs/doctor.gif +0 -0
  117. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/gifs/explain.gif +0 -0
  118. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/gifs/hooks.gif +0 -0
  119. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/gifs/install.gif +0 -0
  120. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/gifs/pulse.gif +0 -0
  121. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/gifs/search.gif +0 -0
  122. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/gifs/tap.gif +0 -0
  123. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/tapes/distill.tape +0 -0
  124. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/tapes/doctor.tape +0 -0
  125. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/tapes/explain.tape +0 -0
  126. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/tapes/hooks.tape +0 -0
  127. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/tapes/install.tape +0 -0
  128. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/tapes/pulse.tape +0 -0
  129. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/tapes/search.tape +0 -0
  130. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel/tapes/tap.tape +0 -0
  131. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/carousel.html +0 -0
  132. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/chat.html +0 -0
  133. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/commands.html +0 -0
  134. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/demo-index.json +0 -0
  135. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/demo.gif +0 -0
  136. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/demo.html +0 -0
  137. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/demo.tape +0 -0
  138. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/design-roadmap.html +0 -0
  139. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/eval-latest.json +0 -0
  140. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/eval.html +0 -0
  141. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/mcp-hub.html +0 -0
  142. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/rag-architecture.md +0 -0
  143. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D01.md +0 -0
  144. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D02.md +0 -0
  145. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D03.md +0 -0
  146. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D04.md +0 -0
  147. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D05.md +0 -0
  148. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D06.md +0 -0
  149. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D07.md +0 -0
  150. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D08.md +0 -0
  151. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D09.md +0 -0
  152. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D10.md +0 -0
  153. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D11.md +0 -0
  154. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D12.md +0 -0
  155. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D13.md +0 -0
  156. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D14.md +0 -0
  157. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D15.md +0 -0
  158. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D16.md +0 -0
  159. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D17.md +0 -0
  160. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D18.md +0 -0
  161. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D19.md +0 -0
  162. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D20.md +0 -0
  163. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D21.md +0 -0
  164. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D22.md +0 -0
  165. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D23.md +0 -0
  166. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D24.md +0 -0
  167. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D25.md +0 -0
  168. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/BOOST-D26.md +0 -0
  169. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  170. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  171. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  172. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  173. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/agents-field-records-the-request-not-the-links.md +0 -0
  174. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  175. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  176. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  177. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  178. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  179. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  180. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  181. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  182. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  183. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  184. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  185. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  186. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  187. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/chat-cites-sources-by-a-number-it-never-prints.md +0 -0
  188. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  189. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  190. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  191. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  192. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  193. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  194. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  195. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/command-carousel-page.md +0 -0
  196. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  197. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  198. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  199. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  200. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  201. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  202. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  203. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  204. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  205. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  206. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  207. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  208. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  209. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  210. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  211. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  212. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  213. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  214. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  215. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  216. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  217. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/eval-corpus-is-one-strangers-repo.md +0 -0
  218. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/eval-corpus-pins-have-no-refresh-path.md +0 -0
  219. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  220. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  221. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  222. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  223. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  224. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  225. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  226. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  227. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  228. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  229. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  230. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  231. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/github-community-health-files.md +0 -0
  232. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  233. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +0 -0
  234. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  235. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  236. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  237. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/info-rejects-the-qualified-name-it-recommends.md +0 -0
  238. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  239. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  240. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  241. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  242. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  243. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  244. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  245. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  246. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  247. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  248. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  249. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  250. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  251. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  252. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  253. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  254. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  255. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  256. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  257. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  258. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  259. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  260. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  261. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  262. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  263. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  264. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  265. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  266. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  267. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  268. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  269. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  270. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  271. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  272. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  273. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  274. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  275. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  276. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  277. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  278. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  279. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  280. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  281. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  282. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  283. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  284. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  285. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  286. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  287. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  288. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  289. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  290. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  291. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  292. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  293. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  294. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  295. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  296. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  297. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  298. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  299. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  300. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  301. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  302. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  303. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  304. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  305. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  306. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  307. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  308. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  309. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  310. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  311. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  312. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  313. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  314. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  315. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  316. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  317. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  318. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  319. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  320. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  321. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  322. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  323. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  324. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/roadmap-perf-budget-has-no-local-guard.md +0 -0
  325. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  326. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  327. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  328. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  329. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  330. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  331. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  332. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  333. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  334. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  335. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  336. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  337. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  338. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  339. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  340. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  341. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  342. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  343. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  344. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  345. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  346. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  347. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  348. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  349. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  350. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  351. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  352. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  353. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  354. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  355. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  356. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  357. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  358. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  359. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  360. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  361. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  362. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  363. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  364. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  365. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  366. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  367. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  368. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  369. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  370. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  371. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/workspace-scope-install.md +0 -0
  372. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  373. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/eslint.config.mjs +0 -0
  374. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/evals/README.md +0 -0
  375. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/evals/__init__.py +0 -0
  376. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/evals/baseline.json +0 -0
  377. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/evals/faithfulness.py +0 -0
  378. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/evals/golden_set.json +0 -0
  379. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/evals/make_corpus.py +0 -0
  380. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/evals/make_golden.py +0 -0
  381. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/evals/metrics.py +0 -0
  382. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/evals/run_evals.py +0 -0
  383. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/examples/README.md +0 -0
  384. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/examples/adapt-demo.sh +0 -0
  385. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/examples/boost-run-prototype.sh +0 -0
  386. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/index.html +0 -0
  387. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/noxfile.py +0 -0
  388. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/pyproject.toml +0 -0
  389. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/coverage-tools.in +0 -0
  390. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/coverage-tools.txt +0 -0
  391. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/lint-tools.in +0 -0
  392. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/lint-tools.txt +0 -0
  393. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/mutation-tools.in +0 -0
  394. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/mutation-tools.txt +0 -0
  395. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/platform-pins.lock +0 -0
  396. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/release-tools.in +0 -0
  397. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/release-tools.txt +0 -0
  398. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/test-tools.in +0 -0
  399. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/requirements/test-tools.txt +0 -0
  400. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/a11y_check.py +0 -0
  401. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/bench_cli.sh +0 -0
  402. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/build_command_reference.py +0 -0
  403. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/build_demo_index.py +0 -0
  404. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/build_registries.py +0 -0
  405. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/build_roadmap.py +0 -0
  406. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/build_scale_corpus.py +0 -0
  407. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/check_anchors.py +0 -0
  408. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/check_licenses.py +0 -0
  409. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/check_required_checks.py +0 -0
  410. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/ensure_eval_corpus.sh +0 -0
  411. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/eval_corpus.py +0 -0
  412. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/eval_explain.py +0 -0
  413. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/eval_gate.py +0 -0
  414. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/eval_recommend.py +0 -0
  415. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/eval_retrieval.py +0 -0
  416. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/eval_stats_summary.py +0 -0
  417. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/import_budget.py +0 -0
  418. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/lock_toolchain.py +0 -0
  419. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/mutation_gate.py +0 -0
  420. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/mutation_shards.py +0 -0
  421. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/mutation_weights.json +0 -0
  422. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/page_budget.py +0 -0
  423. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/perf_gate.py +0 -0
  424. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/post_deploy_smoke.py +0 -0
  425. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/publish_eval_json.py +0 -0
  426. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/release_guard.py +0 -0
  427. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/scripts/release_preflight.py +0 -0
  428. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/setup.cfg +0 -0
  429. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/sonar-project.properties +0 -0
  430. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/style/README.md +0 -0
  431. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/style/boost.js +0 -0
  432. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/style/demo.html +0 -0
  433. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/adapt.feature +0 -0
  434. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/browse.feature +0 -0
  435. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/count.feature +0 -0
  436. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/discover.feature +0 -0
  437. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/doctor.feature +0 -0
  438. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/environment.py +0 -0
  439. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/explain.feature +0 -0
  440. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/index.feature +0 -0
  441. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/install.feature +0 -0
  442. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/list.feature +0 -0
  443. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/mcp.feature +0 -0
  444. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/search.feature +0 -0
  445. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/steps/cli_steps.py +0 -0
  446. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/steps/discovery_steps.py +0 -0
  447. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/steps/mcp_steps.py +0 -0
  448. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/bdd/features/steps/quality_steps.py +0 -0
  449. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/conftest.py +0 -0
  450. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/eval/baseline.json +0 -0
  451. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/eval/explain.jsonl +0 -0
  452. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/eval/golden-natural.jsonl +0 -0
  453. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/eval/golden.jsonl +0 -0
  454. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/eval/recommend.jsonl +0 -0
  455. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/eval/taps-scale.txt +0 -0
  456. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/eval/taps.txt +0 -0
  457. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_capabilities_policy.py +0 -0
  458. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_adapt.py +0 -0
  459. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_bmad.py +0 -0
  460. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_chat.py +0 -0
  461. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_configuration.py +0 -0
  462. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_discovery.py +0 -0
  463. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_hooks.py +0 -0
  464. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_info.py +0 -0
  465. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_intelligence.py +0 -0
  466. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_pkg.py +0 -0
  467. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_quality.py +0 -0
  468. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_taps.py +0 -0
  469. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_cli_team.py +0 -0
  470. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_everyday_loop.py +0 -0
  471. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_integrity_enforce.py +0 -0
  472. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_property_parsers.py +0 -0
  473. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_run.py +0 -0
  474. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_tap_signing.py +0 -0
  475. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/functional/test_workspace_scope.py +0 -0
  476. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/README.md +0 -0
  477. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  478. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  479. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  480. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  481. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  482. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  483. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  484. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  485. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  486. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  487. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  488. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  489. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  490. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  491. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  492. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  493. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  494. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  495. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  496. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  497. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/fuzz_frontmatter.py +0 -0
  498. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/fuzz/fuzz_registry.py +0 -0
  499. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/make_fixture.py +0 -0
  500. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/perf/test_benchmarks.py +0 -0
  501. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/smoke.sh +0 -0
  502. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_a11y_check.py +0 -0
  503. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_adapters.py +0 -0
  504. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_adapters_multi.py +0 -0
  505. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_adapters_runner.py +0 -0
  506. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_agents.py +0 -0
  507. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_ai.py +0 -0
  508. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_capabilities.py +0 -0
  509. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_catalog.py +0 -0
  510. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_chat.py +0 -0
  511. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_check_anchors.py +0 -0
  512. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_check_licenses.py +0 -0
  513. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_claude_settings.py +0 -0
  514. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_cliparse.py +0 -0
  515. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_codeql_analysis_key.py +0 -0
  516. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_command_reference_fresh.py +0 -0
  517. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_community_health_files.py +0 -0
  518. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_complete.py +0 -0
  519. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_config.py +0 -0
  520. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_content_dedupe.py +0 -0
  521. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_dedup_trust.py +0 -0
  522. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_demo_index.py +0 -0
  523. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_dense.py +0 -0
  524. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_dense_fallback.py +0 -0
  525. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_dense_fix_hint.py +0 -0
  526. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_dense_shards.py +0 -0
  527. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_dense_status.py +0 -0
  528. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_dependabot_config.py +0 -0
  529. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_docs_pages_linked.py +0 -0
  530. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_docsite_chrome.py +0 -0
  531. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_ed25519.py +0 -0
  532. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_embed.py +0 -0
  533. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_embed_local.py +0 -0
  534. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_entry_key.py +0 -0
  535. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_errors_and_cli_table.py +0 -0
  536. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_eval_baseline.py +0 -0
  537. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_eval_corpus.py +0 -0
  538. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_eval_faithfulness.py +0 -0
  539. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_eval_gate.py +0 -0
  540. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_eval_grading.py +0 -0
  541. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_eval_metrics.py +0 -0
  542. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_eval_stats_summary.py +0 -0
  543. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_faithfulness.py +0 -0
  544. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_frontmatter.py +0 -0
  545. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_fuzz_targets.py +0 -0
  546. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_gitleaks_config.py +0 -0
  547. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_gitutil.py +0 -0
  548. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_imperative.py +0 -0
  549. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_import_budget.py +0 -0
  550. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_injectscan.py +0 -0
  551. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_installscan.py +0 -0
  552. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_integrity.py +0 -0
  553. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_journal.py +0 -0
  554. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_localembed.py +0 -0
  555. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_localembed_e2e.py +0 -0
  556. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_lockfile.py +0 -0
  557. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_logs.py +0 -0
  558. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_marketing_counts.py +0 -0
  559. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_mcp.py +0 -0
  560. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_mcp_install_scan.py +0 -0
  561. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_mcpdecl.py +0 -0
  562. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_mcphost.py +0 -0
  563. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_minisign.py +0 -0
  564. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_mutation_hardening.py +0 -0
  565. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_mutation_shards.py +0 -0
  566. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_mutation_subfile_shards.py +0 -0
  567. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_mutmut_source_paths.py +0 -0
  568. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_nethttp.py +0 -0
  569. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_output.py +0 -0
  570. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_page_budget.py +0 -0
  571. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_paths.py +0 -0
  572. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_perf_gate.py +0 -0
  573. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_pkg_confusions.py +0 -0
  574. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_pkg_injection.py +0 -0
  575. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_pkg_secrets.py +0 -0
  576. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_platform_pins.py +0 -0
  577. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_policy.py +0 -0
  578. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_post_deploy_smoke.py +0 -0
  579. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_project_mcp_sidecar.py +0 -0
  580. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_projectlock.py +0 -0
  581. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_provenance.py +0 -0
  582. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_rag.py +0 -0
  583. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_rag_fusion.py +0 -0
  584. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_registries_fresh.py +0 -0
  585. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_registry.py +0 -0
  586. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_registry_categories.py +0 -0
  587. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_release_guard.py +0 -0
  588. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_release_preflight.py +0 -0
  589. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_required_checks.py +0 -0
  590. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_resolve.py +0 -0
  591. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_roadmap_fresh.py +0 -0
  592. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_rules.py +0 -0
  593. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_scale_corpus.py +0 -0
  594. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_scopes.py +0 -0
  595. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_secretscan.py +0 -0
  596. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_selfupdate.py +0 -0
  597. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_serve.py +0 -0
  598. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_spin.py +0 -0
  599. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_stackprobe.py +0 -0
  600. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_staleness.py +0 -0
  601. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_store.py +0 -0
  602. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_token_parity.py +0 -0
  603. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_toolchain_lock.py +0 -0
  604. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_trustaudit.py +0 -0
  605. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_typosquat.py +0 -0
  606. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_updatediff.py +0 -0
  607. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_util.py +0 -0
  608. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_version.py +0 -0
  609. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_workflow_concurrency.py +0 -0
  610. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_workflow_timeouts.py +0 -0
  611. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/unit/test_workflows.py +0 -0
  612. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/visual/a11y_check.mjs +0 -0
  613. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/visual/console_check.mjs +0 -0
  614. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/visual/package-lock.json +0 -0
  615. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/tests/visual/package.json +0 -0
  616. {boost_skill_cli-1.0.385 → boost_skill_cli-1.0.387}/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.385
3
+ Version: 1.0.387
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.385'
22
- __version_tuple__ = version_tuple = (1, 0, 385)
21
+ __version__ = version = '1.0.387'
22
+ __version_tuple__ = version_tuple = (1, 0, 387)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.385
3
+ Version: 1.0.387
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -248,6 +248,8 @@ docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md
248
248
  docs/roadmap/items/journal-rotation-race-and-handle-leak.md
249
249
  docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md
250
250
  docs/roadmap/items/keyless-semantic-search-for-everyone.md
251
+ docs/roadmap/items/langchain-integration-explainer-page.md
252
+ docs/roadmap/items/langchain-langgraph-langsmith-integration.md
251
253
  docs/roadmap/items/layering-guard-import-linter.md
252
254
  docs/roadmap/items/license-compliance-scanning.md
253
255
  docs/roadmap/items/lighthouse-ci-on-the-pages-site.md
@@ -64,17 +64,25 @@
64
64
  font-size: 14px; color: var(--text-2); text-decoration: none; white-space: nowrap;
65
65
  }
66
66
  header .nav ul a:hover { color: var(--text); background: var(--panel); }
67
- header .nav ul a.cta { color: var(--text); font-weight: 600; }
67
+ /* var(--bg), not var(--text): this pill's background is the light Aurora
68
+ gradient, so near-white text measures 1.38:1 against its cyan stop — a
69
+ 3x WCAG AA failure. No gate caught it: axe cannot evaluate contrast over
70
+ a gradient and files it as "incomplete" rather than a violation, and
71
+ scripts/a11y_check.py only grades solid token pairs. style/boost.css:479
72
+ already had this right; this inline rule was overriding it on cascade
73
+ order. Matches .btn-grad in the hero, which measures ~8:1. */
74
+ header .nav ul a.cta { color: var(--bg); font-weight: 600; }
68
75
 
69
76
  /* Small screens: the fourteen links get their own full-width row and scroll,
70
77
  with 40px tap targets — mirrors the .site-nav rules in style/boost.css.
71
78
  Stated here because this page's inline nav styling would otherwise win
72
79
  against the shared sheet on cascade order. */
73
80
  @media (max-width: 720px) {
74
- header .nav { flex-wrap: wrap; gap: 6px 18px; padding: 8px 0 6px; }
81
+ header .nav { flex-wrap: wrap; gap: 6px 18px; padding: 8px 24px 6px; }
75
82
  header .nav ul {
76
83
  width: 100%; margin-left: 0; flex-wrap: nowrap; gap: 6px;
77
84
  -webkit-overflow-scrolling: touch; scroll-snap-type: x proximity;
85
+ scroll-padding-inline-start: 24px;
78
86
  margin-inline: -24px; padding-inline: 24px; padding-bottom: 4px;
79
87
  -webkit-mask-image: linear-gradient(90deg, #000 0 calc(100% - 26px), transparent);
80
88
  mask-image: linear-gradient(90deg, #000 0 calc(100% - 26px), transparent);
@@ -243,6 +251,16 @@
243
251
  .flow-row.one { grid-template-columns: minmax(0, 460px); justify-content: center; }
244
252
  .flow-row.two { grid-template-columns: 1fr 1fr; }
245
253
  .flow-row.three { grid-template-columns: 1fr 1fr 1fr; }
254
+ /* Four agents, four columns. The ladder only ever uses counts that divide
255
+ 4 — any other number strands the last card alone on its own row with the
256
+ rest of that row empty, which is what `.three` did to Gemini CLI at every
257
+ width above the 620px collapse. */
258
+ .flow-row.four { grid-template-columns: repeat(4, minmax(0, 1fr)); }
259
+ /* Below ~900px four tracks squeeze each card to 165px and the Gemini
260
+ caption to three lines (128px / four lines by 621px), so step to 2x2 —
261
+ still a divisor of 4, so still no orphan. The max-width:620px rule
262
+ further down takes it to a single column and wins there on source order. */
263
+ @media (max-width: 900px) { .flow-row.four { grid-template-columns: 1fr 1fr; } }
246
264
  .node {
247
265
  background: var(--surface-1);
248
266
  box-shadow: inset 0 1px 0 0 rgba(255,255,255,.06), inset 0 -1px 0 0 rgba(0,0,0,.3);
@@ -425,7 +443,7 @@
425
443
  @media (max-width: 620px) {
426
444
  section { padding: 84px 0 10px; }
427
445
  .cards, .caps, .mini { grid-template-columns: 1fr; }
428
- .flow-row.two, .flow-row.three { grid-template-columns: 1fr; }
446
+ .flow-row.two, .flow-row.three, .flow-row.four { grid-template-columns: 1fr; }
429
447
  .stats { gap: 10px; }
430
448
  .stat { padding: 18px 10px; }
431
449
  }
@@ -616,7 +634,7 @@ facilitate structured divergent thinking:
616
634
  <svg width="14" height="26" viewBox="0 0 14 26" fill="none" aria-hidden="true"><path d="M7 0v22m0 0l-5.5-6M7 22l5.5-6" stroke="currentColor" stroke-width="2"/></svg>
617
635
  <span>symlinks</span>
618
636
  </div>
619
- <div class="flow-row three reveal">
637
+ <div class="flow-row four reveal">
620
638
  <div class="node agent">
621
639
  <span class="tag">Agent</span>
622
640
  <h3>Claude Code</h3>
@@ -0,0 +1,66 @@
1
+ ---
2
+ id: langchain-integration-explainer-page
3
+ board: code
4
+ section: docsite
5
+ status: planned
6
+ category: Docs · Interop
7
+ complexity: M
8
+ impact: Med
9
+ wow: 4
10
+ note: the eval.html genre, pointed at the LangChain stack — and it can only document what has shipped
11
+ order: 89
12
+ title: an explainer page for the LangChain / LangGraph / LangSmith integration
13
+ ---
14
+ A companion to <b>production-ready LangChain / LangGraph / LangSmith integration</b>: one
15
+ <code>docs/langchain.html</code> that shows what the integration <i>is</i> — architecture and
16
+ sequence diagrams, annotated code you can paste, and the reasoning behind each seam — rather than
17
+ an API list. The audience is a Python engineer deciding whether boost's catalogue is worth wiring
18
+ into their agent, and that decision is made from a diagram and a twenty-line snippet, not from
19
+ a reference table.
20
+
21
+ <b>The genre already exists here.</b> <code>docs/eval.html</code> does exactly this job for the
22
+ evaluation system — architecture plus sequence diagrams plus a simple-vs-technical cheat sheet — and
23
+ it is the template to follow rather than reinvent. So are its mechanics: a page-specific
24
+ <code>&lt;style&gt;</code> block built <i>only</i> on <code>style/boost.css</code>
25
+ <code>:root</code> tokens, so the Aurora palette stays recolourable from one file, and diagrams as
26
+ <b>inline SVG on those same tokens</b> rather than a diagram library. A hardcoded hex in a diagram
27
+ silently opts that diagram out of every future theme change, and an external script opts the page
28
+ out of loading at all on a strict CSP.
29
+
30
+ <b>What the page has to cover</b>, one section per seam, each with a diagram and a runnable snippet:
31
+ retrieval (<code>BoostRetriever</code> over the BM25 + dense fusion, with the measured recall@k /
32
+ hit@1 / MRR / nDCG@k shown as numbers because they exist); a <code>SKILL.md</code> loaded as prompt
33
+ content with its frontmatter surviving as metadata; a LangGraph graph that pulls a procedure
34
+ <i>mid-run</i> instead of pre-loading every one into the system prompt; and a LangSmith trace of
35
+ that graph, next to a plain statement that the required gate stays offline, deterministic and
36
+ key-free.
37
+
38
+ <b>Three constraints that are specific to this repo</b>, all of them cheap to satisfy if known up
39
+ front and expensive to retrofit:
40
+
41
+ <b>No page ships unlinked.</b> <code>tests/unit/test_docsite_chrome.py</code> holds a
42
+ <code>_PAGES</code> tuple and asserts every page carries the footer and is reachable from all the
43
+ others. Adding the tenth page therefore means touching the nav and footer of the nine that exist —
44
+ it is a small edit, but it is not optional and it is not automatic.
45
+
46
+ <b>The budget already fits — measured, so nobody has to guess.</b>
47
+ <code>scripts/page_budget.py</code> allows a hand-written page 150 kB / 2,000 elements / depth 20.
48
+ Today <code>eval.html</code> is 35.5 kB / 528 elements / depth 10 and <code>mcp-hub.html</code>, the
49
+ largest hand-written page, is 50.0 kB / 607. A diagram-and-snippet page of this shape lands in the
50
+ same range, so it needs <b>no</b> new <code>BUDGETS</code> entry — and if it ever does, the entry
51
+ carries a <code>why</code> string rather than raising the default for every page.
52
+
53
+ <b>Accessibility is enforced with numbers, not vibes.</b> The axe-core sweep and
54
+ <code>scripts/a11y_check.py</code> gate WCAG 2.1 AA, and this genre trips it in a predictable place:
55
+ a diagram that encodes meaning in colour alone, or a link distinguished only by hue. The precedent
56
+ is already commented in <code>eval.html</code> — <code>--sky</code> on <code>--text-3</code> is
57
+ 2.47:1 against the 3:1 that WCAG 1.4.1 requires, so its links carry an underline as the non-colour
58
+ cue. Diagram legends need the same treatment: shape or label, never colour by itself.
59
+
60
+ <b>Sequencing, and the one rule that keeps it honest.</b> The page cannot precede the code — a
61
+ demonstration of an unbuilt integration is fiction, and a snippet nobody ran is a bug with syntax
62
+ highlighting. So each section ships with the phase it documents (retrieval with phase 1, the graph
63
+ with phase 2, the trace with phase 3), and every snippet on the page should be extracted and
64
+ executed by a test rather than pasted in and trusted. That last part is a new discipline for this
65
+ docsite, not an existing one; it is worth adopting here first precisely because this page's whole
66
+ value is that its code runs.
@@ -0,0 +1,89 @@
1
+ ---
2
+ id: langchain-langgraph-langsmith-integration
3
+ board: code
4
+ section: planned
5
+ status: planned
6
+ category: Feature
7
+ complexity: L
8
+ impact: High
9
+ wow: 4
10
+ note: a second consumer class for the catalogue — blocked on one dependency conflict boost already owns
11
+ order: 88
12
+ title: production-ready LangChain / LangGraph / LangSmith integration
13
+ ---
14
+ Every agent boost supports today is a <b>coding</b> agent that reads files off disk — Claude Code,
15
+ Cursor, Windsurf, Gemini CLI. The catalogue itself is not coding-specific: it is 10,000+ retrievable
16
+ procedures with frontmatter, provenance and a lock file. A LangChain application cannot reach any of
17
+ it, so the same procedure has to be re-written as a prompt string by hand. This item is about making
18
+ the catalogue addressable from a Python agent runtime as well as from a dotfile.
19
+
20
+ <b>Three surfaces, and they are not equally justified.</b>
21
+
22
+ <code>langchain</code> — a <code>BoostRetriever</code> implementing <code>BaseRetriever</code> over
23
+ the engine <code>boost search</code> already uses: BM25 (<code>core/rag.py</code>) fused with
24
+ optional dense retrieval (<code>core/dense.py</code>) through <code>rag.rrf_fuse</code>. The
25
+ retrieval quality is already measured — the required gate floors recall@k, hit@1, MRR and nDCG@k
26
+ against <code>tests/eval/golden.jsonl</code> — so this surface ships with numbers rather than
27
+ claims. Plus a document loader that turns a <code>SKILL.md</code> into prompt content with its
28
+ frontmatter preserved as metadata.
29
+
30
+ <code>langgraph</code> — skills as procedures a graph pulls <i>mid-run</i>: a node that retrieves
31
+ the right skill for the current state and injects it, rather than stuffing every procedure into the
32
+ system prompt. boost's <code>workflow</code> item kind is already the closest thing it has to a
33
+ graph node, and <code>core/workflows.py</code> already renders per-runtime formats
34
+ (<code>TOML_COMMAND_AGENTS</code> for Gemini), so a LangGraph renderer is a new target for existing
35
+ machinery, not a new concept.
36
+
37
+ <code>langsmith</code> — hosted tracing plus datasets/evaluators. boost already has a four-tier
38
+ eval story (Tier 1 BM25 floors, 1b <code>ranx</code> significance, 2a/2b LLM rerank and recommend,
39
+ 2c <code>ragas</code> faithfulness) and a baseline keyed by query-set digest. LangSmith would host
40
+ the golden set and run online evals against real traffic. It must <b>not</b> replace the required
41
+ gate, which is deliberately pure-stdlib BM25 needing no API key — a required check that depends on
42
+ a SaaS account is a required check that fails when someone else's billing lapses.
43
+
44
+ <b>What "production ready" forces, specifically.</b>
45
+
46
+ <b>It cannot be an extra — the Python floor decides it.</b> boost is
47
+ <code>requires-python = "&gt;=3.9"</code> and CI tests 3.9 / 3.12 / 3.14 across Linux, macOS and
48
+ Windows. Measured 2026-08-02: <code>langchain</code> 1.3.14 declares
49
+ <code>&gt;=3.10.0,&lt;4.0.0</code> and <code>langsmith</code> 0.10.15 declares <code>&gt;=3.10</code>. So
50
+ an extra would either fail to resolve on the 3.9 leg or force boost to drop 3.9 for every user,
51
+ including those who never touch LangChain. A separately versioned distribution that depends on
52
+ <code>boost-skill-cli</code> keeps the floor a property of the integration.
53
+
54
+ <b>There is a dependency conflict boost already owns, and it blocks this.</b> The
55
+ <code>[eval]</code> extra pins <code>langchain-core&lt;0.4</code>,
56
+ <code>langchain-community&lt;0.4</code> and <code>langchain-openai&lt;1</code>, because ragas 0.2.x
57
+ hard-imports a <code>ChatVertexAI</code> path that langchain ≥1.0 removed. One environment cannot
58
+ hold both that pin and langchain 1.x. The good news is measured: <b>ragas 0.4.3 declares
59
+ <code>langchain</code>, <code>langchain-core</code>, <code>langchain-community</code> and
60
+ <code>langchain_openai</code> with no upper bound at all</b>, and still supports Python ≥3.9. So the
61
+ first step is small, independently valuable, and testable on its own — move <code>[eval]</code>
62
+ from <code>ragas&gt;=0.2,&lt;0.3</code> to 0.4 and delete the three pins. Nothing else should be built
63
+ until that lands, or the project holds two incompatible langchain majors.
64
+
65
+ <b>The existing rules still apply.</b> Nothing in the integration may be imported by the CLI or by
66
+ the required gate — the discipline <code>[eval]</code> already follows. It must degrade cleanly
67
+ without an API key, the way <code>embed.py</code> falls back Voyage → OpenAI → local
68
+ <code>bge-small-en-v1.5</code>; a key is a quality upgrade, never the entry fee. And it carries its
69
+ own tests without lowering the 80% coverage or 80% mutation floors.
70
+
71
+ <b>Delivery order.</b> Each phase is independently shippable, and phase 0 is worth doing on its own
72
+ merits whatever happens to the rest.
73
+
74
+ <b>0 &middot; unpin.</b> Move <code>[eval]</code> to <code>ragas&gt;=0.4</code> and delete the three
75
+ langchain pins, freeing the langchain major. Contained, testable, no new surface.
76
+ <b>1 &middot; retrieve.</b> A <code>boost-langchain</code> distribution carrying
77
+ <code>BoostRetriever</code> and the <code>SKILL.md</code> loader — the smallest thing that makes the
78
+ catalogue reachable from a LangChain app, and the one with measured retrieval quality behind it.
79
+ <b>2 &middot; orchestrate.</b> The LangGraph node, plus a graph-shaped render target in
80
+ <code>core/workflows.py</code> beside the existing per-agent formats.
81
+ <b>3 &middot; observe.</b> LangSmith tracing, and the golden set published as a LangSmith dataset so
82
+ online evals run against the same queries the offline gate uses.
83
+
84
+ <b>One scoping decision shapes phase 1's API</b> and should be settled before it starts: a LangChain
85
+ <i>application</i> pulling skills at runtime is the consumer all three phases serve, whereas a
86
+ LangChain <i>developer</i> who just wants these procedures in their editor is already served by
87
+ <code>boost install</code> with no langchain dependency at all. Phase 1 should be designed for the
88
+ former — a retriever, not an installer — and the docs should point the latter at the CLI so the new
89
+ package does not accumulate a second, redundant install path.
@@ -124,8 +124,8 @@
124
124
  <!-- ROADMAP:stats -->
125
125
  <div class="stat"><b>16</b><span>Shipped</span></div>
126
126
  <div class="stat"><b>1</b><span>Next up</span></div>
127
- <div class="stat"><b>4</b><span>Planned</span></div>
128
- <div class="stat"><b>204</b><span>Loop finds</span></div>
127
+ <div class="stat"><b>5</b><span>Planned</span></div>
128
+ <div class="stat"><b>206</b><span>Loop finds</span></div>
129
129
  <!-- /ROADMAP:stats -->
130
130
  </div>
131
131
  </section>
@@ -618,6 +618,93 @@ message, so routing it through the helper would change user-facing errors.</p></
618
618
  <span class="m">Wow <b class="wow">★★★★</b></span>
619
619
  </div>
620
620
  </article>
621
+
622
+ <article class="cap rcard" id="langchain-langgraph-langsmith-integration">
623
+ <div class="head"><span class="pill planned">Planned</span><span class="cat">Feature</span></div>
624
+ <h3>production-ready LangChain / LangGraph / LangSmith integration</h3>
625
+ <p>Every agent boost supports today is a <b>coding</b> agent that reads files off disk — Claude Code,
626
+ Cursor, Windsurf, Gemini CLI. The catalogue itself is not coding-specific: it is 10,000+ retrievable
627
+ procedures with frontmatter, provenance and a lock file. A LangChain application cannot reach any of
628
+ it, so the same procedure has to be re-written as a prompt string by hand. This item is about making
629
+ the catalogue addressable from a Python agent runtime as well as from a dotfile.
630
+
631
+ <b>Three surfaces, and they are not equally justified.</b>
632
+
633
+ <code>langchain</code> — a <code>BoostRetriever</code> implementing <code>BaseRetriever</code> over
634
+ the engine <code>boost search</code> already uses: BM25 (<code>core/rag.py</code>) fused with
635
+ optional dense retrieval (<code>core/dense.py</code>) through <code>rag.rrf_fuse</code>. The
636
+ retrieval quality is already measured — the required gate floors recall@k, hit@1, MRR and nDCG@k
637
+ against <code>tests/eval/golden.jsonl</code> — so this surface ships with numbers rather than
638
+ claims. Plus a document loader that turns a <code>SKILL.md</code> into prompt content with its
639
+ frontmatter preserved as metadata.
640
+
641
+ <code>langgraph</code> — skills as procedures a graph pulls <i>mid-run</i>: a node that retrieves
642
+ the right skill for the current state and injects it, rather than stuffing every procedure into the
643
+ system prompt. boost's <code>workflow</code> item kind is already the closest thing it has to a
644
+ graph node, and <code>core/workflows.py</code> already renders per-runtime formats
645
+ (<code>TOML_COMMAND_AGENTS</code> for Gemini), so a LangGraph renderer is a new target for existing
646
+ machinery, not a new concept.
647
+
648
+ <code>langsmith</code> — hosted tracing plus datasets/evaluators. boost already has a four-tier
649
+ eval story (Tier 1 BM25 floors, 1b <code>ranx</code> significance, 2a/2b LLM rerank and recommend,
650
+ 2c <code>ragas</code> faithfulness) and a baseline keyed by query-set digest. LangSmith would host
651
+ the golden set and run online evals against real traffic. It must <b>not</b> replace the required
652
+ gate, which is deliberately pure-stdlib BM25 needing no API key — a required check that depends on
653
+ a SaaS account is a required check that fails when someone else's billing lapses.
654
+
655
+ <b>What "production ready" forces, specifically.</b>
656
+
657
+ <b>It cannot be an extra — the Python floor decides it.</b> boost is
658
+ <code>requires-python = "&gt;=3.9"</code> and CI tests 3.9 / 3.12 / 3.14 across Linux, macOS and
659
+ Windows. Measured 2026-08-02: <code>langchain</code> 1.3.14 declares
660
+ <code>&gt;=3.10.0,&lt;4.0.0</code> and <code>langsmith</code> 0.10.15 declares <code>&gt;=3.10</code>. So
661
+ an extra would either fail to resolve on the 3.9 leg or force boost to drop 3.9 for every user,
662
+ including those who never touch LangChain. A separately versioned distribution that depends on
663
+ <code>boost-skill-cli</code> keeps the floor a property of the integration.
664
+
665
+ <b>There is a dependency conflict boost already owns, and it blocks this.</b> The
666
+ <code>[eval]</code> extra pins <code>langchain-core&lt;0.4</code>,
667
+ <code>langchain-community&lt;0.4</code> and <code>langchain-openai&lt;1</code>, because ragas 0.2.x
668
+ hard-imports a <code>ChatVertexAI</code> path that langchain ≥1.0 removed. One environment cannot
669
+ hold both that pin and langchain 1.x. The good news is measured: <b>ragas 0.4.3 declares
670
+ <code>langchain</code>, <code>langchain-core</code>, <code>langchain-community</code> and
671
+ <code>langchain_openai</code> with no upper bound at all</b>, and still supports Python ≥3.9. So the
672
+ first step is small, independently valuable, and testable on its own — move <code>[eval]</code>
673
+ from <code>ragas&gt;=0.2,&lt;0.3</code> to 0.4 and delete the three pins. Nothing else should be built
674
+ until that lands, or the project holds two incompatible langchain majors.
675
+
676
+ <b>The existing rules still apply.</b> Nothing in the integration may be imported by the CLI or by
677
+ the required gate — the discipline <code>[eval]</code> already follows. It must degrade cleanly
678
+ without an API key, the way <code>embed.py</code> falls back Voyage → OpenAI → local
679
+ <code>bge-small-en-v1.5</code>; a key is a quality upgrade, never the entry fee. And it carries its
680
+ own tests without lowering the 80% coverage or 80% mutation floors.
681
+
682
+ <b>Delivery order.</b> Each phase is independently shippable, and phase 0 is worth doing on its own
683
+ merits whatever happens to the rest.
684
+
685
+ <b>0 &middot; unpin.</b> Move <code>[eval]</code> to <code>ragas&gt;=0.4</code> and delete the three
686
+ langchain pins, freeing the langchain major. Contained, testable, no new surface.
687
+ <b>1 &middot; retrieve.</b> A <code>boost-langchain</code> distribution carrying
688
+ <code>BoostRetriever</code> and the <code>SKILL.md</code> loader — the smallest thing that makes the
689
+ catalogue reachable from a LangChain app, and the one with measured retrieval quality behind it.
690
+ <b>2 &middot; orchestrate.</b> The LangGraph node, plus a graph-shaped render target in
691
+ <code>core/workflows.py</code> beside the existing per-agent formats.
692
+ <b>3 &middot; observe.</b> LangSmith tracing, and the golden set published as a LangSmith dataset so
693
+ online evals run against the same queries the offline gate uses.
694
+
695
+ <b>One scoping decision shapes phase 1's API</b> and should be settled before it starts: a LangChain
696
+ <i>application</i> pulling skills at runtime is the consumer all three phases serve, whereas a
697
+ LangChain <i>developer</i> who just wants these procedures in their editor is already served by
698
+ <code>boost install</code> with no langchain dependency at all. Phase 1 should be designed for the
699
+ former — a retriever, not an installer — and the docs should point the latter at the CLI so the new
700
+ package does not accumulate a second, redundant install path.</p>
701
+ <div class="meta">
702
+ <span class="m">Complexity <b>L</b></span>
703
+ <span class="m hi">Impact <b>High</b></span>
704
+ <span class="m">Wow <b class="wow">★★★★</b></span>
705
+ <span class="m">a second consumer class for the catalogue — blocked on one dependency conflict boost already owns</span>
706
+ </div>
707
+ </article>
621
708
  <!-- /ROADMAP:cards -->
622
709
 
623
710
  </div>
@@ -6833,6 +6920,70 @@ here changes that &mdash; only the odds that the next step change is noticed the
6833
6920
  <span class="m">main passes this budget on run-to-run luck — its own three runs are 0.810, 0.840, 0.850</span>
6834
6921
  </div>
6835
6922
  </article>
6923
+
6924
+ <article class="cap rcard" id="langchain-integration-explainer-page">
6925
+ <div class="head"><span class="pill planned">Planned</span><span class="cat">Docs · Interop</span></div>
6926
+ <h3>an explainer page for the LangChain / LangGraph / LangSmith integration</h3>
6927
+ <p>A companion to <b>production-ready LangChain / LangGraph / LangSmith integration</b>: one
6928
+ <code>docs/langchain.html</code> that shows what the integration <i>is</i> — architecture and
6929
+ sequence diagrams, annotated code you can paste, and the reasoning behind each seam — rather than
6930
+ an API list. The audience is a Python engineer deciding whether boost's catalogue is worth wiring
6931
+ into their agent, and that decision is made from a diagram and a twenty-line snippet, not from
6932
+ a reference table.
6933
+
6934
+ <b>The genre already exists here.</b> <code>docs/eval.html</code> does exactly this job for the
6935
+ evaluation system — architecture plus sequence diagrams plus a simple-vs-technical cheat sheet — and
6936
+ it is the template to follow rather than reinvent. So are its mechanics: a page-specific
6937
+ <code>&lt;style&gt;</code> block built <i>only</i> on <code>style/boost.css</code>
6938
+ <code>:root</code> tokens, so the Aurora palette stays recolourable from one file, and diagrams as
6939
+ <b>inline SVG on those same tokens</b> rather than a diagram library. A hardcoded hex in a diagram
6940
+ silently opts that diagram out of every future theme change, and an external script opts the page
6941
+ out of loading at all on a strict CSP.
6942
+
6943
+ <b>What the page has to cover</b>, one section per seam, each with a diagram and a runnable snippet:
6944
+ retrieval (<code>BoostRetriever</code> over the BM25 + dense fusion, with the measured recall@k /
6945
+ hit@1 / MRR / nDCG@k shown as numbers because they exist); a <code>SKILL.md</code> loaded as prompt
6946
+ content with its frontmatter surviving as metadata; a LangGraph graph that pulls a procedure
6947
+ <i>mid-run</i> instead of pre-loading every one into the system prompt; and a LangSmith trace of
6948
+ that graph, next to a plain statement that the required gate stays offline, deterministic and
6949
+ key-free.
6950
+
6951
+ <b>Three constraints that are specific to this repo</b>, all of them cheap to satisfy if known up
6952
+ front and expensive to retrofit:
6953
+
6954
+ <b>No page ships unlinked.</b> <code>tests/unit/test_docsite_chrome.py</code> holds a
6955
+ <code>_PAGES</code> tuple and asserts every page carries the footer and is reachable from all the
6956
+ others. Adding the tenth page therefore means touching the nav and footer of the nine that exist —
6957
+ it is a small edit, but it is not optional and it is not automatic.
6958
+
6959
+ <b>The budget already fits — measured, so nobody has to guess.</b>
6960
+ <code>scripts/page_budget.py</code> allows a hand-written page 150 kB / 2,000 elements / depth 20.
6961
+ Today <code>eval.html</code> is 35.5 kB / 528 elements / depth 10 and <code>mcp-hub.html</code>, the
6962
+ largest hand-written page, is 50.0 kB / 607. A diagram-and-snippet page of this shape lands in the
6963
+ same range, so it needs <b>no</b> new <code>BUDGETS</code> entry — and if it ever does, the entry
6964
+ carries a <code>why</code> string rather than raising the default for every page.
6965
+
6966
+ <b>Accessibility is enforced with numbers, not vibes.</b> The axe-core sweep and
6967
+ <code>scripts/a11y_check.py</code> gate WCAG 2.1 AA, and this genre trips it in a predictable place:
6968
+ a diagram that encodes meaning in colour alone, or a link distinguished only by hue. The precedent
6969
+ is already commented in <code>eval.html</code> — <code>--sky</code> on <code>--text-3</code> is
6970
+ 2.47:1 against the 3:1 that WCAG 1.4.1 requires, so its links carry an underline as the non-colour
6971
+ cue. Diagram legends need the same treatment: shape or label, never colour by itself.
6972
+
6973
+ <b>Sequencing, and the one rule that keeps it honest.</b> The page cannot precede the code — a
6974
+ demonstration of an unbuilt integration is fiction, and a snippet nobody ran is a bug with syntax
6975
+ highlighting. So each section ships with the phase it documents (retrieval with phase 1, the graph
6976
+ with phase 2, the trace with phase 3), and every snippet on the page should be extracted and
6977
+ executed by a test rather than pasted in and trusted. That last part is a new discipline for this
6978
+ docsite, not an existing one; it is worth adopting here first precisely because this page's whole
6979
+ value is that its code runs.</p>
6980
+ <div class="meta">
6981
+ <span class="m">Complexity <b>M</b></span>
6982
+ <span class="m">Impact <b>Med</b></span>
6983
+ <span class="m">Wow <b class="wow">★★★★</b></span>
6984
+ <span class="m">the eval.html genre, pointed at the LangChain stack — and it can only document what has shipped</span>
6985
+ </div>
6986
+ </article>
6836
6987
  <!-- /ROADMAP:cards -->
6837
6988
 
6838
6989
  </div>
@@ -526,12 +526,17 @@ footer .foot-legal { margin-top: 13px; font-size: 12.5px; color: var(--text-3);
526
526
  scrollable rather than truncated. */
527
527
  @media (max-width: 720px) {
528
528
  .site-nav, header .nav {
529
- flex-wrap: wrap; align-items: center; gap: 6px 18px; padding: 8px 0 6px;
529
+ flex-wrap: wrap; align-items: center; gap: 6px 18px; padding: 8px 24px 6px;
530
530
  }
531
531
  .site-nav ul, header .nav ul {
532
532
  width: 100%; flex-wrap: nowrap; gap: 6px;
533
533
  overflow-x: auto; -webkit-overflow-scrolling: touch;
534
534
  scrollbar-width: none; scroll-snap-type: x proximity;
535
+ /* Without this the snapport starts at the scrollport's content edge, so
536
+ the browser scrolls straight past the padding-inline below to satisfy
537
+ scroll-snap-align:start — the strip loads at scrollLeft 24 and clips the
538
+ first link mid-word. Inset the snapport by the same 24px instead. */
539
+ scroll-padding-inline-start: 24px;
535
540
  /* bleed past .wrap's 24px gutter, then pad it back so nothing is clipped */
536
541
  margin-inline: -24px; padding-inline: 24px; padding-bottom: 4px;
537
542
  -webkit-mask-image: linear-gradient(90deg, #000 0 calc(100% - 26px), transparent);