boost-skill-cli 1.0.12__tar.gz → 1.0.14__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 (93) hide show
  1. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/PKG-INFO +12 -1
  2. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/README.md +11 -0
  3. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/_version.py +2 -2
  4. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_skill_cli.egg-info/PKG-INFO +12 -1
  5. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_skill_cli.egg-info/SOURCES.txt +5 -0
  6. boost_skill_cli-1.0.14/docs/roadmap.html +324 -0
  7. boost_skill_cli-1.0.14/style/README.md +92 -0
  8. boost_skill_cli-1.0.14/style/boost.css +352 -0
  9. boost_skill_cli-1.0.14/style/boost.js +55 -0
  10. boost_skill_cli-1.0.14/style/demo.html +140 -0
  11. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/.gitignore +0 -0
  12. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/CLAUDE.md +0 -0
  13. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/CONTRIBUTING.md +0 -0
  14. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/LICENSE +0 -0
  15. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/MANIFEST.in +0 -0
  16. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/Makefile +0 -0
  17. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/SECURITY.md +0 -0
  18. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost +0 -0
  19. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/__init__.py +0 -0
  20. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/__main__.py +0 -0
  21. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/cli.py +0 -0
  22. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/commands/__init__.py +0 -0
  23. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/commands/configuration.py +0 -0
  24. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/commands/discovery.py +0 -0
  25. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/commands/info.py +0 -0
  26. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/commands/intelligence.py +0 -0
  27. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/commands/pkg.py +0 -0
  28. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/commands/quality.py +0 -0
  29. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/commands/taps.py +0 -0
  30. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/commands/team.py +0 -0
  31. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/core/__init__.py +0 -0
  32. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/core/agents.py +0 -0
  33. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/core/ai.py +0 -0
  34. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/core/catalog.py +0 -0
  35. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/core/config.py +0 -0
  36. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/core/frontmatter.py +0 -0
  37. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/core/gitutil.py +0 -0
  38. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/core/journal.py +0 -0
  39. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/core/lockfile.py +0 -0
  40. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/core/logs.py +0 -0
  41. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/core/output.py +0 -0
  42. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/core/paths.py +0 -0
  43. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/core/policy.py +0 -0
  44. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/core/rag.py +0 -0
  45. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/core/registry.py +0 -0
  46. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/core/store.py +0 -0
  47. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/core/util.py +0 -0
  48. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/data/registries.json +0 -0
  49. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_cli/errors.py +0 -0
  50. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  51. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  52. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/boost_skill_cli.egg-info/top_level.txt +0 -0
  53. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/docs/.claude/settings.local.json +0 -0
  54. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/docs/DEBUGGING.md +0 -0
  55. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/docs/demo.gif +0 -0
  56. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/docs/demo.tape +0 -0
  57. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/docs/index.html +0 -0
  58. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/docs/rag-architecture.md +0 -0
  59. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/pyproject.toml +0 -0
  60. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/scripts/build_registries.py +0 -0
  61. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/scripts/mutation_gate.py +0 -0
  62. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/setup.cfg +0 -0
  63. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/conftest.py +0 -0
  64. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/functional/test_cli_configuration.py +0 -0
  65. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/functional/test_cli_discovery.py +0 -0
  66. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/functional/test_cli_info.py +0 -0
  67. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/functional/test_cli_intelligence.py +0 -0
  68. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/functional/test_cli_pkg.py +0 -0
  69. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/functional/test_cli_quality.py +0 -0
  70. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/functional/test_cli_taps.py +0 -0
  71. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/functional/test_cli_team.py +0 -0
  72. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/functional/test_everyday_loop.py +0 -0
  73. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/make_fixture.py +0 -0
  74. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/smoke.sh +0 -0
  75. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/unit/test_agents.py +0 -0
  76. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/unit/test_ai.py +0 -0
  77. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/unit/test_catalog.py +0 -0
  78. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/unit/test_config.py +0 -0
  79. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/unit/test_errors_and_cli_table.py +0 -0
  80. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/unit/test_frontmatter.py +0 -0
  81. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/unit/test_gitutil.py +0 -0
  82. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/unit/test_journal.py +0 -0
  83. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/unit/test_lockfile.py +0 -0
  84. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/unit/test_logs.py +0 -0
  85. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/unit/test_mutation_hardening.py +0 -0
  86. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/unit/test_output.py +0 -0
  87. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/unit/test_paths.py +0 -0
  88. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/unit/test_policy.py +0 -0
  89. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/unit/test_rag.py +0 -0
  90. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/unit/test_registry.py +0 -0
  91. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/unit/test_store.py +0 -0
  92. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/tests/unit/test_util.py +0 -0
  93. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.14}/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.12
