skillx
v0.1.7
Published
CLI runner for skill scripts across .agent/.agents/.claude/.codex skill directories.
Readme
skillx
skillx makes scripts in a skill's scripts/ directory executable by convention:
scripts/main.{ts,js,py,sh}->skillx <skill> ...scripts/<command>.{ts,js,py,sh}->skillx <skill> <command> ...
If scripts/<command>.* is missing, skillx falls back to scripts/main.* and passes <command> as the first argument.
Install
npm i -g skillx
pnpm i -g skillx
bun i -g skillxUsage
skillx <skill> [args...]
skillx <skill> <script-name> [args...]
skillx --list
skillx --add-path <skill> <path>
skillx --add-root <path>Examples:
skillx my-skill --dry-run
skillx my-skill do --dry-run
skillx --list
skillx --add-path my-skill ~/Code/my-skill
skillx --add-root ~/Code/my-skillsskillx --list prints available skill names that have executable scripts.
Resolution order
When you run skillx <skill> ..., skill directories are checked in this order:
- Custom skill path from config (
~/.skillx/config.json, or$SKILLX_CONFIG) - Custom skills roots from config (
skillRootslist) <git-repo-root>/.agents/skill/<skill><git-repo-root>/.agent/skills/<skill><git-repo-root>/.agents/skills/<skill><git-repo-root>/.claude/skills/<skill><git-repo-root>/.codex/skills/<skill><git-repo-root>/skills/<skill>(OpenClaw workspace skills)~/.agents/skills/<skill>(or$SCRIPT_SKILLS_HOME/<skill>if set)~/.agent/skills/<skill>~/.claude/skills/<skill>(or$SCRIPT_CLAUDE_SKILLS_HOME/<skill>if set)~/.openclaw/skills/<skill>(or$SCRIPT_OPENCLAW_SKILLS_HOME/<skill>if set, using$OPENCLAW_STATE_DIRor$OPENCLAW_HOMEwhen present)$CODEX_HOME/skills/<skill>(fallback~/.codex/skills/<skill>)
Custom skill path config
Set a custom location for a specific skill:
skillx --add-path <skill> <path>Add an entire skills folder (containing many <skill>/scripts/... directories):
skillx --add-root <path>By default, mappings are saved to ~/.skillx/config.json:
{
"skillPaths": {
"my-skill": "/absolute/path/to/my-skill"
},
"skillRoots": [
"/absolute/path/to/my-skills"
]
}Use $SKILLX_CONFIG to store this config file elsewhere.
Script dispatch behavior
Within a matched skill directory:
skillx <skill> <name> ...triesscripts/<name>.*first.- If
scripts/<name>.*is missing, it falls back toscripts/main.*and passes<name>through as the first argument. skillx <skill> ...runsscripts/main.*.- If
mainis missing but named scripts exist,skillxshows available commands and exits with code2.
Supported script targets
.js,.mjs,.cjs->node.ts,.mts,.cts->bun(preferred), thennode(native TS support),tsx,ts-node,deno.py->uv run(preferred), fallbackpython3.sh->bash- executable files with a shebang (
#!...) -> executed directly
Node native TypeScript execution is used when Node supports it (v22.18+, v23+, or v24.3+).
All args are forwarded unchanged.
