boost-skill-cli 1.0.155__tar.gz → 1.0.157__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 (320) hide show
  1. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/.gitignore +2 -2
  2. boost_skill_cli-1.0.157/.gitleaks.toml +17 -0
  3. boost_skill_cli-1.0.157/.pre-commit-config.yaml +67 -0
  4. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/CONTRIBUTING.md +15 -0
  5. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/PKG-INFO +1 -1
  6. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/_version.py +2 -2
  7. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_skill_cli.egg-info/PKG-INFO +1 -1
  8. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_skill_cli.egg-info/SOURCES.txt +3 -0
  9. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +3 -3
  10. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +3 -3
  11. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap.html +2 -2
  12. boost_skill_cli-1.0.157/tests/unit/test_gitleaks_config.py +59 -0
  13. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/.gitattributes +0 -0
  14. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/CLAUDE.md +0 -0
  15. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/LICENSE +0 -0
  16. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/MANIFEST.in +0 -0
  17. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/Makefile +0 -0
  18. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/README.md +0 -0
  19. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/SECURITY.md +0 -0
  20. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost +0 -0
  21. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/__init__.py +0 -0
  22. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/__main__.py +0 -0
  23. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/cli.py +0 -0
  24. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/cliparse.py +0 -0
  25. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/commands/__init__.py +0 -0
  26. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/commands/bmad.py +0 -0
  27. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/commands/configuration.py +0 -0
  28. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/commands/discovery.py +0 -0
  29. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/commands/hooks.py +0 -0
  30. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/commands/info.py +0 -0
  31. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/commands/intelligence.py +0 -0
  32. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/commands/pkg.py +0 -0
  33. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/commands/quality.py +0 -0
  34. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/commands/taps.py +0 -0
  35. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/commands/team.py +0 -0
  36. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/__init__.py +0 -0
  37. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/adapters.py +0 -0
  38. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/agents.py +0 -0
  39. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/ai.py +0 -0
  40. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/catalog.py +0 -0
  41. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/claude_settings.py +0 -0
  42. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/config.py +0 -0
  43. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/dense.py +0 -0
  44. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/embed.py +0 -0
  45. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/frontmatter.py +0 -0
  46. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/gitutil.py +0 -0
  47. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/imperative.py +0 -0
  48. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/injectscan.py +0 -0
  49. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/journal.py +0 -0
  50. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/lockfile.py +0 -0
  51. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/logs.py +0 -0
  52. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/mcp.py +0 -0
  53. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/nethttp.py +0 -0
  54. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/output.py +0 -0
  55. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/paths.py +0 -0
  56. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/policy.py +0 -0
  57. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/rag.py +0 -0
  58. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/registry.py +0 -0
  59. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/rules.py +0 -0
  60. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/secretscan.py +0 -0
  61. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/serve.py +0 -0
  62. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/stackprobe.py +0 -0
  63. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/staleness.py +0 -0
  64. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/store.py +0 -0
  65. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/typosquat.py +0 -0
  66. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/updatediff.py +0 -0
  67. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/util.py +0 -0
  68. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/core/workflows.py +0 -0
  69. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/data/registries.json +0 -0
  70. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/errors.py +0 -0
  71. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_cli/spin.py +0 -0
  72. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  73. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  74. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_skill_cli.egg-info/requires.txt +0 -0
  75. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/boost_skill_cli.egg-info/top_level.txt +0 -0
  76. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/.claude/settings.local.json +0 -0
  77. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/DEBUGGING.md +0 -0
  78. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/adapters.html +0 -0
  79. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/demo.gif +0 -0
  80. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/demo.tape +0 -0
  81. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/design-roadmap.html +0 -0
  82. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/eval.html +0 -0
  83. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/index.html +0 -0
  84. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/mcp-hub.html +0 -0
  85. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/rag-architecture.md +0 -0
  86. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D01.md +0 -0
  87. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D02.md +0 -0
  88. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D03.md +0 -0
  89. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D04.md +0 -0
  90. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D05.md +0 -0
  91. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D06.md +0 -0
  92. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D07.md +0 -0
  93. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D08.md +0 -0
  94. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D09.md +0 -0
  95. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D10.md +0 -0
  96. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D11.md +0 -0
  97. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D12.md +0 -0
  98. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D13.md +0 -0
  99. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D14.md +0 -0
  100. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D15.md +0 -0
  101. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D16.md +0 -0
  102. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D17.md +0 -0
  103. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D18.md +0 -0
  104. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D19.md +0 -0
  105. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D20.md +0 -0
  106. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D21.md +0 -0
  107. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D22.md +0 -0
  108. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D23.md +0 -0
  109. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D24.md +0 -0
  110. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D25.md +0 -0
  111. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/BOOST-D26.md +0 -0
  112. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  113. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  114. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  115. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  116. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/boost-run-live-agents.md +0 -0
  117. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  118. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  119. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  120. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  121. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  122. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  123. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  124. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  125. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  126. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  127. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  128. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  129. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  130. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  131. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  132. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  133. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  134. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  135. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  136. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  137. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  138. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  139. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
  140. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
  141. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  142. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  143. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  144. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
  145. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  146. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  147. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
  148. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  149. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  150. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  151. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  152. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  153. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  154. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  155. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  156. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  157. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  158. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  159. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  160. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  161. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  162. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
  163. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  164. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  165. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  166. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  167. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  168. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  169. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  170. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  171. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  172. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  173. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  174. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  175. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  176. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  177. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  178. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  179. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  180. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  181. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
  182. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  183. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  184. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  185. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  186. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  187. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  188. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  189. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
  190. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  191. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  192. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
  193. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  194. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  195. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  196. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  197. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  198. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  199. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  200. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  201. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  202. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  203. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  204. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  205. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  206. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  207. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  208. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  209. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  210. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  211. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  212. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  213. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  214. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  215. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  216. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  217. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/docs/roadmap/items/workspace-scope-install.md +0 -0
  218. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/examples/README.md +0 -0
  219. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/examples/adapt-demo.sh +0 -0
  220. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/examples/boost-run-prototype.sh +0 -0
  221. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/index.html +0 -0
  222. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/pyproject.toml +0 -0
  223. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/scripts/bench_cli.sh +0 -0
  224. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/scripts/build_registries.py +0 -0
  225. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/scripts/build_roadmap.py +0 -0
  226. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/scripts/ensure_eval_corpus.sh +0 -0
  227. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/scripts/eval_explain.py +0 -0
  228. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/scripts/eval_recommend.py +0 -0
  229. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/scripts/eval_retrieval.py +0 -0
  230. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/scripts/import_budget.py +0 -0
  231. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/scripts/mutation_gate.py +0 -0
  232. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/setup.cfg +0 -0
  233. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/style/README.md +0 -0
  234. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/style/boost.css +0 -0
  235. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/style/boost.js +0 -0
  236. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/style/demo.html +0 -0
  237. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/bdd/features/adapt.feature +0 -0
  238. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/bdd/features/browse.feature +0 -0
  239. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/bdd/features/count.feature +0 -0
  240. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/bdd/features/discover.feature +0 -0
  241. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/bdd/features/doctor.feature +0 -0
  242. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/bdd/features/environment.py +0 -0
  243. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/bdd/features/explain.feature +0 -0
  244. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/bdd/features/index.feature +0 -0
  245. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/bdd/features/install.feature +0 -0
  246. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/bdd/features/list.feature +0 -0
  247. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/bdd/features/mcp.feature +0 -0
  248. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/bdd/features/search.feature +0 -0
  249. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/bdd/features/steps/cli_steps.py +0 -0
  250. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/bdd/features/steps/discovery_steps.py +0 -0
  251. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/bdd/features/steps/mcp_steps.py +0 -0
  252. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/bdd/features/steps/quality_steps.py +0 -0
  253. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/conftest.py +0 -0
  254. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/eval/baseline.json +0 -0
  255. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/eval/explain.jsonl +0 -0
  256. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/eval/golden.jsonl +0 -0
  257. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/eval/recommend.jsonl +0 -0
  258. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/eval/taps.txt +0 -0
  259. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/functional/test_cli_adapt.py +0 -0
  260. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/functional/test_cli_bmad.py +0 -0
  261. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/functional/test_cli_configuration.py +0 -0
  262. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/functional/test_cli_discovery.py +0 -0
  263. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/functional/test_cli_hooks.py +0 -0
  264. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/functional/test_cli_info.py +0 -0
  265. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/functional/test_cli_intelligence.py +0 -0
  266. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/functional/test_cli_pkg.py +0 -0
  267. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/functional/test_cli_quality.py +0 -0
  268. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/functional/test_cli_taps.py +0 -0
  269. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/functional/test_cli_team.py +0 -0
  270. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/functional/test_everyday_loop.py +0 -0
  271. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/functional/test_property_parsers.py +0 -0
  272. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/make_fixture.py +0 -0
  273. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/perf/test_benchmarks.py +0 -0
  274. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/smoke.sh +0 -0
  275. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_adapters.py +0 -0
  276. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_agents.py +0 -0
  277. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_ai.py +0 -0
  278. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_catalog.py +0 -0
  279. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_claude_settings.py +0 -0
  280. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_cliparse.py +0 -0
  281. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_config.py +0 -0
  282. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_dense.py +0 -0
  283. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_dense_fallback.py +0 -0
  284. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_docs_pages_linked.py +0 -0
  285. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_embed.py +0 -0
  286. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_errors_and_cli_table.py +0 -0
  287. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_frontmatter.py +0 -0
  288. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_gitutil.py +0 -0
  289. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_imperative.py +0 -0
  290. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_import_budget.py +0 -0
  291. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_injectscan.py +0 -0
  292. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_journal.py +0 -0
  293. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_lockfile.py +0 -0
  294. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_logs.py +0 -0
  295. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_mcp.py +0 -0
  296. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_mutation_hardening.py +0 -0
  297. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_nethttp.py +0 -0
  298. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_output.py +0 -0
  299. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_paths.py +0 -0
  300. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_pkg_confusions.py +0 -0
  301. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_pkg_injection.py +0 -0
  302. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_pkg_secrets.py +0 -0
  303. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_policy.py +0 -0
  304. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_rag.py +0 -0
  305. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_registries_fresh.py +0 -0
  306. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_registry.py +0 -0
  307. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_roadmap_fresh.py +0 -0
  308. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_rules.py +0 -0
  309. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_secretscan.py +0 -0
  310. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_serve.py +0 -0
  311. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_spin.py +0 -0
  312. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_stackprobe.py +0 -0
  313. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_staleness.py +0 -0
  314. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_store.py +0 -0
  315. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_token_parity.py +0 -0
  316. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_typosquat.py +0 -0
  317. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_updatediff.py +0 -0
  318. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_util.py +0 -0
  319. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_version.py +0 -0
  320. {boost_skill_cli-1.0.155 → boost_skill_cli-1.0.157}/tests/unit/test_workflows.py +0 -0
