boost-skill-cli 1.0.133__tar.gz → 1.0.135__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 (288) hide show
  1. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/PKG-INFO +1 -1
  2. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/_version.py +2 -2
  3. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_skill_cli.egg-info/PKG-INFO +1 -1
  4. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_skill_cli.egg-info/SOURCES.txt +3 -0
  5. boost_skill_cli-1.0.135/docs/roadmap/items/framework-adapter-langgraph.md +16 -0
  6. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap.html +12 -1
  7. boost_skill_cli-1.0.135/examples/README.md +34 -0
  8. boost_skill_cli-1.0.135/examples/adapt-demo.sh +110 -0
  9. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/.gitattributes +0 -0
  10. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/.gitignore +0 -0
  11. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/CLAUDE.md +0 -0
  12. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/CONTRIBUTING.md +0 -0
  13. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/LICENSE +0 -0
  14. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/MANIFEST.in +0 -0
  15. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/Makefile +0 -0
  16. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/README.md +0 -0
  17. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/SECURITY.md +0 -0
  18. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost +0 -0
  19. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/__init__.py +0 -0
  20. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/__main__.py +0 -0
  21. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/cli.py +0 -0
  22. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/cliparse.py +0 -0
  23. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/commands/__init__.py +0 -0
  24. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/commands/bmad.py +0 -0
  25. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/commands/configuration.py +0 -0
  26. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/commands/discovery.py +0 -0
  27. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/commands/hooks.py +0 -0
  28. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/commands/info.py +0 -0
  29. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/commands/intelligence.py +0 -0
  30. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/commands/pkg.py +0 -0
  31. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/commands/quality.py +0 -0
  32. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/commands/taps.py +0 -0
  33. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/commands/team.py +0 -0
  34. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/__init__.py +0 -0
  35. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/adapters.py +0 -0
  36. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/agents.py +0 -0
  37. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/ai.py +0 -0
  38. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/catalog.py +0 -0
  39. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/claude_settings.py +0 -0
  40. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/config.py +0 -0
  41. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/dense.py +0 -0
  42. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/embed.py +0 -0
  43. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/frontmatter.py +0 -0
  44. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/gitutil.py +0 -0
  45. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/imperative.py +0 -0
  46. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/injectscan.py +0 -0
  47. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/journal.py +0 -0
  48. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/lockfile.py +0 -0
  49. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/logs.py +0 -0
  50. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/mcp.py +0 -0
  51. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/nethttp.py +0 -0
  52. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/output.py +0 -0
  53. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/paths.py +0 -0
  54. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/policy.py +0 -0
  55. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/rag.py +0 -0
  56. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/registry.py +0 -0
  57. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/rules.py +0 -0
  58. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/secretscan.py +0 -0
  59. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/serve.py +0 -0
  60. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/stackprobe.py +0 -0
  61. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/staleness.py +0 -0
  62. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/store.py +0 -0
  63. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/typosquat.py +0 -0
  64. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/updatediff.py +0 -0
  65. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/util.py +0 -0
  66. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/core/workflows.py +0 -0
  67. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/data/registries.json +0 -0
  68. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/errors.py +0 -0
  69. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_cli/spin.py +0 -0
  70. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  71. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  72. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_skill_cli.egg-info/requires.txt +0 -0
  73. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/boost_skill_cli.egg-info/top_level.txt +0 -0
  74. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/.claude/settings.local.json +0 -0
  75. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/DEBUGGING.md +0 -0
  76. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/adapters.html +0 -0
  77. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/demo.gif +0 -0
  78. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/demo.tape +0 -0
  79. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/design-roadmap.html +0 -0
  80. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/eval.html +0 -0
  81. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/index.html +0 -0
  82. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/mcp-hub.html +0 -0
  83. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/rag-architecture.md +0 -0
  84. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D01.md +0 -0
  85. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D02.md +0 -0
  86. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D03.md +0 -0
  87. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D04.md +0 -0
  88. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D05.md +0 -0
  89. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D06.md +0 -0
  90. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D07.md +0 -0
  91. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D08.md +0 -0
  92. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D09.md +0 -0
  93. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D10.md +0 -0
  94. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D11.md +0 -0
  95. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D12.md +0 -0
  96. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D13.md +0 -0
  97. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D14.md +0 -0
  98. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D15.md +0 -0
  99. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D16.md +0 -0
  100. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D17.md +0 -0
  101. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D18.md +0 -0
  102. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D19.md +0 -0
  103. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D20.md +0 -0
  104. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D21.md +0 -0
  105. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D22.md +0 -0
  106. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D23.md +0 -0
  107. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D24.md +0 -0
  108. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D25.md +0 -0
  109. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/BOOST-D26.md +0 -0
  110. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
  111. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
  112. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
  113. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
  114. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
  115. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
  116. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
  117. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
  118. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
  119. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
  120. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
  121. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/command-reference-docs-site.md +0 -0
  122. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
  123. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
  124. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
  125. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
  126. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
  127. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
  128. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
  129. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
  130. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
  131. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
  132. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
  133. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
  134. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
  135. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
  136. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
  137. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
  138. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
  139. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
  140. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/html-validation-html-validate.md +0 -0
  141. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
  142. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
  143. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
  144. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
  145. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
  146. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
  147. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
  148. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
  149. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
  150. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
  151. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
  152. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
  153. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
  154. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
  155. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
  156. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
  157. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
  158. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
  159. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
  160. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
  161. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
  162. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
  163. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
  164. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
  165. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
  166. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
  167. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
  168. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
  169. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
  170. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
  171. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
  172. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
  173. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
  174. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
  175. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
  176. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
  177. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
  178. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
  179. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
  180. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
  181. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
  182. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
  183. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
  184. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
  185. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
  186. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
  187. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
  188. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
  189. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
  190. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
  191. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
  192. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
  193. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
  194. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
  195. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
  196. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/typo-detection-codespell.md +0 -0
  197. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
  198. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
  199. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
  200. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/update-diff-before-apply.md +0 -0
  201. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
  202. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
  203. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
  204. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
  205. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
  206. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
  207. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
  208. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/docs/roadmap/items/workspace-scope-install.md +0 -0
  209. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/index.html +0 -0
  210. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/pyproject.toml +0 -0
  211. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/scripts/build_registries.py +0 -0
  212. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/scripts/build_roadmap.py +0 -0
  213. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/scripts/ensure_eval_corpus.sh +0 -0
  214. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/scripts/eval_explain.py +0 -0
  215. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/scripts/eval_recommend.py +0 -0
  216. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/scripts/eval_retrieval.py +0 -0
  217. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/scripts/mutation_gate.py +0 -0
  218. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/setup.cfg +0 -0
  219. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/style/README.md +0 -0
  220. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/style/boost.css +0 -0
  221. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/style/boost.js +0 -0
  222. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/style/demo.html +0 -0
  223. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/conftest.py +0 -0
  224. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/eval/baseline.json +0 -0
  225. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/eval/explain.jsonl +0 -0
  226. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/eval/golden.jsonl +0 -0
  227. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/eval/recommend.jsonl +0 -0
  228. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/eval/taps.txt +0 -0
  229. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/functional/test_cli_adapt.py +0 -0
  230. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/functional/test_cli_bmad.py +0 -0
  231. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/functional/test_cli_configuration.py +0 -0
  232. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/functional/test_cli_discovery.py +0 -0
  233. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/functional/test_cli_hooks.py +0 -0
  234. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/functional/test_cli_info.py +0 -0
  235. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/functional/test_cli_intelligence.py +0 -0
  236. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/functional/test_cli_pkg.py +0 -0
  237. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/functional/test_cli_quality.py +0 -0
  238. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/functional/test_cli_taps.py +0 -0
  239. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/functional/test_cli_team.py +0 -0
  240. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/functional/test_everyday_loop.py +0 -0
  241. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/functional/test_property_parsers.py +0 -0
  242. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/make_fixture.py +0 -0
  243. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/smoke.sh +0 -0
  244. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_adapters.py +0 -0
  245. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_agents.py +0 -0
  246. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_ai.py +0 -0
  247. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_catalog.py +0 -0
  248. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_claude_settings.py +0 -0
  249. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_cliparse.py +0 -0
  250. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_config.py +0 -0
  251. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_dense.py +0 -0
  252. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_dense_fallback.py +0 -0
  253. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_docs_pages_linked.py +0 -0
  254. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_embed.py +0 -0
  255. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_errors_and_cli_table.py +0 -0
  256. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_frontmatter.py +0 -0
  257. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_gitutil.py +0 -0
  258. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_imperative.py +0 -0
  259. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_injectscan.py +0 -0
  260. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_journal.py +0 -0
  261. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_lockfile.py +0 -0
  262. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_logs.py +0 -0
  263. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_mcp.py +0 -0
  264. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_mutation_hardening.py +0 -0
  265. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_nethttp.py +0 -0
  266. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_output.py +0 -0
  267. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_paths.py +0 -0
  268. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_pkg_confusions.py +0 -0
  269. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_pkg_injection.py +0 -0
  270. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_pkg_secrets.py +0 -0
  271. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_policy.py +0 -0
  272. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_rag.py +0 -0
  273. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_registries_fresh.py +0 -0
  274. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_registry.py +0 -0
  275. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_roadmap_fresh.py +0 -0
  276. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_rules.py +0 -0
  277. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_secretscan.py +0 -0
  278. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_serve.py +0 -0
  279. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_spin.py +0 -0
  280. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_stackprobe.py +0 -0
  281. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_staleness.py +0 -0
  282. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_store.py +0 -0
  283. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_token_parity.py +0 -0
  284. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_typosquat.py +0 -0
  285. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_updatediff.py +0 -0
  286. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_util.py +0 -0
  287. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_version.py +0 -0
  288. {boost_skill_cli-1.0.133 → boost_skill_cli-1.0.135}/tests/unit/test_workflows.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.133
