atris/skills/imessage/SKILL.md
Use when an agent needs to inspect or send local macOS iMessage through Atris CLI. Triggers on iMessage, Messages.app, local text messages, chat.db, or texting someone from the user's Mac.
npx skillsauth add atrislabs/atris imessageInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Local iMessage is a Mac capability, not a cloud OAuth integration.
Use Atris CLI as the control surface.
atris imessage doctor --json
If the doctor says permissions are missing, ask the user to grant Full Disk Access to the terminal or Atris Desktop.
Read context only when needed.
atris imessage recent "+15555555555" --limit 20
--refresh only when the cache is stale or the result looks wrong.atris imessage lookup --name "Exact Contact Name" --json
atris imessage lookup --name "myself" --json
If lookup returns unique: true, use primary.handle for the send. If lookup returns ambiguous: true, ask one concise clarification with the candidate names. If it returns no matches, ask for a phone number or exact contact name. Do not scan Contacts manually or loop over AppleScript; the CLI caches lookup results in ~/.atris/cache/imessage-contacts.json.
Never send a message unless the user approved the exact recipient and exact text.
For sending, use the fast local send command only after explicit approval.
atris imessage send --to "+15555555555" --text "Exact approved text" --approved --json --receipt
The command normalizes US 10-digit phone numbers to +1..., checks doctor, sends through the local Messages AppleScript path using service type = iMessage, and returns JSON proof after the latest-outgoing Messages DB row settles. Use --receipt inside an Atris workspace when the action needs a durable atris/runs/imessage-send-*.md receipt.
If the recipient name is ambiguous, ask one concise clarification before sending. If the user gave a phone number or exact resolved handle, do not search the repo first.
connected: true means this Mac can access the local Messages database and local scripting tools.connected: false means the user needs macOS permissions, Messages setup, or local tooling.development
Wake a team member by name — 'gm <member>' or 'wake up <member>' — and run ONE closed-loop tick: boot, inbox, claim, one bounded slice, verify, commit+push, proof, receipt. Optionally dispatch the build to an engine (codex/cursor/devin). Triggers on: gm, good morning, wake up <member>, wake the team, run a tick as <member>.
development
Dispatch coding work to an installed terminal agent — Codex, Cursor, or Devin — as an interchangeable worker engine. Claude orchestrates: writes the bounded prompt, the engine builds, Claude verifies and lands. Triggers on: use codex, use cursor, use devin, engine, dispatch to, worker agent, second opinion build.
development
Live RL tuner for skills. Watches skill invocations, reads user reaction, proposes targeted SKILL.md overlay edits, requires explicit approval, writes scorecards. The in-session half of the skill-RL loop (Path B). Triggers on: tune, sharpen, skill feedback, that was shit, that was great, make X better.
development
Run one RL improvement tick on the workspace via POST /api/improve. Ships one verifiable change, scores it, writes the scorecard. The thing you pay for. Triggers on: improve, make this better, ship one thing, run a tick, get smarter.