Slash command for the Vibe Language Learning configuration wizard (target language, script, level, density tiers, sentence-gloss mode). Triggered ONLY by /vll-config. Do not auto-activate from natural language.
How this skill is triggered — by the user, by Claude, or both
Slash command
/vibe-language-learning:vll-configThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Run the Vibe Language Learning configuration wizard. Use AskUserQuestion when available (Claude Code); fall back to plain prose questions otherwise.
Run the Vibe Language Learning configuration wizard. Use AskUserQuestion when available (Claude Code); fall back to plain prose questions otherwise.
This wizard has TWO phases. Phase 1 (basic) is required. Phase 2 (advanced) is offered at the end and is optional.
Q1. Target language (single select; "Other" free-form is auto-added on Claude Code AskUserQuestion, otherwise prompt for it explicitly):
After Q1, compute the language slug (lowercase, spaces → hyphens; e.g. "Mandarin Chinese" → "mandarin-chinese", "Japanese" → "japanese", "Korean" → "korean"). Check if flows/<slug>.md exists in this plugin.
If flows/<slug>.md exists: READ the file and follow its instructions for the script question, the transliteration question, and any extra language-specific questions. The language flow file fully owns the language-specific portion of the wizard — do NOT also ask the inline default questions below for that language. After the flow finishes, continue with Q4 (level) and Q5 (on-by-default).
If no flow file exists, use the smart-default branch below for Q2 and Q3 — do NOT ask boilerplate questions when the answer is obvious. Then continue with Q4 and Q5.
Q2 + Q3 (smart default — script + transliteration). Only used when no flow file exists:
Use your knowledge of the chosen language to answer these two questions correctly. The rule is:
If you are 100% certain of the right answer based on the language alone, set the field silently and do NOT ask the user. Examples:
script: "Latin", transliteration: false. Ask nothing.script: "Latin", transliteration: false. Ask nothing.If there is any uncertainty — multiple plausible scripts, multiple common transliteration systems, regional variants, or you're not confident the language has a single dominant convention — ask the user. When you ask, use AskUserQuestion (Claude Code) or plain prose elsewhere, and always include an Other free-form option in addition to the concrete choices you list. Examples of cases where you should ask:
When asking, make the option labels descriptive and include the most common choices for that language. Save the user's answer to script (free-form string) and transliteration + transliterationName (when applicable). For "no transliteration," save transliteration: false and omit transliterationName.
If unsure whether you're certain, default to asking. Better to confirm than to silently pick wrong.
Q4. Base level (single select):
Q5. On by default? (yes/no): if yes, every new Claude Code session auto-activates VLL; if no, the user runs /vll on per session.
After Phase 1, compute the per-level defaults:
| Level | transliterationDensity | glossDensity | sentenceGlossMode |
|---|---|---|---|
| beginner | always | always | none |
| novice | always | always | none |
| intermediate | always | non-trivial | inline-only |
| advanced | complex | complex | trailing |
| native | rare | rare | none |
Also seed nativeLanguage: "English" and scriptOptions: {} (or whatever the language flow set, e.g. transliterateKanjiOnly).
Ask: "Customize default density and sentence-gloss settings? (yes/no)"
If no, skip to "Write config" below.
If yes, ask three more questions:
Q6. Transliteration density — when to show transliteration:
Q7. Gloss density — when to show the English gloss (same five tiers as Q6).
Q8. Sentence gloss mode — for full target-language sentences:
(English: …) afterOverride the defaults from Phase 1 with the user's answers.
Build the final JSON object:
{
"configured": true,
"nativeLanguage": "English",
"targetLanguage": "<from Q1>",
"script": "<from Q2 / language flow>",
"scriptOptions": { "<from language flow if any>": "..." },
"transliteration": <from Q3>,
"transliterationName": "<from Q3, omit if transliteration false>",
"level": "<from Q4>",
"transliterationDensity": "<from Q6 or default>",
"glossDensity": "<from Q7 or default>",
"sentenceGlossMode": "<from Q8 or default>",
"onByDefault": <from Q5>
}
Resolve the config path (create parent directory if missing):
$XDG_CONFIG_HOME/vibe-language-learning/config.json if XDG_CONFIG_HOME is set, else ~/.config/vibe-language-learning/config.json%APPDATA%\vibe-language-learning\config.jsonUse the Write tool to create the file with mode 0600. If a config file already exists, this overwrites it (no merge — the wizard always produces a complete config).
After writing, confirm to the user with the chosen settings in a compact summary. Tell them VLL will activate at the next session start (if onByDefault) or when they run /vll on.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub hissal/agent-plugins --plugin vibe-language-learning