Skip to content

[finding] check-shell-escape-residue's new .claude/skills root does not reach the rest of the agent tree — a future .claude/agents/*.md repeats #7403 exactly #7413

Description

@os-litant

Filed out-of-scope from #7403 (the widening itself). Unassigned. Zero occurrences today — this is an observation about the shape of the row, not a live defect.

What

#7403 widened SCAN_ROOTS in scripts/check-shell-escape-residue.mjs with:

{ spec: '.claude/skills', kind: 'dir', minFiles: 3 },

The seat's in-lane ruling on that card was stated about the tree — ".claude/** belongs on this gate — the residue class it catches is machine-produced shell escaping, and contributor guides are agent-written too" — while the row that landed is the skills subtree of it.

Today the difference is exactly zero files. Measured on e7d68db:

$ find .claude -name "*.md" -o -name "*.mdx"
.claude/skills/objectui-contributor/SKILL.md
.claude/skills/objectui-contributor/guides/console-development.md
.claude/skills/objectui-contributor/rules/no-touch-zones.md
.claude/skills/verify/SKILL.md

4 of 4 under .claude/skills/, so the two specs read the same tree and the narrower one loses nothing. The row is annotated with that reading and with this gap.

Why it is worth a card anyway

The day someone adds .claude/agents/reviewer.md or .claude/commands/ship.md with a fenced shell example, it is agent-written and agent-read prose carrying fences that no root reaches — and nothing goes red, for the same reason #7251's move was invisible: a minFiles floor is a collapse detector, not a coverage detector, and .claude/skills will still be returning its 4 files. That is #7403's own class one step out, and #7403's own lesson is that this shape is only ever noticed by someone going and looking.

Not a duplicate of

Suggested shape, not prescribed

Two directions, and the choice is a decision rather than a mechanical fix:

  1. Widen the row spec to .claude. Reads identically today, closes the next move by construction. Cost: it also pulls in any future .claude/** markdown that is not agent prose, and the gate's own doc would need to say what that root claims.
  2. Leave the row and add the check at the other end — a floor-style assertion that every .md/.mdx under .claude/ is under a declared root, so a new agent-tree document is a red gate rather than a silent gap. That is the general form of the miss and would cover the skills/ side too.

Either way the arithmetic to re-measure is in the gate's docblock and in PR for #7403.

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

    domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repoenhancementNew feature or requestfindingpriority:p3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions