AnySkill is a small internal package manager for shared agent skills.
It lets engineers install only the skills they want, keep those skills up to date, and share local improvements back to a separate company skills repo. It supports user-level installs for Codex, Claude, and Cursor.
AnySkill repo -> installs the anyskill CLI
company skills repo -> stores shared skills
anyskill CLI -> copies selected skills into local agent folders
AnySkill and the company skills repo are separate repositories.
The company skills repo is the source of truth for skills. AnySkill copies selected skills from that repo into your local agent runtime folders:
Codex ~/.agents/skills/<skill-id>
Claude ~/.claude/skills/<skill-id>
Cursor ~/.cursor/skills/<skill-id>
AnySkill does not write skill files into product repos like an iOS app repo. You can run anyskill sync from any directory without creating product-repo merge conflicts.
Install AnySkill from the AnySkill tool repo:
git clone https://github.com/Any-Soft/AnySkill.git ~/AnySkill
cd ~/AnySkill
./install.shThe installer builds the anyskill command into your user-level bin directory:
~/.anyskill/bin/anyskill
If needed, it adds this to your shell profile:
export PATH="$HOME/.anyskill/bin:$PATH"Reload your shell:
source ~/.zshrcClone the separate shared skills repo:
git clone <company-skills-repo> ~/company-skillsPoint AnySkill at the cloned company skills repo so it knows where shared skills live:
anyskill config set repo ~/company-skillsVerify setup:
anyskill doctorList available skills:
anyskill listFilter by tag:
anyskill list --tag iosInstall one skill into Cursor:
anyskill install code-review --runtime cursorInstall one skill into all runtimes declared by that skill:
anyskill install code-reviewFor example, if code-review declares runtimes = ["codex", "claude", "cursor"], omitting --runtime installs it into all three runtime folders. Use --runtime when you want to limit the install.
Install one skill into specific multiple runtimes:
anyskill install code-review --runtime codex,claude,cursorCheck installed skill state:
anyskill statusUpdate installed skills:
anyskill syncsync updates only skills you already installed. It does not install every skill in the repo.
Every skill has its own version in anyskill.toml.
Example:
id = "ios-debugging"
name = "iOS Debugging"
version = "1.0.0"
description = "Debug iOS simulator, logs, crashes, and Xcode issues"
tags = ["ios", "xcode"]
owners = ["mobile-platform"]
runtimes = ["codex", "claude", "cursor"]Optional skills are handled through manual selection. For example, an iOS engineer can install ios-debugging while a backend engineer ignores it.
Pin a skill to a specific version:
anyskill pin ios-debugging@1.0.0Pinned skills are not upgraded by anyskill sync.
If you edit an installed skill locally, AnySkill will not overwrite it during sync. It reports the skill as locally modified.
Inspect your local changes:
anyskill diff code-review --runtime cursorIf you want to discard local changes, uninstall and reinstall the skill:
anyskill uninstall code-review --runtime cursor
anyskill install code-review --runtime cursorTo share a local edit with the company, publish it back to the central skills repo:
anyskill publish code-review --from cursor --bump patchpublish will:
- verify the configured skills repo is clean
- create a branch in the skills repo
- copy your local runtime skill back into
skills/<skill-id> - bump the skill version
- commit the change
- open a pull request when GitHub CLI is installed
Use --bump minor or --bump major when the skill change is larger:
anyskill publish code-review --from cursor --bump minorAdd new skills in the separate company skills repo, not in the AnySkill tool repo.
In the company skills repo, create a folder under skills/:
skills/my-skill/
SKILL.md
anyskill.toml
Minimal anyskill.toml:
id = "my-skill"
name = "My Skill"
version = "1.0.0"
description = "A short description of what this skill helps with."
tags = ["core"]
owners = ["engineering"]
runtimes = ["codex", "claude", "cursor"]Then verify the repo:
anyskill config set repo ~/company-skills
anyskill listanyskill config set repo <path>
anyskill config get repo
anyskill list [--tag ios]
anyskill install <skill>[@version] [--runtime codex,claude,cursor]
anyskill uninstall <skill> [--runtime codex,claude,cursor]
anyskill sync
anyskill status
anyskill pin <skill>@<version>
anyskill diff <skill> [--runtime cursor]
anyskill publish <skill> --from <runtime> [--bump patch|minor|major] [--force]
anyskill doctorFor install, omitting --runtime installs to every runtime listed in the skill's anyskill.toml.
Run tests:
go test -count=1 ./...Run static checks:
go vet ./...Run without installing:
go run ./cmd/anyskill --version
tmp_home=$(mktemp -d)
HOME="$tmp_home" go run ./cmd/anyskill config set repo "$PWD/examples/company-skills"
HOME="$tmp_home" go run ./cmd/anyskill listUse a temporary home directory when testing installs so your real agent folders are not touched:
tmp_home=$(mktemp -d)
HOME="$tmp_home" go run ./cmd/anyskill config set repo "$PWD/examples/company-skills"
HOME="$tmp_home" go run ./cmd/anyskill install code-review --runtime cursor
find "$tmp_home/.cursor/skills" -maxdepth 3 -type fIf anyskill is not found:
export PATH="$HOME/.anyskill/bin:$PATH"If AnySkill does not know where the company repo is:
anyskill config set repo ~/company-skillsIf sync skips a skill:
anyskill status
anyskill diff <skill> --runtime cursorSync skips locally modified skills to avoid overwriting your work.