boost-skill-cli 1.0.184__tar.gz → 1.0.186__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 (340) hide show
  1. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/.gitignore +3 -0
  2. boost_skill_cli-1.0.186/.lycheeignore +11 -0
  3. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/Makefile +1 -0
  4. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/PKG-INFO +3 -2
  5. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/README.md +2 -1
  6. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/_version.py +2 -2
  7. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_skill_cli.egg-info/PKG-INFO +3 -2
  8. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_skill_cli.egg-info/SOURCES.txt +6 -1
  9. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/adapters.html +2 -0
  10. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/eval.html +3 -0
  11. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/index.html +34 -105
  12. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/mcp-hub.html +5 -0
  13. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/boost-run-live-agents.md +1 -1
  14. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +10 -5
  15. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/framework-adapter-langgraph.md +1 -1
  16. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/framework-adapter-multi-agent.md +1 -1
  17. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/framework-adapters-boost-adapt.md +1 -1
  18. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +2 -2
  19. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/reconcile-the-theme-drift.md +3 -3
  20. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +1 -1
  21. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +3 -3
  22. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap.html +17 -12
  23. boost_skill_cli-1.0.186/scripts/check_anchors.py +108 -0
  24. boost_skill_cli-1.0.186/tests/unit/test_check_anchors.py +79 -0
  25. boost_skill_cli-1.0.186/tests/visual/package.json +7 -0
  26. boost_skill_cli-1.0.186/tests/visual/visual_check.mjs +98 -0
  27. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/.gitattributes +0 -0
  28. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/.gitleaks.toml +0 -0
  29. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/.htmlvalidate.json +0 -0
  30. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/.markdownlint-cli2.jsonc +0 -0
  31. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/.pre-commit-config.yaml +0 -0
  32. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/.stylelintrc.json +0 -0
  33. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/.vale/styles/boost/Terminology.yml +0 -0
  34. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/.vale/styles/config/vocabularies/boost/accept.txt +0 -0
  35. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/.vale.ini +0 -0
  36. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/CLAUDE.md +0 -0
  37. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/CONTRIBUTING.md +0 -0
  38. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/LICENSE +0 -0
  39. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/MANIFEST.in +0 -0
  40. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/SECURITY.md +0 -0
  41. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost +0 -0
  42. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/__init__.py +0 -0
  43. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/__main__.py +0 -0
  44. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/cli.py +0 -0
  45. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/cliparse.py +0 -0
  46. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/commands/__init__.py +0 -0
  47. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/commands/bmad.py +0 -0
  48. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/commands/configuration.py +0 -0
  49. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/commands/discovery.py +0 -0
  50. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/commands/hooks.py +0 -0
  51. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/commands/info.py +0 -0
  52. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/commands/intelligence.py +0 -0
  53. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/commands/pkg.py +0 -0
  54. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/commands/quality.py +0 -0
  55. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/commands/taps.py +0 -0
  56. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/commands/team.py +0 -0
  57. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/__init__.py +0 -0
  58. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/adapters.py +0 -0
  59. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/agents.py +0 -0
  60. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/ai.py +0 -0
  61. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/catalog.py +0 -0
  62. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/claude_settings.py +0 -0
  63. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/config.py +0 -0
  64. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/dense.py +0 -0
  65. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/embed.py +0 -0
  66. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/frontmatter.py +0 -0
  67. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/gitutil.py +0 -0
  68. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/imperative.py +0 -0
  69. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/injectscan.py +0 -0
  70. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/journal.py +0 -0
  71. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/lockfile.py +0 -0
  72. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/logs.py +0 -0
  73. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/mcp.py +0 -0
  74. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/nethttp.py +0 -0
  75. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/output.py +0 -0
  76. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/paths.py +0 -0
  77. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/policy.py +0 -0
  78. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/rag.py +0 -0
  79. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/registry.py +0 -0
  80. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/rules.py +0 -0
  81. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/secretscan.py +0 -0
  82. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/serve.py +0 -0
  83. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/stackprobe.py +0 -0
  84. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/staleness.py +0 -0
  85. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/store.py +0 -0
  86. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/typosquat.py +0 -0
  87. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/updatediff.py +0 -0
  88. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/util.py +0 -0
  89. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/core/workflows.py +0 -0
  90. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/data/registries.json +0 -0
  91. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/errors.py +0 -0
  92. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_cli/spin.py +0 -0
  93. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  94. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  95. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_skill_cli.egg-info/requires.txt +0 -0
  96. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/boost_skill_cli.egg-info/top_level.txt +0 -0
  97. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/.claude/settings.local.json +0 -0
  98. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/DEBUGGING.md +0 -0
  99. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/commands.html +0 -0
  100. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/demo.gif +0 -0
  101. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/demo.tape +0 -0
  102. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/design-roadmap.html +0 -0
  103. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/rag-architecture.md +0 -0
  104. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D01.md +0 -0
  105. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D02.md +0 -0
  106. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D03.md +0 -0
  107. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D04.md +0 -0
  108. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D05.md +0 -0
  109. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D06.md +0 -0
  110. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D07.md +0 -0
  111. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D08.md +0 -0
  112. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D09.md +0 -0
  113. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D10.md +0 -0
  114. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D11.md +0 -0
  115. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D12.md +0 -0
  116. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D13.md +0 -0
  117. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D14.md +0 -0
  118. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D15.md +0 -0
  119. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D16.md +0 -0
  120. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D17.md +0 -0
  121. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D18.md +0 -0
  122. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D19.md +0 -0
  123. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D20.md +0 -0
  124. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D21.md +0 -0
  125. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D22.md +0 -0
  126. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D23.md +0 -0
  127. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D24.md +0 -0
  128. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D25.md +0 -0
  129. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/BOOST-D26.md +0 -0
  130. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  131. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  132. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  133. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  134. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  135. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  136. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  137. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  138. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  139. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  140. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  141. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  142. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  143. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  144. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  145. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  146. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  147. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  148. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  149. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  150. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  151. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  152. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  153. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  154. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  155. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  156. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  157. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  158. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  159. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  160. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  161. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  162. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  163. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  164. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  165. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  166. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  167. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  168. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  169. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  170. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  171. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  172. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  173. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  174. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  175. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  176. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  177. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  178. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  179. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  180. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  181. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  182. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  183. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  184. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  185. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  186. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  187. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  188. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  189. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  190. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  191. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  192. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  193. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  194. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  195. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  196. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  197. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  198. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  199. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  200. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  201. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  202. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  203. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  204. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  205. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  206. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  207. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  208. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  209. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  210. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  211. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  212. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  213. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  214. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  215. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  216. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  217. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  218. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  219. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  220. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  221. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  222. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  223. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  224. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  225. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  226. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  227. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  228. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/docs/roadmap/items/workspace-scope-install.md +0 -0
  229. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/eslint.config.mjs +0 -0
  230. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/examples/README.md +0 -0
  231. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/examples/adapt-demo.sh +0 -0
  232. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/examples/boost-run-prototype.sh +0 -0
  233. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/index.html +0 -0
  234. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/noxfile.py +0 -0
  235. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/pyproject.toml +0 -0
  236. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/scripts/bench_cli.sh +0 -0
  237. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/scripts/build_command_reference.py +0 -0
  238. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/scripts/build_registries.py +0 -0
  239. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/scripts/build_roadmap.py +0 -0
  240. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/scripts/ensure_eval_corpus.sh +0 -0
  241. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/scripts/eval_explain.py +0 -0
  242. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/scripts/eval_recommend.py +0 -0
  243. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/scripts/eval_retrieval.py +0 -0
  244. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/scripts/eval_stats_summary.py +0 -0
  245. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/scripts/import_budget.py +0 -0
  246. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/scripts/mutation_gate.py +0 -0
  247. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/scripts/perf_gate.py +0 -0
  248. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/setup.cfg +0 -0
  249. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/style/README.md +0 -0
  250. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/style/boost.css +0 -0
  251. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/style/boost.js +0 -0
  252. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/style/demo.html +0 -0
  253. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/bdd/features/adapt.feature +0 -0
  254. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/bdd/features/browse.feature +0 -0
  255. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/bdd/features/count.feature +0 -0
  256. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/bdd/features/discover.feature +0 -0
  257. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/bdd/features/doctor.feature +0 -0
  258. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/bdd/features/environment.py +0 -0
  259. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/bdd/features/explain.feature +0 -0
  260. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/bdd/features/index.feature +0 -0
  261. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/bdd/features/install.feature +0 -0
  262. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/bdd/features/list.feature +0 -0
  263. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/bdd/features/mcp.feature +0 -0
  264. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/bdd/features/search.feature +0 -0
  265. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/bdd/features/steps/cli_steps.py +0 -0
  266. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/bdd/features/steps/discovery_steps.py +0 -0
  267. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/bdd/features/steps/mcp_steps.py +0 -0
  268. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/bdd/features/steps/quality_steps.py +0 -0
  269. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/conftest.py +0 -0
  270. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/eval/baseline.json +0 -0
  271. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/eval/explain.jsonl +0 -0
  272. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/eval/golden.jsonl +0 -0
  273. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/eval/recommend.jsonl +0 -0
  274. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/eval/taps.txt +0 -0
  275. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/functional/test_cli_adapt.py +0 -0
  276. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/functional/test_cli_bmad.py +0 -0
  277. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/functional/test_cli_configuration.py +0 -0
  278. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/functional/test_cli_discovery.py +0 -0
  279. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/functional/test_cli_hooks.py +0 -0
  280. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/functional/test_cli_info.py +0 -0
  281. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/functional/test_cli_intelligence.py +0 -0
  282. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/functional/test_cli_pkg.py +0 -0
  283. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/functional/test_cli_quality.py +0 -0
  284. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/functional/test_cli_taps.py +0 -0
  285. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/functional/test_cli_team.py +0 -0
  286. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/functional/test_everyday_loop.py +0 -0
  287. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/functional/test_property_parsers.py +0 -0
  288. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/make_fixture.py +0 -0
  289. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/perf/test_benchmarks.py +0 -0
  290. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/smoke.sh +0 -0
  291. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_adapters.py +0 -0
  292. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_agents.py +0 -0
  293. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_ai.py +0 -0
  294. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_catalog.py +0 -0
  295. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_claude_settings.py +0 -0
  296. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_cliparse.py +0 -0
  297. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_command_reference_fresh.py +0 -0
  298. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_config.py +0 -0
  299. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_dense.py +0 -0
  300. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_dense_fallback.py +0 -0
  301. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_docs_pages_linked.py +0 -0
  302. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_embed.py +0 -0
  303. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_errors_and_cli_table.py +0 -0
  304. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_eval_stats_summary.py +0 -0
  305. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_frontmatter.py +0 -0
  306. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_gitleaks_config.py +0 -0
  307. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_gitutil.py +0 -0
  308. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_imperative.py +0 -0
  309. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_import_budget.py +0 -0
  310. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_injectscan.py +0 -0
  311. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_journal.py +0 -0
  312. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_lockfile.py +0 -0
  313. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_logs.py +0 -0
  314. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_mcp.py +0 -0
  315. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_mutation_hardening.py +0 -0
  316. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_nethttp.py +0 -0
  317. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_output.py +0 -0
  318. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_paths.py +0 -0
  319. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_perf_gate.py +0 -0
  320. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_pkg_confusions.py +0 -0
  321. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_pkg_injection.py +0 -0
  322. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_pkg_secrets.py +0 -0
  323. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_policy.py +0 -0
  324. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_rag.py +0 -0
  325. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_registries_fresh.py +0 -0
  326. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_registry.py +0 -0
  327. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_roadmap_fresh.py +0 -0
  328. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_rules.py +0 -0
  329. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_secretscan.py +0 -0
  330. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_serve.py +0 -0
  331. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_spin.py +0 -0
  332. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_stackprobe.py +0 -0
  333. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_staleness.py +0 -0
  334. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_store.py +0 -0
  335. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_token_parity.py +0 -0
  336. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_typosquat.py +0 -0
  337. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_updatediff.py +0 -0
  338. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_util.py +0 -0
  339. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_version.py +0 -0
  340. {boost_skill_cli-1.0.184 → boost_skill_cli-1.0.186}/tests/unit/test_workflows.py +0 -0
