boost-skill-cli 1.0.55__tar.gz → 1.0.56__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 (115) hide show
  1. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/PKG-INFO +1 -1
  2. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/_version.py +2 -2
  3. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_skill_cli.egg-info/PKG-INFO +1 -1
  4. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/docs/index.html +91 -27
  5. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/.gitignore +0 -0
  6. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/CLAUDE.md +0 -0
  7. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/CONTRIBUTING.md +0 -0
  8. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/LICENSE +0 -0
  9. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/MANIFEST.in +0 -0
  10. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/Makefile +0 -0
  11. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/README.md +0 -0
  12. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/SECURITY.md +0 -0
  13. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost +0 -0
  14. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/__init__.py +0 -0
  15. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/__main__.py +0 -0
  16. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/cli.py +0 -0
  17. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/cliparse.py +0 -0
  18. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/commands/__init__.py +0 -0
  19. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/commands/bmad.py +0 -0
  20. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/commands/configuration.py +0 -0
  21. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/commands/discovery.py +0 -0
  22. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/commands/hooks.py +0 -0
  23. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/commands/info.py +0 -0
  24. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/commands/intelligence.py +0 -0
  25. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/commands/pkg.py +0 -0
  26. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/commands/quality.py +0 -0
  27. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/commands/taps.py +0 -0
  28. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/commands/team.py +0 -0
  29. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/__init__.py +0 -0
  30. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/agents.py +0 -0
  31. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/ai.py +0 -0
  32. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/catalog.py +0 -0
  33. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/claude_settings.py +0 -0
  34. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/config.py +0 -0
  35. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/dense.py +0 -0
  36. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/embed.py +0 -0
  37. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/frontmatter.py +0 -0
  38. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/gitutil.py +0 -0
  39. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/journal.py +0 -0
  40. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/lockfile.py +0 -0
  41. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/logs.py +0 -0
  42. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/mcp.py +0 -0
  43. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/output.py +0 -0
  44. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/paths.py +0 -0
  45. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/policy.py +0 -0
  46. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/rag.py +0 -0
  47. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/registry.py +0 -0
  48. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/store.py +0 -0
  49. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/core/util.py +0 -0
  50. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/data/registries.json +0 -0
  51. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/errors.py +0 -0
  52. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_cli/spin.py +0 -0
  53. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
  54. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  55. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  56. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_skill_cli.egg-info/requires.txt +0 -0
  57. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/boost_skill_cli.egg-info/top_level.txt +0 -0
  58. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/docs/.claude/settings.local.json +0 -0
  59. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/docs/DEBUGGING.md +0 -0
  60. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/docs/demo.gif +0 -0
  61. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/docs/demo.tape +0 -0
  62. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/docs/design-roadmap.html +0 -0
  63. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/docs/mcp-hub.html +0 -0
  64. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/docs/rag-architecture.md +0 -0
  65. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/docs/roadmap.html +0 -0
  66. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/index.html +0 -0
  67. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/pyproject.toml +0 -0
  68. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/scripts/build_registries.py +0 -0
  69. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/scripts/mutation_gate.py +0 -0
  70. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/setup.cfg +0 -0
  71. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/style/README.md +0 -0
  72. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/style/boost.css +0 -0
  73. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/style/boost.js +0 -0
  74. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/style/demo.html +0 -0
  75. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/conftest.py +0 -0
  76. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/functional/test_cli_bmad.py +0 -0
  77. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/functional/test_cli_configuration.py +0 -0
  78. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/functional/test_cli_discovery.py +0 -0
  79. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/functional/test_cli_hooks.py +0 -0
  80. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/functional/test_cli_info.py +0 -0
  81. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/functional/test_cli_intelligence.py +0 -0
  82. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/functional/test_cli_pkg.py +0 -0
  83. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/functional/test_cli_quality.py +0 -0
  84. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/functional/test_cli_taps.py +0 -0
  85. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/functional/test_cli_team.py +0 -0
  86. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/functional/test_everyday_loop.py +0 -0
  87. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/make_fixture.py +0 -0
  88. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/smoke.sh +0 -0
  89. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_agents.py +0 -0
  90. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_ai.py +0 -0
  91. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_catalog.py +0 -0
  92. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_claude_settings.py +0 -0
  93. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_cliparse.py +0 -0
  94. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_config.py +0 -0
  95. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_dense.py +0 -0
  96. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_dense_fallback.py +0 -0
  97. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_embed.py +0 -0
  98. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_errors_and_cli_table.py +0 -0
  99. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_frontmatter.py +0 -0
  100. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_gitutil.py +0 -0
  101. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_journal.py +0 -0
  102. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_lockfile.py +0 -0
  103. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_logs.py +0 -0
  104. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_mcp.py +0 -0
  105. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_mutation_hardening.py +0 -0
  106. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_output.py +0 -0
  107. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_paths.py +0 -0
  108. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_policy.py +0 -0
  109. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_rag.py +0 -0
  110. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_registry.py +0 -0
  111. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_spin.py +0 -0
  112. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_store.py +0 -0
  113. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_token_parity.py +0 -0
  114. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/tests/unit/test_util.py +0 -0
  115. {boost_skill_cli-1.0.55 → boost_skill_cli-1.0.56}/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.55
