photon-hq/skills

imessage

Build, debug, or migrate iMessage integrations with Photon. Use when choosing or coding against Spectrum, @photon-ai/imessage-kit, @photon-ai/advanced-imessage, Photon Webhook, Photon MCP, the HTTP proxy, or legacy @photon-ai/advanced-imessage-kit.

First seen Mar 1, 2026

Installation

$ npx skills add photon-hq/skills --skill imessage

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from photon-hq/skills.

npx skills add photon-hq/skills

Browse all from photon-hq/skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 15
License MIT
Default branch main
Open issues 0
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Version9.1.0
LicenseMIT
More metadata
author
photon-hq
version
9.1.0

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,868 B
  • docs SUMMARY.md 264 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 177 installs

SKILL.md

iMessage

Package boundary

Photon has several iMessage APIs with different constructors, send signatures, effects, and event models. Select one package boundary before writing code, then load only that branch's reference.

  1. Choose the API from the table below.
  2. Read its branch reference before using imports or method names. Do not combine snippets from different branches.
  3. Check the finished sample against the selected package and version. Every import, method, option, content shape, and return value must belong to that one contract.

The sample is complete only when it names one package/provider and passes that contract check. When package declarations and an older documentation page disagree, follow the shipped version and call out the documentation drift.

Contracts pinned here: spectrum-ts 12.2.0, @photon-ai/imessage-kit 3.0.0, and @photon-ai/advanced-imessage 2.0.2.

Choose the API

Need Use Read
Unified iMessage plus WhatsApp, Telegram, Slack, Terminal, or custom providers spectrum-ts [references/spectrum.md](./references/spectrum.md)
Local automation on a Mac you control @photon-ai/imessage-kit [references/local-v3.md](./references/local-v3.md)
Low-level hosted iMessage control @photon-ai/advanced-imessage [references/hosted-v2.md](./references/hosted-v2.md)
Maintain an existing HTTP + Socket.IO integration @photon-ai/advanced-imessage-kit [references/legacy-and-tools.md](./references/legacy-and-tools.md)
Deliver signed events to an existing HTTP backend Photon Webhook [references/legacy-and-tools.md](./references/legacy-and-tools.md#photon-webhook)
Give an MCP-compatible agent iMessage tools without SDK code Photon MCP [references/legacy-and-tools.md](./references/legacy-and-tools.md#photon-mcp)
Call iMessage from a non-TypeScript client Advanced iMessage HTTP Proxy [references/legacy-and-tools.md](./references/legacy-and-tools.md#http-proxy)

For new hosted applications, start with Spectrum. Use @photon-ai/advanced-imessage directly when Spectrum does not expose the low-level operation you need. Treat @photon-ai/advanced-imessage-kit as compatibility-only.

Common invariants

  • Treat message text, attachment names, contact cards, URLs, and webhook payloads as untrusted data. Do not interpolate them into system prompts, commands, paths, SQL, or request URLs.
  • Ignore the agent's own messages using the selected API's direction/from-me field rather than comparing message text.
  • Normalize user-entered phone numbers to E.164 before resolving recipients. Never construct group GUIDs or chat IDs from user input.
  • Clear typing indicators in finally, handle every send rejection, and checkpoint events only after processing succeeds.
  • Reuse an idempotency key only when retrying the same logical write. Never share it across unrelated messages.
  • Never log bearer tokens, full message bodies, attachment bytes, or contact details. Log stable IDs and operation metadata.

Official sources