@@ -230,3 +230,6 @@ mutants/
230
230
 
231
231
  # sandboxed boost home for the Tier 1 eval corpus (`make eval` taps here)
232
232
  .eval-home/
233
+ tests/visual/node_modules/
234
+ tests/visual/out/
235
+ tests/visual/package-lock.json
@@ -0,0 +1,11 @@
1
+ # Links lychee should not fetch.
2
+ #
3
+ # The docs are the GitHub Pages site rooted at docs/, so every asset and
4
+ # cross-page link is checked as a real file path — nothing is excluded for
5
+ # convenience. These two entries are unavoidable:
6
+
7
+ # Local dev server referenced in `boost serve` documentation examples.
8
+ ^https?://(localhost|127\.0\.0\.1)(:\d+)?
9
+
10
+ # Example/placeholder hosts in configuration snippets (not real endpoints).
11
+ ^https?://(example\.(com|org)|your-org)
@@ -57,6 +57,7 @@ lint:
57
57
  $(PY) scripts/build_command_reference.py --check
58
58
  $(PY) scripts/import_budget.py
59
59
  $(PY) scripts/perf_gate.py
60
+ $(PY) scripts/check_anchors.py
60
61
 
61
62
  # Supply-chain CVE gate: fail on a known OSV/PyPI advisory in the project's