3
+ Version: 1.0.56
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.55'
22
- __version_tuple__ = version_tuple = (1, 0, 55)
21
+ __version__ = version = '1.0.56'
22
+ __version_tuple__ = version_tuple = (1, 0, 56)
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.55
3
+ Version: 1.0.56
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -160,9 +160,14 @@
160
160
  .btn-ghost:hover { border-color: rgba(255,255,255,.2); }
161
161
  .stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-top: 72px; }
162
162
  .stat {
163
- background: var(--panel); border: 1px solid var(--line); border-radius: 16px;
163
+ background:
164
+ radial-gradient(240px circle at var(--mx,-200px) var(--my,-200px), rgba(34,211,238,.14), transparent 45%),
165
+ var(--panel);
166
+ border: 1px solid var(--line); border-radius: 16px;
164
167
  padding: 26px 22px; text-align: center;
168
+ transition: border-color .2s ease;
165
169
  }
170
+ .stat:hover { border-color: var(--line-hi); }
166
171
  .stat b {
167
172
  display: block; font-size: clamp(28px, 3.4vw, 42px); font-weight: 800; letter-spacing: -.02em;
168
173
  background: var(--grad); -webkit-background-clip: text; background-clip: text; color: transparent;
@@ -192,7 +197,10 @@
192
197
 
193
198
  /* mac-style window */
194
199
  .window {
195
- background: var(--term-bg); border: 1px solid rgba(255,255,255,.12); border-radius: 12px;
200
+ background:
201
+ radial-gradient(420px circle at var(--mx,-300px) var(--my,-300px), rgba(34,211,238,.09), transparent 50%),
202
+ var(--term-bg);
203
+ border: 1px solid rgba(255,255,255,.12); border-radius: 12px;
196
204
  box-shadow: 0 24px 70px rgba(0,0,0,.5);
197
205
  overflow: hidden;
198
206
  }
@@ -234,7 +242,10 @@
234
242
  .flow-row.two { grid-template-columns: 1fr 1fr; }
235
243
  .flow-row.three { grid-template-columns: 1fr 1fr 1fr; }
236
244
  .node {
237
- background: rgba(19,19,28,.85); border: 1px solid var(--line); border-radius: 14px;
245
+ background:
246
+ radial-gradient(220px circle at var(--mx,-200px) var(--my,-200px), rgba(34,211,238,.12), transparent 45%),
247
+ rgba(19,19,28,.85);
248
+ border: 1px solid var(--line); border-radius: 14px;
238
249
  padding: 22px 20px; text-align: center;
239
250
  }
240
251
  .node .tag {
@@ -293,8 +304,13 @@
293
304
  }
294
305
  .cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 20px; }
295
306
  .cmd {
296
- position: relative; background: var(--panel-solid); border: 1px solid var(--line-soft);
307
+ position: relative;
308
+ background:
309
+ radial-gradient(200px circle at var(--mx,-200px) var(--my,-200px), rgba(34,211,238,.13), transparent 45%),
310
+ var(--panel-solid);
311
+ border: 1px solid var(--line-soft);
297
312
  border-radius: 12px; padding: 16px 18px 15px 20px; overflow: hidden;
313
+ transition: border-color .18s ease;
298
314
  }
299
315
  .cmd::before {
300
316
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
@@ -312,8 +328,14 @@
312
328
  /* ---------- capabilities ---------- */
313
329
  .caps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 64px; }
