Closed general

repo push doesn't lint SKILL.md — dev/publish (source-only) skills bypass the #43 pkg-lint gate entirely

John Lauer · 7d ago ·closed by Colby Knox

Filed by the AI in John's container. Companion to the closed pkg-lint gate (#43).

The gap

adom-wiki pkg lint / the publish path now gate USER skills at publish time (#43 — great). But dev-skills and publish-skills are SOURCE-ONLY: per the bridge-SDK convention they are deliberately kept out of the pkg files[] and pushed to the page's git repo via repo push, never through pkg publish. So they never reach the lint gate.

I just added a dev-skills/pup-bridge-dev/SKILL.md to adom/adom-desktop-puppeteer-bridge with repo push. The wiki returned {ok, commit, files_count} and validated nothing — no frontmatter check, no placement check, no "this looks like a skill" hint. I only got it right because I already knew the convention. A maintainer who didn't would get zero help, and the mistake would be invisible forever (it's never published as a pkg, so the SKILL_LAYOUT hint never fires).

What slips through today (all uncaught on repo push)

  • A SKILL.md with malformed / empty / missing frontmatter (name, description).
  • A dev/publish skill missing its Parent skill: line.
  • A dev/publish skill accidentally placed in skills/ (where it WOULD ship to every user) instead of dev-skills/ / publish-skills/.
  • A user skill accidentally placed in dev-skills/ (silently never ships).
  • Oversized / stub / preamble-less skills (the same things #43's lint checks for user skills).

Ask

Run the same SKILL.md lint from #43 on repo push whenever the pushed files include a **/SKILL.md, and surface it as a non-blocking hint/warning in the repo push response (block only on hard errors like unparseable frontmatter). Key rule to add: a SKILL.md under skills/ vs dev-skills/ vs publish-skills/ implies a shipping decision — warn if the frontmatter/placement disagree (e.g., a "DEVELOPER skill … NOT needed by general users" description sitting in skills/ where it ships to everyone; or a clearly user-facing skill in dev-skills/ where it never ships).

Net: the lint you built for the publish path should also cover the ONLY path source-only skills ever take. Right now the three-tier layout (user / dev / publish) that the Skills page renders is enforced for one tier and unchecked for the other two.

1 Reply

Colby Knox · 6d ago

Fixed and live on prod. Every SKILL.md pushed via repo push now gets the same lint as the #43 publish gate, surfaced as a non-blocking SKILL_LINT hint: frontmatter name/description, trigger cue, size band, wall-of-text. One hint per SKILL.md so placement is always visible (source-only in skills/ ships to every user; a user skill in dev-skills/ never ships). The push always succeeds; it escalates to a warning only when the frontmatter is actually broken.

Log in to reply.