@@ -195,9 +195,9 @@ cython_debug/
195
195
  .abstra/
196
196
 
197
197
  # Visual Studio Code
198
- # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
198
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
199
199
  # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
200
- # and can be added to the global gitignore or merged into this file. However, if you prefer,
200
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
201
201
  # you could uncomment the following to ignore the entire vscode folder
202
202
  # .vscode/
203
203
  # Temporary file for partial code execution
@@ -0,0 +1,17 @@
1
+ # gitleaks configuration — secret-scanning gate (see .github/workflows/ci.yml).
2
+ #
3
+ # Extends gitleaks' upstream default ruleset (which covers cloud keys, tokens,
4
+ # private keys, high-entropy strings, …) and allowlists the one place boost
5
+ # ships *synthetic* secrets on purpose: its own secret-scanner test fixtures.
6
+ # Everything else — source, docs, real history — is scanned unmodified.
7
+
8
+ title = "boost gitleaks config"
9
+
10
+ [extend]
11
+ useDefault = true
12
+
13
+ [[allowlists]]
14
+ description = "boost's own secret-scanner tests ship synthetic private keys / tokens by design (they exist to prove core/secretscan.py flags them)"
15
+ paths = [
16
+ '''tests/unit/test_secretscan\.py''',
17
+ ]
@@ -0,0 +1,67 @@
1
+ # Shift-left the `make lint` gate to *before* the commit, so ruff / mypy /
2
+ # codespell / whitespace fixes land locally instead of failing in CI.
3
+ #
4
+ # pip install pre-commit && pre-commit install # once — hooks then run on `git commit`
5
+ # pre-commit run --all-files # run everything right now
6
+ #
7
+ # pre-commit.ci (free for open source) runs these on every PR and pushes the
8
+ # auto-fixes back onto the branch — see the `ci:` block. Versions below are
9
+ # pinned to match the tools `make lint` runs; bump them together.
10
+ ci:
11
+ autofix_prs: true
12
+ autoupdate_schedule: monthly
13
+ # mypy is a `repo: local` hook that needs the project's venv — pre-commit.ci
14
+ # builds isolated hook envs and can't provide it, so `make lint` / CI own it.
15
+ skip: [mypy]
16
+
17
+ minimum_pre_commit_version: "3.5.0"
18
+
19
+ repos:
20
+ - repo: https://github.com/pre-commit/pre-commit-hooks
21
+ rev: v6.0.0
22
+ hooks:
23
+ # Whitespace fixers skip the generated boards (build_roadmap.py owns their
24
+ # bytes — a drift check would fight this hook), the loop-edited roadmap
25
+ # item data (many parallel branches touch these; a whitespace churn there
26
+ # means needless merge conflicts) and IDE files under .idea/.
27
+ - id: trailing-whitespace
28
+ exclude: &data_and_generated '^(docs/(roadmap|design-roadmap)\.html$|docs/roadmap/items/|\.idea/)'
29
+ - id: end-of-file-fixer
30
+ exclude: *data_and_generated
31
+ - id: mixed-line-ending
32
+ args: [--fix=lf]
33
+ exclude: *data_and_generated
34
+ - id: check-merge-conflict
35
+ - id: check-yaml
36
+ - id: check-toml
37
+ - id: check-added-large-files
38
+
39
+ # Ruff — pinned to the version in `make lint`; reads the same [tool.ruff]
40
+ # config from pyproject.toml and is scoped to the gate's paths.
41
+ - repo: https://github.com/astral-sh/ruff-pre-commit
42
+ rev: v0.15.22
43
+ hooks:
44
+ - id: ruff
45
+ args: [--fix]
46
+ files: ^(boost_cli|tests)/.*\.py$
47
+
48
+ # codespell — same version and [tool.codespell] config (skip / ignore lists)
49
+ # as `make lint`, scoped to the same targets: boost_cli, docs, README.
50
+ - repo: https://github.com/codespell-project/codespell
51
+ rev: v2.4.3
52
+ hooks:
53
+ - id: codespell
54
+ additional_dependencies: [tomli]
55
+ files: ^(boost_cli/|docs/|README\.md)
56
+
57
+ # mypy — run from the project venv so it matches `make lint` exactly
58
+ # (config drives it: files = ["boost_cli"]). Local so stdlib/editable
59
+ # resolution is identical; skipped on pre-commit.ci (see `ci.skip`).
60
+ - repo: local
61
+ hooks:
62
+ - id: mypy
63
+ name: mypy (boost_cli)
64
+ entry: mypy
65
+ language: system
66
+ pass_filenames: false
67
+ types: [python]
@@ -13,6 +13,21 @@ make venv # pytest, coverage, mutmut, ruff, mypy — runtime stays stdl
13
13
  Every test runs against a throwaway `$HOME`, so nothing touches your real
