post
Skill0 starsChanged 12 days agoMITView on GitHub
Draft and schedule a social media post with Flung across the person's connected accounts (X, LinkedIn, Bluesky, Threads, Mastodon, Instagram, Facebook, TikTok, YouTube, Pinterest, Discord, Farcaster), now or at a time they name. Passes the local time the person said straight to Flung without converting it, and confirms the scheduled time back in their own time zone with get_time. Use when the person asks to post, share, announce, tweet, schedule or queue something on social media, or runs /flung:post with the text or an idea.
18 other projects use a version of this.
Adopted by
Most recently taken up by
- dcbruck/claude-skillstheir own version, first seen Oct 20, 2026
- Lzdevmendes/motion-studiotheir own version, first seen Oct 15, 2026
- ayrshare/ayrshare-social-media-api-claude-plugintheir own version, first seen Oct 13, 2026
- Suge8/friedbuntheir own version, first seen Oct 11, 2026
- devinat1/skillstheir own version, first seen Oct 6, 2026
- YoniChechik/claude-code-configtheir own version, first seen Sep 18, 2026
Other versions18 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 18
- danium/lateral-thinking★ 311same name
- N1arko/redaktura-skills★ 130same name
- analystacademy/claude-skills★ 35same name
- ayrshare/ayrshare-social-media-api-claude-plugin★ 19same name
- imMamdouhaboammar/linkedin-animated-infographics★ 14same name
- Suge8/friedbun★ 12same name
- Epistates/sparX★ 3same name
- robertnowell/marketing-pipeline★ 2same name
- dcbruck/claude-skills★ 1same name
- devinat1/skills★ 1same name
8 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository3 other files it gives its agents.
- connectSkill
- release-postSkill
- statusSkill
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 0 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 15 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 23
Read the clock: Call get_time. It answers timeZone, timeZoneSource, now (UTC) and nowLocal.
- Very specific: line 25
Find the accounts: Call list_accounts (with profileId, and status: "active").
- Very specific: line 26
Read the limits: Call list_platforms once. For each platform note maxTextLength, requiresMedia, maxImages and video.
- Very specific: line 27
Draft the copy: Write one version per platform that fits its maxTextLength, counting every character, links in full.
- Very specific: line 51
For a post sent now,: call get_post with its id after a few seconds and report each account: published with its URL, or failed with the …
“Common” is measured: kept by at least 6 in 10 of the 15 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Draft and schedule a post
The Flung MCP server does the work: it knows the person's accounts, each platform's limits and their time zone, and it turns a local time into UTC itself. Your part is good copy, the right accounts, and passing the time exactly as the person said it.
The request is $ARGUMENTS. If that is empty, ask what to post and when.
The time rule
This rule overrides everything below.
- Pass
publishAtas the person's own wall-clock time, writtenYYYY-MM-DDTHH:MMwith no offset and noZ: "Tuesday at 9am" becomes2026-11-03T09:00. Flung converts it to UTC in their zone, and handles clock changes. - Never convert a time yourself, never add an offset, never work out UTC, and never use the clock of this machine or its
datecommand: the machine's zone is not the person's. - Pass
timeZoneonly when the person named a place or zone ("9am in Athens", "New York time"), as an IANA name such asEurope/Athens. Otherwise leave it out: Flung uses the zone of the person who signed in. - For "now", leave
publishAtout.
Steps
- Read the clock. Call
get_time. It answerstimeZone,timeZoneSource,now(UTC) andnowLocal. UsenowLocalto turn "tomorrow", "Monday" or "next week" into a date. If the day is unclear ("this Friday" on a Friday), ask. - Pick the brand. A brand (a profile in the API) keeps one customer's or one product's accounts apart. Call
list_profiles. With more than one brand and none named, ask which one; then pass itsidasprofileIdto every call below. With none, leaveprofileIdout. - Find the accounts. Call
list_accounts(withprofileId, andstatus: "active"). Match the platforms the person named; if they said "everywhere", use every active account. An account that isneeds_reconnectordisconnectedcannot post: say so, and offer theflung:connectskill. - Read the limits. Call
list_platformsonce. For each platform notemaxTextLength,requiresMedia,maxImagesandvideo. Instagram, TikTok, YouTube and Pinterest need media. Draft the copy. Write one version per platform that fits its
maxTextLength, counting every character, links in full. Keep the person's words and facts; change length and tone, not meaning. No invented numbers, quotes or links. Typical limits, whichlist_platformsoverrides:Platform Characters X 280 Bluesky 300 Farcaster 320 Threads, Mastodon, Pinterest 500 Discord 2000 Instagram, TikTok 2200 LinkedIn 3000 YouTube 5000 - Media. Flung takes a public
httpsaddress of an image or video (JPEG, PNG, WebP, GIF, MP4, QuickTime, up to 100 MB). A file only on this machine cannot be sent through the MCP server: ask for a public link instead. For TikTok, callget_posting_optionsand ask the person who may see the post (privacyLevel). - Show the draft and ask. Show each platform's text with its character count, the accounts by username, the media, and the time as the person said it ("Tuesday 3 November at 09:00, your time"). Schedule nothing until they say yes. Change what they ask and show it again.
Schedule. Pick the call:
The post Call The same text everywhere, media from URLs, by platform name publish_to_platformswithcontent,platforms,mediaUrls,publishAtorbestTime: true, andprofileIdDifferent text per platform, or chosen accounts import_mediafor each file, thenschedule_postwithcontent,accountIds,mediaIds,platformOverrides,publishAt,profileIdand anidempotencyKeyMake the
idempotencyKeyonce per post, such aspost-<short slug>-<date>, and reuse the same one if you retry the call, so the post is scheduled once.- Confirm the time back. The answer has
publishAt(UTC),publishAtLocalandtimeZone. Callget_timeagain and check itstimeZonematches the post's (unless the person named another zone); if they differ, say so before anything else. Tell the person the local time frompublishAtLocaland the zone name, never the UTC time alone: "Scheduled for Tuesday 3 November at 09:00 Australia/Brisbane." If the answer haswarnings(a time skipped or repeated by a clock change), read them out. If a platform wasskipped, say which and why. - For a post sent now, call
get_postwith its id after a few seconds and report each account: published with its URL, or failed with the reason.
Example
The person says: "Post that our docs site is live to X and LinkedIn tomorrow at 9am."
get_timeanswerstimeZone: "Australia/Brisbane",nowLocal: "2026-11-02T16:40". Tomorrow is 3 November.list_profilesanswers one brand, so noprofileId.list_accountsgivesacct_x...(X) andacct_li...(LinkedIn), both active.- The draft: X, 80 characters; LinkedIn, 110 characters, both with the link. The person says yes.
The call:
{ "name": "schedule_post", "arguments": { "content": "Our docs site is live: every guide, the API reference and the MCP tools in one place. https://docs.example.com", "accountIds": ["acct_aaaaaaaaaaaaaaaaaaaaaaaa", "acct_bbbbbbbbbbbbbbbbbbbbbbbb"], "platformOverrides": { "x": { "content": "Our docs are live: guides, API reference and MCP tools. https://docs.example.com" } }, "publishAt": "2026-11-03T09:00", "idempotencyKey": "post-docs-live-2026-11-03" } }- The answer has
publishAtLocal: "2026-11-03T09:00",timeZone: "Australia/Brisbane". Say: "Scheduled for Tuesday 3 November at 09:00 Australia/Brisbane, on X and LinkedIn."
Wrong: "publishAt": "2026-11-02T23:00Z" (converted by hand) or "publishAt": "2026-11-03T09:00+10:00" (an offset added). Both bypass the person's zone.
When a call is refused
A refused call is an answer: its text says what to do next. The common ones:
| Refusal | What to do |
text_too_long | Shorten that platform's text and show it again. |
| An account needs reconnecting | Offer the flung:connect skill, then schedule. |
plan_limit_reached | Give the person the upgradeUrl from the answer; schedule nothing else. |
validation_failed on profileId | An account is not in that brand: list the brand's accounts again. |
To move or change a scheduled post, use update_post with its id and the new local publishAt; to stop one, cancel_post, only when the person asks.
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.