3
+ Version: 1.0.135
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.133'
22
- __version_tuple__ = version_tuple = (1, 0, 133)
21
+ __version__ = version = '1.0.135'
22
+ __version_tuple__ = version_tuple = (1, 0, 135)
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.133
3
+ Version: 1.0.135
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -132,6 +132,7 @@ docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md
132
132
  docs/roadmap/items/finish-mutation-hardening-across-core.md
133
133
  docs/roadmap/items/fix-self-update-version-detection-dead-branch.md
134
134
  docs/roadmap/items/fork-safe-network-proxy-handler.md
135
+ docs/roadmap/items/framework-adapter-langgraph.md
135
136
  docs/roadmap/items/framework-adapters-boost-adapt.md
136
137
  docs/roadmap/items/frontmatter-scalar-over-coercion.md
137
138
  docs/roadmap/items/github-pages-deploy-is-broken-every-push.md
@@ -205,6 +206,8 @@ docs/roadmap/items/workflow-install-native-materialization.md
205
206
  docs/roadmap/items/workflow-linting-actionlint.md
206
207
  docs/roadmap/items/workflow-sast-zizmor.md
207
208
  docs/roadmap/items/workspace-scope-install.md
209
+ examples/README.md
210
+ examples/adapt-demo.sh
208
211
  scripts/build_registries.py
