@kreas/install-skills
v0.2.0
Published
Interactively install agent skills from skills.sh based on a .skills.yaml manifest.
Readme
install-skills
Interactively install skills.sh agent skills from a
.skills.yaml manifest. Pick skills from a checkbox list, choose the target
agent, and each one is installed with
npx skills add <repo> --skill <skill> --agent <ids> -y.
npx @kreas/install-skillsHow it works
- Looks for
.skills.yamlin the current directory (or a source you pass with--manifest). - Shows an interactive picker — space to toggle, enter to confirm.
- Runs
npx skills add https://github.com/<repo> --skill <skill> --agent <ids> -yfor each selected skill — fully non-interactive, so the skills CLI never prompts for agents or confirmation.
The manifest
Create a .skills.yaml in your project:
agents: [claude-code] # default install target (optional)
skills:
- name: find-skills
description: Discover and install agent skills on demand
repo: vercel-labs/skills # GitHub owner/repo
skill: find-skills # the --skill value
- name: brainstorming
description: Turn ideas into designs before any code
repo: obra/superpowers
skill: brainstorming
agents: [claude-code, cursor] # per-skill override (optional)Four fields per entry: name, description, repo (owner/repo), skill.
The GitHub install URL (github.com/<repo>) and the view link
(skills.sh/<repo>/<skill>) are derived for you. See example.skills.yaml.
Target agents
agents decides which agent the skill installs into (the picker the skills
CLI would otherwise show). It's a list of agent ids, or '*' for all agents.
By default, every interactive run asks which agent(s) to install to. The picker is searchable: the popular agents are listed first (with the auto-detected agent pre-selected at the top), and you can type to filter the full set of supported agents. Space toggles, enter confirms; the list scrolls in a fixed window rather than running off-screen. Skip the prompt by setting the target explicitly or answering yes-to-all:
install-skills # asks; detected agent pre-checked
install-skills --print-agent # just print the detected agent, e.g. "claude-code (via AI_AGENT)"
install-skills --agent cursor # set explicitly, no prompt
install-skills --all-agents # every supported agent, no prompt
install-skills --all -y # all skills, detected agent, no promptsResolution order (highest first):
--agent <ids>/--all-agents, or your answer to the agent prompt- (non-interactive /
-y) a skill's ownagents, then top-levelagents - the auto-detected agent (from
AI_AGENT/CLAUDECODE/ …) claude-code
Detection is conservative — if it can't tell, it pre-selects nothing and the
default stays claude-code.
Common ids: claude-code, cursor, codex, gemini-cli, github-copilot,
amp, cline, zed, windsurf, universal (and many more — * for all).
The full list (src/agents.js) is a snapshot of the agents the skills CLI
supports; refresh it with npm run refresh-agents.
Manifest sources
--manifest (-f) accepts any of:
| Form | Example |
|------|---------|
| Local path (default ./.skills.yaml) | -f ./config/.skills.yaml |
| gh: shorthand | -f gh:kreas/skills |
| gh: with path + ref | -f gh:kreas/skills/manifests/team.yaml@v2 |
| Raw or blob GitHub URL | -f https://github.com/kreas/skills/blob/main/.skills.yaml |
| Any https URL | -f https://example.com/.skills.yaml |
gh:owner/repo defaults to .skills.yaml on the default branch; GitHub
blob/ URLs are rewritten to raw.githubusercontent.com automatically.
Options
-f, --manifest <path|url> Manifest source (default ./.skills.yaml)
-a, --all Select every skill (required when non-interactive / CI)
--agent <ids> Install target agent(s), comma-separated; skips the agent prompt
--all-agents Install to every supported agent (skills --agent '*')
--print-agent Print the detected agent and exit
-y, --yes Skip the agent + confirmation prompts (use detected agent)
--dry-run Print the install commands without running them
-h, --help Show help
-v, --version Show versionDevelop
npm install
npm test # node:test unit tests (no network, no TTY)
node bin/cli.js --dry-run # exercise against ./example.skills.yaml
node bin/cli.js -f example.skills.yaml --all --dry-runThe pure logic lives in src/ and is unit-tested; bin/cli.js is the thin
interactive shell around it:
manifest.js— parse/validate the YAML, derive linkssource.js— resolve a local path / URL /gh:shorthand to manifest textinstall.js— build and run theskills addcommandagent.js— detect the current agent; order agents for the pickeragents.js— snapshot of supported agents (regenerate withnpm run refresh-agents)popular.js— curated agents shown first in the picker
