⚠️ The registry of installable skills is hardcoded into the binary. Adding a new skill today requires editingsrc/lib/registry/hardcoded.goand shipping a new release of sqill itself. There is no external registry, no pluggable source, and no way for end users to add skills to the catalog without recompiling.
A CLI for installing and managing agent skills — reusable bundles of prompts, templates, and tools that extend AI agents.
curl -fsSL https://raw.githubusercontent.com/Q42/sqill/main/install.sh | shTo pin a version: append --version v0.1.0. Falls back to ~/.local/bin if it can't write to /usr/local/bin.
sqill init # one-time: create .agents/skills/ + symlink prompts
sqill install q-release # install one skill from the built-in registry
sqill install # install every skill listed in .agents/skills/sqill.json
sqill list # show installed skills (name, version, install date)
sqill info q-release # manifest, source, install metadata
sqill update q-release # fetch latest and replace atomically
sqill remove q-release # uninstall a skill
sqill track q-release # include a skill's directory in git
sqill untrack q-release # gitignore a skill's directory (default)
sqill upgrade # self-update the sqill binary to the latest release
sqill --version # print the sqill binary version| Flag | Commands | Effect |
|---|---|---|
--skills-dir <path> |
All | Override the skills directory (default .agents/skills) |
--yes / -y |
init |
Skip interactive prompts, no symlinks created |
--link-claude |
init |
Symlink .claude/skills into .agents/skills |
--link-cursor |
init |
Symlink .cursor/skills into .agents/skills |
--link-kilo |
init |
Symlink .kilo/skills into .agents/skills |
--force |
install, upgrade |
Overwrite existing install or reinstall same version |
By default, every installed skill directory is listed in .agents/skills/.gitignore, so skills are not committed. To include a specific skill's directory in your repo, run sqill track <name>. To go back to the default, run sqill untrack <name>. Each installed entry in .agents/skills/sqill.json has a tracked boolean — true means the skill is committed, false (or absent) means it's gitignored. The .gitignore is regenerated by init, install, remove, track, and untrack.
init also offers to symlink .claude/skills, .cursor/skills, and .kilo/skills into .agents/skills/ so your skills are visible to every agent.
Sqill is a thin wrapper around standard tools — it does no networking or authentication of its own.
- Git sources are cloned by shelling out to your system
git. SSH keys, HTTPS credentials, host-key checks, proxies, and 2FA are all handled by git itself, using whatever is already configured on your machine (~/.ssh/config,~/.gitconfig, credential helpers,gh auth login, etc.). - Local sources are copied straight from the filesystem.
- Archive sources are downloaded over HTTPS with Go's standard library.
Because access control is delegated to git, nothing extra is required to install skills from private repos: if git clone <url> works in your shell, sqill install <name> will work, and any auth prompt (SSH passphrase, GitHub device login, credential helper, …) is the same one git would have shown you directly.
A skill is just a directory containing a sqill.json manifest. The minimum:
{
"name": "my-skill",
"version": "0.1.0",
"description": "What it does, in one line."
}Add any files you want next to it — SKILL.md is conventional for the prompt/instructions your agent should read. The directory name must match the name.
Host it anywhere sqill knows how to fetch from:
| Source | Notes |
|---|---|
https://.../repo.git |
Cloned via system git |
git@github.com:.../repo.git |
Same, over SSH |
file:///path/to/skill |
Copied locally |
https://.../skill.tar.gz |
Downloaded and extracted |
To add a skill to the built-in registry, edit src/lib/registry/hardcoded.go and open a PR.
Requires Go 1.25+.
go build -o sqill .
go test ./...To cut a release: git tag v0.1.0 && git push --tags. .github/workflows/release.yml builds and publishes binaries for macOS and Linux (amd64, arm64).