“It turns out plugins is kind of the way that Claude and Codex want you to inherit code from a common repository. The repo is version controlled, so if I update a skill and it breaks your packaging, you just specify the previous version.” — Lou
Session context: 2026-06-11_Mastermind — Lou reported the dead ends he hit trying to share a single canonical skills library across many projects, and the mechanism that finally worked.
Core Idea
The goal: keep every skill in one canonical place, and let each project pull in only the few it needs — without duplicating skills into every project, and without loading all 50–60 skills’ front matter into context on every query. Lou tried two approaches that failed:
- A manifest (a JSON file listing needed skills, with
CLAUDE.mdinstructed to read it and load their front matter) — works, but doesn’t integrate with Claude’s native/slashinvocation. You have to name and invoke the skill as a file, which is less than ideal. - Symlinks — fail because Claude doesn’t reliably follow a symbolic link to its destination the way macOS does. Not 100% of the time, so not usable.
What worked: plugins from a marketplace. This is the path Claude (and Codex) actually intend for inheriting capabilities from a common repository. You set up a Git repo, define a marketplace manifest, and publish plugins — either one plugin per skill, or a bundle (e.g. a “writing team” plugin holding 5–6 related skills). A project then declares “install these plugins,” and only those capabilities show up — Lou’s read is that a plugin loads only the front matter of its skills, so a tightly-scoped plugin stays cheap on context.
Two structural wins fall out of this:
- Version control. The repo is versioned, so if an upstream skill update breaks your packaging, you pin the previous version and keep working. Capabilities get a dependency-management discipline that manifests and symlinks never had.
- Distribution. A marketplace repo isn’t just for organizing your own skills — it’s the clean way to share skills with clients. You hand them a link; they install the plugin.
There’s a tradeoff Lou flagged honestly: because the manifest/file approach doesn’t surface under /, you have to consciously invoke it — which is arguably better, since it means a project’s skills don’t silently interfere with everything else. The open question he’s still chasing is making plugin skills appear in the / menu like native ones.
Practical Application
If you’re maintaining skills across multiple projects, stop copying them around and stop reaching for symlinks. Instead:
- Put all shared skills in one version-controlled Git repo.
- Add a marketplace manifest and define plugins — one per skill, or bundle closely-related skills (a writing team, an onboarding pipeline) into a single named plugin.
- In each project, install only the plugins that project needs.
- When you ship to a client, give them the marketplace link instead of a folder of files — and tell them which plugin to install.
Bonus gotcha from the same session: the skill-creator tool tends to fill the 1024-character description limit, and 20 skills at ~1,000 chars each is ~20K of wasted context. When generating a skill, instruct it to keep the front-matter description tight — a couple of trigger keywords and a one-to-two-line description.
Related Insights
- Insight - The Harness Architecture — Declare Only What You Need, Import the Rest — the harness/manifest vision; plugins are the mechanism that finally delivers it inside the Claude/Codex harness.
- Insight - Your Expertise Becomes an Interface — How Clients’ AI Accesses Your Intelligence Layer — a canonical, neutral repo that the harness resolves against keeps you portable across vendors.
- Insight - Separate the Conversation From the Document Library — same separation principle: the library is canonical and external; the project just points at the pieces it needs.
- Insight - Capability-Architect — Compile a Workflow Into an Inheritable Skill Bundle — the architect’s final “install” step makes a compiled capability inheritable as a plugin.
Evolution Across Sessions
Directly advances Insight - The Harness Architecture — Declare Only What You Need, Import the Rest (2026-06-04), which proposed a central library + per-project declaration to solve the token tax. This session reports the implementation reality: the homegrown manifest and symlink routes don’t integrate with native invocation, and the supported path is plugins published through a marketplace repo — bringing version-pinning and client distribution as bonuses.