AC ltv-loyalty-winback
Predict repeat-customer churn risk from purchase history and tier activity, then output branch-specific win-back and activation workflows. Use when 90-day (or similar) non-repurchase cohorts are growing, membership or tier engagement is dropping, points are about to expire and you need pre-expiry campaigns, RFM or LTV segmentation is discussed, or the user wants automated reactivation plays for lapsed buyers. Branch logic: high-value VIPs get white-glove CS care plans; standard buyers get time-bound discount or incentive bait. Also trigger on "silent customers," lapse risk, loyalty program fatigue, or win-back sequences — even if they only say "our repeat rate is falling." Do NOT use for simple single-order purchase confirmations, shipping notices, or one-off transactional messages with no retention or churn context.
As a process C 64/100 · Has gaps — weak spots: result and completion, inputs and preconditions, running it twice
How to improve
- A spec.yaml with trigger phrases and assertions — a behaviour contract for CI; `skilltest init` writes a template.
Guard findings · 0
✓ No critical or high findings
Files scanned: 6. Evidence is masked. Grey chips explain why severity was lowered.
Against the Agent Skills spec
- warning
frontmatter-yamlSKILL.md: the frontmatter is not valid YAML (YAML parse error: Nested mappings are not allowed in compact mappings at line 2, column 14: description: Predict repeat-customer churn risk from purchase history and tier … ^ ); fields were read line by line. The usual cause is a colon inside an unquoted value
Process rating: all ten parameters 64/100
- 0Result and completion. Does not say what the result is
- 0Inputs and preconditions. Does not say what the process needs to start
- 0Progress reporting. Says nothing while it works
- 30Running it twice. 2 mutating operations with no state check
- 60Failures and branches. 2 branches
- 85Steps. 27 steps, 1 vague phrases
- 100Tools and files. No external tools needed
- 100When it triggers. States when to use and when not to
- 100Consistency. Name and required fields are in place
- 100Execution cost. Instruction body is 822 tokens
- medium 3 test cases, all positive: not one "should refuse" or "should ask first"
Everything here is measured from the skill text rather than judged by a model, so the numbers are checkable. A parameter weighs more when it is a more common reason for the process to stall.
Quality signals
- +3Description length 828: 120–800 characters recommended
- +3Output format is not stated: the model decides each time
- +4No input/output examples
- +1No license
- +2Single-language instructions
- +5Description quotes 2 example trigger phrases
- +4Description says when NOT to use the skill
- +4Structure: 10 headings
- +3Step-by-step instructions: 27 items
- +4Reference files are cited in the instructions (1 of 2)
Quality base 70; lint remarks subtract, signals add up to 100. Result: 80.