Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Choose which SkillNote skill collection is active for this Codex project. Use when the user says "change collection", "switch skills", "use frontend skills", or "show collections".
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | -17% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -38% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 7% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 26% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 33% | 0% |
Help the user choose which skill collection to sync for the current project.
Run this in Bash to get available collections:
bashcurl -sf "http://${CLAUDE_PLUGIN_OPTION_HOST:-localhost}:8082/v1/collections" 2>/dev/null || echo "[]"
You MUST call the AskUserQuestion tool. Do NOT print a table or ask a text question.
Call AskUserQuestion with these EXACT parameters:
header: "SkillNote"question: "Pick a collection for this project:"options in this order:basename(cwd) (lowercase, non-alphanumeric replaced with -) matches an existing collection name, put that option first and append · Recommended to its description. Example description: "12 skills · Recommended".label = name, description = "{count} skills"..skillnote.json exists, add "(current)" to the currently-active collection's label.{"label": "Create new collection…", "description": "type a name next"}{"label": "Skip (use no collections)", "description": "no skills synced"}Example AskUserQuestion call:
json{ "header": "SkillNote", "question": "Pick a collection for this project:", "options": [ {"label": "frontend (current)", "description": "12 skills · Recommended"}, {"label": "backend", "description": "8 skills"}, {"label": "devops", "description": "3 skills"}, {"label": "Create new collection…", "description": "type a name next"}, {"label": "Skip (use no collections)", "description": "no skills synced"} ] }
Branch based on what the user picked:
Strip any (current) suffix. Then run:
bashecho '{"collections": ["<SELECTED_NAME>"]}' > .skillnote.json skillnote-sync --force 2>/dev/null || true
Tell the user: "Switched to {name}. Skills will refresh."
Ask the user for a name in a plain text turn:
> What should the new collection be called? (lowercase letters, numbers, hyphens, underscores — example: my-project)
Wait for their reply. Validate: name must match ^[a-z0-9_-]+$, be 1–128 chars, and not contain anthropic or claude. If invalid, explain and re-prompt once.
Create the collection:
bashcurl -sf -X POST "http://${CLAUDE_PLUGIN_OPTION_HOST:-localhost}:8082/v1/collections" \ -H "Content-Type: application/json" \ -d '{"name": "<NAME>", "description": ""}'
If curl returns a 409 conflict, the collection already exists — tell the user and offer to activate it instead (one-question AskUserQuestion: Yes, activate / No, pick a different name).
On success, write the name to .skillnote.json and run sync the same way as 3a.
Write an empty collections list:
bashecho '{"collections": []}' > .skillnote.json skillnote-sync --force 2>/dev/null || true
Tell the user: "Skipped. No skills will be synced to this project."
Other measured skills in the registry, with their headline benchmark lift.