boost-skill-cli 1.0.359__tar.gz → 1.0.360__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 (601) hide show
  1. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/PKG-INFO +1 -1
  2. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/_version.py +2 -2
  3. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_skill_cli.egg-info/PKG-INFO +1 -1
  4. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/golden-set-grades-by-name-not-by-skill.md +23 -2
  5. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap.html +24 -2
  6. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/eval_retrieval.py +59 -0
  7. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/eval/golden-natural.jsonl +49 -29
  8. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_eval_grading.py +45 -0
  9. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/.gitattributes +0 -0
  10. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/.gitignore +0 -0
  11. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/.gitleaks.toml +0 -0
  12. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/.htmlvalidate.json +0 -0
  13. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/.lighthouserc.json +0 -0
  14. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/.lycheeignore +0 -0
  15. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/.markdownlint-cli2.jsonc +0 -0
  16. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/.pre-commit-config.yaml +0 -0
  17. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/.stylelintrc.json +0 -0
  18. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/.vale/styles/boost/Terminology.yml +0 -0
  19. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  20. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/.vale.ini +0 -0
  21. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/CLAUDE.md +0 -0
  22. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/CODE_OF_CONDUCT.md +0 -0
  23. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/CONTRIBUTING.md +0 -0
  24. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/LICENSE +0 -0
  25. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/MANIFEST.in +0 -0
  26. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/Makefile +0 -0
  27. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/README.md +0 -0
  28. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/SECURITY.md +0 -0
  29. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost +0 -0
  30. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/__init__.py +0 -0
  31. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/__main__.py +0 -0
  32. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/cli.py +0 -0
  33. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/cliparse.py +0 -0
  34. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/commands/__init__.py +0 -0
  35. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/commands/_common.py +0 -0
  36. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/commands/bmad.py +0 -0
  37. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/commands/configuration.py +0 -0
  38. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/commands/discovery.py +0 -0
  39. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/commands/hooks.py +0 -0
  40. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/commands/info.py +0 -0
  41. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/commands/intelligence.py +0 -0
  42. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/commands/pkg.py +0 -0
  43. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/commands/quality.py +0 -0
  44. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/commands/run.py +0 -0
  45. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/commands/safety.py +0 -0
  46. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/commands/taps.py +0 -0
  47. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/commands/team.py +0 -0
  48. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/__init__.py +0 -0
  49. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/adapters.py +0 -0
  50. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/agents.py +0 -0
  51. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/ai.py +0 -0
  52. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/capabilities.py +0 -0
  53. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/catalog.py +0 -0
  54. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/chat.py +0 -0
  55. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/claude_settings.py +0 -0
  56. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/complete.py +0 -0
  57. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/config.py +0 -0
  58. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/dense.py +0 -0
  59. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/ed25519.py +0 -0
  60. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/embed.py +0 -0
  61. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/faithfulness.py +0 -0
  62. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/frontmatter.py +0 -0
  63. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/gitutil.py +0 -0
  64. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/imperative.py +0 -0
  65. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/injectscan.py +0 -0
  66. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/installscan.py +0 -0
  67. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/integrity.py +0 -0
  68. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/journal.py +0 -0
  69. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/localembed.py +0 -0
  70. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/lockfile.py +0 -0
  71. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/logs.py +0 -0
  72. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/mcp.py +0 -0
  73. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/mcpdecl.py +0 -0
  74. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/mcphost.py +0 -0
  75. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/minisign.py +0 -0
  76. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/nethttp.py +0 -0
  77. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/output.py +0 -0
  78. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/paths.py +0 -0
  79. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/policy.py +0 -0
  80. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/projectlock.py +0 -0
  81. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/provenance.py +0 -0
  82. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/rag.py +0 -0
  83. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/registry.py +0 -0
  84. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/resolve.py +0 -0
  85. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/rules.py +0 -0
  86. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/scopes.py +0 -0
  87. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/secretscan.py +0 -0
  88. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/selfupdate.py +0 -0
  89. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/serve.py +0 -0
  90. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/stackprobe.py +0 -0
  91. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/staleness.py +0 -0
  92. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/store.py +0 -0
  93. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/trustaudit.py +0 -0
  94. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/typosquat.py +0 -0
  95. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/updatediff.py +0 -0
  96. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/util.py +0 -0
  97. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/core/workflows.py +0 -0
  98. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/data/registries.json +0 -0
  99. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/errors.py +0 -0
  100. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_cli/spin.py +0 -0
  101. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
  102. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  103. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  104. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_skill_cli.egg-info/requires.txt +0 -0
  105. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/boost_skill_cli.egg-info/top_level.txt +0 -0
  106. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/codecov.yml +0 -0
  107. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/.claude/settings.local.json +0 -0
  108. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/DEBUGGING.md +0 -0
  109. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/adapters.html +0 -0
  110. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/architecture/README.md +0 -0
  111. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/architecture/c4-components-core.md +0 -0
  112. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/architecture/c4-containers.md +0 -0
  113. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/architecture/c4-context.md +0 -0
  114. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/architecture/c4-dynamic-install.md +0 -0
  115. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/carousel/gifs/distill.gif +0 -0
  116. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/carousel/gifs/doctor.gif +0 -0
  117. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/carousel/gifs/explain.gif +0 -0
  118. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/carousel/gifs/hooks.gif +0 -0
  119. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/carousel/gifs/install.gif +0 -0
  120. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/carousel/gifs/pulse.gif +0 -0
  121. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/carousel/gifs/search.gif +0 -0
  122. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/carousel/gifs/tap.gif +0 -0
  123. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/carousel/tapes/distill.tape +0 -0
  124. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/carousel/tapes/doctor.tape +0 -0
  125. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/carousel/tapes/explain.tape +0 -0
  126. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/carousel/tapes/hooks.tape +0 -0
  127. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/carousel/tapes/install.tape +0 -0
  128. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/carousel/tapes/pulse.tape +0 -0
  129. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/carousel/tapes/search.tape +0 -0
  130. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/carousel/tapes/tap.tape +0 -0
  131. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/carousel.html +0 -0
  132. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/chat.html +0 -0
  133. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/commands.html +0 -0
  134. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/demo-index.json +0 -0
  135. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/demo.gif +0 -0
  136. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/demo.html +0 -0
  137. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/demo.tape +0 -0
  138. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/design-roadmap.html +0 -0
  139. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/eval.html +0 -0
  140. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/index.html +0 -0
  141. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/mcp-hub.html +0 -0
  142. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/rag-architecture.md +0 -0
  143. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D01.md +0 -0
  144. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D02.md +0 -0
  145. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D03.md +0 -0
  146. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D04.md +0 -0
  147. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D05.md +0 -0
  148. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D06.md +0 -0
  149. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D07.md +0 -0
  150. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D08.md +0 -0
  151. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D09.md +0 -0
  152. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D10.md +0 -0
  153. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D11.md +0 -0
  154. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D12.md +0 -0
  155. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D13.md +0 -0
  156. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D14.md +0 -0
  157. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D15.md +0 -0
  158. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D16.md +0 -0
  159. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D17.md +0 -0
  160. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D18.md +0 -0
  161. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D19.md +0 -0
  162. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D20.md +0 -0
  163. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D21.md +0 -0
  164. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D22.md +0 -0
  165. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D23.md +0 -0
  166. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D24.md +0 -0
  167. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D25.md +0 -0
  168. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/BOOST-D26.md +0 -0
  169. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/a11y-sweep-flakes-on-color-contrast.md +0 -0
  170. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  171. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/actionlint-skips-shellcheck-silently.md +0 -0
  172. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/adapter-conformance-langgraph-leg-never-ran.md +0 -0
  173. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/ai-bridge-silent-failure-logging.md +0 -0
  174. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/ambiguous-tap-short-name-resolution.md +0 -0
  175. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  176. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  177. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  178. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/bm25-index-is-one-json-blob.md +0 -0
  179. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  180. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  181. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  182. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  183. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  184. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  185. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  186. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/chat-command-grounded-conversational-search.md +0 -0
  187. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/ci-job-timeout-minutes.md +0 -0
  188. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/ci-summary-step-fails-itself.md +0 -0
  189. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/ci-time-is-now-runner-queueing.md +0 -0
  190. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  191. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/code-scanning-rule-can-be-restored.md +0 -0
  192. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/codeql-job-rename-stranded-merge-protection.md +0 -0
  193. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/command-carousel-page.md +0 -0
  194. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  195. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/completions-complete-only-command-names.md +0 -0
  196. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  197. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  198. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  199. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  200. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/crash-listing-branch-untested.md +0 -0
  201. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  202. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/demo-cannot-open-its-own-pr.md +0 -0
  203. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/demo-gif-workflow-has-never-succeeded.md +0 -0
  204. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/dense-search-fallback-and-stale-tap-pruning.md +0 -0
  205. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/dependabot-missing-pip-ecosystem.md +0 -0
  206. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/dependabot-regeneration-drops-platform-pins.md +0 -0
  207. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/dependabot-root-pip-entry-duplicates-requirements.md +0 -0
  208. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  209. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/docsite-chrome-and-content-audit.md +0 -0
  210. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  211. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  212. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  213. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/eval-corpus-cannot-see-real-retrieval.md +0 -0
  214. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/eval-corpus-is-96x-smaller-than-a-real-install.md +0 -0
  215. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/eval-corpus-was-not-actually-pinned.md +0 -0
  216. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/eval-deduped-ranked-lists-by-name.md +0 -0
  217. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  218. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  219. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  220. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  221. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  222. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  223. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  224. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  225. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  226. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/gemini-cli-agent-target.md +0 -0
  227. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/github-community-health-files.md +0 -0
  228. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  229. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  230. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  231. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  232. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/install-docs-never-mentioned-upgrading.md +0 -0
  233. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/install-from-path-bypasses-policy-and-pin-checks.md +0 -0
  234. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/install-resolves-skill-dependencies.md +0 -0
  235. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  236. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/installed-skill-trust-audit.md +0 -0
  237. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  238. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/internal-architecture-diagrams.md +0 -0
  239. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  240. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/journal-rotation-race-and-handle-leak.md +0 -0
  241. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/keyless-dense-tier-local-static-embeddings.md +0 -0
  242. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/keyless-semantic-search-for-everyone.md +0 -0
  243. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  244. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/license-compliance-scanning.md +0 -0
  245. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  246. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/lint-tap-misscopes-rule-workflow-entries.md +0 -0
  247. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  248. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  249. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/lock-invariant-cannot-parse-extras-pins.md +0 -0
  250. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  251. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  252. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  253. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/main-has-no-branch-protection.md +0 -0
  254. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/main-ruleset-ref-pattern-has-literal-quotes.md +0 -0
  255. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/make-lint-masks-actionlint-failures.md +0 -0
  256. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  257. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  258. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/markdownlint-lints-the-fuzz-corpus.md +0 -0
  259. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/mcp-aware-skills.md +0 -0
  260. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/mcp-check-skills-before-starting-a-task.md +0 -0
  261. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  262. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/mcp-install-skips-the-injection-scan.md +0 -0
  263. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  264. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/mcp-one-benefit-nameable-task.md +0 -0
  265. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  266. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/mcp-search-before-reinventing.md +0 -0
  267. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/mcp-search-cost-was-understated.md +0 -0
  268. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/mcp-servers-ignore-install-scope.md +0 -0
  269. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  270. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  271. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/merge-queue-would-deadlock-most-required-checks.md +0 -0
  272. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/merged-loop-branches-are-never-pruned.md +0 -0
  273. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  274. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/mutation-gate-was-the-whole-critical-path.md +0 -0
  275. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  276. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  277. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  278. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/mutation-shard-floor-is-one-file.md +0 -0
  279. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/mypy-strict-mode-for-commands.md +0 -0
  280. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/near-duplicate-items-eat-the-result-slots.md +0 -0
  281. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/negative-limit-inverts-log-pulse-output.md +0 -0
  282. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/onboard-overwrites-generated-files-without-confirm.md +0 -0
  283. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  284. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/one-commit-can-cut-two-releases.md +0 -0
  285. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  286. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  287. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  288. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/path-traversal-unsanitized-rule-workflow-name.md +0 -0
  289. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  290. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/pin-the-lint-toolchain.md +0 -0
  291. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/post-deploy-always-defeated-by-skipped-setup.md +0 -0
  292. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  293. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  294. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/prerequisites-and-semantic-search-setup.md +0 -0
  295. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/project-scope-across-every-command.md +0 -0
  296. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/project-scope-symlink-escape-on-write.md +0 -0
  297. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  298. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  299. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  300. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  301. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  302. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/publish-gate-ignores-pip-audit-and-metadata.md +0 -0
  303. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/publish-trigger-was-reachable-from-a-fork.md +0 -0
  304. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/pytest-tmpdir-cve-blocked-by-py39-floor.md +0 -0
  305. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  306. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  307. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  308. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  309. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/rel-time-tests-race-the-wall-clock.md +0 -0
  310. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/release-verifies-the-wrong-commit.md +0 -0
  311. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/required-checks-can-declare-a-check-that-deadlocks-prs.md +0 -0
  312. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/required-checks-config-drift.md +0 -0
  313. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/resolve-vendored-duplicate-copies.md +0 -0
  314. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  315. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  316. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/roadmap-html-goes-stale-on-every-rebase.md +0 -0
  317. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/roadmap-page-weight-grows-without-bound.md +0 -0
  318. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  319. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/ruff-016-widens-the-default-rule-set.md +0 -0
  320. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  321. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  322. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  323. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  324. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/sbom-declares-the-wrong-version.md +0 -0
  325. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  326. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/sbom-release-event-never-fires.md +0 -0
  327. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  328. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/scheduled-toolchain-lock-regeneration.md +0 -0
  329. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/scorecard-findings-triage.md +0 -0
  330. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  331. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  332. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  333. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  334. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/self-update-broken-for-pip-pipx-installs.md +0 -0
  335. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/serve-py-traversal-guards-untested.md +0 -0
  336. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  337. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  338. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  339. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  340. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  341. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  342. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/structured-json-log-output-mode.md +0 -0
  343. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  344. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  345. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/sync-deletes-unowned-broken-symlinks.md +0 -0
  346. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/sync-relinks-into-every-agent-ignoring-scope.md +0 -0
  347. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  348. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  349. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  350. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  351. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  352. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/uninstall-has-no-confirmation-prompt.md +0 -0
  353. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  354. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  355. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  356. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/update-reinstall-widens-agent-scope.md +0 -0
  357. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  358. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  359. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  360. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/wire-bdd-suite-into-ci.md +0 -0
  361. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  362. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  363. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  364. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/workspace-scope-install.md +0 -0
  365. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/docs/roadmap/items/zizmor-pin-is-a-yanked-release.md +0 -0
  366. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/eslint.config.mjs +0 -0
  367. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/evals/README.md +0 -0
  368. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/evals/__init__.py +0 -0
  369. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/evals/baseline.json +0 -0
  370. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/evals/faithfulness.py +0 -0
  371. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/evals/golden_set.json +0 -0
  372. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/evals/make_corpus.py +0 -0
  373. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/evals/make_golden.py +0 -0
  374. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/evals/metrics.py +0 -0
  375. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/evals/run_evals.py +0 -0
  376. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/examples/README.md +0 -0
  377. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/examples/adapt-demo.sh +0 -0
  378. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/examples/boost-run-prototype.sh +0 -0
  379. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/index.html +0 -0
  380. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/noxfile.py +0 -0
  381. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/pyproject.toml +0 -0
  382. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/requirements/coverage-tools.in +0 -0
  383. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/requirements/coverage-tools.txt +0 -0
  384. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/requirements/lint-tools.in +0 -0
  385. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/requirements/lint-tools.txt +0 -0
  386. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/requirements/mutation-tools.in +0 -0
  387. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/requirements/mutation-tools.txt +0 -0
  388. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/requirements/platform-pins.lock +0 -0
  389. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/requirements/release-tools.in +0 -0
  390. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/requirements/release-tools.txt +0 -0
  391. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/requirements/test-tools.in +0 -0
  392. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/requirements/test-tools.txt +0 -0
  393. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/a11y_check.py +0 -0
  394. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/bench_cli.sh +0 -0
  395. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/build_command_reference.py +0 -0
  396. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/build_demo_index.py +0 -0
  397. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/build_registries.py +0 -0
  398. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/build_roadmap.py +0 -0
  399. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/check_anchors.py +0 -0
  400. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/check_licenses.py +0 -0
  401. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/check_required_checks.py +0 -0
  402. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/ensure_eval_corpus.sh +0 -0
  403. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/eval_corpus.py +0 -0
  404. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/eval_explain.py +0 -0
  405. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/eval_gate.py +0 -0
  406. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/eval_recommend.py +0 -0
  407. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/eval_stats_summary.py +0 -0
  408. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/import_budget.py +0 -0
  409. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/lock_toolchain.py +0 -0
  410. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/mutation_gate.py +0 -0
  411. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/mutation_shards.py +0 -0
  412. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/mutation_weights.json +0 -0
  413. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/perf_gate.py +0 -0
  414. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/post_deploy_smoke.py +0 -0
  415. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/release_guard.py +0 -0
  416. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/scripts/release_preflight.py +0 -0
  417. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/setup.cfg +0 -0
  418. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/sonar-project.properties +0 -0
  419. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/style/README.md +0 -0
  420. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/style/boost.css +0 -0
  421. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/style/boost.js +0 -0
  422. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/style/demo.html +0 -0
  423. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/bdd/features/adapt.feature +0 -0
  424. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/bdd/features/browse.feature +0 -0
  425. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/bdd/features/count.feature +0 -0
  426. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/bdd/features/discover.feature +0 -0
  427. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/bdd/features/doctor.feature +0 -0
  428. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/bdd/features/environment.py +0 -0
  429. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/bdd/features/explain.feature +0 -0
  430. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/bdd/features/index.feature +0 -0
  431. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/bdd/features/install.feature +0 -0
  432. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/bdd/features/list.feature +0 -0
  433. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/bdd/features/mcp.feature +0 -0
  434. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/bdd/features/search.feature +0 -0
  435. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/bdd/features/steps/cli_steps.py +0 -0
  436. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/bdd/features/steps/discovery_steps.py +0 -0
  437. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/bdd/features/steps/mcp_steps.py +0 -0
  438. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/bdd/features/steps/quality_steps.py +0 -0
  439. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/conftest.py +0 -0
  440. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/eval/baseline.json +0 -0
  441. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/eval/explain.jsonl +0 -0
  442. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/eval/golden.jsonl +0 -0
  443. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/eval/recommend.jsonl +0 -0
  444. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/eval/taps.txt +0 -0
  445. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_capabilities_policy.py +0 -0
  446. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_cli_adapt.py +0 -0
  447. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_cli_bmad.py +0 -0
  448. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_cli_chat.py +0 -0
  449. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_cli_configuration.py +0 -0
  450. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_cli_discovery.py +0 -0
  451. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_cli_hooks.py +0 -0
  452. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_cli_info.py +0 -0
  453. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_cli_intelligence.py +0 -0
  454. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_cli_pkg.py +0 -0
  455. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_cli_quality.py +0 -0
  456. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_cli_taps.py +0 -0
  457. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_cli_team.py +0 -0
  458. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_everyday_loop.py +0 -0
  459. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_integrity_enforce.py +0 -0
  460. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_property_parsers.py +0 -0
  461. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_run.py +0 -0
  462. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_tap_signing.py +0 -0
  463. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/functional/test_workspace_scope.py +0 -0
  464. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/README.md +0 -0
  465. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/frontmatter/01-typical.md +0 -0
  466. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/frontmatter/02-lossy-version.md +0 -0
  467. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/frontmatter/03-lossy-numbers.md +0 -0
  468. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/frontmatter/04-lists.md +0 -0
  469. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/frontmatter/05-nested.md +0 -0
  470. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/frontmatter/06-empty-block.md +0 -0
  471. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/frontmatter/07-unterminated.md +0 -0
  472. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/frontmatter/08-none.md +0 -0
  473. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/frontmatter/09-unbalanced-quote.md +0 -0
  474. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/frontmatter/10-keywords.md +0 -0
  475. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/frontmatter/11-crlf.md +0 -0
  476. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/frontmatter/12-bom.md +0 -0
  477. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/registry/01-shorthand.txt +0 -0
  478. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/registry/02-https.txt +0 -0
  479. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/registry/03-ssh.txt +0 -0
  480. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/registry/04-traversal.txt +0 -0
  481. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/registry/05-empty.txt +0 -0
  482. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/registry/06-space.txt +0 -0
  483. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/registry/07-slash.txt +0 -0
  484. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/corpus/registry/08-bare-host.txt +0 -0
  485. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/fuzz_frontmatter.py +0 -0
  486. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/fuzz/fuzz_registry.py +0 -0
  487. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/make_fixture.py +0 -0
  488. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/perf/test_benchmarks.py +0 -0
  489. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/smoke.sh +0 -0
  490. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_a11y_check.py +0 -0
  491. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_adapters.py +0 -0
  492. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_adapters_multi.py +0 -0
  493. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_adapters_runner.py +0 -0
  494. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_agents.py +0 -0
  495. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_ai.py +0 -0
  496. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_capabilities.py +0 -0
  497. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_catalog.py +0 -0
  498. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_chat.py +0 -0
  499. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_check_anchors.py +0 -0
  500. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_check_licenses.py +0 -0
  501. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_claude_settings.py +0 -0
  502. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_cliparse.py +0 -0
  503. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_codeql_analysis_key.py +0 -0
  504. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_command_reference_fresh.py +0 -0
  505. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_community_health_files.py +0 -0
  506. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_complete.py +0 -0
  507. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_config.py +0 -0
  508. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_content_dedupe.py +0 -0
  509. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_dedup_trust.py +0 -0
  510. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_demo_index.py +0 -0
  511. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_dense.py +0 -0
  512. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_dense_fallback.py +0 -0
  513. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_dense_fix_hint.py +0 -0
  514. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_dense_shards.py +0 -0
  515. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_dense_status.py +0 -0
  516. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_dependabot_config.py +0 -0
  517. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_docs_pages_linked.py +0 -0
  518. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_docsite_chrome.py +0 -0
  519. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_ed25519.py +0 -0
  520. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_embed.py +0 -0
  521. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_embed_local.py +0 -0
  522. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_entry_key.py +0 -0
  523. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_errors_and_cli_table.py +0 -0
  524. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_eval_baseline.py +0 -0
  525. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_eval_corpus.py +0 -0
  526. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_eval_faithfulness.py +0 -0
  527. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_eval_gate.py +0 -0
  528. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_eval_metrics.py +0 -0
  529. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_eval_stats_summary.py +0 -0
  530. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_faithfulness.py +0 -0
  531. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_frontmatter.py +0 -0
  532. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_fuzz_targets.py +0 -0
  533. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_gitleaks_config.py +0 -0
  534. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_gitutil.py +0 -0
  535. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_imperative.py +0 -0
  536. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_import_budget.py +0 -0
  537. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_injectscan.py +0 -0
  538. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_installscan.py +0 -0
  539. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_integrity.py +0 -0
  540. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_journal.py +0 -0
  541. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_localembed.py +0 -0
  542. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_localembed_e2e.py +0 -0
  543. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_lockfile.py +0 -0
  544. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_logs.py +0 -0
  545. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_marketing_counts.py +0 -0
  546. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_mcp.py +0 -0
  547. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_mcp_install_scan.py +0 -0
  548. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_mcpdecl.py +0 -0
  549. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_mcphost.py +0 -0
  550. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_minisign.py +0 -0
  551. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_mutation_hardening.py +0 -0
  552. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_mutation_shards.py +0 -0
  553. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_mutation_subfile_shards.py +0 -0
  554. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_mutmut_source_paths.py +0 -0
  555. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_nethttp.py +0 -0
  556. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_output.py +0 -0
  557. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_paths.py +0 -0
  558. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_perf_gate.py +0 -0
  559. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_pkg_confusions.py +0 -0
  560. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_pkg_injection.py +0 -0
  561. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_pkg_secrets.py +0 -0
  562. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_platform_pins.py +0 -0
  563. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_policy.py +0 -0
  564. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_post_deploy_smoke.py +0 -0
  565. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_project_mcp_sidecar.py +0 -0
  566. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_projectlock.py +0 -0
  567. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_provenance.py +0 -0
  568. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_rag.py +0 -0
  569. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_rag_fusion.py +0 -0
  570. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_registries_fresh.py +0 -0
  571. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_registry.py +0 -0
  572. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_registry_categories.py +0 -0
  573. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_release_guard.py +0 -0
  574. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_release_preflight.py +0 -0
  575. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_required_checks.py +0 -0
  576. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_resolve.py +0 -0
  577. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_roadmap_fresh.py +0 -0
  578. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_rules.py +0 -0
  579. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_scopes.py +0 -0
  580. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_secretscan.py +0 -0
  581. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_selfupdate.py +0 -0
  582. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_serve.py +0 -0
  583. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_spin.py +0 -0
  584. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_stackprobe.py +0 -0
  585. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_staleness.py +0 -0
  586. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_store.py +0 -0
  587. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_token_parity.py +0 -0
  588. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_toolchain_lock.py +0 -0
  589. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_trustaudit.py +0 -0
  590. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_typosquat.py +0 -0
  591. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_updatediff.py +0 -0
  592. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_util.py +0 -0
  593. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_version.py +0 -0
  594. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_workflow_concurrency.py +0 -0
  595. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_workflow_timeouts.py +0 -0
  596. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/unit/test_workflows.py +0 -0
  597. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/visual/a11y_check.mjs +0 -0
  598. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/visual/console_check.mjs +0 -0
  599. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/visual/package-lock.json +0 -0
  600. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/tests/visual/package.json +0 -0
  601. {boost_skill_cli-1.0.359 → boost_skill_cli-1.0.360}/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.359
3
+ Version: 1.0.360
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.359'
22
- __version_tuple__ = version_tuple = (1, 0, 359)
21
+ __version__ = version = '1.0.360'
22
+ __version_tuple__ = version_tuple = (1, 0, 360)
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.359
3
+ Version: 1.0.360
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -7,10 +7,10 @@ category: Eval · Correctness
7
7
  complexity: M
8
8
  impact: High
9
9
  wow: 4
10
- note: the mechanism ships; which of 59 code-reviewers each query means is still a human call
10
+ note: 28 of 50 rows pinned mechanically with zero change to any number; 22 are genuine judgment calls
11
11
  order: 81
12
12
  owner: loop/golden-name-grading
13
- pr:
13
+ pr: 412
14
14
  title: The golden set grades by name, and 35 of 53 names are ambiguous
15
15
  ---
16
16
  <b>The eval scores a hit when the top result carries the right <em>name</em>. Most of those names do
@@ -84,3 +84,24 @@ statement about intent. Guessing it would bake one opinion into the number the p
84
84
  invisibly. The harness is ready for those decisions one row at a time; each added exemplar tightens
85
85
  the metric and none of them destabilise it.
86
86
 
87
+ <b>Progress: 28 of the 50 rows are now pinned, and pinning them changed nothing.</b> Measured over
88
+ the SHA-pinned corpus, 28 rows have the property that every name in their <code>relevant</code> list
89
+ resolves to exactly <b>one body</b> &mdash; so the exemplar is a lookup, not a judgment, and grading
90
+ by content class must return the same verdict as grading by name. It does: the natural-language set
91
+ scores <b>0.350 / 0.160 / 0.245 / 0.259</b> before and after, identical to three decimal places.
92
+ That equality is the point of shipping them &mdash; the rows are now explicit about which skill they
93
+ mean, at zero cost to comparability.
94
+
95
+ <b>The remaining 22 are the real content of this card.</b> <code>code-reviewer</code> is 13 distinct
96
+ skills in this corpus, <code>update-docs</code> 10, <code>commit</code> 4. There is no shortcut
97
+ available: their descriptions share a median similarity of about <b>0.15</b>, so these are genuine
98
+ forks rather than one skill re-published, and no rule separates them without someone saying what the
99
+ question meant. The menu is generated rather than written down, because the candidate set is a fact
100
+ about the corpus that is tapped:
101
+
102
+ <code>python3 scripts/eval_retrieval.py --golden tests/eval/golden-natural.jsonl --worksheet</code>
103
+
104
+ <b>What unblocked this.</b> Not the judgment calls &mdash; [[eval-deduped-ranked-lists-by-name]].
105
+ A half-migrated set was averaging two different rank conventions, because name-graded rows collapsed
106
+ homonyms into one rank slot while exemplar-graded rows gave every distractor mirror its own. Until
107
+ both used one convention, migrating rows one at a time produced a number that meant nothing.
@@ -2412,12 +2412,34 @@ weaker gate that still reports a number, which is the failure this card exists t
2412
2412
  <code>code-reviewer</code>s a query about reviewing a diff for security problems refers to is a
