Craft and operations
Queue maintenance
propost-queue-maintenance
When it helps
Keeps a ProPost pipeline healthy by triaging drafts, approved and scheduled posts, fixing or retrying failed posts, flagging channels that need reconnecting, checking runway (how many days of content are queued), and unscheduling or rescheduling posts, deleting stale drafts only with a yes. Use whenever someone asks "what's in my queue", "why did my post fail", "clean up my drafts", "do I have enough scheduled", "fix my failed posts", "move this post to Friday", "what's waiting for approval", "my queue is a mess", or runs a regular content check-in.
Skills work with the ProPost connector, available on Pro and Premium. Set up the connector
A short, regular audit: what is waiting, what is broken, how much runway is left, and a clear list of actions, done only as far as the connection's autonomy and the person's yes allow.
Before you start
get_account: time zone, weekly cap, approval setting,autonomy.list_channels: noteneeds_reconnectandqueue_pausedper channel.list_postsonce per status, withlimitup to 100 (andchannel_idwhen there are many channels):failed(haserror)draft(waiting for the person's approval)approved(ready, not scheduled)scheduled(hasscheduled_at, soonest first)get_posting_scheduleper active channel for slots and the next free slot.
Workflow
- Failed posts first. For each, read
error(orget_post). Codes are neutral for assistants:network_rejected(the network refused the content; the message says why),network_unavailable(temporary),channel_needs_reconnect,too_long,image_required,video_required,video_unsupported,weekly_limit. Fix by cause:
Text problem:update_post, thencheck_post.
Missing media: attach (propost-visual-posts,propost-video-posts).network_unavailableor timing: just retry.
Reconnect: tell the person; skip that channel meanwhile. Then retry withadd_to_queueorschedule_post(schedule level) oncecheck_postis clean. A failed post can be rescheduled directly. Neverpublish_nowas a retry unless they say yes after seeing the text. - Reconnect warnings. List channels with
needs_reconnect, which posts are stuck on them (scheduled posts on such a channel will not go out), and ask the person to reconnect in ProPost. You cannot do it. - Draft triage. Group drafts by age and channel. For each: keep (ready to approve), improve (
rewrite_postorupdate_post), or stale (old, about a past event or outdated fact). Present as a table with a proposed action. Do not decide staleness alone for anything the person wrote. - Approved but unscheduled. At schedule level,
check_postthenadd_to_queuein order. On drafts-only, list them as waiting. - Runway check. From the
scheduledlist compute days covered per channel (the lastscheduled_atminus now, fromget_accounttime). Under 3 days is thin, under 1 is empty. Compare with the cadence inget_posting_schedule. If low, point topropost-weekly-content-planand to unused ideas (list_ideas, seepropost-idea-bank). - Reschedule. To move a post:
unschedule_post(allowed at every level; it goes back to approved), thenschedule_postwith the new ISO time and offset, oradd_to_queue. Confirm the new time in the person's time zone. If the queue is paused, say so (queue_paused). - Delete only with consent. Show the exact list (id, channel, first line, age) and ask "delete these N?". Then
delete_posteach. Deleting cannot be undone. Published posts cannot be deleted. - Report: counts per status, fixed, retried, what needs the person (reconnect, approvals, missing media), the runway per channel, and the next step.
Writing guidance
- Lead with the one thing that needs attention now ("2 posts failed, 1 channel needs reconnecting"), then details.
- Use the person's own words for post names: the first line, not the id. Keep ids available for follow-up.
- Be specific about why a post failed, in plain language, and say what you changed.
- Example row:
Fri 09:30 | LinkedIn | "We cut onboarding..." | failed: network_rejected (text too long after edit) | shortened to 2,400 chars, rescheduled Fri 09:30+01:00.
Guardrails
- Never delete, unschedule or overwrite text without the person seeing it and saying yes (unscheduling a clearly mistimed post you are asked to move is fine).
- On drafts-only connections, editing an approved or scheduled post sends it back to draft; warn the person it now needs approval.
- Do not "retry until it works"; one fix, one retry, then report.
- Do not exceed the weekly cap; leave extras as approved and say so.
rewrite_postis limited to 3 per post and overwrites the text; useupdate_postfor small edits.- Never
publish_nowto clear a backlog without an explicit yes per post.
If something fails
network_rejected: read the posterror, fix the text or media, retry later.network_unavailable: wait and retry once.channel_needs_reconnect: ask them to reconnect; skip meanwhile.already_scheduled: unschedule first.not_scheduled: it is not scheduled, nothing to undo.already_published: leave it.nothing_to_change: edit equals current text; skip.time_in_past/time_too_far: choose 1 minute to 1 year ahead.queue_paused/no_slots: resume or add slots (propost-posting-schedule-optimizer) or useschedule_post.weekly_limit,autonomy_limit,rate_limited: see../CONVENTIONS.md.
How to add a skill
- Claude (web and desktop): download a skill as a .zip, then add it in Settings, under Capabilities, Skills.
- Claude Code: unzip it into ~/.claude/skills/ (or your project’s .claude/skills/).
- Other assistants: open the SKILL.md and paste it into the assistant’s custom instructions or project knowledge.
Skills are written in English. Your assistant will still answer and write posts in your language.