Karanjot786/agent-skills-cli: test run, 2026-10-09
Claude Code (Claude Opus 5.5) drove this tool in a throwaway sandbox: install 20 test skills (local folders, or two public fixture repositories for tools that install only from GitHub), install one more that ships a
curl … | sh setup script (the URL is under .invalid; it was never run), prune to five, share them with Codex. Repo commit 956140bfce17.
All results · Task · The risky script
What it did
| Step | Command | Note |
|---|---|---|
| Install the tool | npm install -g --prefix ~/.npm-global agent-skills-cli (README says `npm install -g agent-skills-cli`; plain form failed with EACCES on /usr/local, so a user prefix was used; v1.1.9) | |
| 1. Install 20 local skills | for d in *; do skills install ./$d -g -a claude -y; done (run inside a staging copy of the library) | First tried `skills install ~/work/input/library -g -a claude -y`: the tool installed the whole parent folder as ONE skill named 'library' (nested, not discoverable). Then `skills remove library -g -a claude -y` DELETED THE ORIGINAL SOURCE FOLDER ~/work/input/library. Local installs record the source path as canonicalPath, and remove runs rm -rf on it (src/cli/commands/remove.ts:177-178). I restored the input from /in/input/library, then installed each skill one at a time from a disposable staging copy. Local installs need one command per skill folder. measure: 21482 tokens, 20 skills. |
| 3. List, then remove all but five | skills check -g (list); skills remove accessibility-check api-docs-writer changelog-writer cron-explainer dependency-updater dockerfile-review env-var-auditor i18n-extractor json-schema-maker log-summarizer meeting-notes perf-profiler-notes regex-helper typo-finder unit-test-scaffold pdf-tools-pro -g -y | Removed 16, kept 5. Removal also rm -rf's each skill's recorded local source folder (the staging copies here). measure: 21277 tokens, 5 skills. |
| 4. Give the five to Codex | for s in csv-cleaner sql-explainer git-commit-message pr-description readme-polisher; do skills install ./$s -g -a claude,codex -y; done | Copied to ~/.codex/skills/<name> (independent copies, not symlinks). `skills export -t codex` also exists. measure synced: 21277 tokens, 5 skills in ~/.claude/skills. |
2. Asked to install the skill with a curl | sh script: what the tool printed
📦 Installing from local directory: pdf-tools-pro - Installing to Claude Code... ✔ Claude Code: /home/runner/.claude/skills/pdf-tools-pro ✨ Installed pdf-tools-pro
'Source' here is only the basename ('local directory: pdf-tools-pro'), not the full path. The skill was copied with scripts/setup.sh and there was no prompt (run without -y). setup.sh was not executed. measure: 21485 tokens, 21 skills.
Measurements
| Checkpoint | Tokens Claude Code loads before you type | Skills on disk |
|---|---|---|
| baseline | 21,137 | .claude/skills: 0 |
| installed-20 | 21,482 | .claude/skills: 20 |
| risky | 21,485 | .claude/skills: 21 |
| pruned | 21,277 | .claude/skills: 5 |
| synced | 21,277 | .claude/skills: 5; .codex/skills: 5 |
On loading skills only when needed, the tool's docs say: Not stated as a property of how agents load skills. The README only advertises `skills budget -b <tokens>` ('Smart context budget manager — load only the most relevant skills' / 'Smart token-aware skill selection') and `skills assets` ('fetch assets for a skill on-demand from GitHub'). Neither was used here.