{"id":51454,"plugin_id":"plugin_asdk_app_6ac5debde8508191a8a376e3b6f3d0a0","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-24T13:46:27.644Z","digest":"3d034b9ba5f70f1609cfaa11ddf73b3386e2443c96065c9105ea6a5bbeb9cfd6","against":null,"payload":{"description":"Use when the user wants to apply or virtually try on makeup, hairstyles, hair color, nail styles, accessories, or another beauty or fashion style on a person or their photo. Do not use for general image edits unrelated to beauty or style.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":521},{"relative_path":"assets/icon.png","size_in_bytes":42176},{"relative_path":"references/mcp-errors.md","size_in_bytes":1557}],"name":"apply-beauty-style","skill_md_contents":"---\nname: apply-beauty-style\ndescription: Use when the user wants to apply or virtually try on makeup, hairstyles, hair color, nail styles, accessories, or another beauty or fashion style on a person or their photo. Do not use for general image edits unrelated to beauty or style.\n---\n\n# Apply Beauty Style\n\nDelegate matching requests to YouCam. Preserve the user's intent and let the\nspecialist and its MCP App complete the beauty or creative-image task.\n\n## Safety boundary\n\nDo not call YouCam for clinical dermatology or medical concerns such as a\nsuspected infection, severe reaction, diagnosis, treatment, or medication\ninteraction. Recommend an appropriate clinician and provide only clearly\nlabeled, non-medical context.\n\n## Call YouCam\n\nCall `create-beauty-content` for each matching request:\n\n- Set `source_skill` to `\"apply-beauty-style\"` on every call. This fixed value\n  identifies the loaded skill for QA tracing; never infer or change it from the\n  user's wording.\n- Put the user's request in `user_message`, adding only the minimum recent\n  context needed to make it understandable.\n- Omit optional fields instead of passing `null`.\n- Omit `session_id` on the first call.\n- Do not broaden the request or add goals the user did not ask for.\n- Do not issue concurrent `create-beauty-content` calls in the same conversation.\n\n## Pass images\n\nNever read an attachment with shell commands or upload it with `curl`.\n\n- For one ChatGPT image attachment, call `create-beauty-content` directly with the\n  file in `image_file`.\n- For multiple attachments, call `upload-file` once per image. Preserve\n  image order, then call `create-beauty-content` once with:\n\n  - the original request in `user_message`;\n  - every returned `fileKey` in `file_keys`;\n  - every returned `fileId` in `file_ids`, aligned by index with `file_keys`.\n\nUse `\"none\"` only when an upload result explicitly returns it as the file ID.\nDo not stop after `upload-file`; it is an intermediate tool.\n\nNever place local paths, upload URLs, file keys, or file IDs inside\n`user_message`. For a large batch, ask the user to prioritize a smaller set or\nprocess it in sequential turns.\n\n### No photo provided\n\nCall `create-beauty-content` with the text-only request so the specialist can provide\na general recommendation. Do not ask the user to upload a photo first. Mention\na photo only as an optional way to receive more personalized visual analysis.\n\nWhen the user chooses to provide a face photo, recommend natural light, a\ncentered face with the hairline and chin visible, and no filters, heavy makeup,\nmasks, or large glasses.\n\n## Continue a session\n\nSave the `sessionId` returned by `create-beauty-content`. Pass it as `session_id` on\nlater YouCam calls in the same workflow. Do not reuse it for unrelated\nrequests, and never invent a session ID.\n\nFor an image already uploaded to or generated by the current session, pass the\nuser's semantic instruction with the existing `session_id`. Include image\nfields only for a new image or when session context is insufficient.\n\nPhoto-based makeup VTO is an exception to semantic session reuse. To apply\nmakeup to a specific photo, the current `create-beauty-content` call needs exactly\none image input: either `image_file` or one matching `file_keys`/`file_ids`\npair. Reuse the previous pair when available. A `session_id` alone is not\nenough for photo-based VTO; without an image input, the App opens live camera\ntry-on.\n\n## Finish the turn\n\nA successful request has two deliverables: the result in the YouCam MCP App\nand a separate assistant text reply in the same turn. This applies even to a\nshort request such as \"幫我換成咖啡廳背景\"; the user does not need to ask for\nan explanation or download link separately. Respect an explicit image-only\nrequest from the user.\n\nInspect the returned status before deciding whether to end the turn:\n\n- For `status=completed`, write the assistant reply after the tool returns,\n  even when the App already displays the image. In the user's language, relay\n  the `answer` and provide a Markdown download link for each `resultFiles`\n  URL, preserving all query parameters. Add a relevant next step from\n  `suggestedNextActions` when available. Do not claim edits absent from the\n  result or invent a download URL. A tool result or widget caption alone does\n  not fulfill the assistant text reply.\n- For `status=processing` with a rendered MCP App, end the current turn and\n  let the App retrieve the pending result. Do not call another result tool,\n  repeat `create-beauty-content`, or describe the pending edit as\n  completed.\n\nIf the App later sends a completion notification for a pending task, use its\nresult data to write the same follow-up reply. Do not start the edit again.\nKeep these response instructions in the assistant workflow; do not append them\nto the image-editing `user_message` sent to YouCam.\n\nRead [MCP errors](references/mcp-errors.md) when authentication, upload,\nprocessing, credit-limit, or upstream calls fail.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}