Tony Lee
Tony Lee
Index
2 min read 2026

Stop Installing Skills Globally. Symlink Them Per Project

A full global skills library loads junk into every session. Keep one warehouse of clones and symlink only what each repo needs.

The context window is the agent’s desk. It is finite. Dump dozens of skills into the global install and the agent loads the wrong ones, burning space on noise.

I fixed that with symlinks.

Install skills per project, not globally

Codex and Claude Code both support global and project skills. Global means every repo inherits everything. After a few sessions full of unused skills, I switched to project-only installs. The desk only holds what the job needs.

Copy-pasting skill folders into every repo creates drift. Five projects means five copies to update.

A symlink is a desktop shortcut: one real file, many pointers. I keep open-source skill repos under something like ~/GitHub/…, then link:

.agents/skills/tightened-slide~/GitHub/future-slide/skills/tightened-slide

Add an entrypoint so agents can find them: .claude/skills.agents/skills. The chain resolves to the warehouse original.

You do not need to memorize ln -s. Tell Codex or Claude Code in natural language to link a skill from the warehouse into the current project.

Maintenance collapses to one place

git pull once in the warehouse updates every project that links it. Bugs fixed on a symlink are fixed on the original, so a PR contributes upstream instead of dying in a copy.

One source, many projects, almost no skill sprawl. If you run skills across repos, switch to symlinks once and stop babysitting copies.

Join the newsletter

Get insights on the latest AI.