Repository navigation
Open
Labels
host-runNeeds an unattended run on a host; the host runner takes it, not a person or the issue lane.Needs an unattended run on a host; the host runner takes it, not a person or the issue lane.priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.Triaged, unblocked, and fully specified; eligible to pick up.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.A briefed fix or small feature; blast radius bounded by the brief, tests exist.
Description
Parent: #12229
Problem
Skill bodies a session loads stay in its context for the rest of the session. Measured over main-thread transcripts in this repository, 2026-10-31T00:00Z to 2026-11-02T00:00Z (134 sessions):
- 185 skill loads carried 6.77 MB, median 37,504 bytes, p90 51,254; 173 of 185 were over 10 KB.
- Subagents loaded a further 230 bodies, 8.1 MB.
- Largest by load count and size:
| Skill | Loads | Median bytes |
|---|---|---|
source-control:pull-request |
51 | 50,802 |
session-flow:handoff |
58 | 37,488 |
session-flow:keep-going |
24 | 24,978 |
work-items:work |
10 | 49,847 |
implementation:implement-dispatch |
3 | 72,475 |
Not measured: how much of each body the session acts on. That needs a per-skill reading of what a typical invocation uses.
Done when
- For the five skills above, the body sections a typical invocation does not use are named, with the evidence (which actions the loads ran).
- Each is moved behind progressive disclosure (a reference file the body points to) or the skill's measured body size is recorded as already lean, with eval evidence of no loss for any cut (skill criteria).
- The after figure is measured the same way over a window of the same length.
Out of scope
Metadata
Metadata
Assignees
Labels
host-runNeeds an unattended run on a host; the host runner takes it, not a person or the issue lane.Needs an unattended run on a host; the host runner takes it, not a person or the issue lane.priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.Triaged, unblocked, and fully specified; eligible to pick up.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.A briefed fix or small feature; blast radius bounded by the brief, tests exist.
Type
Fields
Work status
ready
Activity
github-actions commentedon Nov 2, 2026
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Medium
Complexity: Medium
Uncertainty: Knowable
Flags: none
Blocked by: none
I understood this as a bounded perf task. For five heavily loaded skills (pull-request, handoff, keep-going, work, implement-dispatch), name the body sections a typical invocation never acts on, with evidence from the transcripts. Then move those sections behind a reference file, or record the body as already lean, with eval evidence of no loss. Finally, re-measure over a window of the same length.
The after-measurement over a new window needs a later run, so it can't be checked in this run. The rest can be triaged as normal.
Possible overlap, not confirmed as duplicates: #12240, #12243 and #12244 (cutting the bodies of the most-invoked skills through progressive disclosure). A maintainer should check whether they already cover these five skills.
Automated triage, applied by the lanes App.
github-actions commentedon Nov 2, 2026
github-actions commentedon Nov 2, 2026
melodic-automation-lanes commentedon Nov 2, 2026
The work-resolve-issue lane stopped on this issue (
host-only): the run reports the work needs a host run the lane cannot make.It added
host-runand removedagent-ready: an agent run on a host builds it, and it waits on no decision from a person.In the run's words:
What the run says it did not do:
Run: https://github.com/melodic-software/claude-code-plugins/actions/runs/41513791622
To hand it back to the lane, remove
host-runand addagent-readyagain.kyle-sexton commentedon Nov 3, 2026
Claim. Backlog HITL host-run worker is taking this now.
test(source-control): make the thread-reply grader miss a thread read
kyle-sexton commentedon Nov 3, 2026
Host run. I measured which actions the five skills' main-session loads ran, cut the one skill whose evidence and evals support a cut (
/source-control:pull-request, #12739), and recorded why the other four are not cut here.What ran
claude plugin evalrounds (Sonnet subject,--ablation none, before = main's skill files, after = the branch),run-validity.py,noise-report.py --baseline, and/docs-hygiene:compress compare.Method (re-run it for the after figure):
isSidechainfalse) on both hosts, in every project directory whose name containsclaude-code-pluginsor belongs to ahost-run-*worktree under the worktree root.Base directory for this skill:; its size is that message's UTF-8 bytes; its action is theARGUMENTS:line, else the precedingSkillcall'sargs, else the slash command's<command-args>. Reference reads areReadcalls under the skill directory before the next load.Done-when 1: unused sections, with the actions the loads ran (PASS)
/source-control:pull-requestreference/create.mdorreference/ready-for-review.md, neverreference/monitor.mdreference/monitor.md; SKILL.md now 35,846 bytes/session-flow:handoff/session-flow:keep-going/work-items:work--ciunattended-callers.test.mjsreads its text; cases come first/implementation:implement-dispatchDone-when 2 (PARTIAL)
pull-request: moved. compress compare on the final head: VERDICT: PASS, no SEMANTIC LOSS. Monitor cases, 6 runs per arm, both rounds VALID: test edited and run before the fix 6/6 on both arms; person's thread left unresolved 5/6 before, 6/6 after; reply write 1/6 before, 0/6 after; mean case score 0.83 on both.
noise-report.pysays "n too small to call" at 2 cases. The create, ready, merge and dirty rounds are INVALID on both arms because the skill did not fire in some runs. handoff is #12657's. keep-going, work-items:work and implement-dispatch are not cut, for the reasons above.Done-when 3 (NOT YET)
The after figure needs a 48-hour window once the PR merges, measured with the method above, on both hosts.
Target labels: add none; remove none.
fix(source-control): point comments-ci and readiness at the moved che…
kyle-sexton commentedon Nov 4, 2026
Claim. Lane 5 host-run session takes the done-when 2 evidence for
/session-flow:keep-going,/work-items:workand/implementation:implement-dispatch(hub H24). None of the three has a cut yet per the 2026-11-03 host run, so each gets a measured move or a lean record;/work-items:workgets CI-mode eval cases first.kyle-sexton commentedon Nov 4, 2026
/session-flow:keep-going: not cut, because the section it would move is in regular use. Done-when 2's lean record for this skill. No eval ran, because there is no cut to compare.Main-session loads on the laptop (
isSidechainfalse, all transcripts on this host, 2026-09-28 to 2026-11-03): 73 loads in 58 sessions./login, or a stop message); the link is unread for 3. That supports at least 39 of 73 (53%).SKILL.md:121-124), and step 4's rate-limited agent path runs its checks (:179-182). A move would send those loads to the reference file anyway, or need that logic kept in the body.Limits: laptop only, so this does not reconcile with the 38 loads across both hosts in the 2026-11-03 comment. Loads cluster: several limit events each produced 5 to 7 loads, so distinct limit events are fewer. The count shows a load followed a limit stop, not that the section's text changed the run; only
kg-missing-goal-asks-firstcovers this skill. The majority holds at 12 entries or more, not at 6./work-items:workand/implementation:implement-dispatchfollow.kyle-sexton commentedon Nov 4, 2026
/work-items:work: CI mode moved, with eval evidence. PR #13133 merged as 44d49c48bf.SKILL.mdwent from 61,462 to 47,301 bytes; CI mode is nowreference/ci-mode.md, and the PR added threewk-ci-*cases.wk-*cases, 5 runs per version, Sonnet subject, opus judge, Claude Code 2.1.318. All four rounds VALID (warning:skill fired, slash-invoked prompts).wk-ci-*runs read the moved file. Runs of the other 5 cases did not./docs-hygiene:compress compare: PASS, no semantic loss.Not established:
venue-line-not-requiredmissed in 2 of 10 after-arm runs and 0 of 10 before; the two runs read skipped the review correctly but paraphrased the line, so this may be a small real effect. Only Sonnet was measured and no realwork-resolve-issuelane ran; the first realagent-readyrun is the live check of the pointer. Thewk-bug-*judges are uncalibrated.Correction to the 2026-11-03 comment for the next skill:
/implementation:implement-dispatchwas left uncut as "too few loads" (2). On the laptop it has 49 main-session loads over all transcripts, 7.1% of skill-load bytes, so that reason no longer holds. A cut attempt follows.kyle-sexton commentedon Nov 4, 2026
/implementation:implement-dispatch: not cut. A move was built and measured, and it did not pass, so no PR. Done-when 2's lean record for this skill.Load evidence (laptop only, 49 main-session loads in 49 sessions):
implementerdispatched in 49,phase-verifierin 43,DEVIATIONS.mdwritten in 9, orchestrator commit authority in 15 (regex). Competing attempts: 0 uses, and it was the one section with no use and no contract holding it in the body. So only that section was tried:SKILL.md73,874 to 69,749 bytes (5.6%). The other unused sections stay for stated reasons: thebatchboundary is required bydocs/contracts/native-references/README.md, and the lever check and agent-teams rule apply to every dispatch.Eval: Sonnet subject, opus judge, Claude Code 2.1.318,
--ablation none --scaffold, 5 runs per case, 12 cases after 5 dropped for never firing the skill, about 132 USD list-price estimate.A rule written before round 5 required both arms VALID and non-inferior, and it says no PR otherwise. No round was VALID on both arms with the final graders.
A signal against the move:
blocking-human-decisionin the twopb-*escalation cases missed 4 of 40 before and 15 of 40 after across rounds 2 to 5 (I recounted these from the result files; Fisher p=0.0075, post hoc and not corrected for the 7 graders pooled). Runs still park (no-further-roundandno-third-roundhad 0 misses) but type the entrydeviation. Neither case read the moved file and the rest ofSKILL.mddid not change, so the cause is UNVERIFIED. The body does not state which entry type a repeated CRITICAL takes;implement/context/phase-review.md:43does, which may explain the swing (UNVERIFIED).The moved text itself worked:
id-competing-attempts-recordscored 1.00 on both arms, with 20 of 20 after-arm reads./docs-hygiene:compress comparesaid PASS.Next, if anyone retries: explain the entry-type shift first. Stating the blocking
human-decisionrule in the body is the cheap test.Found: the
brief-*cases (4) andcontrol-docs-phase-no-red-runnever fire the skill on Sonnet, so animplementationsuite run that includes them reads INVALID on the skill-fired check.code-writing-dispatchmisses firing about 1 run in 5. Four graders failed correct runs; Lane 5 ships those fixes separately.State of done-when 2: pull-request moved (#12739), work moved (#13133), keep-going and implement-dispatch recorded here, handoff is #12657's. Done-when 3 stays open for the 48-hour after figure.
kyle-sexton commentedon Nov 6, 2026
After figure: total loaded skill bytes fell 30%, but most of that is fewer desktop sessions; per load, the
/source-control:pull-requestcut shows (-29%) and the other skills are flat.Method: the one recorded in the 2026-11-03T06:06Z comment, re-run with one script on both hosts over a 48-hour window from when the last cut (#13133) merged. The script reproduces the before figure exactly (261 loads, 9.17 MB, 96 sessions; desktop 129 in 58, laptop 132 in 38). It does not extract actions or count reference reads, so this comment has no per-action rows.
The drop comes from the desktop running fewer sessions in the after window, not from smaller loads: KB per load rose 1.4%.
Per skill (both hosts):
/source-control:pull-request/session-flow:handoff/session-flow:keep-going/work-items:work/implementation:implement-dispatchReading: the one cut with load evidence works per load. A total-bytes target needs either a session-count-normalised figure (bytes per session: 95.5 KB before, 100.6 KB after) or more cuts; the totals above should not be read as the cuts' effect.
Script and full top-10 tables: kept locally (
.work/12468-after/), not committed, per this repository's rule on one-off tooling.