2413
2413
  statement about intent. Guessing it would bake one opinion into the number the project publishes,
2414
2414
  invisibly. The harness is ready for those decisions one row at a time; each added exemplar tightens
2415
- the metric and none of them destabilise it.</p>
2415
+ the metric and none of them destabilise it.
2416
+
2417
+ <b>Progress: 28 of the 50 rows are now pinned, and pinning them changed nothing.</b> Measured over
2418
+ the SHA-pinned corpus, 28 rows have the property that every name in their <code>relevant</code> list
2419
+ resolves to exactly <b>one body</b> &mdash; so the exemplar is a lookup, not a judgment, and grading
2420
+ by content class must return the same verdict as grading by name. It does: the natural-language set
2421
+ scores <b>0.350 / 0.160 / 0.245 / 0.259</b> before and after, identical to three decimal places.
2422
+ That equality is the point of shipping them &mdash; the rows are now explicit about which skill they
2423
+ mean, at zero cost to comparability.
2424
+
2425
+ <b>The remaining 22 are the real content of this card.</b> <code>code-reviewer</code> is 13 distinct
2426
+ skills in this corpus, <code>update-docs</code> 10, <code>commit</code> 4. There is no shortcut
2427
+ available: their descriptions share a median similarity of about <b>0.15</b>, so these are genuine
2428
+ forks rather than one skill re-published, and no rule separates them without someone saying what the
2429
+ question meant. The menu is generated rather than written down, because the candidate set is a fact
2430
+ about the corpus that is tapped:
2431
+
2432
+ <code>python3 scripts/eval_retrieval.py --golden tests/eval/golden-natural.jsonl --worksheet</code>
2433
+
2434
+ <b>What unblocked this.</b> Not the judgment calls &mdash; [[eval-deduped-ranked-lists-by-name]].
2435
+ A half-migrated set was averaging two different rank conventions, because name-graded rows collapsed
2436
+ homonyms into one rank slot while exemplar-graded rows gave every distractor mirror its own. Until
2437
+ both used one convention, migrating rows one at a time produced a number that meant nothing.</p>
2416
2438
  <div class="meta">
