Skill instructions
create-project8.85 KB
View saved version →
---
name: create-project
description: Create an English practice project from selected materials with an approved plan, or discover an explicitly requested full ready-made project. Use for interview, presentation/meeting, or work/study projects; additions use save-material. General Try Contexta requests use standalone Speaking through pronunciation-practice.
---
# Create a Contexta project
Keep 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.
Native Contexta UI is required when available: render the server-held preview and creation receipt as specified in the shared workflow. A formatted chat plan or generated approval button does not replace the widget.
Read and apply [the shared workflow](../../references/workflow.md) before replying or calling the service. Selected materials use an approved server-held plan; an explicitly selected ready-made demo uses the existing template-copy boundary.
Pass `id_format="website"` to project preview, creation, status, starter copying and widget calls; retain the exact returned website IDs and links.
## Distinguish Speaking introduction from project demos
“Try Contexta,” “try the plugin,” “try a short answer” and a demo request without
personal material use the pronunciation-practice skill's standalone Speaking
introduction. Start `start_quick_exercise(mode="speaking", purpose="intro_speaking")`
on that explicit intent. Do not request a résumé, list project templates, preview
a source plan or create a project for this introduction. Opening or describing
the service remains read-only.
For an explicitly requested full ready-made project, discover the actual
`list_demo_practices` catalog with the chosen scenario and level. Only on a
clear project-copy request, copy the actually selected template with
`create_demo_practice` and its stable request identity. Render the owned receipt
using `show_practice_widget(entry="project", operation_id=..., id_format="website")`.
Full project sessions continue on the website and never become the introductory
Speaking exercise.
Existing legacy short demo projects remain owned projects. If the learner
explicitly asks to continue one by title or its website link, resolve that owned
project and open `show_practice_widget(entry="project", project_id=..., id_format="website")`.
Preserve its saved attempts and feedback. Never create a replacement project or
convert a saved project into an independent speech task to repair a link.
## Prepare a useful preview
Use the learner's stated goal and selected source. Ask only for essential missing information; do not reproduce the website onboarding questionnaire.
Choose the matching `preview_practice_plan` scenario:
- `interview_preparation`: resume in `source_text`, vacancy in `supporting_source_text`. For authorized files, identify the actual resume/job file IDs with `resume_file_id` and `job_description_file_id`; do not guess roles.
- `presentations_meetings`: the selected notes, slides or talking points, with the supplied audience and goal.
- `work_study_materials`: articles, documents, research or study notes the learner wants to understand, discuss or answer.
For a new Interview project, use `preserve_source_text=false` by default: adapt the resume and vacancy into useful interview practice while retaining the original sources. Use `preserve_source_text=true` only when the learner explicitly asks not to adapt or to preserve the original wording.
For Presentations & Meetings and Work & Study, use `preserve_source_text=true` by default. Use `preserve_source_text=false` only when the learner explicitly requests AI adaptation. State the chosen mode in the plan preview. Explicit wording preferences override these scenario defaults; do not change the mode silent
Preview of the first 4,000 characters. Read full instructions →
Referenced files: 3 — file references are metadata, not package contents.
phrase-review4.16 KB
View saved version →
---
name: phrase-review
description: Review an owned Contexta Phrase Bank item using today, due/needs-practice, random, or an explicit phrase selection, with truthful context and selection reason. Use for phrase review, not general vocabulary quizzes or automatic reminders.
---
# Review a saved phrase
Keep 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.
Native Contexta UI is required when available: use the card returned by `get_phrase_review_card` as specified in the shared workflow. Text supplements it; do not repeat selection or render the same card twice.
Help the learner revisit their own expressions with useful context. Read and apply [the shared workflow](../../references/workflow.md) before replying or calling the service.
Call `get_phrase_review_card` with:
- `selector="today"` for “What should I review today?” or unspecified review intent. The service uses the account's timezone and keeps today's selection stable; do not inject a host timezone or invent a schedule.
- `selector="due"` for scheduled/needs-practice review.
- `selector="random"` only for an explicit random/surprise request.
- `phrase_text` for a phrase the learner names. Use the exact requested expression; a missing result does not authorize trying today, due, or random cards, saving it, or substituting another phrase.
- An actual returned `word_id` for a specific owned phrase. Never guess an ID. For another due/random item use actual previously seen IDs in bounded `exclude_word_ids`; do not add exclusions to today's stable selection.
Make one random lookup per learner request. Keep its returned `word_id` for subsequent explicit practice or resume; do not select a second phrase to replace, confirm or redisplay the first. A phrase-only request shows its card and does not authorize preparing audio practice. Another random selection requires the learner to explicitly ask for another phrase. Recover uncertain outcomes using an existing returned identity, without silently drawing a substitute.
Show the actual phrase, supplied meaning if available, full saved context and the service's selection reason. Label original, chat and generated context distinctly. A fallback saved item is not necessarily overdue; do not rename a “can practise today” reason into a measured weakness.
The card's primary **Practise phrase** action assesses the expression itself: use `start_phrase_practice` with its real `word_id`, `mode="reading"`, `practice_target="phrase"` and a stable idempotency key. **Read aloud** reads its complete saved context using `practice_target="context"`; **Speak with this phrase** uses `mode="speaking"` for a free answer containing the expression. Never describe these as the same task. If `ready_practice_tasks` supplies the matching owned task, resume it with `show_practice_widget(task_id=...)` instead of starting another. Otherwise let the learner choose; do not submit a fabricated answer. Full practice and detailed bank/history remain on the returned website link.
Automatic Today/Due/Random cards contain actual phrase entries and exclude historical single-word records. Keep the service's exact phrase and canonical saved contexts. A missing or oversized saved context does not authorize inventing a reading passage; offer exact-expression practice or the website instead.
Retrieval, seeing a phrase or listening to its reference is not mastery or productive-use evidence. A read-aloud score is pronunciation evidence; productive use requires the service's actual eligible recognized phrase use. Do not mark learned, advance a review interval, or declare improvement from viewing/retrying a card.
For empty/unavailable/due-empty results, explain the actual state. Offer to save a selected expression or, on
Preview of the first 4,000 characters. Read full instructions →
Referenced files: 3 — file references are metadata, not package contents.
practice-progress4.07 KB
View saved version →
---
name: practice-progress
description: Summarize measured Contexta patterns and owned project progress, or return the next full website session. Use for saved evidence and continuation, not grading chat answers, inventing learning trends, or administering account limits.
---
# Practice progress
Keep 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.
Answer from saved Contexta evidence, with one useful next action. Read and apply [the shared workflow](../../references/workflow.md) before replying or calling the service.
## Open the progress view first
For a progress or next-practice request, use `show_practice_widget(entry="progress", id_format="website")` as the primary read when available. It returns the canonical measured patterns and actual next website action together, with the native Contexta interface. Do not collect summary-tool results first and then build a replacement table, dashboard, card or action button in chat.
For a named project, resolve its owned website reference from this conversation or `list_practice_projects`, clarify genuine ambiguity, then include that `project_id` in the progress-view call. For account-wide progress, omit `project_id`; no project discovery is needed. Pass `id_format="website"` on supported discovery and progress calls so references match website URLs.
The returned component is the complete answer to a progress or next-session request. Do not append a second summary, table, card, project heading, count list, website link or action button for the same result. In particular, do not generate a separate “Start next session” button: the real component already provides “Continue on website”. No additional prose is needed unless there is a relevant warning absent from the component or the learner asked a separate question.
A successful UI call is not proof of visible rendering. If the host fails to display it, explain that limitation and use the fallback below instead of claiming the chat response is the widget. Do not repeat a successful render merely to confirm it.
## Fallback and additional detail
Use `get_pattern_map_summary`, `get_practice_project_summary` and `get_next_practice` when the progress-view tool is unavailable or failed, or when the learner asks for specific detail absent from that view. These are additional reads or a truthful text fallback, not prerequisites for opening progress. Use `response_version=2` for next-practice reads when supported and `id_format="website"` for project/pack references.
Keep account-wide evidence separate from project-scoped evidence. Any text fallback or requested extra detail must preserve actual counts, freshness and limitations supplied by the service. A not-ready or insufficient-data result supports no diagnosis. The progress view adds no aggregate score, assessed-completion count or trend window. Project/material readiness does not imply completed assessment.
For a text fallback or requested extra detail, state the actual ready, preparing, assessment-pending, blocked, unavailable or completed condition. A completed project has no invented next session and must not be called still generating. Link to the exact returned website action only in that fallback; do not execute all four portal exercises in ChatGPT.
Do not claim improvement without comparable repeated measured evidence. Viewing a phrase, a successful save, a single score or a retry alone is not a trend. Do not double-count the same speech attempt and its portal history projection. Conversational language suggestions are separate from saved assessment.
In a text fallback, explain insufficient evidence plainly and suggest one relevant real practice action. The component already presents its own insufficient-evidence messag
Preview of the first 4,000 characters. Read full instructions →
Referenced files: 3 — file references are metadata, not package contents.
pronunciation-practice6.79 KB
View saved version →
---
name: pronunciation-practice
description: Try Contexta with one standalone Speaking answer and real feedback, or start short read-aloud, free-speaking or saved-phrase audio practice. Use for Try the plugin and explicit speaking/pronunciation practice; typed or voice-dictated chat alone is not audio assessment.
---
# Short pronunciation practice
Keep 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.
Native 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.
Give the learner one bounded speaking task and real feedback. Read and apply [the shared workflow](../../references/workflow.md) before replying or calling the service.
## Primary Try Contexta action
For “try Contexta,” “try the plugin,” “try a short answer” or a demo request with
no material, call `start_quick_exercise(mode="speaking", purpose="intro_speaking", idempotency_key=...)`.
This explicit request starts or resumes one saved standalone Speaking exercise.
Its question and Record control appear directly in the returned native widget.
Do not create a project, request a résumé or passage, show a mode picker, or send
the learner through project planning. The service uses the saved profile level
or its disclosed default; never infer proficiency from this chat.
For “continue my Speaking demo,” use
`show_practice_widget(entry="speaking_demo")` to reopen the same ready attempt,
pending analysis or saved feedback. On an expired unused introduction, an
explicit restart uses the same introductory purpose. Never substitute a general
quick sample or lose the previous accepted recording.
Recording requires the learner to choose **Record answer** and then **Get feedback**.
The returned introductory component is the complete learner-facing answer in
ready, processing, feedback and retry states. Do not add recorder steps or a
second question, summary, feedback suggestion or website link below it.
If the host microphone is blocked, use the same-task website recovery to record from the microphone. Audio-file selection is not available. Never record or assess audio automatically.
If the component is unavailable or fails to display, give a concise fallback
with the actual returned question, actual controls and exact returned website
URL for that same standalone exercise; it is not a text/session page or catalog.
For an explicitly named existing project, use the owned project continuation.
An ordinary standalone sample with a specifically chosen mode keeps the normal
`start_quick_exercise` call without the introductory purpose.
## Reply at each stage
The standalone Speaking introduction follows the complete-component rule above; no additional recorder sentence is needed. For other prepared or resumed recordings, any accompanying reply is one short action sentence, for example: “Press **Record answer**, say ‘the intended benefit’, then **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.
For those other exercises, processing text says only that the submitted recording is being assessed. Saved-feedback text gives one useful suggestion supported by that assessment; its scores are already in the component. Retry text points to one actual correction and the recording action. When the component itself is unavailable, use its returned website link with the real limitation.
Choose only the requested mode:
- Practise phrase: `mode="reading", practice_target="phrase"`; the ex
Preview of the first 4,000 characters. Read full instructions →
Referenced files: 3 — file references are metadata, not package contents.
save-material4.13 KB
View saved version →
---
name: save-material
description: Add selected text or authorized files to an existing Contexta project, using an approved plan that generates sessions only for the new material. Use for add/import-to-project requests; creating a new project uses create-project.
---
# Add to a Contexta project
Keep 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.
Native Contexta UI is required when available: render the append-only preview and addition receipt as specified in the shared workflow. A formatted chat plan or generated approval button does not replace the widget.
Use the same material planning flow as the website. Read and apply [the shared workflow](../../references/workflow.md) before replying or calling the service. The skill's technical name remains `save-material` for compatibility; its user-facing action is **Add to Project**.
## Select the source and destination
An explicit request to add selected material authorizes its transfer for planning. Send only that selected text or authorized attachments, never the whole conversation. Preserve pasted whitespace, punctuation, negation and line endings; do not summarize or translate it. For files use real host-provided `files` objects with `download_url` and `file_id`, optionally `mime_type` and `file_name`. Never invent URLs or substitute a summary for an original file. If access is unavailable, offer exact pasted text or website import.
Discover owned projects with `list_practice_projects`; use bounded pagination when needed. Match a named project exactly, resolving genuine ambiguity. If no destination was named, ask the learner to choose an existing project or create a new one with `create-project`. Do not silently create an Inbox or an unrelated project.
Pass `id_format="website"` to project/material discovery, preview, status, creation and widget calls. Keep returned encoded project and pack references unchanged.
Default to new packs within the selected project. Only when an existing pack is explicitly selected, call `list_material_destinations(project_id=...)` and use its actual website-encoded `pack_id`. The pack must belong to this project and be available. Do not guess IDs or create a fallback after a destination error.
## Preview and approve only the addition
Call `preview_practice_plan` with the actual `project_id`, optional selected `pack_id`, exact new `source_text` and/or authorized `files`, a stable `idempotency_key`, and any supplied source title. Do not send old project sources or sessions. The service inherits the existing project's scenario, material level, goal, intensity and text adaptation settings; do not override them in chat.
Poll the returned `operation_id` at the supplied interval within a bounded wait. At `plan_ready`, require `plan.update_mode="append_only"` and the chosen destination before offering approval. Show the actual destination, inherited wording mode, new source count, added session/pack counts and ordered new plan. Existing materials, sessions, answers, audio and results stay unchanged, including unfinished sessions. A selected existing pack receives the new sessions at its end.
Render `show_practice_widget(entry="project", operation_id=...)` when supported. Opening it does not approve the plan. On clear approval, call `create_practice_from_plan(operation_id=...)` with that frozen handle only. Never resend an edited plan or fall back to legacy project-wide replanning. Reuse the operation after uncertain responses; changed material/destination needs a fresh preview.
Report the actual pending/failed/ready result and its exact owned website link. Only `ready` means the first new session is usable. File originals remain private; disclose returned extraction limitations. Do not clai
Preview of the first 4,000 characters. Read full instructions →
Referenced files: 3 — file references are metadata, not package contents.
save-to-phrase-bank3.15 KB
View saved version →
---
name: save-to-phrase-bank
description: Save an explicitly selected English word or expression to Contexta with its original, chat, or labeled generated context. Also use when asked to extract and save a useful expression from a supplied sentence; do not auto-save every unfamiliar word.
---
# Save to Phrase Bank
Keep 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.
Native Contexta UI is required when available: after saving, display the exact saved item's passive card as specified in the shared workflow. Do not start audio or choose another phrase just to show the interface.
Save one explicitly requested expression and its provenance. Read and apply [the shared workflow](../../references/workflow.md) before replying or calling the service.
## Choose the expression and keep its context
- For an exact word or phrase, keep the learner's selected surface form. Do not silently replace it with a synonym, infinitive or different expression.
- When asked to save a useful expression from a full sentence, select the smallest reusable collocation or functional expression. Keep essential prepositions and negation that defines the intended expression, such as “can't rule out.” Sentence polarity can remain in its exact source context: from “We did not get the ball rolling until Monday,” save `phrase="get the ball rolling"` and retain that complete negated sentence in both `context` and `original_sentence`, with `context_source="original"`. Never rewrite the source sentence into a positive claim.
- If multiple materially different cores are plausible, offer a small choice before saving. Do not automatically mine all unfamiliar expressions or send the entire chat.
- Preserve the exact supplied source sentence in `original_sentence`. Prefer that sentence as `context` with `context_source="original"`.
- If there is no supplied source sentence, relevant actual chat wording can be `context_source="chat"`. Otherwise an optional neutral practice example can use `context_source="generated"`; clearly label it as generated and never present invented facts as the learner's biography or a source quotation.
- A phrase without context can still be saved. Generated examples are not evidence that the learner has used the phrase.
## Save once
Call `save_phrase` with the chosen `phrase`, optional `context`, `context_source` and exact `original_sentence` when supplied. Explicit save intent authorizes this additive save; no extra project, trial or generic confirmation is required.
Return the actual expression, short context and provenance, `saved`/`already_saved` result and exact Phrase Bank URL. A repeated save must not be described as a new entry or new learning progress. Preserve existing learned state. Do not promise morphology-aware deduplication or automatic mastery.
After saving, offer review or short pronunciation only when useful to the learner's request. Do not start an audio task, new project or reminder automatically.
Referenced files: 3 — file references are metadata, not package contents.