CtrlK
BlogDocsLog inGet started
Tessl Logo

churn-risk-detector

Scan support tickets, Slack channels, NPS scores, and usage patterns to flag accounts showing early churn indicators. Produces a weekly risk scorecard with severity tiers, root cause hypotheses, and suggested save plays per account. Designed for seed/Series A teams where the founder or a single CSM manages all accounts manually.

61

Quality

77%

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/research/composites/churn-risk-detector/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

71%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 delivers a highly actionable, well-sequenced churn-analysis workflow with exact signal thresholds, a numeric scoring model, and complete output templates. Weaknesses are redundancy between 'When to Use' and 'Trigger Phrases' plus a low-value 'Cost' section, and a monolithic structure that inlines large templates and references a non-existent script instead of splitting them into bundle files.

Suggestions

Deduplicate the 'Trigger Phrases' section against 'When to Use' and trim or remove the 'Cost'/'Tools Required' filler to cut tokens without losing guidance.

Move the Phase 4 output template and the save play template into a references/ file (e.g., references/report-template.md) and link to them one level deep, keeping SKILL.md as an overview.

Either provide scripts/run_skill.py or remove/adjust the cron scheduling command that references it, and add a brief intake-validation step (check data completeness before scoring) to strengthen the workflow.

DimensionReasoningScore

Conciseness

The signal tables, scoring model, and templates are tight, but there is duplication and padding: the "When to Use" phrases are repeated nearly verbatim in "Trigger Phrases" ("Which customers are at risk?" / "Which customers are at risk?"), and the "Cost" table ("All signal analysis | Free (LLM reasoning)") adds little. This matches score 3 (mostly efficient but could be tightened), below 4 because whole redundant sections could be removed.

3 / 5

Actionability

Quotes: ">2x their average in last 30 days", "Critical signal = 25 points each", "Red | 70-100 | Critical risk... This week", plus a fill-in save play template and a complete output-format skeleton. The guidance is copy-paste concrete for an analysis skill: exact thresholds, exact weights, exact templates covering the common cases — matching the score-5 anchor (per the rubric note that instruction-only skills need not contain code).

5 / 5

Workflow Clarity

Phases 0-4 (Intake → Signal Extraction → Risk Scoring → Save Play Generation → Output) form a clear, well-sequenced pipeline, and Phase 1C is conditioned on "if data available". It sits at 4 rather than 5 because explicit validation checkpoints are absent — e.g., no step to verify intake data completeness or flag accounts with missing sources before scoring — though this read-only analysis is neither destructive nor risky enough to trigger the cap at 3.

4 / 5

Progressive Disclosure

Sections are clearly organized, but the skill is a ~260-line monolith: the 77-line Phase 4 output template and the save play template are inlined content that belongs in a reference file, and no references/ or scripts/ files exist. The scheduling section references `run_skill.py`, which is not present in any bundle. This matches score 3 (some structure, but content that should be separate is inline); it is not 2 because headers make navigation easy, and not 4 because no appropriate split exists at all.

3 / 5

Total

15

/

20

Passed

Description

75%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 specific and distinctive, clearly stating what the skill does and who it is for with concrete inputs and outputs. Its main weakness is the absence of an explicit 'Use when...' trigger clause, which caps completeness, and slightly thin synonym coverage for natural trigger terms.

Suggestions

Add an explicit trigger clause such as 'Use when the user asks about churn risk, at-risk accounts, customer health, or retention' to raise completeness.

Include common user phrasings/synonyms (e.g., 'retention', 'customer health report', 'at-risk accounts') alongside 'churn' to broaden natural keyword coverage.

DimensionReasoningScore

Specificity

Quotes: "Scan support tickets, Slack channels, NPS scores, and usage patterns", "Produces a weekly risk scorecard with severity tiers, root cause hypotheses, and suggested save plays per account" — multiple concrete actions and a specific deliverable are enumerated. This matches the score-5 anchor (multiple specific concrete actions, comprehensive coverage); it is above score 4 because there are no meaningful gaps in describing inputs, actions, and outputs.

5 / 5

Completeness

The "what" is explicit ("flag accounts showing early churn indicators... produces a weekly risk scorecard"), but the "when" is only weakly implied by "Designed for seed/Series A teams where the founder or a single CSM manages all accounts manually" — that is audience targeting, not trigger guidance. Per the rubric, a missing 'Use when...' clause caps completeness at 3; a 4 would require an explicit when-clause.

3 / 5

Trigger Term Quality

Quotes: "churn indicators", "risk scorecard", "support tickets", "NPS scores", "save plays" — strong natural terms a CS-minded user would say. It falls at score 4 rather than 5 because common synonyms like "retention", "customer health", or "at-risk accounts" are missing, though coverage is otherwise good.

4 / 5

Distinctiveness Conflict Risk

Quotes: "churn indicators", "save plays", "severity tiers", "founder or a single CSM" — a clear customer-success churn niche with distinct triggers and a specific audience, giving minimal overlap risk with other skills. This matches the score-5 anchor (clear niche with distinct triggers) and is above score 4, which reserves minor overlap with closely related skills.

5 / 5

Total

17

/

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.