@lingochunk/mcp 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -62,7 +62,7 @@ compose good lessons, cards and annotations.
62
62
  | `update_annotation` | `annotations:write` | Replaces one annotation's note in place (the anchor stays put). |
63
63
  | `delete_annotation` | `annotations:write` | Deletes one annotation (destructive); also how you fix a mis-anchored span before re-creating it. |
64
64
 
65
- Plus seven skills:
65
+ Plus eight skills:
66
66
 
67
67
  - **`lingochunk-overview`** - the "what can I do?" tour: a short menu of
68
68
  every area (with an example prompt each) and instructions to answer
@@ -91,6 +91,11 @@ Plus seven skills:
91
91
  culture-bound references) and attaches a short markdown creator note to each
92
92
  exact span: an iris tint + note sheet for you, a forward-only note card for
93
93
  your followers.
94
+ - **`lingochunk-skill-author`** - the meta-skill: generalises a lesson you
95
+ have refined (say, through the app's Co-edit mode) into a NEW reusable
96
+ skill - structure and voice kept, episode content replaced by
97
+ fetch-and-quote instructions - which you keep private in your own AI's
98
+ context or contribute here as a PR (see CONTRIBUTING).
94
99
 
95
100
  The Claude Code plugin installs these as skills. Every client also gets the
96
101
  same guidance two other ways that need no plugin: as MCP **prompts** (one per
@@ -322,6 +327,7 @@ skills/lingochunk-cards/ the flashcard (card.v1) skill
322
327
  skills/lingochunk-discuss/ the "discuss an episode" skill
323
328
  skills/lingochunk-add-language/ the add-language / draft-translation skill
324
329
  skills/lingochunk-annotate/ the useful-expression annotation skill
330
+ skills/lingochunk-skill-author/ the meta-skill: lesson -> reusable skill
325
331
  skills/*/examples/ example lesson.v1 documents (CI-validated)
326
332
  docs/creator-guide.md the guide for content creators (start here if you make audio)
327
333
  docs/skill-authoring.md how to write a new skill
@@ -1,4 +1,4 @@
1
- export type GuideTopic = "overview" | "lesson" | "course" | "cards" | "annotations" | "add-language" | "discuss";
1
+ export type GuideTopic = "overview" | "lesson" | "course" | "cards" | "annotations" | "add-language" | "discuss" | "skill-author";
2
2
  export interface Guide {
3
3
  /** The public topic value (get_authoring_guide's `topic` argument). */
4
4
  topic: GuideTopic;
@@ -2,7 +2,7 @@
2
2
  // Do not edit by hand: `npm run build` regenerates it. The authoring
3
3
  // skills are embedded here because the npm package ships only dist/, so
4
4
  // remote MCP clients cannot read skills/ off disk.
5
- export const GUIDE_TOPICS = ["overview", "lesson", "course", "cards", "annotations", "add-language", "discuss"];
5
+ export const GUIDE_TOPICS = ["overview", "lesson", "course", "cards", "annotations", "add-language", "discuss", "skill-author"];
6
6
  export const GUIDES = {
7
7
  "overview": {
8
8
  topic: "overview",
@@ -14,7 +14,7 @@ export const GUIDES = {
14
14
  topic: "lesson",
15
15
  promptName: "lingochunk-lesson",
16
16
  description: "Build a coursebook-style lesson from the user's own LingoChunk listening history and save it as a structured lesson.v1 document. Pick an episode (optionally a time range like \"the first 5 minutes\") and a CEFR level, pull the transcript slice plus vocabulary with FSRS maturity, then compose a lesson on a Listen -> Text -> Vocabulary -> Grammar -> Exercises -> Review scaffold, choosing 2-3 exercise archetypes suited to the grammar point and level so consecutive lessons don't feel identical. The app renders it natively with real audio, live word state, crosslinks and a built-in AI tutor. Use when the user asks to make or build a lesson, worksheet, study sheet, or exercises from their LingoChunk content, or to \"quiz me\" on an episode or a word.",
17
- body: "# LingoChunk lesson builder\n\nBuild a `lesson.v1` document grounded in the learner's real LingoChunk\ncontent. The division of labour is the point: **LingoChunk supplies the\nmaterials (sentences with positions and translations, vocabulary with FSRS\nmaturity) and renders the lesson natively in the app; you do the pedagogy on\nthe user's own tokens.** No server-side LLM spend. The app plays the audio\nstraight from the original episode (never send or embed audio), resolves\nword knowledge live, links every word and sentence back to its Words/Listen\ntabs, and mounts an Ask AI tutor on the grammar box and glossary.\n\nThis skill uses the `lingochunk` MCP tools. If they are not available, tell\nthe user to add the LingoChunk MCP server (see the plugin README) and stop.\n\n## When to use\n\n- \"Make me a lesson / worksheet / quiz from yesterday's episode.\"\n- \"Build a lesson on the subjunctive using examples from my episodes.\"\n- \"Create a lesson from the first five minutes of episode X.\"\n- \"Quiz me on the words I'm learning in German.\"\n\n## Options to settle first (ask only what the user left open)\n\n1. **Source**: a named episode (`list_library`), or a topic/grammar point\n gathered across episodes (`search_examples`, `get_vocabulary`) - in v1 a\n lesson has ONE source episode, so for cross-episode topics pick the\n richest single episode.\n2. **Time range**: \"the first five minutes\" maps to `get_transcript`\n `from_time`/`to_time`; a chapter or scene works too. Default: a coherent\n 3 to 8 minute slice, not a whole 45-minute episode.\n3. **Level**: the CEFR level to pitch at. If the user does not say, infer it\n from the CEFR mix of their `get_vocabulary(status=known)` words and say\n which level you picked. Level drives:\n - instruction language: A1/A2 instructions in the learner's language;\n B1+ in the target language (keep them one short sentence);\n - exercise mix: more recognition (MCQ, matching) at low levels, more\n cued recall and production at high levels;\n - which grammar point qualifies (see below), glossary depth, and which\n archetypes you pick from the menu.\n\n## Workflow\n\n1. **Pull the slice.** `get_transcript` with the chosen range. Only\n `transcript_state: \"ready\"` is usable. Keep each sentence's `position`,\n `text`, `translation`, `speaker`, and its `start`/`end` seconds - the\n document references sentences BY POSITION and must quote `text` VERBATIM\n (the server rejects misquotes); the `start`/`end` times are what you build\n `audio_slice` windows from.\n\n2. **Gather and filter vocabulary.** Two sets: EXCLUDE and DRILL.\n - Exclusion set: `get_vocabulary(status=known)` (follow `next_cursor`\n with `limit=200` until null, or a known word slips into an exercise).\n - Due words: `get_vocabulary(status=due)` - do NOT exclude; they are\n exactly what is worth practising now (the app flags them live).\n - Drill words: `get_vocabulary(status=learning)` and `status=new`,\n prioritised.\n - Ground meanings/gender/CEFR with `lookup_word`; never invent them.\n\n3. **Pick ONE grammar point** evidenced in the slice, at the lesson's\n level. One per lesson, always. Prefer a pattern that occurs 2+ times in\n the slice so the evidence table has real rows.\n\n4. **Compose the document** (schema below) on the scaffold, choosing\n archetypes from the menu. The scaffold is the default skeleton; the\n archetype menu is what stops every lesson looking the same. See\n \"The scaffold and the archetype menu\" below.\n\n5. **Validate, then save.** Call `validate_lesson` with `{document}` FIRST:\n it returns EVERY problem at once (schema + reference), so you fix the whole\n document in one pass instead of burning save -> 400 -> fix cycles. Read the\n `errors` codes: `schema_invalid` carries a `loc` (dotted path to the bad\n field); `unknown_positions` / `position_outside_slice` mean a sentence\n reference is wrong; `dialogue_mismatch` means quote the transcript verbatim\n (including punctuation); `order_mismatch` means an `exercise_order` item's\n segments do not reassemble its anchored sentence. Only once it returns\n `valid: true` do you `save_lesson` with `{document}`. Set\n `generator: {skill: \"lingochunk-lesson\"}` so the app's lessons list shows\n which skill built it (episodes collect lessons from several skills). Both\n calls report `unknown_lemmas` (advisory only - glossary lemmas the episode\n does not know); prefer the lemma form the episode's vocabulary uses and fix\n any that look wrong before saving.\n\n6. **Deliver.** Give the user the `app_url` (the lesson opens in a Lessons\n tab on the episode). If the user asked for a course or a series of lessons,\n file this one under a course: `create_course` once, then pass its id as\n `save_lesson`'s `course_id` with a `sequence` (see the `lingochunk-course`\n guide). If the user is a CREATOR publishing to their audience, pass\n `visibility: \"public\"` too - the lesson then shows to everyone who can view\n the episode (e.g. followers of their collection). Publishing requires\n owning the episode; the default is private, so never publish unasked. Offer `add_card` for drill words the lesson introduced (a 409 means\n it is already there - skip and carry on; never add `status=known` words).\n Mention the in-app Download button if they want the offline HTML worksheet\n (it has no audio by design). Summarise what the lesson covers and which\n words it drills.\n\n## Revising a saved lesson\n\nLessons are editable IN PLACE: `get_lesson` -> compose the change ->\n`update_lesson`. The lesson keeps its id, app_url, visibility and course, so\nnever revise by save-new + delete-old.\n\n**The co-edit loop.** The app has a Co-edit mode for lesson owners: it labels\nevery block with a § handle (§1, §2, ... - the 1-based block position) and\nlive-refreshes while an agent edits. When the user pastes a lesson outline or\nsays \"change §5\", they are in that loop: the § numbers are `update_lesson`'s\n`ops` block numbers, and the user SEES your edit land within seconds - so\nact, then confirm briefly; no need to re-describe the lesson.\n\nWorkflow:\n\n1. `get_lesson` returns `{version, document}`. Treat `version` as OPAQUE -\n echo it verbatim as `update_lesson`'s `base_version`, never parse or\n reformat it (a Date round-trip truncates it and it will never match).\n2. Compose the revision against THAT read. Every rule in this guide applies\n to edited blocks - verbatim transcript quotes, anchoring, one grammar\n point. For a broad rewrite, `validate_lesson` the whole revised document\n first; for surgical `ops`, the update re-validates server-side anyway.\n3. Prefer `ops` (replace/insert/delete by block number, plus `meta` for\n title/subtitle/level/objectives) over a full `document` resend. Batch ALL\n changes from one read into ONE call, ordered by DESCENDING block number -\n ops apply sequentially, so editing top-down shifts the numbers under you.\n4. § numbers are only valid against the read they came from. After your own\n successful update everything renumbers - use the returned `{version}` for\n a chained edit, but re-read (`get_lesson`) before composing NEW block\n references. The user's pasted outline is also a snapshot: before a\n delete/replace, check the target block's type and content match what they\n described, not just its number.\n5. On a `stale_document` error, the lesson changed under you (usually the\n owner's own in-app edit). Re-read, re-apply your intent to the fresh\n document, and never blind-retry the same call.\n6. Consolidate. Writes share a 60/hour budget with saves, and each update\n re-renders the lesson for a watching owner - one thoughtful update beats\n five drips.\n\n## Anchoring (mandatory)\n\nThe renderer's best features - inline play chips, deep links into Listen and\nWords, listening exercises - are all opt-in through optional fields. A lesson\nthat omits them renders flat. These are hard rules, not suggestions:\n\n- **Every `vocab` entry MUST carry `position`.** The anchor is what puts an\n audio play chip on the row and a crosslink to the Words tab. A vocab entry\n with no position is a dead row.\n- **Every MCQ that tests LISTENING MUST carry `audio`** (and a `position`\n when it points at one sentence). Without `audio` it is a reading question,\n not a listening one. A pure recognition/gist MCQ before reading is the one\n case that legitimately has no audio.\n- **Every gap-fill item SHOULD carry `position` and `translation`.** The\n position anchors it to the real sentence (and lights a play chip where the\n renderer supports it); the translation gives the learner the meaning to\n work from.\n- **Dialogue highlights on the grammar pattern are required.** Every\n `dialogue` line that carries an instance of the lesson's grammar point MUST\n mark it with `highlights` (code-point ranges) so the pattern shows as gold\n marks. A dialogue with no highlights wastes the one grammar point.\n\n## The scaffold and the archetype menu\n\n**Scaffold (default skeleton, in order):** Listen -> Text -> Vocabulary ->\nGrammar -> Exercises -> Review. Use `section` blocks to head each stage; the\nrenderer numbers them. This ordering (recognition before reading, one grammar\npoint, graded practice, can-do close) is the pedagogy and holds for every\nlesson.\n\n**Archetype menu (the variety).** The Exercises stage - and the Listen and\nText stages' interactive bits - are NOT a fixed list. Pick **2-3 archetypes**\nper lesson, keyed to the grammar point, the level, and what the episode's\naudio actually affords, so consecutive lessons on the same episode don't feel\nidentical. The archetypes (recipes for the starred ones are below):\n\n| Archetype | Block(s) | Best for |\n|---|---|---|\n| Gist MCQ (no audio) | `exercise_mcq` | opening recognition, every lesson |\n| T/F comprehension * | `exercise_mcq`, 2 options | after the listen, low/mid levels |\n| Listening-detail MCQ | `exercise_mcq` + `audio` + `position` | any level, checks a specific line |\n| Minimal-pair MCQ * | `exercise_mcq` + `audio` | morphology, separable prefixes, case, tense |\n| Back-chain ladder * | 3-4 `audio_slice` | one hard/long sentence; prosody; word order |\n| Assimil passive wave * | `prose` + `dialogue` | the Text stage, every level |\n| Anticipation round * | `prose` + `audio_slice` pairs | cued recall, mid/high levels |\n| Grammar gap-fill | `exercise_gap_fill` | the grammar point itself, every lesson |\n| Vocabulary gap-fill | `exercise_gap_fill` + `wordbank` | vocabulary consolidation, low/mid |\n| Match words -> meanings | `exercise_match` | vocabulary, low/mid levels |\n| Sentence reorder * | `exercise_order` | word order / clause structure, every level |\n| Dictation * | `exercise_dictation` | native-audio dictation, listening precision |\n| Shadowing * | `exercise_shadow` | pronunciation & prosody, the differentiator |\n| Production | `exercise_production` | active use, mid/high levels |\n\n**Which archetypes for which lesson** (grammar-point type x level -> pick from):\n\n| Grammar point | A1-A2 | B1-B2 | C1+ |\n|---|---|---|---|\n| Verb morphology (Perfekt, tense) | minimal-pair MCQ, grammar gap-fill | back-chain ladder, grammar gap-fill | anticipation round, production |\n| Word order / clause structure | sentence reorder, T/F comprehension | sentence reorder, back-chain ladder | anticipation round, production |\n| Cases & endings | minimal-pair MCQ, match | grammar gap-fill, minimal-pair MCQ | production, anticipation round |\n| Separable / prefix verbs | minimal-pair MCQ, listening-detail MCQ | minimal-pair MCQ, grammar gap-fill | anticipation round, production |\n| Connectors / subordination | T/F comprehension, vocabulary gap-fill | grammar gap-fill, production | production, anticipation round |\n| Vocabulary field / functional | match, vocabulary gap-fill | listening-detail MCQ, production | anticipation round, production |\n\nAlways keep one grammar gap-fill (or minimal-pair MCQ) that drills the actual\ngrammar point, plus one vocabulary archetype; the third slot is where you\nvary. Distractors in any MCQ or word bank come from the user's own\nvocabulary, same part of speech, so wrong answers are plausible.\n\n## Recipes\n\n### Back-chain ladder (FSI backward build-up)\n\nFor the slice's hardest sentence - the longest, or the one carrying the\ngrammar pattern - build 3-4 `audio_slice` blocks that all END at the same\npoint and grow leftward, shortest first, so the learner chorus-repeats the\ntail then extends it: \"…gemacht.\" -> \"…heute gemacht.\" -> the whole sentence.\n\nComputing the windows from the sentence's transcript `start` S and `end` E\n(there are no per-word times, so estimate):\n\n- per-word duration `d = (E - S) / word_count`;\n- slice covering the last `w` words: `start = E - w*d`, `end = E`;\n- use growing `w` (e.g. last 2 words -> last 5 -> full sentence at `start=S`);\n- the END anchor `E` is exact; the estimated starts can land mid-word, so\n subtract ~0.3 s from each computed `start` (floor at S) to avoid clipping\n the first syllable.\n\nLabel each block with the words it contains, e.g. `\"Just the ending:\ngemacht.\"` then `\"…heute gemacht.\"` then the full sentence. The schema needs\n`end > start` and `start >= 0`, and every window must sit inside the source\nslice.\n\n### Assimil passive wave\n\nBefore the `dialogue` block in the Text stage, put an instruction `prose`\nthat runs the passive wave: listen once without reading, then read while\nlistening, then reveal translations line by line. The dialogue block already\nblur-reveals each line's translation, so the instruction is what makes it a\ntechnique rather than a wall of text. Example prose:\n\n> \"Listen to the scene once with the audio above, without reading. Play it\n> again and read along. Then tap each line to reveal its translation and\n> check you understood.\"\n\n### Anticipation round (Pimsleur-style)\n\nCued recall in pairs. For 3-5 target phrases from the slice, emit a `prose`\n(the L1 prompt + a one-line hint on how to say it) immediately followed by an\n`audio_slice` that plays the phrase from the real audio as the answer.\nInstruct the learner to cover the answer, say the German aloud, THEN play to\ncheck. Keep the answer slice's `label` NEUTRAL (\"Play the answer\") - printing\nthe German would spoil the anticipation. Build the answer window from the\ntarget sentence's `start`/`end` (a back-chain-style tail slice works if you\nwant just the phrase). Order the pairs from easiest to hardest.\n\n### Minimal-pair / discrimination MCQ\n\nAn `exercise_mcq` with a tight `audio` window over the contrasting word or\nphrase, and options that differ in exactly ONE morpheme - perfect for German\nseparable prefixes (`steht auf` vs `versteht`), case endings (`dem` vs\n`den`), or tense/participle (`gefahren` vs `fahren`). `correct` indexes the\nform actually spoken; the distractors are real minimal variants, not\nnonsense. Add `position` so the row deep-links to the sentence.\n\n### T/F comprehension\n\nAn `exercise_mcq` with exactly TWO options - `[\"Richtig\", \"Falsch\"]` (or the\nlearner's language at A1/A2) - and a `prompt` that states something about the\npassage. Place 2-3 of them after the Listen section. Add `audio` + `position`\nto make it a listening check rather than a reading one.\n\n### Sentence reorder (Satzbau)\n\nAn `exercise_order` with 1-5 `items`, each a sentence broken into `segments`\n(3-12 chunks) IN CORRECT ORDER - the renderer scrambles them; the learner\nreassembles. This is the right tool whenever the grammar point is word order\nor clause structure (verb-second, verb-final in subordinate clauses,\nseparable-prefix placement): it supersedes an ad-hoc gap-fill where a real\nscramble fits. Anchor each item to its sentence with `position` and the server\nchecks the segments reassemble the stored sentence (whitespace-insensitive),\nrejecting a drifted scramble with `order_mismatch`; so quote the real chunks,\ndo not paraphrase. Split at meaningful units (a chunk can be a word or a short\nphrase like \"am Wochenende\"), and add `translation` so the learner has the\nmeaning to aim for.\n\n### Dictation (Diktat)\n\nAn `exercise_dictation` with 1-5 `items`, each anchoring a stored sentence by\n`position` (REQUIRED). The app plays that sentence's native audio and diffs the\nlearner's typing against the LIVE transcript word by word - nothing is copied\ninto the document, so the answer stays truthful as the transcript is edited.\nPick 2-4 SHORT, clearly-articulated sentences (dictation of a long or mumbled\nline just frustrates); optionally set a wider `audio` window to include a beat\nof lead-in, keeping it COVERING the sentence. Add `translation` for the meaning.\n\n### Shadowing (the differentiator)\n\nAn `exercise_shadow` with 1-8 `items`, each a stored sentence by `position`\n(REQUIRED) - the app plays the native line, records the learner, and replays\ntheir take (in-memory only, no upload, no score - self-assessed). This is the\nproduct's core practice move inline in a lesson; use it to make a lesson end in\nreal speaking. Pick 3-8 of the dialogue's best lines - the ones worth being\nable to say fluently - in the order they occur. Add `translation` per line.\n\n## The lesson.v1 document (quick reference)\n\nTop level: `{format:\"lesson.v1\", title, subtitle?, language,\ntranslation_language, level?, source:{submission_id, from_time?, to_time?,\nepisode_title?}, generator?:{skill, version?}, objectives?[<=5],\nestimated_minutes?, blocks[<=40]}`.\n\nBlocks (`type` field): `section {title, subtitle?}` · `prose {text,\nstyle:\"instruction\"|\"body\"}` · `audio_slice {audio:{start,end}, label?}` ·\n`dialogue {lines:[{position, speaker?, text, translation?,\nhighlights?:[[start,end],...]}]}` · `vocab {entries:[{lemma, pos?, display?,\nforms?, meaning, cefr?, position?}]}` · `grammar_box {title, explanation,\nevidence:[{position?, text, note}], merke?, achtung?}` · `exercise_mcq\n{title?, instruction?, prompt?, audio?, position?, options[2..5],\ncorrect:0-based index}` · `exercise_gap_fill {title?, instruction?, wordbank?,\nitems:[{position?, text, answers:[[alternatives],...], translation?}]}`\n(gaps are `{{1}}`, `{{2}}`, ... in `text`; `answers[n-1]` lists accepted\nalternatives for gap n) · `exercise_match {title?, instruction?,\npairs:[{left,right}][2..8]}` · `exercise_order {title?, instruction?,\nitems:[{position?, segments[3..12] in correct order, translation?}][1..5]}`\n(segments must reassemble the anchored sentence) · `exercise_dictation\n{title?, instruction?, items:[{position (REQUIRED), audio?:{start,end},\ntranslation?}][1..5]}` · `exercise_shadow {title?, instruction?,\nitems:[{position (REQUIRED), translation?}][1..8]}` · `exercise_production\n{title?, instruction?, prompt, model_answer}` · `review {can_do?[<=5],\nnew_lemmas?[<=12]}`.\n\n`position?` in the reference is the SCHEMA shape (optional); the Anchoring\nsection is where authoring policy makes some of these anchors mandatory.\n\n**Text formatting.** `prose.text` and `grammar_box.explanation` render a\nmini-Markdown subset in the app: `**bold**`, `*italic*`, backtick code,\n`- `/`* ` bullet lines, and blank-line paragraph breaks. Exercise\n`instruction` fields and `grammar_box.merke`/`achtung` render the inline\nmarks only (no bullets or paragraphs). Every other text field (titles,\nprompts, options, vocab meanings, dialogue lines) is plain text. Headings,\nlinks, tables, images and raw HTML are never rendered anywhere - they show\nas literal characters, so don't emit them.\n\nCaps: 40 blocks, 30 dialogue lines, 20 vocab entries, 5 MCQ options, 10\ngap-fill items, 8 match pairs, 5 order items (3-12 segments each), 5 dictation\nitems, 8 shadow items, 8 highlight spans per line, 1 MB serialized.\n\nThe server is the validator of record (strict: unknown fields and block\ntypes are rejected). Audio is `[start,end)` seconds into the ORIGINAL\nepisode audio - never generate, clip or embed audio files.\n\n## Hard rules\n\n- **Ground, do not invent.** Every dialogue line quotes the transcript\n verbatim by `position`; meanings, genders and CEFR come from\n `lookup_word`/`get_vocabulary`. The server enforces the quoting.\n- **Anchor everything (see Anchoring above).** Vocab entries carry\n `position`; listening MCQs carry `audio`; gap-fill items carry `position`\n and `translation`; grammar-pattern dialogue lines carry `highlights`. An\n unanchored lesson renders flat and is a bug.\n- **LingoChunk is the system of record for word knowledge.** Do not drill a\n `known` word unless it is also `due`. Never write review grades back.\n- **One grammar point per lesson.** Depth beats coverage; a second point is\n a second lesson.\n- **Vary the archetypes.** Pick 2-3 from the menu keyed to the grammar point\n and level; do not emit the same fixed exercise list every time.\n- **Respect the source.** Only use content the tools return; put the\n episode title in `source.episode_title`.\n- **No audio handling.** The app plays ranges of the original audio;\n `get_audio_clip` is NOT part of this workflow. `audio_slice` windows are\n built from transcript sentence `start`/`end` times.",
17
+ body: "# LingoChunk lesson builder\n\nBuild a `lesson.v1` document grounded in the learner's real LingoChunk\ncontent. The division of labour is the point: **LingoChunk supplies the\nmaterials (sentences with positions and translations, vocabulary with FSRS\nmaturity) and renders the lesson natively in the app; you do the pedagogy on\nthe user's own tokens.** No server-side LLM spend. The app plays the audio\nstraight from the original episode (never send or embed audio), resolves\nword knowledge live, links every word and sentence back to its Words/Listen\ntabs, and mounts an Ask AI tutor on the grammar box and glossary.\n\nThis skill uses the `lingochunk` MCP tools. If they are not available, tell\nthe user to add the LingoChunk MCP server (see the plugin README) and stop.\n\n## When to use\n\n- \"Make me a lesson / worksheet / quiz from yesterday's episode.\"\n- \"Build a lesson on the subjunctive using examples from my episodes.\"\n- \"Create a lesson from the first five minutes of episode X.\"\n- \"Quiz me on the words I'm learning in German.\"\n\n## Options to settle first (ask only what the user left open)\n\n1. **Source**: a named episode (`list_library`), or a topic/grammar point\n gathered across episodes (`search_examples`, `get_vocabulary`) - in v1 a\n lesson has ONE source episode, so for cross-episode topics pick the\n richest single episode.\n2. **Time range**: \"the first five minutes\" maps to `get_transcript`\n `from_time`/`to_time`; a chapter or scene works too. Default: a coherent\n 3 to 8 minute slice, not a whole 45-minute episode.\n3. **Level**: the CEFR level to pitch at. If the user does not say, infer it\n from the CEFR mix of their `get_vocabulary(status=known)` words and say\n which level you picked. Level drives:\n - instruction language: A1/A2 instructions in the learner's language;\n B1+ in the target language (keep them one short sentence);\n - exercise mix: more recognition (MCQ, matching) at low levels, more\n cued recall and production at high levels;\n - which grammar point qualifies (see below), glossary depth, and which\n archetypes you pick from the menu.\n\n## Workflow\n\n1. **Pull the slice.** `get_transcript` with the chosen range. Only\n `transcript_state: \"ready\"` is usable. Keep each sentence's `position`,\n `text`, `translation`, `speaker`, and its `start`/`end` seconds - the\n document references sentences BY POSITION and must quote `text` VERBATIM\n (the server rejects misquotes); the `start`/`end` times are what you build\n `audio_slice` windows from.\n\n2. **Gather and filter vocabulary.** Two sets: EXCLUDE and DRILL.\n - Exclusion set: `get_vocabulary(status=known)` (follow `next_cursor`\n with `limit=200` until null, or a known word slips into an exercise).\n - Due words: `get_vocabulary(status=due)` - do NOT exclude; they are\n exactly what is worth practising now (the app flags them live).\n - Drill words: `get_vocabulary(status=learning)` and `status=new`,\n prioritised.\n - Ground meanings/gender/CEFR with `lookup_word`; never invent them.\n\n3. **Pick ONE grammar point** evidenced in the slice, at the lesson's\n level. One per lesson, always. Prefer a pattern that occurs 2+ times in\n the slice so the evidence table has real rows.\n\n4. **Compose the document** (schema below) on the scaffold, choosing\n archetypes from the menu. The scaffold is the default skeleton; the\n archetype menu is what stops every lesson looking the same. See\n \"The scaffold and the archetype menu\" below.\n\n5. **Validate, then save.** Call `validate_lesson` with `{document}` FIRST:\n it returns EVERY problem at once (schema + reference), so you fix the whole\n document in one pass instead of burning save -> 400 -> fix cycles. Read the\n `errors` codes: `schema_invalid` carries a `loc` (dotted path to the bad\n field); `unknown_positions` / `position_outside_slice` mean a sentence\n reference is wrong; `dialogue_mismatch` means quote the transcript verbatim\n (including punctuation); `order_mismatch` means an `exercise_order` item's\n segments do not reassemble its anchored sentence. Only once it returns\n `valid: true` do you `save_lesson` with `{document}`. Set\n `generator: {skill: \"lingochunk-lesson\"}` so the app's lessons list shows\n which skill built it (episodes collect lessons from several skills). Both\n calls report `unknown_lemmas` (advisory only - glossary lemmas the episode\n does not know); prefer the lemma form the episode's vocabulary uses and fix\n any that look wrong before saving.\n\n6. **Deliver.** Give the user the `app_url` (the lesson opens in a Lessons\n tab on the episode). If the user asked for a course or a series of lessons,\n file this one under a course: `create_course` once, then pass its id as\n `save_lesson`'s `course_id` with a `sequence` (see the `lingochunk-course`\n guide). If the user is a CREATOR publishing to their audience, pass\n `visibility: \"public\"` too - the lesson then shows to everyone who can view\n the episode (e.g. followers of their collection). Publishing requires\n owning the episode; the default is private, so never publish unasked. Offer `add_card` for drill words the lesson introduced (a 409 means\n it is already there - skip and carry on; never add `status=known` words).\n Mention the in-app Download button if they want the offline HTML worksheet\n (it has no audio by design). Summarise what the lesson covers and which\n words it drills.\n\n## Revising a saved lesson\n\nLessons are editable IN PLACE: `get_lesson` -> compose the change ->\n`update_lesson`. The lesson keeps its id, app_url, visibility and course, so\nnever revise by save-new + delete-old.\n\n**The co-edit loop.** The app has a Co-edit mode for lesson owners: it labels\nevery block with a § handle (§1, §2, ... - the 1-based block position) and\nlive-refreshes while an agent edits. When the user pastes a lesson outline or\nsays \"change §5\", they are in that loop: the § numbers are `update_lesson`'s\n`ops` block numbers, and the user SEES your edit land within seconds - so\nact, then confirm briefly; no need to re-describe the lesson.\n\nWorkflow:\n\n1. `get_lesson` returns `{version, document}`. Treat `version` as OPAQUE -\n echo it verbatim as `update_lesson`'s `base_version`, never parse or\n reformat it (a Date round-trip truncates it and it will never match).\n2. Compose the revision against THAT read. Every rule in this guide applies\n to edited blocks - verbatim transcript quotes, anchoring, one grammar\n point. For a broad rewrite, `validate_lesson` the whole revised document\n first; for surgical `ops`, the update re-validates server-side anyway.\n3. Prefer `ops` (replace/insert/delete by block number, plus `meta` for\n title/subtitle/level/objectives) over a full `document` resend. Batch ALL\n changes from one read into ONE call, ordered by DESCENDING block number -\n ops apply sequentially, so editing top-down shifts the numbers under you.\n4. § numbers are only valid against the read they came from. After your own\n successful update everything renumbers - use the returned `{version}` for\n a chained edit, but re-read (`get_lesson`) before composing NEW block\n references. The user's pasted outline is also a snapshot: before a\n delete/replace, check the target block's type and content match what they\n described, not just its number.\n5. On a `stale_document` error, the lesson changed under you (usually the\n owner's own in-app edit). Re-read, re-apply your intent to the fresh\n document, and never blind-retry the same call.\n6. Consolidate. Writes share a 60/hour budget with saves, and each update\n re-renders the lesson for a watching owner - one thoughtful update beats\n five drips.\n\n## Anchoring (mandatory)\n\nThe renderer's best features - inline play chips, deep links into Listen and\nWords, listening exercises - are all opt-in through optional fields. A lesson\nthat omits them renders flat. These are hard rules, not suggestions:\n\n- **Every `vocab` entry MUST carry `position`.** The anchor is what puts an\n audio play chip on the row and a crosslink to the Words tab. A vocab entry\n with no position is a dead row.\n- **Every MCQ that tests LISTENING MUST carry `audio`** (and a `position`\n when it points at one sentence). Without `audio` it is a reading question,\n not a listening one. A pure recognition/gist MCQ before reading is the one\n case that legitimately has no audio.\n- **Every gap-fill item SHOULD carry `position` and `translation`.** The\n position anchors it to the real sentence (and lights a play chip where the\n renderer supports it); the translation gives the learner the meaning to\n work from.\n- **Dialogue highlights on the grammar pattern are required.** Every\n `dialogue` line that carries an instance of the lesson's grammar point MUST\n mark it with `highlights` (code-point ranges) so the pattern shows as gold\n marks. A dialogue with no highlights wastes the one grammar point.\n- **Show the word in its context when the context is the point.** A vocab\n entry with `show_sentence: true` renders its anchor sentence (live\n transcript text, the word marked) under the row - use it when the user asks\n for words \"in their sentences\", for idioms/collocations where the\n surrounding words carry the meaning, or in a vocabulary-led lesson; skip it\n when a long glossary would drown the page. It requires `position`.\n- **Dialogue `note` is for the author's aside, never for content.** One short\n line under a dialogue line (register, usage, a cross-reference to the\n grammar point). It is your voice, not the transcript's - never put quoted\n or translated sentence content in it (that is what `text`/`translation`\n are for), and use it sparingly: a note on every line reads as clutter.\n\n## The scaffold and the archetype menu\n\n**Scaffold (default skeleton, in order):** Listen -> Text -> Vocabulary ->\nGrammar -> Exercises -> Review. Use `section` blocks to head each stage; the\nrenderer numbers them. This ordering (recognition before reading, one grammar\npoint, graded practice, can-do close) is the pedagogy and holds for every\nlesson.\n\n**Archetype menu (the variety).** The Exercises stage - and the Listen and\nText stages' interactive bits - are NOT a fixed list. Pick **2-3 archetypes**\nper lesson, keyed to the grammar point, the level, and what the episode's\naudio actually affords, so consecutive lessons on the same episode don't feel\nidentical. The archetypes (recipes for the starred ones are below):\n\n| Archetype | Block(s) | Best for |\n|---|---|---|\n| Gist MCQ (no audio) | `exercise_mcq` | opening recognition, every lesson |\n| T/F comprehension * | `exercise_mcq`, 2 options | after the listen, low/mid levels |\n| Listening-detail MCQ | `exercise_mcq` + `audio` + `position` | any level, checks a specific line |\n| Minimal-pair MCQ * | `exercise_mcq` + `audio` | morphology, separable prefixes, case, tense |\n| Back-chain ladder * | 3-4 `audio_slice` | one hard/long sentence; prosody; word order |\n| Assimil passive wave * | `prose` + `dialogue` | the Text stage, every level |\n| Anticipation round * | `prose` + `audio_slice` pairs | cued recall, mid/high levels |\n| Grammar gap-fill | `exercise_gap_fill` | the grammar point itself, every lesson |\n| Vocabulary gap-fill | `exercise_gap_fill` + `wordbank` | vocabulary consolidation, low/mid |\n| Match words -> meanings | `exercise_match` | vocabulary, low/mid levels |\n| Sentence reorder * | `exercise_order` | word order / clause structure, every level |\n| Dictation * | `exercise_dictation` | native-audio dictation, listening precision |\n| Shadowing * | `exercise_shadow` | pronunciation & prosody, the differentiator |\n| Production | `exercise_production` | active use, mid/high levels |\n\n**Which archetypes for which lesson** (grammar-point type x level -> pick from):\n\n| Grammar point | A1-A2 | B1-B2 | C1+ |\n|---|---|---|---|\n| Verb morphology (Perfekt, tense) | minimal-pair MCQ, grammar gap-fill | back-chain ladder, grammar gap-fill | anticipation round, production |\n| Word order / clause structure | sentence reorder, T/F comprehension | sentence reorder, back-chain ladder | anticipation round, production |\n| Cases & endings | minimal-pair MCQ, match | grammar gap-fill, minimal-pair MCQ | production, anticipation round |\n| Separable / prefix verbs | minimal-pair MCQ, listening-detail MCQ | minimal-pair MCQ, grammar gap-fill | anticipation round, production |\n| Connectors / subordination | T/F comprehension, vocabulary gap-fill | grammar gap-fill, production | production, anticipation round |\n| Vocabulary field / functional | match, vocabulary gap-fill | listening-detail MCQ, production | anticipation round, production |\n\nAlways keep one grammar gap-fill (or minimal-pair MCQ) that drills the actual\ngrammar point, plus one vocabulary archetype; the third slot is where you\nvary. Distractors in any MCQ or word bank come from the user's own\nvocabulary, same part of speech, so wrong answers are plausible.\n\n## Recipes\n\n### Back-chain ladder (FSI backward build-up)\n\nFor the slice's hardest sentence - the longest, or the one carrying the\ngrammar pattern - build 3-4 `audio_slice` blocks that all END at the same\npoint and grow leftward, shortest first, so the learner chorus-repeats the\ntail then extends it: \"…gemacht.\" -> \"…heute gemacht.\" -> the whole sentence.\n\nComputing the windows from the sentence's transcript `start` S and `end` E\n(there are no per-word times, so estimate):\n\n- per-word duration `d = (E - S) / word_count`;\n- slice covering the last `w` words: `start = E - w*d`, `end = E`;\n- use growing `w` (e.g. last 2 words -> last 5 -> full sentence at `start=S`);\n- the END anchor `E` is exact; the estimated starts can land mid-word, so\n subtract ~0.3 s from each computed `start` (floor at S) to avoid clipping\n the first syllable.\n\nLabel each block with the words it contains, e.g. `\"Just the ending:\ngemacht.\"` then `\"…heute gemacht.\"` then the full sentence. The schema needs\n`end > start` and `start >= 0`, and every window must sit inside the source\nslice.\n\n### Assimil passive wave\n\nBefore the `dialogue` block in the Text stage, put an instruction `prose`\nthat runs the passive wave: listen once without reading, then read while\nlistening, then reveal translations line by line. The dialogue block already\nblur-reveals each line's translation, so the instruction is what makes it a\ntechnique rather than a wall of text. Example prose:\n\n> \"Listen to the scene once with the audio above, without reading. Play it\n> again and read along. Then tap each line to reveal its translation and\n> check you understood.\"\n\n### Anticipation round (Pimsleur-style)\n\nCued recall in pairs. For 3-5 target phrases from the slice, emit a `prose`\n(the L1 prompt + a one-line hint on how to say it) immediately followed by an\n`audio_slice` that plays the phrase from the real audio as the answer.\nInstruct the learner to cover the answer, say the German aloud, THEN play to\ncheck. Keep the answer slice's `label` NEUTRAL (\"Play the answer\") - printing\nthe German would spoil the anticipation. Build the answer window from the\ntarget sentence's `start`/`end` (a back-chain-style tail slice works if you\nwant just the phrase). Order the pairs from easiest to hardest.\n\n### Minimal-pair / discrimination MCQ\n\nAn `exercise_mcq` with a tight `audio` window over the contrasting word or\nphrase, and options that differ in exactly ONE morpheme - perfect for German\nseparable prefixes (`steht auf` vs `versteht`), case endings (`dem` vs\n`den`), or tense/participle (`gefahren` vs `fahren`). `correct` indexes the\nform actually spoken; the distractors are real minimal variants, not\nnonsense. Add `position` so the row deep-links to the sentence.\n\n### T/F comprehension\n\nAn `exercise_mcq` with exactly TWO options - `[\"Richtig\", \"Falsch\"]` (or the\nlearner's language at A1/A2) - and a `prompt` that states something about the\npassage. Place 2-3 of them after the Listen section. Add `audio` + `position`\nto make it a listening check rather than a reading one.\n\n### Sentence reorder (Satzbau)\n\nAn `exercise_order` with 1-5 `items`, each a sentence broken into `segments`\n(3-12 chunks) IN CORRECT ORDER - the renderer scrambles them; the learner\nreassembles. This is the right tool whenever the grammar point is word order\nor clause structure (verb-second, verb-final in subordinate clauses,\nseparable-prefix placement): it supersedes an ad-hoc gap-fill where a real\nscramble fits. Anchor each item to its sentence with `position` and the server\nchecks the segments reassemble the stored sentence (whitespace-insensitive),\nrejecting a drifted scramble with `order_mismatch`; so quote the real chunks,\ndo not paraphrase. Split at meaningful units (a chunk can be a word or a short\nphrase like \"am Wochenende\"), and add `translation` so the learner has the\nmeaning to aim for.\n\n### Dictation (Diktat)\n\nAn `exercise_dictation` with 1-5 `items`, each anchoring a stored sentence by\n`position` (REQUIRED). The app plays that sentence's native audio and diffs the\nlearner's typing against the LIVE transcript word by word - nothing is copied\ninto the document, so the answer stays truthful as the transcript is edited.\nPick 2-4 SHORT, clearly-articulated sentences (dictation of a long or mumbled\nline just frustrates); optionally set a wider `audio` window to include a beat\nof lead-in, keeping it COVERING the sentence. Add `translation` for the meaning.\n\n### Shadowing (the differentiator)\n\nAn `exercise_shadow` with 1-8 `items`, each a stored sentence by `position`\n(REQUIRED) - the app plays the native line, records the learner, and replays\ntheir take (in-memory only, no upload, no score - self-assessed). This is the\nproduct's core practice move inline in a lesson; use it to make a lesson end in\nreal speaking. Pick 3-8 of the dialogue's best lines - the ones worth being\nable to say fluently - in the order they occur. Add `translation` per line.\n\n## The lesson.v1 document (quick reference)\n\nTop level: `{format:\"lesson.v1\", title, subtitle?, language,\ntranslation_language, level?, source:{submission_id, from_time?, to_time?,\nepisode_title?}, generator?:{skill, version?}, objectives?[<=5],\nestimated_minutes?, blocks[<=40]}`.\n\nBlocks (`type` field): `section {title, subtitle?}` · `prose {text,\nstyle:\"instruction\"|\"body\"}` · `audio_slice {audio:{start,end}, label?}` ·\n`dialogue {lines:[{position, speaker?, text, translation?,\nhighlights?:[[start,end],...], note?}]}` (`note` is a short authorial aside\nrendered under the line - register, usage, \"this is the idiom from the\ntitle\"; the author's voice, so it is NOT congruence-checked) · `vocab\n{entries:[{lemma, pos?, display?, forms?, meaning, cefr?, position?,\nshow_sentence?}]}` (`show_sentence: true` renders the anchor sentence LIVE\nfrom the transcript under the row, the word marked - requires `position`) ·\n`grammar_box {title, explanation,\nevidence:[{position?, text, note}], merke?, achtung?}` · `exercise_mcq\n{title?, instruction?, prompt?, audio?, position?, options[2..5],\ncorrect:0-based index}` · `exercise_gap_fill {title?, instruction?, wordbank?,\nitems:[{position?, text, answers:[[alternatives],...], translation?}]}`\n(gaps are `{{1}}`, `{{2}}`, ... in `text`; `answers[n-1]` lists accepted\nalternatives for gap n) · `exercise_match {title?, instruction?,\npairs:[{left,right}][2..8]}` · `exercise_order {title?, instruction?,\nitems:[{position?, segments[3..12] in correct order, translation?}][1..5]}`\n(segments must reassemble the anchored sentence) · `exercise_dictation\n{title?, instruction?, items:[{position (REQUIRED), audio?:{start,end},\ntranslation?}][1..5]}` · `exercise_shadow {title?, instruction?,\nitems:[{position (REQUIRED), translation?}][1..8]}` · `exercise_production\n{title?, instruction?, prompt, model_answer}` · `review {can_do?[<=5],\nnew_lemmas?[<=12]}`.\n\n`position?` in the reference is the SCHEMA shape (optional); the Anchoring\nsection is where authoring policy makes some of these anchors mandatory.\n\n**Text formatting.** `prose.text` and `grammar_box.explanation` render a\nmini-Markdown subset in the app: `**bold**`, `*italic*`, backtick code,\n`- `/`* ` bullet lines, and blank-line paragraph breaks. Exercise\n`instruction` fields, `grammar_box.merke`/`achtung` and dialogue line\n`note`s render the inline marks only (no bullets or paragraphs). Every\nother text field (titles, prompts, options, vocab meanings, dialogue\nlines) is plain text. Headings,\nlinks, tables, images and raw HTML are never rendered anywhere - they show\nas literal characters, so don't emit them.\n\nCaps: 40 blocks, 30 dialogue lines, 20 vocab entries, 5 MCQ options, 10\ngap-fill items, 8 match pairs, 5 order items (3-12 segments each), 5 dictation\nitems, 8 shadow items, 8 highlight spans per line, 1 MB serialized.\n\nThe server is the validator of record (strict: unknown fields and block\ntypes are rejected). Audio is `[start,end)` seconds into the ORIGINAL\nepisode audio - never generate, clip or embed audio files.\n\n## Hard rules\n\n- **Ground, do not invent.** Every dialogue line quotes the transcript\n verbatim by `position`; meanings, genders and CEFR come from\n `lookup_word`/`get_vocabulary`. The server enforces the quoting.\n- **Anchor everything (see Anchoring above).** Vocab entries carry\n `position`; listening MCQs carry `audio`; gap-fill items carry `position`\n and `translation`; grammar-pattern dialogue lines carry `highlights`. An\n unanchored lesson renders flat and is a bug.\n- **LingoChunk is the system of record for word knowledge.** Do not drill a\n `known` word unless it is also `due`. Never write review grades back.\n- **One grammar point per lesson.** Depth beats coverage; a second point is\n a second lesson.\n- **Vary the archetypes.** Pick 2-3 from the menu keyed to the grammar point\n and level; do not emit the same fixed exercise list every time.\n- **Respect the source.** Only use content the tools return; put the\n episode title in `source.episode_title`.\n- **No audio handling.** The app plays ranges of the original audio;\n `get_audio_clip` is NOT part of this workflow. `audio_slice` windows are\n built from transcript sentence `start`/`end` times.",
18
18
  },
19
19
  "course": {
20
20
  topic: "course",
@@ -46,5 +46,11 @@ export const GUIDES = {
46
46
  description: "Talk through a LingoChunk episode with the learner. Fetch a slice of a real episode's transcript, discuss it in the target and native language, explain grammar and vocabulary as they come up, and look words up on demand grounded in the user's own data. Use when the user wants to discuss, talk about, go through, or be quizzed casually on one of their LingoChunk episodes, rather than generating a formal lesson artefact.",
47
47
  body: "# Discuss an episode\n\nA lightweight companion to `lingochunk-lesson`. Where that skill produces a\nself-contained HTML file, this one is a conversation: sit with the learner and\nwork through a real episode from their LingoChunk library, using the tools to\nstay grounded in their own content instead of inventing material.\n\nUses the `lingochunk` MCP tools. If they are not available, tell the user to add\nthe LingoChunk MCP server (see the plugin README) and stop.\n\n## When to use\n\n- \"Let's discuss the second half of yesterday's episode.\"\n- \"Talk me through this German dialogue.\"\n- \"Go through episode X with me and explain the tricky bits.\"\n\n## Workflow\n\n1. **Find the episode.** If the user named it, resolve with `list_library`\n (match on title). Confirm which part they want (a sentence range or a time\n window), so you fetch a slice, not a 45-minute transcript.\n\n2. **Fetch the slice.** `get_transcript(submission_id, from_sentence/to_sentence\n or from_time/to_time)`. Check `transcript_state`: only `ready` has content.\n\n3. **Work through it.** Go sentence by sentence (or in small groups):\n - Show the target-language sentence and its translation.\n - Explain the grammar and any idioms in plain language.\n - When a word matters, call `lookup_word` for its meaning, gender and CEFR,\n and mention whether the user is already learning it (from `get_vocabulary`)\n rather than guessing. Prioritise `learning`/`new` words; do not dwell on\n words `get_vocabulary(status=known)` shows they have mastered.\n - Offer to play a bit: `get_audio_url` streams the passage (always\n available). On a local/plugin setup only, `get_audio_clip` can save a\n short snippet to disk - skip it if the tool is not offered (remote\n clients do not have it).\n\n4. **Follow the learner.** Answer their questions, look up more words on demand,\n pull related examples with `search_examples(lemma=...)` when they ask \"where\n else does this word come up\". Keep it conversational.\n\n## Rules\n\n- **Ground, do not invent.** Sentences and timestamps come from `get_transcript`;\n word facts from `lookup_word` / `get_vocabulary`. Do not make up example\n sentences - use `search_examples` for real ones from the user's library.\n- **Do not write anything back.** This is a read-only conversation; there is no\n tool to record progress, and grades are not written to the user's FSRS state.\n- **Respect the scope.** Only discuss content the tools return (the user's own\n submissions and followed collections).\n\nFor a durable artefact (a worksheet or quiz file) instead of a conversation, use\nthe `lingochunk-lesson` skill.",
48
48
  },
49
+ "skill-author": {
50
+ topic: "skill-author",
51
+ promptName: "lingochunk-skill-author",
52
+ description: "Turn a lesson the user has already refined (usually through the app's co-edit loop) into a reusable SKILL - a portable markdown playbook that recreates that lesson's format from any episode, kept private or contributed to the lingochunk-mcp repo. Use when the user asks to \"make a skill from this lesson\", \"save this format as a template\", \"replicate this lesson for other episodes\", or wants to share their lesson format with students or other creators.",
53
+ body: "# LingoChunk skill author (the meta-skill)\n\nTurn one finished lesson into a repeatable FORMAT. The user has typically\nrefined a lesson by trial - co-edit rounds until the structure is exactly\nright - and now wants \"this shape again, for any episode\". That shape is a\nskill: a markdown playbook that any MCP-capable agent (claude.ai, Claude\nCode, ChatGPT dev mode, ...) can follow to rebuild the format from fresh\nepisode content. A skill is ONLY text - the capability lives in the\nLingoChunk MCP tools, which are identical on every client, and the server\nstays the validator of record - so a skill travels without trust machinery:\na bad one produces validation errors, not bad lessons.\n\nThis skill uses the `lingochunk` MCP tools. If they are not available, tell\nthe user to add the LingoChunk MCP server (see the plugin README) and stop.\n\n## When to use\n\n- \"Make a skill out of this lesson so we can do the same for next week's\n episode.\"\n- \"Save this lesson format as a template.\"\n- \"I want my students' agents to be able to build lessons in this format.\"\n- \"Turn the way we structured this into something reusable.\"\n\nNot for building a lesson (that is `lingochunk-lesson` or a skill you\nalready made), and not for one-off edits to an existing lesson\n(`update_lesson` directly).\n\n## Options to settle first (ask only what the user left open)\n\n1. **Source lesson**: which saved lesson embodies the format\n (`list_lessons` if they don't say; usually the one just co-edited).\n2. **How strict a clone**: exact format (same spine, same exercise types,\n same counts) or a genre (the spine and voice fixed, the exercise mix\n allowed to vary by episode/level - say which parts flex).\n3. **Where it lives**: private (the user keeps the markdown; default) or\n contributed to the public `lingochunk-mcp` repo for everyone. Never\n assume publication.\n\n## Workflow\n\n1. **Fetch and read the lesson.** `get_lesson` -> `document`. Extract the\n format signature:\n - the spine: the `section` sequence and what sits under each;\n - the exercise mix: which blocks, how many items, where anchors and\n `audio` windows are used;\n - the voice: instruction style and language, `prose` tone, dialogue\n `note` habits, `show_sentence` usage, highlight policy, review-block\n shape;\n - the policies implied: level pitch, which FSRS states get drilled,\n glossary size.\n\n2. **Separate structure from content.** This is the whole craft. The skill\n KEEPS structure and voice; every piece of episode content becomes an\n INSTRUCTION to fetch fresh content:\n - sentences/quotes -> \"pick N sentences that <criterion> from\n `get_transcript` and quote them verbatim by `position`\";\n - glossary entries -> \"take M `learning`/`new` words from\n `get_vocabulary`, ground with `lookup_word`\";\n - audio windows -> \"build from the chosen sentences' `start`/`end`\";\n - titles/objectives -> \"derive from the slice's topic\".\n NEVER copy episode content (sentences, words, times, titles) into the\n skill: against any other episode it is fabrication, and the server will\n reject the misquotes. If a phrase is part of the format's voice (a\n recurring instruction line, a section subtitle pattern), keep it; if it\n came from the episode, generalise it.\n\n3. **Draft the SKILL.md.** One self-contained markdown document:\n - YAML frontmatter: `name` (see naming below) and a one-line\n `description` that says what it builds and the trigger phrases;\n - body in the house shape: one purpose paragraph, \"When to use\",\n \"Options to settle first\", a numbered \"Workflow\" (pull slice -> gather\n vocabulary -> compose the spine, spelled out block by block ->\n `validate_lesson` -> `save_lesson` stamping\n `generator: {skill: \"<name>\"}` -> deliver `app_url`), \"Hard rules\";\n - inherit the platform hard rules verbatim: ground every quote by\n `position`, meanings from the tools, never drill `known` unless\n `due`, no external services, no audio handling, block vocabulary is\n closed;\n - pull the `lesson` guide (`get_authoring_guide` topic `lesson`) while\n drafting and copy in the block shapes and caps your format uses - the\n drafted skill should stand alone without this meta-skill.\n\n4. **Round-trip check (do not skip).** Follow your drafted skill against\n the ORIGIN episode as if you had never seen the lesson: derive the\n document it produces and `validate_lesson` it. Then compare with the\n original: same spine, same block types in the same places, anchors and\n windows present? If you cannot reproduce the origin from the draft, the\n instructions are too vague - name counts and criteria, not vibes\n (\"3-5 sentences carrying the grammar pattern\", not \"some sentences\").\n Fix and re-check.\n\n5. **Deliver.** Output the complete SKILL.md as one copyable markdown\n block, then tell the user how to keep and reuse it (below). If they\n chose publication, walk them through the contribution path instead.\n\n## Keeping a private skill (any MCP client)\n\nThe skill is portable text; where to put it so the agent finds it again:\n\n- **claude.ai**: a Project - paste the skill into the project instructions\n (or add the file to project knowledge) and build lessons in that project.\n- **Claude Code**: save as `~/.claude/skills/<name>/SKILL.md` (or\n `.claude/skills/<name>/SKILL.md` in a repo) - it becomes a first-class\n skill.\n- **ChatGPT**: custom GPT instructions, or a saved prompt.\n- **Anything else**: paste the skill at the start of the conversation.\n\nRe-running it later needs no special machinery: the user asks in the\nskill's trigger words, the agent follows the playbook against a new\nepisode. Lessons already saved never change when the skill changes.\n\n## Publishing to the lingochunk-mcp repo\n\nIf the user wants the format available to everyone (every plugin install,\nevery remote-MCP client), it goes into the public repo as a normal skill\nPR - maintainer review is the trust gate. Requirements (details:\n`CONTRIBUTING.md` in the repo):\n\n- directory `skills/lingochunk-<name>/` with the SKILL.md (frontmatter\n `name` matching);\n- at least one `examples/<name>.lesson.json` - a representative output\n with a fictional `submission_id` (CI validates it against the spec);\n- evidence of a live run (an `app_url` or screenshot) in the PR.\n\nOffer to prepare all three from the origin lesson (its own document,\nepisode identifiers swapped for fictional ones, makes a good example).\n\n## Naming and stamping\n\n- The `lingochunk-` name prefix is RESERVED for skills merged into the\n repo. Name a private skill after the user or the format:\n `daves-family-phrases`, `weekly-shadowing-drill`.\n- The drafted skill must stamp its documents:\n `generator: {skill: \"<name>\", version: \"1.0\"}` - lowercase slug, it is\n display provenance only. Bump the version when the user revises the\n format, so lessons record which iteration built them.\n\n## Hard rules\n\n- **Instructions, not content.** The drafted skill carries no episode\n sentences, words, times or titles - only rules for fetching them fresh.\n- **Inherit the platform rules.** The drafted skill must state them:\n verbatim quoting by `position`, meanings from the tools, FSRS\n system-of-record, no external services, no audio handling, no markup\n smuggling. A skill that omits them produces agents that break lessons.\n- **Stay inside the block vocabulary.** If the format needs something no\n block can express, say so plainly and suggest opening an issue on the\n repo - never instruct workarounds against server validation.\n- **Text only.** A skill never ships code, tool definitions, or anything\n executable; if it seems to need them, it is not a skill.\n- **Private by default.** Publication (a PR) only on the user's explicit\n choice.",
54
+ },
49
55
  };
50
56
  //# sourceMappingURL=guides.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"guides.js","sourceRoot":"","sources":["../../src/generated/guides.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,qEAAqE;AACrE,wEAAwE;AACxE,mDAAmD;AAenD,MAAM,CAAC,MAAM,YAAY,GAA0B,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,CAAU,CAAC;AAEhJ,MAAM,CAAC,MAAM,MAAM,GAA8B;IAC/C,UAAU,EAAE;QACV,KAAK,EAAE,UAAU;QACjB,UAAU,EAAE,qBAAqB;QACjC,WAAW,EAAE,oSAAoS;QACjT,IAAI,EAAE,gvIAAgvI;KACvvI;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE,mBAAmB;QAC/B,WAAW,EAAE,ovBAAovB;QACjwB,IAAI,EAAE,q4pBAAq4pB;KAC54pB;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE,mBAAmB;QAC/B,WAAW,EAAE,8YAA8Y;QAC3Z,IAAI,EAAE,41KAA41K;KACn2K;IACD,OAAO,EAAE;QACP,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,kBAAkB;QAC9B,WAAW,EAAE,kfAAkf;QAC/f,IAAI,EAAE,srJAAsrJ;KAC7rJ;IACD,aAAa,EAAE;QACb,KAAK,EAAE,aAAa;QACpB,UAAU,EAAE,qBAAqB;QACjC,WAAW,EAAE,8dAA8d;QAC3e,IAAI,EAAE,isQAAisQ;KACxsQ;IACD,cAAc,EAAE;QACd,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,yBAAyB;QACrC,WAAW,EAAE,0jBAA0jB;QACvkB,IAAI,EAAE,inWAAinW;KACxnW;IACD,SAAS,EAAE;QACT,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,oBAAoB;QAChC,WAAW,EAAE,uaAAua;QACpb,IAAI,EAAE,moFAAmoF;KAC1oF;CACF,CAAC"}
1
+ {"version":3,"file":"guides.js","sourceRoot":"","sources":["../../src/generated/guides.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,qEAAqE;AACrE,wEAAwE;AACxE,mDAAmD;AAenD,MAAM,CAAC,MAAM,YAAY,GAA0B,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,CAAU,CAAC;AAEhK,MAAM,CAAC,MAAM,MAAM,GAA8B;IAC/C,UAAU,EAAE;QACV,KAAK,EAAE,UAAU;QACjB,UAAU,EAAE,qBAAqB;QACjC,WAAW,EAAE,oSAAoS;QACjT,IAAI,EAAE,gvIAAgvI;KACvvI;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE,mBAAmB;QAC/B,WAAW,EAAE,ovBAAovB;QACjwB,IAAI,EAAE,0hsBAA0hsB;KACjisB;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE,mBAAmB;QAC/B,WAAW,EAAE,8YAA8Y;QAC3Z,IAAI,EAAE,41KAA41K;KACn2K;IACD,OAAO,EAAE;QACP,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,kBAAkB;QAC9B,WAAW,EAAE,kfAAkf;QAC/f,IAAI,EAAE,srJAAsrJ;KAC7rJ;IACD,aAAa,EAAE;QACb,KAAK,EAAE,aAAa;QACpB,UAAU,EAAE,qBAAqB;QACjC,WAAW,EAAE,8dAA8d;QAC3e,IAAI,EAAE,isQAAisQ;KACxsQ;IACD,cAAc,EAAE;QACd,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,yBAAyB;QACrC,WAAW,EAAE,0jBAA0jB;QACvkB,IAAI,EAAE,inWAAinW;KACxnW;IACD,SAAS,EAAE;QACT,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,oBAAoB;QAChC,WAAW,EAAE,uaAAua;QACpb,IAAI,EAAE,moFAAmoF;KAC1oF;IACD,cAAc,EAAE;QACd,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,yBAAyB;QACrC,WAAW,EAAE,8cAA8c;QAC3d,IAAI,EAAE,sxPAAsxP;KAC7xP;CACF,CAAC"}
package/dist/tools.js CHANGED
@@ -442,8 +442,10 @@ export function registerTools(server, client, config, mode = "local") {
442
442
  "multi-lesson course ('course', before create_course), flashcards " +
443
443
  "('cards', before add_card), creator notes ('annotations', before " +
444
444
  "create_annotation), a translation / added language ('add-language', " +
445
- "before add_language or the draft flow), or a guided discussion " +
446
- "('discuss'). Topic 'overview' is the what-can-I-do tour (same " +
445
+ "before add_language or the draft flow), a guided discussion " +
446
+ "('discuss'), or a reusable skill generalised from a finished " +
447
+ "lesson ('skill-author', when the user wants to save or share a " +
448
+ "lesson FORMAT). Topic 'overview' is the what-can-I-do tour (same " +
447
449
  "content as whats_possible). Returns the guide markdown: anchoring " +
448
450
  "rules, the block/kind menu, and worked recipes. Read-only; needs " +
449
451
  "no scope.",
@@ -454,7 +456,8 @@ export function registerTools(server, client, config, mode = "local") {
454
456
  "(a multi-lesson series), 'cards' (card.v1 flashcards), " +
455
457
  "'annotations' (creator notes), 'add-language' (translations / " +
456
458
  "leveled same-language decks), 'discuss' (guided episode " +
457
- "discussion) or 'overview' (the what-can-I-do tour)."),
459
+ "discussion), 'skill-author' (turn a finished lesson into a " +
460
+ "reusable skill) or 'overview' (the what-can-I-do tour)."),
458
461
  },
459
462
  }, ({ topic }) => Promise.resolve({
460
463
  content: [{ type: "text", text: GUIDES[topic].body }],
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lingochunk/mcp",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "description": "Model Context Protocol server for the LingoChunk public API: your FSRS-graded vocabulary, native-audio transcripts and clips, and library, as tools for a coding agent.",
5
5
  "license": "MIT",
6
6
  "private": false,