Read recipient data from Google Sheets and send personalized Gmail messages to each row.
74
63%
Does it follow best practices?
Impact
100%
3.84xAverage score across 3 eval scenarios
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./skills/recipe-send-personalized-emails/SKILL.mdQuality
Discovery
67%Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.
The description clearly articulates a specific mail-merge workflow combining Google Sheets and Gmail with good specificity and distinctiveness. However, it lacks explicit trigger guidance ('Use when...') and could benefit from additional natural keywords users might say when requesting this functionality.
Suggestions
Add a 'Use when...' clause with trigger terms like 'mail merge', 'bulk email', 'send emails from spreadsheet', or 'mass personalized messages'
Include common variations users might say: 'bulk email', 'mail merge', 'email blast', 'send to list'
| Dimension | Reasoning | Score |
|---|---|---|
Specificity | Lists multiple specific concrete actions: 'Read recipient data from Google Sheets' and 'send personalized Gmail messages to each row'. Uses third person voice correctly. | 3 / 3 |
Completeness | Clearly answers 'what' (read from Sheets, send personalized Gmail), but lacks an explicit 'Use when...' clause or trigger guidance for when Claude should select this skill. | 2 / 3 |
Trigger Term Quality | Includes good keywords like 'Google Sheets', 'Gmail', 'personalized', and 'messages', but missing common variations users might say like 'mail merge', 'bulk email', 'mass email', or 'spreadsheet'. | 2 / 3 |
Distinctiveness Conflict Risk | Very specific niche combining Google Sheets AND Gmail for mail merge functionality. The combination of both services plus 'personalized messages to each row' creates a distinct trigger unlikely to conflict with general Sheets or Gmail skills. | 3 / 3 |
Total | 10 / 12 Passed |
Implementation
60%Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
This skill is admirably concise and well-structured for a simple recipe, but critically lacks the workflow safety measures needed for a batch email operation. The personalization mechanism is described abstractly rather than concretely demonstrated, and there's no validation or dry-run step before sending potentially many emails.
Suggestions
Add explicit loop syntax showing how to substitute row values (e.g., `row[0]`, `row[1]`) into the email command
Add a validation/dry-run step before sending: preview first N emails or confirm recipient count
Include error handling guidance: what to do if a send fails mid-batch, how to track which emails succeeded
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | Very lean and efficient - no unnecessary explanations about what Gmail or Sheets are, assumes Claude's competence, every line serves a purpose. | 3 / 3 |
Actionability | Provides concrete CLI commands but the personalization loop is incomplete - shows static placeholder values ('Name', 'recipient@example.com') rather than demonstrating how to actually substitute row data into the template. | 2 / 3 |
Workflow Clarity | Missing critical workflow elements: no validation of sheet data before sending, no error handling for failed sends, no confirmation/dry-run step before batch email operation, and the loop mechanism is implied but not explicit. | 1 / 3 |
Progressive Disclosure | Appropriate for a simple recipe - clear prerequisite callout pointing to dependent skills, concise structure with no need for external references given the scope. | 3 / 3 |
Total | 9 / 12 Passed |
Validation
72%Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.
Validation — 8 / 11 Passed
Validation for skill structure
| Criteria | Description | Result |
|---|---|---|
metadata_version | 'metadata.version' is missing | Warning |
metadata_field | 'metadata' should map string keys to string values | Warning |
frontmatter_unknown_keys | Unknown frontmatter key(s) found; consider removing or moving to metadata | Warning |
Total | 8 / 11 Passed | |
6ed836c
Table of Contents
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.