Files
Vasko Atanasov e1dbf2aa7e fix(plugins): vendor real skill copies so the Claude directory publishes them (#38)
The Claude Code plugin directory pins our entry to the `plugins/redis-development`
subdirectory, and its nightly bot advances that pin only when the subtree itself
changes. Every skill lived only in top-level `skills/`, so each nightly run
logged "subtree unchanged; suppressing no-op bump" and nothing since 3d6f255
reached users. The same subdirectory fetch is also why the installed plugin
reports no skills or agents: it materializes only `plugins/redis-development`,
where the eight skill entries were symlinks pointing outside the fetched tree.

Vendor real copies instead of pointing the symlinks the other way. Claude Code
and Cursor both drop symlinks that escape a plugin root on install, per
neondatabase/agent-skills, which hit this and reached the same conclusion; real
files also survive a Windows checkout, where git writes symlinks as plain text
unless core.symlinks is on. `skills/` stays the source of truth and keeps the
paths the agentskills CLI and the Cursor marketplace read.

Vendor only what an agent loads at runtime. `evals/` and `.cursor-plugin/` stay
out, so eval suites and baselines are not duplicated and an eval-only change
leaves the published plugin untouched.

Keep the copies honest without hand work: the pre-commit hook regenerates and
stages them, and `validate:plugin-skills` runs inside `validate:plugins` in both
the hook and CI. It fails on drift, on a file left behind by a deleted skill, on
a symlink reappearing on either side, and on a `SKILL.md` that is not a regular
file. The hook refuses when `skills/` has unstaged changes, so the committed
source and its published copies always agree.
2026-08-11 15:37:46 +03:00
..