calendar-maintenance
Skill0 starsChanged 41 days agoMITView on GitHub
Safely changes posts already in the user's Artima calendar. Moves them to a new time, edits their text, hashtags or media, pauses them back to drafts, or cancels them, while tracking post IDs that change and never blindly retrying a change that timed out. Use when the user wants to reschedule, fix, pause, cancel or review scheduled posts. Triggers include "move Thursday's posts to Friday", "fix the typo in my scheduled post", "pause that post", "cancel tomorrow's post", "what's scheduled this week", "přeplánuj příspěvek", "zruš zítřejší post".
In this repository5 other files it gives its agents.
- brand-voice-setupSkill
- inbox-triageSkill
- performance-reviewSkill
- upload-local-mediaSkill
- weekly-content-planSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 3 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 48
"is in the past": ask for a future time.
- Distinctive: line 67
Ask for a yes, unless the request already was one for exactly these changes.
- Distinctive: line 72
When you move several posts "to Friday", keep each post's local time and work out the offset for the new date.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Calendar maintenance
Change posts that are already planned in Artima without losing track of them, publishing them by accident, or doing the same thing twice.
Ground rules
- Consent. Before any change, state exactly what will happen: which account, which post (its first line), and old → new time or text. Then get a clear yes. A yes covers the list you showed and nothing you add later. If the user's own message already identifies the exact post and the exact change and tells you to go ahead, that is consent for exactly that change.
- A request by date or category is not consent. "Cancel everything on Thursday", "delete all old drafts" or "clear my week" does not tell you which posts the user has in mind, because they have not seen the list. Look the posts up, show them, and wait for a yes in the user's next message before you change anything.
- Deleting needs a yes to the list you showed.
delete_draftis permanent. Call it only after you have listed the exact posts to delete and the user has confirmed that list. When the user says "cancel" or "zruš", also offer to pause instead (unschedule_postkeeps the post as a draft). - Role. Editing a post's content needs Reviewer or higher. Changing times, scheduling, pausing, deleting and publishing need Editor or higher. Check with
list_workspaces. - Local time with an explicit offset. Artima does not know the user's timezone. If you don't know it, ask once. Send every time as ISO 8601 with the offset valid on that date, for example
2027-04-02T09:00:00+02:00, never a bareZ. Daylight saving changes the offset: in the EU on the last Sunday of March and of October. - One post at a time. Make one change, read the result, update your notes, then move to the next post.
Which tool for which change
| Goal | Tool | What to know |
| Find posts | list_posts, then get_post_detail | One call per account and window |
| Edit text, hashtags, media or format | update_draft | Each field you pass replaces the old one completely |
| Move a scheduled post | update_schedule | New offset-aware scheduleDate; keeps the post ID |
| Set a planned time on a draft | update_schedule | The post stays a draft with a planned time and does not publish by itself, even if the result reads Scheduled |
| Make a draft publish automatically | schedule_post | Goes live at that time; needs the user's yes |
| Pause (back to draft) | unschedule_post | Returns a new post ID |
| Cancel | delete_draft | Permanent; needs the user's yes |
| Publish right now | publish_post_now | Public at once; needs the user's yes |
Post IDs that change
Some operations replace the post with a copy and return deprecatedPostId and newPostId:
update_drafton a plain draft (one without a time; a scheduled or planned post keeps its ID);unschedule_post;update_schedulewith an emptyscheduleDateto clear the time.
From then on the old ID is dead. Use newPostId for every later call, including get_post_detail, schedule_post and delete_draft. If the result also has stalePostId, the old copy could not be removed. Tell the user, and with their OK call delete_draft on that stale ID; deleting does not publish anything.
Results you must handle
TimedOut, or an error saying the backend did not respond in time. The change may have happened anyway. Do not repeat the call, and don't try to get the same result with a different tool. Wait a few seconds and check:get_post_detailon the post, and after an edit or pause alsolist_posts, looking for a duplicate draft. Report what you find. If it is still unclear, ask the user to look at the calendar in Artima before anything else is tried.TooCloseToFire(withsecondsUntilFire): the post publishes in under about 90 seconds and can no longer be moved or paused safely. The only way to stop it isdelete_draft. Ask the user right away: delete it, or let it go out.AlreadyPublished,CannotDelete, orunchangedon a posted post: it is live. Artima cannot edit or remove a published post from the network. The user has to edit or delete it on the platform itself.unchanged: true: nothing changed (for example, it was already a draft). Say so.- "is in the past": ask for a future time.
- Status Idea, ToCheck, Approved, Cancelled or Failed:
update_draftcannot edit these. Suggest opening the post in Artima.
Editing rules
textreplaces the whole caption. To fix a typo, send the full corrected caption.hashtagsreplaces the whole list, without#.mediaUrlsreplaces all media, so include every file that should stay.- The caption plus its hashtags must fit the platform limit: X 280 (weighted characters), Threads 500, Pinterest 500, Instagram 2,200, TikTok 2,200, LinkedIn 3,000, Facebook 5,000, YouTube 5,000.
Workflow
- Find the posts.
list_accountsgives thesocialAccountIds. Calllist_postsonce per account with eitherrange(day,weekormonth, plusreferenceDate) orstartDatewithendDate, never both.postsis a sample (default 25, maximum 100); filter it bystatus. Then callget_post_detailon each post you will touch, for its exact text, status andscheduledAt(UTC). Plan. Show a before → after table in the user's local time:
Post Account Now After Change "Spring blend is here…" (pst_123) Instagram Thu 1 Apr 09:00 Fri 2 Apr 09:00 move Ask for a yes, unless the request already was one for exactly these changes.
- Apply the changes one post at a time with the tool from the table. After each call, read
status,newPostIdandnote, and update your table. - Verify each changed post with
get_post_detail, using its current ID. - Report the final table: post, account, old → new, final post ID, status. Point out anything left for the user, such as a stale copy to delete or a post that is already live.
When you move several posts "to Friday", keep each post's local time and work out the offset for the new date. It can differ across a daylight-saving change.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

