boost-skill-cli 1.0.12__tar.gz → 1.0.13__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 (92) hide show
  1. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/PKG-INFO +12 -1
  2. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/README.md +11 -0
  3. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/_version.py +2 -2
  4. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_skill_cli.egg-info/PKG-INFO +12 -1
  5. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_skill_cli.egg-info/SOURCES.txt +4 -0
  6. boost_skill_cli-1.0.13/style/README.md +92 -0
  7. boost_skill_cli-1.0.13/style/boost.css +352 -0
  8. boost_skill_cli-1.0.13/style/boost.js +55 -0
  9. boost_skill_cli-1.0.13/style/demo.html +140 -0
  10. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/.gitignore +0 -0
  11. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/CLAUDE.md +0 -0
  12. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/CONTRIBUTING.md +0 -0
  13. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/LICENSE +0 -0
  14. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/MANIFEST.in +0 -0
  15. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/Makefile +0 -0
  16. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/SECURITY.md +0 -0
  17. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost +0 -0
  18. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/__init__.py +0 -0
  19. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/__main__.py +0 -0
  20. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/cli.py +0 -0
  21. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/commands/__init__.py +0 -0
  22. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/commands/configuration.py +0 -0
  23. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/commands/discovery.py +0 -0
  24. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/commands/info.py +0 -0
  25. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/commands/intelligence.py +0 -0
  26. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/commands/pkg.py +0 -0
  27. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/commands/quality.py +0 -0
  28. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/commands/taps.py +0 -0
  29. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/commands/team.py +0 -0
  30. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/core/__init__.py +0 -0
  31. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/core/agents.py +0 -0
  32. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/core/ai.py +0 -0
  33. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/core/catalog.py +0 -0
  34. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/core/config.py +0 -0
  35. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/core/frontmatter.py +0 -0
  36. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/core/gitutil.py +0 -0
  37. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/core/journal.py +0 -0
  38. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/core/lockfile.py +0 -0
  39. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/core/logs.py +0 -0
  40. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/core/output.py +0 -0
  41. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/core/paths.py +0 -0
  42. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/core/policy.py +0 -0
  43. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/core/rag.py +0 -0
  44. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/core/registry.py +0 -0
  45. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/core/store.py +0 -0
  46. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/core/util.py +0 -0
  47. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/data/registries.json +0 -0
  48. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_cli/errors.py +0 -0
  49. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
  50. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_skill_cli.egg-info/entry_points.txt +0 -0
  51. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/boost_skill_cli.egg-info/top_level.txt +0 -0
  52. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/docs/.claude/settings.local.json +0 -0
  53. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/docs/DEBUGGING.md +0 -0
  54. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/docs/demo.gif +0 -0
  55. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/docs/demo.tape +0 -0
  56. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/docs/index.html +0 -0
  57. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/docs/rag-architecture.md +0 -0
  58. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/pyproject.toml +0 -0
  59. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/scripts/build_registries.py +0 -0
  60. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/scripts/mutation_gate.py +0 -0
  61. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/setup.cfg +0 -0
  62. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/conftest.py +0 -0
  63. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/functional/test_cli_configuration.py +0 -0
  64. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/functional/test_cli_discovery.py +0 -0
  65. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/functional/test_cli_info.py +0 -0
  66. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/functional/test_cli_intelligence.py +0 -0
  67. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/functional/test_cli_pkg.py +0 -0
  68. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/functional/test_cli_quality.py +0 -0
  69. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/functional/test_cli_taps.py +0 -0
  70. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/functional/test_cli_team.py +0 -0
  71. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/functional/test_everyday_loop.py +0 -0
  72. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/make_fixture.py +0 -0
  73. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/smoke.sh +0 -0
  74. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/unit/test_agents.py +0 -0
  75. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/unit/test_ai.py +0 -0
  76. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/unit/test_catalog.py +0 -0
  77. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/unit/test_config.py +0 -0
  78. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/unit/test_errors_and_cli_table.py +0 -0
  79. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/unit/test_frontmatter.py +0 -0
  80. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/unit/test_gitutil.py +0 -0
  81. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/unit/test_journal.py +0 -0
  82. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/unit/test_lockfile.py +0 -0
  83. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/unit/test_logs.py +0 -0
  84. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/unit/test_mutation_hardening.py +0 -0
  85. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/unit/test_output.py +0 -0
  86. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/unit/test_paths.py +0 -0
  87. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/unit/test_policy.py +0 -0
  88. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/unit/test_rag.py +0 -0
  89. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/unit/test_registry.py +0 -0
  90. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/unit/test_store.py +0 -0
  91. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/tests/unit/test_util.py +0 -0
  92. {boost_skill_cli-1.0.12 → boost_skill_cli-1.0.13}/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.13
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.13'
22
+ __version_tuple__ = version_tuple = (1, 0, 13)
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.13
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
@@ -54,6 +54,10 @@ docs/rag-architecture.md
54
54
  docs/.claude/settings.local.json
