Skills are a paramount puzzle piece to my agent usage. The rub? They are too easily fragmented:
- You could be using different agents. Claude, annoyingly, looks at its own spot for skills. Everything else uses an open standard,
~/.agents/skills. - Then, there’s different machines you could be running. Symlinking is great, but run
npx skills updateon your MacBook at home and then your MacBook on the go is now stale. - Each harness seems to want to funnel you into different paths for installing skills.
Is there an open standard to solve? Surely, if there is, it would have to be cloud based. For example, at Superwall, we simply have GitHub repo for proprietary, shared skills. So, I’ve adopted that same pattern for two things:
- The skills I’ve personally made, and just as important…
- Skills I’ve installed via Vercel’s skills.sh.
The whole process hinges on three skills: push-my-skills, pull-my-skills, and sync-npx-skills. So, uhhh, naturally - I made a Windows XP recreation to show you how the process works. You got two computers, each needing to be current on 3rd party skills from skills.sh, and my own personal ones. Click on any of the skill buttons below to see how they operate:
MacBook A
GitHub
MacBook B
Two kinds of skills. One cloud handoff.
Your skills no longer depend on whichever Mac or agent you happened to use last.
- 1
Skills you authorPush the real files up; pull them down elsewhere.
- 2
Skills you installPublish the list; reconcile each Mac against it.
- ✓
Installed folders are copiesGitHub is the durable source of truth.
Ready. Pick a job to run.
Here’s the technical breakdown.
For the skills that I’ve made…
…one GitHub repo is the source of truth; so everything inside ~/.agents/skills is merely an installed copy. On one Mac, push-my-skills refreshes those copies, commits my changes and pushes them to GitHub in one shot. On another, pull-my-skills pulls that repo and reinstalls the same skills for every agent. Now, my personal skills are source controlled and current across machines.
But, that’s just half of it. Third-party skills actually use a shared manifest instead…
…so sync-npx-skills compares that manifest against the Mac’s last sync and its current npx lock file, determining whether a difference was made here, or on another machine. Local additions and removals are published; which means remote changes are applied so each Mac eventually converges on the same set of skills without manually copying folders around.
At this point, I have to ask: Did I solve the problem? Absolutely. Did I engineer myself into a small pyrrhic victory along the way? Also absolutely maybe yes! My hope is that an open standard arrives tomorrow, and makes all of this gloriously obsolete. Until then, at least both Macs agree on what skills they have.
Until next time ✌️