boost-skill-cli 1.0.87__tar.gz → 1.0.89__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 (236) hide show
  1. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/PKG-INFO +3 -3
  2. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/README.md +2 -2
  3. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/_version.py +2 -2
  4. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/commands/pkg.py +5 -2
  5. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/ai.py +2 -2
  6. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/dense.py +1 -1
  7. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/embed.py +2 -2
  8. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_skill_cli.egg-info/PKG-INFO +3 -3
  9. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
  10. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +4 -4
  11. boost_skill_cli-1.0.89/docs/roadmap/items/workspace-scope-install.md +29 -0
  12. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap.html +28 -3
  13. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/pyproject.toml +20 -2
  14. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/.gitattributes +0 -0
  15. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/.gitignore +0 -0
  16. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/CLAUDE.md +0 -0
  17. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/CONTRIBUTING.md +0 -0
  18. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/LICENSE +0 -0
  19. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/MANIFEST.in +0 -0
  20. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/Makefile +0 -0
  21. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/SECURITY.md +0 -0
  22. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost +0 -0
  23. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/__init__.py +0 -0
  24. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/__main__.py +0 -0
  25. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/cli.py +0 -0
  26. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/cliparse.py +0 -0
  27. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/commands/__init__.py +0 -0
  28. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/commands/bmad.py +0 -0
  29. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/commands/configuration.py +0 -0
  30. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/commands/discovery.py +0 -0
  31. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/commands/hooks.py +0 -0
  32. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/commands/info.py +0 -0
  33. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/commands/intelligence.py +0 -0
  34. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/commands/quality.py +0 -0
  35. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/commands/taps.py +0 -0
  36. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/commands/team.py +0 -0
  37. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/__init__.py +0 -0
  38. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/agents.py +0 -0
  39. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/catalog.py +0 -0
  40. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/claude_settings.py +0 -0
  41. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/config.py +0 -0
  42. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/frontmatter.py +0 -0
  43. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/gitutil.py +0 -0
  44. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/journal.py +0 -0
  45. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/lockfile.py +0 -0
  46. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/logs.py +0 -0
  47. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/mcp.py +0 -0
  48. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/output.py +0 -0
  49. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/paths.py +0 -0
  50. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/policy.py +0 -0
  51. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/rag.py +0 -0
  52. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/registry.py +0 -0
  53. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/staleness.py +0 -0
  54. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/store.py +0 -0
  55. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/core/util.py +0 -0
  56. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/data/registries.json +0 -0
  57. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/errors.py +0 -0
  58. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_cli/spin.py +0 -0
  59. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  60. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  61. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_skill_cli.egg-info/requires.txt +0 -0
  62. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/boost_skill_cli.egg-info/top_level.txt +0 -0
  63. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/.claude/settings.local.json +0 -0
  64. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/DEBUGGING.md +0 -0
  65. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/demo.gif +0 -0
  66. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/demo.tape +0 -0
  67. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/design-roadmap.html +0 -0
  68. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/index.html +0 -0
  69. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/mcp-hub.html +0 -0
  70. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/rag-architecture.md +0 -0
  71. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D01.md +0 -0
  72. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D02.md +0 -0
  73. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D03.md +0 -0
  74. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D04.md +0 -0
  75. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D05.md +0 -0
  76. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D06.md +0 -0
  77. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D07.md +0 -0
  78. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D08.md +0 -0
  79. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D09.md +0 -0
  80. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D10.md +0 -0
  81. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D11.md +0 -0
  82. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D12.md +0 -0
  83. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D13.md +0 -0
  84. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D14.md +0 -0
  85. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D15.md +0 -0
  86. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D16.md +0 -0
  87. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D17.md +0 -0
  88. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D18.md +0 -0
  89. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D19.md +0 -0
  90. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D20.md +0 -0
  91. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D21.md +0 -0
  92. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D22.md +0 -0
  93. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D23.md +0 -0
  94. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D24.md +0 -0
  95. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D25.md +0 -0
  96. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/BOOST-D26.md +0 -0
  97. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  98. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  99. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  100. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  101. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  102. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  103. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  104. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  105. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  106. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  107. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  108. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  109. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  110. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  111. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  112. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  113. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  114. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  115. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  116. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  117. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  118. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  119. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  120. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  121. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  122. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  123. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  124. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  125. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  126. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  127. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  128. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  129. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  130. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  131. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  132. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  133. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  134. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  135. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  136. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  137. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  138. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  139. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  140. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  141. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  142. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  143. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  144. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  145. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  146. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  147. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  148. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  149. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  150. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  151. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  152. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  153. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  154. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  155. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  156. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  157. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  158. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  159. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  160. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  161. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  162. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  163. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  164. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  165. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  166. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  167. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  168. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  169. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  170. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  171. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  172. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  173. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  174. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  175. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  176. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  177. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  178. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  179. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  180. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  181. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  182. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  183. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  184. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/index.html +0 -0
  185. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/scripts/build_registries.py +0 -0
  186. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/scripts/build_roadmap.py +0 -0
  187. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/scripts/mutation_gate.py +0 -0
  188. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/setup.cfg +0 -0
  189. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/style/README.md +0 -0
  190. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/style/boost.css +0 -0
  191. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/style/boost.js +0 -0
  192. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/style/demo.html +0 -0
  193. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/conftest.py +0 -0
  194. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/functional/test_cli_bmad.py +0 -0
  195. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/functional/test_cli_configuration.py +0 -0
  196. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/functional/test_cli_discovery.py +0 -0
  197. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/functional/test_cli_hooks.py +0 -0
  198. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/functional/test_cli_info.py +0 -0
  199. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/functional/test_cli_intelligence.py +0 -0
  200. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/functional/test_cli_pkg.py +0 -0
  201. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/functional/test_cli_quality.py +0 -0
  202. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/functional/test_cli_taps.py +0 -0
  203. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/functional/test_cli_team.py +0 -0
  204. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/functional/test_everyday_loop.py +0 -0
  205. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/make_fixture.py +0 -0
  206. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/smoke.sh +0 -0
  207. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_agents.py +0 -0
  208. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_ai.py +0 -0
  209. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_catalog.py +0 -0
  210. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_claude_settings.py +0 -0
  211. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_cliparse.py +0 -0
  212. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_config.py +0 -0
  213. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_dense.py +0 -0
  214. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_dense_fallback.py +0 -0
  215. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_embed.py +0 -0
  216. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_errors_and_cli_table.py +0 -0
  217. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_frontmatter.py +0 -0
  218. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_gitutil.py +0 -0
  219. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_journal.py +0 -0
  220. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_lockfile.py +0 -0
  221. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_logs.py +0 -0
  222. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_mcp.py +0 -0
  223. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_mutation_hardening.py +0 -0
  224. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_output.py +0 -0
  225. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_paths.py +0 -0
  226. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_policy.py +0 -0
  227. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_rag.py +0 -0
  228. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_registries_fresh.py +0 -0
  229. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_registry.py +0 -0
  230. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_roadmap_fresh.py +0 -0
  231. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_spin.py +0 -0
  232. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_staleness.py +0 -0
  233. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_store.py +0 -0
  234. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_token_parity.py +0 -0
  235. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_util.py +0 -0
  236. {boost_skill_cli-1.0.87 → boost_skill_cli-1.0.89}/tests/unit/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.87
