Every loaded SKILL.md and every listed description is paid on every turn of every session, and every delivered message costs its recipient a full turn. scripts/budget.py gains SKILL_WORDS = 600, enforced by test_lock, and test_naming forbids a skill naming its own slash command; 53 descriptions and 10 body lines drop it. The 18 longest skills move details into 31 side files read only in their situation (organize's capacity, succession, peers, offices, relay and lineage; cleanup's docker, worktrees, execute and ask; code-tune, changelog, triage, dream, split and others), so all SKILL.md files shrink from 33866 to 26291 words without dropping a rule; an independent review of HEAD against the new text found no loss in 60 of 64 skills and three weakenings, now restored (WSJF re-estimates after an objective change, cleanup's volume checklist, essence's absolute dates). The kvb-org-organize Peer protocol sends status that asks nothing to the news board, answers nothing that asks nothing, keeps messages terse, and lets light runs admit themselves in the operator's wording; the skills follow it (operator reads the register, relax and wakeup reply through the news, evening collects them there, wsjf asks only for missing estimates, cleanup and triage batch their questions). Skills that explore code ask the codebase-memory-mcp graph first, subagent briefs scale with the stakes and cap their answers, and the skills that need the full register or council tables call show --wide or list --long. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3.6 KiB
name, description
| name | description |
|---|---|
| kvb-code-tune | Speed up CI, deploys, builds and hot paths without losing logic or coverage. Trigger on a job hitting its time budget or when asked where time goes. |
One rule outranks every optimization: nothing that reduces logic, coverage or correctness counts as a speed-up.
Session limits
First run in a session: before measuring, invoke the kvb-think-listen skill
with the questions of listen.md next to this file. Keep the answers for the
session, never ask again, work only inside them; a candidate outside them
becomes a proposal. Invoked by another skill (kvb-ci-triage, kvb-ci-observe)
or an autonomous run: no questions; examine the handed-over log with the
defaults (10 s floor per run, merge bar the kvb-org-split skill's 90 %
confidence and under 5 % break risk, 60 minutes per delegated agent), ask only
when an operator-only fact blocks.
Forbidden, whatever it saves
- Dropping a test, a spec, a play, a drill or a verification pass.
- Raising a timeout or budget so a slow thing fits instead of getting faster.
- Swallowed failures, retry-until-pass, a soft skip, a narrowed assertion.
- Trading error semantics, credential masking, concurrency safety or a lint's intent for speed. A per-item failure stays loud and names its item.
Testing less to shrink the clock is reported as a coverage cut for the operator to decide, never applied as a tuning.
Measure first
- Never tune the unmeasured; read numbers from logs, not by eye (
logs.mdnext to this file for profilers, build logs and gate tables). - Stream every run to a log file and compare runs by their logs; never re-run for a lost number.
- Rank by fixed cost x count: one console boot, package-manager call or container exec times how often the run pays it: a 1 s boot paid 28 times beats a 60 s download paid once.
- The baseline is the newest log of the current code; an older one may carry a step since replaced, and a saving against it is fiction.
Coordinate every cost cluster
Before investigating a cluster (one step, hot path or repeated call), run the
kvb-org-organize Peer protocol with every session on this machine, not only
the lineage. The first to claim cluster/<slug>, --work naming its log line
and number, works it (between machines, the earliest announcement); a claim
without a measurement does not count. Its kvb-org-rasci key result is
<step> from <before> to under <after>, met only by the re-measurement.
Someone earlier: post them your measurements and findings
(${CLAUDE_SKILL_DIR}/../kvb-org-organize/scripts/news.py post --to <holder> "<text>"), take the next cluster, never build a second optimization. A claim
ends with its release or the operator's reassignment.
Always check
On each measured hot path, whatever the operator picked, listed in the output even when clean:
- Language and framework: the most efficient fit? Time in computation or
inside the framework: read
language.mdnext to this file. - Unnecessary recursion: a hot path recursing or a tool calling itself:
read
recursion.mdnext to this file.
The loop
- Measure; name the single biggest cost with its log line and number.
- Coordinate it; work it only when you identified it first.
- Read
candidate.mdnext to this file; form one candidate, harden it with thekvb-think-dialecticskill, delegate, merge or propose, re-measure. - Repeat until the next candidate is worth less than the run measuring it.
Output
One table, biggest saving first:
| Candidate | Before | After | Source | Verdict |
Rejected candidates stay with the reason they fell; proposals carry what would close their gap.