{"id":41387,"plugin_id":"plugin_asdk_app_6a6172c418e481918bf3817aa288e3f0","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-24T12:58:58.999Z","digest":"bd9431a47921d5699a39c69b026595eab4ca5bfaf6076165507165e9f171f90c","against":null,"payload":{"description":"Create Dathent social post drafts in a saved brand voice, reuse research and brand context, or update specific brand details. Use for captions, images, carousels, and on-brand content creation; uploading a file alone does not create a draft.","included_files":[],"name":"brand-voice-content","skill_md_contents":"---\nname: brand-voice-content\ndescription: Create Dathent social post drafts in a saved brand voice, reuse research and brand context, or update specific brand details. Use for captions, images, carousels, and on-brand content creation; uploading a file alone does not create a draft.\n---\n\n# Create content in the brand's voice\n\nUse the user's language for the conversation and their requested publication language for the post. Work with the Dathent tools actually available on this connection; plan limits and granted permissions still apply.\n\n## Use the right context\n\n- Reuse a known brand. Omit `brandProfileId` for the active brand; use `list_brands` only to resolve an unclear destination or a different named brand.\n- Brand context includes the business description, audience, offer, writing voice, saved visual identity (including logo and palette settings), and the current content strategy. Dathent applies that saved context server-side. Read `get_brand_profile` when the user asks about it or missing context is necessary; do not rebuild a competing profile in chat or fetch it merely to open another card. Respect saved branding settings and explicit user changes; do not promise that every generated image includes a logo.\n- For a requested persistent voice change, use `update_brand_profile` with only the authorized fields. Its `tone` accepts a preset or custom description. A request to rewrite one caption does not authorize changing the saved profile.\n- Dathent applies saved research and the content plan during generation. Do not fetch them as a ritual before every draft. Read `get_content_plan` when a suitable topic is missing; read saved research only when a specific missing fact is needed. A context read does not mean the user asked to open Research. A one-off draft does not require completing full brand setup; follow actual returned requirements.\n\n## Create the requested draft\n\n- Treat \"create an Instagram draft\", \"make a post\" and an affirmative continuation such as \"let's generate\" as instructions to create the requested draft. Reuse that authorization and the already selected brand, platform, topic and media choice. Briefly acknowledge and proceed; do not turn the request into another confirmation or image-credit questionnaire. Ask about an additional spend or different action only when it was not already authorized. Creating a draft does not authorize scheduling, publication, a brand change or Autopilot.\n- Use `generate_post` for new copy. Supply a concrete `topic` of 3–300 characters, one post unless another count was requested, and the user's platform. If no topic was supplied, choose a relevant angle from the known content plan or saved business context. Read only the missing plan/profile context needed to choose it; do not ask \"what should it be about?\" when that context is sufficient. Do not invent products, offers, prices, dates or results. Ask one focused question only if the brand or essential subject cannot be established.\n- Use `create_post_draft` for a complete final caption, preserving it verbatim. It requires `caption` and a nonempty `platforms` array. Do not rewrite approved text during saving.\n- Respect the saved workspace image preference when the user has not chosen media: the enabled default generates a matching image as part of the draft, without another media-choice question. An image-off workspace can produce a text-only draft. An explicit request for a new image is already authorization for that image; do not ask again. If the saved preference cannot be read, follow the returned failure rather than guessing.\n- Explicit text-only requests use `allowTextOnly: true`. Original photos/videos already saved in Media use `mediaAssetIds`; supported attached photos can use `images`. Do not combine those with image generation or text-only flags.\n- Reference photos guide a new image; they are not the finished media. Use `referenceImages` or `referenceAssetIds`. With `create_post_draft`, this requires `generateImage: true` and `confirmImageSpend: true` after the user has authorized image-credit spending. `generate_post` does not accept those two flags; respect its workspace image setting and returned result.\n- When the saved image preference is known to be off and the user explicitly requested a new image, compose the requested caption from their topic and use `create_post_draft` with `generateImage: true` and `confirmImageSpend: true`. Preserve any finalized caption. Do not silently downgrade a required new image to text-only, change the saved preference, or create a second batch to replace an already accepted one.\n\n## Hand off asynchronous work\n\nAfter an accepted batch, follow the returned `nextAction`. On a Workspace connection, creation tools return data without a compact card: call `open_workspace` once with `view: \"posts\"`, the returned brand ID and `batchId` (or the returned ready `postId`) to show progress or the saved result. An existing progress view can keep updating. On a connection with compact generation cards, briefly acknowledge and let that card display. Do not open both views.\n\nDo not browse posts/media or repeatedly poll just to wait. Use `get_generation_status` with the same returned `batchId` when a progress view is unavailable, final text was explicitly requested, or an already-authorized next step needs the result. If still pending, preserve the ID and report that state; never restart creation to check progress.\n\nClaim a completed draft only from returned post/status evidence. `waitingForImage` or a missing required image is not a publish-ready success; an intentionally text-only draft can be ready without an image when the returned state supports it. After an ambiguous timeout, inspect the existing batch or post before any retry. Offer the returned `appUrl` for review; publication remains a separate authorized action.\n\nFor a request to work interactively with an existing draft, use `open_workspace`\nwith `view: \"posts\"` and its known `postId` when that tool is available. Keep the\nsame target/version identity. The panel's capabilities determine whether an\nedit is supported; never recreate, republish or unschedule a post to work around\na disabled edit. A focused `get_post` preview remains sufficient for a quick\nread-only check.\n\nUse existing entitlements and return actual allowance failures neutrally. Do\nnot promote plans, sell credits, initiate checkout or link to an upgrade flow\ninside this plugin.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}