314
330
  .cap {
315
- background: var(--panel); border: 1px solid var(--line); border-radius: 18px; padding: 30px 26px;
331
+ position: relative;
332
+ background:
333
+ radial-gradient(320px circle at var(--mx,-200px) var(--my,-200px), rgba(34,211,238,.13), transparent 45%),
334
+ var(--panel);
335
+ border: 1px solid var(--line); border-radius: 18px; padding: 30px 26px;
336
+ transition: border-color .2s ease, transform .2s ease;
316
337
  }
338
+ .cap:hover { border-color: var(--line-hi); transform: translateY(-2px); }
317
339
  .cap .ic {
318
340
  width: 46px; height: 46px; border-radius: 13px;
319
341
  display: flex; align-items: center; justify-content: center;
@@ -435,7 +457,7 @@
435
457
 
436
458
  <!-- ================= HERO ================= -->
437
459
  <div class="wrap hero">
438
- <span class="badge">AI Skill Package Manager · v2.3.3</span>
460
+ <span class="badge">AI Skill Package Manager · on PyPI</span>
439
461
  <h1><span class="grad">Homebrew</span> for AI coding skills.</h1>
440
462
  <p class="lede">
441
463
  Boost is a command-line package manager that <b>searches, installs, and
@@ -448,9 +470,9 @@
448
470
  <a class="btn btn-ghost" href="#commands">Explore all 73 commands</a>
449
471
  </div>
450
472
  <div class="stats">
451
- <div class="stat reveal"><b>8,400+</b><span>Discoverable skills</span></div>
473
+ <div class="stat reveal"><b>10,000+</b><span>Discoverable skills</span></div>
452
474
  <div class="stat reveal"><b>73</b><span>Commands · 8 groups</span></div>
453
- <div class="stat reveal"><b>2</b><span>Pre-tapped registries</span></div>
475
+ <div class="stat reveal"><b>5</b><span>Pre-tapped registries</span></div>
454
476
  <div class="stat reveal"><b>3</b><span>AI agents supported</span></div>
455
477
  </div>
456
478
  </div>
@@ -518,7 +540,7 @@ facilitate structured divergent thinking:
518
540
  <div class="node src">
519
541
  <span class="tag">Source</span>
520
542
  <h4>GitHub registries</h4>
521
- <p>Pre-tapped public registries + an 8,400-skill discovery index</p>
543
+ <p>5 pre-tapped registries + a 10,000-skill discovery index</p>
522
544
  </div>
523
545
  </div>
524
546
  <div class="flow-arrow reveal">
@@ -583,8 +605,8 @@ facilitate structured divergent thinking:
583
605
  <div class="wrap">
584
606
  <span class="eyebrow">The Everyday Loop</span>
585
607
  <h2 class="sec-title">Search → install → done</h2>
586
- <p class="sec-sub">The thin bash shim finds your Python and runs with zero dependencies.
587
- After that, the core loop is three commands.</p>
608
+ <p class="sec-sub">Installed from PyPI, boost runs on Python 3.9+ with zero required
609
+ dependencies. After that, the core loop is three commands.</p>
588
610
 
589
611
  <div class="window reveal" style="max-width: 860px; margin: 56px auto 0;">
590
612
  <div class="bar"><div class="dots"><i></i><i></i><i></i></div>
@@ -606,7 +628,7 @@ facilitate structured divergent thinking:
606
628
 
607
629
  <span class="tp">$</span> <span class="tv">boost</span> <span class="tc">doctor</span>
608
630
  <span class="tacc">==&gt;</span> <b>boost doctor</b>
609
- <span class="tok">✓</span> 14 skills installed · 2 taps synced · 0 broken links
631
+ <span class="tok">✓</span> 14 skills installed · 5 taps synced · 0 broken links
610
632
  <span class="tok">✓</span> lock file integrity OK · log rotation healthy
611
633
  <span class="tok">● healthy</span>
612
634
 
@@ -703,9 +725,9 @@ facilitate structured divergent thinking:
703
725
  <div class="wrap">
704
726
  <span class="eyebrow">Where Skills Come From</span>
705
727
  <h2 class="sec-title">Pre-tapped registries + open discovery</h2>
706
- <p class="sec-sub">Boost ships pre-tapped to curated public skills. Beyond that,
707
- <code>boost discover</code> indexes 8,400+ skills across GitHub.
708
- Tap your own team’s repo anytime.</p>
728
+ <p class="sec-sub">Boost ships pre-tapped to five curated registries. Beyond that,
729
+ the curated catalog spans 100+ registries and <code>boost discover</code> indexes
730
+ 10,000+ skills across GitHub. Tap your own team’s repo anytime.</p>
709
731
 
710
732
  <div class="reg-wrap reveal">
711
733
  <div class="reg-scroll">
@@ -726,6 +748,24 @@ facilitate structured divergent thinking:
726
748
  <td><span class="cnt" data-count="superpowers">—</span></td>
727
749
  <td class="focus">Community powerhouse — TDD, debugging, planning, subagent workflows</td>
728
750
  </tr>
751
+ <tr>
752
+ <td><span class="tapname">trailofbits/skills</span></td>
753
+ <td class="repo">github.com/trailofbits/skills</td>
754
+ <td><span class="cnt" data-count="trailofbits">—</span></td>
755
+ <td class="focus">Security auditing from Trail of Bits — CodeQL, Semgrep, vulnerability hunting</td>
756
+ </tr>
757
+ <tr>
758
+ <td><span class="tapname">expo/skills</span></td>
759
+ <td class="repo">github.com/expo/skills</td>
760
+ <td><span class="cnt" data-count="expo">—</span></td>
761
+ <td class="focus">Official Expo team skills — EAS builds, app-store submission, deployments</td>
762
+ </tr>
763
+ <tr>
764
+ <td><span class="tapname">K-Dense-AI/scientific-agent-skills</span></td>
765
+ <td class="repo">github.com/K-Dense-AI/scientific-agent-skills</td>
766
+ <td><span class="cnt" data-count="scientific">—</span></td>
767
+ <td class="focus">Scientific computing — research libraries, databases, data analysis</td>
768
+ </tr>
729
769
  <tr class="dim">
730
770
  <td><span class="tapname">your-org/skills</span></td>
731
771
  <td class="repo">any repo with SKILL.md files</td>
@@ -745,23 +785,25 @@ facilitate structured divergent thinking:
745
785
  <section id="start">
746
786
  <div class="wrap">
747
787
  <span class="eyebrow">Get Started</span>
748
- <h2 class="sec-title">One shim, zero setup</h2>
749
- <p class="sec-sub">Copy a single bash shim onto your <code>PATH</code>. It finds Python 3.9+
750
- and runs — no PyPI, no Artifactory, no manual setup.</p>
788
+ <h2 class="sec-title">One pip install, zero setup</h2>
789
+ <p class="sec-sub">Install from PyPI with <code>pipx</code> (or <code>pip</code>) — one command,
790
+ Python 3.9+, no manual setup.</p>
751
791
 
752
792
  <div class="window install-box reveal">
753
793
  <div class="bar">
754
- <div class="label">install the shim</div>
794
+ <div class="label">install from PyPI</div>
755
795
  <button class="copy-btn" id="copy-install" type="button">Copy</button>
756
796
  </div>
757
- <pre id="install-code"><span class="cm"># clone, link the shim onto your PATH, verify</span>
758
- git clone https://github.com/your-org/boost ~/.boost-src
759
- ln -s ~/.boost-src/boost ~/bin/boost
797
+ <pre id="install-code"><span class="cm"># install from PyPI (pipx keeps it isolated), verify</span>
798
+ pipx install boost-skill-cli <span class="cm"># or: pip install boost-skill-cli</span>
760
799
  <span class="tv">boost</span> --version
761
800
 
762
- <span class="cm"># add the recommended registries and go</span>
801
+ <span class="cm"># add the 5 starter registries and go</span>
763
802
  <span class="tv">boost</span> <span class="tc">tap</span> --defaults
764
- <span class="tv">boost</span> <span class="tc">search</span> brainstorming</pre>
803
+ <span class="tv">boost</span> <span class="tc">search</span> brainstorming
804
+
805
+ <span class="cm"># optional: local semantic search over your skills</span>
806
+ pip install <span class="yv">"boost-skill-cli[rag]"</span></pre>
765
807
  </div>
766
808
 
767
809
  <div class="mini reveal">
@@ -769,7 +811,7 @@ ln -s ~/.boost-src/boost ~/bin/boost
769
811
  <a href="#commands"><span class="name"><span class="v">boost</span> install brainstorming</span><p>Install into every agent</p></a>
770
812
  <a href="#commands"><span class="name"><span class="v">boost</span> recommend</span><p>Suggestions for your stack</p></a>
771
813
  <a href="#commands"><span class="name"><span class="v">boost</span> browse</span><p>Interactive TUI explorer</p></a>
772
- <a href="#commands"><span class="name"><span class="v">boost</span> discover</span><p>Browse 8,400+ skills</p></a>
814
+ <a href="#commands"><span class="name"><span class="v">boost</span> discover</span><p>Browse 10,000+ skills</p></a>
773
815
  <a href="#commands"><span class="name"><span class="v">boost</span> doctor</span><p>Health check &amp; repair hints</p></a>
774
816
  </div>
775
817
  </div>
@@ -777,7 +819,7 @@ ln -s ~/.boost-src/boost ~/bin/boost
777
819
 
778
820
  <footer>
779
821
  <div class="wrap">
780
- <p class="brand"><b>boost</b> · AI Skill Package Manager · v2.3.3</p>
822
+ <p class="brand"><b>boost</b> · AI Skill Package Manager · <code>pip install boost-skill-cli</code></p>
781
823
  <p class="meta">Requires Python 3.9+ and <code>git</code>. Supports Claude Code, Windsurf &amp; Cursor.</p>
782
824
  <p class="links"><a href="#commands">CLI Reference</a> · <a href="#top">Home</a></p>
783
825
  </div>
@@ -882,7 +924,7 @@ const COMMANDS = [
882
924
  ];
883
925
 
884
926
  // live-measured registry skill counts (updated at build time)
885
- const REG_COUNTS = { anthropic: "18", superpowers: "14" };
927
+ const REG_COUNTS = { anthropic: "18", superpowers: "14", trailofbits: "75", expo: "22", scientific: "149" };
886
928
 
887
929
  // ---------- render ----------
888
930
  const groupsEl = document.getElementById("cmd-groups");
@@ -892,6 +934,22 @@ const noResEl = document.getElementById("no-results");
892
934
  const filterEl = document.getElementById("cmd-filter");
893
935
  let activeGroup = "all";
894
936
 
937
+ // ---------- cursor spotlight (living glass, mirrors style/boost.js) ----------
938
+ // Writes element-local pointer coords into --mx / --my, which the radial-gradient
939
+ // backgrounds on .stat/.cap/.cmd/.node/.window read to follow the cursor.
940
+ const prefersReduce = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
941
+ function bindSpot(el) {
942
+ el.addEventListener("pointermove", (e) => {
943
+ const r = el.getBoundingClientRect();
944
+ el.style.setProperty("--mx", (e.clientX - r.left) + "px");
945
+ el.style.setProperty("--my", (e.clientY - r.top) + "px");
946
+ });
947
+ el.addEventListener("pointerleave", () => {
948
+ el.style.removeProperty("--mx");
949
+ el.style.removeProperty("--my");
950
+ });
951
+ }
952
+
895
953
  function esc(s) {
896
954
  return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
897
955
  }
@@ -936,6 +994,7 @@ function render() {
936
994
  `</div></div>`;
937
995
  }
938
996
  groupsEl.innerHTML = html;
997
+ if (!prefersReduce) groupsEl.querySelectorAll(".cmd").forEach(bindSpot);
939
998
  noResEl.style.display = shown ? "none" : "block";
940
999
  countEl.textContent = ql || activeGroup !== "all"
941
1000
  ? `${shown} command${shown === 1 ? "" : "s"} across ${shownGroups.size} group${shownGroups.size === 1 ? "" : "s"}`
@@ -960,6 +1019,11 @@ filterEl.addEventListener("input", render);
960
1019
  renderPills();
961
1020
  render();
962
1021
 
1022
+ // spotlight on the static glass surfaces (command cards are bound inside render)
1023
+ if (!prefersReduce) {
1024
+ document.querySelectorAll(".stat, .cap, .node, .window").forEach(bindSpot);
1025
+ }
1026
+
963
1027
  // registry counts
964
1028
  document.querySelectorAll("[data-count]").forEach((el) => {
965
1029
  const v = REG_COUNTS[el.dataset.count];
File without changes