14
14
  agent configs.
15
15
 
16
+ ### Pre-commit hooks (recommended)
17
+
18
+ Catch the `make lint` findings *before* they reach CI:
19
+
20
+ ```bash
21
+ pip install pre-commit && pre-commit install # once
22
+ pre-commit run --all-files # or run everything now
23
+ ```
24
+
25
+ `git commit` then runs ruff, mypy, codespell and the whitespace fixers on your
26
+ staged files. The hooks in [`.pre-commit-config.yaml`](.pre-commit-config.yaml)
27
+ are pinned to the same tool versions the lint gate uses, and
28
+ [pre-commit.ci](https://pre-commit.ci) runs them on every PR and pushes any
29
+ auto-fixes straight back onto the branch.
30
+
16
31
  ## The gates (CI runs all of these)
17
32
 
18
33
  | Command | Gate |
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.155
3
+ Version: 1.0.157
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.155'
22
- __version_tuple__ = version_tuple = (1, 0, 155)
21
+ __version__ = version = '1.0.157'
22
+ __version_tuple__ = version_tuple = (1, 0, 157)
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.155
3
+ Version: 1.0.157
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -1,5 +1,7 @@
1
1
  .gitattributes
2
2
  .gitignore
3
+ .gitleaks.toml
4
+ .pre-commit-config.yaml
3
5
  CLAUDE.md
4
6
  CONTRIBUTING.md
5
7
  LICENSE
@@ -281,6 +283,7 @@ tests/unit/test_docs_pages_linked.py
281
283
  tests/unit/test_embed.py
282
284
  tests/unit/test_errors_and_cli_table.py
283
285
  tests/unit/test_frontmatter.py
286
+ tests/unit/test_gitleaks_config.py
284
287
  tests/unit/test_gitutil.py
285
288
  tests/unit/test_imperative.py
286
289
  tests/unit/test_import_budget.py
@@ -2,15 +2,15 @@
2
2
  id: secret-scanning-gitleaks-push-protection
3
3
  board: code
4
4
  section: health
5
- status: planned
5
+ status: shipped
6
6
  category: Security · Secrets
7
7
  complexity: S
8
8
  impact: Med
9
9
  wow: 3
10
10
  note: pre-commit-able
11
11
  order: 4
12
- owner:
13
- pr:
12
+ owner: loop/gitleaks
13
+ pr: 180
14
14
  title: Secret scanning — <code>gitleaks</code> + push protection
15
15
  ---
16
16
  Scan the full history and every PR diff for leaked tokens, keys and
@@ -2,15 +2,15 @@
2
2
  id: shift-left-gate-pre-commit-pre-commit-ci
3
3
  board: code
4
4
  section: dx
5
- status: planned
5
+ status: shipped
6
6
  category: DX · Infra
7
7
  complexity: S
8
8
  impact: High
9
9
  wow: 4
10
10
  note: auto-fix PRs
11
11
  order: 2
12
- owner:
13
- pr:
12
+ owner: loop/pre-commit
13
+ pr: 181
14
14
  title: Shift-left gate — <code>pre-commit</code> + pre-commit.ci
15
15
  ---
16
16
  A <code>.pre-commit-config.yaml</code> runs ruff, mypy, codespell and the
@@ -987,7 +987,7 @@ harness.</p>
987
987
  </article>
988
988
 
989
989
  <article class="cap rcard">
990
- <div class="head"><span class="pill planned">Planned</span><span class="cat">Security · Secrets</span></div>
990
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Security · Secrets</span></div>
991
991
  <h3>Secret scanning — <code>gitleaks</code> + push protection</h3>
992
992
  <p>Scan the full history and every PR diff for leaked tokens, keys and
993
993
  PyPI credentials with the free <code>gitleaks</code> action, paired
@@ -1325,7 +1325,7 @@ improvement is real (or isn't)."</p>
1325
1325
  </article>
1326
1326
 
1327
1327
  <article class="cap rcard">
1328
- <div class="head"><span class="pill planned">Planned</span><span class="cat">DX · Infra</span></div>
1328
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">DX · Infra</span></div>
1329
1329
  <h3>Shift-left gate — <code>pre-commit</code> + pre-commit.ci</h3>
1330
1330
  <p>A <code>.pre-commit-config.yaml</code> runs ruff, mypy, codespell and the
1331
1331
  whitespace fixers <em>before</em> code ever reaches CI, and the free-for-OSS
@@ -0,0 +1,59 @@
1
+ """Unit test: .gitleaks.toml — the secret-scanning gate's configuration.
2
+
3
+ Validates the config is well-formed and does what the CI gate relies on:
4
+ extend the upstream default ruleset and allowlist boost's own synthetic
5
+ secret-scanner fixtures (so the gate stays green on deliberate test data while
6
+ still catching a real leak anywhere else).
7
+ """
8
+ from __future__ import annotations
9
+
10
+ import sys
11
+ from pathlib import Path
12
+
13
+ import pytest
14
+
15
+ _CONFIG = Path(__file__).resolve().parents[2] / ".gitleaks.toml"
16
+
17
+ pytestmark = [
18
+ pytest.mark.skipif(not _CONFIG.exists(),
19
+ reason="repo-root .gitleaks.toml not reachable (e.g. mutation sandbox)"),
20
+ pytest.mark.skipif(sys.version_info < (3, 11),
21
+ reason="tomllib is stdlib only on Python 3.11+"),
22
+ ]
23
+
24
+
25
+ def _load():
26
+ import tomllib
27
+ with open(_CONFIG, "rb") as f:
28
+ return tomllib.load(f)
29
+
30
+
31
+ def test_is_valid_toml():
32
+ assert isinstance(_load(), dict)
33
+
34
+
35
+ def test_extends_the_default_ruleset():
36
+ # Without useDefault the config would replace, not extend, gitleaks' rules —
37
+ # silently disabling every built-in detector.
38
+ cfg = _load()
39
+ assert cfg.get("extend", {}).get("useDefault") is True
40
+
41
+
42
+ def test_allowlists_the_secretscan_fixtures():
43
+ cfg = _load()
44
+ allowlists = cfg.get("allowlists") or ([cfg["allowlist"]] if "allowlist" in cfg else [])
45
+ paths = [p for al in allowlists for p in al.get("paths", [])]
46
+ assert any("test_secretscan" in p for p in paths), (
47
+ "the synthetic-secret fixture file must be allowlisted or the gate "
48
+ "reports boost's own test data as a leak")
49
+
50
+
51
+ def test_allowlist_does_not_blanket_ignore_tests():
52
+ # A too-broad `tests/` allowlist would blind the scanner to a real secret
53
+ # committed in any other test file. Keep it scoped to the fixture file.
54
+ cfg = _load()
55
+ allowlists = cfg.get("allowlists") or ([cfg["allowlist"]] if "allowlist" in cfg else [])
56
+ paths = [p for al in allowlists for p in al.get("paths", [])]
57
+ for p in paths:
58
+ assert p.rstrip("$").rstrip("/") not in ("tests", "tests/", r"tests/.*", "tests"), \
59
+ "allowlist path %r is too broad — scope it to the fixture file" % p