mcpbeat

Configure

anthropics/claude-plugins-official-imessage-configure

Check iMessage channel setup and review access policy. Use when the user asks to configure iMessage, asks "how do I set this up" or "who can reach me," or wants to know why texts aren't reaching the assistant.

886 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
33022
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/anthropics/claude-plugins-official --skill configure

What it tells the agent to use

found in the instruction text
Bash runs shell commands — read the instruction before connecting

The instruction itself

4 sections, as written by the author

/imessage:configure — iMessage Channel Setup

There's no token to save — iMessage reads ~/Library/Messages/chat.db

directly. This skill checks whether that works and orients the user on

access policy.

Arguments passed: $ARGUMENTS (unused — this skill only shows status)


Status and guidance

Read state and give the user a complete picture:

  • Full Disk Access — run ls ~/Library/Messages/chat.db. If it fails

with "Operation not permitted", FDA isn't granted. Say: *"Grant Full Disk

Access to your terminal (or IDE if that's where Claude Code runs): System

Settings → Privacy & Security → Full Disk Access. The server can't read

chat.db without it."*

  • Access — read ~/.claude/channels/imessage/access.json (missing file

= defaults: dmPolicy: "allowlist", empty allowlist). Show:

  • DM policy and what it means in one line
  • Allowed senders: count, and list the handles
  • Pending pairings: count, with codes if any (only if policy is pairing)
  • What next — end with a concrete next step based on state:
  • FDA not granted → the FDA instructions above
  • FDA granted, policy is allowlist → *"Text yourself from any device

signed into your Apple ID — self-chat always bypasses the gate. To let

someone else through: /imessage:access allow +15551234567."*

  • FDA granted, someone allowed → *"Ready. Self-chat works; {N} other

sender(s) allowed."*


Build the allowlist — don't pair

iMessage reads your personal chat.db. You already know the phone

numbers and emails of people you'd allow — there's no ID-capture problem to

solve. Pairing has no upside here and a clear downside: every contact who

texts this Mac gets an unsolicited auto-reply.

Drive the conversation this way:

  • Read the allowlist. Tell the user who's in it (self-chat always works

regardless).

  • Ask: *"Besides yourself, who should be able to text you through this?"*
  • "Nobody, just me" → done. The default allowlist with an empty list

is correct. Self-chat bypasses the gate.

  • "My partner / a friend / a couple people" → ask for each handle

(phone like +15551234567 or email like [email protected]) and offer to

run /imessage:access allow <handle> for each. Stay on allowlist.

  • Current policy is pairing → flag it immediately: *"Your policy is

pairing, which auto-replies a code to every contact who texts this Mac.

Switch back to allowlist?"* and offer `/imessage:access policy

allowlist`. Don't wait to be asked.

  • User asks for pairing → push back. Explain the auto-reply-to-

everyone consequence. If they insist and confirm a dedicated line with

few contacts, fine — but treat it as a one-off, not a recommendation.

Handles are +15551234567 or [email protected]. disabled drops

everything except self-chat.


Implementation notes

  • No .env file for this channel. No token. The only OS-level setup is FDA

plus the one-time Automation prompt when the server first sends (which

can't be checked from here).

  • access.json is re-read on every inbound message — policy changes via

/imessage:access take effect immediately, no restart.

How to use it

Copy the folder

Take anthropics/claude-plugins-official-imessage-configure from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.