# Multiple agents, two Macs, and several skills

> Source: <https://www.swiftjectivec.com/the-skills-conundrum/>
> Published: 2026-08-11 15:56:50+00:00

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 update`

on 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](https://www.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:

**Choose a job below to watch it travel.**

#### MacBook A

**My source files** personal-skills/

**Agent copies** Claude · Codex · more

**npx lock** What is installed here

#### GitHub

**Skills I made** DreamingInBinary/skills

**Third-party manifest** Desired state + baselines

#### MacBook B

**My source files** personal-skills/

**Agent copies** Claude · Codex · more

**npx lock** What is installed here

#### 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 author** Push the real files up; pull them down elsewhere. - 2
**Skills you install** Publish the list; reconcile each Mac against it. - ✓
**Installed folders are copies** GitHub 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 ✌️
