boost-skill-cli 1.0.27__tar.gz → 1.0.28__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 (105) hide show
  1. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/PKG-INFO +1 -1
  2. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/_version.py +2 -2
  3. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/commands/pkg.py +9 -1
  4. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_skill_cli.egg-info/PKG-INFO +1 -1
  5. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/docs/design-roadmap.html +1 -1
  6. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/functional/test_cli_pkg.py +3 -0
  7. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/.gitignore +0 -0
  8. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/CLAUDE.md +0 -0
  9. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/CONTRIBUTING.md +0 -0
  10. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/LICENSE +0 -0
  11. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/MANIFEST.in +0 -0
  12. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/Makefile +0 -0
  13. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/README.md +0 -0
  14. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/SECURITY.md +0 -0
  15. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost +0 -0
  16. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/__init__.py +0 -0
  17. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/__main__.py +0 -0
  18. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/cli.py +0 -0
  19. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/commands/__init__.py +0 -0
  20. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/commands/bmad.py +0 -0
  21. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/commands/configuration.py +0 -0
  22. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/commands/discovery.py +0 -0
  23. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/commands/hooks.py +0 -0
  24. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/commands/info.py +0 -0
  25. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/commands/intelligence.py +0 -0
  26. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/commands/quality.py +0 -0
  27. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/commands/taps.py +0 -0
  28. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/commands/team.py +0 -0
  29. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/__init__.py +0 -0
  30. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/agents.py +0 -0
  31. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/ai.py +0 -0
  32. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/catalog.py +0 -0
  33. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/claude_settings.py +0 -0
  34. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/config.py +0 -0
  35. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/dense.py +0 -0
  36. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/embed.py +0 -0
  37. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/frontmatter.py +0 -0
  38. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/gitutil.py +0 -0
  39. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/journal.py +0 -0
  40. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/lockfile.py +0 -0
  41. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/logs.py +0 -0
  42. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/output.py +0 -0
  43. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/paths.py +0 -0
  44. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/policy.py +0 -0
  45. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/rag.py +0 -0
  46. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/registry.py +0 -0
  47. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/store.py +0 -0
  48. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/core/util.py +0 -0
  49. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/data/registries.json +0 -0
  50. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_cli/errors.py +0 -0
  51. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
  52. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  53. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  54. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_skill_cli.egg-info/requires.txt +0 -0
  55. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/boost_skill_cli.egg-info/top_level.txt +0 -0
  56. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/docs/.claude/settings.local.json +0 -0
  57. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/docs/DEBUGGING.md +0 -0
  58. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/docs/demo.gif +0 -0
  59. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/docs/demo.tape +0 -0
  60. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/docs/index.html +0 -0
  61. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/docs/rag-architecture.md +0 -0
  62. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/docs/roadmap.html +0 -0
  63. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/pyproject.toml +0 -0
  64. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/scripts/build_registries.py +0 -0
  65. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/scripts/mutation_gate.py +0 -0
  66. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/setup.cfg +0 -0
  67. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/style/README.md +0 -0
  68. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/style/boost.css +0 -0
  69. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/style/boost.js +0 -0
  70. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/style/demo.html +0 -0
  71. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/conftest.py +0 -0
  72. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/functional/test_cli_bmad.py +0 -0
  73. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/functional/test_cli_configuration.py +0 -0
  74. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/functional/test_cli_discovery.py +0 -0
  75. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/functional/test_cli_hooks.py +0 -0
  76. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/functional/test_cli_info.py +0 -0
  77. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/functional/test_cli_intelligence.py +0 -0
  78. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/functional/test_cli_quality.py +0 -0
  79. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/functional/test_cli_taps.py +0 -0
  80. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/functional/test_cli_team.py +0 -0
  81. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/functional/test_everyday_loop.py +0 -0
  82. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/make_fixture.py +0 -0
  83. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/smoke.sh +0 -0
  84. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_agents.py +0 -0
  85. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_ai.py +0 -0
  86. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_catalog.py +0 -0
  87. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_claude_settings.py +0 -0
  88. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_config.py +0 -0
  89. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_dense.py +0 -0
  90. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_embed.py +0 -0
  91. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_errors_and_cli_table.py +0 -0
  92. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_frontmatter.py +0 -0
  93. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_gitutil.py +0 -0
  94. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_journal.py +0 -0
  95. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_lockfile.py +0 -0
  96. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_logs.py +0 -0
  97. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_mutation_hardening.py +0 -0
  98. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_output.py +0 -0
  99. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_paths.py +0 -0
  100. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_policy.py +0 -0
  101. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_rag.py +0 -0
  102. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_registry.py +0 -0
  103. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_store.py +0 -0
  104. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/tests/unit/test_util.py +0 -0
  105. {boost_skill_cli-1.0.27 → boost_skill_cli-1.0.28}/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.27
3
+ Version: 1.0.28
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.27'
22
- __version_tuple__ = version_tuple = (1, 0, 27)
21
+ __version__ = version = '1.0.28'
22
+ __version_tuple__ = version_tuple = (1, 0, 28)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -140,7 +140,15 @@ def cmd_install(argv: List[str]) -> int:
140
140
  if len(results) - new:
141
141
  parts.append("Upgraded %s" % _plural(len(results) - new, "skill"))
142
142
  avg = round(sum(r.score for r in results) / len(results))
143
- out.info("%s; quality score %d/100" % ("; ".join(parts), avg))
143
+ summary = "%s; quality score %d/100" % ("; ".join(parts), avg)
144
+ lines = [summary]
145
+ if len(results) == 1:
146
+ r0 = results[0]
147
+ if r0.linked:
148
+ lines.append(out.c("%s → %s" % (r0.name, " · ".join(r0.linked)),
149
+ out.DIM))
150
+ lines.append(out.c("next: boost info %s" % r0.name, out.DIM))
151
+ print(out.panel(lines, title="installed", hue="green"))
144
152
  return 1 if failed else 0
145
153
 
146
154
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boost-skill-cli
3
- Version: 1.0.27
3
+ Version: 1.0.28
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -373,7 +373,7 @@
373
373
  </article>
374
374
 
375
375
  <article class="ritem" data-track="motion" data-impact="low">
376
- <div class="ritem-top"><span class="rid">BOOST-D13</span><span class="rstatus proposed">Proposed</span></div>
376
+ <div class="ritem-top"><span class="rid">BOOST-D13</span><span class="rstatus done">Shipped</span></div>
377
377
  <h4>Framed success summary with next step</h4>
378
378
  <p><code>ok()</code> prints a lone green check, then the command just ends. After <code>install</code>/<code>uninstall</code>, close with a small framed confirmation — what changed, where it landed, and the obvious next step (<code>boost info &lt;skill&gt;</code>) — so a completed action feels finished, not dropped.</p>
379
379
  <div class="rmeta"><span class="m-cat">ux</span><span>Complexity S</span><span class="m-imp low">Impact Low</span><span class="m-wow">★★★☆☆</span></div>
@@ -50,6 +50,9 @@ class TestInstall:
50
50
  assert "linked → claude-code · windsurf · cursor" in r.out
51
51
  assert "lock updated (.skill-lock.json)" in r.out
52
52
  assert "Installed 1 new skill; quality score 95/100" in r.out
53
+ # D13: framed success card with a next-step hint
54
+ assert "╭─ installed" in r.out
55
+ assert "next: boost info brainstorming" in r.out
53
56
  entry = _lock()["brainstorming"]
54
57
  assert entry["version"] == "1.4.0"
55
58
  assert entry["tap"] == "fixture-tap"
File without changes