3
+ Version: 1.0.14
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -823,6 +823,17 @@ available on your PATH (or `ANTHROPIC_API_KEY` is set), and fall back to
823
823
  plain heuristics when it isn't — so the tool still works without an API key,
824
824
  just less cleverly.
825
825
 
826
+ ## The boost style
827
+
828
+ The visual identity behind the docs and demos ships as a small, dependency-free
829
+ design system in [`style/`](style/) — the *Aurora living-glass* look: a
830
+ cyan → violet → pink triad on a near-black ground, an ambient aurora that drifts
831
+ behind the page, and glass cards that light up under the cursor. Drop
832
+ [`style/boost.css`](style/boost.css) (and the optional
833
+ [`style/boost.js`](style/boost.js)) into any static page; see
834
+ [`style/demo.html`](style/demo.html) for the whole system on one page and
835
+ [`style/README.md`](style/README.md) for the tokens and class reference.
836
+
826
837
  ## Working on boost
827
838
 
828
839
  ```bash
@@ -119,6 +119,17 @@ available on your PATH (or `ANTHROPIC_API_KEY` is set), and fall back to
119
119
  plain heuristics when it isn't — so the tool still works without an API key,
120
120
  just less cleverly.
121
121
 
122
+ ## The boost style
123
+
124
+ The visual identity behind the docs and demos ships as a small, dependency-free
125
+ design system in [`style/`](style/) — the *Aurora living-glass* look: a
126
+ cyan → violet → pink triad on a near-black ground, an ambient aurora that drifts
127
+ behind the page, and glass cards that light up under the cursor. Drop
128
+ [`style/boost.css`](style/boost.css) (and the optional
129
+ [`style/boost.js`](style/boost.js)) into any static page; see
130
+ [`style/demo.html`](style/demo.html) for the whole system on one page and
131
+ [`style/README.md`](style/README.md) for the tokens and class reference.
132
+
122
133
  ## Working on boost
123
134
 
124
135
  ```bash
@@ -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.12'
22
- __version_tuple__ = version_tuple = (1, 0, 12)
21
+ __version__ = version = '1.0.14'
22
+ __version_tuple__ = version_tuple = (1, 0, 14)
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.12
3
+ Version: 1.0.14
4
4
  Summary: boost — Homebrew for AI coding skills
5
5
  Author: Jonathan Reyes
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -823,6 +823,17 @@ available on your PATH (or `ANTHROPIC_API_KEY` is set), and fall back to
823
823
  plain heuristics when it isn't — so the tool still works without an API key,
824
824
  just less cleverly.
825
825
 
826
+ ## The boost style
827
+
828
+ The visual identity behind the docs and demos ships as a small, dependency-free
829
+ design system in [`style/`](style/) — the *Aurora living-glass* look: a
830
+ cyan → violet → pink triad on a near-black ground, an ambient aurora that drifts
831
+ behind the page, and glass cards that light up under the cursor. Drop
832
+ [`style/boost.css`](style/boost.css) (and the optional
833
+ [`style/boost.js`](style/boost.js)) into any static page; see
834
+ [`style/demo.html`](style/demo.html) for the whole system on one page and
835
+ [`style/README.md`](style/README.md) for the tokens and class reference.
836
+
826
837
  ## Working on boost
827
838
 
