{"_id":"@amirhosseinnouri/claude-skills-sync","name":"@amirhosseinnouri/claude-skills-sync","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@amirhosseinnouri/claude-skills-sync","version":"0.1.0","description":"Sync skills installed in ~/.claude into your other Claude Code config directories.","type":"module","license":"MIT","author":{"name":"Amirhossein Nouri","email":"amir.h.nouri2000@gmail.com"},"homepage":"https://github.com/amirhosseinNouri/claude-skills-sync#readme","repository":{"type":"git","url":"git+https://github.com/amirhosseinNouri/claude-skills-sync.git"},"bugs":{"url":"https://github.com/amirhosseinNouri/claude-skills-sync/issues"},"keywords":["claude","claude-code","skills","cli","symlink","dotfiles"],"bin":{"claude-skills-sync":"dist/index.js"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"scripts":{"build":"rolldown -c && chmod +x dist/index.js","dev":"bun run src/index.ts","prepublishOnly":"bun run build"},"devDependencies":{"@clack/prompts":"^0.11.0","@types/bun":"latest","picocolors":"^1.1.1","rolldown":"^1.0.0-beta.29","typescript":"^5.7.0"},"gitHead":"846977139e10f236bd19123b113107443ab401e2","_id":"@amirhosseinnouri/claude-skills-sync@0.1.0","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-laWKlLGHieyADTMkL/mLtaCbTjK+NJtKKBlw+iXl0b1Rp2o5Il16yrQW6VLleN8oH91pAvg0LAPVfG9WfER1Jw==","shasum":"f66241bd93239d64b71ed7577595a1b8c24ceee8","tarball":"https://registry.npmjs.org/@amirhosseinnouri/claude-skills-sync/-/claude-skills-sync-0.1.0.tgz","fileCount":4,"unpackedSize":48592,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIC+wR7CsQ5bcjkMdl1GQLF5pYzwuN0B05Ri+rNLTKzY0AiEAmhPcsUFJtBnMVFbjscumU7Y/h3ZcjNu3NuNP4GBNahg="}]},"_npmUser":{"name":"amirhosseinnouri","email":"Amir.h.nouri2000@gmail.com"},"directories":{},"maintainers":[{"name":"amirhosseinnouri","email":"Amir.h.nouri2000@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-skills-sync_0.1.0_1785967168997_0.11360679134895046"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-05T21:59:28.860Z","0.1.0":"2026-08-05T21:59:29.135Z","modified":"2026-08-05T21:59:29.306Z"},"maintainers":[{"name":"amirhosseinnouri","email":"Amir.h.nouri2000@gmail.com"}],"description":"Sync skills installed in ~/.claude into your other Claude Code config directories.","homepage":"https://github.com/amirhosseinNouri/claude-skills-sync#readme","keywords":["claude","claude-code","skills","cli","symlink","dotfiles"],"repository":{"type":"git","url":"git+https://github.com/amirhosseinNouri/claude-skills-sync.git"},"author":{"name":"Amirhossein Nouri","email":"amir.h.nouri2000@gmail.com"},"bugs":{"url":"https://github.com/amirhosseinNouri/claude-skills-sync/issues"},"license":"MIT","readme":"# claude-skills-sync\n\nSync skills from `~/.claude` into your other Claude Code config directories.\n\n## The problem\n\nIf you run more than one Claude Code account — work, personal, a client — you probably keep them apart\nwith `CLAUDE_CONFIG_DIR`:\n\n```sh\nalias claude-personal='CLAUDE_CONFIG_DIR=$HOME/.claude-personal command claude'\nalias claude-work='CLAUDE_CONFIG_DIR=$HOME/.claude-work command claude'\n```\n\nEach config directory is fully independent: its own settings, its own history, and its own `skills/` folder.\n\nSkill installers don't know about that. `bunx skills add …`, plugins, and manual clones all write to\n`~/.claude/skills`. So you install a skill, open `claude-personal`, and the skill isn't there — because\nthat session only reads `~/.claude-personal/skills`.\n\nThe fix is a symlink per config directory. This CLI does that for you.\n\n## Use it\n\nNo install needed — run it right after installing a skill:\n\n```sh\nnpx @amirhosseinnouri/claude-skills-sync\nbunx @amirhosseinnouri/claude-skills-sync\npnpx @amirhosseinnouri/claude-skills-sync\n```\n\nOr install it once and call it as `claude-skills-sync`:\n\n```sh\nnpm install -g @amirhosseinnouri/claude-skills-sync\nbun install -g @amirhosseinnouri/claude-skills-sync\npnpm add -g @amirhosseinnouri/claude-skills-sync\n```\n\n```sh\nclaude-skills-sync\n```\n\n1. Pick the skills to sync — the most recently installed one is preselected.\n2. Pick the config directories — every `~/.claude-*` folder is found automatically and preselected.\n3. Review the plan, confirm, done.\n\nIt creates `~/.claude-<name>/skills/<skill>` pointing at the real skill folder, creating `skills/` if it\ndoesn't exist yet.\n\nRestart any running Claude session afterwards — skills are read at startup.\n\n### Plan symbols\n\n| Symbol | Meaning |\n| --- | --- |\n| `+` | new symlink will be created |\n| `=` | already synced, left alone |\n| `!` | something else is already there — replaced only after you confirm |\n\n### Options\n\n```\nclaude-skills-sync [skill...] [options]\n\n  -a, --all       select every skill in ~/.claude/skills\n  -y, --yes       overwrite conflicting entries without asking\n  -n, --dry-run   show what would change, write nothing\n  -h, --help      show this help\n```\n\nPass skill names to skip the picker:\n\n```sh\nclaude-skills-sync copywriting pdf\n```\n\n## Notes\n\n- Symlinks point at the skill's *resolved* path. Skills added by `skills add` already live in\n  `~/.agents/skills` and are symlinked into `~/.claude`, so the new link points straight at\n  `~/.agents/skills/<name>` instead of chaining through `~/.claude`.\n- Nothing is copied and nothing in `~/.claude` is modified — updating a skill updates it everywhere.\n- Removing a synced skill is just `rm ~/.claude-<name>/skills/<skill>`.\n\n## Develop\n\n```sh\ngit clone https://github.com/amirhosseinNouri/claude-skills-sync.git\ncd claude-skills-sync\nbun install\nbun run dev       # run from source\nbun run build     # bundle with rolldown into dist/\nbun link          # put your local build on PATH\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-c06b11fffefdca80464de2fcedb763e4"}