`skills/` is a junction to a local collection larger than the public set, so a
private skill is on disk while writing and gone for anyone who clones. That
makes the mistake invisible to review: the file reads correctly here. It had
already happened twice.
`agents/e2e-tester.md` sent design critique to `/go-ui` four times — in the
frontmatter `description`, in the core principles, in the reporting section and
in the out-of-scope list. `go-ui` is gitignored as personal tooling, so every
one of those was a dead pointer for a cloner, and the first is the routing key
the user reads before invoking the agent. The scope boundary was the actual
content, so it stays and the pointer goes: design critique is now stated as a
separate pass this agent reports to rather than a skill it names.
`scripts/check-private-skill-refs.sh` reads the private set from .gitignore —
un-ignoring a skill is all it takes to make references to it legal again — and
flags three forms: `name`, /name, and a bare YAML list item, which is how agent
frontmatter declares a skill and carries no punctuation to grep for. Prose
naming a skill as the contents of *another* repo is deliberately not matched;
README's "See Also" line does exactly that and is correct.
Two things learned while building it, both encoded in the script:
- A per-file grep loop is one fork per tracked file, and under Git Bash on
Windows that hits the MSYS fork limit — the hook printed "Resource
temporarily unavailable" instead of a verdict. It is one grep over the whole
file list now.
- Scanning only `skills/*.md` is too narrow. That is how e2e-tester went
unnoticed: the agent files ship too.
Verified by committing a deliberate `/go-ui` reference and confirming the hook
refused it, then reverting.
Enable per clone with `git config core.hooksPath .githooks`; README says so.
nextjs-reviewer duplicated the next-best-practices, react-best-practices
and cache-components skills, which trigger on their own. Its remaining
unique content (page.tsx composition, /ai and /data folders, route
groups, CSS-variable styling) is already covered verbatim by
nextjs-shadcn and its references, so nothing needed migrating.
e2e-tester overlapped go-ui on UI/UX critique and responsiveness. Those
two sections are replaced by a pointer to go-ui, leaving the agent a
single job: exercise flows, catch regressions, fix verified defects.
Also back-ports the chrome-devtools tool-selection line that had only
landed in the mirrors.
- New skills/chrome-devtools/ skill (adapted from addyosmani/agent-skills,
attributed in README Based On)
- skills/go: mention chrome-devtools MCP as a tool option
- agents/e2e-tester: add live browser introspection tier to Tool Selection
- README: list chrome-devtools under UI & Design and in MCP Servers section
- Add next-best-practices skill (from vercel-labs/next-skills) with source attribution
- Add web-design-guidelines skill (from vercel-labs/agent-skills)
- Add e2e-tester agent with web-design-guidelines skill reference
- Update README with new skills, agent, and Based On table entries