CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

campaign-cleaner

Campaign Cleaner integration. Manage data, records, and automate workflows. Use when the user wants to interact with Campaign Cleaner data.

Quality

66%

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/campaign-cleaner/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

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

The body is an efficient, largely executable CLI integration guide with good section structure and concrete state-handling for the connection flow. Its main weaknesses are an undefined "Step 2" cross-reference, missing validation around the destructive delete-campaign action, and the absence of a complete worked example.

Suggestions

Label the workflow steps explicitly (Step 1: connect, Step 2: find/run actions) or remove the "skip to **Step 2**" references that currently point to a step that is never defined.

Add a validation checkpoint before destructive operations — e.g. verify the campaign id via get-campaign-status and confirm with the user before running delete-campaign.

Include one end-to-end worked example showing the connection id being extracted from the `connection ensure` output and substituted into an `action list`/`action run` invocation.

DimensionReasoningScore

Conciseness

Command-first sections are efficient and assume competence ("Add `--json` to any command", "The result is in the `output` field"), with only minor trimmable filler such as "Use action names and parameters as needed", the marketing-oriented intro paragraph, and a truncated table cell ("...l...").

4 / 5

Actionability

Nearly all guidance is copy-pasteable (`npm install -g @membranehq/cli@latest`, `membrane connection ensure "https://campaigncleaner.com/" --json`, `membrane action run <actionId> --input '{"key": "value"}'`, proxy flag table), but there is no end-to-end worked example showing how the connection id is captured from output and substituted into subsequent commands.

4 / 5

Workflow Clarity

A rough sequence exists (install → login → connection ensure → poll for READY → search actions → run) with state-based checkpoints (`CLIENT_ACTION_REQUIRED`, `CONFIGURATION_ERROR`), but "skip to **Step 2**" references a step that is never defined, and the destructive `delete-campaign` action is listed with no validation/confirmation guidance — the destructive-operation cap applies.

3 / 5

Progressive Disclosure

A single well-sectioned SKILL.md (~150 lines) with clear headers and a small actions table; no nested references and no dead links, though the popular-actions table and proxy details could live in a one-level-deep reference file if the skill grows.

4 / 5

Total

15

/

20

Passed

Description

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

The description is distinct thanks to the product-name trigger but undersells the skill: the capability statement is generic filler and the trigger clause is circular rather than task-oriented. Listing the actual concrete actions (campaign submission, spam/analysis reports, credit checks) would lift both specificity and completeness.

Suggestions

Replace "Manage data, records, and automate workflows" with the skill's concrete actions, e.g. "Submits email campaigns for spam/click-fraud analysis, retrieves analysis reports and PDFs, manages saved campaigns, and checks API credits."

Broaden trigger terms beyond the product name to natural task phrasings: "Use when the user wants to check email campaigns for spam, analyze campaign HTML for deliverability, or manage Campaign Cleaner campaigns."

Ground the "Use when" clause in the task rather than restating the product name, so the description answers what the skill does and when it applies without circularity.

DimensionReasoningScore

Specificity

"Campaign Cleaner integration" names the domain, but "Manage data, records, and automate workflows" is generic filler that could describe any data tool — no concrete actions (submit campaigns for analysis, retrieve spam reports, check credits) are stated.

2 / 5

Completeness

The "Use when the user wants to interact with Campaign Cleaner data" clause provides an explicit trigger, but it is circular (it triggers on the product name rather than a task), and the "what" ("Manage data, records, and automate workflows") is vague — between a clear what and both-what-and-when, closer to the weak end.

3 / 5

Trigger Term Quality

"Campaign Cleaner" is a genuinely natural keyword and appears twice, but common user phrasings like "campaigns", "ad traffic", "click fraud", "bot traffic", or "email campaign" are entirely missing.

3 / 5

Distinctiveness Conflict Risk

Anchoring the trigger on the distinctive product name "Campaign Cleaner" keeps conflict risk low; only the generic "manage data, records" phrasing creates minor overlap with generic data-management skills.

4 / 5

Total

12

/

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

membranedev/application-skills

Path

skills/campaign-cleaner/SKILL.md

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.