skills/skills-manager/SKILL.md
Manage AI agent skills backup and sync via the skills-manager CLI. Use when the user asks to push skills to GitHub, pull skills from GitHub, link or symlink skills to agents, sync skills across machines, set up project-level skills, or manage the ~/.agents/ directory. Also triggers on "sm push", "sm pull", "sm link", "backup my skills", "restore skills on new machine", "link --project", "project skills setup", "sync agents skills", or any question about the skills-manager or sm CLI.
npx skillsauth add tc9011/skills-manager skills-managerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
CLI companion to vercel-labs/skills — backup, restore, and symlink AI agent skills via GitHub.
Scope boundary: This tool backs up and syncs skills you already have. It does NOT install new skills from the registry — that's
npx skills add. If the user wants to install a new skill, point them tonpx skills add <repo>instead.
| Goal | Command |
|------|---------|
| Backup skills to GitHub | sm push |
| Restore skills on new machine | sm pull --repo owner/name |
| Re-link skills to agents | sm link |
| Link skills to a project | sm link --project |
# If globally installed
sm push # short alias
skills-manager push # full name
# Without installing — use the bundled wrapper script
export SM="$HOME/.agents/skills/skills-manager/scripts/sm.sh"
"$SM" push
Requires Node.js >= 20. GitHub CLI (gh) recommended for auth.
If neither sm nor skills-manager is found, install first:
npm install -g @tc9011/skills-manager
| Path | Purpose |
|------|---------|
| ~/.agents/ | Git repo root (push/pull target) |
| ~/.agents/skills/ | Canonical skills directory |
| ~/.agents/.skill-lock.json | Lock file (READ ONLY — owned by vercel-labs/skills) |
Auth is optional. If git already has credentials configured (SSH keys, macOS Keychain, credential manager, etc.), push/pull work without any extra setup.
When git cannot authenticate on its own, the CLI looks for a token in this order:
gh auth token — GitHub CLI (recommended)$GITHUB_TOKEN — environment variable$GH_TOKEN — environment variableIf none are found, git attempts the operation without a token — this works for public repos but fails for private ones.
The link command never requires authentication.
If push/pull fails with a permission or authentication error:
gh is installed: run gh --versiongh exists: run gh auth login to authenticate, then retrygh missing: set a token: export GITHUB_TOKEN=ghp_your_token_here, then retry~/.ssh/ has a valid key added to GitHub and origin uses the [email protected]: URL formatTokens are used transiently in-memory — they are never persisted to .git/config.
Commit and push ~/.agents/ to GitHub.
sm push # auto-generated commit message
sm push -m "add new skill" # custom message
First-time behavior:
~/.agents/ is not a git repo, auto-runs git initorigin remote exists, prompts for owner/namegh CLI is installed, offers to create the repo on GitHub automaticallygh is not installed, shows a note telling the user to create the repo manually at https://github.com/newPossible outcomes:
Skills pushed successfully! — new commit created and pushedUnpushed commits pushed successfully! — working tree clean, but local was aheadNo changes to push — already up to date. — nothing newPush rejected — see Troubleshooting belowPull from GitHub. Auto-runs link afterward unless --skip-link is passed.
sm pull --repo owner/name # first time — specify repo
sm pull # subsequent runs — uses existing remote
sm pull --skip-link # pull only, don't re-link
First-time behavior:
--repo and no existing origin remote, prompts for owner/name~/.agents/ doesn't exist yet, clones into itPossible outcomes:
Skills cloned successfully! — fresh clone on new machine, auto-runs linkSkills updated from remote. — pulled new changes, auto-runs linkAlready up to date. — no new changes, skips linkRebase conflict — see Troubleshooting belowRead .skill-lock.json, create relative symlinks from each agent's global skills directory to ~/.agents/skills/.
sm link # interactive prompt
sm link --agents cursor opencode # non-interactive, skip prompt
Interactive behavior:
The agent selector has two sections:
~/.agents/skills/ as their path.Pre-selection priority: saved config > .skill-lock.json > agents already existing on disk.
When --agents is provided, the interactive prompt is skipped entirely. Use this for scripting and AI agent automation:
sm link --agents cursor opencode claude-code
Link or copy skills to the current working directory.
sm link --project # interactive
sm link --project --agents cursor claude-code --skills my-skill # non-interactive (copy is default)
sm link --project --agents cursor claude-code --skills my-skill --mode symlink # explicit symlink
Interactive flow (3 steps):
--skills to skip) — choose which skills to include--mode defaults to copy in the CLI. Only appears if linkCommand is called programmatically without defaults--agents to skip) — same searchable multiselect with locked universal sectionCopy vs symlink:
copy (default, recommended) — creates independent files in project. Overwrites existing skill dirssymlink — creates absolute symlinks pointing to ~/.agents/skills/. Existing non-symlink dirs are skippedAgents that share the same projectPath (e.g., trae and trae-cn both use .trae/skills) are deduplicated — one operation per unique path.
For AI agents: the fully non-interactive version is almost always what you want:
sm link --project --agents cursor opencode claude-code --skills my-skill --mode copy
npm install -g @tc9011/skills-manager
sm pull --repo owner/my-skills # clone + auto-link
sm pull # fetch latest + re-link
sm push # backup local changes
cd /path/to/project
sm link --project --skills my-skill --agents cursor opencode claude-code
npx skills add some-repo # install via vercel-labs/skills
sm link # re-link to all agents
sm push # backup the new skill
Error: Push rejected — remote contains commits that you do not have locally.
Fix:
sm pull # pulls and rebases
sm push # retry
Or manually:
cd ~/.agents
git pull --rebase origin main
sm push
Error: Rebase conflict detected. Your local skills have diverged from the remote.
The CLI auto-aborts the failed rebase. To resolve:
cd ~/.agents
git fetch origin
git rebase origin/main # resolve conflicts manually
# OR if you want to discard local changes:
git reset --hard origin/main
Error: No skills found in ~/.agents/skills.
This means ~/.agents/skills/ is empty or doesn't exist. Either:
sm pull --repo owner/name to restore from backupnpx skills add <repo>Error: Unknown agent ID(s): foo. Run with no --agents to see available IDs.
The --agents flag only accepts valid agent IDs from the 46-agent registry. Run sm link without --agents to see the interactive list.
Symptom: Git errors like Authentication failed, Permission denied, or Repository not found.
This means git has no credentials and no token was found. See the "Fixing Auth Failures" section above.
On first push or pull, the CLI auto-initializes git. If this somehow fails:
cd ~/.agents
git init
git remote add origin https://github.com/owner/my-skills.git
sm push
.skill-lock.json is READ ONLY — never create, modify, or delete it~/.agents/ is the git repo root (not ~/.agents/skills/).git/confignpx skills add for thattools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.