ShippedPerformance
Memoize config.load() in-process
Every config.get() re-reads config.json and runs a recursive deepcopy of DEFAULTS (core/config.py:80–102). It's called all over hot paths — ai.enabled, per-skill enabled_agents in sync loops, log-level and policy checks — so one command triggers dozens of full reads + deep-copies. Cache the load, invalidate on save.
Complexity S
Impact Med-High
Wow ★★★
ShippedRobustness
Atomic skill install (temp-dir swap)
Already shipped: core/store.py's _copy_skill stages the
full copy in a temp dir on the same filesystem, then swaps it in with
two atomic os.replace renames and rolls back to the original
on any failure — the old rmtree-then-copytree window is gone. Covered by
test_copytree_failure_preserves_existing and the flaky
os.replace test in tests/unit/test_store.py.
Complexity M
Impact Med
Wow ★★★
ShippedRobustness
One shared atomic-write helper
journal._maybe_rotate is a racy read-modify-write that concurrent appends can truncate mid-line; rag._save and config.save repeat the non-atomic pattern (journal.py:63 · rag.py:252 · config.py:93). Factor a single atomic_write into core and route all four through it.
Complexity S
Impact Med
Wow ★★
ShippedCorrectness
Unify _tilde() — two copies have a boundary bug
Eight command modules each define _tilde; the quality and intelligence versions use startswith(home) with no separator check (quality.py:78), so /Users/bob-backup wrongly contracts to ~-backup. Collapse to one helper in core/paths.
Complexity S
Impact Med
Wow ★★
ShippedPerformance
Cache the catalog entry-set across RAG queries
rag.retrieve() calls all_entries(), which reads & json.loads every tap cache on every search to build the live map (rag.py:323 · catalog.py:166–181) — the BM25 index is mtime-cached, the entry set is not. Memoize the entry set on cache mtime the same way.
Complexity M
Impact Med
Wow ★★★
ShippedPerformance
Stop re-serializing entry meta on every search
catalog.search computes json.dumps(meta).lower() for every entry on every query just to substring-match (catalog.py:222). Precompute a lowercased search blob at index time, or match structured fields directly.
Complexity S
Impact Med
Wow ★★
ShippedPerformance
Prune ignored dirs during scan_dir walk
Two full rglob passes descend into .git/node_modules and only filter afterward, and the skill-dir membership test is O(files × skill_dirs) (catalog.py:106,119–123). Switch to an os.walk that prunes ignored dirs in place; index skill dirs in a set.
Complexity M
Impact Low-Med
Wow ★★
ShippedTech-debt
Single tech-stack prober
Shipped in #140. The canonical detect_stack prober — a
~75-line pure function that lived in the command module
commands/discovery.py yet was imported across the command layer by
both intelligence and quality — now lives in one place:
a new pure core module core/stackprobe.py (with its private
_SKIP_DIRS/_EXT_LANGS/_read_text helpers,
used nowhere else). Every consumer imports the single core prober;
discovery re-exports it for compatibility, and the now-dead helpers
+ unused os import were removed from it. Covered by 16 new
mutation-gated unit tests. The consumer-local enrichment fallbacks
(_local_stack, _STACK_MARKERS) are intentionally kept —
they add coarse filesystem signal the language-only prober doesn't.
Complexity M
Impact Med
Wow ★★
prober moved to core
ShippedTech-debt
Single imperative-rule extractor
Three separate regexes scan SKILL.md bodies for "Always / Never / Must / Do not" lines across cmd_explain, simulate and conflict (info.py:363 · intelligence.py:254 · quality.py:822) — same concept, three implementations. Extract one shared core extractor.
Complexity M
Impact Med
Wow ★★
PlannedMaintainability
Split oversized command modules
quality.py (14 cmds / 1,051 lines) mixes audit regexes, conflict NLP, decay scoring, fingerprinting and a health dashboard; intelligence.py and configuration.py are similarly overloaded. Split along cohesive seams to shrink blast radius and sharpen mutation-gate targeting.
Complexity L
Impact Med
Wow ★★
ShippedMaintainability
Robust tag argument parsing
Because -tag looks like an option, cmd_tag calls parse_known_args then re-walks raw argv to reorder tokens (info.py:575–584) — fragile enough that the comment calls it "defensive". Replace with a positional-only sub-parser or an explicit --add/--remove design.
Complexity M
Impact Med
Wow ★★
ShippedTech-debt · RAG
Localize the stored BM25 snippet
_make_docs stored piece[:200] — the head of the best
chunk — and retrieve surfaced it verbatim, yet the docstrings
promised the "best-matching passage": when the matched terms sat past the
chunk's first 200 chars, the shown snippet (and the rerank context fed to the
LLM) missed them entirely. Now the index stores a larger head of the matched
chunk (SNIP_STORE) and retrieve windows a
SNIP_WIDTH-char passage centered on the first query term,
with ellipsis markers on trimmed edges (_passage). Ranking is
untouched — the eval harness confirms recall@10 holds at
0.919 — and the index grows a bounded ~34% (an
INDEX_VERSION bump forces the one-time reindex); storing whole
chunks instead cost ~70%.
Complexity M
Impact Low
Wow ★★★
query-centered snippets
ShippedCorrectness
Frontmatter scalar over-coercion
Already shipped: core/frontmatter._scalar coerces only the YAML 1.2
core keywords (true/false/null/~);
the 1.1 aliases yes/no/on/off/none stay strings, so a skill
named none or tagged on keeps the right type.
Guarded by test_scalar_leaves_yaml11_aliases_as_strings.
Complexity S
Impact Low
Wow ★★
ShippedInstall engine · Rules
Rule install — materialize rules into each agent's native format
Today store.install refuses every non-skill kind
("rules and workflows show up in boost search/boost taps
for now"), so rules are indexed for discovery but land nowhere —
there is no boost install path for a rule. Add one that
writes each rule into the form the target agent actually reads, since
there is no single cross-agent "rules folder": Cursor/Windsurf/Cline
consume a rules directory (.cursorrules /
.windsurfrules / .clinerules / .mdc),
but Claude Code has no rules folder — its standing
rules are CLAUDE.md. So installing a rule for Claude means
merging it into CLAUDE.md (a managed, idempotent block),
while for the others it means dropping the file into their rules dir.
Needs a store/lock model for rules (uninstall must cleanly remove the
merged block), mirroring how skills symlink into enabled_agents().
Complexity L
Impact High
Wow ★★★★
rules are indexed but never installed
ShippedInstall engine · Workflows
Workflow install — drop commands/subagents into each agent's native dir
After rules landed (#141), store.install still refused
kind == "workflow", so slash commands and subagents were
indexed for discovery but installed nowhere — browse could
surface a workflow but not install it. Add the install path. Unlike
rules (no cross-agent rules folder, so Claude needs a
CLAUDE.md merge), workflows are a clean file drop: a
command markdown lands in the agent's commands/ dir and a
subagent in its agents/ dir, with the slot derived from the
source path (commands//workflows/ →
commands, agents//subagents/ →
agents). Mirrors the rule store/lock model so uninstall
removes exactly what install wrote.
Complexity M
Impact High
Wow ★★★
rules install (#141); workflows were still tap-only
PlannedInstall engine · Scope
Workspace scope — boost install --local into the project
boost is user-global only: the store is ~/.agents/skills and every
install symlinks into home-level agent dirs (~/.claude/skills,
~/.cursor/skills, ~/.windsurf/skills). There is
no per-project scope — install takes --agent
(which agents) but no --global/--local. Add a
workspace paradigm mirroring npm (local vs
-g): boost install <skill> --local writes
into the current repo's .claude/skills/ (and the other
agents' project dirs), and — paired with rule install — merges a rule
into the project's ./CLAUDE.md rather than the global one,
so a team can commit its skills and rules with the repo. Needs a
per-scope store/lock, scope resolution (walk up for the nearest
project root), and list/sync/uninstall
that understand both scopes.
Complexity L
Impact High
Wow ★★★★
--global vs --local, project .claude/
ShippedInstall engine · UX
boost list shows installed rules and workflows
Rule (#141) and workflow (#150) install landed, but
boost list still read only the lock file's
skills section — so a rule or workflow installed from
browse showed up nowhere, and worse, the empty-state
("no skills installed") fired whenever no skill was
present even if rules/workflows were, hiding them entirely. Extend
list to render an installed rules and
installed workflows table (agents drawn from each item's
recorded materializations, workflows also showing their slot), gate
the empty state on all three kinds being empty, and move
--json to a {skills, rules, workflows} shape.
--tag stays skill-only.
Complexity S
Impact Med
Wow ★★
list was skill-only after rule/workflow install landed
ShippedInstall engine · UX
boost update refreshes installed rules and workflows
After rule (#141) and workflow (#150) install landed,
boost update still upgraded only skills — a rule or
workflow stayed frozen at its install-time content even after its tap
moved. Extend the update pass: for each installed rule/workflow from a
refreshed tap, re-materialize (force reinstall) when the source
version bumped or its file content sha changed, mirroring the skill
upgrade loop. Rules/workflows carry no pin/quarantine flags and their
source is a single file, so there is no risky-diff gate — re-applying
a file drop or a CLAUDE.md managed block is cheap and the
refresh is reported per item.
Complexity S
Impact Med
Wow ★★
update was skill-only after rule/workflow install