CtrlK
BlogDocsLog inGet started
Tessl Logo

render-imessage-chat

Render a configurable iMessage conversation inside a properly framed phone, then a brand end card. Uses the original send/receive sounds and a shared frame timeline for text, typing, scrolling and sound. Free local Playwright + ffmpeg assembly; optional image/music generation belongs to separate gated capabilities.

59

Quality

74%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./skills/ads/capabilities/render-imessage-chat/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

67%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.

A dense, highly actionable contract-style body with real executable scripts, exact pixel/timing values, explicit validation checkpoints and a repair feedback loop. Its weaknesses are embedded version-history prose and reference duplication that pad token cost, plus verification commands that reference a tests/ directory missing from the delivered bundle.

Suggestions

Move the rebuild/changelog narrative ("preserves the shell and sounds from the approved Clinikally Goa build. It fixes...") out of the body or into a changelog section — it is version history, not execution guidance.

Resolve the dangling tests/ references: either ship tests/test_chat.js, tests/test_safe_area.js, tests/test_stitch.py and tests/fixtures/long-group-thread.json in the bundle, or state that they exist only in the full checkout.

Trim the overlap between the 17-item "Critical knowledge" list and references/imessage-reference.md, deferring detail to the reference and keeping only the genuinely new points inline.

DimensionReasoningScore

Conciseness

The bulk is dense, non-obvious contract language ("Short messages read best. Longer words wrap; real overflow fails preflight"; "the recipe seed zoom: 2.1 becomes about 1.915"), but it carries version-history prose — "This rebuild preserves the shell and sounds from the approved Clinikally Goa build. It fixes missing identity binding, the island touching the screen edge, light-mode header colors..." — and a 17-item "Critical knowledge" section that substantially overlaps references/imessage-reference.md. Not 2 because there is no basic-concept padding and nearly every line is task-specific; not 4 because the changelog narrative and duplicated reference material could be trimmed.

3 / 5

Actionability

Gives copy-paste commands with concrete paths ("node record-chat.js --config /absolute/path/config.json --out-dir /absolute/path/working/preview --preview-only"; "bash render.sh --config ... --out /absolute/path/finals/master-final.mp4"), exact values (safe bands "top 220, bottom 400, right 140", "default 3.6-second reading hold", "zoom about 1.915") and precise config fields. Not 5 because the verification commands (`node --test tests/test_chat.js`, `test_safe_area.js`, `python3 -m pytest tests/test_stitch.py`) reference a tests/ directory that is absent from the bundle, and `gooseworks doctor` availability is unstated.

4 / 5

Workflow Clarity

The Run section is an ordered sequence (npm ci → preview → render → verify) with explicit checkpoints — preflight failure on missing names, per-frame safe-area checks ("The recorder checks the safe area on every output frame and fails on a violation"), check-render.py, "Review the ACTUAL master after every repair" — plus a feedback loop ("Fix the configuration error and rerender locally"). Not 5 because validation is scattered across sections and the test-suite commands point at files not in the bundle; not 3 because checkpoints and an error-recovery loop are explicit, not merely implied.

4 / 5

Progressive Disclosure

The body signals one-level-deep references that all exist and are self-contained — "Read [the reference and authoring rules](references/imessage-reference.md)" (real, 99 lines, no nested links), scripts/config.example.json, scripts/record-chat.js, scripts/render.sh, scripts/check-render.py, scripts/sfx-embedded.json, assets/sfx — with clear section headers. Not 5 because the tests/ paths cited under Verification do not exist in the bundle, and the "Critical knowledge" section duplicates material already in the reference file rather than deferring to it.

4 / 5

Total

15

/

20

Passed

Description

70%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 specific, distinctive description with strong concrete verbs and a well-fenced niche, written in third person. Its main weakness is the complete absence of "Use when..." trigger guidance, which caps completeness and slightly weakens trigger-term coverage.

Suggestions

Add an explicit trigger clause, e.g. "Use when the user asks for a fake iMessage/texting conversation video, a texting-story ad, or an iPhone chat mockup."

Include natural synonyms users would say — "chat", "texting", "text message", "iPhone" — alongside "iMessage conversation".

Briefly name what is configurable (contact names, phone time, background, theme) so the scope of "configurable" is explicit.

DimensionReasoningScore

Specificity

Lists several concrete actions — "Render a configurable iMessage conversation inside a properly framed phone, then a brand end card", "Uses the original send/receive sounds and a shared frame timeline for text, typing, scrolling and sound", "Free local Playwright + ffmpeg assembly" — covering render, end card, sound cues, timeline sync and assembly. Not 5 because it never says what is configurable (names, phone time, background, theme, attachments); not 3 because it goes well beyond 1-2 actions and covers the pipeline end to end.

4 / 5

Completeness

The "what" is explicit and specific (render iMessage conversation + end card with original sounds and a shared timeline), but there is no "Use when..." clause or any equivalent explicit trigger guidance anywhere in the description, which caps completeness at 3 per the judging guidelines. Not 2 because the "what" half is clear and concrete, not vague.

3 / 5

Trigger Term Quality

"iMessage conversation", "phone", "send/receive sounds" are natural phrases a user would say when requesting this skill. Not 5 because common synonyms and variations are missing — "chat", "texting", "text message", "iPhone" appear nowhere; not 3 because the core natural trigger ("iMessage conversation") is present and domain-specific rather than technical jargon.

4 / 5

Distinctiveness Conflict Risk

"iMessage conversation", "original send/receive sounds" and "brand end card" define a clear niche with distinct triggers, and "optional image/music generation belongs to separate gated capabilities" explicitly fences off adjacent generation skills — minimal conflict risk. Not 4 because no closely related skill would plausibly intercept these triggers.

5 / 5

Total

16

/

20

Passed

Validation

93%

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

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

15

/

16

Passed

Repository
gooseworks-ai/goose-skills
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.