Read recipient data from Google Sheets and send personalized Gmail messages to each row.
Install with Tessl CLI
npx tessl i github:googleworkspace/cli --skill recipe-send-personalized-emails61
Does it follow best practices?
If you maintain this skill, you can automatically optimize it using the tessl CLI to improve its score:
npx tessl skill review --optimize ./path/to/skillValidation for skill structure
Discovery
50%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 explains the specific capability of reading from Google Sheets and sending personalized Gmail messages, with good distinctiveness. However, it critically lacks explicit trigger guidance ('Use when...') which would help Claude know when to select this skill, and could benefit from additional natural trigger terms users might say when needing mail merge functionality.
Suggestions
Add a 'Use when...' clause with trigger scenarios like 'Use when the user wants to send bulk emails, mail merge, mass personalized messages, or email campaigns using spreadsheet data.'
Include additional natural trigger terms users might say: 'mail merge', 'bulk email', 'mass email', 'email blast', 'send emails from spreadsheet'.
| 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 | Describes what the skill does but completely lacks a 'Use when...' clause or any explicit trigger guidance for when Claude should select this skill. | 1 / 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 'email campaign'. | 2 / 3 |
Distinctiveness Conflict Risk | Clear niche combining Google Sheets + Gmail + mail merge functionality. The specific combination of reading from Sheets and sending via Gmail is distinctive and unlikely to conflict with general email or spreadsheet skills. | 3 / 3 |
Total | 9 / 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 checkpoint: verify row count and preview first email before batch send
Include a dry-run or confirmation step since this is a destructive batch operation that cannot be undone
Show error handling for common failures (invalid email addresses, API rate limits)
| 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 | |
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.