Skip to content

playbooks: repo-sweep skill-version.sh stamps every unprefixed skill @builtin, with no version and no existence check #4601

Description

@kyle-sexton

Problem

skills/repo-sweep/scripts/skill-version.sh lines 23-25 print <name>@builtin for any argument without a plugin: prefix. It records no version and never checks that the skill exists:

  • skill-version.sh no-such-skill-xyz prints no-such-skill-xyz@builtin. SKILL.md line 39 says a skill that is not installed gets @unknown.
  • An unprefixed name also resolves to a project or personal skill, and a same-named skill replaces the bundled one (skills docs: "Your skill replaces the bundled command, but not its aliases."). A repo with its own claude-api skill is still recorded as claude-api@builtin.
  • history.sh line 76 treats @builtin as not comparable, so a bundled-skill entry is rerun-optional forever, and the Playbook-Step trailer carries no version to compare later.

Root cause in the docs: SKILL.md line 52 says a catalog - skill: line takes plugin:skill names, but catalogs/hygiene.md line 135 uses bare claude-api and catalog.sh does not check the format. SKILL.md line 38's "missing skill" wording for exit 1 means an entry with no skill line, not a skill that is not installed.

Evidence

melodic-software/.github#153, step prompt-audit: checklist line and trailer recorded claude-api@builtin. The bundled skill was loaded from /tmp/claude-1000/bundled-skills/2.1.283/...; claude --version printed 2.1.283 (Claude Code).

Fix

Cheapest first:

  1. Correct SKILL.md lines 38, 39 and 52 and the script header: bare names are allowed for bundled skills, and say what exit 1 means.
  2. Before stamping @builtin, probe .claude/skills/<name>/ in the repo and ~/.claude/skills/<name>/; a hit is a project or personal skill, not a bundled one.
  3. Stamp bundled skills with the Claude Code version, for example claude-api@builtin-2.1.283, and compare it in history.sh line 76. Existing @builtin records then compare unequal, so each bundled-skill entry reports rerun once after the change. Update the tests that assert the current form: skill-version.test.sh lines 51 and 55, history.test.sh lines 37, 41, 68 and 84, render.test.sh line 35.

Unverified: that a bundled skill's version always equals the Claude Code version. It is inferred from the bundled-skills path; no docs page states it.

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

    priority: mediumReal value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions