ProPost
Get started
All skills

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

  1. get_account: time zone, weekly cap, approval setting, autonomy.
  2. list_channels: note needs_reconnect and queue_paused per channel.
  3. list_posts once per status, with limit up to 100 (and channel_id when there are many channels):
    failed (has error)
    draft (waiting for the person's approval)
    approved (ready, not scheduled)
    scheduled (has scheduled_at, soonest first)
  4. get_posting_schedule per active channel for slots and the next free slot.

Workflow

  1. Failed posts first. For each, read error (or get_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, then check_post.
    Missing media: attach (propost-visual-posts, propost-video-posts).
    network_unavailable or timing: just retry.
    Reconnect: tell the person; skip that channel meanwhile. Then retry with add_to_queue or schedule_post (schedule level) once check_post is clean. A failed post can be rescheduled directly. Never publish_now as a retry unless they say yes after seeing the text.
  2. 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.
  3. Draft triage. Group drafts by age and channel. For each: keep (ready to approve), improve (rewrite_post or update_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.
  4. Approved but unscheduled. At schedule level, check_post then add_to_queue in order. On drafts-only, list them as waiting.
  5. Runway check. From the scheduled list compute days covered per channel (the last scheduled_at minus now, from get_account time). Under 3 days is thin, under 1 is empty. Compare with the cadence in get_posting_schedule. If low, point to propost-weekly-content-plan and to unused ideas (list_ideas, see propost-idea-bank).
  6. Reschedule. To move a post: unschedule_post (allowed at every level; it goes back to approved), then schedule_post with the new ISO time and offset, or add_to_queue. Confirm the new time in the person's time zone. If the queue is paused, say so (queue_paused).
  7. Delete only with consent. Show the exact list (id, channel, first line, age) and ask "delete these N?". Then delete_post each. Deleting cannot be undone. Published posts cannot be deleted.
  8. 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_post is limited to 3 per post and overwrites the text; use update_post for small edits.
  • Never publish_now to clear a backlog without an explicit yes per post.

If something fails

  • network_rejected: read the post error, 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 use schedule_post.
  • weekly_limit, autonomy_limit, rate_limited: see ../CONVENTIONS.md.

How to add a skill

  1. Claude (web and desktop): download a skill as a .zip, then add it in Settings, under Capabilities, Skills.
  2. Claude Code: unzip it into ~/.claude/skills/ (or your project’s .claude/skills/).
  3. 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.