{"id":74172,"plugin_id":"plugin_asdk_app_6aced5c309688191abba864964c7b839","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-31T06:10:42.650Z","digest":"469cb47b9d8cc62efc17633c1630ea7097e5850fa762d710d3a134e0faa98075","against":null,"payload":{"description":"Start a short Contexta read-aloud or free-speaking audio practice, including a saved phrase, and show measured speech feedback. Use for explicit pronunciation/speaking practice; text answers and voice-dictated chat alone are not audio assessment.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":324},{"relative_path":"assets/icon-large.png","size_in_bytes":14645},{"relative_path":"assets/icon-small.png","size_in_bytes":991}],"name":"pronunciation-practice","skill_md_contents":"---\nname: pronunciation-practice\ndescription: Start a short Contexta read-aloud or free-speaking audio practice, including a saved phrase, and show measured speech feedback. Use for explicit pronunciation/speaking practice; text answers and voice-dictated chat alone are not audio assessment.\n---\n\n# Short pronunciation practice\n\nKeep the reply focused on the learner’s result and next action. Do not show phrase, task, operation or request IDs, raw status fields, or tool/rendering diagnostics. Use titles and returned website links. Do not announce that a native widget was rendered or reopened; the widget already presents the result.\n\nNative Contexta UI is required when available: use the actual task widget returned by the start/resume tool as specified in the shared workflow. Text does not replace the recorder; a blocked host uses the honest website fallback.\n\nGive the learner one bounded speaking task and real feedback. Read and apply [the shared workflow](../../references/workflow.md) before replying or calling the service.\n\n## Reply at each stage\n\nFor a prepared or resumed recording, the complete chat reply is one short action sentence, for example: “Press **Record answer**, say ‘the intended benefit’, then **Submit** to get feedback.” Substitute only the actual returned phrase or task instruction. The recording component already carries the task, status and controls; do not append a receipt, identifier, status list or a sentence about opening the component.\n\nFor processing, say only that the submitted recording is being assessed. For saved feedback, give one useful suggestion supported by that assessment; its scores are already in the component. For a retry, point to one actual correction and the recording action. Use a returned website link when the recorder is unavailable, with the real limitation.\n\n\nChoose only the requested mode:\n\n- Practise phrase: `mode=\"reading\", practice_target=\"phrase\"`; the exact saved expression, assessed with sound and letter colors.\n- Read aloud: `mode=\"reading\"`; a short exact reference sentence or saved context.\n- Speak in your own words: `mode=\"speaking\"`; a brief spoken response to the actual returned situation.\n\nFor a saved phrase, use its actual `word_id` with `start_phrase_practice`. For context reading pass `practice_target=\"context\"` (the compatible default). If the learner names an unidentified phrase, retrieve a card with `get_phrase_review_card(phrase_text=...)`. Never search today/due/random cards for a named expression, guess IDs, silently save it, or substitute another phrase. Explain a missing result and let the learner choose the next step. Resume a matching returned `ready_practice_tasks` ID using `show_practice_widget` rather than creating another task. For a general short sample use `start_quick_exercise`. Reuse stable idempotency keys after an uncertain start. `show_practice_widget` can prepare the minimal connector when the learner asks to open Contexta but has not chosen a task. If unused practice has expired, retrieve a fresh phrase card or sample; do not submit audio into the expired task.\n\nPresent the actual returned task and its reference audio when available. A request to practice does not authorize a recording upload before the learner explicitly records and submits it. The widget requests microphone permission only on a click and keeps recordings local until Submit. If the host blocks recording, offer the actual website link to record there; do not offer an audio-file picker; do not claim an in-chat microphone works because an API is present.\n\nAccepted audio is limited to 60 seconds and 512 KiB. The server validates encoding and duration. Do not convert a typed answer or voice-dictated chat transcript into invented audio, phoneme scores or a saved assessment.\n\nAfter explicit submission use the owned task and `submit_exercise` audio parameters, then bounded `get_exercise_feedback` polling. Processing means the recording was accepted, not that assessment has finished. On failure show the actual safe error/recovery option; do not generate a substitute score. Reuse the same task/submission identity when the outcome is uncertain.\n\nExplain available actual scores, colored assessed words and specific corrections. Recognition-uncertain and missing-score words remain neutral/unscored, never zero. Keep genuine zero scores distinct. Use the actual pronunciation evidence and supplied wording suggestions; do not invent an overall metric, CEFR level, certified ability or an improvement trend from one attempt.\n\nOn requested retry use `retry_exercise` with the original task and a stable key. Briefly point to one useful change grounded in the returned feedback. Full website sessions, listening/comprehension quizzes and long writing are not reproduced in this widget.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}