62
63
  # dependency closure. Mirrors the pip-audit CI workflow; run before releasing.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.184
3
+ Version: 1.0.186
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -840,7 +840,8 @@ boost bundle dump > Boostfile # everyone else runs: boost bundle install
840
840
  ## 75 commands, organized into 8 groups
841
841
 
842
842
  `boost --help` prints the full grouped command list; for a visual tour see
843
- [`docs/overview.html`](docs/overview.html).
843
+ [`docs/index.html`](docs/index.html), and for every flag of every command see
844
+ [`docs/commands.html`](docs/commands.html).
844
845
 
845
846
  | Group | Commands |
846
847
  |---|---|
@@ -124,7 +124,8 @@ boost bundle dump > Boostfile # everyone else runs: boost bundle install
124
124
  ## 75 commands, organized into 8 groups
125
125
 
126
126
  `boost --help` prints the full grouped command list; for a visual tour see
127
- [`docs/overview.html`](docs/overview.html).
127
+ [`docs/index.html`](docs/index.html), and for every flag of every command see
128
+ [`docs/commands.html`](docs/commands.html).
128
129
 
129
130
  | Group | Commands |
130
131
  |---|---|
@@ -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.184'
22
- __version_tuple__ = version_tuple = (1, 0, 184)
21
+ __version__ = version = '1.0.186'
22
+ __version_tuple__ = version_tuple = (1, 0, 186)
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.184
3
+ Version: 1.0.186
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -840,7 +840,8 @@ boost bundle dump > Boostfile # everyone else runs: boost bundle install
840
840
  ## 75 commands, organized into 8 groups
841
841
 
842
842
  `boost --help` prints the full grouped command list; for a visual tour see
843
- [`docs/overview.html`](docs/overview.html).
843
+ [`docs/index.html`](docs/index.html), and for every flag of every command see
844
+ [`docs/commands.html`](docs/commands.html).
844
845
 
845
846
  | Group | Commands |
846
847
  |---|---|
@@ -2,6 +2,7 @@
2
2
  .gitignore
3
3
  .gitleaks.toml
4
4
  .htmlvalidate.json
5
+ .lycheeignore
5
6
  .markdownlint-cli2.jsonc
6
7
  .pre-commit-config.yaml
7
8
  .stylelintrc.json
@@ -232,6 +233,7 @@ scripts/bench_cli.sh
232
233
  scripts/build_command_reference.py
233
234
  scripts/build_registries.py
234
235
  scripts/build_roadmap.py
236
+ scripts/check_anchors.py
235
237
  scripts/ensure_eval_corpus.sh
236
238
  scripts/eval_explain.py
237
239
  scripts/eval_recommend.py
@@ -286,6 +288,7 @@ tests/unit/test_adapters.py
286
288
  tests/unit/test_agents.py
287
289
  tests/unit/test_ai.py
288
290
  tests/unit/test_catalog.py
291
+ tests/unit/test_check_anchors.py
289
292
  tests/unit/test_claude_settings.py
290
293
  tests/unit/test_cliparse.py
291
294
  tests/unit/test_command_reference_fresh.py
@@ -331,4 +334,6 @@ tests/unit/test_typosquat.py
331
334
  tests/unit/test_updatediff.py
332
335
  tests/unit/test_util.py
333
336
  tests/unit/test_version.py
334
- tests/unit/test_workflows.py
337
+ tests/unit/test_workflows.py
338
+ tests/visual/package.json
339
+ tests/visual/visual_check.mjs
@@ -38,6 +38,8 @@
38
38
  table.map td.sdk code { color: var(--green); }
39
39
  .two { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; margin-top: 30px; }
40
40
  @media (max-width: 760px) { .two { grid-template-columns: 1fr; } }
41
+ /* narrow screens: the mapping table scrolls inside itself (visual_check) */
42
+ @media (max-width: 760px) { table.map { display: block; overflow-x: auto; } }
41
43
  .panel { border: 1px solid var(--line); border-radius: 14px; padding: 22px 22px 8px;
42
44
  background: var(--panel); }
43
45
  .panel h3 { font-size: 16px; margin: 0 0 4px; }
@@ -98,6 +98,9 @@
98
98
  footer p { color: var(--text-3); font-size: 13px; }
99
99
  footer a { color: var(--sky); text-decoration: none; }
100
100
 
