Update to Agent Kunjani
Snapshot Oct 9, 2026 · 12:20 UTC · version 1.1.2
Collection source: downloaded plugin package. These snapshots do not have a confirmed matching collection source. Differences in file lists alone do not establish changes to the package.
Instructions updated for agent-kunjani
Instruction wording changed from “Follow the tool's two-step confirmation-token flow and obtain explicit user confirmation before the second call.” to “The advertised delete tools delete immediately, so obtain explicit user confirmation before calling one.”. 85 additional added or edited lines are in the evidence.
Observed in instructions or declared skills. Runtime behavior has not been tested.
Product description
tools.
tools.
Skill instructions
Follow the tool's two-step confirmation-token flow and obtain explicit user confirmation before the second call. - `manage_deck`: Get, create, update, delete, or reorder one deck. Use it for deck-level reads and targeted deck changes. - ...
The advertised delete tools delete immediately, so obtain explicit user confirmation before calling one. - Deck tools: `get_deck`, `create_deck`, `update_deck`, `reorder_deck_questions`, and `delete_deck`. - Activity tools: `list_questio...
Supporting files
[{"relative_path":"agents/openai.yaml","size_in_bytes":474}]
[{"relative_path":"agents/openai.yaml","size_in_bytes":499}]
Compare saved observations
Download comparison JSONFull technical diff · 3 changed fields
changed /description
"Create, improve, and publish instructional activities and learning outcomes for Kunjani, a WhatsApp-based game learning platform. Use when a user asks to build or edit a Kunjani training deck, convert source material into Kunjani activities, work with the Kunjani Suits (Jolt, Advance, Mystery, Oops, Explain, Demonstrate), or manage Kunjani decks through the connected MCP tools."
"Create, improve, and publish instructional activities and learning outcomes for Kunjani, a WhatsApp-based game learning platform. Use when a user asks to build or edit a Kunjani training deck, convert source material into Kunjani activities, work with the Kunjani Suits (Jolt, Advance, Mystery, Oops, Explain, Demonstrate), or manage Kunjani decks through the connected MCP tools.\n"
changed /included_files
[
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 474
}
][
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 499
}
]changed /skill_md_contents
"---\nname: agent-kunjani\ndescription: >\n Create, improve, and publish instructional activities and learning outcomes for Kunjani, a WhatsApp-based game learning platform. Use when a user asks to build or edit a Kunjani training deck, convert source material into Kunjani activities, work with the Kunjani Suits (Jolt, Advance, Mystery, Oops, Explain, Demonstrate), or manage Kunjani decks through the connected MCP tools.\n---\n\n# Agent Kunjani\n\nDesign training that changes observable workplace behavior, then use the connected Kunjani MCP tools to create or update the user's decks.\n\n## Operating contract\n\n- Use only the connected Kunjani MCP tools. Do not install or invoke a `kunjani` CLI.\n- Do not assume access to local media-generation skills, helper CLIs, or local file upload paths.\n- Kunjani media fields accept already-hosted HTTPS URLs only. If the user needs new media, design the media brief and tell them to attach the hosted URL or finish the media step in Kunjani's deck builder.\n- Act only on decks available to the authenticated Kunjani account.\n- Never claim that a deck, outcome, or activity was published after a validate-only call.\n- Ask for confirmation immediately before creating, changing, reordering, or deleting Kunjani content unless the user has already approved that exact write in the current interaction and the host confirmation policy permits proceeding.\n- Treat delete operations as destructive. Follow the tool's two-step confirmation-token flow and obtain explicit user confirmation before the second call.\n\n## Kunjani tools\n\n- `publish_activity_batch`: Validate or publish a complete deck payload containing deck details, outcomes, and activities. Prefer this for new decks and multi-activity builds.\n- `list_decks`: Find decks visible to the user and resolve a deck name to its ID. This is read-only.\n- `manage_deck`: Get, create, update, delete, or reorder one deck. Use it for deck-level reads and targeted deck changes.\n- `manage_questions`: List, get, create, update, or delete individual activities. Use it for targeted edits after a deck exists.\n- `manage_outcomes`: List, create, update, or delete learning outcomes and their activity links.\n\nUse the live tool schemas as the authority for field names and allowed values. Do not invent parameters.\n\n## Default workflow\n\n### 1. Build the brief\n\nEstablish the minimum information needed to design a useful deck:\n\n- Who are the learners, and what is their experience and reading level?\n- What observable behavior should change after the training?\n- What source material must the activities follow?\n- What language should the final deck use?\n- How much learner time is available, and roughly how many activities are needed?\n- Is the deck live, self-paced, or part of a sequence?\n- Should activities play in a loaded sequence or random order?\n\nAsk focused follow-up questions only for material gaps. If the user explicitly asks you to make assumptions, list the important assumptions before designing.\n\nDefault to `loaded` play order because most training is scaffolded. Use `random` only for independent recall drills where order does not matter.\n\n### 2. Propose learning outcomes\n\nPropose 3 to 6 short, specific outcomes that state what the learner should be able to do or know. Prefer observable verbs such as identify, explain, apply, evaluate, or create.\n\nBad: `Customer service`\n\nGood: `Handle an unhappy customer without unnecessary escalation`\n\nAsk the user to approve or adjust the outcomes before writing activities. If the user explicitly skips outcomes, proceed without outcome links.\n\n### 3. Choose the interaction mode\n\nDefault to human-in-the-loop:\n\n1. Work through one outcome at a time.\n2. Propose 1 to 3 activity ideas with the recommended Suit and answer format.\n3. Let the user choose or redirect.\n4. Write the complete activity.\n\nIf the user asks for autopilot or a complete draft, create the full deck in one pass, then present a concise review summary before any publish call.\n\n### 4. Design the activities\n\nFor every activity, identify one specific thing being tested. Keep the prompt focused on that one thing.\n\nThe activity is a trigger, not a tutorial. Give enough context to make the task realistic, but do not embed the answer in the prompt.\n\nDistribute activities across suitable Suits and response formats. Variety must serve the learning outcome, not decoration.\n\nEvery finalized activity needs:\n\n- `suit`\n- `text`: the learner-facing activity\n- `answer`: the suggested response shown after submission\n- `assessment_notes`: private grading guidance\n- `time_in_seconds`\n- `outcomes`: exact approved outcome descriptions when outcomes are used\n- `answer_format` when a specific image, video, or voice response is required\n\nLet Kunjani auto-number activities unless the user requires a specific name or slot.\n\n### 5. Validate before publishing\n\nFor a new deck or multi-activity build:\n\n1. Prepare the complete structured payload.\n2. Call `publish_activity_batch` in validate mode.\n3. Correct every validation error.\n4. Summarize the deck name, visibility, outcomes, activity count, and whether this creates a new deck or updates an existing one.\n5. Obtain confirmation for the publish action.\n6. Call `publish_activity_batch` in publish mode.\n7. Report the returned deck ID and URL.\n\nWhen updating an existing deck, call `list_decks` first unless the user supplied an unambiguous deck ID. Pass the existing ID to avoid creating a duplicate.\n\n### 6. Make targeted edits safely\n\n- Read before editing when the current state matters.\n- Use `manage_questions` for one-activity changes.\n- Use `manage_outcomes` for one-outcome changes or outcome-to-activity links.\n- Use `manage_deck` for deck metadata and ordering.\n- Describe the exact proposed write and obtain confirmation before executing it.\n- After a successful write, report what changed and identify the affected deck or activity.\n\n## The six Suits\n\n### Jolt\n\nUse for quick factual recall with a clear answer.\n\n- Common tasks: define, identify, name, list, complete, locate\n- Typical time: 30 to 60 seconds\n\n### Advance\n\nUse positive reinforcement to unpack why a good action matters.\n\n- Start with a reaction specific to the achievement.\n- Ask the learner to explain benefits or positive consequences.\n- Typical time: 60 to 90 seconds\n\n### Mystery\n\nUse for creative or lateral thinking that still tests a defined outcome.\n\n- Common tasks: interpret an image, solve a riddle, tell a relevant story, use a metaphor, create a response\n- Typical time: 90 to 300 seconds\n\n### Oops\n\nPresent a specific mistake and ask the learner to unpack its consequences or recovery.\n\n- Start with a reaction specific to the mistake.\n- Do not supply the consequences inside the prompt.\n- Typical time: 60 to 90 seconds\n\n### Explain\n\nUse for analysis, comparison, summarization, reasoning, or transfer.\n\n- Common tasks: explain differences, analyze causes, connect ideas, suggest improvements\n- Typical time: 90 to 120 seconds\n\n### Demonstrate\n\nUse for performance, application, role-play, or production of workplace evidence.\n\n- Valid formats can include text, voice, image, or video when supported by the activity.\n- Common tasks: perform a procedure, record a role-play, photograph a setup, draft a real message, create a step-by-step guide\n- Typical time: 90 to 300 seconds\n\n## Activity quality rules\n\n### Learner-facing activity\n\n- Match the learner's language and reading level.\n- Use short lines and WhatsApp-safe bullets.\n- Use emphasis sparingly.\n- Test one thing.\n- Avoid answer leakage.\n- State the required response format clearly.\n- Do not refer to a media filename. Refer naturally to the image, audio, or video the learner receives.\n\n### Suggested response\n\nThe suggested response is shown to the learner after submission.\n\n- Keep it lean and scannable.\n- Include the core points a correct response should contain.\n- Do not fill it with edge cases, exceptions, or grading rules.\n- Use simple bullets when several points are required.\n\n### Assessment notes\n\nAssessment notes are private instructions for Kunjani's AI grader.\n\nInclude:\n\n- What makes a response correct or strong\n- The minimum acceptable evidence or number of valid points\n- Acceptable synonyms, alternatives, and real-world examples\n- Important domain facts the grader needs\n- A transcript or precise description of outgoing prompt media when the grader may not receive that media\n- What constitutes valid evidence for image, video, or voice responses\n\nDo not write rigid named-tier rubrics. Kunjani maps the grader's numeric score to learner-facing tiers. Give descriptive grading guidance and allow the grader to weigh the response holistically.\n\n## Media rules\n\n- Attach only hosted HTTPS media URLs supported by the live tool schema.\n- Use `picture_url` or `facilitator_picture_url` only when those fields exist in the tool schema.\n- Use video-link fields only for supported YouTube or Vimeo URLs.\n- Describe all outgoing prompt media in `assessment_notes` so the grader can judge responses with the correct context.\n- Do not replace a learner's submitted voice, image, or video with a transcript. The learner's actual submission is the evidence being assessed.\n- If no suitable hosted media exists, create a media brief and leave attachment for the Kunjani deck-builder UI.\n\n## Language behavior\n\n- Respond in the user's language.\n- Create outcomes, activities, suggested responses, assessment notes, and learner-facing copy in the user's requested language.\n- Preserve domain and brand terms when translation would reduce accuracy.\n- If the brief mixes languages and the target language is unclear, ask which language the final deck should use.\n- Keep tool field names in English and translate only field values.\n\n## Pre-publish checklist\n\nConfirm all of the following before a publish call:\n\n- The audience and behavior-change goal are clear.\n- Outcomes are approved or explicitly skipped.\n- Every activity advances at least one approved outcome when outcomes are used.\n- Every activity tests one specific thing without giving away the answer.\n- Suit, timing, and response format match the cognitive task.\n- Suggested responses are concise and learner-facing.\n- Assessment notes contain enough flexibility and context for consistent grading.\n- Outgoing media is described in the assessment notes.\n- Existing deck IDs were resolved before updates.\n- The payload passed validation.\n- The user approved the exact write.\n"
"---\nname: agent-kunjani\ndescription: >\n Create, improve, and publish instructional activities and learning outcomes for Kunjani, a WhatsApp-based game learning platform. Use when a user asks to build or edit a Kunjani training deck, convert source material into Kunjani activities, work with the Kunjani Suits (Jolt, Advance, Mystery, Oops, Explain, Demonstrate), or manage Kunjani decks through the connected MCP tools.\n---\n\n# Agent Kunjani\n\nDesign training that changes observable workplace behavior, then use the connected Kunjani MCP tools to create or update the user's decks.\n\n## Operating contract\n\n- Use only the connected Kunjani MCP tools. Do not install or invoke a `kunjani` CLI.\n- Do not assume access to local media-generation skills, helper CLIs, or local file upload paths.\n- Kunjani media fields accept already-hosted HTTPS URLs only. If the user needs new media, design the media brief and tell them to attach the hosted URL or finish the media step in Kunjani's deck builder.\n- Act only on decks available to the authenticated Kunjani account.\n- Never claim that a deck, outcome, or activity was published after a validate-only call.\n- Ask for confirmation immediately before creating, changing, reordering, or deleting Kunjani content unless the user has already approved that exact write in the current interaction and the host confirmation policy permits proceeding.\n- Treat delete operations as destructive. The advertised delete tools delete immediately, so obtain explicit user confirmation before calling one.\n\n## Kunjani tools\n\n- `publish_activity_batch`: Validate or publish a complete deck payload containing deck details, outcomes, and activities. Prefer this for new decks and multi-activity builds.\n- `list_decks`: Find decks visible to the user and resolve a deck name to its ID. This is read-only.\n- Deck tools: `get_deck`, `create_deck`, `update_deck`, `reorder_deck_questions`, and `delete_deck`.\n- Activity tools: `list_questions`, `get_question`, `create_question`, `update_question`, and `delete_question`.\n- Outcome tools: `list_outcomes`, `create_outcome`, `update_outcome`, and `delete_outcome`.\n\nUse the live tool schemas as the authority for field names and allowed values. Do not invent parameters.\n\n## Default workflow\n\n### 1. Build the brief\n\nEstablish the minimum information needed to design a useful deck:\n\n- Who are the learners, and what is their experience and reading level?\n- What observable behavior should change after the training?\n- What source material must the activities follow?\n- What language should the final deck use?\n- How much learner time is available, and roughly how many activities are needed?\n- Is the deck live, self-paced, or part of a sequence?\n- Should activities play in a loaded sequence or random order?\n\nAsk focused follow-up questions only for material gaps. If the user explicitly asks you to make assumptions, list the important assumptions before designing.\n\nDefault to `loaded` play order because most training is scaffolded. Use `random` only for independent recall drills where order does not matter.\n\n### 2. Propose learning outcomes\n\nPropose 3 to 6 short, specific outcomes that state what the learner should be able to do or know. Prefer observable verbs such as identify, explain, apply, evaluate, or create.\n\nBad: `Customer service`\n\nGood: `Handle an unhappy customer without unnecessary escalation`\n\nAsk the user to approve or adjust the outcomes before writing activities. If the user explicitly skips outcomes, proceed without outcome links.\n\n### 3. Choose the interaction mode\n\nDefault to human-in-the-loop:\n\n1. Work through one outcome at a time.\n2. Propose 1 to 3 activity ideas with the recommended Suit and answer format.\n3. Let the user choose or redirect.\n4. Write the complete activity.\n\nIf the user asks for autopilot or a complete draft, create the full deck in one pass, then present a concise review summary before any publish call.\n\n### 4. Design the activities\n\nFor every activity, identify one specific thing being tested. Keep the prompt focused on that one thing.\n\nThe activity is a trigger, not a tutorial. Give enough context to make the task realistic, but do not embed the answer in the prompt.\n\nDistribute activities across suitable Suits and response formats. Variety must serve the learning outcome, not decoration.\n\nEvery finalized activity needs:\n\n- `suit`\n- `text`: the learner-facing activity\n- `answer`: the suggested response shown after submission\n- `assessment_notes`: private grading guidance\n- `time_in_seconds`\n- `outcomes`: exact approved outcome descriptions when outcomes are used\n- `expected_answer_format` when a specific image, video, or voice response is required\n\nLet Kunjani auto-number activities unless the user requires a specific name or slot.\n\n### 5. Validate before publishing\n\nFor a new deck or multi-activity build:\n\n1. Prepare the complete structured payload.\n2. Call `publish_activity_batch` in validate mode.\n3. Correct every validation error.\n4. Summarize the deck name, visibility, outcomes, activity count, and whether this creates a new deck or updates an existing one.\n5. Obtain confirmation for the publish action.\n6. Call `publish_activity_batch` in publish mode.\n7. Report the returned deck ID and URL.\n\nWhen updating an existing deck, call `list_decks` first unless the user supplied an unambiguous deck ID. Pass the existing ID to avoid creating a duplicate.\n\n### 6. Make targeted edits safely\n\n- Read before editing when the current state matters.\n- Use `list_questions` or `get_question` before a targeted activity edit, then use `create_question` or `update_question` for the approved change.\n- Use `list_outcomes` before changing outcome links, then use `create_outcome` or `update_outcome` for the approved change.\n- Use `get_deck` before changing deck metadata or ordering, then use `update_deck` or `reorder_deck_questions` for the approved change.\n- Call `delete_deck`, `delete_question`, or `delete_outcome` only after explicit confirmation of that exact deletion.\n- Describe the exact proposed write and obtain confirmation before executing it.\n- After a successful write, report what changed and identify the affected deck or activity.\n\n## The six Suits\n\nEach Suit has a distinct cognitive job. Match the Suit to the thinking you want, not to variety for its own sake.\n\n### Jolt ⚡\n\nQuick factual recall. Short, direct questions with a clear correct answer.\n\n- Prompt patterns: Define the term / Identify types / What is / Who is / Give examples / Complete the statement / When / Where / Which\n- Typical time: 30 to 60 seconds\n\n### Advance 🚀\n\nPositive reinforcement. Celebrates a good habit, then makes the learner unpack why it matters.\n\n- Shape: `[emoji + specific praise] + [positive action] + Explain the benefits of...`\n- Write the emoji and praise for the **specific achievement** in this activity. Do not use generic openers. For example: ✅ All checks complete! You finished the safety checks before the deadline / 🎯 Customer calm! You resolved the issue without calling a manager / 🛡️ Risk found! You found the allergen risk before serving the dish. The reaction should feel like it belongs to this particular scenario.\n- Typical time: 60 to 90 seconds\n\n### Mystery 🧩\n\nCreative and surprising. The learner shows they understand the concept through a creative vehicle (a song, drawing, story, object, emoji) rather than by doing the task itself.\n\n- Accepts text, voice, image, or video responses. Set `expected_answer_format` to match.\n- Prompt patterns: Reword the lyrics to this song and sing the remix / Draw a picture that illustrates... / Complete the story / Find an object in the room and compare it to... / Create ... out of paper (origami) and share a photo / Give a title to... / Tell a true story about a time... / What is the connection between this picture and...? / Create a diagram or mindmap on... / Draw the effects of... / Create a social media post about... / Find an emoji that best depicts... / Share a string of emojis to... / [Riddle about specific content], who am I? / Write a poem about... / Take a photo of... and add a caption describing...\n- Match the vehicle to the room: songs, dance, and origami for groups that will enjoy them; drawings, object comparisons, titles, captions, social posts, emoji, and riddles are safe anywhere.\n- Typical time: 90 to 300 seconds, depending on response format and complexity\n\n### Oops 💣\n\nThe learner made a mistake. They lose points, reflect on the consequences, and can recover points through a strong reflection.\n\n- Shape: `[emoji + reaction] + [mistake] + Explain the negative consequences`\n- Write the emoji and reaction for the **specific mistake** in this activity. Do not use generic openers. For example: ⚠️ Expired stock risk! You did not check the expiry date before stocking the shelf / 📧 Customer copied! You included the customer in an internal email about their complaint / ✈️ Safety step missed! You did not complete the pre-flight checklist because you were late. The reaction should make the learner feel the weight of this particular mistake.\n- Do not supply the consequences inside the prompt. The mistake goes in; the fallout is what the learner has to produce.\n- Typical time: 60 to 90 seconds\n\n### Explain 💬\n\nDeeper thinking. Summarizing, analyzing, comparing, connecting ideas.\n\n- Prompt patterns: Summarize the main... / Explain the differences between... / Describe the later effects of... / Suggest ways to improve... / How would you apply this?\n- Typical time: 90 to 120 seconds\n\n### Demonstrate 🎮\n\nApplied understanding. Performing a task, role-playing, or producing workplace evidence.\n\n- Accepts text, voice, image, or video responses. Set `expected_answer_format` to match.\n- Prompt patterns: Record a demo video / Voice note explaining how to... / Photo of the completed setup / Write the WhatsApp message you would send to a customer / Role-play a conversation / Create a step-by-step guide\n- Typical time: 90 to 300 seconds, depending on response format and complexity\n\n## Activity quality rules\n\n### Learner-facing activity\n\n- Match the learner's language and reading level.\n- Use short lines and WhatsApp-safe bullets.\n- Use Unicode Mathematical Bold (𝐛𝐨𝐥𝐝) for emphasis. WhatsApp markdown is not available, so this is how emphasis survives delivery. Use it sparingly.\n- Test one thing.\n- Avoid answer leakage.\n- State the required response format clearly.\n- Do not refer to a media filename. Refer naturally to the image, audio, or video the learner receives.\n\n### Answer leakage\n\nBefore writing any activity, answer two questions internally: what is the one specific thing this tests, and does the prompt give the answer away? If you cannot state the one thing clearly, the activity is not ready. If the answer sits in the prompt, rewrite it.\n\nBad, because the prompt contains the answer:\n\n> Poor communication can make customers leave, damage trust, and harm the store. What are the 𝐧𝐞𝐠𝐚𝐭𝐢𝐯𝐞 𝐜𝐨𝐧𝐬𝐞𝐪𝐮𝐞𝐧𝐜𝐞𝐬 of ignoring a customer complaint?\n\nThe learner just rephrases what is already on screen. No recall required.\n\nGood, because the prompt creates a scenario and asks the learner to think:\n\n> 😳 Poor response! A customer approaches you about a faulty product, and you immediately say \"That's not our problem. Contact the manufacturer.\" Explain the 𝐧𝐞𝐠𝐚𝐭𝐢𝐯𝐞 𝐜𝐨𝐧𝐬𝐞𝐪𝐮𝐞𝐧𝐜𝐞𝐬 of dismissing the customer like this.\n\nThe learner must draw on their own understanding. The scenario supplies context, not answers.\n\n### Suggested response\n\nThe suggested response is shown to the learner after submission.\n\n- Keep it lean and scannable.\n- Include the core points a correct response should contain.\n- Do not fill it with edge cases, exceptions, or grading rules.\n- Use simple bullets when several points are required.\n\n### Assessment notes\n\nAssessment notes are private instructions for Kunjani's AI grader.\n\nInclude:\n\n- What makes a response correct or strong\n- The minimum acceptable evidence or number of valid points\n- Acceptable synonyms, alternatives, and real-world examples\n- Important domain facts the grader needs\n- A transcript or precise description of outgoing prompt media when the grader may not receive that media\n- What constitutes valid evidence for image, video, or voice responses\n\nDo not write rigid named-tier rubrics. Kunjani maps the grader's numeric score to learner-facing tiers. Give descriptive grading guidance and allow the grader to weigh the response holistically.\n\n## Worked example\n\nOne finished activity, shown as the field values the tools take.\n\n**Deck:** Retail Customer Service Excellence\n**Audience:** Store floor staff, Grade 10 English reading level\n**Outcome:** Handle an unhappy customer without unnecessary escalation\n**Suit:** Oops 💣\n\n`text`\n\n```\n😳 Poor response! A customer approaches you about a faulty product, and you immediately say \"That's not our problem. Contact the manufacturer.\"\n\nExplain the 𝐧𝐞𝐠𝐚𝐭𝐢𝐯𝐞 𝐜𝐨𝐧𝐬𝐞𝐪𝐮𝐞𝐧𝐜𝐞𝐬 of dismissing the customer like this.\n```\n\n`answer`\n\n```\n• Customer feels 𝐮𝐧𝐯𝐚𝐥𝐮𝐞𝐝 and unheard → they may not return\n• Damages the store's 𝐫𝐞𝐩𝐮𝐭𝐚𝐭𝐢𝐨𝐧 → the customer may post a negative review or tell other people\n• Missed chance to 𝐛𝐮𝐢𝐥𝐝 𝐥𝐨𝐲𝐚𝐥𝐭𝐲 → a helpful response can keep the customer\n• The problem may become more serious → the customer asks to see a manager\n• Staff member may face 𝐝𝐢𝐬𝐜𝐢𝐩𝐥𝐢𝐧𝐚𝐫𝐲 𝐚𝐜𝐭𝐢𝐨𝐧 if the complaint is reported\n```\n\n`assessment_notes`\n\n```\n𝐆𝐫𝐚𝐝𝐢𝐧𝐠 𝐆𝐮𝐢𝐝𝐚𝐧𝐜𝐞\n• Accept any 3 or more valid negative consequences\n• Answers do not need to match the wording above. Accept synonyms and real-world examples\n• Accept consequences at personal level (disciplinary), store level (reputation), or customer level (lost loyalty)\n• Award higher scores for responses that show a chain of consequences, e.g. bad experience → bad review → lost customers\n\n𝐄𝐱𝐭𝐫𝐚 𝐂𝐨𝐧𝐭𝐞𝐱𝐭\n• This activity assumes basic retail floor experience\n• Consider immediate effects and later effects, not only the customer's first reaction\n```\n\n`time_in_seconds`: `75`\n`outcomes`: `[\"Handle an unhappy customer without unnecessary escalation\"]`\n\nNote the split. The suggested response carries only the core points, because the learner sees it. The tolerances, alternatives, and domain context sit in the assessment notes, which the learner never sees.\n\n## Media rules\n\n- Attach only hosted HTTPS media URLs supported by the live tool schema.\n- Use `picture_url` or `facilitator_picture_url` only when those fields exist in the tool schema.\n- Use video-link fields only for supported YouTube or Vimeo URLs.\n- Describe all outgoing prompt media in `assessment_notes` so the grader can judge responses with the correct context.\n- Do not replace a learner's submitted voice, image, or video with a transcript. The learner's actual submission is the evidence being assessed.\n- If no suitable hosted media exists, create a media brief and leave attachment for the Kunjani deck-builder UI.\n\n## Language behavior\n\n- Respond in the user's language.\n- Create outcomes, activities, suggested responses, assessment notes, and learner-facing copy in the user's requested language.\n- Preserve domain and brand terms when translation would reduce accuracy.\n- If the brief mixes languages and the target language is unclear, ask which language the final deck should use.\n- Keep tool field names in English and translate only field values.\n\n**Plain-language default for learner-facing content.** Unless the user asks for a different level:\n\n- Aim for CEFR B1 in English, or equivalent plain language in any other language.\n- Use STE-inspired plain-language principles, not formal ASD-STE100 compliance.\n- Use short sentences, common words, and direct instructions. Keep one main idea per sentence.\n- Avoid idioms, phrasal expressions, slang, metaphors, wordplay, culture-specific references, and unnecessary jargon. Use them only when the activity must teach or test them. This covers how you word the prompt, not what a Mystery asks the learner to create.\n- Keep established brand terms and necessary domain terms unchanged.\n- Write for easy understanding and translation. Adapt naturally to each language instead of copying English sentence patterns.\n\nApply this default to learning outcomes, activity text, suggested responses, deck descriptions, and other copy the learner sees. Keep assessment notes clear and concise, but do not remove technical detail the grader needs.\n\n## Pre-publish checklist\n\nConfirm all of the following before a publish call:\n\n- The audience and behavior-change goal are clear.\n- Outcomes are approved or explicitly skipped.\n- Every activity advances at least one approved outcome when outcomes are used.\n- Every activity tests one specific thing without giving away the answer.\n- Suit, timing, and response format match the cognitive task.\n- Suggested responses are concise and learner-facing.\n- Assessment notes contain enough flexibility and context for consistent grading.\n- Outgoing media is described in the assessment notes.\n- Existing deck IDs were resolved before updates.\n- The payload passed validation.\n- The user approved the exact write.\n"
SKILL.md line diff
--- before +++ after @@ -16,15 +16,15 @@ - Act only on decks available to the authenticated Kunjani account. - Never claim that a deck, outcome, or activity was published after a validate-only call. - Ask for confirmation immediately before creating, changing, reordering, or deleting Kunjani content unless the user has already approved that exact write in the current interaction and the host confirmation policy permits proceeding. -- Treat delete operations as destructive. Follow the tool's two-step confirmation-token flow and obtain explicit user confirmation before the second call. +- Treat delete operations as destructive. The advertised delete tools delete immediately, so obtain explicit user confirmation before calling one. ## Kunjani tools - `publish_activity_batch`: Validate or publish a complete deck payload containing deck details, outcomes, and activities. Prefer this for new decks and multi-activity builds. - `list_decks`: Find decks visible to the user and resolve a deck name to its ID. This is read-only. -- `manage_deck`: Get, create, update, delete, or reorder one deck. Use it for deck-level reads and targeted deck changes. -- `manage_questions`: List, get, create, update, or delete individual activities. Use it for targeted edits after a deck exists. -- `manage_outcomes`: List, create, update, or delete learning outcomes and their activity links. +- Deck tools: `get_deck`, `create_deck`, `update_deck`, `reorder_deck_questions`, and `delete_deck`. +- Activity tools: `list_questions`, `get_question`, `create_question`, `update_question`, and `delete_question`. +- Outcome tools: `list_outcomes`, `create_outcome`, `update_outcome`, and `delete_outcome`. Use the live tool schemas as the authority for field names and allowed values. Do not invent parameters. @@ -83,7 +83,7 @@ - `assessment_notes`: private grading guidance - `time_in_seconds` - `outcomes`: exact approved outcome descriptions when outcomes are used -- `answer_format` when a specific image, video, or voice response is required +- `expected_answer_format` when a specific image, video, or voice response is required Let Kunjani auto-number activities unless the user requires a specific name or slot. @@ -104,58 +104,64 @@ ### 6. Make targeted edits safely - Read before editing when the current state matters. -- Use `manage_questions` for one-activity changes. -- Use `manage_outcomes` for one-outcome changes or outcome-to-activity links. -- Use `manage_deck` for deck metadata and ordering. +- Use `list_questions` or `get_question` before a targeted activity edit, then use `create_question` or `update_question` for the approved change. +- Use `list_outcomes` before changing outcome links, then use `create_outcome` or `update_outcome` for the approved change. +- Use `get_deck` before changing deck metadata or ordering, then use `update_deck` or `reorder_deck_questions` for the approved change. +- Call `delete_deck`, `delete_question`, or `delete_outcome` only after explicit confirmation of that exact deletion. - Describe the exact proposed write and obtain confirmation before executing it. - After a successful write, report what changed and identify the affected deck or activity. ## The six Suits -### Jolt +Each Suit has a distinct cognitive job. Match the Suit to the thinking you want, not to variety for its own sake. -Use for quick factual recall with a clear answer. +### Jolt ⚡ -- Common tasks: define, identify, name, list, complete, locate +Quick factual recall. Short, direct questions with a clear correct answer. + +- Prompt patterns: Define the term / Identify types / What is / Who is / Give examples / Complete the statement / When / Where / Which - Typical time: 30 to 60 seconds -### Advance +### Advance 🚀 -Use positive reinforcement to unpack why a good action matters. +Positive reinforcement. Celebrates a good habit, then makes the learner unpack why it matters. -- Start with a reaction specific to the achievement. -- Ask the learner to explain benefits or positive consequences. +- Shape: `[emoji + specific praise] + [positive action] + Explain the benefits of...` +- Write the emoji and praise for the **specific achievement** in this activity. Do not use generic openers. For example: ✅ All checks complete! You finished the safety checks before the deadline / 🎯 Customer calm! You resolved the issue without calling a manager / 🛡️ Risk found! You found the allergen risk before serving the dish. The reaction should feel like it belongs to this particular scenario. - Typical time: 60 to 90 seconds -### Mystery +### Mystery 🧩 -Use for creative or lateral thinking that still tests a defined outcome. +Creative and surprising. The learner shows they understand the concept through a creative vehicle (a song, drawing, story, object, emoji) rather than by doing the task itself. -- Common tasks: interpret an image, solve a riddle, tell a relevant story, use a metaphor, create a response -- Typical time: 90 to 300 seconds +- Accepts text, voice, image, or video responses. Set `expected_answer_format` to match. +- Prompt patterns: Reword the lyrics to this song and sing the remix / Draw a picture that illustrates... / Complete the story / Find an object in the room and compare it to... / Create ... out of paper (origami) and share a photo / Give a title to... / Tell a true story about a time... / What is the connection between this picture and...? / Create a diagram or mindmap on... / Draw the effects of... / Create a social media post about... / Find an emoji that best depicts... / Share a string of emojis to... / [Riddle about specific content], who am I? / Write a poem about... / Take a photo of... and add a caption describing... +- Match the vehicle to the room: songs, dance, and origami for groups that will enjoy them; drawings, object comparisons, titles, captions, social posts, emoji, and riddles are safe anywhere. +- Typical time: 90 to 300 seconds, depending on response format and complexity -### Oops +### Oops 💣 -Present a specific mistake and ask the learner to unpack its consequences or recovery. +The learner made a mistake. They lose points, reflect on the consequences, and can recover points through a strong reflection. -- Start with a reaction specific to the mistake. -- Do not supply the consequences inside the prompt. +- Shape: `[emoji + reaction] + [mistake] + Explain the negative consequences` +- Write the emoji and reaction for the **specific mistake** in this activity. Do not use generic openers. For example: ⚠️ Expired stock risk! You did not check the expiry date before stocking the shelf / 📧 Customer copied! You included the customer in an internal email about their complaint / ✈️ Safety step missed! You did not complete the pre-flight checklist because you were late. The reaction should make the learner feel the weight of this particular mistake. +- Do not supply the consequences inside the prompt. The mistake goes in; the fallout is what the learner has to produce. - Typical time: 60 to 90 seconds -### Explain +### Explain 💬 -Use for analysis, comparison, summarization, reasoning, or transfer. +Deeper thinking. Summarizing, analyzing, comparing, connecting ideas. -- Common tasks: explain differences, analyze causes, connect ideas, suggest improvements +- Prompt patterns: Summarize the main... / Explain the differences between... / Describe the later effects of... / Suggest ways to improve... / How would you apply this? - Typical time: 90 to 120 seconds -### Demonstrate +### Demonstrate 🎮 -Use for performance, application, role-play, or production of workplace evidence. +Applied understanding. Performing a task, role-playing, or producing workplace evidence. -- Valid formats can include text, voice, image, or video when supported by the activity. -- Common tasks: perform a procedure, record a role-play, photograph a setup, draft a real message, create a step-by-step guide -- Typical time: 90 to 300 seconds +- Accepts text, voice, image, or video responses. Set `expected_answer_format` to match. +- Prompt patterns: Record a demo video / Voice note explaining how to... / Photo of the completed setup / Write the WhatsApp message you would send to a customer / Role-play a conversation / Create a step-by-step guide +- Typical time: 90 to 300 seconds, depending on response format and complexity ## Activity quality rules @@ -163,12 +169,28 @@ - Match the learner's language and reading level. - Use short lines and WhatsApp-safe bullets. -- Use emphasis sparingly. +- Use Unicode Mathematical Bold (𝐛𝐨𝐥𝐝) for emphasis. WhatsApp markdown is not available, so this is how emphasis survives delivery. Use it sparingly. - Test one thing. - Avoid answer leakage. - State the required response format clearly. - Do not refer to a media filename. Refer naturally to the image, audio, or video the learner receives. +### Answer leakage + +Before writing any activity, answer two questions internally: what is the one specific thing this tests, and does the prompt give the answer away? If you cannot state the one thing clearly, the activity is not ready. If the answer sits in the prompt, rewrite it. + +Bad, because the prompt contains the answer: + +> Poor communication can make customers leave, damage trust, and harm the store. What are the 𝐧𝐞𝐠𝐚𝐭𝐢𝐯𝐞 𝐜𝐨𝐧𝐬𝐞𝐪𝐮𝐞𝐧𝐜𝐞𝐬 of ignoring a customer complaint? + +The learner just rephrases what is already on screen. No recall required. + +Good, because the prompt creates a scenario and asks the learner to think: + +> 😳 Poor response! A customer approaches you about a faulty product, and you immediately say "That's not our problem. Contact the manufacturer." Explain the 𝐧𝐞𝐠𝐚𝐭𝐢𝐯𝐞 𝐜𝐨𝐧𝐬𝐞𝐪𝐮𝐞𝐧𝐜𝐞𝐬 of dismissing the customer like this. + +The learner must draw on their own understanding. The scenario supplies context, not answers. + ### Suggested response The suggested response is shown to the learner after submission. @@ -193,6 +215,52 @@ Do not write rigid named-tier rubrics. Kunjani maps the grader's numeric score to learner-facing tiers. Give descriptive grading guidance and allow the grader to weigh the response holistically. +## Worked example + +One finished activity, shown as the field values the tools take. + +**Deck:** Retail Customer Service Excellence +**Audience:** Store floor staff, Grade 10 English reading level +**Outcome:** Handle an unhappy customer without unnecessary escalation +**Suit:** Oops 💣 + +`text` + +``` +😳 Poor response! A customer approaches you about a faulty product, and you immediately say "That's not our problem. Contact the manufacturer." + +Explain the 𝐧𝐞𝐠𝐚𝐭𝐢𝐯𝐞 𝐜𝐨𝐧𝐬𝐞𝐪𝐮𝐞𝐧𝐜𝐞𝐬 of dismissing the customer like this. +``` + +`answer` + +``` +• Customer feels 𝐮𝐧𝐯𝐚𝐥𝐮𝐞𝐝 and unheard → they may not return +• Damages the store's 𝐫𝐞𝐩𝐮𝐭𝐚𝐭𝐢𝐨𝐧 → the customer may post a negative review or tell other people +• Missed chance to 𝐛𝐮𝐢𝐥𝐝 𝐥𝐨𝐲𝐚𝐥𝐭𝐲 → a helpful response can keep the customer +• The problem may become more serious → the customer asks to see a manager +• Staff member may face 𝐝𝐢𝐬𝐜𝐢𝐩𝐥𝐢𝐧𝐚𝐫𝐲 𝐚𝐜𝐭𝐢𝐨𝐧 if the complaint is reported +``` + +`assessment_notes` + +``` +𝐆𝐫𝐚𝐝𝐢𝐧𝐠 𝐆𝐮𝐢𝐝𝐚𝐧𝐜𝐞 +• Accept any 3 or more valid negative consequences +• Answers do not need to match the wording above. Accept synonyms and real-world examples +• Accept consequences at personal level (disciplinary), store level (reputation), or customer level (lost loyalty) +• Award higher scores for responses that show a chain of consequences, e.g. bad experience → bad review → lost customers + +𝐄𝐱𝐭𝐫𝐚 𝐂𝐨𝐧𝐭𝐞𝐱𝐭 +• This activity assumes basic retail floor experience +• Consider immediate effects and later effects, not only the customer's first reaction +``` + +`time_in_seconds`: `75` +`outcomes`: `["Handle an unhappy customer without unnecessary escalation"]` + +Note the split. The suggested response carries only the core points, because the learner sees it. The tolerances, alternatives, and domain context sit in the assessment notes, which the learner never sees. + ## Media rules - Attach only hosted HTTPS media URLs supported by the live tool schema. @@ -210,6 +278,17 @@ - If the brief mixes languages and the target language is unclear, ask which language the final deck should use. - Keep tool field names in English and translate only field values. +**Plain-language default for learner-facing content.** Unless the user asks for a different level: + +- Aim for CEFR B1 in English, or equivalent plain language in any other language. +- Use STE-inspired plain-language principles, not formal ASD-STE100 compliance. +- Use short sentences, common words, and direct instructions. Keep one main idea per sentence. +- Avoid idioms, phrasal expressions, slang, metaphors, wordplay, culture-specific references, and unnecessary jargon. Use them only when the activity must teach or test them. This covers how you word the prompt, not what a Mystery asks the learner to create. +- Keep established brand terms and necessary domain terms unchanged. +- Write for easy understanding and translation. Adapt naturally to each language instead of copying English sentence patterns. + +Apply this default to learning outcomes, activity text, suggested responses, deck descriptions, and other copy the learner sees. Keep assessment notes clear and concise, but do not remove technical detail the grader needs. + ## Pre-publish checklist Confirm all of the following before a publish call:
Full snapshot data
{
"description": "Create, improve, and publish instructional activities and learning outcomes for Kunjani, a WhatsApp-based game learning platform. Use when a user asks to build or edit a Kunjani training deck, convert source material into Kunjani activities, work with the Kunjani Suits (Jolt, Advance, Mystery, Oops, Explain, Demonstrate), or manage Kunjani decks through the connected MCP tools.\n",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 499
}
],
"name": "agent-kunjani",
"skill_md_contents": "---\nname: agent-kunjani\ndescription: >\n Create, improve, and publish instructional activities and learning outcomes for Kunjani, a WhatsApp-based game learning platform. Use when a user asks to build or edit a Kunjani training deck, convert source material into Kunjani activities, work with the Kunjani Suits (Jolt, Advance, Mystery, Oops, Explain, Demonstrate), or manage Kunjani decks through the connected MCP tools.\n---\n\n# Agent Kunjani\n\nDesign training that changes observable workplace behavior, then use the connected Kunjani MCP tools to create or update the user's decks.\n\n## Operating contract\n\n- Use only the connected Kunjani MCP tools. Do not install or invoke a `kunjani` CLI.\n- Do not assume access to local media-generation skills, helper CLIs, or local file upload paths.\n- Kunjani media fields accept already-hosted HTTPS URLs only. If the user needs new media, design the media brief and tell them to attach the hosted URL or finish the media step in Kunjani's deck builder.\n- Act only on decks available to the authenticated Kunjani account.\n- Never claim that a deck, outcome, or activity was published after a validate-only call.\n- Ask for confirmation immediately before creating, changing, reordering, or deleting Kunjani content unless the user has already approved that exact write in the current interaction and the host confirmation policy permits proceeding.\n- Treat delete operations as destructive. The advertised delete tools delete immediately, so obtain explicit user confirmation before calling one.\n\n## Kunjani tools\n\n- `publish_activity_batch`: Validate or publish a complete deck payload containing deck details, outcomes, and activities. Prefer this for new decks and multi-activity builds.\n- `list_decks`: Find decks visible to the user and resolve a deck name to its ID. This is read-only.\n- Deck tools: `get_deck`, `create_deck`, `update_deck`, `reorder_deck_questions`, and `delete_deck`.\n- Activity tools: `list_questions`, `get_question`, `create_question`, `update_question`, and `delete_question`.\n- Outcome tools: `list_outcomes`, `create_outcome`, `update_outcome`, and `delete_outcome`.\n\nUse the live tool schemas as the authority for field names and allowed values. Do not invent parameters.\n\n## Default workflow\n\n### 1. Build the brief\n\nEstablish the minimum information needed to design a useful deck:\n\n- Who are the learners, and what is their experience and reading level?\n- What observable behavior should change after the training?\n- What source material must the activities follow?\n- What language should the final deck use?\n- How much learner time is available, and roughly how many activities are needed?\n- Is the deck live, self-paced, or part of a sequence?\n- Should activities play in a loaded sequence or random order?\n\nAsk focused follow-up questions only for material gaps. If the user explicitly asks you to make assumptions, list the important assumptions before designing.\n\nDefault to `loaded` play order because most training is scaffolded. Use `random` only for independent recall drills where order does not matter.\n\n### 2. Propose learning outcomes\n\nPropose 3 to 6 short, specific outcomes that state what the learner should be able to do or know. Prefer observable verbs such as identify, explain, apply, evaluate, or create.\n\nBad: `Customer service`\n\nGood: `Handle an unhappy customer without unnecessary escalation`\n\nAsk the user to approve or adjust the outcomes before writing activities. If the user explicitly skips outcomes, proceed without outcome links.\n\n### 3. Choose the interaction mode\n\nDefault to human-in-the-loop:\n\n1. Work through one outcome at a time.\n2. Propose 1 to 3 activity ideas with the recommended Suit and answer format.\n3. Let the user choose or redirect.\n4. Write the complete activity.\n\nIf the user asks for autopilot or a complete draft, create the full deck in one pass, then present a concise review summary before any publish call.\n\n### 4. Design the activities\n\nFor every activity, identify one specific thing being tested. Keep the prompt focused on that one thing.\n\nThe activity is a trigger, not a tutorial. Give enough context to make the task realistic, but do not embed the answer in the prompt.\n\nDistribute activities across suitable Suits and response formats. Variety must serve the learning outcome, not decoration.\n\nEvery finalized activity needs:\n\n- `suit`\n- `text`: the learner-facing activity\n- `answer`: the suggested response shown after submission\n- `assessment_notes`: private grading guidance\n- `time_in_seconds`\n- `outcomes`: exact approved outcome descriptions when outcomes are used\n- `expected_answer_format` when a specific image, video, or voice response is required\n\nLet Kunjani auto-number activities unless the user requires a specific name or slot.\n\n### 5. Validate before publishing\n\nFor a new deck or multi-activity build:\n\n1. Prepare the complete structured payload.\n2. Call `publish_activity_batch` in validate mode.\n3. Correct every validation error.\n4. Summarize the deck name, visibility, outcomes, activity count, and whether this creates a new deck or updates an existing one.\n5. Obtain confirmation for the publish action.\n6. Call `publish_activity_batch` in publish mode.\n7. Report the returned deck ID and URL.\n\nWhen updating an existing deck, call `list_decks` first unless the user supplied an unambiguous deck ID. Pass the existing ID to avoid creating a duplicate.\n\n### 6. Make targeted edits safely\n\n- Read before editing when the current state matters.\n- Use `list_questions` or `get_question` before a targeted activity edit, then use `create_question` or `update_question` for the approved change.\n- Use `list_outcomes` before changing outcome links, then use `create_outcome` or `update_outcome` for the approved change.\n- Use `get_deck` before changing deck metadata or ordering, then use `update_deck` or `reorder_deck_questions` for the approved change.\n- Call `delete_deck`, `delete_question`, or `delete_outcome` only after explicit confirmation of that exact deletion.\n- Describe the exact proposed write and obtain confirmation before executing it.\n- After a successful write, report what changed and identify the affected deck or activity.\n\n## The six Suits\n\nEach Suit has a distinct cognitive job. Match the Suit to the thinking you want, not to variety for its own sake.\n\n### Jolt ⚡\n\nQuick factual recall. Short, direct questions with a clear correct answer.\n\n- Prompt patterns: Define the term / Identify types / What is / Who is / Give examples / Complete the statement / When / Where / Which\n- Typical time: 30 to 60 seconds\n\n### Advance 🚀\n\nPositive reinforcement. Celebrates a good habit, then makes the learner unpack why it matters.\n\n- Shape: `[emoji + specific praise] + [positive action] + Explain the benefits of...`\n- Write the emoji and praise for the **specific achievement** in this activity. Do not use generic openers. For example: ✅ All checks complete! You finished the safety checks before the deadline / 🎯 Customer calm! You resolved the issue without calling a manager / 🛡️ Risk found! You found the allergen risk before serving the dish. The reaction should feel like it belongs to this particular scenario.\n- Typical time: 60 to 90 seconds\n\n### Mystery 🧩\n\nCreative and surprising. The learner shows they understand the concept through a creative vehicle (a song, drawing, story, object, emoji) rather than by doing the task itself.\n\n- Accepts text, voice, image, or video responses. Set `expected_answer_format` to match.\n- Prompt patterns: Reword the lyrics to this song and sing the remix / Draw a picture that illustrates... / Complete the story / Find an object in the room and compare it to... / Create ... out of paper (origami) and share a photo / Give a title to... / Tell a true story about a time... / What is the connection between this picture and...? / Create a diagram or mindmap on... / Draw the effects of... / Create a social media post about... / Find an emoji that best depicts... / Share a string of emojis to... / [Riddle about specific content], who am I? / Write a poem about... / Take a photo of... and add a caption describing...\n- Match the vehicle to the room: songs, dance, and origami for groups that will enjoy them; drawings, object comparisons, titles, captions, social posts, emoji, and riddles are safe anywhere.\n- Typical time: 90 to 300 seconds, depending on response format and complexity\n\n### Oops 💣\n\nThe learner made a mistake. They lose points, reflect on the consequences, and can recover points through a strong reflection.\n\n- Shape: `[emoji + reaction] + [mistake] + Explain the negative consequences`\n- Write the emoji and reaction for the **specific mistake** in this activity. Do not use generic openers. For example: ⚠️ Expired stock risk! You did not check the expiry date before stocking the shelf / 📧 Customer copied! You included the customer in an internal email about their complaint / ✈️ Safety step missed! You did not complete the pre-flight checklist because you were late. The reaction should make the learner feel the weight of this particular mistake.\n- Do not supply the consequences inside the prompt. The mistake goes in; the fallout is what the learner has to produce.\n- Typical time: 60 to 90 seconds\n\n### Explain 💬\n\nDeeper thinking. Summarizing, analyzing, comparing, connecting ideas.\n\n- Prompt patterns: Summarize the main... / Explain the differences between... / Describe the later effects of... / Suggest ways to improve... / How would you apply this?\n- Typical time: 90 to 120 seconds\n\n### Demonstrate 🎮\n\nApplied understanding. Performing a task, role-playing, or producing workplace evidence.\n\n- Accepts text, voice, image, or video responses. Set `expected_answer_format` to match.\n- Prompt patterns: Record a demo video / Voice note explaining how to... / Photo of the completed setup / Write the WhatsApp message you would send to a customer / Role-play a conversation / Create a step-by-step guide\n- Typical time: 90 to 300 seconds, depending on response format and complexity\n\n## Activity quality rules\n\n### Learner-facing activity\n\n- Match the learner's language and reading level.\n- Use short lines and WhatsApp-safe bullets.\n- Use Unicode Mathematical Bold (𝐛𝐨𝐥𝐝) for emphasis. WhatsApp markdown is not available, so this is how emphasis survives delivery. Use it sparingly.\n- Test one thing.\n- Avoid answer leakage.\n- State the required response format clearly.\n- Do not refer to a media filename. Refer naturally to the image, audio, or video the learner receives.\n\n### Answer leakage\n\nBefore writing any activity, answer two questions internally: what is the one specific thing this tests, and does the prompt give the answer away? If you cannot state the one thing clearly, the activity is not ready. If the answer sits in the prompt, rewrite it.\n\nBad, because the prompt contains the answer:\n\n> Poor communication can make customers leave, damage trust, and harm the store. What are the 𝐧𝐞𝐠𝐚𝐭𝐢𝐯𝐞 𝐜𝐨𝐧𝐬𝐞𝐪𝐮𝐞𝐧𝐜𝐞𝐬 of ignoring a customer complaint?\n\nThe learner just rephrases what is already on screen. No recall required.\n\nGood, because the prompt creates a scenario and asks the learner to think:\n\n> 😳 Poor response! A customer approaches you about a faulty product, and you immediately say \"That's not our problem. Contact the manufacturer.\" Explain the 𝐧𝐞𝐠𝐚𝐭𝐢𝐯𝐞 𝐜𝐨𝐧𝐬𝐞𝐪𝐮𝐞𝐧𝐜𝐞𝐬 of dismissing the customer like this.\n\nThe learner must draw on their own understanding. The scenario supplies context, not answers.\n\n### Suggested response\n\nThe suggested response is shown to the learner after submission.\n\n- Keep it lean and scannable.\n- Include the core points a correct response should contain.\n- Do not fill it with edge cases, exceptions, or grading rules.\n- Use simple bullets when several points are required.\n\n### Assessment notes\n\nAssessment notes are private instructions for Kunjani's AI grader.\n\nInclude:\n\n- What makes a response correct or strong\n- The minimum acceptable evidence or number of valid points\n- Acceptable synonyms, alternatives, and real-world examples\n- Important domain facts the grader needs\n- A transcript or precise description of outgoing prompt media when the grader may not receive that media\n- What constitutes valid evidence for image, video, or voice responses\n\nDo not write rigid named-tier rubrics. Kunjani maps the grader's numeric score to learner-facing tiers. Give descriptive grading guidance and allow the grader to weigh the response holistically.\n\n## Worked example\n\nOne finished activity, shown as the field values the tools take.\n\n**Deck:** Retail Customer Service Excellence\n**Audience:** Store floor staff, Grade 10 English reading level\n**Outcome:** Handle an unhappy customer without unnecessary escalation\n**Suit:** Oops 💣\n\n`text`\n\n```\n😳 Poor response! A customer approaches you about a faulty product, and you immediately say \"That's not our problem. Contact the manufacturer.\"\n\nExplain the 𝐧𝐞𝐠𝐚𝐭𝐢𝐯𝐞 𝐜𝐨𝐧𝐬𝐞𝐪𝐮𝐞𝐧𝐜𝐞𝐬 of dismissing the customer like this.\n```\n\n`answer`\n\n```\n• Customer feels 𝐮𝐧𝐯𝐚𝐥𝐮𝐞𝐝 and unheard → they may not return\n• Damages the store's 𝐫𝐞𝐩𝐮𝐭𝐚𝐭𝐢𝐨𝐧 → the customer may post a negative review or tell other people\n• Missed chance to 𝐛𝐮𝐢𝐥𝐝 𝐥𝐨𝐲𝐚𝐥𝐭𝐲 → a helpful response can keep the customer\n• The problem may become more serious → the customer asks to see a manager\n• Staff member may face 𝐝𝐢𝐬𝐜𝐢𝐩𝐥𝐢𝐧𝐚𝐫𝐲 𝐚𝐜𝐭𝐢𝐨𝐧 if the complaint is reported\n```\n\n`assessment_notes`\n\n```\n𝐆𝐫𝐚𝐝𝐢𝐧𝐠 𝐆𝐮𝐢𝐝𝐚𝐧𝐜𝐞\n• Accept any 3 or more valid negative consequences\n• Answers do not need to match the wording above. Accept synonyms and real-world examples\n• Accept consequences at personal level (disciplinary), store level (reputation), or customer level (lost loyalty)\n• Award higher scores for responses that show a chain of consequences, e.g. bad experience → bad review → lost customers\n\n𝐄𝐱𝐭𝐫𝐚 𝐂𝐨𝐧𝐭𝐞𝐱𝐭\n• This activity assumes basic retail floor experience\n• Consider immediate effects and later effects, not only the customer's first reaction\n```\n\n`time_in_seconds`: `75`\n`outcomes`: `[\"Handle an unhappy customer without unnecessary escalation\"]`\n\nNote the split. The suggested response carries only the core points, because the learner sees it. The tolerances, alternatives, and domain context sit in the assessment notes, which the learner never sees.\n\n## Media rules\n\n- Attach only hosted HTTPS media URLs supported by the live tool schema.\n- Use `picture_url` or `facilitator_picture_url` only when those fields exist in the tool schema.\n- Use video-link fields only for supported YouTube or Vimeo URLs.\n- Describe all outgoing prompt media in `assessment_notes` so the grader can judge responses with the correct context.\n- Do not replace a learner's submitted voice, image, or video with a transcript. The learner's actual submission is the evidence being assessed.\n- If no suitable hosted media exists, create a media brief and leave attachment for the Kunjani deck-builder UI.\n\n## Language behavior\n\n- Respond in the user's language.\n- Create outcomes, activities, suggested responses, assessment notes, and learner-facing copy in the user's requested language.\n- Preserve domain and brand terms when translation would reduce accuracy.\n- If the brief mixes languages and the target language is unclear, ask which language the final deck should use.\n- Keep tool field names in English and translate only field values.\n\n**Plain-language default for learner-facing content.** Unless the user asks for a different level:\n\n- Aim for CEFR B1 in English, or equivalent plain language in any other language.\n- Use STE-inspired plain-language principles, not formal ASD-STE100 compliance.\n- Use short sentences, common words, and direct instructions. Keep one main idea per sentence.\n- Avoid idioms, phrasal expressions, slang, metaphors, wordplay, culture-specific references, and unnecessary jargon. Use them only when the activity must teach or test them. This covers how you word the prompt, not what a Mystery asks the learner to create.\n- Keep established brand terms and necessary domain terms unchanged.\n- Write for easy understanding and translation. Adapt naturally to each language instead of copying English sentence patterns.\n\nApply this default to learning outcomes, activity text, suggested responses, deck descriptions, and other copy the learner sees. Keep assessment notes clear and concise, but do not remove technical detail the grader needs.\n\n## Pre-publish checklist\n\nConfirm all of the following before a publish call:\n\n- The audience and behavior-change goal are clear.\n- Outcomes are approved or explicitly skipped.\n- Every activity advances at least one approved outcome when outcomes are used.\n- Every activity tests one specific thing without giving away the answer.\n- Suit, timing, and response format match the cognitive task.\n- Suggested responses are concise and learner-facing.\n- Assessment notes contain enough flexibility and context for consistent grading.\n- Outgoing media is described in the assessment notes.\n- Existing deck IDs were resolved before updates.\n- The payload passed validation.\n- The user approved the exact write.\n"
}SHA-256 of public snapshot: 04552bf36d0d0cefbb83d07f4a5dd6df4da5a6873391633f49990bba43fa3523