agentleFS
postproxypostproxy/postproxy-claude-plugin/skills/dm/SKILL.md

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
  1. Very specific:

    If a profile isn't known, call profiles_list and pick a DM-capable profile.

    line 8
  2. Very specific:

    Call dm_chats_list with the profile ID.

    line 9
  3. Very specific:

    Use an existing chat ID, or call dm_chat_create with participant_external_id to find-or-create a chat (idempotent).

    line 15
  4. Very specific:

    Call dm_message_send with the chat ID and either body or one media attachment (never both.

    line 16
  5. Very specific:

    Use dm_message_get / dm_chat_get to inspect a single message or chat by hashid or external ID.

    line 29

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Manage direct messages. DMs are supported on Facebook (Messenger), Instagram, Telegram, and Bluesky — not the other networks.

Listing chats:

  1. If a profile isn't known, call profiles_list and pick a DM-capable profile.
  2. Call dm_chats_list with the profile ID. Display: Participant | Last message | Direction | When (newest first).

Reading a chat:

  • Call dm_messages_list with the chat ID (a Postproxy hashid or the platform's external_conversation_id). Show newest-first with direction and status. When an inbound message carries tapped_action, read its payload/title instead of digging through platform_data — that's the participant tapping a quick reply or button you sent.

Sending a message:

  1. Use an existing chat ID, or call dm_chat_create with participant_external_id to find-or-create a chat (idempotent).
  2. Call dm_message_send with the chat ID and either body or one media attachment (never both; media isn't supported on Bluesky).
    • Interactive elements quick_replies / buttons / card are Facebook + Instagram only (rejected on Telegram and Bluesky). On Instagram, quick replies can't be mixed with media or buttons.
    • reply_to_external_id and reply_markup are 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.

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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.