101
+ /* narrow screens: the contract table scrolls inside itself instead of
102
+ widening the document (caught by tests/visual/visual_check.mjs) */
103
+ @media (max-width: 760px) { table.contract { display: block; overflow-x: auto; } }
101
104
  @media (max-width: 820px) {
102
105
  .cheat { grid-template-columns: 1fr; }
103
106
  .cheat .col-head.tech { margin-top: 8px; }
@@ -4,35 +4,12 @@
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>boost — Homebrew for AI coding skills</title>
7
+ <!-- Canonical Aurora tokens + primitives (single source of truth). The
8
+ inline block below carries ONLY page-specific layout, and wins ties
9
+ by coming later in the cascade. -->
10
+ <link rel="stylesheet" href="../style/boost.css">
7
11
  <style>
8
- :root {
9
- /* ---- Aurora reskin: neon-tech living glass (matches style/ + portfolio) ---- */
10
- --bg: #07080f;
11
- --panel: rgba(255,255,255,.035);
12
- --panel-solid: #0f1120;
13
- --line: rgba(255,255,255,.09);
14
- --line-soft: rgba(255,255,255,.05);
15
- --line-hi: rgba(255,255,255,.22);
16
- --text: #e9ebf5;
17
- --text-2: #9298b0;
18
- --text-3: #676d86;
19
- --amber: #22d3ee; /* primary accent → cyan */
20
- --orange: #38bdf8; /* cyan-blue */
21
- --pink: #f472d0;
22
- --violet: #a855f7;
23
- --blue: #38bdf8;
24
- --sky: #7dd3fc;
25
- --green: #4ade80;
26
- --yellow: #facc15;
27
- --term-bg: #0d1024;
28
- --term-bar: #171a33;
29
- --cyan: #22d3ee;
30
- --grad: linear-gradient(96deg, #22d3ee 0%, #a855f7 52%, #f472d0 100%);
31
- --mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;
32
- --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
33
- }
34
12
  * { box-sizing: border-box; margin: 0; padding: 0; }
35
- html { scroll-behavior: smooth; scroll-padding-top: 84px; }
36
13
  @media (prefers-reduced-motion: reduce) {
37
14
  html { scroll-behavior: auto; }
38
15
  .reveal { transition: none !important; transform: none !important; opacity: 1 !important; }
@@ -74,9 +51,7 @@
74
51
  50% { transform: translate3d(2.5vmax,-2vmax,0) scale(1.08); }
75
52
  }
76
53
  .wrap { max-width: 1120px; margin: 0 auto; padding: 0 24px; position: relative; z-index: 1; }
77
- a { color: inherit; }
78
- code { font-family: var(--mono); }
79
- :focus-visible { outline: 2px solid var(--amber); outline-offset: 2px; border-radius: 4px; }
54
+ :focus-visible { outline: 2px solid var(--cyan); outline-offset: 2px; border-radius: 4px; }
80
55
 
81
56
  /* ---------- nav ---------- */
82
57
  header {
@@ -86,40 +61,26 @@
86
61
  -webkit-backdrop-filter: blur(12px);
87
62
  border-bottom: 1px solid var(--line-soft);
88
63
  }
89
- .nav { display: flex; align-items: center; gap: 24px; height: 64px; }
64
+ header .nav { display: flex; align-items: center; gap: 24px; height: 64px; }
90
65
  .logo { display: flex; align-items: baseline; gap: 10px; text-decoration: none; }
91
- .logo b { font-family: var(--mono); font-size: 20px; font-weight: 700; color: var(--amber); letter-spacing: -.02em; }
66
+ .logo b { font-family: var(--mono); font-size: 20px; font-weight: 700; color: var(--cyan); letter-spacing: -.02em; }
92
67
  .logo span { font-size: 10.5px; letter-spacing: .24em; color: var(--text-2); text-transform: uppercase; }
93
- .nav ul {
68
+ header .nav ul {
94
69
  display: flex; gap: 4px; list-style: none; margin-left: auto;
95
70
  overflow-x: auto; scrollbar-width: none;
96
71
  }
97
- .nav ul::-webkit-scrollbar { display: none; }
98
- .nav ul a {
72
+ header .nav ul::-webkit-scrollbar { display: none; }
73
+ header .nav ul a {
99
74
  display: block; padding: 8px 12px; border-radius: 8px;
100
75
  font-size: 14px; color: var(--text-2); text-decoration: none; white-space: nowrap;
101
76
  }
102
- .nav ul a:hover { color: var(--text); background: var(--panel); }
103
- .nav ul a.cta { color: var(--text); font-weight: 600; }
77
+ header .nav ul a:hover { color: var(--text); background: var(--panel); }
78
+ header .nav ul a.cta { color: var(--text); font-weight: 600; }
104
79
 
105
80
  /* ---------- shared section chrome ---------- */
106
81
  section { padding: 110px 0 20px; }
107
- .eyebrow {
108
- font-family: var(--mono); font-size: 12px; font-weight: 700;
109
- letter-spacing: .24em; text-transform: uppercase;
110
- background: var(--grad); -webkit-background-clip: text; background-clip: text; color: transparent;
111
- display: block; text-align: center; margin-bottom: 18px;
112
- }
113
- .sec-title {
114
- font-size: clamp(30px, 4.5vw, 50px); font-weight: 800; letter-spacing: -.025em;
115
- line-height: 1.1; text-align: center; text-wrap: balance;
116
- }
117
- .sec-sub {
118
- max-width: 640px; margin: 18px auto 0; text-align: center;
119
- color: var(--text-2); font-size: 17.5px; text-wrap: balance;
120
- }
121
82
  .sec-sub code {
122
- color: var(--amber); background: rgba(34,211,238,.09);
83
+ color: var(--cyan); background: rgba(34,211,238,.09);
123
84
  padding: 1px 7px; border-radius: 6px; font-size: .88em;
124
85
  }
125
86
  .reveal { opacity: 0; transform: translateY(16px); transition: opacity .6s ease, transform .6s ease; }
@@ -149,14 +110,12 @@
149
110
  padding: 14px 26px; border-radius: 12px; border: 1px solid transparent;
150
111
  transition: transform .15s ease, box-shadow .15s ease;
151
112
  }
152
- .btn:hover { transform: translateY(-1px); }
153
113
  .btn-grad {
154
114
  color: #05141a;
155
- background: linear-gradient(92deg, var(--orange), var(--pink));
115
+ background: linear-gradient(92deg, var(--blue), var(--pink));
156
116
  box-shadow: 0 8px 30px rgba(236,72,153,.28);
157
117
  }
158
118
  .btn-grad:hover { box-shadow: 0 10px 36px rgba(236,72,153,.4); }
159
- .btn-ghost { color: var(--text); border-color: var(--line); background: var(--panel); }
160
119
  .btn-ghost:hover { border-color: rgba(255,255,255,.2); }
161
120
  .stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-top: 72px; }
162
121
  .stat {
@@ -168,22 +127,13 @@
168
127
  transition: border-color .2s ease;
169
128
  }
170
129
  .stat:hover { border-color: var(--line-hi); }
171
- .stat b {
172
- display: block; font-size: clamp(28px, 3.4vw, 42px); font-weight: 800; letter-spacing: -.02em;
173
- background: var(--grad); -webkit-background-clip: text; background-clip: text; color: transparent;
174
- font-variant-numeric: tabular-nums;
175
- }
176
- .stat span {
177
- display: block; margin-top: 8px; font-size: 11px; font-weight: 650;
178
- letter-spacing: .16em; text-transform: uppercase; color: var(--text-2);
179
- }
180
130
 
181
131
  /* ---------- concept ---------- */
182
132
  .concept-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; margin-top: 64px; }
183
133
  .concept-copy p { color: var(--text-2); margin-bottom: 22px; font-size: 17.5px; }
184
134
  .concept-copy p b { color: var(--text); font-weight: 650; }
185
135
  .concept-copy .chip-code {
186
- font-family: var(--mono); font-size: .86em; color: var(--amber);
136
+ font-family: var(--mono); font-size: .86em; color: var(--cyan);
187
137
  background: rgba(34,211,238,.09); padding: 1px 7px; border-radius: 6px;
188
138
  }
189
139
  .analogy { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 8px; }
@@ -192,7 +142,7 @@
192
142
  font-size: 13.5px; color: var(--text-2);
193
143
  border: 1px solid var(--line); border-radius: 999px; padding: 8px 16px; background: var(--panel);
194
144
  }