828
839
  ```bash
@@ -51,9 +51,14 @@ docs/demo.gif
51
51
  docs/demo.tape
52
52
  docs/index.html
53
53
  docs/rag-architecture.md
54
+ docs/roadmap.html
54
55
  docs/.claude/settings.local.json
55
56
  scripts/build_registries.py
56
57
  scripts/mutation_gate.py
58
+ style/README.md
59
+ style/boost.css
60
+ style/boost.js
61
+ style/demo.html
57
62
  tests/conftest.py
58
63
  tests/make_fixture.py
59
64
  tests/smoke.sh
@@ -0,0 +1,324 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>boost — Roadmap</title>
7
+ <meta name="description" content="The living roadmap for boost: shipped work, in-flight fixes, and planned quality investments — logged by the autonomous quality loop.">
8
+ <!-- Canonical boost theme ("Aurora living-glass"). Pages serves from repo
9
+ root (source path "/"), so ../style resolves to /style on the site and
10
+ over file:// locally. Recolour everything by editing style/boost.css. -->
11
+ <link rel="stylesheet" href="../style/boost.css">
12
+ <style>
13
+ /* Roadmap-specific layout — built only on boost.css :root tokens so the
14
+ page recolours with the rest of the system. No new palette. */
15
+ .topbar {
16
+ position: sticky; top: 0; z-index: 20;
17
+ display: flex; align-items: center; gap: 18px;
18
+ padding: 14px 24px; margin-bottom: 8px;
19
+ background: rgba(7,8,15,.72);
20
+ backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
21
+ border-bottom: 1px solid var(--line);
22
+ }
23
+ .topbar .logo { font-weight: 800; letter-spacing: -.02em; font-size: 18px; text-decoration: none; }
24
+ .topbar .logo span { color: var(--text-3); font-weight: 600; margin-left: 8px; font-size: 13px; }
25
+ .topbar nav { margin-left: auto; display: flex; gap: 20px; }
26
+ .topbar nav a { color: var(--text-2); text-decoration: none; font-size: 14px; font-weight: 600; }
27
+ .topbar nav a:hover { color: var(--text); }
28
+
29
+ .hero { text-align: center; padding: 56px 0 20px; }
30
+ .hero .badge { margin-bottom: 22px; }
31
+ .hero h1 { font-size: clamp(38px, 6vw, 68px); font-weight: 850; letter-spacing: -.03em; line-height: 1.05; }
32
+ .hero p { max-width: 620px; margin: 20px auto 0; color: var(--text-2); font-size: 18px; text-wrap: balance; }
33
+ .hero .cta { margin-top: 30px; display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
34
+
35
+ section.block { padding: 40px 0; }
36
+ .block-head { display: flex; align-items: baseline; gap: 14px; margin-bottom: 24px; flex-wrap: wrap; }
37
+ .block-head h2 { font-size: clamp(22px, 3vw, 30px); font-weight: 800; letter-spacing: -.02em; }
38
+ .block-head .count { font-family: var(--mono); font-size: 13px; color: var(--text-3); }
39
+ .block-head .rule { flex: 1; height: 1px; background: var(--line); min-width: 40px; }
40
+
41
+ .rgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 18px; }
42
+
43
+ .rcard { padding: 24px 22px; }
44
+ .rcard .head { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
45
+ .rcard h3 { font-size: 17.5px; font-weight: 750; letter-spacing: -.01em; line-height: 1.3; }
46
+ .rcard p { font-size: 14px; color: var(--text-2); margin-top: 0; line-height: 1.6; }
47
+ .rcard .meta { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 18px; }
48
+
49
+ /* status pill — colour encodes lifecycle stage */
50
+ .pill {
51
+ display: inline-flex; align-items: center; gap: 6px;
52
+ font-family: var(--mono); font-size: 11px; font-weight: 700;
53
+ letter-spacing: .08em; text-transform: uppercase;
54
+ padding: 4px 10px; border-radius: 999px; white-space: nowrap;
55
+ border: 1px solid currentColor;
56
+ }
57
+ .pill::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
58
+ .pill.shipped { color: var(--green); }
59
+ .pill.inflight { color: var(--cyan); }
60
+ .pill.next { color: var(--yellow); }
61
+ .pill.planned { color: var(--violet); }
62
+
63
+ .cat { margin-left: auto; font-family: var(--mono); font-size: 11px; color: var(--text-3); letter-spacing: .06em; text-transform: uppercase; }
64
+
65
+ /* metadata chips: complexity / impact / wow / ref */
66
+ .m { font-size: 11.5px; color: var(--text-2); background: rgba(255,255,255,.05);
67
+ border: 1px solid var(--line-soft); border-radius: 7px; padding: 3px 9px; font-family: var(--mono); }
68
+ .m b { color: var(--text); font-weight: 700; }
69
+ .m.hi b { color: var(--pink); }
70
+ .wow { color: var(--yellow); letter-spacing: 1px; }
71
+
72
+ .legend { display: flex; flex-wrap: wrap; gap: 12px 26px; margin-top: 26px; justify-content: center; color: var(--text-2); font-size: 13px; }
73
+ .legend .k { display: inline-flex; align-items: center; gap: 8px; }
74
+
75
+ footer { text-align: center; padding: 60px 0 48px; color: var(--text-3); font-size: 13px; }
76
+ footer a { color: var(--cyan); text-decoration: none; }
77
+
78
+ @media (max-width: 560px) { .topbar nav { display: none; } }
79
+ </style>
80
+ </head>
81
+ <body>
82
+
83
+ <div class="topbar">
84
+ <a class="logo" href="index.html">boost<span>Roadmap</span></a>
85
+ <nav>
86
+ <a href="index.html">Visual guide</a>
87
+ <a href="https://github.com/jonnyeclectic/boost">GitHub</a>
88
+ <a href="https://pypi.org/project/boost-skill-cli/">PyPI</a>
89
+ </nav>
90
+ </div>
91
+
92
+ <div class="wrap">
93
+
94
+ <header class="hero">
95
+ <span class="badge">living document · updated by the quality loop</span>
96
+ <h1>The <span class="grad-text">boost</span> roadmap</h1>
97
+ <p>Every finding from the autonomous quality loop lands here — what shipped,
98
+ what's mid-flight, and what's queued — scored by complexity, impact, and
99
+ a little bit of wow.</p>
100
+ <div class="cta">
101
+ <a class="btn btn-grad" href="#next">See what's next →</a>
102
+ <a class="btn btn-ghost" href="index.html">Back to the guide</a>
103
+ </div>
104
+
105
+ <div class="legend">
106
+ <span class="k"><span class="pill shipped">Shipped</span> merged &amp; released</span>
107
+ <span class="k"><span class="pill inflight">In flight</span> a PR is open</span>
108
+ <span class="k"><span class="pill next">Next</span> triaged, starting soon</span>
109
+ <span class="k"><span class="pill planned">Planned</span> on the list</span>
110
+ </div>
111
+ </header>
112
+
113
+ <!-- ================= SNAPSHOT ================= -->
114
+ <section class="block reveal">
115
+ <div class="stats">
116
+ <div class="stat"><b>4</b><span>Shipped</span></div>
117
+ <div class="stat"><b>3</b><span>Next up</span></div>
118
+ <div class="stat"><b>4</b><span>Planned</span></div>
119
+ <div class="stat"><b>≥80%</b><span>Mutation gate</span></div>
120
+ </div>
121
+ </section>
122
+
123
+ <!-- ================= SHIPPED ================= -->
124
+ <section class="block reveal" id="shipped">
125
+ <div class="block-head">
126
+ <h2>Shipped</h2><span class="count">// merged to main &amp; published</span>
127
+ <span class="rule"></span>
128
+ </div>
129
+ <div class="rgrid">
130
+
131
+ <article class="cap rcard">
132
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Testing · Bug</span></div>
133
+ <h3>Mutation hardening — <code>core/store.py</code></h3>
134
+ <p>Cut mutmut survivors 54&nbsp;→&nbsp;29 and uncovered a latent
135
+ timestamp-preservation bug the old tests masked (second-precision
136
+ <code>now_iso()</code> collisions hid <code>installed_at</code>/<code>tags</code>
137
+ preservation mutants).</p>
138
+ <div class="meta">
139
+ <span class="m">Complexity <b>M</b></span>
140
+ <span class="m hi">Impact <b>High</b></span>
141
+ <span class="m">Wow <b class="wow">★★★</b></span>
142
+ <span class="m">25 mutants killed</span>
143
+ </div>
144
+ </article>
145
+
146
+ <article class="cap rcard">
147
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Testing</span></div>
148
+ <h3>Mutation hardening — <code>core/gitutil.py</code></h3>
149
+ <p>35&nbsp;→&nbsp;1 survivor via argv-assertion tests that record the exact
150
+ git command line — sidestepping the macOS case-insensitive filesystem
151
+ that let <code>HEAD/head</code>, <code>.git/.GIT</code> and
152
+ <code>git/GIT</code> mutants survive against a real repo.</p>
153
+ <div class="meta">
154
+ <span class="m">Complexity <b>M</b></span>
155
+ <span class="m hi">Impact <b>High</b></span>
156
+ <span class="m">Wow <b class="wow">★★★★</b></span>
157
+ <span class="m">34 mutants killed</span>
158
+ </div>
159
+ </article>
160
+
161
+ <article class="cap rcard">
162
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Testing</span></div>
163
+ <h3>Mutation hardening — <code>core/frontmatter.py</code></h3>
164
+ <p>34&nbsp;→&nbsp;11 survivors with exact-equality tests, replacing
165
+ substring <code>in</code> checks a mutated string literal still
166
+ satisfied (e.g. <code>dump()</code>'s <code>XX%s:XX</code> still
167
+ <em>contains</em> <code>tags:</code>).</p>
168
+ <div class="meta">
169
+ <span class="m">Complexity <b>M</b></span>
170
+ <span class="m">Impact <b>Med</b></span>
171
+ <span class="m">Wow <b class="wow">★★★</b></span>
172
+ <span class="m">PR #22 · 23 killed</span>
173
+ </div>
174
+ </article>
175
+
176
+ <article class="cap rcard">
177
+ <div class="head"><span class="pill shipped">Shipped</span><span class="cat">Infra · DX</span></div>
178
+ <h3>Autonomous ship-workflow &amp; isolated worktree</h3>
179
+ <p>The loop now runs commit → PR → green CI → squash-merge → release in a
180
+ dedicated <code>~/boost-loop</code> git worktree (own venv for mutmut),
181
+ and modern <strong>git&nbsp;2.55</strong> replaced a 2017 build that
182
+ fatally choked on the global <code>zdiff3</code> config.</p>
183
+ <div class="meta">
184
+ <span class="m">Complexity <b>L</b></span>
185
+ <span class="m hi">Impact <b>High</b></span>
186
+ <span class="m">Wow <b class="wow">★★★★</b></span>
187
+ </div>
188
+ </article>
189
+
190
+ </div>
191
+ </section>
192
+
193
+ <!-- ================= NEXT ================= -->
194
+ <section class="block reveal" id="next">
195
+ <div class="block-head">
196
+ <h2>Next up</h2><span class="count">// triaged findings, starting soon</span>
197
+ <span class="rule"></span>
198
+ </div>
199
+ <div class="rgrid">
200
+
201
+ <article class="cap rcard">
202
+ <div class="head"><span class="pill next">Next</span><span class="cat">Bug · Infra</span></div>
203
+ <h3>GitHub Pages deploy is broken every push</h3>
204
+ <p>Root cause found: a bogus <code>mutants/None</code> gitlink (a stray
205
+ mutmut artifact) was committed with no <code>.gitmodules</code> entry,
206
+ so Pages' submodule checkout aborts with
207
+ <code>fatal: No url found for submodule path 'mutants/None'</code>.
208
+ Fix: stop tracking <code>mutants/</code>.</p>
209
+ <div class="meta">
210
+ <span class="m">Complexity <b>S</b></span>
211
+ <span class="m hi">Impact <b>High</b></span>
212
+ <span class="m">Wow <b class="wow">★★</b></span>
213
+ <span class="m">docs site down</span>
214
+ </div>
215
+ </article>
216
+
217
+ <article class="cap rcard">
218
+ <div class="head"><span class="pill next">Next</span><span class="cat">Hygiene · DX</span></div>
219
+ <h3>Untrack generated build noise</h3>
220
+ <p>Over a hundred <code>mutants/**</code>, <code>__pycache__/*.pyc</code>
221
+ and <code>.coverage</code> files are tracked despite being in
222
+ <code>.gitignore</code> — they churn every diff and forced careful
223
+ path-scoped <code>git add</code>s. Remove from the index.</p>
224
+ <div class="meta">
225
+ <span class="m">Complexity <b>S</b></span>
226
+ <span class="m">Impact <b>Med</b></span>
227
+ <span class="m">Wow <b class="wow">★</b></span>
228
+ <span class="m">unblocks Pages</span>
229
+ </div>
230
+ </article>
231
+
232
+ <article class="cap rcard">
233
+ <div class="head"><span class="pill next">Next</span><span class="cat">Design</span></div>
234
+ <h3>Reconcile the theme drift</h3>
235
+ <p><code>docs/index.html</code> inlines its own amber/orange palette
236
+ instead of the canonical <em>Aurora</em> cyan→violet→pink system in
237
+ <code>style/boost.css</code>. Move it onto the shared stylesheet so
238
+ one token edit recolours the guide, roadmap, and demo together.</p>
239
+ <div class="meta">
240
+ <span class="m">Complexity <b>M</b></span>
241
+ <span class="m">Impact <b>Med</b></span>
242
+ <span class="m">Wow <b class="wow">★★★</b></span>
243
+ </div>
244
+ </article>
245
+
246
+ </div>
247
+ </section>
248
+
249
+ <!-- ================= PLANNED ================= -->
250
+ <section class="block reveal" id="planned">
251
+ <div class="block-head">
252
+ <h2>Planned</h2><span class="count">// on the list</span>
253
+ <span class="rule"></span>
254
+ </div>
255
+ <div class="rgrid">
256
+
257
+ <article class="cap rcard">
258
+ <div class="head"><span class="pill planned">Planned</span><span class="cat">Testing</span></div>
259
+ <h3>Finish mutation hardening across <code>core/</code></h3>
260
+ <p>Work down the remaining survivor counts, biggest first: catalog&nbsp;(27),
261
+ util&nbsp;(26), ai&nbsp;(21), registry&nbsp;(20), lockfile&nbsp;(13),
262
+ policy&nbsp;(12), config&nbsp;(9), output&nbsp;(8), agents&nbsp;(6),
263
+ paths&nbsp;(4).</p>
264
+ <div class="meta">
265
+ <span class="m">Complexity <b>L</b></span>
266
+ <span class="m">Impact <b>Med</b></span>
267
+ <span class="m">Wow <b class="wow">★★</b></span>
268
+ <span class="m">~146 survivors</span>
269
+ </div>
270
+ </article>
271
+
272
+ <article class="cap rcard">
273
+ <div class="head"><span class="pill planned">Planned</span><span class="cat">Testing · Gap</span></div>
274
+ <h3>Bring <code>commands/</code> under mutation testing</h3>
275
+ <p>The ~5,000-line CLI command layer has <strong>zero</strong> mutation
276
+ coverage today — mutmut is scoped to <code>core/</code> only. Extend
277
+ the gate (or a second gate) to the command groups.</p>
278
+ <div class="meta">
279
+ <span class="m">Complexity <b>XL</b></span>
280
+ <span class="m hi">Impact <b>High</b></span>
281
+ <span class="m">Wow <b class="wow">★★★</b></span>
282
+ </div>
283
+ </article>
284
+
285
+ <article class="cap rcard">
286
+ <div class="head"><span class="pill planned">Planned</span><span class="cat">Design · QA</span></div>
287
+ <h3>Visual regression pass on the guide</h3>
288
+ <p>Drive <code>docs/index.html</code> in a real browser across breakpoints
289
+ to confirm the glass cards, aurora, and terminal windows render
290
+ cleanly — and to catch anything the theme reconciliation shifts.</p>
291
+ <div class="meta">
292
+ <span class="m">Complexity <b>M</b></span>
293
+ <span class="m">Impact <b>Med</b></span>
294
+ <span class="m">Wow <b class="wow">★★★</b></span>
295
+ </div>
296
+ </article>
297
+
298
+ <article class="cap rcard">
299
+ <div class="head"><span class="pill planned">Planned</span><span class="cat">Docs · Marketing</span></div>
300
+ <h3>Refresh the marketing surface</h3>
301
+ <p>Re-record <code>docs/demo.gif</code> from <code>demo.tape</code> against
302
+ the current CLI, tighten the README hero, and give the landing page a
303
+ flashier first impression that matches the Aurora theme.</p>
304
+ <div class="meta">
305
+ <span class="m">Complexity <b>M</b></span>
306
+ <span class="m">Impact <b>Med</b></span>
307
+ <span class="m">Wow <b class="wow">★★★★</b></span>
308
+ </div>
309
+ </article>
310
+
311
+ </div>
312
+ </section>
313
+
314
+ <footer>
315
+ <p>Maintained by the boost quality loop · themed with
316
+ <a href="../style/boost.css">style/boost.css</a> ·
317
+ <a href="index.html">visual guide</a></p>
318
+ </footer>
319
+
320
+ </div>
321
+
322
+ <script src="../style/boost.js" defer></script>
323
+ </body>
324
+ </html>
@@ -0,0 +1,92 @@
1
+ # boost style — *Aurora living-glass*
2
+
3
+ The visual identity of boost, packaged as a small, dependency-free design
4
+ system you can drop into any static page.
5
+
6
+ It's a **neon-tech, glassmorphic** look: a **cyan → violet → pink** triad on a
7
+ near-black ground, an ambient **aurora** that drifts slowly behind the page, and
8
+ **glass cards that light up under the cursor**. The goal is a page that feels
9
+ *slightly alive but not distracting* — every motion is slow, low-contrast, and
10
+ gated behind `prefers-reduced-motion`.
11
+
12
+ Open [`demo.html`](demo.html) to see the whole system on one page.
13
+
14
+ ```
15
+ style/
16
+ ├── boost.css the design system — tokens, atmosphere, primitives, a11y
17
+ ├── boost.js two progressive enhancements: cursor glow + reveal-on-scroll
18
+ ├── demo.html self-contained showcase / living reference
19
+ └── README.md this file
20
+ ```
21
+
22
+ ## Use it
23
+
24
+ ```html
25
+ <link rel="stylesheet" href="style/boost.css">
26
+ <!-- optional: cursor spotlight + reveal-on-scroll -->
27
+ <script src="style/boost.js" defer></script>
28
+ ```
29
+
30
+ Everything is static — no build step, no dependencies, no webfont fetches. The
31
+ JavaScript is pure enhancement: with it disabled, the page is still fully styled
32
+ and legible (cards just don't glow, and reveal elements start visible).
33
+
34
+ ## The palette
35
+
36
+ The entire identity lives in three custom properties. Recolor the system by
37
+ changing their **values** — never the selectors.
38
+
39
+ | Token | Value | Role |
40
+ |-------------|-----------|-------------------------------|
41
+ | `--cyan` | `#22d3ee` | primary accent |
42
+ | `--violet` | `#a855f7` | secondary accent |
43
+ | `--pink` | `#f472d0` | tertiary accent |
44
+ | `--bg` | `#07080f` | near-black page ground |
45
+ | `--text` | `#e9ebf5` | primary ink |
46
+ | `--grad` | cyan → violet → pink | the signature gradient |
47
+
48
+ Neutrals are intentionally cool (a slight blue bias), not pure grey, so they
49
+ read as chosen rather than defaulted.
50
+
51
+ ## What's in the box
52
+
53
+ | Class | What it gives you |
54
+ |------------------|--------------------------------------------------------------------------|
55
+ | `.wrap` | centered `max-width` container that sits above the aurora |
56
+ | `.glass` | the reusable living-glass surface — blur, hover lift, cursor spotlight |
57
+ | `.cap` | a padded glass **card** with icon slot (`--ic-bg`/`--ic-fg`), title, tags |
58
+ | `.stat` / `.stats` | gradient stat figures in a responsive grid |
59
+ | `.badge` | a "live" pill with a breathing dot |
60
+ | `.btn` `.btn-grad` `.btn-ghost` | the two button treatments |
61
+ | `.eyebrow` `.sec-title` `.sec-sub` | section chrome (eyebrow is gradient-clipped) |
62
+ | `.grad-text` | gradient-clip any inline text |
63
+ | `.window` | a macOS-style terminal frame + `.tp/.tv/.tc/.tok/.cm` syntax tokens |
64
+ | `.reveal` | fades/slides in when scrolled into view (via `boost.js`) |
65
+
66
+ ### The atmosphere
67
+
68
+ `body::before` (drifting aurora) and `body::after` (masked tech grid) are fixed
69
+ layers at `z-index: 0`. Keep your content inside `.wrap` (which sets
70
+ `z-index: 1`) so it sits above them.
71
+
72
+ ### The cursor spotlight
73
+
74
+ `boost.js` writes the pointer's element-local position into `--mx` / `--my` on
75
+ each `.glass`, `.cap`, `.stat`, and `.window`. The CSS reads those in a radial
76
+ gradient. No JS → the variables stay unset → the spotlight simply never shows,
77
+ and the hover lift still works.
78
+
79
+ ## Accessibility
80
+
81
+ - **`prefers-reduced-motion`** disables the aurora drift, the breathing badge,
82
+ the reveal animation, and the hover lift — hover still recolors, just without
83
+ movement.
84
+ - **Print** hides the atmosphere and flattens shadows/blur so pages print clean.
85
+ - **Focus** states are visible (`:focus-visible` uses the cyan accent).
86
+ - Contrast targets legible body text (`--text` on `--bg`) at the default sizes.
87
+
88
+ ## Provenance
89
+
90
+ This is the aesthetic used across the boost documentation and
91
+ [jonnyeclectic's portfolio](https://github.com/jonnyeclectic/portfolio),
92
+ extracted here as a standalone, reusable system.