55
55
  scripts/build_registries.py
56
56
  scripts/mutation_gate.py
57
+ style/README.md
58
+ style/boost.css
59
+ style/boost.js
60
+ style/demo.html
57
61
  tests/conftest.py
58
62
  tests/make_fixture.py
59
63
  tests/smoke.sh
@@ -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.
@@ -0,0 +1,352 @@
1
+ /* ============================================================================
2
+ boost style — "Aurora living-glass"
3
+ ----------------------------------------------------------------------------
4
+ A neon-tech, glassmorphic design system: a cyan → violet → pink triad on a
5
+ near-black ground, an ambient aurora that drifts behind the page, and glass
6
+ cards that light up under the cursor. Slightly alive, never distracting.
7
+
8
+ Everything is driven by CSS custom properties (see :root below) — recolor the
9
+ whole system by changing token *values*, not selectors.
10
+
11
+ Usage:
12
+ <link rel="stylesheet" href="boost.css">
13
+ <script src="boost.js" defer></script> <!-- cursor glow + scroll reveal -->
14
+
15
+ The interactions (cursor-follow spotlight, reveal-on-scroll) are progressive
16
+ enhancement — the page is fully styled and legible with JS disabled.
17
+ ========================================================================== */
18
+
19
+ :root {
20
+ /* --- ground & ink --- */
21
+ --bg: #07080f; /* near-black page ground */
22
+ --panel: rgba(255,255,255,.035);
23
+ --panel-solid: #0f1120;
24
+ --line: rgba(255,255,255,.09);
25
+ --line-soft: rgba(255,255,255,.05);
26
+ --line-hi: rgba(255,255,255,.22);
27
+ --text: #e9ebf5;
28
+ --text-2: #9298b0;
29
+ --text-3: #676d86;
30
+
31
+ /* --- the triad: the whole identity lives in these three --- */
32
+ --cyan: #22d3ee; /* primary accent */
33
+ --violet: #a855f7;
34
+ --pink: #f472d0;
35
+
36
+ /* --- extended accents --- */
37
+ --blue: #38bdf8;
38
+ --sky: #7dd3fc;
39
+ --green: #4ade80;
40
+ --yellow: #facc15;
41
+
42
+ /* --- signature gradient --- */
43
+ --grad: linear-gradient(96deg, var(--cyan) 0%, var(--violet) 52%, var(--pink) 100%);
44
+
45
+ /* --- terminal surfaces --- */
46
+ --term-bg: #0d1024;
47
+ --term-bar: #171a33;
48
+
49
+ /* --- type --- */
50
+ --mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;
51
+ --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
52
+
53
+ /* --- rhythm --- */
54
+ --radius: 16px;
55
+ --radius-lg: 18px;
56
+ --maxw: 1120px;
57
+ }
58
+
59
+ /* ---------- reset ---------- */
60
+ *, *::before, *::after { box-sizing: border-box; }
61
+ * { margin: 0; padding: 0; }
62
+ html { scroll-behavior: smooth; scroll-padding-top: 84px; }
63
+
64
+ body {
65
+ background: var(--bg);
66
+ color: var(--text);
67
+ font-family: var(--sans);
68
+ font-size: 17px;
69
+ line-height: 1.6;
70
+ -webkit-font-smoothing: antialiased;
71
+ min-height: 100vh;
72
+ }
73
+ a { color: inherit; }
74
+ code { font-family: var(--mono); }
75
+
76
+ :focus-visible {
77
+ outline: 2px solid var(--cyan);
78
+ outline-offset: 2px;
79
+ border-radius: 4px;
80
+ }
81
+
82
+ /* ============================================================================
83
+ Atmosphere — the ambient aurora + faint tech grid
84
+ Two fixed, non-interactive layers behind everything (z-index 0). Give your
85
+ content a positioned wrapper (.wrap sets z-index:1) so it sits above them.
86
+ ========================================================================== */
87
+ body::before {
88
+ content: "";
89
+ position: fixed; inset: -25vmax; z-index: 0; pointer-events: none;
90
+ background:
91
+ radial-gradient(38vmax 38vmax at 12% 6%, rgba(34,211,238,.20), transparent 60%),
92
+ radial-gradient(34vmax 34vmax at 90% 16%, rgba(168,85,247,.18), transparent 60%),
93
+ radial-gradient(30vmax 30vmax at 62% 104%, rgba(244,114,208,.14), transparent 62%);
94
+ filter: blur(34px) saturate(135%);
95
+ animation: aurora-drift 42s ease-in-out infinite;
96
+ will-change: transform;
97
+ }
98
+ body::after {
99
+ content: "";
100
+ position: fixed; inset: 0; z-index: 0; pointer-events: none;
101
+ background-image:
102
+ linear-gradient(rgba(255,255,255,.028) 1px, transparent 1px),
103
+ linear-gradient(90deg, rgba(255,255,255,.028) 1px, transparent 1px);
104
+ background-size: 46px 46px;
105
+ -webkit-mask-image: radial-gradient(1200px 800px at 30% 0%, #000 0%, rgba(0,0,0,.3) 60%, rgba(0,0,0,.1) 100%);
106
+ mask-image: radial-gradient(1200px 800px at 30% 0%, #000 0%, rgba(0,0,0,.3) 60%, rgba(0,0,0,.1) 100%);
107
+ }
108
+ @keyframes aurora-drift {
109
+ 0%, 100% { transform: translate3d(0, 0, 0) scale(1); }
110
+ 50% { transform: translate3d(2.5vmax, -2vmax, 0) scale(1.08); }
111
+ }
112
+
113
+ /* ---------- layout container ---------- */
114
+ .wrap {
115
+ max-width: var(--maxw);
116
+ margin: 0 auto;
117
+ padding: 0 24px;
118
+ position: relative;
119
+ z-index: 1; /* lift content above the atmosphere */
120
+ }
121
+
122
+ /* ============================================================================
123
+ Typographic chrome — eyebrows, section titles, ledes
124
+ ========================================================================== */
125
+ .eyebrow {
126
+ display: block; text-align: center; margin-bottom: 18px;
127
+ font-family: var(--mono); font-size: 12px; font-weight: 700;
128
+ letter-spacing: .24em; text-transform: uppercase;
129
+ background: var(--grad);
130
+ -webkit-background-clip: text; background-clip: text; color: transparent;
131
+ }
132
+ .sec-title {
133
+ font-size: clamp(30px, 4.5vw, 50px); font-weight: 800;
134
+ letter-spacing: -.025em; line-height: 1.1;
135
+ text-align: center; text-wrap: balance;
136
+ }
137
+ .sec-sub {
138
+ max-width: 640px; margin: 18px auto 0; text-align: center;
139
+ color: var(--text-2); font-size: 17.5px; text-wrap: balance;
140
+ }
141
+ .sec-sub code {
142
+ color: var(--cyan); background: rgba(34,211,238,.1);
143
+ padding: 1px 7px; border-radius: 6px; font-size: .88em;
144
+ }
145
+
146
+ /* Gradient-clipped text — apply to any inline span or heading part. */
147
+ .grad-text {
148
+ background: var(--grad);
149
+ -webkit-background-clip: text; background-clip: text; color: transparent;
150
+ }
151
+
152
+ /* ============================================================================
153
+ Badge — a "live" pill with a breathing dot
154
+ ========================================================================== */
155
+ .badge {
156
+ display: inline-flex; align-items: center; gap: 8px;
157
+ font-family: var(--mono); font-size: 12.5px; color: #c9e9f5;
158
+ border: 1px solid rgba(34,211,238,.4); border-radius: 999px;
159
+ padding: 7px 16px;
160
+ background: rgba(34,211,238,.07);
161
+ backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
162
+ }
163
+ .badge::before {
164
+ content: ""; width: 7px; height: 7px; border-radius: 50%;
165
+ background: var(--cyan); box-shadow: 0 0 10px var(--cyan);
166
+ animation: badge-breathe 3.4s ease-in-out infinite;
167
+ }
168
+ @keyframes badge-breathe {
169
+ 0%, 100% { opacity: .45; transform: scale(.82); }
170
+ 50% { opacity: 1; transform: scale(1.15); }
171
+ }
172
+
173
+ /* ============================================================================
174
+ Buttons
175
+ ========================================================================== */
176
+ .btn {
177
+ display: inline-flex; align-items: center; gap: 8px;
178
+ font-size: 15.5px; font-weight: 650; text-decoration: none;
179
+ padding: 14px 26px; border-radius: 12px; border: 1px solid transparent;
180
+ cursor: pointer;
181
+ transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease;
182
+ }
183
+ .btn:hover { transform: translateY(-1px); }
184
+ .btn-grad {
185
+ color: #05141a;
186
+ background: linear-gradient(96deg, var(--cyan), var(--violet));
187
+ box-shadow: 0 8px 30px rgba(34,211,238,.32);
188
+ }
189
+ .btn-grad:hover { box-shadow: 0 12px 40px rgba(168,85,247,.5); }
190
+ .btn-ghost { color: var(--text); border-color: var(--line); background: var(--panel); }
191
+ .btn-ghost:hover { border-color: rgba(255,255,255,.2); }
192
+
193
+ /* ============================================================================
194
+ Stat cards
195
+ ========================================================================== */
196
+ .stats {
197
+ display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px;
198
+ }
199
+ .stat {
200
+ background: var(--panel); border: 1px solid var(--line);
201
+ border-radius: var(--radius); padding: 26px 22px; text-align: center;
202
+ }
203
+ .stat b {
204
+ display: block; font-size: clamp(28px, 3.4vw, 42px); font-weight: 800;
205
+ letter-spacing: -.02em; font-variant-numeric: tabular-nums;
206
+ background: var(--grad);
207
+ -webkit-background-clip: text; background-clip: text; color: transparent;
208
+ }
209
+ .stat span {
210
+ display: block; margin-top: 8px; font-size: 11px; font-weight: 650;
211
+ letter-spacing: .16em; text-transform: uppercase; color: var(--text-2);
212
+ }
213
+
214
+ /* ============================================================================
215
+ Glass cards — the primary content surface
216
+ .glass is the reusable primitive; .cap adds card padding + a header slot.
217
+ ========================================================================== */
218
+ .glass, .cap {
219
+ background: var(--panel); border: 1px solid var(--line);
220
+ border-radius: var(--radius-lg);
221
+ }
222
+ .cap {
223
+ padding: 30px 26px; display: flex; flex-direction: column;
224
+ }
225
+ a.cap, a.glass { text-decoration: none; }
226
+
227
+ .cap .ic {
228
+ width: 46px; height: 46px; border-radius: 13px;
229
+ display: flex; align-items: center; justify-content: center;
230
+ font-size: 21px; margin-bottom: 20px;
231
+ background: var(--ic-bg, rgba(255,255,255,.06)); color: var(--ic-fg, var(--text));
232
+ border: 1px solid var(--line-soft);
233
+ }
234
+ .cap h3 { font-size: 19.5px; font-weight: 750; letter-spacing: -.01em; }
235
+ .cap p { font-size: 14.5px; color: var(--text-2); margin-top: 10px; }
236
+ .cap .tags { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 18px; }
237
+ .cap .tags code, .chip {
238
+ font-size: 12px; color: #d5d5e2; background: rgba(255,255,255,.06);
239
+ border: 1px solid var(--line-soft); border-radius: 7px; padding: 3px 9px;
240
+ }
241
+ .cap .more { margin-top: auto; padding-top: 16px; font-size: 13.5px; font-weight: 650; color: var(--cyan); }
242
+
243
+ /* ============================================================================
244
+ Terminal window — for showing off commands / code
245
+ ========================================================================== */
246
+ .window {
247
+ background: var(--term-bg); border: 1px solid rgba(255,255,255,.12);
248
+ border-radius: 12px; box-shadow: 0 24px 70px rgba(0,0,0,.5); overflow: hidden;
249
+ }
250
+ .window .bar {
251
+ display: flex; align-items: center; height: 38px; padding: 0 14px;
252
+ background: var(--term-bar); border-bottom: 1px solid rgba(0,0,0,.25);
253
+ }
254
+ .window .dots { display: flex; gap: 7px; }
255
+ .window .dots i { width: 12px; height: 12px; border-radius: 50%; }
256
+ .window .dots i:nth-child(1) { background: #ff5f57; }
257
+ .window .dots i:nth-child(2) { background: #febc2e; }
258
+ .window .dots i:nth-child(3) { background: #28c840; }
259
+ .window .bar-title {
260
+ flex: 1; text-align: center; font-family: var(--mono);
261
+ font-size: 12.5px; color: #b8b8d0; margin-right: 47px;
262
+ }
263
+ .window pre {
264
+ padding: 22px 24px; overflow-x: auto;
265
+ font-family: var(--mono); font-size: 13.5px; line-height: 1.75; color: #dcdcf0;
266
+ }
267
+ /* syntax token colors for use inside .window pre */
268
+ .tp { color: #8888aa; } /* prompt $ */
269
+ .tv { color: #7ee787; font-weight: 700; } /* command name */
270
+ .tc { color: var(--yellow); font-weight: 700; } /* subcommand */
271
+ .tok { color: var(--green); } /* success check */
272
+ .tdim { color: #9d9dbd; }
273
+ .cm { color: #9d9dbd; font-style: italic; } /* comment */
274
+
275
+ /* ============================================================================
276
+ Living glass — cursor-following spotlight + lift on hover
277
+ Applies to .glass and the built-in surfaces. boost.js writes --mx / --my
278
+ (pointer position within the element); with no JS the spotlight simply
279
+ never appears and the hover lift still works.
280
+ ========================================================================== */
281
+ .glass, .cap, .stat {
282
+ position: relative; overflow: hidden;
283
+ backdrop-filter: blur(14px) saturate(130%);
284
+ -webkit-backdrop-filter: blur(14px) saturate(130%);
285
+ transition: transform .3s cubic-bezier(.2,.7,.2,1), border-color .3s ease,
286
+ background .3s ease, box-shadow .35s ease;
287
+ }
288
+ .glass > *, .cap > *, .stat > * { position: relative; z-index: 1; }
289
+ .glass::before, .cap::before, .stat::before {
290
+ content: ""; position: absolute; inset: 0; z-index: 0; border-radius: inherit;
291
+ pointer-events: none; opacity: 0; transition: opacity .35s ease;
292
+ background: radial-gradient(340px circle at var(--mx, 50%) var(--my, 50%),
293
+ rgba(34,211,238,.16), rgba(168,85,247,.10) 42%, transparent 70%);
294
+ }
295
+ .glass:hover, .cap:hover, .stat:hover {
296
+ transform: translateY(-4px);
297
+ border-color: var(--line-hi);
298
+ background: rgba(255,255,255,.06);
299
+ box-shadow: 0 22px 60px -22px rgba(168,85,247,.5),
300
+ inset 0 0 0 1px rgba(34,211,238,.12);
301
+ }
302
+ .glass:hover::before, .cap:hover::before, .stat:hover::before { opacity: 1; }
303
+
304
+ /* terminal window gets a gentler accent bloom */
305
+ .window { transition: box-shadow .35s ease, transform .3s ease; }
306
+ .window:hover {
307
+ transform: translateY(-3px);
308
+ box-shadow: 0 30px 80px -24px rgba(34,211,238,.4), 0 24px 70px rgba(0,0,0,.5);
309
+ }
310
+
311
+ /* ============================================================================
312
+ Reveal on scroll — add class="reveal"; boost.js flips .in when it enters view
313
+ ========================================================================== */
314
+ .reveal { opacity: 1; } /* visible by default (no-JS safe) */
315
+ .js .reveal { opacity: 0; transform: translateY(16px); transition: opacity .6s ease, transform .6s ease; }
316
+ .js .reveal.in { opacity: 1; transform: none; }
317
+
318
+ /* ============================================================================
319
+ Responsive
320
+ ========================================================================== */
321
+ @media (max-width: 960px) {
322
+ .stats { grid-template-columns: repeat(2, 1fr); }
323
+ }
324
+ @media (max-width: 620px) {
325
+ .stats { gap: 10px; }
326
+ .stat { padding: 18px 10px; }
327
+ }
328
+
329
+ /* ============================================================================
330
+ Accessibility — honor reduced-motion, and print cleanly
331
+ ========================================================================== */
332
+ @media (prefers-reduced-motion: reduce) {
333
+ html { scroll-behavior: auto; }
334
+ body::before { animation: none !important; }
335
+ .badge::before { animation: none !important; }
336
+ .glass, .cap, .stat, .window {
337
+ transition: border-color .3s ease, box-shadow .3s ease;
338
+ }
339
+ .glass:hover, .cap:hover, .stat:hover, .window:hover { transform: none; }
340
+ .reveal, .js .reveal {
341
+ transition: none !important; transform: none !important; opacity: 1 !important;
342
+ }
343
+ }
344
+
345
+ @media print {
346
+ body::before, body::after { display: none !important; }
347
+ .glass, .cap, .stat, .window {
348
+ box-shadow: none !important; backdrop-filter: none !important;
349
+ -webkit-backdrop-filter: none !important;
350
+ }
351
+ .reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
352
+ }
@@ -0,0 +1,55 @@
1
+ /* ============================================================================
2
+ boost style — interactions
3
+ ----------------------------------------------------------------------------
4
+ Two progressive enhancements, both safe to omit:
5
+ 1. cursor-following spotlight on glass surfaces (writes --mx / --my)
6
+ 2. reveal-on-scroll for elements marked class="reveal"
7
+
8
+ Load with `defer` (or at the end of <body>). Nothing here is required for
9
+ the page to be styled and legible — it only adds motion.
10
+ ========================================================================== */
11
+ (function () {
12
+ "use strict";
13
+
14
+ // Signal to CSS that JS is on, so .reveal can start hidden (and not trap
15
+ // no-JS visitors with permanently-invisible content).
16
+ document.documentElement.classList.add("js");
17
+
18
+ var reduce = window.matchMedia &&
19
+ window.matchMedia("(prefers-reduced-motion: reduce)").matches;
20
+
21
+ function ready(fn) {
22
+ if (document.readyState !== "loading") { fn(); }
23
+ else { document.addEventListener("DOMContentLoaded", fn); }
24
+ }
25
+
26
+ ready(function () {
27
+ // ---- reveal on scroll ----
28
+ var revealables = document.querySelectorAll(".reveal");
29
+ if (reduce || !("IntersectionObserver" in window)) {
30
+ revealables.forEach(function (el) { el.classList.add("in"); });
31
+ } else {
32
+ var io = new IntersectionObserver(function (entries) {
33
+ entries.forEach(function (en) {
34
+ if (en.isIntersecting) {
35
+ en.target.classList.add("in");
36
+ io.unobserve(en.target);
37
+ }
38
+ });
39
+ }, { rootMargin: "0px 0px -8% 0px", threshold: 0.05 });
40
+ revealables.forEach(function (el) { io.observe(el); });
41
+ }
42
+
43
+ // ---- cursor-following spotlight ----
44
+ // Pointer position is written as element-local pixels into --mx / --my,
45
+ // which the radial-gradient in boost.css reads.
46
+ var glassy = document.querySelectorAll(".glass, .cap, .stat, .window");
47
+ glassy.forEach(function (el) {
48
+ el.addEventListener("pointermove", function (e) {
49
+ var r = el.getBoundingClientRect();
50
+ el.style.setProperty("--mx", (e.clientX - r.left) + "px");
51
+ el.style.setProperty("--my", (e.clientY - r.top) + "px");
52
+ });
53
+ });
54
+ });
55
+ })();
@@ -0,0 +1,140 @@
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 style — Aurora living-glass</title>
7
+ <meta name="description" content="A showcase of the boost design system: tokens, glass cards, cursor glow, and the ambient aurora.">
8
+ <link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Crect width='100' height='100' rx='20' fill='%2307080f'/%3E%3Ctext x='50' y='70' font-size='58' font-family='monospace' font-weight='bold' fill='%2322d3ee' text-anchor='middle'%3E%E2%9C%A6%3C/text%3E%3C/svg%3E">
9
+ <link rel="stylesheet" href="boost.css">
10
+ <style>
11
+ /* demo-only layout niceties (not part of the design system) */
12
+ section { padding: 96px 0 20px; }
13
+ .hero { padding: 88px 0 20px; }
14
+ .hero h1 {
15
+ font-size: clamp(40px, 6.4vw, 76px); font-weight: 800;
16
+ letter-spacing: -.035em; line-height: 1.04; max-width: 880px; text-wrap: balance;
17
+ margin-top: 26px;
18
+ }
19
+ .hero p.lede { max-width: 660px; margin-top: 26px; font-size: 19px; color: var(--text-2); }
20
+ .cta-row { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 34px; }
21
+ .stats { margin-top: 64px; }
22
+ .caps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 56px; }
23
+ .demo-grid { display: grid; grid-template-columns: 1.1fr 1fr; gap: 48px; align-items: center; margin-top: 56px; }
24
+ .swatches { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 56px; }
25
+ .swatch { border-radius: 14px; padding: 18px; border: 1px solid var(--line);
26
+ font-family: var(--mono); font-size: 12px; color: #04121a; min-height: 92px;
27
+ display: flex; flex-direction: column; justify-content: flex-end; font-weight: 700; }
28
+ footer { margin-top: 120px; border-top: 1px solid var(--line-soft); padding: 40px 0 60px; text-align: center; }
29
+ footer p { color: var(--text-3); font-size: 13.5px; }
30
+ footer b { font-family: var(--mono); color: var(--cyan); }
31
+ @media (max-width: 960px) {
32
+ .caps { grid-template-columns: repeat(2, 1fr); }
33
+ .demo-grid { grid-template-columns: 1fr; gap: 36px; }
34
+ .swatches { grid-template-columns: repeat(3, 1fr); }
35
+ }
36
+ @media (max-width: 620px) { .caps { grid-template-columns: 1fr; } }
37
+ </style>
38
+ </head>
39
+ <body>
40
+
41
+ <main>
42
+ <!-- ===== hero ===== -->
43
+ <div class="wrap hero">
44
+ <span class="badge">boost style · Aurora living-glass</span>
45
+ <h1>A design system that feels <span class="grad-text">slightly alive.</span></h1>
46
+ <p class="lede">A neon-tech, glassmorphic identity — a cyan → violet → pink triad on
47
+ a near-black ground, an aurora that drifts behind the page, and glass that lights up
48
+ under your cursor. Move your pointer across the cards below.</p>
49
+ <div class="cta-row">
50
+ <a class="btn btn-grad" href="README.md">Read the docs →</a>
51
+ <a class="btn btn-ghost" href="https://github.com/jonnyeclectic/boost">View on GitHub</a>
52
+ </div>
53
+
54
+ <div class="stats">
55
+ <div class="stat reveal"><b>3</b><span>Core accent hues</span></div>
56
+ <div class="stat reveal"><b>1</b><span>CSS + one JS file</span></div>
57
+ <div class="stat reveal"><b>0</b><span>Build steps</span></div>
58
+ <div class="stat reveal"><b>A11y</b><span>Reduced-motion aware</span></div>
59
+ </div>
60
+ </div>
61
+
62
+ <!-- ===== glass cards ===== -->
63
+ <section>
64
+ <div class="wrap">
65
+ <span class="eyebrow">Primitives</span>
66
+ <h2 class="sec-title">Glass cards that glow</h2>
67
+ <p class="sec-sub">Add <code>class="glass"</code> — or use the <code>.cap</code> card —
68
+ to get the cursor-following spotlight, hover lift, and accent bloom.</p>
69
+
70
+ <div class="caps">
71
+ <div class="cap reveal" style="--ic-bg: rgba(34,211,238,.12); --ic-fg: #7dd3fc;">
72
+ <div class="ic">✦</div>
73
+ <h3>Living glass</h3>
74
+ <p>A radial spotlight tracks the cursor across each surface, blended from the
75
+ cyan-to-violet triad. Purely a hover enhancement.</p>
76
+ <div class="tags"><code>.glass</code><code>--mx / --my</code></div>
77
+ </div>
78
+ <div class="cap reveal" style="--ic-bg: rgba(168,85,247,.14); --ic-fg: #c4b5fd;">
79
+ <div class="ic">◈</div>
80
+ <h3>Token-driven</h3>
81
+ <p>Recolor the entire system by changing three custom properties. Selectors never
82
+ need to move.</p>
83
+ <div class="tags"><code>--cyan</code><code>--violet</code><code>--pink</code></div>
84
+ </div>
85
+ <div class="cap reveal" style="--ic-bg: rgba(244,114,208,.13); --ic-fg: #f9a8d4;">
86
+ <div class="ic">◐</div>
87
+ <h3>Accessible by default</h3>
88
+ <p>Honors <code>prefers-reduced-motion</code>, prints clean, and stays fully
89
+ legible with JavaScript disabled.</p>
90
+ <div class="tags"><code>reduced-motion</code><code>print</code></div>
91
+ </div>
92
+ </div>
93
+ </div>
94
+ </section>
95
+
96
+ <!-- ===== terminal + swatches ===== -->
97
+ <section>
98
+ <div class="wrap">
99
+ <span class="eyebrow">Surfaces</span>
100
+ <h2 class="sec-title">Terminal window &amp; the palette</h2>
101
+ <p class="sec-sub">The <code>.window</code> surface for showing off commands, and the
102
+ triad that names the whole system.</p>
103
+
104
+ <div class="demo-grid">
105
+ <div class="window reveal">
106
+ <div class="bar"><div class="dots"><i></i><i></i><i></i></div>
107
+ <div class="bar-title">zsh — boost</div></div>
108
+ <pre><span class="tp">$</span> <span class="tv">boost</span> <span class="tc">search</span> brainstorming
109
+ <span class="tok">✓</span> 12 skills across 5 tapped registries
110
+ <span class="tok">✓</span> AI-ranked by relevance
111
+
112
+ <span class="tp">$</span> <span class="tv">boost</span> <span class="tc">install</span> brainstorming
113
+ <span class="tok">✓</span> linked → claude-code · windsurf · cursor
114
+ <span class="tok">✓</span> lock updated (.skill-lock.json)
115
+
116
+ <span class="cm"># the boost style — Aurora living-glass</span></pre>
117
+ </div>
118
+
119
+ <div class="swatches">
120
+ <div class="swatch reveal" style="background: var(--cyan);">--cyan<br>#22d3ee</div>
121
+ <div class="swatch reveal" style="background: var(--violet); color:#0a0210;">--violet<br>#a855f7</div>
122
+ <div class="swatch reveal" style="background: var(--pink); color:#25041c;">--pink<br>#f472d0</div>
123
+ <div class="swatch reveal" style="background: var(--grad);">--grad<br>triad</div>
124
+ <div class="swatch reveal" style="background: var(--panel-solid); color: var(--text); border-color: var(--line-hi);">--panel<br>glass</div>
125
+ <div class="swatch reveal" style="background: var(--bg); color: var(--text); border-color: var(--line-hi);">--bg<br>#07080f</div>
126
+ </div>
127
+ </div>
128
+ </div>
129
+ </section>
130
+
131
+ <footer>
132
+ <div class="wrap">
133
+ <p><b>boost</b> style — Aurora living-glass · self-contained, stdlib-of-CSS only</p>
134
+ </div>
135
+ </footer>
136
+ </main>
137
+
138
+ <script src="boost.js" defer></script>
139
+ </body>
140
+ </html>
File without changes