3
+ Version: 1.0.89
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -731,8 +731,8 @@ update all of them, you run one command.
731
731
  boost is built in the open. Two living boards — generated from
732
732
  `docs/roadmap/items/*.md` — track what's shipped, in flight, and planned:
733
733
 
734
- - **[Code roadmap](https://jonnyeclectic.github.io/boost/roadmap.html)** — engine, correctness, and tooling work
735
- - **[Design roadmap](https://jonnyeclectic.github.io/boost/design-roadmap.html)** — the Visual Guide and docsite aesthetics
734
+ - **[Code roadmap](https://jonnyeclectic.github.io/boost/docs/roadmap.html)** — engine, correctness, and tooling work
735
+ - **[Design roadmap](https://jonnyeclectic.github.io/boost/docs/design-roadmap.html)** — the Visual Guide and docsite aesthetics
736
736
 
737
737
  Both are reachable from the [Visual Guide](https://jonnyeclectic.github.io/boost/) nav.
738
738
 
@@ -25,8 +25,8 @@ update all of them, you run one command.
25
25
  boost is built in the open. Two living boards — generated from
26
26
  `docs/roadmap/items/*.md` — track what's shipped, in flight, and planned:
27
27
 
28
- - **[Code roadmap](https://jonnyeclectic.github.io/boost/roadmap.html)** — engine, correctness, and tooling work
29
- - **[Design roadmap](https://jonnyeclectic.github.io/boost/design-roadmap.html)** — the Visual Guide and docsite aesthetics
28
+ - **[Code roadmap](https://jonnyeclectic.github.io/boost/docs/roadmap.html)** — engine, correctness, and tooling work
29
+ - **[Design roadmap](https://jonnyeclectic.github.io/boost/docs/design-roadmap.html)** — the Visual Guide and docsite aesthetics
30
30
 
31
31
  Both are reachable from the [Visual Guide](https://jonnyeclectic.github.io/boost/) nav.
32
32
 
@@ -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.87'
22
- __version_tuple__ = version_tuple = (1, 0, 87)
21
+ __version__ = version = '1.0.89'
22
+ __version_tuple__ = version_tuple = (1, 0, 89)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -771,8 +771,11 @@ def _snapshot_restore(snap_id: str) -> int:
771
771
  child.unlink()
772
772
  try:
773
773
  tf.extractall(str(root), members=members, filter="data")
774
- except TypeError: # Python < 3.12
775
- tf.extractall(str(root), members=members)
774
+ except TypeError: # Python < 3.12: no data filter available
775
+ # snapshots are archives boost itself produced under the user's own
776
+ # store (never fetched from a remote), so this legacy-interpreter
777
+ # fallback restores a locally-trusted tar.
778
+ tf.extractall(str(root), members=members) # noqa: S202
776
779
  for action in store.sync_apply(store.sync_plan()):
777
780
  out.ok(action)
778
781
  journal.log("snapshot-restore", snap_id)
@@ -82,7 +82,7 @@ def _ask_api(prompt: str, system: Optional[str], model: str,
82
82
  }
83
83
  if system:
84
84
  body["system"] = system
85
- req = urllib.request.Request(
85
+ req = urllib.request.Request( # noqa: S310 API_URL is a hardcoded https endpoint
86
86
  API_URL,
87
87
  data=json.dumps(body).encode(),
88
88
  headers={
@@ -93,7 +93,7 @@ def _ask_api(prompt: str, system: Optional[str], model: str,
93
93
  method="POST",
94
94
  )
95
95
  try:
96
- with urllib.request.urlopen(req, timeout=timeout) as resp:
96
+ with urllib.request.urlopen(req, timeout=timeout) as resp: # noqa: S310 fixed https endpoint
97
97
  data = json.loads(resp.read().decode())
98
98
  except (urllib.error.URLError, TimeoutError, json.JSONDecodeError, OSError):
99
99
  return None
@@ -237,7 +237,7 @@ def retrieve(query: str, k: int = 60, kind: Optional[str] = None,
237
237
  if not knn:
238
238
  return []
239
239
  by_id = {r[0]: (r[1], r[2], r[3], r[4]) for r in con.execute(
240
- "SELECT id, name, tap, kind, snip FROM chunks WHERE id IN (%s)"
240
+ "SELECT id, name, tap, kind, snip FROM chunks WHERE id IN (%s)" # noqa: S608 interpolates only `?` placeholders; ids are bound params
241
241
  % ",".join("?" * len(knn)), [rid for rid, _d in knn])}
242
242
  finally:
243
243
  con.close()
@@ -91,12 +91,12 @@ def embed(texts: List[str], input_type: Optional[str] = None,
91
91
 
92
92
  def _post(url: str, key: str, payload: dict, timeout: int) -> Optional[dict]:
93
93
  data = json.dumps(payload).encode("utf-8")
94
- req = urllib.request.Request(url, data=data, headers={
94
+ req = urllib.request.Request(url, data=data, headers={ # noqa: S310 url is a hardcoded VOYAGE_URL/OPENAI_URL constant
95
95
  "Authorization": "Bearer %s" % key,
96
96
  "Content-Type": "application/json",
97
97
  })
98
98
  try:
99
- with urllib.request.urlopen(req, timeout=timeout) as resp:
99
+ with urllib.request.urlopen(req, timeout=timeout) as resp: # noqa: S310 fixed https endpoint
100
100
  return json.loads(resp.read())
101
101
  except (urllib.error.URLError, OSError, ValueError):
102
102
  return None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.87
3
+ Version: 1.0.89
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -731,8 +731,8 @@ update all of them, you run one command.
731
731
  boost is built in the open. Two living boards — generated from
732
732
  `docs/roadmap/items/*.md` — track what's shipped, in flight, and planned:
733
733
 
734
- - **[Code roadmap](https://jonnyeclectic.github.io/boost/roadmap.html)** — engine, correctness, and tooling work
735
- - **[Design roadmap](https://jonnyeclectic.github.io/boost/design-roadmap.html)** — the Visual Guide and docsite aesthetics
734
+ - **[Code roadmap](https://jonnyeclectic.github.io/boost/docs/roadmap.html)** — engine, correctness, and tooling work
735
+ - **[Design roadmap](https://jonnyeclectic.github.io/boost/docs/design-roadmap.html)** — the Visual Guide and docsite aesthetics
736
736
 
737
737
  Both are reachable from the [Visual Guide](https://jonnyeclectic.github.io/boost/) nav.
738
738
 
@@ -181,6 +181,7 @@ docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md
181
181
  docs/roadmap/items/windows-in-the-ci-matrix.md
182
182
  docs/roadmap/items/workflow-linting-actionlint.md
183
183
  docs/roadmap/items/workflow-sast-zizmor.md
184
+ docs/roadmap/items/workspace-scope-install.md
184
185
  scripts/build_registries.py
185
186
  scripts/build_roadmap.py
186
187
  scripts/mutation_gate.py
@@ -2,15 +2,15 @@
2
2
  id: security-linting-bandit-via-ruff-s-rules
3
3
  board: code
4
4
  section: health
5
- status: planned
5
+ status: shipped
6
6
  category: Security · Vuln
7
7
  complexity: S
8
8
  impact: High
9
9
  wow: 3
10
- note: 0 new deps
10
+ note: extend-select S; git/swallow rules ignored, real cases noqa'd
11
11
  order: 1
12
- owner:
13
- pr:
12
+ owner: loop/bandit-s-rules
13
+ pr: 99
14
14
  title: Security linting — <code>bandit</code> via ruff <code>S</code> rules
15
15
  ---
16
16
  Turn on the <em>flake8-bandit</em> (<code>S</code>) rule family already
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: workspace-scope-install
3
+ board: code
4
+ section: internals
5
+ status: planned
6
+ category: Install engine · Scope
7
+ complexity: L
8
+ impact: High
9
+ wow: 4
10
+ note: --global vs --local, project .claude/
11
+ order: 22
12
+ owner:
13
+ pr:
14
+ title: Workspace scope — <code>boost install --local</code> into the project
15
+ ---
16
+ boost is user-global only: the store is <code>~/.agents/skills</code> and every
17
+ install symlinks into home-level agent dirs (<code>~/.claude/skills</code>,
18
+ <code>~/.cursor/skills</code>, <code>~/.windsurf/skills</code>). There is
19
+ no per-project scope — <code>install</code> takes <code>--agent</code>
20
+ (which agents) but no <code>--global</code>/<code>--local</code>. Add a
21
+ workspace paradigm mirroring <code>npm</code> (local vs
22
+ <code>-g</code>): <code>boost install &lt;skill&gt; --local</code> writes
23
+ into the current repo's <code>.claude/skills/</code> (and the other
24
+ agents' project dirs), and — paired with rule install — merges a rule
25
+ into the project's <code>./CLAUDE.md</code> rather than the global one,
26
+ so a team can commit its skills and rules with the repo. Needs a
27
+ per-scope store/lock, scope resolution (walk up for the nearest
28
+ project root), and <code>list</code>/<code>sync</code>/<code>uninstall</code>
29
+ that understand both scopes.
@@ -118,7 +118,7 @@
118
118
  <div class="stat"><b>10</b><span>Shipped</span></div>
119
119
  <div class="stat"><b>3</b><span>Next up</span></div>
120
120
  <div class="stat"><b>4</b><span>Planned</span></div>
121
- <div class="stat"><b>88</b><span>Loop finds</span></div>
121
+ <div class="stat"><b>89</b><span>Loop finds</span></div>
122
122
  <!-- /ROADMAP:stats -->
123
123
  </div>
124
124
  </section>
@@ -640,6 +640,31 @@
640
640
  <span class="m">rules are indexed but never installed</span>
641
641
  </div>
642
642
  </article>
643
+
644
+ <article class="cap rcard">
645
+ <div class="head"><span class="pill planned">Planned</span><span class="cat">Install engine · Scope</span></div>
646
+ <h3>Workspace scope — <code>boost install --local</code> into the project</h3>
647
+ <p>boost is user-global only: the store is <code>~/.agents/skills</code> and every
648
+ install symlinks into home-level agent dirs (<code>~/.claude/skills</code>,
649
+ <code>~/.cursor/skills</code>, <code>~/.windsurf/skills</code>). There is
650
+ no per-project scope — <code>install</code> takes <code>--agent</code>
651
+ (which agents) but no <code>--global</code>/<code>--local</code>. Add a
652
+ workspace paradigm mirroring <code>npm</code> (local vs
653
+ <code>-g</code>): <code>boost install &lt;skill&gt; --local</code> writes
654
+ into the current repo's <code>.claude/skills/</code> (and the other
655
+ agents' project dirs), and — paired with rule install — merges a rule
656
+ into the project's <code>./CLAUDE.md</code> rather than the global one,
657
+ so a team can commit its skills and rules with the repo. Needs a
658
+ per-scope store/lock, scope resolution (walk up for the nearest
659
+ project root), and <code>list</code>/<code>sync</code>/<code>uninstall</code>
660
+ that understand both scopes.</p>
661
+ <div class="meta">
662
+ <span class="m">Complexity <b>L</b></span>
663
+ <span class="m hi">Impact <b>High</b></span>
664
+ <span class="m">Wow <b class="wow">★★★★</b></span>
665
+ <span class="m">--global vs --local, project .claude/</span>
666
+ </div>
667
+ </article>
643
668
  <!-- /ROADMAP:cards -->
644
669
 
645
670
  </div>
@@ -656,7 +681,7 @@
656
681
 
657
682
  <!-- ROADMAP:cards section=health -->
658
683
  <article class="cap rcard">
659
- <div class="head"><span class="pill planned">Planned</span><span class="cat">Security · Vuln</span></div>
684
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Security · Vuln</span></div>
660
685
  <h3>Security linting — <code>bandit</code> via ruff <code>S</code> rules</h3>
661
686
  <p>Turn on the <em>flake8-bandit</em> (<code>S</code>) rule family already
662
687
  bundled in ruff — one line in <code>pyproject.toml</code>, zero new
@@ -669,7 +694,7 @@
669
694
  <span class="m">Complexity <b>S</b></span>
670
695
  <span class="m hi">Impact <b>High</b></span>
671
696
  <span class="m">Wow <b class="wow">★★★</b></span>
672
- <span class="m">0 new deps</span>
697
+ <span class="m">extend-select S; git/swallow rules ignored, real cases noqa'd</span>
673
698
  </div>
674
699
  </article>
675
700
 
@@ -59,9 +59,27 @@ boost_cli = ["data/*.json"]
59
59
  [tool.ruff]
60
60
  target-version = "py39"
61
61
 
62
+ [tool.ruff.lint]
63
+ # Turn on flake8-bandit (S) — Python SAST smells ruff's default E/F set is
64
+ # blind to: shell=True, assert-as-runtime-check, tempfile.mktemp, unsafe
65
+ # yaml.load, hardcoded secrets, weak hashing. Zero new tools.
66
+ extend-select = ["S"]
67
+ ignore = [
68
+ # boost is a CLI that shells out to git by design: every subprocess call
69
+ # passes an argument LIST (never a shell string) and resolves `git` via
70
+ # PATH on purpose, so these two fire only on safe, intentional code.
71
+ "S603", # subprocess-without-shell-equals-true (list form is not injectable)
72
+ "S607", # start-process-with-partial-path (`git` on PATH is deliberate)
73
+ # Best-effort cleanup/logging swallows are a pervasive, commented pattern
74
+ # (logger teardown, corrupt-lock preservation, the crash handler) where a
75
+ # raised exception would be worse than the one being swallowed.
76
+ "S110", # try-except-pass
77
+ ]
78
+
62
79
  [tool.ruff.lint.per-file-ignores]
63
- # short throwaway names and lambda helpers are fine in tests
64
- "tests/*" = ["E741", "E731"]
80
+ # short throwaway names and lambda helpers are fine in tests; asserts are the
81
+ # whole point of a test suite, and tests legitimately open fixture URLs.
82
+ "tests/*" = ["E741", "E731", "S101", "S310"]
65
83
 
66
84
  [tool.codespell]
67
85
  # Spell-check user-facing text (see `make lint`: boost_cli, docs, README).
File without changes