dm
Skill0 starsChanged 2 months agoMITView on GitHub
Send and manage direct messages via Postproxy. Use when the user wants to read or send DMs, reply in a chat, react to a message, or privately reply to a comment on Facebook/Messenger, Instagram, Telegram, or Bluesky.
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 0 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
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 8
If a profile isn't known, call profiles_list and pick a DM-capable profile.
- Very specific: line 9
Call dm_chats_list with the profile ID.
- Very specific: line 15
Use an existing chat ID, or call dm_chat_create with participant_external_id to find-or-create a chat (idempotent).
- Very specific: line 16
Call dm_message_send with the chat ID and either body or one media attachment (never both.
- Very specific: line 29
Use dm_message_get / dm_chat_get to inspect a single message or chat by hashid or external ID.
≈ “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
Manage direct messages. DMs are supported on Facebook (Messenger), Instagram, Telegram, and Bluesky — not the other networks.
Listing chats:
- If a profile isn't known, call
profiles_listand pick a DM-capable profile. - Call
dm_chats_listwith the profile ID. Display: Participant | Last message | Direction | When (newest first).
Reading a chat:
- Call
dm_messages_listwith the chat ID (a Postproxy hashid or the platform'sexternal_conversation_id). Show newest-first with direction and status. When an inbound message carriestapped_action, read itspayload/titleinstead of digging throughplatform_data— that's the participant tapping a quick reply or button you sent.
Sending a message:
- Use an existing chat ID, or call
dm_chat_createwithparticipant_external_idto find-or-create a chat (idempotent). - Call
dm_message_sendwith the chat ID and eitherbodyor onemediaattachment (never both; media isn't supported on Bluesky).- Interactive elements
quick_replies/buttons/cardare Facebook + Instagram only (rejected on Telegram and Bluesky). On Instagram, quick replies can't be mixed with media or buttons. reply_to_external_idandreply_markupare Telegram only.- Outside Meta's 24h window,
tag: HUMAN_AGENT(Facebook/Instagram) extends it to 7 days, but only for a human agent replying to the participant's own inquiry — never marketing or automation, or Meta may suspend the account's messaging.
- Interactive elements
Editing (dm_message_edit) is Telegram only — pass body and/or reply_markup ({} clears the keyboard).
Reacting (dm_message_react / dm_message_unreact) is Facebook Messenger + Instagram only; a second react replaces the previous one.
Archiving (dm_chat_archive / dm_chat_unarchive) is Bluesky only (mute/unmute).
Private replies to comments (dm_comment_private_reply) are Instagram + Facebook Page comments only: DMs the comment author, bypasses the 24h window (comments up to 7 days old), auto-creates a chat, and works once per comment, ever. No media.
Use dm_message_get / dm_chat_get to inspect a single message or chat by hashid or external ID. Always confirm the profile and conversation before sending.
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.