209
212
  scripts/build_roadmap.py
210
213
  scripts/ensure_eval_corpus.sh
@@ -0,0 +1,16 @@
1
+ ---
2
+ id: framework-adapter-langgraph
3
+ board: code
4
+ section: dx
5
+ status: planned
6
+ category: Interop
7
+ complexity: M
8
+ impact: Med
9
+ wow: 3
10
+ note:
11
+ order: 41
12
+ owner:
13
+ pr:
14
+ title: <code>boost adapt --to langgraph</code> — third framework renderer
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.
@@ -118,7 +118,7 @@
118
118
  <div class="stat"><b>16</b><span>Shipped</span></div>
119
119
  <div class="stat"><b>1</b><span>Next up</span></div>
120
120
  <div class="stat"><b>4</b><span>Planned</span></div>
121
- <div class="stat"><b>99</b><span>Loop finds</span></div>
121
+ <div class="stat"><b>100</b><span>Loop finds</span></div>
122
122
  <!-- /ROADMAP:stats -->
123
123
  </div>
124
124
  </section>
@@ -1371,6 +1371,17 @@ explanations and safety, not better ranking.</p>
1371
1371
  <span class="m">Wow <b class="wow">★★★★</b></span>
1372
1372
  </div>
1373
1373
  </article>
1374
+
1375
+ <article class="cap rcard">
1376
+ <div class="head"><span class="pill planned">Planned</span><span class="cat">Interop</span></div>
1377
+ <h3><code>boost adapt --to langgraph</code> — third framework renderer</h3>
1378
+ <p>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.</p>
1379
+ <div class="meta">
1380
+ <span class="m">Complexity <b>M</b></span>
1381
+ <span class="m">Impact <b>Med</b></span>
1382
+ <span class="m">Wow <b class="wow">★★★</b></span>
1383
+ </div>
1384
+ </article>
1374
1385
  <!-- /ROADMAP:cards -->
1375
1386
 
1376
1387
  </div>
@@ -0,0 +1,34 @@
1
+ # boost examples
2
+
3
+ Runnable demos of boost features. Each script is self-contained and sandboxes
4
+ its state under a throwaway `HOME`, so it never touches your real `~/.agents`.
5
+
6
+ ## `adapt-demo.sh` — the value of `boost adapt`
7
+
8
+ Shows why [`boost adapt`](../docs/adapters.html) exists: **author one skill,
9
+ run it in every framework, with zero drift.**
10
+
11
+ ```bash
12
+ bash examples/adapt-demo.sh
13
+ ```
14
+
15
+ What it does (all offline — **no `OPENAI_API_KEY` needed**):
16
+
17
+ 1. Spins up an isolated sandbox and installs `boost` + `crewai` +
18
+ `openai-agents` into a fresh venv.
19
+ 2. Authors **one** `SKILL.md` and imports it into boost.
20
+ 3. **Value 1** — renders it to *both* frameworks and instantiates each:
21
+ a real `crewai.Agent` and a real `agents.Agent` from the same source, no
22
+ hand-porting.
23
+ 4. **Value 2** — edits the skill **once** and re-adapts; the change appears in
24
+ **both** generated files (before/after `0 0` → `1 1`). That is the
25
+ drift-killing payoff: one edit, every runtime current.
26
+ 5. Optional: if `OPENAI_API_KEY` is set, actually runs the agent.
27
+
28
+ Requirements: **Python 3.11–3.13** (CrewAI's `tiktoken` dependency has no 3.14
29
+ wheel yet; boost itself supports 3.9–3.14). Clean up with
30
+ `rm -rf /tmp/boost-adapt-demo`.
31
+
32
+ > The same import path is exercised in CI by
33
+ > [`.github/workflows/adapter-conformance.yml`](../.github/workflows/adapter-conformance.yml),
34
+ > which installs each real framework and asserts the emitted file instantiates.
@@ -0,0 +1,110 @@
1
+ #!/usr/bin/env bash
2
+ # adapt-demo.sh — prove the VALUE of `boost adapt`.
3
+ #
4
+ # Author ONE skill in boost, get native agents for CrewAI *and* the OpenAI
5
+ # Agents SDK, then edit the skill once and watch the change land in BOTH — the
6
+ # zero-drift payoff the feature exists for.
7
+ #
8
+ # No OPENAI_API_KEY needed: generating + instantiating the agents is fully
9
+ # offline. Only the optional final "run live inference" step wants a key.
10
+ #
11
+ # Everything runs in an ISOLATED sandbox HOME, so your real ~/.agents is never
12
+ # touched. Clean up with: rm -rf "${DEMO_DIR:-/tmp/boost-adapt-demo}"
13
+ #
14
+ # Usage: bash examples/adapt-demo.sh
15
+ set -euo pipefail
16
+
17
+ DEMO="${DEMO_DIR:-/tmp/boost-adapt-demo}"
18
+ SKILL="code-reviewer"
19
+
20
+ c() { printf '\n\033[1;36m== %s ==\033[0m\n' "$*"; } # cyan banner
21
+ dim() { printf '\033[2m%s\033[0m\n' "$*"; }
22
+ ok() { printf '\033[1;32m%s\033[0m\n' "$*"; }
23
+
24
+ # CrewAI's tiktoken dep has no cp314 wheel yet, so pin to 3.11-3.13.
25
+ PYBIN=""
26
+ for v in 3.13 3.12 3.11; do
27
+ PYBIN="$(command -v "python$v" || true)"
28
+ [ -n "$PYBIN" ] && break
29
+ done
30
+ [ -n "$PYBIN" ] || {
31
+ echo "Need python3.11, 3.12, or 3.13 — CrewAI's tiktoken has no 3.14 wheel."
32
+ echo " macOS: brew install python@3.13"
33
+ exit 1
34
+ }
35
+
36
+ # ---- 1. isolated sandbox (HOME is boost's home lever, like tests/smoke.sh) --
37
+ c "1/5 Fresh, isolated sandbox"
38
+ rm -rf "$DEMO"; mkdir -p "$DEMO"
39
+ export HOME="$DEMO/home"; mkdir -p "$HOME" # boost store → $DEMO/home/.agents
40
+ "$PYBIN" -m venv "$DEMO/.venv" # absolute py: independent of HOME
41
+ BOOST="$DEMO/.venv/bin/boost"; PY="$DEMO/.venv/bin/python"
42
+ dim "installing boost + crewai + openai-agents … (crewai is a big tree; ~2-3 min first run)"
43
+ "$DEMO/.venv/bin/pip" -q install -U boost-skill-cli crewai openai-agents
44
+ dim "boost $("$BOOST" --version | awk '{print $2}') · isolated home = $HOME/.agents"
45
+
46
+ # ---- 2. author ONE skill (the single source of truth) -----------------------
47
+ c "2/5 Author ONE skill"
48
+ mkdir -p "$DEMO/src/$SKILL"
49
+ cat > "$DEMO/src/$SKILL/SKILL.md" <<'MD'
50
+ ---
51
+ name: code-reviewer
52
+ description: Reviews a diff for correctness, security, and test coverage
53
+ ---
54
+ Review the provided diff. Flag unhandled errors, injection-prone string
55
+ building, and missing tests on new branches. Rank findings by severity and
56
+ cite file:line.
57
+ MD
58
+ "$BOOST" import "$DEMO/src/$SKILL" >/dev/null
59
+ ok "installed '$SKILL' into boost (one SKILL.md — the single source)"
60
+
61
+ # ---- 3. VALUE (1): author once -> two frameworks (no key) -------------------
62
+ c "3/5 VALUE 1 — one skill → native agents for TWO frameworks (no API key)"
63
+ "$BOOST" adapt "$SKILL" --to crewai -o "$DEMO/crew_agent.py"
64
+ "$BOOST" adapt "$SKILL" --to agents-sdk -o "$DEMO/sdk_agent.py"
65
+ cd "$DEMO"
66
+ "$PY" - <<'PYEOF'
67
+ import crew_agent, sdk_agent
68
+ from crewai import Agent as CrewAgent
69
+ from agents import Agent as SdkAgent
70
+ crew = next(v for v in vars(crew_agent).values() if isinstance(v, CrewAgent))
71
+ sdk = next(v for v in vars(sdk_agent).values() if isinstance(v, SdkAgent))
72
+ print(f" CrewAI -> {type(crew).__module__}.{type(crew).__name__} role={crew.role!r}")
73
+ print(f" Agents SDK -> {type(sdk).__module__}.{type(sdk).__name__} name={sdk.name!r}")
74
+ print(" \033[1;32m✓ same SKILL.md, two real framework Agent objects — zero hand-porting\033[0m")
75
+ PYEOF
76
+
77
+ # ---- 4. VALUE (2): edit once -> both update (zero drift) --------------------
78
+ c "4/5 VALUE 2 — edit the skill ONCE → both frameworks update (zero drift)"
79
+ SKILL_MD="$("$PY" -c "from boost_cli.core import store; print(store.skill_store_dir('$SKILL')/'SKILL.md')")"
80
+ MARKER="Always finish with a ranked shortlist of the top 3 issues."
81
+ printf '\n- %s\n' "$MARKER" >> "$SKILL_MD"
82
+ dim "edited the one source: $SKILL_MD"
83
+ dim " + \"$MARKER\""
84
+ "$BOOST" adapt "$SKILL" --to crewai -o "$DEMO/crew_after.py"
85
+ "$BOOST" adapt "$SKILL" --to agents-sdk -o "$DEMO/sdk_after.py"
86
+ bc=$(grep -c "$MARKER" crew_agent.py || true); bs=$(grep -c "$MARKER" sdk_agent.py || true)
87
+ ac=$(grep -c "$MARKER" crew_after.py || true); as=$(grep -c "$MARKER" sdk_after.py || true)
88
+ printf ' %-14s %-10s %-10s\n' '' 'CrewAI' 'AgentsSDK'
89
+ printf ' %-14s %-10s %-10s\n' 'before edit' "$bc" "$bs"
90
+ printf ' %-14s %-10s %-10s\n' 'after edit' "$ac" "$as"
91
+ ok "one edit → both outputs carry it (1 & 1). Hand-porting means keeping N copies in sync forever."
92
+
93
+ # ---- 5. optional: run live inference (needs a key) --------------------------
94
+ c "5/5 (optional) run the agent — needs an LLM key"
95
+ if [ -n "${OPENAI_API_KEY:-}" ]; then
96
+ "$PY" - <<'PYEOF'
97
+ from agents import Runner, Agent as SdkAgent
98
+ import sdk_agent
99
+ sdk = next(v for v in vars(sdk_agent).values() if isinstance(v, SdkAgent))
100
+ print(" " + Runner.run_sync(sdk, "Name two things you check in a code review.").final_output.replace("\n", "\n "))
101
+ PYEOF
102
+ else
103
+ dim " OPENAI_API_KEY not set — skipping live run (instantiation above already"
104
+ dim " proved the contract without a key). To run for real:"
105
+ dim " OPENAI_API_KEY=sk-... bash $0"
106
+ fi
107
+
108
+ c "done"
109
+ dim "artifacts in $DEMO : crew_agent.py sdk_agent.py crew_after.py sdk_after.py"
110
+ dim "clean up with: rm -rf $DEMO"