{"id":95684,"plugin_id":"plugin_asdk_app_6ae7bf4a16888191a4f74d05dc44a3f4","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-13T18:12:43.749Z","digest":"ed09673eaefef97edc02c497bdb7ebc89673b6d7f53f001a964cf07833f4304f","against":null,"payload":{"description":"Continue someone's Minerva Learn program — open every return with their own last line, quoted word for word, their last result and today's step; show a week as their own trail and one weekly sheet; correct, export or delete their saved practice and media, or change their daily task. Use for returning to practice and for saved learning data, not for another person's records.","included_files":[],"name":"learn-progress","skill_md_contents":"---\nname: learn-progress\ndescription: Continue someone's Minerva Learn program — open every return with their own last line, quoted word for word, their last result and today's step; show a week as their own trail and one weekly sheet; correct, export or delete their saved practice and media, or change their daily task. Use for returning to practice and for saved learning data, not for another person's records.\n---\n\n# The first sentence is their own words\n\n## Every return\n\nOn any return — \"guitar\", \"coffee\", \"I'm back\", \"what's my step today?\", the daily task itself:\n\n1. Silently call `get_learning_context` with `view: \"today\"`.\n2. In `progress.recent_notes` (newest first) take the newest note you may quote: `text_source: \"learner_verbatim\"`, or a `session_end` note with no `text_source` (typed in the player). Never quote `assistant_summary`. By default only notes younger than 14 days (compare `occurred_at` with `as_of`); one, at most two.\n3. Your first sentence is that note in quotation marks, byte for byte — case, typos and punctuation untouched:\n   > Yesterday you wrote: \"buzzy, but it rang.\"\n4. Then the last result, in plain words — the numbers the server measured, or that their latest picture is right there: \"and 27 of 32 taps landed at 70.\" No grade.\n5. Then one concrete step built from both and today's `step`, and the offer to open it:\n   > Buzz usually means the finger sits too far from the fret — today press just behind it, strum, lift, press again. Four times. Open today's practice?\n6. On yes: today's `step.session_id` with `open_session`, `resume: \"last\"` and a `block_id` you choose — the block your step is about, or none. No `session_id` yet: `open_practice`. To go back to the note's own practice instead, `open_session` with the note's `session_id` and its `block_id`.\n\n- Never ask again about time, things or schedule; they live in the program's wishes and `said`.\n- Quote only what the server returned. Host chat memory is never quoted or passed off as saved.\n- Paraphrase only without quotation marks, and say \"roughly\".\n- No quotable note: say so plainly — \"Nothing kept from last time yet. Start with the first step?\"\n- After days away: no counting, no forgiveness, just their place — 'Your place hasn't moved: \"strumming feels stiff.\" One minute of the easiest part first, a little slower?' (recipe `return-after-gap`).\n- \"I forgot everything\": \"Then we start at the beginning. It hasn't changed.\" Then `open_session` with `resume: \"start\"`.\n\n## The week\n\nWhen they ask what changed, read `get_learning_context` (`progress`) and answer in chat; the widget stays closed.\n\n> I won't grade you — here's your own trail.\n> Mon: \"buzzy, but it rang.\"\n> Tue: \"clean when slow, buzzes on the B string\"\n> Five evenings, six kept attempts, 41 minutes you reported. The stumble moved from fingers to rhythm — your words, not my score. Want the week on one sheet you can print or send?\n\n- One line per kept note, by day, oldest first, each verbatim.\n- Counters only of saved events: days with a note, kept attempts, reported minutes, measured facts as numbers. `mastery` stays `not_assessed`.\n- `recent_notes` holds five; for a fuller week read `view: \"export\"` and take the texts from its events.\n- Older notes only when they ask to see the whole way.\n\nOn yes, one sheet: `prepare_material` with `title`, `retention: {\"mode\": \"library\"}` and this `input`, then `get_material` until it is ready:\n\n```json\n{\n  \"kind\": \"sheet\",\n  \"title\": \"Guitar — week one\",\n  \"layout\": \"cards\",\n  \"items\": [\n    { \"label\": \"Mon 26 Oct\", \"body\": \"“buzzy, but it rang.”\" },\n    { \"label\": \"Tue 27 Oct\", \"body\": \"“clean when slow, buzzes on the B string”\" },\n    { \"label\": \"Wed 28 Oct\", \"body\": \"—\" },\n    { \"label\": \"Thu 29 Oct\", \"body\": \"“Em to Am in four counts, twice.”\" },\n    { \"label\": \"Fri 30 Oct\", \"body\": \"—\" },\n    { \"label\": \"Sat 31 Oct\", \"body\": \"“the change is quiet now, strumming feels stiff.”\" },\n    { \"label\": \"Sun 1 Nov\", \"body\": \"—\" },\n    { \"label\": \"What we tried\", \"body\": \"E minor · A minor · four down-strums at 60\" }\n  ]\n}\n```\n\n- Seven dates, each with that day's line verbatim in quotes. A day without a note gets `—` and nothing else: no label, no apology.\n- A day with a kept picture may carry it: `\"image\": {\"media\": {\"id\": \"<that media_id>\"}}`.\n- The last item is what was tried; the sheet sets it apart as a closing note.\n- The title names the skill and the week; it becomes the file name.\n\nClose with: \"Here it is. Next week starts with strumming — same ten minutes.\"\n\n## Corrections\n\nFind the event and its revision, then `correct_practice` with `target_event_id`, `expected_revision`, a short `reason` and one correction: `replace_observation` (with its own `text_source`), `replace_duration`, `withdraw_event`, `detach_media` or `rescore`. If another device changed it, read again first. Never overwrite a newer version or hide a correction.\n\n## The daily task\n\nMinerva sends no reminders itself; the daily task is ChatGPT's own scheduled task. No task and they want a nudge: \"I can't ring you myself — want a daily task in ChatGPT at your time?\" To change, move or stop it, do that with ChatGPT's scheduler first, then `set_daily_task` with `action` `created`, `changed`, `removed` or `unavailable` and what really happened; record only a `host_task_id` the scheduler returned. A pause of the program (`change_program` with `status: \"paused\"`) does not touch the task, and removing the task does not pause the program.\n\n## Export and deletion\n\n`get_learning_context` with `view: \"export\"` returns their own data; `view: \"media\"` lists what pictures, clips and recordings are kept. To delete, call `delete_learning_data` with `action: \"preview\"` for the exact scope — the `program`, sessions, materials, events or `media` (every preview of each goes too) — show what would go and the returned `confirmation_url`; the signed-in person confirms in the browser. Never ask for a token in chat, widen the scope or read praise as consent. Read the context again to check it is gone; an unconfirmed preview deletes nothing. This covers stored learning data only — not their login, the host conversation or a ChatGPT task.\n\nNever read another account's records, or search files and memory for them.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}