CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

add-imessage

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".

Quality

90%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Quality

Content

85%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

An exceptionally actionable, well-sequenced operational skill: exact commands, pinned versions, conditional per-backend paths, validation checkpoints, and error-keyed troubleshooting with recovery loops. Its weaknesses are modest prose repetition and a broken progressive-disclosure layer — the referenced docs/imessage.md file is absent from the bundle and the href is inconsistent.

Suggestions

Ship the referenced reference file: create docs/imessage.md (or references/imessage.md) containing the full env-var table and full channel reference currently deferred to it, since four sections point to a file that does not exist in the bundle.

Make every reference link consistent and resolvable — the anchor text says docs/imessage.md while the href says docs.md; pick one real path and use it for all four occurrences.

Trim repeated statements to tighten conciseness: the hosted 'must text first' rule, the macOS-only constraint, and the exact-pin rationale are each explained 2-3 times across Apply, the backend sections, and Troubleshooting — state each once in the most relevant place and cross-reference elsewhere.

DimensionReasoningScore

Conciseness

The body is dense and operational — it never explains what iMessage is or how libraries work, and detailed prose (e.g. the better-sqlite3 override rationale, the minimumReleaseAge gate) captures genuinely non-obvious project constraints. Minor trimmable repetition keeps it from anchor 5: the hosted 'first text' rule appears three times ("a number only enters routing after it has texted its line once", "the hosted line can only message numbers that have already texted it", "the line only messages numbers that have texted it first"), and macOS-only/'pin exactly' points are each restated multiple times. Not 3 because nearly every token carries skill-specific information Claude could not infer.

4 / 5

Actionability

Every step is a copy-paste-ready command: "pnpm pkg set 'pnpm.overrides[@photon-ai/imessage-kit>better-sqlite3]=$better-sqlite3'", exact pins "chat-adapter-imessage@0.1.1" / "spectrum-ts@11.0.0", a complete executable one-liner "node --input-type=module -e 'import { createRequire } ... new Database(":memory:").close();'", and concrete verification commands ("pnpm exec vitest run src/channels/imessage-registration.test.ts", "grep \"Photon channel connected\" logs/nanoclaw.log"). This matches anchor 5: fully executable commands covering the common cases, including failure diagnoses with exact error strings. Not 4 because there are no gaps — even the interactive prompts carry validation regexes.

5 / 5

Workflow Clarity

The Apply section is a numbered 1-5 sequence with explicit validation checkpoints and feedback loops: build + registration test ("Both must be clean"), a platform guard ("[ \"$(uname)\" = Darwin ]") that stops an impossible path early, a per-backend post-install check with recovery instruction ("It fails with `Could not locate the bindings file` ... re-run that override step, then this check"), and a Troubleshooting section mapping each concrete error to a fix. This matches anchor 5 (explicit validation, error-recovery loops). Not 4 because checkpoints are not implicit or partial — every risky step has a stated pass/fail signal and a remediation path.

5 / 5

Progressive Disclosure

The body is well-sectioned and consistently defers bulk detail to a single clearly-signaled reference — "Full reference: [docs/imessage.md](docs.md)", "Full table in [docs/imessage.md](docs.md)", "More in [docs/imessage.md](docs.md)" — but no bundle files exist at all: there is no references/, scripts/, or assets/ directory and no docs.md, so the deferred content (full env table, full reference) is unreachable, and the link href (docs.md) contradicts its own text (docs/imessage.md). This lands at anchor 3: good structure with references present and clearly signaled, but the split is incomplete/navigation fails. Not 4 because a referenced file is entirely missing from the bundle; not 2 because references are prominently signaled, not buried, and the body is not a monolithic dump — it genuinely keeps detail out of SKILL.md.

3 / 5

Total

17

/

20

Passed

Description

95%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description: it states exactly what the skill does, distinguishes the two backends with concrete technical detail, and provides an explicit, natural trigger list. Its only limitation is that it describes a single add-channel capability in depth rather than a breadth of actions, which is inherent to the skill's scope.

DimensionReasoningScore

Specificity

Quotes: "Add iMessage to NanoClaw — one channel, two backends", "Local (this Mac's chat.db via the Chat SDK bridge; macOS + Full Disk Access)", "Hosted iMessage (via photon.codes — native spectrum-ts with a device-login wizard; any OS, no Mac relay)". The domain and its concrete mechanics (chat.db, Chat SDK bridge, spectrum-ts, device-login wizard, OS constraints) are explicitly stated with real specificity, but the description enumerates essentially one capability (adding the channel) rather than multiple distinct actions, matching anchor 4 ('several specific actions; minor gaps') rather than anchor 5's comprehensive multi-action list. Not 3 because far more than 1-2 concrete specifics are named; not 5 because no additional actions (configure, troubleshoot, upgrade) are listed. Third-person voice is used throughout, so no voice penalty applies.

4 / 5

Completeness

Quotes: what — "Add iMessage to NanoClaw — one channel, two backends" with per-backend specifics; when — "Triggers on 'add imessage', 'connect imessage', ...". Both 'what' and 'when' are explicitly and concretely answered with trigger phrases, exactly matching anchor 5. Not 4 because the 'when' is not merely present but spelled out as an explicit trigger list; not below because nothing is missing or vague.

5 / 5

Trigger Term Quality

Quotes: "Triggers on 'add imessage', 'connect imessage', 'add photon', 'imessage via photon', 'native imessage'". Five natural phrases a user would actually say, covering add/connect synonyms and both the local and photon-hosted variants of the request, which matches anchor 5's comprehensive coverage including synonyms. Not 4 (anchor 4 is 'good coverage; a few natural terms missing') because the list already spans the natural phrasings for both backends; file extensions are inapplicable to this domain.

5 / 5

Distinctiveness Conflict Risk

Quotes: "Add iMessage to NanoClaw", "Hosted iMessage (via photon.codes)". A clear niche (adding a specific messaging channel to a specific host) with distinct, unambiguous triggers — no realistic overlap with other skills, matching anchor 5 ('clear niche with distinct triggers; minimal conflict risk'). Not 4 because it is not merely 'mostly distinct' — the named target and channel leave no overlap surface.

5 / 5

Total

19

/

20

Passed

Validation

87%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

relative_links

Relative link issues: 4 missing

Warning

referenced_paths_exist

Referenced path issues: 3 missing

Warning

Total

14

/

16

Passed

Repository

nanocoai/nanoclaw

Path

.claude/skills/add-imessage/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.