2417
2439
  <span class="m">Complexity <b>M</b></span>
2418
2440
  <span class="m hi">Impact <b>High</b></span>
2419
2441
  <span class="m">Wow <b class="wow">★★★★</b></span>
2420
- <span class="m">the mechanism ships; which of 59 code-reviewers each query means is still a human call</span>
2442
+ <span class="m">28 of 50 rows pinned mechanically with zero change to any number; 22 are genuine judgment calls</span>
2421
2443
  </div>
2422
2444
  </article>
2423
2445
 
@@ -213,6 +213,46 @@ def relevant_keys(row: dict) -> set:
213
213
  return {"cls:%s" % sorted(classes)[0]}
214
214
 
215
215
 
216
+ def exemplar_worksheet(rows: List[dict], entries: List[dict],
217
+ hashes: dict) -> List[dict]:
218
+ """Rows still graded by name whose name resolves to several bodies.
219
+
220
+ Pinning those is a judgment about what the question meant, not a lookup, so
221
+ this hands over the menu rather than guessing: for each undecided row, every
222
+ distinct body a relevant name resolves to, with its description.
223
+
224
+ Generated rather than committed as a comment in the golden file, because the
225
+ candidate list is a fact about the corpus that is currently tapped. Written
226
+ down, it would be wrong the first time a pin moves.
227
+ """
228
+ by_name: Dict[str, List[dict]] = {}
229
+ for entry in entries:
230
+ by_name.setdefault(str(entry.get("name", "")), []).append(entry)
231
+ sheet: List[dict] = []
232
+ for row in rows:
233
+ if row.get("class_hashes"):
234
+ continue # already decided
235
+ seen: Dict[str, dict] = {}
236
+ for name in row["relevant_set"]:
237
+ for entry in by_name.get(name, []):
238
+ digest = hashes.get((entry.get("tap", ""), entry.get("skill_md", "")))
239
+ if digest and digest not in seen:
240
+ seen[digest] = entry
241
+ if len(seen) < 2:
242
+ continue # determined, or absent entirely
243
+ sheet.append({
244
+ "query": row["query"],
245
+ "candidates": [
246
+ {"spec": "%s%s%s" % (e.get("tap", ""), _EXEMPLAR_SEP,
247
+ e.get("skill_md", "")),
248
+ "description": (e.get("description") or "").strip().split("\n")[0]}
249
+ for e in sorted(seen.values(),
250
+ key=lambda x: (x.get("tap", ""), x.get("skill_md", "")))
251
+ ],
252
+ })
253
+ return sheet
254
+
255
+
216
256
  def dedupe_keys(keys):
217
257
  """Collapse to the first (best-ranked) occurrence of each key."""
218
258
  seen: set = set()
@@ -603,6 +643,9 @@ def main(argv: Optional[List[str]] = None) -> int:
603
643
  help="Tier 1b: ranx significance test between engines "
604
644
  "(opt-in [eval] extra; degrades if ranx absent)")
605
645
  ap.add_argument("--json", action="store_true", help="machine-readable JSON")
646
+ ap.add_argument("--worksheet", action="store_true",
647
+ help="list the golden rows still graded by name whose name "
648
+ "resolves to several bodies, with the candidates")
606
649
  args = ap.parse_args(argv)
607
650
 
608
651
  floors = parse_floors(args.floor) # fail fast on a bad --floor
@@ -616,6 +659,22 @@ def main(argv: Optional[List[str]] = None) -> int:
616
659
  print(" indexed %d entries -> %d chunks across %d taps"
617
660
  % (stats["entries"], stats["docs"], stats["taps"]))
618
661
 
662
+ if args.worksheet:
663
+ sheet = exemplar_worksheet(rows, catalog.all_entries(), rag.content_hashes())
664
+ if args.json:
665
+ print(json.dumps(sheet, indent=2))
666
+ return 0
667
+ print("%d of %d rows still graded by name resolve to several bodies.\n"
668
+ % (len(sheet), len(rows)))
669
+ for case in sheet:
670
+ print(" %s" % case["query"])
671
+ for cand in case["candidates"]:
672
+ print(" %s" % cand["spec"])
673
+ if cand["description"]:
674
+ print(" %s" % cand["description"][:96])
675
+ print()
676
+ return 0
677
+
619
678
  if args.rerank:
620
679
  return run_rerank_lift(rows, args.k, args.json)
621
680
 
@@ -31,25 +31,45 @@
31
31
  # than flooring one. Adding it to the gate would also floor a number nobody has
32
32
  # argued for yet.
33
33
  #
34
- # One JSON object per line: {query, relevant[], kind, note}
35
- {"query": "my writing is too wordy and people skim past the important parts", "relevant": ["write-concisely"], "kind": "skill", "note": "clarity, no shared vocabulary with the name"}
36
- {"query": "an error surfaces deep in the call stack and I cannot tell what originally triggered it", "relevant": ["root-cause-tracing"], "kind": "skill", "note": "tracing back from a symptom"}
37
- {"query": "I keep patching symptoms instead of whatever is actually wrong underneath", "relevant": ["why", "root-cause-tracing"], "kind": "skill", "note": "five-whys intent"}
34
+ # GRADING. A row may pin an `exemplar` — "tap::skill_md", the entry the query was
35
+ # written about — and is then graded on that entry's CONTENT CLASS: byte-identical
36
+ # mirrors from other registries still count, a different skill sharing the name
37
+ # does not. 28 of these 50 rows carry one. They were not chosen: over the pinned
38
+ # corpus each of their relevant names resolves to exactly ONE body, so the pin is
39
+ # a lookup rather than a judgment, and the pinned taps.txt is what makes that
40
+ # reproducible.
41
+ #
42
+ # The other 22 are genuinely undecided. `code-reviewer` is 13 different skills
43
+ # here, `update-docs` 10, `commit` 4, and their descriptions share a median
44
+ # similarity of ~0.15 — there is no "same skill re-published" shortcut. Deciding
45
+ # which one a question meant is a statement about intent, and guessing it would
46
+ # bake one opinion into a published number. To see the menu:
47
+ #
48
+ # python3 scripts/eval_retrieval.py --golden tests/eval/golden-natural.jsonl --worksheet
49
+ #
50
+ # which prints every candidate body and its description. It is generated rather
51
+ # than listed here on purpose: the candidate set is a fact about the corpus that
52
+ # is tapped, so written down it would be wrong the first time a pin moves.
53
+ #
54
+ # One JSON object per line: {query, relevant[], exemplar?, kind, note}
55
+ {"query": "my writing is too wordy and people skim past the important parts", "relevant": ["write-concisely"], "exemplar": "NeoLabHQ/context-engineering-kit::plugins/docs/skills/write-concisely/SKILL.md", "kind": "skill", "note": "clarity, no shared vocabulary with the name"}
56
+ {"query": "an error surfaces deep in the call stack and I cannot tell what originally triggered it", "relevant": ["root-cause-tracing"], "exemplar": "NeoLabHQ/context-engineering-kit::plugins/kaizen/skills/root-cause-tracing/SKILL.md", "kind": "skill", "note": "tracing back from a symptom"}
57
+ {"query": "I keep patching symptoms instead of whatever is actually wrong underneath", "relevant": ["why", "root-cause-tracing"], "exemplar": ["NeoLabHQ/context-engineering-kit::plugins/kaizen/skills/why/SKILL.md", "NeoLabHQ/context-engineering-kit::plugins/kaizen/skills/root-cause-tracing/SKILL.md"], "kind": "skill", "note": "five-whys intent"}
38
58
  {"query": "what convention should I follow for the messages I write when recording changes in git", "relevant": ["commit"], "kind": "skill", "note": "conventional commits"}
39
- {"query": "I keep stashing half-finished work every time I have to switch branches", "relevant": ["git-worktrees"], "kind": "skill", "note": "worktrees without naming them"}
40
- {"query": "I want to attach review status to a commit without rewriting any history", "relevant": ["git-notes"], "kind": "skill", "note": "metadata on commits"}
59
+ {"query": "I keep stashing half-finished work every time I have to switch branches", "relevant": ["git-worktrees"], "exemplar": "NeoLabHQ/context-engineering-kit::plugins/git/skills/git-worktrees/SKILL.md", "kind": "skill", "note": "worktrees without naming them"}
60
+ {"query": "I want to attach review status to a commit without rewriting any history", "relevant": ["git-notes"], "exemplar": "NeoLabHQ/context-engineering-kit::plugins/git/skills/git-notes/SKILL.md", "kind": "skill", "note": "metadata on commits"}
41
61
  {"query": "check what I changed for injection flaws and leaked credentials before it goes in", "relevant": ["security-auditor"], "kind": "workflow", "note": "vulnerability review"}
42
- {"query": "am I actually exercising the risky paths or only the easy ones", "relevant": ["test-coverage-reviewer"], "kind": "workflow", "note": "coverage quality"}
62
+ {"query": "am I actually exercising the risky paths or only the easy ones", "relevant": ["test-coverage-reviewer"], "exemplar": "NeoLabHQ/context-engineering-kit::plugins/review/agents/test-coverage-reviewer.md", "kind": "workflow", "note": "coverage quality"}
43
63
  {"query": "read through my diff and tell me what is broken in it", "relevant": ["bug-hunter"], "kind": "workflow", "note": "defect finding"}
44
64
  {"query": "does this change follow the conventions the rest of the project uses", "relevant": ["code-reviewer"], "kind": "workflow", "note": "guideline adherence"}
45
- {"query": "I need a single page covering what went wrong, why it happened and what we will do", "relevant": ["analyse-problem"], "kind": "skill", "note": "A3 report"}
46
- {"query": "help me lay out everything that might be contributing, grouped into categories", "relevant": ["cause-and-effect"], "kind": "skill", "note": "fishbone"}
47
- {"query": "I want to run small controlled experiments and keep iterating on the result", "relevant": ["plan-do-check-act"], "kind": "skill", "note": "PDCA"}
65
+ {"query": "I need a single page covering what went wrong, why it happened and what we will do", "relevant": ["analyse-problem"], "exemplar": "NeoLabHQ/context-engineering-kit::plugins/kaizen/skills/analyse-problem/SKILL.md", "kind": "skill", "note": "A3 report"}
66
+ {"query": "help me lay out everything that might be contributing, grouped into categories", "relevant": ["cause-and-effect"], "exemplar": "NeoLabHQ/context-engineering-kit::plugins/kaizen/skills/cause-and-effect/SKILL.md", "kind": "skill", "note": "fishbone"}
67
+ {"query": "I want to run small controlled experiments and keep iterating on the result", "relevant": ["plan-do-check-act"], "exemplar": "NeoLabHQ/context-engineering-kit::plugins/kaizen/skills/plan-do-check-act/SKILL.md", "kind": "skill", "note": "PDCA"}
48
68
  {"query": "drive my locally running site in a real browser and confirm it behaves", "relevant": ["webapp-testing"], "kind": "skill", "note": "playwright without the word"}
49
69
  {"query": "get the text out of a scanned document so I can search it", "relevant": ["pdf"], "kind": "skill", "note": "extraction"}
50
- {"query": "I need to edit a Word file programmatically", "relevant": ["docx"], "kind": "skill", "note": "office format"}
51
- {"query": "read numbers out of a spreadsheet and write some back", "relevant": ["xlsx"], "kind": "skill", "note": "office format"}
52
- {"query": "put together a slide deck for a presentation", "relevant": ["pptx"], "kind": "skill", "note": "office format"}
70
+ {"query": "I need to edit a Word file programmatically", "relevant": ["docx"], "exemplar": "anthropics/skills::skills/docx/SKILL.md", "kind": "skill", "note": "office format"}
71
+ {"query": "read numbers out of a spreadsheet and write some back", "relevant": ["xlsx"], "exemplar": "anthropics/skills::skills/xlsx/SKILL.md", "kind": "skill", "note": "office format"}
72
+ {"query": "put together a slide deck for a presentation", "relevant": ["pptx"], "exemplar": "anthropics/skills::skills/pptx/SKILL.md", "kind": "skill", "note": "office format"}
53
73
  {"query": "make a short looping animation small enough to post in chat", "relevant": ["slack-gif-creator"], "kind": "skill", "note": "gif constraints"}
54
74
  {"query": "make this match our company colours and typefaces", "relevant": ["brand-guidelines"], "kind": "skill", "note": "brand application"}
55
75
  {"query": "the interface looks generic and I want it to feel deliberate", "relevant": ["frontend-design"], "kind": "skill", "note": "visual design intent"}
@@ -58,27 +78,27 @@
58
78
  {"query": "I am running out of room in the window and important details get dropped", "relevant": ["context-engineering"], "kind": "skill", "note": "context limits"}
59
79
  {"query": "I want to package a repeatable procedure so it can be reused later", "relevant": ["skill-creator", "create-skill"], "kind": "skill", "note": "duplicate intent in corpus"}
60
80
  {"query": "how do I tell whether my changes to the instructions actually helped", "relevant": ["agent-evaluation"], "kind": "skill", "note": "measuring prompt changes"}
61
- {"query": "run something automatically every time before code is committed", "relevant": ["create-hook"], "kind": "skill", "note": "git hooks"}
62
- {"query": "turn this ticket into a proper technical specification", "relevant": ["analyze-issue"], "kind": "skill", "note": "issue to spec"}
81
+ {"query": "run something automatically every time before code is committed", "relevant": ["create-hook"], "exemplar": "NeoLabHQ/context-engineering-kit::plugins/customaize-agent/skills/create-hook/SKILL.md", "kind": "skill", "note": "git hooks"}
82
+ {"query": "turn this ticket into a proper technical specification", "relevant": ["analyze-issue"], "exemplar": "NeoLabHQ/context-engineering-kit::plugins/git/skills/analyze-issue/SKILL.md", "kind": "skill", "note": "issue to spec"}
63
83
  {"query": "open a change request with the right template filled in", "relevant": ["create-pr"], "kind": "skill", "note": "PR creation"}
64
- {"query": "gather all the unresolved feedback on my change into a task list", "relevant": ["load-pr-comments"], "kind": "skill", "note": "review comments"}
84
+ {"query": "gather all the unresolved feedback on my change into a task list", "relevant": ["load-pr-comments"], "exemplar": "NeoLabHQ/context-engineering-kit::plugins/git/skills/load-pr-comments/SKILL.md", "kind": "skill", "note": "review comments"}
65
85
  {"query": "the written guides no longer match what the code does", "relevant": ["update-docs"], "kind": "skill", "note": "stale documentation"}
66
86
  {"query": "walk me through writing a guide together step by step", "relevant": ["doc-coauthoring"], "kind": "skill", "note": "structured authoring"}
67
- {"query": "this needs careful multi-step logic rather than a quick guess", "relevant": ["thought-based-reasoning"], "kind": "skill", "note": "reasoning depth"}
68
- {"query": "I want several different perspectives to argue about my design before I commit to it", "relevant": ["critique"], "kind": "skill", "note": "multi-judge debate"}
69
- {"query": "look back over what you just produced and improve on it", "relevant": ["reflect"], "kind": "skill", "note": "self-refinement"}
70
- {"query": "keep this lesson around so the same mistake is not repeated", "relevant": ["memorize"], "kind": "skill", "note": "persisting insights"}
71
- {"query": "some of the decisions we recorded are probably out of date now", "relevant": ["decay"], "kind": "skill", "note": "evidence freshness"}
87
+ {"query": "this needs careful multi-step logic rather than a quick guess", "relevant": ["thought-based-reasoning"], "exemplar": "NeoLabHQ/context-engineering-kit::plugins/customaize-agent/skills/thought-based-reasoning/SKILL.md", "kind": "skill", "note": "reasoning depth"}
88
+ {"query": "I want several different perspectives to argue about my design before I commit to it", "relevant": ["critique"], "exemplar": "NeoLabHQ/context-engineering-kit::plugins/reflexion/skills/critique/SKILL.md", "kind": "skill", "note": "multi-judge debate"}
89
+ {"query": "look back over what you just produced and improve on it", "relevant": ["reflect"], "exemplar": "NeoLabHQ/context-engineering-kit::plugins/reflexion/skills/reflect/SKILL.md", "kind": "skill", "note": "self-refinement"}
90
+ {"query": "keep this lesson around so the same mistake is not repeated", "relevant": ["memorize"], "exemplar": "NeoLabHQ/context-engineering-kit::plugins/reflexion/skills/memorize/SKILL.md", "kind": "skill", "note": "persisting insights"}
91
+ {"query": "some of the decisions we recorded are probably out of date now", "relevant": ["decay"], "exemplar": "NeoLabHQ/context-engineering-kit::plugins/fpf/skills/decay/SKILL.md", "kind": "skill", "note": "evidence freshness"}
72
92
  {"query": "generate visuals from code with a bit of controlled randomness", "relevant": ["algorithmic-art"], "kind": "skill", "note": "creative coding"}
73
93
  {"query": "produce a good looking printable document rather than a web page", "relevant": ["canvas-design"], "kind": "skill", "note": "print output"}
