boost-skill-cli 1.0.43__tar.gz → 1.0.44__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.
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_skill_cli.egg-info/PKG-INFO +1 -1
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_skill_cli.egg-info/SOURCES.txt +1 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/docs/design-roadmap.html +2 -2
- boost_skill_cli-1.0.44/tests/unit/test_token_parity.py +32 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/.gitignore +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/CLAUDE.md +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/LICENSE +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/Makefile +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/README.md +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/output.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/docs/index.html +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/docs/roadmap.html +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/setup.cfg +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/style/README.md +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/style/boost.css +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/style/boost.js +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/style/demo.html +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_output.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/unit/test_version.py +0 -0
|
@@ -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.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 0,
|
|
21
|
+
__version__ = version = '1.0.44'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 44)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -467,9 +467,9 @@
|
|
|
467
467
|
</article>
|
|
468
468
|
|
|
469
469
|
<article class="ritem" data-track="system" data-impact="med">
|
|
470
|
-
<div class="ritem-top"><span class="rid">BOOST-D20</span><span class="rstatus
|
|
470
|
+
<div class="ritem-top"><span class="rid">BOOST-D20</span><span class="rstatus done">Shipped</span></div>
|
|
471
471
|
<h4>Single source of design tokens (web ↔ CLI)</h4>
|
|
472
|
-
<p><b>Done:</b> the CLI palette is now single-sourced — one <code>output.TOKENS</code> dict holds every Aurora RGB triple, and the gradient, brand tints and badges all <em>derive</em> from it (previously cyan/violet/pink were re-typed across <code>_AURORA</code> and <code>_GRAD_STOPS</code>). A test locks the contract so a stray hex can't drift. <b>Remaining:</b> lift <code>TOKENS</code> into a shared <code>tokens.json</code> and generate <em>both</em> the CSS custom properties and this map from it, so the site and the terminal move in lockstep
|
|
472
|
+
<p><b>Done:</b> the CLI palette is now single-sourced — one <code>output.TOKENS</code> dict holds every Aurora RGB triple, and the gradient, brand tints and badges all <em>derive</em> from it (previously cyan/violet/pink were re-typed across <code>_AURORA</code> and <code>_GRAD_STOPS</code>). A test locks the contract so a stray hex can't drift. <b>Remaining:</b> lift <code>TOKENS</code> into a shared <code>tokens.json</code> and generate <em>both</em> the CSS custom properties and this map from it, so the site and the terminal move in lockstep. <b>Shipped as enforcement instead of generation:</b> a unit test parses <code>style/boost.css</code> and asserts every <code>--token</code> matches <code>output.TOKENS</code>, so a hex changed in one place and not the other fails CI — the same guarantee without rewriting the hand-authored stylesheet.</p>
|
|
473
473
|
<div class="rmeta"><span class="m-cat">system</span><span>Complexity M</span><span class="m-imp med">Impact Med</span><span class="m-wow">★★★★☆</span></div>
|
|
474
474
|
<div class="rref"><code>core/output.py TOKENS · style/boost.css · future build_tokens.py</code></div>
|
|
475
475
|
</article>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"""Web ↔ CLI palette lockstep (BOOST-D20).
|
|
2
|
+
|
|
3
|
+
Enforces that the CLI's single source of truth, ``output.TOKENS``, stays in
|
|
4
|
+
lockstep with the web design system's tokens in ``style/boost.css``. If a hex
|
|
5
|
+
is changed in one place and not the other, this test fails.
|
|
6
|
+
|
|
7
|
+
Skips when ``style/boost.css`` isn't reachable (e.g. the mutation sandbox,
|
|
8
|
+
which only copies ``boost_cli/``).
|
|
9
|
+
"""
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import re
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
|
|
15
|
+
import pytest
|
|
16
|
+
|
|
17
|
+
from boost_cli.core import output
|
|
18
|
+
|
|
19
|
+
_CSS = Path(__file__).resolve().parents[2] / "style" / "boost.css"
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@pytest.mark.skipif(not _CSS.exists(),
|
|
23
|
+
reason="style/boost.css not reachable (e.g. mutation sandbox)")
|
|
24
|
+
def test_cli_tokens_match_style_css():
|
|
25
|
+
text = _CSS.read_text()
|
|
26
|
+
for name, rgb in output.TOKENS.items():
|
|
27
|
+
m = re.search(r"--%s:\s*#([0-9a-fA-F]{6})" % name, text)
|
|
28
|
+
assert m, "style/boost.css is missing a --%s token" % name
|
|
29
|
+
css_rgb = tuple(int(m.group(1)[i:i + 2], 16) for i in (0, 2, 4))
|
|
30
|
+
assert css_rgb == rgb, (
|
|
31
|
+
"palette drift: output.TOKENS[%r]=%r but style/boost.css --%s=#%s"
|
|
32
|
+
% (name, rgb, name, m.group(1)))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/boost_skill_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.43 → boost_skill_cli-1.0.44}/tests/functional/test_cli_configuration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|