[STG-2253] ci: validate skills against agent-skills standards#134
Merged
Conversation
Adds scripts/validate-skills.mjs (zero-dependency Node 20+ validator), a GitHub Actions workflow that runs it on PRs and pushes to main, and CONTRIBUTING.md documenting the skill standards it enforces. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
jay-sahnan
approved these changes
Jun 15, 2026
setup-node@v5 defaults package-manager-cache to true, reads the packageManager (pnpm) field from package.json, and tries to prime a pnpm cache. pnpm isn't installed in the job, so it fails with "Unable to locate executable file: pnpm" before the validator runs. validate-skills.mjs uses only Node built-ins (no deps to install), so disable the auto-cache rather than adding a pnpm setup step. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds CI enforcement of the agent-skills standards plus a contributor guide.
Linear: STG-2253
What's in this PR
scripts/validate-skills.mjs— zero-dependency Node 20+ validator (own minimal strict frontmatter parser,node:builtins only). Supports--skill <name>for single-skill runs..github/workflows/validate-skills.yml— runs the validator on every PR and on pushes tomain.CONTRIBUTING.md— skill anatomy, required frontmatter, license rule, README-table rule, scripts convention, evals, and what reviewers check that CI can't.What the validator checks
SKILL.mdmissing, or frontmatter block missing/unparseablenamemissing or not equal to the directory namedescriptionmissing/empty or >1024 charslicensemissing or notMITLICENSE.txtmissing, not MIT, or copyright line not containingBrowserbase, Inc.skills/<name>/SKILL.mdsetup.json,node_modules/,.env*compatibilitymissingallowed-toolsmissingSKILL.md>500 lines with noREFERENCE.md/references/splitErrors exit 1 (fail CI); warnings are printed and exit 0.
E2E Test Matrix
node scripts/validate-skills.mjs(against currentmaintree)browser-to-api/company-research/event-prospectingmissing LICENSE.txt; README stale rowssite-debugger+bb-usage; README missing rows foragent-experience,autobrowse,browser-to-api,company-research,event-prospecting;autobrowselicenseSee LICENSE.txt;cookie-syncmissinglicense; plus trackedskills/autobrowse/.env.example(matches the.env*ban). Summary:14 skill(s) checked: 8 passed, 6 failed, 13 error(s), 8 warning(s). Full excerpt below.|block scalars, nestedmetadatamaps and lists).node scripts/validate-skills.mjs --skill browser[OK ] browser/1 skill(s) checked: 1 passed... 0 error(s)/ exit 0node scripts/validate-skills.mjs --skill cookie-synclicenseerror +compatibility/allowed-toolswarningsnode scripts/validate-skills.mjs --skill nope/--boguserror: skill "nope" not found in skills/(exit 1); usage message (exit 1)validate-skills.ymlon this PR (run 27369208287)pull_request, rannode scripts/validate-skills.mjson ubuntu-latest, produced output identical to the local run, exited 1 (red as predicted).origin/update-skills-to-agent-standards(#135) viagit archiveexport[OK]—14 skill(s) checked: 14 passed, 0 failed, 0 error(s), 0 warning(s), exit 0Full validator output against main (proof of detection)
No changeset — CI/docs/tooling only, no published package behavior changes.
🤖 Generated with Claude Code
Note
Low Risk
Docs and CI-only tooling with no runtime or published-package behavior changes; CI may stay red until a separate standards-fix PR lands on main.
Overview
Adds CI enforcement and a contributor guide for agent-skills layout and metadata.
A new zero-dependency
scripts/validate-skills.mjs(Node 20+, built-innode:modules only) walks everyskills/<name>/directory and enforces machine-checkable rules: requiredSKILL.mdwith a parseable frontmatter block (namematches the folder, non-emptydescription≤1024 chars,license: MIT),LICENSE.txtwith MIT + Browserbase copyright, no banned paths (setup.json,node_modules,.env*), and README table links that match real skill dirs (including stale-link detection). Missingcompatibility/allowed-tools, or an oversizedSKILL.mdwithoutREFERENCE.md/references/, are warnings only; everything else fails with exit 1. Supports--skill <name>for local single-skill runs..github/workflows/validate-skills.ymlruns that script on every PR and on pushes tomain(Node 20,package-manager-cache: falseso setup-node does not require pnpm).CONTRIBUTING.mddocuments anatomy, frontmatter, license/README/script/eval expectations, reviewer-only checks, and the same local validate commands CI uses.Reviewed by Cursor Bugbot for commit fb4df7d. Bugbot is set up for automated code reviews on this repo. Configure here.