74
94
  {"query": "apply one consistent look across slides, documents and pages", "relevant": ["theme-factory"], "kind": "skill", "note": "theming"}
75
95
  {"query": "what does calling the model actually cost per token", "relevant": ["claude-api"], "kind": "skill", "note": "pricing reference"}
76
96
  {"query": "my containers keep restarting and I cannot work out why", "relevant": ["docker-expert"], "kind": "workflow", "note": "avoids the word docker"}
77
- {"query": "the layout falls apart on a narrow screen", "relevant": ["css-expert"], "kind": "workflow", "note": "responsive layout"}
78
- {"query": "I want automated tests that click through the app like a person would", "relevant": ["cypress-expert"], "kind": "workflow", "note": "e2e testing"}
79
- {"query": "our full-text queries have got slow as the index grew", "relevant": ["elasticsearch-expert"], "kind": "workflow", "note": "search performance"}
80
- {"query": "how should I choose partition and sort keys for this access pattern", "relevant": ["dynamodb-expert"], "kind": "workflow", "note": "key design"}
81
- {"query": "my shell script fails silently in the pipeline and I never notice", "relevant": ["bash-expert"], "kind": "workflow", "note": "defensive scripting"}
82
- {"query": "I need to configure a fleet of servers repeatably without doing it by hand", "relevant": ["ansible-expert"], "kind": "workflow", "note": "config management"}
83
- {"query": "keep database schema versions in step across environments", "relevant": ["flyway-expert"], "kind": "workflow", "note": "migrations"}
84
- {"query": "background jobs are piling up and not getting processed", "relevant": ["celery-expert", "bullmq-expert"], "kind": "workflow", "note": "two queue libraries, both defensible"}
97
+ {"query": "the layout falls apart on a narrow screen", "relevant": ["css-expert"], "exemplar": "0xfurai/claude-code-subagents::agents/css-expert.md", "kind": "workflow", "note": "responsive layout"}
98
+ {"query": "I want automated tests that click through the app like a person would", "relevant": ["cypress-expert"], "exemplar": "0xfurai/claude-code-subagents::agents/cypress-expert.md", "kind": "workflow", "note": "e2e testing"}
99
+ {"query": "our full-text queries have got slow as the index grew", "relevant": ["elasticsearch-expert"], "exemplar": "0xfurai/claude-code-subagents::agents/elasticsearch-expert.md", "kind": "workflow", "note": "search performance"}
100
+ {"query": "how should I choose partition and sort keys for this access pattern", "relevant": ["dynamodb-expert"], "exemplar": "0xfurai/claude-code-subagents::agents/dynamodb-expert.md", "kind": "workflow", "note": "key design"}
101
+ {"query": "my shell script fails silently in the pipeline and I never notice", "relevant": ["bash-expert"], "exemplar": "0xfurai/claude-code-subagents::agents/bash-expert.md", "kind": "workflow", "note": "defensive scripting"}
102
+ {"query": "I need to configure a fleet of servers repeatably without doing it by hand", "relevant": ["ansible-expert"], "exemplar": "0xfurai/claude-code-subagents::agents/ansible-expert.md", "kind": "workflow", "note": "config management"}
103
+ {"query": "keep database schema versions in step across environments", "relevant": ["flyway-expert"], "exemplar": "0xfurai/claude-code-subagents::agents/flyway-expert.md", "kind": "workflow", "note": "migrations"}
104
+ {"query": "background jobs are piling up and not getting processed", "relevant": ["celery-expert", "bullmq-expert"], "exemplar": ["0xfurai/claude-code-subagents::agents/celery-expert.md", "0xfurai/claude-code-subagents::agents/bullmq-expert.md"], "kind": "workflow", "note": "two queue libraries, both defensible"}
@@ -28,6 +28,7 @@ exemplar-graded row and a name-graded row be averaged into one number.
28
28
  from __future__ import annotations
29
29
 
30
30
  import importlib.util
31
+ import json
31
32
  from pathlib import Path
32
33
 
33
34
  import pytest
@@ -178,6 +179,50 @@ class TestIdentityIsTheBodyNotTheName:
178
179
  assert m.grade_key(row, one, HASHES) != m.grade_key(row, two, HASHES)
179
180
 
180
181
 
182
+ class TestTheWorksheetShowsWhatIsLeftToDecide:
183
+ """Pinning the remaining rows is a judgment, so hand over a menu, not a task.
184
+
185
+ 28 of the 50 natural-language rows resolved to exactly one body and were
186
+ pinned mechanically. The other 22 do not: `code-reviewer` alone is 13
187
+ different skills here, and their descriptions share a median similarity of
188
+ about 0.15, so there is no "same skill re-published" shortcut to take. The
189
+ menu is generated rather than written into the golden file as a comment, so
190
+ it keeps describing the corpus that is actually tapped instead of rotting.
191
+ """
192
+
193
+ def test_an_ambiguous_row_lists_every_candidate_body(self):
194
+ m = _load()
195
+ rows = [m.prepare_row({"query": "q", "relevant": ["code-reviewer"]}, HASHES)]
196
+ sheet = m.exemplar_worksheet(rows, [A, B, C, OTHER], HASHES)
197
+ assert len(sheet) == 1
198
+ specs = {c["spec"] for c in sheet[0]["candidates"]}
199
+ assert specs == {"owner/a::code-reviewer/SKILL.md",
200
+ "owner/b::code-reviewer/SKILL.md"}
201
+
202
+ def test_mirrors_are_one_candidate_not_two(self):
203
+ # owner/c is byte-identical to owner/a; offering both would be offering
204
+ # the same decision twice.
205
+ m = _load()
206
+ rows = [m.prepare_row({"query": "q", "relevant": ["code-reviewer"]}, HASHES)]
207
+ assert m.exemplar_worksheet(rows, [A, C], HASHES) == []
208
+
209
+ def test_a_row_that_already_pins_an_exemplar_is_done(self):
210
+ m = _load()
211
+ rows = [m.prepare_row({"query": "q", "relevant": ["code-reviewer"],
212
+ "exemplar": "owner/a::code-reviewer/SKILL.md"},
213
+ HASHES)]
214
+ assert m.exemplar_worksheet(rows, [A, B, C], HASHES) == []
215
+
216
+ def test_the_shipped_set_leaves_exactly_the_rows_it_documents(self):
217
+ # Guards the split: if a future edit pins one of the 22 or unpins one of
218
+ # the 28, this is the line that says so.
219
+ path = _ROOT / "tests" / "eval" / "golden-natural.jsonl"
220
+ rows = [json.loads(ln) for ln in path.read_text(encoding="utf-8").splitlines()
221
+ if ln.strip() and not ln.startswith("#")]
222
+ assert len(rows) == 50
223
+ assert len([r for r in rows if r.get("exemplar")]) == 28
224
+
225
+
181
226
  class TestDedupeKeepsTheBestRank:
182
227
  def test_repeats_collapse_to_first_occurrence(self):
183
228
  m = _load()