Use case
One private skill bundle per client, the same on every machine
You run coding agents for several clients, on more than one machine. Each client has its own conventions, so you keep per-client skills, and the copies drift apart. Below: what other people report, who this setup is (and is not) for, what we reproduced on two machines on 2026-10-11, and the exact text to hand your agent.
What people are doing — what they report
Their words, quoted from their own posts. These are their reports, not our measurements.
“Across two Claude accounts and a couple of machines it stops being manageable: every install is per profile and per box”
“Or I improve a project skill on my MacBook and later discover that the Linux box still has the old version.”
“you write a skill for one workflow, it works great, and then you need something almost identical for another client. So you copy it.”
Prokopov solved it with a synced folder and a small local tool, with no cloud service. Penkin uses a public registry plus a daily sync script. Both are reasonable answers.
Who this is for, and who it is not for
Comfortable with git?
A private dotfiles repo plus symlinks, or a free open-source tool such as claude-sync, gaal or chezmoi, solves cross-machine sync at no cost. If that already works for you, keep it.
Client material is not confidential?
Use a public bundle. Public bundles are free and unlimited on every tier, and nothing on this page costs you anything.
Client material is secret?
Do not put it on anyone's hosted service, ours included. Self-host LoopSkill instead: it is free and MPL-2.0, so the bundles live on a server you run (self-host guide).
Private but not secret, on 2 or more machines?
This is what hosted private bundles are for: coding conventions, brand voice, runbooks. What you get over a repo: no repo to maintain, one bundle per client kept separate, tarballs downloaded through signed URLs, each checked by its sha256, one install command per machine, and on Pro, separate API keys you can revoke per machine or per client. You do not run a server.
What we reproduced
Our own measurement, 2026-10-11. One Free account, one API key, used on both machines.
- Two machines. A: Debian 13, x86_64, Python 3.12. B: macOS 27, arm64 (Apple silicon), Python 3.9 with the standard library only.
- One bundle, installed on both. A client bundle with 3 skills: 1.28 s on A, 1.33 s on B. The folder fingerprint (sha256 over every file) was
72d57592…on both machines: identical. - Change on one machine, update the other with one command. We added a skill to the bundle from A, then re-ran the install on B: 3 kept, 1 added, 0.97 s, so about a second. Fingerprint
169062a9…on both: identical again. - One API key on both machines at once. The same key ran on A and B at the same time: 6 of 6 concurrent calls OK. You do not need a key per machine.
- Remove leaves nothing. On B we deleted the 4 skill folders and the lockfile; nothing was left in the skills folder.
What did not work as documented, filed as issues: our agent docs do not describe the private-bundle lifecycle yet
(loopskill-api#397); adding a skill to a bundle is a REST call with no MCP tool yet; the Liked bundle takes a
private slot (loopskill-api#398, see below); loopskill_sync
moves the bundle's pinned versions on the server and does not update a machine (loopskill-api#400).
Send this to your agent
Step 1 — you, in a browser
Sign in. Your Library shows the API key we generated when you signed up, once: copy it from there. If you already closed that reveal, create or revoke keys on your Account page. Then give that key to your agent.
Why you and not the agent: an agent can register its own key, but an agent-registered key is denied checkout by design, so that account can never be upgraded.
Step 2 — paste this into your agent
Set up a private LoopSkill bundle for one client and install it on this machine. Use the API key I give you; do not register a new account or key yourself. Talk to the LoopSkill MCP endpoint https://app.loopskill.io/api/mcp/http/ and send the header x-api-key: <MY_KEY> on every call.
1. Once, on the first machine only: call loopskill_compose_bundle_from_links with {"links": ["skill://<slug>", ...], "name": "<client-name>"} and note the bundle id it returns; tell me the id. Never call loopskill_compose_bundle_from_links again on another machine: every call creates a new bundle, and on Free a second one can hit the private-bundle cap. If I give you a bundle id, skip this step.
2. On every machine, including the first: call loopskill_bundle_install with {"bundle_id": "<id>"}. For each skill it returns a tarball URL and a sha256. Download each tarball, check the sha256 of the downloaded bytes and stop on a mismatch, unpack it into ~/.claude/skills/<slug>/ (or this agent's skills folder), and keep a lockfile with slug, version and sha256.
3. To update a machine after the bundle changes, run step 2 again on that machine.
4. To add a skill: POST https://app.loopskill.io/api/bundles/<id>/skills with the x-api-key header and the body {"slug": "<slug>"} (REST; there is no MCP tool for this yet), then run step 2 again on each machine.
Note: loopskill_sync does not update this machine. It only moves the bundle's pinned versions on the server. Re-running step 2 is what updates the machine. At the cap
Free includes 2 private bundles and 1 API key. The Liked bundle is created the first time you open your Library, and it is private, so it uses one of the 2 Free slots: in practice that leaves one client bundle. The next one is refused with this message:
private bundle limit reached for tier 'free' (2/2). Publishing a bundle frees its slot (public bundles are unlimited); or upgrade to compose more. Publishing a client bundle does free its slot, but then that bundle is public. Only do that with material you would show anyone.
Pro $9.95/mo: 50 private bundles, 10 API keys
One key works on every machine; we ran the same key on both machines at the same time. The 10 keys are for revoking one machine or one client separately, not a requirement.
Upgrade to ProOne client bundle is enough (your Liked list takes the other Free slot), and you only put catalog skills in it? Stay on Free.
A few little-used hosted endpoints (skill forks, draft-to-skill, sync streaming and some others) also require Pro; don't buy it for those, they may be retired.