Content
85%Weight 40%Scale 1-5Reviews 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.
| Dimension | Reasoning | Score |
|---|---|---|
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 |