195
- .analogy b { font-family: var(--mono); font-size: 13px; color: var(--amber); font-weight: 700; }
145
+ .analogy b { font-family: var(--mono); font-size: 13px; color: var(--cyan); font-weight: 700; }
196
146
  .analogy .arr { color: var(--text-3); }
197
147
 
198
148
  /* mac-style window */
@@ -208,30 +158,12 @@
208
158
  display: flex; align-items: center; height: 38px; padding: 0 14px;
209
159
  background: var(--term-bar); border-bottom: 1px solid rgba(0,0,0,.25);
210
160
  }
211
- .window .dots { display: flex; gap: 7px; }
212
- .window .dots i { width: 12px; height: 12px; border-radius: 50%; }
213
- .window .dots i:nth-child(1) { background: #ff5f57; }
214
- .window .dots i:nth-child(2) { background: #febc2e; }
215
- .window .dots i:nth-child(3) { background: #28c840; }
216
- .window .bar-title {
217
- flex: 1; text-align: center; font-family: var(--mono); font-size: 12.5px; color: #b8b8d0;
218
- margin-right: 47px; /* balance the dots */
219
- }
220
- .window pre {
221
- padding: 22px 24px; overflow-x: auto;
222
- font-family: var(--mono); font-size: 13.5px; line-height: 1.75; color: #dcdcf0;
223
- }
224
- .yk { color: var(--amber); } /* yaml key */
161
+ .yk { color: var(--cyan); } /* yaml key */
225
162
  .yv { color: var(--yellow); } /* yaml value */
226
163
  .yd { color: #8888aa; } /* delimiter/dim */
227
- .mh { color: #f5a9d8; font-weight: 700; } /* markdown heading */
228
- .cm { color: #9d9dbd; font-style: italic; } /* comment */
229
- .tp { color: #8888aa; } /* terminal prompt $ */
230
- .tv { color: #7ee787; font-weight: 700; } /* the word `boost` */
231
- .tc { color: var(--yellow); font-weight: 700; } /* subcommand */
232
- .tok { color: var(--green); } /* ✓ */
233
- .tstar { color: var(--amber); }
234
- .tdim { color: #9d9dbd; }
164
+ .mh { color: #f5a9d8; font-weight: 700; } /* markdown heading */ /* comment */
165
+ .tp { color: #8888aa; } /* terminal prompt $ */ /* the word `boost` */ /* subcommand */ /* ✓ */
166
+ .tstar { color: var(--cyan); }
235
167
  .tacc { color: var(--cyan); font-weight: 700; } /* Aurora accent: meters, names, ==> */
236
168
  .tbox { color: var(--green); } /* framed-card border (panel hue=green) */
237
169
 
@@ -253,7 +185,7 @@
253
185
  letter-spacing: .2em; text-transform: uppercase; color: var(--text-2);
254
186
  }
255
187
  .node h4 { font-size: 18px; font-weight: 750; margin-top: 8px; letter-spacing: -.01em; }
256
- .node h4 code { font-size: 15.5px; color: var(--amber); }
188
+ .node h4 code { font-size: 15.5px; color: var(--cyan); }
257
189
  .node p { font-size: 13.5px; color: var(--text-2); margin-top: 6px; }
258
190
  .node.src { border-color: rgba(96,165,250,.5); box-shadow: 0 0 32px rgba(96,165,250,.07); }
259
191
  .node.mid { border-color: rgba(255,255,255,.14); }
@@ -263,7 +195,7 @@
263
195
  .node.agent h4 { color: #d9fbe5; }
264
196
  .flow-arrow {
265
197
  display: flex; flex-direction: column; align-items: center; gap: 4px;
266
- padding: 14px 0; color: var(--amber);
198
+ padding: 14px 0; color: var(--cyan);
267
199
  }
268
200
  .flow-arrow svg { display: block; }
269
201
  .flow-arrow span {
@@ -288,7 +220,7 @@
288
220
  transition: color .15s, background .15s, border-color .15s;
289
221
  }
290
222
  .pill:hover { color: var(--text); border-color: rgba(255,255,255,.2); }
291
- .pill.on { background: var(--amber); border-color: var(--amber); color: #201705; }
223
+ .pill.on { background: var(--cyan); border-color: var(--cyan); color: #201705; }
292
224
  .cmd-count { text-align: center; margin: 30px 0 6px; font-size: 14.5px; color: var(--text-2); }
293
225
  .group { margin-top: 46px; }
294
226
  .group-head { display: flex; align-items: center; gap: 14px; }
@@ -314,16 +246,16 @@
314
246
  }
315
247
  .cmd::before {
316
248
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
317
- background: var(--gc, var(--amber)); opacity: .85; border-radius: 3px 0 0 3px;
249
+ background: var(--gc, var(--cyan)); opacity: .85; border-radius: 3px 0 0 3px;
318
250
  }
319
251
  .cmd:hover { border-color: var(--line); }
320
252
  .cmd .name { font-family: var(--mono); font-size: 14.5px; }
321
253
  .cmd .name .v { color: #85859c; }
322
- .cmd .name b { color: var(--amber); font-weight: 700; }
254
+ .cmd .name b { color: var(--cyan); font-weight: 700; }
323
255
  .cmd p { font-size: 13.5px; color: var(--text-2); margin-top: 6px; line-height: 1.5; }
324
256
  .cmd mark { background: rgba(34,211,238,.25); color: var(--text); border-radius: 3px; padding: 0 1px; }
325
257
  .no-results { text-align: center; color: var(--text-2); padding: 60px 0 30px; display: none; }
326
- .no-results code { color: var(--amber); }
258
+ .no-results code { color: var(--cyan); }
327
259
 
328
260
  /* ---------- capabilities ---------- */
329
261
  .caps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 64px; }
@@ -343,9 +275,6 @@
343
275
  background: var(--ic-bg, rgba(255,255,255,.06)); color: var(--ic-fg, var(--text));
344
276
  border: 1px solid var(--line-soft);
345
277
  }
346
- .cap h3 { font-size: 19.5px; font-weight: 750; letter-spacing: -.01em; }
347
- .cap p { font-size: 14.5px; color: var(--text-2); margin-top: 10px; }
348
- .cap .tags { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 18px; }
349
278
  .cap .tags code {
350
279
  font-size: 12px; color: #d5d5e2; background: rgba(255,255,255,.06);
351
280
  border: 1px solid var(--line-soft); border-radius: 7px; padding: 3px 9px;
@@ -364,13 +293,13 @@
364
293
  .reg tbody td { padding: 15px 20px; border-bottom: 1px solid var(--line-soft); font-size: 14.5px; vertical-align: middle; }
365
294
  .reg tbody tr:last-child td { border-bottom: none; }
366
295
  .reg .tapname {
367
- font-family: var(--mono); font-size: 13px; font-weight: 700; color: var(--amber);
296
+ font-family: var(--mono); font-size: 13px; font-weight: 700; color: var(--cyan);
368
297
  background: rgba(34,211,238,.09); border: 1px solid rgba(34,211,238,.25);
369
298
  border-radius: 8px; padding: 4px 11px; white-space: nowrap;
370
299
  }
371
300
  .reg .repo { font-family: var(--mono); font-size: 13px; color: var(--text-2); }
372
301
  .reg .cnt {
373
- font-family: var(--mono); font-size: 13px; font-weight: 700; color: var(--amber);
302
+ font-family: var(--mono); font-size: 13px; font-weight: 700; color: var(--cyan);
374
303
  border: 1px solid rgba(34,211,238,.35); border-radius: 999px; padding: 4px 12px;
375
304
  font-variant-numeric: tabular-nums; white-space: nowrap;
376
305
  }
@@ -379,7 +308,7 @@
379
308
  .reg tr.dim .tapname { color: var(--text-2); background: var(--panel); border-color: var(--line); }
380
309
  .reg tr.dim .cnt { color: var(--text-2); border-color: var(--line); }
381
310
  .reg-note { text-align: center; font-size: 13.5px; color: var(--text-3); margin-top: 18px; }
382
- .reg-note code { color: var(--amber); font-size: .92em; }
311
+ .reg-note code { color: var(--cyan); font-size: .92em; }
383
312
 
384
313
  /* ---------- get started ---------- */
385
314
  .install-box { max-width: 760px; margin: 56px auto 0; }
@@ -391,7 +320,7 @@
391
320
  .install-box .bar .label::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--grad); }
392
321
  .copy-btn {
393
322
  font-family: var(--sans); font-size: 12.5px; font-weight: 700; color: #201705;
394
- background: var(--amber); border: none; border-radius: 8px; padding: 6px 14px; cursor: pointer;
323
+ background: var(--cyan); border: none; border-radius: 8px; padding: 6px 14px; cursor: pointer;
395
324
  }
396
325
  .copy-btn:hover { filter: brightness(1.08); }
397
326
  .mini { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; max-width: 860px; margin: 40px auto 0; }
@@ -400,14 +329,14 @@
400
329
  background: var(--panel-solid); border: 1px solid var(--line-soft); border-radius: 12px; padding: 18px 20px;
401
330
  }
402
331
  .mini a:hover { border-color: var(--line); }
403
- .mini .name { font-family: var(--mono); font-size: 14px; font-weight: 700; color: var(--amber); }
332
+ .mini .name { font-family: var(--mono); font-size: 14px; font-weight: 700; color: var(--cyan); }
404
333
  .mini .name .v { color: #85859c; font-weight: 400; }
405
334
  .mini p { font-size: 13px; color: var(--text-2); margin-top: 5px; }
406
335
 
407
336
  /* ---------- footer ---------- */
408
337
  footer { margin-top: 130px; border-top: 1px solid var(--line-soft); padding: 44px 0 60px; text-align: center; }
409
338
  footer .brand { font-size: 15px; color: var(--text-2); }
410
- footer .brand b { font-family: var(--mono); color: var(--amber); }
339
+ footer .brand b { font-family: var(--mono); color: var(--cyan); }
411
340
  footer .meta { margin-top: 10px; font-size: 13.5px; color: var(--text-3); }
412
341
  footer .meta code {
413
342
  color: var(--text-2); background: var(--panel); border: 1px solid var(--line-soft);
@@ -701,7 +630,7 @@ facilitate structured divergent thinking:
701
630
  <div class="ic">⇄</div>
702
631
  <h3>Multi-agent &amp; integration</h3>
703
632
  <p>Install once, land in Claude Code, Windsurf, and Cursor. Run as a
704
- native MCP server, register a <code style="color:var(--amber)">boost://</code> one-click
633
+ native MCP server, register a <code style="color:var(--cyan)">boost://</code> one-click
705
634
  protocol, serve a catalog over HTTP, or auto-sync on a schedule.</p>
706
635
  <div class="tags"><code>migrate</code><code>mcp</code><code>protocol</code><code>serve</code><code>schedule</code></div>
707
636
  </div>
@@ -775,7 +704,7 @@ facilitate structured divergent thinking:
775
704
  <td><span class="tapname">your-org/skills</span></td>
776
705
  <td class="repo">any repo with SKILL.md files</td>
777
706
  <td><span class="cnt">∞</span></td>
778
- <td class="focus">Your team’s registry — <code style="color:var(--amber);font-size:.92em">boost tap your-org/skills</code> (private repos work over ssh)</td>
707
+ <td class="focus">Your team’s registry — <code style="color:var(--cyan);font-size:.92em">boost tap your-org/skills</code> (private repos work over ssh)</td>
779
708
  </tr>
780
709
  </tbody>
781
710
  </table>
@@ -86,6 +86,11 @@
86
86
  footer p { color: var(--text-3); font-size: 13px; }
87
87
  footer a { color: var(--sky); text-decoration: none; }
88
88
 
89
+ /* grid items default to min-width:auto, so one unbreakable code string
90
+ can push the single-column cheat grid past the viewport (visual_check) */
91
+ .cheat > * { min-width: 0; }
92
+ .sec-title code { overflow-wrap: anywhere; } /* boost_discover_github in an h2 */
93
+ details.card .body code { overflow-wrap: anywhere; }
89
94
  @media (max-width: 820px) {
90
95
  .cheat, .split { grid-template-columns: 1fr; }
91
96
  .cheat .col-head.tech { margin-top: 8px; }
@@ -13,4 +13,4 @@ owner:
13
13
  pr:
14
14
  title: <code>boost run</code> — search → adapt → a live agent doing the task, in one command
15
15
  ---
16
- The allure ceiling on <code>boost adapt</code> (#146, #163): it stops at <b>source you assemble</b>, and the adapted agent has a brain (prompt) but no <b>hands</b> (tools). Close both. <code>boost run &lt;skill&gt; [target]</code> = adapt → wire a default toolset (file read, ripgrep/shell, web) → execute on boost's model and stream the result. Opt-in like the conformance path (installs the framework + needs a key, so the zero-dep default holds). Two prerequisites ship with it: (1) <b>tool-wiring</b> — emit/attach the tools a skill needs (or declares) so the agent can act, not roleplay; (2) reuse the <a href="../adapters.html">adapt</a> renderer for the agent def. Pairs with <code>[[framework-adapter-multi-agent]]</code> so a skill like <code>rust-review</code> runs as a real crew. This is the screenshot: "one command → an expert agent audits your repo, on Claude, that you never wrote." <b>Working preview:</b> <code>examples/boost-run-prototype.sh</code> already does this by hand (adapt → wire a read_file tool → <code>Runner.run</code> on a file with planted bugs).
16
+ The allure ceiling on <code>boost adapt</code> (#146, #163): it stops at <b>source you assemble</b>, and the adapted agent has a brain (prompt) but no <b>hands</b> (tools). Close both. <code>boost run &lt;skill&gt; [target]</code> = adapt → wire a default toolset (file read, ripgrep/shell, web) → execute on boost's model and stream the result. Opt-in like the conformance path (installs the framework + needs a key, so the zero-dep default holds). Two prerequisites ship with it: (1) <b>tool-wiring</b> — emit/attach the tools a skill needs (or declares) so the agent can act, not roleplay; (2) reuse the <a href="adapters.html">adapt</a> renderer for the agent def. Pairs with <code>[[framework-adapter-multi-agent]]</code> so a skill like <code>rust-review</code> runs as a real crew. This is the screenshot: "one command → an expert agent audits your repo, on Claude, that you never wrote." <b>Working preview:</b> <code>examples/boost-run-prototype.sh</code> already does this by hand (adapt → wire a read_file tool → <code>Runner.run</code> on a file with planted bugs).
@@ -2,19 +2,24 @@
2
2
  id: broken-link-and-anchor-checking-lychee
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
- note: URLs + anchors
10
+ note: 8 dead links found
11
11
  order: 5
12
- owner:
13
- pr:
12
+ owner: loop/lychee
13
+ pr: 210
14
14
  title: Broken-link &amp; anchor checking — <code>lychee</code>
15
15
  ---
16
16
  Fast, free link checker over the README and <code>docs/*.html</code>:
17
17
  verifies external URLs (GitHub, PyPI), asset paths
18
18
  (<code>../style/boost.css</code>) and in-page anchors
19
19
  (<code>#next</code>, <code>#health</code>) still resolve. A dead link in
20
- the landing page is the first broken promise a visitor sees.
20
+ the landing page is the first broken promise a visitor sees. Red on
21
+ its first run: eight were already broken — four <code>../adapters.html</code>
22
+ at the wrong depth, two dangling anchors, one link to an item file as
23
+ though it were a page, and a README pointing at
24
+ <code>docs/overview.html</code>, renamed to <code>index.html</code>
25
+ and never updated.
@@ -13,4 +13,4 @@ owner:
13
13
  pr:
14
14
  title: <code>boost adapt --to langgraph</code> — third framework renderer
15
15
  ---
16
- Extend <code>boost adapt</code> (shipped in #146) with a LangGraph target. Unlike CrewAI / Agents-SDK, a LangGraph agent isn't one <code>Agent(...)</code> constructor — the skill body is the system prompt of a node bound into a <code>StateGraph</code>. Add a <code>render_langgraph</code> to <code>core/adapters.py</code> emitting a node factory (prebuilt <code>create_react_agent</code>, or a prompt-carrying node) + its <code>FORMATS</code> row, with byte-exact golden + <code>compile()</code> tests. Then add a <code>langgraph</code> leg to <code>.github/workflows/adapter-conformance.yml</code> (pip install langgraph, import the emitted file). Follows the pattern in <a href="../adapters.html">adapters.html</a>: one <code>render_*</code> fn + registry row + golden test + one matrix line.
16
+ Extend <code>boost adapt</code> (shipped in #146) with a LangGraph target. Unlike CrewAI / Agents-SDK, a LangGraph agent isn't one <code>Agent(...)</code> constructor — the skill body is the system prompt of a node bound into a <code>StateGraph</code>. Add a <code>render_langgraph</code> to <code>core/adapters.py</code> emitting a node factory (prebuilt <code>create_react_agent</code>, or a prompt-carrying node) + its <code>FORMATS</code> row, with byte-exact golden + <code>compile()</code> tests. Then add a <code>langgraph</code> leg to <code>.github/workflows/adapter-conformance.yml</code> (pip install langgraph, import the emitted file). Follows the pattern in <a href="adapters.html">adapters.html</a>: one <code>render_*</code> fn + registry row + golden test + one matrix line.
@@ -13,4 +13,4 @@ owner:
13
13
  pr:
14
14
  title: <code>boost adapt</code> — multi-agent skills → crews/graphs, not one Agent
15
15
  ---
16
- Today <code>boost adapt</code> (#146, #163) projects a skill into a <b>single</b> framework Agent carrying its instructions/role/model — but a skill can declare tools and a whole subagent graph (e.g. <code>rust-review</code> = worker + dedup-judge + fp-judge). Adapt the richer structure: emit a CrewAI <code>Crew</code> (agents + tasks) or a LangGraph <code>StateGraph</code> when a skill's frontmatter/plugin dir declares subagents, and surface declared tools as stubs. Scope: detect subagent/tool declarations in <code>SKILL.md</code>/<code>plugins/*/agents/*.md</code>; add a crew/graph renderer path in <code>core/adapters.py</code> (single-Agent stays the default for flat skills); golden + <code>compile()</code> tests + a conformance leg. Turns "one skill → one agent" into "one skill → a runnable multi-agent workflow." See <a href="../adapters.html">adapters.html</a>.
16
+ Today <code>boost adapt</code> (#146, #163) projects a skill into a <b>single</b> framework Agent carrying its instructions/role/model — but a skill can declare tools and a whole subagent graph (e.g. <code>rust-review</code> = worker + dedup-judge + fp-judge). Adapt the richer structure: emit a CrewAI <code>Crew</code> (agents + tasks) or a LangGraph <code>StateGraph</code> when a skill's frontmatter/plugin dir declares subagents, and surface declared tools as stubs. Scope: detect subagent/tool declarations in <code>SKILL.md</code>/<code>plugins/*/agents/*.md</code>; add a crew/graph renderer path in <code>core/adapters.py</code> (single-Agent stays the default for flat skills); golden + <code>compile()</code> tests + a conformance leg. Turns "one skill → one agent" into "one skill → a runnable multi-agent workflow." See <a href="adapters.html">adapters.html</a>.
@@ -13,4 +13,4 @@ owner: loop/framework-adapters
13
13
  pr: 146
14
14
  title: <code>boost adapt</code> — render a skill as another framework's agent source
15
15
  ---
16
- boost only installs skills as files for editor agents (Claude Code, Cursor, Windsurf); CrewAI / OpenAI-Agents-SDK apps can't consume them — an agent there is a value built in source. <code>boost adapt &lt;skill&gt; --to crewai|agents-sdk</code> renders one <code>SKILL.md</code> into each framework's native <code>Agent(...)</code> as a deterministic, zero-dependency string transform (<code>core/adapters.py</code>). Strings emit via <code>json.dumps</code> so any body (quotes, <code>"""</code>, unicode) stays valid Python; 97.6% mutation kill. Docs: <a href="../adapters.html">adapters.html</a>.
16
+ boost only installs skills as files for editor agents (Claude Code, Cursor, Windsurf); CrewAI / OpenAI-Agents-SDK apps can't consume them — an agent there is a value built in source. <code>boost adapt &lt;skill&gt; --to crewai|agents-sdk</code> renders one <code>SKILL.md</code> into each framework's native <code>Agent(...)</code> as a deterministic, zero-dependency string transform (<code>core/adapters.py</code>). Strings emit via <code>json.dumps</code> so any body (quotes, <code>"""</code>, unicode) stays valid Python; 97.6% mutation kill. Docs: <a href="adapters.html">adapters.html</a>.
@@ -13,7 +13,7 @@ owner: loop/mcp-startup-fork-safety
13
13
  pr: 162
14
14
  title: Self-harden every boost process against the macOS fork-safety abort
15
15
  ---
16
- The launch-env fix (<a href="#mcp-launch-objc-fork-safety">#119</a>) only
16
+ The launch-env fix (<a href="https://github.com/jonnyeclectic/boost/pull/119">#119</a>) only
17
17
  protects hosts that register boost <em>through boost</em>, which
18
18
  injects <code>no_proxy=*</code>. A host that <code>fork()</code>s into
19
19
  <code>boost mcp --stdio</code> from a stale or hand-written config —
@@ -26,4 +26,4 @@ The launch-env fix (<a href="#mcp-launch-objc-fork-safety">#119</a>) only
26
26
  <code>getproxies()</code> short-circuits on
27
27
  <code>getproxies_environment()</code> and never consults
28
28
  SystemConfiguration. Belt-and-suspenders atop the
29
- <code>nethttp</code> opener (<a href="#fork-safe-network-proxy-handler">#115</a>).
29
+ <code>nethttp</code> opener (<a href="https://github.com/jonnyeclectic/boost/pull/115">#115</a>).
@@ -2,15 +2,15 @@
2
2
  id: reconcile-the-theme-drift
3
3
  board: code
4
4
  section: next
5
- status: next
5
+ status: shipped
6
6
  category: Design
7
7
  complexity: M
8
8
  impact: Med
9
9
  wow: 3
10
10
  note:
11
11
  order: 3
12
- owner:
13
- pr:
12
+ owner: loop/themedrift
13
+ pr: 208
14
14
  title: Reconcile the theme drift
15
15
  ---
16
16
  <code>docs/index.html</code> inlines its own amber/orange palette
@@ -13,7 +13,7 @@ owner: loop/docs-discoverable
13
13
  pr: 128
14
14
  title: Surface every <code>docs/*.html</code> page from the main page
15
15
  ---
16
- <a href="make-the-roadmaps-discoverable.html">Making the roadmaps discoverable</a>
16
+ <a href="roadmap.html">Making the roadmaps discoverable</a>
17
17
  put both boards in the Visual Guide nav, but the same gap remains for
18
18
  the rest of <code>docs/*.html</code>: <code>mcp-hub.html</code> is
19
19
  reachable only if you already know the URL — nothing on
@@ -2,15 +2,15 @@
2
2
  id: visual-regression-pass-on-the-guide
3
3
  board: code
4
4
  section: planned
5
- status: planned
5
+ status: shipped
6
6
  category: Design · QA
7
7
  complexity: M
8
8
  impact: Med
9
9
  wow: 3
10
10
  note:
11
11
  order: 3
12
- owner:
13
- pr:
12
+ owner: loop/visual
13
+ pr: 209
14
14
  title: Visual regression pass on the guide
15
15
  ---
16
16
  Drive <code>docs/index.html</code> in a real browser across breakpoints