{"id":90037,"plugin_id":"plugin_asdk_app_6ac47ec9989c8191a0b97594dfdd8021","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-11T00:09:02.826Z","digest":"00929730cdd9435be64a02c82c5022e16317db13bc508010c9378026952fd910","against":null,"payload":{"description":"Schedule a single social media post to one or more platforms for a specific time. Use when the user says \"schedule a post\", \"post tomorrow\", \"post at 3pm\", or references scheduling one specific post. For batch scheduling of multiple posts, use weekly-content-batch instead.\n","included_files":[],"name":"schedule-post","skill_md_contents":"---\nname: schedule-post\ndescription: >\n  Schedule a single social media post to one or more platforms for a specific time.\n  Use when the user says \"schedule a post\", \"post tomorrow\", \"post at 3pm\", or\n  references scheduling one specific post. For batch scheduling of multiple posts,\n  use weekly-content-batch instead.\n---\n\n# Schedule a Post\n\n## Goal\nCreate one draft and schedule it for a specific time on one or more platforms.\n\n## Workflow\n\n1. **Identify the brand (content group).** Reuse the known content group from the conversation. If it is unknown, call `listContentGroups`; ask which one when multiple groups match.\n\n2. **Check destinations.** Reuse destinations already confirmed in the conversation. Otherwise call `listAccounts` for the selected content group. Use only connected accounts.\n\n3. **Prepare or retrieve the draft.**\n   - For new content, preserve user-supplied text or draft text in the conversation. Call `generateCaption` only when the user specifically asks to use PostQuickAI's caption generator. Call `createPost` to save the approved text as a draft.\n   - For an existing draft, reuse its known ID or call `listPosts` to locate it. Call `getPost` and read back its current content before scheduling.\n\n4. **Resolve the time.**\n   - Convert natural language such as \"tomorrow at 9am\" to an ISO 8601 timestamp in the user's timezone.\n   - The time must be at least 5 minutes in the future.\n   - Ask when the date, time, or timezone is ambiguous.\n\n5. **Confirm.** Show the complete content, connected destination accounts, and exact scheduled time. Get approval before calling `schedulePost`.\n\n6. **Schedule.** Call `schedulePost` once for the approved draft ID and time. Return the post ID and scheduled time. Use `getCalendar` when the user wants to check surrounding schedules. If asked to cancel, inspect the saved item and obtain approval for `cancelSchedule`; do not claim already accepted publishing can be recalled.\n\n## Error handling\n\n- `LIMIT_EXCEEDED` — stop and explain that the action is currently unavailable; do not promise completion.\n- A missing content group or account — call `listContentGroups` or `listAccounts` again; never invent an ID.\n- A past scheduled time — ask the user for a new future time.\n\n## Never do\n\n- Never schedule before the user confirms the content, destinations, and time.\n- Never target an account that is not connected to the signed-in PostQuickAI account.\n- Never claim delivery until the saved post reports publishing results.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}