Skip to content

refactor: replace epicenter symlinks with npx skills managed copies#109

Merged
braden-w merged 2 commits intomainfrom
braden-w/npx-skills-migration
Mar 11, 2026
Merged

refactor: replace epicenter symlinks with npx skills managed copies#109
braden-w merged 2 commits intomainfrom
braden-w/npx-skills-migration

Conversation

@braden-w
Copy link
Collaborator

Wellcrafted's AI agent skills were previously wired to the Epicenter repo through a two-level symlink chain that required a specific sibling directory layout on every developer's machine. This made the repo impossible to use standalone — cloning wellcrafted without epicenter sitting next to it broke all 42 skill references.

This replaces that fragile setup with npx skills add EpicenterHQ/epicenter --copy, which installs skill files directly into .claude/skills/ as real, committed copies. No symlinks, no sibling directories, no setup ceremony.

Before:
.claude/skills → .agents/skills → ../../epicenter/.agents/skills
                                   (requires epicenter cloned alongside)
                                   (loads ALL 42 skills, 22 irrelevant)

After:
.claude/skills/<name>/SKILL.md    ← real files, committed
skills-lock.json                  ← tracks source + hashes for updates

What changed

  • Deleted the two symlinks (.agents/skills, .claude/skills) that pointed to epicenter
  • Installed 20 domain-relevant skills via npx skills add with --copy flag
  • Dropped 22 skills irrelevant to a TypeScript utility library (better-auth, svelte, tauri, drizzle-orm, yjs, styling, etc.)
  • Added skills-lock.json — the skills CLI's lockfile that tracks source repo, skill names, and content hashes for npx skills update
  • Added .agents/ to .gitignore to prevent non-copy mode installs from polluting the repo
  • Updated README.md with the new npx skills setup instructions
  • Updated AGENTS.md to remove the symlink mention

Why npx skills instead of manual copies

The Vercel skills CLI (npx skills) is the emerging standard for managing agent skills across Claude Code, Cursor, Codex, and 37+ other agents. Using it gives us:

  1. npx skills update — one command to pull latest skill content from epicenter without re-specifying which skills to install
  2. skills-lock.json — content hashes that make it trivial to check if skills are stale
  3. npx skills list — visibility into what's installed
  4. Standard format — skills use the universal SKILL.md frontmatter spec, compatible with any agent that supports the Agent Skills specification

Why --copy instead of default symlink mode

The skills CLI defaults to creating a canonical copy in .agents/skills/ and symlinking from .claude/skills/.agents/skills/. This is fine for local development but creates headaches with git — symlinks to directories confuse git add (the "beyond a symbolic link" error), and you end up committing two layers of indirection. --copy puts real files directly where Claude Code expects them. Simple.

Why these 20 skills

Kept only skills whose domain overlaps with wellcrafted (a TypeScript utility library for error handling, Result types, and TanStack Query):

Category Skills
Core domain error-handling, define-errors, services-layer, query-layer
Code style typescript, factory-function-composition, method-shorthand-jsdoc, single-or-array-pattern, control-flow
Process testing, git, incremental-commits, workflow, spec-execution, specification-writing
Documentation documentation, writing-voice, technical-articles, progress-summary
Behavioral honesty

Refreshing skills

# Update all installed skills to latest from epicenter
npx skills update

# Install additional skills
npx skills add EpicenterHQ/epicenter --skill <name> -a claude-code --copy -y

# List what's installed
npx skills list

Skills were previously symlinked to a sibling epicenter repo via a
two-level chain (.claude/skills → .agents/skills → epicenter). This
required epicenter cloned alongside wellcrafted and loaded all 42 skills
regardless of relevance.

Now uses `npx skills add EpicenterHQ/epicenter --copy` to install only
20 domain-relevant skills as real files directly in .claude/skills/.
No sibling directory needed, updatable via `npx skills update`.
Prevents npx skills from polluting the repo if run without --copy flag.
The canonical skill files live in .claude/skills/ as real copies.
@braden-w braden-w merged commit 9159725 into main Mar 11, 2026
2 checks passed
@braden-w braden-w deleted the braden-w/npx-skills-migration branch March 11, 2026 19:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant