boost-skill-cli 1.0.174__tar.gz → 1.0.176__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 (327) hide show
  1. boost_skill_cli-1.0.176/.htmlvalidate.json +17 -0
  2. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/PKG-INFO +1 -1
  3. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/_version.py +2 -2
  4. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_skill_cli.egg-info/PKG-INFO +1 -1
  5. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_skill_cli.egg-info/SOURCES.txt +3 -0
  6. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/adapters.html +1 -1
  7. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/mcp-hub.html +2 -2
  8. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/html-validation-html-validate.md +3 -3
  9. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/ranx-significance-monitor.md +3 -3
  10. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap.html +2 -2
  11. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/scripts/eval_retrieval.py +4 -3
  12. boost_skill_cli-1.0.176/scripts/eval_stats_summary.py +83 -0
  13. boost_skill_cli-1.0.176/tests/unit/test_eval_stats_summary.py +80 -0
  14. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/.gitattributes +0 -0
  15. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/.gitignore +0 -0
  16. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/.gitleaks.toml +0 -0
  17. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/.pre-commit-config.yaml +0 -0
  18. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/CLAUDE.md +0 -0
  19. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/CONTRIBUTING.md +0 -0
  20. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/LICENSE +0 -0
  21. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/MANIFEST.in +0 -0
  22. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/Makefile +0 -0
  23. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/README.md +0 -0
  24. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/SECURITY.md +0 -0
  25. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost +0 -0
  26. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/__init__.py +0 -0
  27. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/__main__.py +0 -0
  28. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/cli.py +0 -0
  29. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/cliparse.py +0 -0
  30. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/commands/__init__.py +0 -0
  31. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/commands/bmad.py +0 -0
  32. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/commands/configuration.py +0 -0
  33. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/commands/discovery.py +0 -0
  34. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/commands/hooks.py +0 -0
  35. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/commands/info.py +0 -0
  36. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/commands/intelligence.py +0 -0
  37. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/commands/pkg.py +0 -0
  38. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/commands/quality.py +0 -0
  39. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/commands/taps.py +0 -0
  40. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/commands/team.py +0 -0
  41. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/__init__.py +0 -0
  42. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/adapters.py +0 -0
  43. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/agents.py +0 -0
  44. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/ai.py +0 -0
  45. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/catalog.py +0 -0
  46. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/claude_settings.py +0 -0
  47. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/config.py +0 -0
  48. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/dense.py +0 -0
  49. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/embed.py +0 -0
  50. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/frontmatter.py +0 -0
  51. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/gitutil.py +0 -0
  52. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/imperative.py +0 -0
  53. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/injectscan.py +0 -0
  54. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/journal.py +0 -0
  55. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/lockfile.py +0 -0
  56. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/logs.py +0 -0
  57. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/mcp.py +0 -0
  58. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/nethttp.py +0 -0
  59. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/output.py +0 -0
  60. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/paths.py +0 -0
  61. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/policy.py +0 -0
  62. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/rag.py +0 -0
  63. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/registry.py +0 -0
  64. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/rules.py +0 -0
  65. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/secretscan.py +0 -0
  66. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/serve.py +0 -0
  67. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/stackprobe.py +0 -0
  68. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/staleness.py +0 -0
  69. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/store.py +0 -0
  70. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/typosquat.py +0 -0
  71. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/updatediff.py +0 -0
  72. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/util.py +0 -0
  73. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/core/workflows.py +0 -0
  74. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/data/registries.json +0 -0
  75. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/errors.py +0 -0
  76. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_cli/spin.py +0 -0
  77. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  78. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  79. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_skill_cli.egg-info/requires.txt +0 -0
  80. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/boost_skill_cli.egg-info/top_level.txt +0 -0
  81. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/.claude/settings.local.json +0 -0
  82. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/DEBUGGING.md +0 -0
  83. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/commands.html +0 -0
  84. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/demo.gif +0 -0
  85. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/demo.tape +0 -0
  86. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/design-roadmap.html +0 -0
  87. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/eval.html +0 -0
  88. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/index.html +0 -0
  89. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/rag-architecture.md +0 -0
  90. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D01.md +0 -0
  91. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D02.md +0 -0
  92. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D03.md +0 -0
  93. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D04.md +0 -0
  94. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D05.md +0 -0
  95. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D06.md +0 -0
  96. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D07.md +0 -0
  97. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D08.md +0 -0
  98. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D09.md +0 -0
  99. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D10.md +0 -0
  100. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D11.md +0 -0
  101. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D12.md +0 -0
  102. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D13.md +0 -0
  103. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D14.md +0 -0
  104. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D15.md +0 -0
  105. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D16.md +0 -0
  106. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D17.md +0 -0
  107. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D18.md +0 -0
  108. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D19.md +0 -0
  109. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D20.md +0 -0
  110. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D21.md +0 -0
  111. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D22.md +0 -0
  112. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D23.md +0 -0
  113. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D24.md +0 -0
  114. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D25.md +0 -0
  115. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/BOOST-D26.md +0 -0
  116. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  117. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  118. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  119. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  120. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  121. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  122. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  123. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  124. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  125. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  126. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  127. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  128. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  129. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  130. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  131. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  132. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  133. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  134. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  135. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  136. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  137. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  138. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  139. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  140. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  141. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  142. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  143. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  144. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  145. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  146. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  147. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  148. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  149. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  150. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  151. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  152. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  153. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  154. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  155. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  156. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  157. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  158. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  159. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  160. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  161. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  162. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  163. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  164. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  165. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  166. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  167. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  168. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  169. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  170. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  171. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  172. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  173. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  174. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  175. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  176. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  177. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  178. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  179. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  180. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  181. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  182. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  183. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  184. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  185. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  186. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  187. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  188. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  189. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  190. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  191. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  192. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  193. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  194. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  195. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  196. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  197. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  198. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  199. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  200. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  201. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  202. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  203. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  204. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  205. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  206. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  207. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  208. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  209. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  210. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  211. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  212. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  213. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  214. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  215. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  216. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  217. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  218. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  219. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  220. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  221. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/docs/roadmap/items/workspace-scope-install.md +0 -0
  222. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/examples/README.md +0 -0
  223. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/examples/adapt-demo.sh +0 -0
  224. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/examples/boost-run-prototype.sh +0 -0
  225. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/index.html +0 -0
  226. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/noxfile.py +0 -0
  227. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/pyproject.toml +0 -0
  228. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/scripts/bench_cli.sh +0 -0
  229. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/scripts/build_command_reference.py +0 -0
  230. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/scripts/build_registries.py +0 -0
  231. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/scripts/build_roadmap.py +0 -0
  232. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/scripts/ensure_eval_corpus.sh +0 -0
  233. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/scripts/eval_explain.py +0 -0
  234. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/scripts/eval_recommend.py +0 -0
  235. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/scripts/import_budget.py +0 -0
  236. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/scripts/mutation_gate.py +0 -0
  237. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/setup.cfg +0 -0
  238. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/style/README.md +0 -0
  239. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/style/boost.css +0 -0
  240. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/style/boost.js +0 -0
  241. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/style/demo.html +0 -0
  242. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/bdd/features/adapt.feature +0 -0
  243. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/bdd/features/browse.feature +0 -0
  244. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/bdd/features/count.feature +0 -0
  245. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/bdd/features/discover.feature +0 -0
  246. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/bdd/features/doctor.feature +0 -0
  247. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/bdd/features/environment.py +0 -0
  248. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/bdd/features/explain.feature +0 -0
  249. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/bdd/features/index.feature +0 -0
  250. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/bdd/features/install.feature +0 -0
  251. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/bdd/features/list.feature +0 -0
  252. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/bdd/features/mcp.feature +0 -0
  253. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/bdd/features/search.feature +0 -0
  254. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/bdd/features/steps/cli_steps.py +0 -0
  255. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/bdd/features/steps/discovery_steps.py +0 -0
  256. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/bdd/features/steps/mcp_steps.py +0 -0
  257. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/bdd/features/steps/quality_steps.py +0 -0
  258. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/conftest.py +0 -0
  259. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/eval/baseline.json +0 -0
  260. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/eval/explain.jsonl +0 -0
  261. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/eval/golden.jsonl +0 -0
  262. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/eval/recommend.jsonl +0 -0
  263. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/eval/taps.txt +0 -0
  264. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/functional/test_cli_adapt.py +0 -0
  265. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/functional/test_cli_bmad.py +0 -0
  266. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/functional/test_cli_configuration.py +0 -0
  267. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/functional/test_cli_discovery.py +0 -0
  268. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/functional/test_cli_hooks.py +0 -0
  269. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/functional/test_cli_info.py +0 -0
  270. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/functional/test_cli_intelligence.py +0 -0
  271. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/functional/test_cli_pkg.py +0 -0
  272. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/functional/test_cli_quality.py +0 -0
  273. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/functional/test_cli_taps.py +0 -0
  274. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/functional/test_cli_team.py +0 -0
  275. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/functional/test_everyday_loop.py +0 -0
  276. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/functional/test_property_parsers.py +0 -0
  277. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/make_fixture.py +0 -0
  278. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/perf/test_benchmarks.py +0 -0
  279. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/smoke.sh +0 -0
  280. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_adapters.py +0 -0
  281. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_agents.py +0 -0
  282. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_ai.py +0 -0
  283. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_catalog.py +0 -0
  284. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_claude_settings.py +0 -0
  285. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_cliparse.py +0 -0
  286. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_command_reference_fresh.py +0 -0
  287. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_config.py +0 -0
  288. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_dense.py +0 -0
  289. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_dense_fallback.py +0 -0
  290. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_docs_pages_linked.py +0 -0
  291. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_embed.py +0 -0
  292. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_errors_and_cli_table.py +0 -0
  293. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_frontmatter.py +0 -0
  294. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_gitleaks_config.py +0 -0
  295. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_gitutil.py +0 -0
  296. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_imperative.py +0 -0
  297. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_import_budget.py +0 -0
  298. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_injectscan.py +0 -0
  299. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_journal.py +0 -0
  300. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_lockfile.py +0 -0
  301. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_logs.py +0 -0
  302. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_mcp.py +0 -0
  303. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_mutation_hardening.py +0 -0
  304. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_nethttp.py +0 -0
  305. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_output.py +0 -0
  306. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_paths.py +0 -0
  307. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_pkg_confusions.py +0 -0
  308. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_pkg_injection.py +0 -0
  309. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_pkg_secrets.py +0 -0
  310. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_policy.py +0 -0
  311. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_rag.py +0 -0
  312. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_registries_fresh.py +0 -0
  313. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_registry.py +0 -0
  314. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_roadmap_fresh.py +0 -0
  315. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_rules.py +0 -0
  316. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_secretscan.py +0 -0
  317. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_serve.py +0 -0
  318. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_spin.py +0 -0
  319. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_stackprobe.py +0 -0
  320. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_staleness.py +0 -0
  321. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_store.py +0 -0
  322. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_token_parity.py +0 -0
  323. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_typosquat.py +0 -0
  324. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_updatediff.py +0 -0
  325. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_util.py +0 -0
  326. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_version.py +0 -0
  327. {boost_skill_cli-1.0.174 → boost_skill_cli-1.0.176}/tests/unit/test_workflows.py +0 -0
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "https://html-validate.org/schemas/config.json",
3
+ "extends": ["html-validate:recommended"],
4
+ "rules": {
5
+ "no-inline-style": "off",
6
+ "doctype-style": "off",
7
+ "void-style": "off",
8
+ "no-trailing-whitespace": "off",
9
+ "attr-quotes": "off",
10
+ "prefer-tbody": "off",
11
+ "long-title": "off",
12
+ "svg-focusable": "off",
13
+ "wcag/h37": "off",
14
+ "wcag/h63": "off",
15
+ "no-implicit-button-type": "off"
16
+ }
17
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.174
3
+ Version: 1.0.176
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.174'
22
- __version_tuple__ = version_tuple = (1, 0, 174)
21
+ __version__ = version = '1.0.176'
22
+ __version_tuple__ = version_tuple = (1, 0, 176)
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.174
3
+ Version: 1.0.176
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -1,6 +1,7 @@
1
1
  .gitattributes
2
2
  .gitignore
3
3
  .gitleaks.toml
4
+ .htmlvalidate.json
4
5
  .pre-commit-config.yaml
5
6
  CLAUDE.md
6
7
  CONTRIBUTING.md
@@ -229,6 +230,7 @@ scripts/ensure_eval_corpus.sh
229
230
  scripts/eval_explain.py
230
231
  scripts/eval_recommend.py
231
232
  scripts/eval_retrieval.py
233
+ scripts/eval_stats_summary.py
232
234
  scripts/import_budget.py
233
235
  scripts/mutation_gate.py
234
236
  style/README.md
@@ -286,6 +288,7 @@ tests/unit/test_dense_fallback.py
286
288
  tests/unit/test_docs_pages_linked.py
287
289
  tests/unit/test_embed.py
288
290
  tests/unit/test_errors_and_cli_table.py
291
+ tests/unit/test_eval_stats_summary.py
289
292
  tests/unit/test_frontmatter.py
290
293
  tests/unit/test_gitleaks_config.py
291
294
  tests/unit/test_gitutil.py
@@ -311,7 +311,7 @@ code_reviewer = <span class="fn">Agent</span>(
311
311
  boost adapt code-reviewer --to crewai -o reviewer.py
312
312
 
313
313
  <span class="c"># 2 — in a throwaway venv, install the framework and load it</span>
314
- python3 -m venv /tmp/crew && /tmp/crew/bin/pip install <span class="s">"crewai[anthropic]"</span>
314
+ python3 -m venv /tmp/crew &amp;&amp; /tmp/crew/bin/pip install <span class="s">"crewai[anthropic]"</span>
315
315
  /tmp/crew/bin/python -c <span class="s">"import reviewer; print(reviewer.code_reviewer.role, reviewer.code_reviewer.llm.model)"</span>
316
316
  <span class="c"># → code-reviewer claude-haiku-4-5-20251001 ✦ imported, instantiated, on boost's model</span></pre>
317
317
  <p class="sec-sub" style="margin-top:22px"><b>Runs on boost's model by default.</b> With no
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <title>boost — RAG retrieval & the MCP hub (Phases 1–3)</title>
6
+ <title>boost — RAG retrieval &amp; the MCP hub (Phases 1–3)</title>
7
7
  <meta name="description" content="How boost's MCP tool layer became an extensible registry: architecture, sequence diagrams, and a simple-vs-deep cheat sheet for the Phase-3 hub and its first reach-out tool, boost_discover_github.">
8
8
  <link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Crect width='100' height='100' rx='20' fill='%2307080f'/%3E%3Ctext x='50' y='70' font-size='58' font-family='monospace' font-weight='bold' fill='%2322d3ee' text-anchor='middle'%3E%E2%9C%A6%3C/text%3E%3C/svg%3E">
9
9
  <!-- Shared Aurora design system. Recolour everything by editing style/boost.css. -->
@@ -701,7 +701,7 @@ _MCP_TOOLS = REGISTRY.specs() <span class="cm"># list stays in sync</span>
701
701
  <div class="window reveal" style="margin-top:36px;">
702
702
  <div class="bar"><div class="dots"><i></i><i></i><i></i></div>
703
703
  <div class="bar-title">your_new_tool.py</div></div>
704
- <pre><span class="tv">def</span> _tool_x(args): <span class="cm"># fn(args) -> (text, is_error)</span>
704
+ <pre><span class="tv">def</span> _tool_x(args): <span class="cm"># fn(args) -&gt; (text, is_error)</span>
705
705
  <span class="tv">if</span> <span class="tv">not</span> _dependency_available():
706
706
  <span class="tv">return</span> <span class="tok">"needs &lt;dep&gt; — here's how to get it"</span>, <span class="tv">True</span> <span class="cm"># degrade</span>
707
707
  <span class="tv">return</span> _do_the_work(args), <span class="tv">False</span>
@@ -2,15 +2,15 @@
2
2
  id: html-validation-html-validate
3
3
  board: code
4
4
  section: docsite
5
- status: planned
5
+ status: shipped
6
6
  category: Quality · Docs
7
7
  complexity: S
8
8
  impact: Med
9
9
  wow: 3
10
10
  note: hand-authored HTML
11
11
  order: 4
12
- owner:
13
- pr:
12
+ owner: loop/htmlvalidate
13
+ pr: 199
14
14
  title: HTML validation — <code>html-validate</code>
15
15
  ---
16
16
  The guide and roadmap are hand-authored HTML whose tags are balanced by
@@ -2,15 +2,15 @@
2
2
  id: ranx-significance-monitor
3
3
  board: code
4
4
  section: health
5
- status: planned
5
+ status: shipped
6
6
  category: Quality · Retrieval eval
7
7
  complexity: S
8
8
  impact: Med
9
9
  wow: 3
10
10
  note: p-value, not point delta
11
11
  order: 5
12
- owner:
13
- pr:
12
+ owner: loop/evalstats
13
+ pr: 198
14
14
  title: Significance-tracked engine comparison (ranx monitor)
15
15
  ---
16
16
  Tier 1b (the <code>ranx</code> paired t-test, <code>--stats</code>) only runs on
@@ -1019,7 +1019,7 @@ harness.</p>
1019
1019
  </article>
1020
1020
 
1021
1021
  <article class="cap rcard">
1022
- <div class="head"><span class="pill planned">Planned</span><span class="cat">Quality · Retrieval eval</span></div>
1022
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Retrieval eval</span></div>
1023
1023
  <h3>Significance-tracked engine comparison (ranx monitor)</h3>
1024
1024
  <p>Tier 1b (the <code>ranx</code> paired t-test, <code>--stats</code>) only runs on
1025
1025
  demand today. Wire it into a scheduled CI monitor — like the
@@ -1557,7 +1557,7 @@ and the work stays visible.</p>
1557
1557
  </article>
1558
1558
 
1559
1559
  <article class="cap rcard">
1560
- <div class="head"><span class="pill planned">Planned</span><span class="cat">Quality · Docs</span></div>
1560
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Quality · Docs</span></div>
1561
1561
  <h3>HTML validation — <code>html-validate</code></h3>
1562
1562
  <p>The guide and roadmap are hand-authored HTML whose tags are balanced by
1563
1563
  eye today. A CI <code>html-validate</code> pass catches unclosed
@@ -18,9 +18,10 @@ the math, this asks "does the right skill actually come back for a real question
18
18
 
19
19
  Tier 1b (opt-in, offline): --stats runs a paired Student's t-test between the
20
20
  engines with `ranx`, so a metric gap is reported as statistically *significant*
21
- or not — a raw 0.919-vs-0.756 number can't say whether an engine is genuinely
22
- better or just luckier on 43 queries. Needs the [eval] extra; degrades cleanly
23
- if `ranx` is absent (never a core dependency).
21
+ or not — a raw recall-vs-recall number can't say whether an engine is genuinely
22
+ better or just luckier on the golden set. Needs the [eval] extra; degrades
23
+ cleanly if `ranx` is absent (never a core dependency). A scheduled CI monitor
24
+ (.github/workflows/eval-stats.yml) runs this and reports each metric's p-value.
24
25
 
25
26
  Tier 2a (LLM, opt-in, key-gated): --rerank measures the *lift* the LLM rerank
26
27
  stage (rag.rerank) adds over the raw BM25 order on the same golden set — no
@@ -0,0 +1,83 @@
1
+ #!/usr/bin/env python3
2
+ """Render the `--stats --json` significance payload as a Markdown summary.
3
+
4
+ Turns the ranx paired t-test output from ``eval_retrieval.py --stats --json``
5
+ into a GitHub-Step-Summary table: for the best engine vs each other engine, is
6
+ each metric's lead statistically significant (p < 0.05) or just noise. Kept
7
+ separate from the workflow YAML so it is unit-testable (tests/unit) and so the
8
+ significance-reading logic lives in one place.
9
+
10
+ Usage:
11
+ python3 scripts/eval_stats_summary.py stats.json # prints Markdown to stdout
12
+ """
13
+ from __future__ import annotations
14
+
15
+ import json
16
+ import sys
17
+ from typing import Optional
18
+
19
+ ALPHA = 0.05
20
+ HEADER = "### Tier 1b — retrieval significance (ranx paired t-test)\n"
21
+
22
+
23
+ def _load(path: str) -> Optional[dict]:
24
+ try:
25
+ with open(path, encoding="utf-8") as fh:
26
+ return json.load(fh)
27
+ except (OSError, ValueError):
28
+ return None
29
+
30
+
31
+ def render(payload: Optional[dict]) -> str:
32
+ """Markdown for a `--stats --json` payload (or a graceful skip note)."""
33
+ sig = (payload or {}).get("significance")
34
+ if not sig:
35
+ return (HEADER + "\n_skipped_ — no significance data "
36
+ "(the `[eval]` extra / `ranx` was unavailable, or fewer than "
37
+ "two engines ran).\n")
38
+
39
+ models = sig.get("model_names", [])
40
+ metrics = sig.get("metrics", [])
41
+ if len(models) < 2 or not metrics:
42
+ return HEADER + "\n_only one engine ran — nothing to compare._\n"
43
+
44
+ # The best engine is the last row of the comparison (engines are ordered
45
+ # worst→best upstream); every other engine carries the p-values of the best
46
+ # engine's lead over it in its `comparisons` block.
47
+ best = models[-1]
48
+ lines = [HEADER, "", "Best engine: **%s** (α = %.2f).\n" % (best, ALPHA)]
49
+ lines.append("| vs | " + " | ".join(metrics) + " |")
50
+ lines.append("|---|" + "|".join(["---"] * len(metrics)) + "|")
51
+
52
+ n_sig = 0
53
+ for other in models[:-1]:
54
+ comps = sig.get(other, {}).get("comparisons", {}).get(best, {})
55
+ cells = []
56
+ for m in metrics:
57
+ p = comps.get(m)
58
+ if p is None:
59
+ cells.append("—")
60
+ elif p < ALPHA:
61
+ cells.append("✅ p=%.4f" % p)
62
+ n_sig += 1
63
+ else:
64
+ cells.append("· p=%.4f" % p)
65
+ lines.append("| %s | %s |" % (other, " | ".join(cells)))
66
+
67
+ lines.append("")
68
+ lines.append("_✅ = %s beats that engine on the metric with p < %.2f "
69
+ "(a statistically real lead, not just a higher number)._"
70
+ % (best, ALPHA))
71
+ lines.append("\n%d of the compared metrics reach significance." % n_sig)
72
+ return "\n".join(lines) + "\n"
73
+
74
+
75
+ def main(argv: Optional[list] = None) -> int:
76
+ args = list(sys.argv[1:] if argv is None else argv)
77
+ path = args[0] if args else "stats.json"
78
+ sys.stdout.write(render(_load(path)))
79
+ return 0
80
+
81
+
82
+ if __name__ == "__main__":
83
+ raise SystemExit(main())
@@ -0,0 +1,80 @@
1
+ """Unit tests for scripts/eval_stats_summary.py — the significance summary."""
2
+ from __future__ import annotations
3
+
4
+ import importlib.util
5
+ import json
6
+ from pathlib import Path
7
+
8
+ import pytest
9
+
10
+ _SCRIPT = Path(__file__).resolve().parents[2] / "scripts" / "eval_stats_summary.py"
11
+
12
+ _skip = pytest.mark.skipif(not _SCRIPT.exists(), reason="script not reachable")
13
+
14
+
15
+ def _mod():
16
+ spec = importlib.util.spec_from_file_location("eval_stats_summary", _SCRIPT)
17
+ assert spec and spec.loader
18
+ module = importlib.util.module_from_spec(spec)
19
+ spec.loader.exec_module(module)
20
+ return module
21
+
22
+
23
+ _PAYLOAD = {
24
+ "significance": {
25
+ "stat_test": "student",
26
+ "metrics": ["recall@10", "mrr"],
27
+ "model_names": ["catalog.search", "BM25 full-content"],
28
+ "catalog.search": {
29
+ "comparisons": {
30
+ "BM25 full-content": {"recall@10": 0.0047, "mrr": 0.20},
31
+ },
32
+ },
33
+ "BM25 full-content": {"comparisons": {}},
34
+ }
35
+ }
36
+
37
+
38
+ @_skip
39
+ def test_significant_metric_marked_and_counted():
40
+ md = _mod().render(_PAYLOAD)
41
+ assert "Best engine: **BM25 full-content**" in md
42
+ assert "✅ p=0.0047" in md # recall@10 is significant
43
+ assert "· p=0.2000" in md # mrr is not
44
+ assert "1 of the compared metrics reach significance." in md
45
+
46
+
47
+ @_skip
48
+ def test_missing_significance_is_a_graceful_skip():
49
+ md = _mod().render({"k": 10})
50
+ assert "_skipped_" in md
51
+ assert "ranx" in md
52
+
53
+
54
+ @_skip
55
+ def test_none_payload_does_not_crash():
56
+ md = _mod().render(None)
57
+ assert "skipped" in md.lower()
58
+
59
+
60
+ @_skip
61
+ def test_single_engine_has_nothing_to_compare():
62
+ md = _mod().render({"significance": {
63
+ "metrics": ["recall@10"], "model_names": ["only-one"]}})
64
+ assert "nothing to compare" in md
65
+
66
+
67
+ @_skip
68
+ def test_main_reads_file_and_prints(tmp_path, capsys):
69
+ p = tmp_path / "stats.json"
70
+ p.write_text(json.dumps(_PAYLOAD), encoding="utf-8")
71
+ rc = _mod().main([str(p)])
72
+ assert rc == 0
73
+ assert "✅ p=0.0047" in capsys.readouterr().out
74
+
75
+
76
+ @_skip
77
+ def test_main_on_missing_file_is_graceful(capsys):
78
+ rc = _mod().main(["/no/such/stats.json"])
79
+ assert rc == 0
80
+ assert "skipped" in capsys.readouterr().out.lower()