Skip to content

chore(source-control): babysit-loop/SKILL.md sits 1 line under the 500-line hard cap, blocking any net-positive edit #1620

Description

@kyle-sexton

🤖 Agent-authored (autonomous babysit lane), found while fixing #1612 in #1618.

Problem

plugins/source-control/skills/babysit-loop/SKILL.md is 499 lines against a hard cap of 500. plugins/skill-quality/scripts/check-skill.sh fails at >=:

LINE_HARD_CAP=500
LINE_COUNT="$(grep -c '' "$SKILL_MD")"
if ((LINE_COUNT >= LINE_HARD_CAP)); then
  err "SKILL.md is $LINE_COUNT lines (hard cap $LINE_HARD_CAP)"

So the file has exactly zero headroom. Any change that adds a single net line fails skill-quality-gate in CI.

This is not hypothetical — it bound #1618. The correct per-window fail-open rule is necessarily longer than the incorrect one it replaced (it has to state the whole-guard triggers, the per-window trigger, and the "reactive-only only when no window is plausible" floor). Fitting it required reflowing two other paragraphs in the same section to net zero. That worked because those paragraphs genuinely were ragged — orphaned 9- and 42-character wrap lines sitting beside 98-character neighbours — so the reflow was a real improvement rather than a workaround. That is luck, and it is spent. The next edit to this file has no such slack and no obvious ragged prose left to reclaim.

Why this is worth fixing rather than absorbing

The failure mode is bad: a contributor makes a correct, small change and CI rejects it for a reason unrelated to their change. The available responses are all poor — pad lines to unnatural width to game the metric, delete unrelated content, or abandon the edit.

The cap is a proxy for context cost, and the checker already says the real target is much lower. It emits, on this same file:

WARN: SKILL.md is 499 lines (soft target 200 — consider pushing detail to progressive-disclosure spokes)

The warning names the remedy. At 2.5x the soft target and 1 line under the hard cap, this skill has outgrown a single file.

Suggested direction (not prescriptive)

Move a coherent section into a progressive-disclosure spoke under the skill's own directory, which the skill-authoring guidance already treats as the standard shape for a SKILL.md this size. Candidate: the inlined rate-limit guard floor section (~35 lines) — but note a constraint that makes this less trivial than it looks. The loop-lane convention §6 requires each lane body to inline the operable floor because an installed plugin cannot read a sibling plugin's files at runtime. A spoke inside the same plugin does not violate that (${CLAUDE_PLUGIN_ROOT} reach is fine), but the convention's wording says the lane body inlines it, and the values are required to stay byte-identical across all three lanes. Moving it for one lane and not the others would break that symmetry.

So the options are genuinely:

  1. Move the same section to a spoke in all three lane skills, keeping symmetry, and update loop-lane convention §6's wording to say "the lane's own plugin" rather than "the lane body". Largest change, cleanest end state.
  2. Move some other section of babysit-loop only — it is the outlier at 499 vs 330 and 192, so it likely has lane-specific bulk the others do not. Smallest blast radius.
  3. Raise LINE_HARD_CAP. Cheapest and worst: it treats the symptom and defers the same wall.

I lean 2 for cost and blast radius, with 1 as the better long-term shape if the other two lanes also approach the cap. Whoever takes this should confirm against the current file rather than trusting this triage — I did not survey babysit-loop's sections for the best extraction candidate.

Acceptance criteria

  • babysit-loop/SKILL.md has meaningful headroom under the hard cap (a target, not one line).
  • check-skill.sh still passes for all three lane skills.
  • If the rate-limit floor moves, it moves in all three lanes, stays byte-identical across them, and loop-lane convention §6 is updated to match — verified, not assumed.
  • No content is deleted to make room; this is a relocation, not a trim.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    automatedOpened by automation.priority: mediumReal value, no hard deadline; normal backlog flow.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions