Skillnote collection
Choose which SkillNote skill collection is active for this project. Use when user says "change collection", "switch skills", "use frontend skills", "show collections", or at first session in a new project when recommended.
git clone https://github.com/luna-prompts/skillnote
T=$(mktemp -d) && git clone --depth=1 https://github.com/luna-prompts/skillnote "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugin/skills/collection" ~/.claude/skills/luna-prompts-skillnote-collection && rm -rf "$T"
plugin/skills/collection/SKILL.mdSkillNote Collection Manager
Help the user choose which skill collection to sync for the current project.
Step 1: Fetch collections
Run this in Bash to get available collections:
curl -sf "http://${CLAUDE_PLUGIN_OPTION_HOST:-localhost}:8082/v1/collections" 2>/dev/null || echo "[]"
Step 2: Show picker — MUST use AskUserQuestion
You MUST call the AskUserQuestion tool. Do NOT print a table or ask a text question.
Call AskUserQuestion with these EXACT parameters:
: "SkillNote"header
: "Pick a collection for this project:"question- Build
in this order:options- Recommended first: if
(lowercase, non-alphanumeric replaced withbasename(cwd)
) matches an existing collection name, put that option first and append-
to its description. Example description:· Recommended
."12 skills · Recommended" - All other existing collections, each with
= name,label
=description
."{count} skills" - If
exists, add "(current)" to the currently-active collection's label..skillnote.json {"label": "Create new collection…", "description": "type a name next"}{"label": "Skip (use no collections)", "description": "no skills synced"}
- Recommended first: if
Example AskUserQuestion call:
{ "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"} ] }
Step 3: Apply selection
Branch based on what the user picked:
3a. Existing collection or "(current)" option
Strip any
(current) suffix. Then run:
echo '{"collections": ["<SELECTED_NAME>"]}' > .skillnote.json skillnote-sync --force 2>/dev/null || true
Tell the user: "Switched to {name}. Skills will refresh."
3b. "Create new collection…"
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:
curl -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.
3c. "Skip (use no collections)"
Write an empty collections list:
echo '{"collections": []}' > .skillnote.json skillnote-sync --force 2>/dev/null || true
Tell the user: "Skipped. No skills will be synced to this project."
Rules
- ALWAYS use AskUserQuestion — never print a table or numbered list
- Keep 12-15 skills per collection for best Claude Code performance
- User can change collections anytime by saying "change collection"