Skip to content

Any-Soft/AnySkill

Repository files navigation

AnySkill

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.

Mental Model

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.

First-Time Setup

Install AnySkill from the AnySkill tool repo:

git clone https://github.com/Any-Soft/AnySkill.git ~/AnySkill
cd ~/AnySkill
./install.sh

The 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 ~/.zshrc

Clone the separate shared skills repo:

git clone <company-skills-repo> ~/company-skills

Point AnySkill at the cloned company skills repo so it knows where shared skills live:

anyskill config set repo ~/company-skills

Verify setup:

anyskill doctor

Daily Use

List available skills:

anyskill list

Filter by tag:

anyskill list --tag ios

Install one skill into Cursor:

anyskill install code-review --runtime cursor

Install one skill into all runtimes declared by that skill:

anyskill install code-review

For 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,cursor

Check installed skill state:

anyskill status

Update installed skills:

anyskill sync

sync updates only skills you already installed. It does not install every skill in the repo.

Versions And Optional Skills

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.0

Pinned skills are not upgraded by anyskill sync.

Local Edits

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 cursor

If you want to discard local changes, uninstall and reinstall the skill:

anyskill uninstall code-review --runtime cursor
anyskill install code-review --runtime cursor

Sharing Improvements

To share a local edit with the company, publish it back to the central skills repo:

anyskill publish code-review --from cursor --bump patch

publish will:

  1. verify the configured skills repo is clean
  2. create a branch in the skills repo
  3. copy your local runtime skill back into skills/<skill-id>
  4. bump the skill version
  5. commit the change
  6. 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 minor

Adding A New Skill

Add 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 list

Command Reference

anyskill 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 doctor

For install, omitting --runtime installs to every runtime listed in the skill's anyskill.toml.

Local Development

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 list

Use 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 f

Troubleshooting

If 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-skills

If sync skips a skill:

anyskill status
anyskill diff <skill> --runtime cursor

Sync skips locally modified skills to avoid overwriting your work.

About

Skill Manager

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors