Agent skill

Add iMessage to NanoClaw

by nanocoai in nanocoai/nanoclaw

Connects NanoClaw to iMessage through one channel with either a local Mac backend or a hosted backend via photon.codes, copying in the adapter and installing its package.

MITAuto-check: notesProductivity & Automation

Install Add iMessage to NanoClaw

skills CLI
$ npx skills add nanocoai/nanoclaw --skill add-imessage -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install nanocoai/nanoclaw add-imessage --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/nanocoai/nanoclaw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/add-imessage .claude/skills/add-imessage && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
add-imessage
GitHub stars
31k
Token cost
~3.8k tokens
SKILL.md length
1,613 words
Files
4
Skills in repo
59
Repo updated
First seen
Licence
MIT

At a glance

Connects NanoClaw to iMessage through one channel with either a local Mac backend or a hosted backend via photon.codes, copying in the adapter and installing its package.

  • Works in 5 steps: Choose a backend → Copy the adapter → Register the adapter → …
  • Adding iMessage as a messaging channel in a NanoClaw install
  • SKILL.md covers Apply, Local backend: Full Disk…, Hosted backend: device login… and Restart, plus 5 more sections
  • Calls pnpm and bash; needs PHOTON_PROJECT_SECRET

What it does

NanoClaw does not ship channels in its main branch, so this skill copies the unified iMessage adapter and its tests from the channels branch into src/channels/ and appends one import line to the channel index. Both backends register the same imessage channel type and only one can run per install, so the first step is choosing local or hosted.

The local backend uses the Chat SDK bridge to read the signed-in iMessage account in the Mac's chat.db, so it works on macOS only and the Node binary needs Full Disk Access. A check stops the local path on any other system. The hosted backend uses Photon's spectrum-ts stream through photon.codes, runs on any OS without a Mac relay, webhook or public URL, and is provisioned through a device-login flow. The chosen package is installed at an exact pinned version, because the repository's supply-chain policy rejects version ranges.

The steps are written as prose plus directive fences that a parser can apply on its own, and each directive is safe to repeat, so the skill can be re-run. A REMOVE.md file and a docs.md reference ship alongside it.

When your agent uses it

  • Adding iMessage as a messaging channel in a NanoClaw install
  • Choosing between a local Mac backend and a hosted iMessage line
  • Connecting NanoClaw to iMessage from a machine that is not a Mac

Example prompts

  • “Add iMessage to NanoClaw using the local backend on this Mac.”
  • “Connect iMessage via photon, since this server runs Linux.”
  • “Re-run the iMessage setup and confirm the adapter is still registered.”

Requirements

  • A NanoClaw install
  • macOS with Full Disk Access for the Node binary, for the local backend
  • Access to photon.codes, for the hosted backend

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Choose a backend
  2. Copy the adapter
  3. Register the adapter
  4. Install the chosen backend's package
  5. Build and validate

What it can do on your machine

Read from SKILL.md and the folder at commit 66f0823. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pnpm
    • bash

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • PHOTON_PROJECT_SECRET

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Add iMessage to NanoClaw loads about 3.8k tokens when it runs. Until then it costs about 89 tokens; SKILL.md has 1,613 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~89
When it runs · the whole SKILL.md, loaded when a task matches
~3.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:162
    Now select the local backend in `.env`. The configure script owns this
  • NoteMentions a .env fileSKILL.md:194
    ROJECT_ID` + `PHOTON_PROJECT_SECRET` to `.env` and the assigned number
  • NoteMentions a .env fileSKILL.md:205
    Then select the hosted backend in `.env` — the Photon credentials already imply
  • NoteMentions a .env fileSKILL.md:287
    slash replies. Optional `.env`: `PHOTON_MARKDOWN`, `PHOTON_TELEMETRY`,

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from nanocoai/nanoclaw at commit 66f0823, republished under its MIT licence (© nanocoai). 1,613 words, ~3,764 tokens.

Download SKILL.mdSave it as .claude/skills/add-imessage/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
add-imessage
description
Add iMessage to NanoClaw — one channel, two backends. Local (this Mac's chat.db via the Chat SDK bridge; macOS + Full Disk Access) or Hosted iMessage (via photon.codes — native spectrum-ts with a device-login wizard; any OS, no Mac relay). Triggers on "add imessage", "connect imessage", "add photon", "imessage via photon", "native imessage".

Add iMessage

NanoClaw talks to iMessage through a single imessage channel with two pluggable backends:

  • Local (this Mac) — the Chat SDK bridge over chat-adapter-imessage, reading this Mac's signed-in iMessage account (chat.db). macOS only; the Node binary needs Full Disk Access.
  • Hosted iMessage (via photon.codes) — a native adapter over Photon's spectrum-ts gRPC stream. The hosted service owns the iMessage line, so there's no Mac relay, webhook, or public URL. Works on any OS, and a device-login flow provisions everything for you.

Both register the same imessage channel type; only one runs per install. NanoClaw doesn't ship channels in trunk — this skill copies the unified imessage adapter in from the channels branch. Full reference: docs/imessage.md.

The mechanical steps under Apply carry nc: directive fences: an agent reads the prose and applies them, and a parser can apply them deterministically from the same document. Every directive is idempotent, so the whole skill is safe to re-run; anything a parser can't apply falls back to the prose beside it.

Apply

1. Choose a backend

Pick the backend first — it decides which package gets installed and which walkthrough runs below (the other backend's steps are skipped):

ncprompt
How should iMessage run — `local` (this Mac's signed-in iMessage account; macOS only, needs Full Disk Access) or `hosted` (a managed line via photon.codes; works on any OS)?

The local backend only works on a Mac — it reads this machine's iMessage chat.db directly, and there is no such database off macOS. On any other OS, stop here and choose hosted instead; otherwise you'd write a local config that can never receive a message:

ncrun
[ "$(uname)" = Darwin ]
2. Copy the adapter

Fetch the channels branch and copy the unified iMessage adapter and its tests into src/channels/:

nccopy
src/channels/imessage.ts
src/channels/imessage.test.ts
src/channels/imessage-registration.test.ts
3. Register the adapter

Append the self-registration import to the channel barrel (skipped if the line is already present). This one line is the skill's only reach-in into core:

ncappend
import './imessage.js';
4. Install the chosen backend's package

Pinned to an exact version — the supply-chain policy rejects ranges and latest. Install only the chosen backend's package.

Local — the Chat SDK iMessage adapter. Its chat.db reader (@photon-ai/imessage-kit) brings its own better-sqlite3 12.x, which ships no prebuilt binary, and NanoClaw doesn't run dependency build scripts, so that copy can't open the database. First point the reader at NanoClaw's own prebuilt better-sqlite3 ($better-sqlite3 is pnpm's reference to the version NanoClaw pins). The reinstall applies it to an install that already has the adapter, since the step below skips a package that is already present:

ncrun
pnpm pkg set 'pnpm.overrides[@photon-ai/imessage-kit>better-sqlite3]=$better-sqlite3'
pnpm install --no-frozen-lockfile
ncdep
chat-adapter-imessage@0.1.1

Hosted — Photon's Spectrum SDK:

ncdep
spectrum-ts@11.0.0

Pin exactly. spectrum-ts ships breaking majors (v11 is what the adapter targets); don't @latest. NanoClaw's pnpm gate (minimumReleaseAge) requires a version ≥3 days old — both pins clear it. A fresher pin needs human sign-off before a minimumReleaseAgeExclude entry (CLAUDE.md → Supply Chain Security).

5. Build and validate

Build guards the typed createChatSdkBridge(...) core call used by the local backend, and the registration test proves the channel is wired:

ncrun
pnpm run build
ncrun
pnpm exec vitest run src/channels/imessage-registration.test.ts

Both must be clean. imessage-registration.test.ts imports the real channel barrel and asserts the registry contains imessage — it goes red if the import './imessage.js'; line is missing or the barrel fails to evaluate. The adapter loads neither backend's SDK at import (hosted spectrum-ts only in setup(), local chat-adapter-imessage only in the factory), so the test needs no package.

For the hosted backend, also run the full adapter suite — it includes an integration block that exercises the real installed spectrum-ts (version, exports, builders) and auto-skips when the package is absent:

ncrun
pnpm exec vitest run src/channels/imessage.test.ts

For the local backend, check that the chat.db reader's better-sqlite3 loads under Node. It fails with Could not locate the bindings file when that copy has no binary, meaning step 4's override didn't land: re-run that override step, then this check:

ncrun
node --input-type=module -e 'import { createRequire } from "node:module"; const kit = createRequire(import.meta.resolve("chat-adapter-imessage")).resolve("@photon-ai/imessage-kit"); const Database = createRequire(kit)("better-sqlite3"); new Database(":memory:").close();'

Local backend: Full Disk Access (macOS)

The adapter reads this Mac's chat.db, which requires Full Disk Access granted to the Node binary the host runs under. The Node path is buried deep (e.g. ~/.nvm/versions/node/v22.x.x/bin/node), so open its folder in Finder to make the drag-and-drop target obvious. Harmless off a desktop (SSH/headless) — it just no-ops:

ncrun
open "$(dirname "$(which node)")" 2>/dev/null || true

Then tell the user:

ncoperator
Grant Full Disk Access to Node so iMessage can read your chat history:
1. Open System Settings > Privacy & Security > Full Disk Access.
2. Click +, then drag the "node" file from the Finder window that just opened.
3. Toggle it on, then come back here.

Stop and wait for the user to confirm Full Disk Access is granted before continuing.

Now select the local backend in .env. The configure script owns this upsert-and-remove (a plain set-if-absent env write can neither replace a stale value nor delete a key, and a lingering hosted selector would shadow the choice):

ncrun
bash setup/channels/imessage-configure.sh local

Hosted backend: device login (via photon.codes)

The provisioning flow needs the phone number you send iMessages from — it registers that number with your project so the hosted line recognises you:

ncprompt
The phone number you iMessage from, in E.164 format — + followed by country code and number, no spaces or dashes (e.g. +14155551234).

Tell the user what's about to happen:

ncoperator
Connect your hosted iMessage line (photon.codes):
1. A login URL and a short code will print below.
2. Open the URL in a browser, approve the device, and enter the code.
3. Setup then registers your number and prints the iMessage line Photon assigned to it. Send one message from your phone to that line — a number only enters routing after it has texted its line once.
4. Once the opt-in lands, setup finishes on its own and confirms your agent's iMessage number.

Run the device-login flow. It provisions the project, reuses its current secret (regenerating only when the API returns none), registers your number, prints the line to text and waits until that message opts the number in, and surfaces the iMessage number you'll use — writing PHOTON_PROJECT_ID + PHOTON_PROJECT_SECRET to .env and the assigned number to data/photon-auth.json:

ncrun
pnpm exec tsx scripts/photon-setup.ts setup --phone {{owner_handle}} --embedded

If the login times out, the code expired (~30 min) — re-run the step; a stored token is reused. Check state any time with pnpm exec tsx scripts/photon-setup.ts status.

Then select the hosted backend in .env — the Photon credentials already imply hosted, but the explicit selector avoids ambiguity if local keys linger:

ncrun
bash setup/channels/imessage-configure.sh hosted

Restart

Restart the service so it loads the iMessage adapter and the backend config you just wrote, and wait for its CLI socket before wiring:

ncrun
bash setup/lib/restart.sh

For the hosted backend, confirm the connection came up: grep "Photon channel connected" logs/nanoclaw.log | tail -1.

Resolve your iMessage handle

The agent greets you in the iMessage conversation tied to the handle you message from — that handle is both your identity and the conversation address. The hosted flow already collected it above; for the local backend, resolve it now (email works too — whatever iMessage recognises):

ncprompt
The phone number or email you iMessage from — a +E.164 number (e.g. +14155551234) or an email / Apple ID (e.g. you@icloud.com).

Hosted first contact: text your agent's iMessage number once (it was printed above; also stored in data/photon-auth.json) before expecting any message from it. This first text is required, not just convenient — the hosted line can only message numbers that have already texted it (cold outbound is rejected with Target not allowed for this project). Tell the user:

ncoperator
Send one text — anything — from your phone to your agent's iMessage number (printed above). The hosted line can only reply to numbers that have texted it first, so its welcome message needs yours to arrive first.

iMessage is a native channel: it sends the raw handle as the conversation address, with no channel prefix — so the messaging-group platform id is that handle as-is:

ncrun
echo "{{owner_handle}}"

owner_handle and platform_id are what the owner-wiring step needs. The welcome iMessage goes out through the adapter once the service is running — on the local backend that needs Full Disk Access granted (above); on the hosted backend it goes out via your photon.codes line after your first text.

Show full SKILL.md (556 more words)Show less

Next Steps

If you're in the middle of /setup, return to the setup flow now. Otherwise /init-first-agent stands up an agent on your iMessage DM, or /manage-channels wires it to an existing agent group.

Channel Info

  • type: imessage (one channel; the backend is local or hosted)
  • terminology: iMessage has 1:1 "chats" (DMs) and group chats. Photon (hosted) calls each conversation a "space".
  • platform-id-format: DM = your bare handle (E.164 phone, or email for local) — direct-addressable; the user id is imessage:<handle>. Group (hosted) = the opaque Spectrum space id.
  • how-to-find-id: DMs use the counterpart's phone/email. Groups (hosted) are discovered on first message — pnpm exec tsx scripts/q.ts data/v2.db "SELECT platform_id, name FROM messaging_groups WHERE channel_type='imessage'"
  • supports-threads: no
  • typical-use: Interactive 1:1 chat — personal messaging
  • default-isolation: One agent per install. Multiple DMs with the same operator can share an agent group; groups with other people should typically use isolated session mode.
Hosted features

Markdown (native; PHOTON_MARKDOWN=false for plain text), file attachments in and out (inbound staged into the session inbox, capped by PHOTON_MAX_INLINE_ATTACHMENT_BYTES, default 20 MB), tapback reactions, read receipts, typing indicators, and ask_user_question via /approve / /reject slash replies. Optional .env: PHOTON_MARKDOWN, PHOTON_TELEMETRY, PHOTON_MAX_INLINE_ATTACHMENT_BYTES, PHOTON_DASHBOARD_HOST, PHOTON_SPECTRUM_HOST. Full table in docs/imessage.md.

Troubleshooting

The backend answer is rejected. It must be exactly local or hosted, lowercase. Local only exists on macOS — it reads this Mac's chat.db directly — so on any other OS the platform check stops you and hosted is the only path.

Local: outgoing works but nothing ever arrives. Full Disk Access wasn't granted to the actual Node binary the service runs under — with nvm the path changes per Node version (~/.nvm/versions/node/v22.x.x/bin/node), so an old grant silently stops covering a new binary. Re-open System Settings → Privacy & Security → Full Disk Access, add the binary at $(which node), then restart the service.

Local: Failed to open database … Could not locate the bindings file. The chat.db reader is on a better-sqlite3 copy with no native binary, from an install made before step 4 set its override. Re-run /add-imessage with the local backend: step 4 sets the override and reinstalls, and the skill restarts the service.

spectrum-ts not installed (hosted) — re-run step 4 (pnpm install spectrum-ts@11.0.0) and restart.

Device login times out (hosted) — the code expires in ~30 min; re-run the login step (a stored token is reused).

Target not allowed for this project (hosted) — intended: the line only messages numbers that have texted it first. Text the agent's number once, then retry (a welcome DM queued before that first text simply fails delivery).

Your handle is rejected at the resolve step. It must be a bare +E.164 number (+14155551234 — no spaces, dashes, or parentheses) or, on the local backend, an email/Apple ID. Use the exact handle you actually send iMessages from — a number-vs-email mismatch means your messages never map to the wired conversation.

Adapter installed but silent. Run pnpm exec vitest run src/channels/imessage-registration.test.ts — red means the barrel import or the package install drifted, so re-run the Apply steps. If green, confirm the backend connected (hosted: grep "Photon channel connected" logs/nanoclaw.log), restart the service (bash setup/lib/restart.sh), then check logs/nanoclaw.error.log.

More in docs/imessage.md.

Upgrading spectrum-ts (hosted)

spectrum-ts is pinned exactly because it ships breaking majors. To upgrade, read the release notes for every version between the pins, bump the pin, reconcile src/channels/imessage.ts against the new typings, then pnpm run build and pnpm exec vitest run src/channels/imessage.test.ts. See docs/imessage.md.

© nanocoai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files in .claude/skills/add-imessage of nanocoai/nanoclaw.

  • SKILL.md
  • REMOVE.md
  • apply-fixtures.json
  • docs.md

Open the folder on GitHubat commit 66f0823

Compare with similar skills

Add iMessage to NanoClaw next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Add iMessage to NanoClaw compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Add iMessage to NanoClaw this skillnanocoai/nanoclaw31k—~3.8kAutomated safety check: NotesMIT
Yichen Mac Wechat Dual Openmcncarl/yichen-skills4.3k—~1.5kAutomated safety check: PassCustom licence
Feishu BridgeAlexAnys/feishu-openclaw3171 repos~615Automated safety check: PassNone
Greenbubbles Setupbojieli/greenbubbles352—~537Automated safety check: PassMIT
Wechat Exporterrobbin/wechat-exporter213—~2kAutomated safety check: NotesNone
Wechat Article Extractfreestylefly/WeChatBridge1.2k—~236Automated safety check: PassMIT

Similar skills

  • Yichen Mac Wechat Dual Open

    mcncarl/yichen-skills

    Create, inspect, repair, and polish a second WeChat app on macOS by copying WeChat, changing the bundle identifier, ad-hoc re-signing, preparing it for the user to open manually, setting Chinese…

    4.3k GitHub stars~1.5k tokensUpdated 4 days ago
    Productivity & AutomationAuto-check passed
  • Feishu Bridge

    AlexAnys/feishu-openclaw

    Connect a Feishu (Lark) bot to Clawdbot via WebSocket long-connection.

    317 GitHub starsUsed in 1 repo~615 tokens
    Productivity & AutomationAuto-check passed
  • Greenbubbles Setup

    bojieli/greenbubbles

    Install or diagnose the local GreenBubbles CLI and read-only WeChat access.

    352 GitHub stars~537 tokensUpdated 5 days ago
    Productivity & AutomationAuto-check passed
  • Wechat Exporter

    robbin/wechat-exporter

    A skill your agent uses when the user says "wechat-exporter", "导出微信", "更新微信聊天记录", or wants to export, decrypt, or refresh WeChat chat history and contacts on macOS.

    213 GitHub stars~2k tokensUpdated 2 mo ago
    Productivity & AutomationAuto-check: notes
  • Wechat Article Extract

    freestylefly/WeChatBridge

    从微信聊天记录导出文件中识别公众号文章链接或分享卡片,提取标题、公众号名称、发布时间、正文和图片,并保留原文链接。当用户要求整理、摘录或归档聊天记录里的公众号文章时使用。

    1.2k GitHub stars~236 tokensUpdated 2 days ago
    Productivity & AutomationAuto-check passed
  • Unicli

    olo-dot-io/Uni-CLI

    Comprehensive guide to Uni-CLI — the open Agent-Computer Interface runtime for real software.

    274 GitHub stars~3.8k tokensUpdated 4 days ago
    Productivity & AutomationAuto-check: notes

More from nanocoai/nanoclaw

All 59 skills in this repo
  • Installs or refreshes Iron Proxy and its Iron Control web console for NanoClaw, with a local Docker setup, database, credentials and a human approval bridge.

    31k GitHub stars~4.6k tokensUpdated 2 days ago
    Auto-check: notes
  • Agent Browser

    nanocoai/nanoclaw

    Drives a web browser from the shell with the agent-browser CLI: open pages, read an element snapshot, click and fill by reference, grab text and screenshots.

    31k GitHub starsUsed in 3 repos~1.6k tokens
    Auto-check passed
  • Installs or refreshes OneCLI as the gateway provider for NanoClaw, copying the adapter files, registering the provider and running the setup script.

    31k GitHub stars~1.1k tokensUpdated 2 days ago
    Auto-check: notes
  • Guides a conversational migration from an OpenClaw install to NanoClaw v2, carrying over identity, channel credentials, scheduled tasks and workspace files.

    31k GitHub stars~6k tokensUpdated 2 days ago
    Auto-check: notes
  • Wires up an additional phone number onto an already-installed Dial channel, so one NanoClaw install answers SMS and AI voice calls on more than one line.

    31k GitHub starsUsed in 1 repo~1.5k tokens
    Auto-check passed
  • NanoClaw LLM Wiki Setup

    nanocoai/nanoclaw

    Adds a persistent wiki knowledge base to a NanoClaw group following Karpathy's LLM Wiki pattern, with folders, a tailored container skill and a CLAUDE.md section.

    31k GitHub starsUsed in 1 repo~1.3k tokens
    Auto-check passed

Works with

Questions about Add iMessage to NanoClaw

What does Add iMessage to NanoClaw do?

Connects NanoClaw to iMessage through one channel with either a local Mac backend or a hosted backend via photon.codes, copying in the adapter and installing its package. NanoClaw does not ship channels in its main branch, so this skill copies the unified iMessage adapter and its tests from the channels branch into src/channels/ and appends one import line to the channel index. Both backends register the same imessage channel type and only one can run per install, so the first step is choosing local or hosted.

When should I use Add iMessage to NanoClaw?

Add iMessage to NanoClaw fits situations like: adding iMessage as a messaging channel in a NanoClaw install; choosing between a local Mac backend and a hosted iMessage line; connecting NanoClaw to iMessage from a machine that is not a Mac.

How do I install Add iMessage to NanoClaw in Claude Code?

Run `npx skills add nanocoai/nanoclaw --skill add-imessage -a claude-code`. Or copy the skill folder (.claude/skills/add-imessage in nanocoai/nanoclaw) into .claude/skills/add-imessage in your project. Claude Code loads it when a task matches its description.

How do I install Add iMessage to NanoClaw in Codex?

Run `npx skills add nanocoai/nanoclaw --skill add-imessage -a codex`. Or copy the skill folder (.claude/skills/add-imessage in nanocoai/nanoclaw) into .agents/skills/add-imessage in your project. Codex loads it when a task matches its description.

Can I use Add iMessage to NanoClaw in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add nanocoai/nanoclaw --skill add-imessage -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/add-imessage, .gemini/skills/add-imessage, .github/skills/add-imessage and .opencode/skills/add-imessage in your project.

What does Add iMessage to NanoClaw need to run?

Going by SKILL.md and its folder, Add iMessage to NanoClaw needs the command-line tools its instructions call (pnpm and bash) and credentials named PHOTON_PROJECT_SECRET. Our summary lists: A NanoClaw install; macOS with Full Disk Access for the Node binary, for the local backend; Access to photon.codes, for the hosted backend.

Does Add iMessage to NanoClaw access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Add iMessage to NanoClaw safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Add iMessage to NanoClaw use?

Add iMessage to NanoClaw is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Add iMessage to NanoClaw use?

About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Add iMessage to NanoClaw?

Skills that share tags, products or a category with Add iMessage to NanoClaw: Yichen Mac Wechat Dual Open (mcncarl/yichen-skills, 4.3k stars), Feishu Bridge (AlexAnys/feishu-openclaw, 317 stars), Greenbubbles Setup (bojieli/greenbubbles, 352 stars) and Wechat Exporter (robbin/wechat-exporter, 213 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Add iMessage to NanoClaw?

nanocoai (a GitHub organization) maintains it in nanocoai/nanoclaw, which has 30,897 GitHub stars. The repository holds 59 skills in this directory. The repository was last updated on October 6, 2026.

Source: nanocoai/nanoclaw on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.