CtrlK
BlogDocsLog inGet started
Tessl Logo

newsletter-signal-scanner

Subscribe to and scan industry newsletters for buying signals, competitor mentions, ICP pain-point language, and market shifts. Parses incoming newsletter emails via AgentMail, matches against keyword campaigns, and delivers a weekly digest of actionable signals. Use when a marketing team wants to turn newsletter subscriptions into an ongoing intelligence feed without manual reading.

64

Quality

80%

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

Fix and improve this skill with Tessl

tessl review fix ./skills/monitoring/composites/newsletter-signal-scanner/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

61%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 well-organized, reasonably lean workflow document whose main weaknesses are non-executable pseudocode for the core matching logic and the absence of any validation checkpoint before the batch digest is delivered. Referencing run_skill.py and sponsored-newsletter-finder without those files present in the bundle also weakens navigation and actionability.

Suggestions

Replace the Phase 2 pseudocode with executable Python (define extract_context and use a plain dict/Email object instead of attribute assignment), and show the concrete AgentMail API call for fetching inbox emails in Phase 1.

Add a validation step before delivering the digest — e.g., spot-check each extracted snippet against the source email to confirm the keyword and context actually match, and re-scan if any entry is malformed — since this is a batch operation.

Resolve the dangling references: either include run_skill.py in a scripts/ directory or remove the cron example, and clarify what sponsored-newsletter-finder is; also drop the redundant 'Trigger Phrases' section that duplicates 'When to Use'.

DimensionReasoningScore

Conciseness

The body is mostly lean and instructional — intake questions, a config schema, and an output template with no padding explaining concepts Claude already knows. Minor trims are possible: the 'Trigger Phrases' section duplicates 'When to Use', and the Cost table's rows ('Depends on AgentMail pricing', 'Near-zero ongoing cost') add little. Not a 5 because these few tokens don't earn their place; not a 3 since there is no real over-explanation.

4 / 5

Actionability

The Phase 2 block is pseudocode, not executable — 'extract_context(email.body, keyword)' is undefined and 'email.signal_matches = matches' assumes an attribute-assigning object — and Phase 1 gives only a vague instruction ('Fetch emails from inbox <inbox_id>') with no concrete AgentMail API call. This matches the anchor 'some concrete guidance but incomplete; pseudocode instead of executable code'. Not a 4 because the core scan/match logic cannot be run as written; above 2 because the config JSON and digest templates are genuinely concrete.

3 / 5

Workflow Clarity

Phases 0-5 give a clear sequence (intake → scan → match → extract → output → subscribe), but this is a batch operation (scanning many emails into a weekly digest) with no validation checkpoint — nothing verifies keyword matches, snippet extraction, or the final digest before delivery. Per the guideline, missing validation in batch operations caps this at 3; it is above 2 because the sequence itself is well-defined.

3 / 5

Progressive Disclosure

The skill is a self-contained, well-sectioned document (~190 lines) with clear headers per phase and no nested references, which is appropriate given the bundle has no references/, scripts/, or assets/ files. It scores 4 rather than 5 because the body references files that don't exist in the bundle ('run_skill.py' in the Scheduling cron command, 'sponsored-newsletter-finder') and the long digest output template could arguably live in a separate reference file.

4 / 5

Total

14

/

20

Passed

Description

92%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: third-person voice, concrete multi-action capability list, and an explicit 'Use when' trigger clause aimed at a specific audience. Trigger term coverage is good but could add a few more natural synonyms users might say.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions — 'Subscribe to and scan industry newsletters for buying signals, competitor mentions, ICP pain-point language, and market shifts', 'Parses incoming newsletter emails via AgentMail, matches against keyword campaigns, and delivers a weekly digest' — giving comprehensive coverage of the skill's capabilities. It clearly matches the anchor for multiple specific concrete actions; nothing significant is missing.

5 / 5

Completeness

It explicitly answers both questions: what ('Parses incoming newsletter emails via AgentMail, matches against keyword campaigns, and delivers a weekly digest of actionable signals') and when ('Use when a marketing team wants to turn newsletter subscriptions into an ongoing intelligence feed without manual reading'). This matches the anchor with a concrete, explicit trigger clause.

5 / 5

Trigger Term Quality

Natural terms like 'newsletters', 'competitor mentions', 'buying signals', 'market shifts', and 'weekly digest' give good keyword coverage a user would plausibly say. A few natural variations are missing (e.g., 'monitor newsletters', 'track mentions', 'intelligence feed' appears only once), so it falls just short of the comprehensive-synonyms anchor.

4 / 5

Distinctiveness Conflict Risk

The AgentMail-parsed newsletter intelligence niche with distinct triggers (newsletter monitoring, buying signals, competitor mentions) is clearly distinguishable from generic monitoring or email skills. Minimal conflict risk with other skill domains.

5 / 5

Total

19

/

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.