CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

rc-payment-recovery

Use this skill when handling failed renewals on Android with RevenueCat. Covers how Grace Period and Account Hold are reflected in CustomerInfo automatically, when to prompt the user, and how to trigger Google's in app messaging via showInAppMessages.

Quality

90%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

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

Excellent instructional content: executable Kotlin for every configuration path, precise non-obvious SDK semantics (billingIssueDetectedAt lifetime, webhook firing order, managementURL fallback), a phased workflow, and a concrete verification checklist. The only flaw is minor redundancy between the intro paragraph and the state table, which costs a single conciseness point.

DimensionReasoningScore

Conciseness

The body is dense with non-obvious SDK/backend facts ('a later recovery, during grace or hold, sends RENEWAL', 'You do not decode RTDNs') and assumes competence throughout. Minor trimmable instances keep it from 5: the intro sentence ('grace period (user keeps access while Google retries the card)...') duplicates the table's Access column, and 'This is the default:' restates the preceding sentence and code. Clearly above the some-unnecessary-explanation anchor at 3.

4 / 5

Actionability

Fully executable copy-paste Kotlin for every variant: the default builder with showInAppMessagesAutomatically(true), the manual trigger pairing, the four-branch when block on billingIssueDetectedAt/isActive, and Purchases.sharedInstance.showManageSubscriptions(activity) with its SDK version. The examples cover the common cases and even encode the subtle account-hold/expired ambiguity. No gaps; matches the top anchor.

5 / 5

Workflow Clarity

Clear phase sequence (Understand → Plan → Execute → Verify) with an explicit validation checklist: each transition has a concrete expected outcome ('Confirm billingIssueDetectedAt becomes non null and isActive stays true', 'confirm a BILLING_ISSUE webhook fires on the first transition'). Phase 2's decision questions with 'If you only want the default behavior, stop here' provide conditional guidance. This matches the explicit-validation-with-checklists anchor, above the minor-gaps anchor at 4.

5 / 5

Progressive Disclosure

No bundle files exist, so the skill is judged on its own structure: well-organized sections (state table, plan questions, three execution variants, verify checklist) with nothing bulk inlined that belongs in a separate file. The single reference ('Full chapter' link) is one level deep and clearly signaled, and navigation is trivial. All content earns its place inline; matches the easy-navigation anchor.

5 / 5

Total

19

/

20

Passed

Description

87%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 with an explicit trigger clause, third-person voice, and concrete, domain-specific capability statements. Its only weaknesses are a few missing natural synonyms (e.g. 'billing issue', 'payment failure') and slightly incomplete coverage of what the body actually teaches. No fluff, buzzwords, or over-claims are present.

DimensionReasoningScore

Specificity

Lists several concrete capabilities — 'how Grace Period and Account Hold are reflected in CustomerInfo automatically', 'when to prompt the user', and 'how to trigger Google's in app messaging via showInAppMessages' — with only minor coverage gaps (backend BILLING_ISSUE webhook handling and the fix-payment flow from the body are absent). Not 5 because coverage is not fully comprehensive; not 3 because it goes well beyond 1-2 generic actions.

4 / 5

Completeness

Explicitly answers both parts: 'Use this skill when handling failed renewals on Android with RevenueCat' gives a concrete when-clause, and 'Covers how Grace Period and Account Hold are reflected in CustomerInfo... when to prompt the user, and how to trigger Google's in app messaging' gives a clear what. Both are concrete, matching the top anchor rather than the 4 anchor where 'when' is only adequately specific.

5 / 5

Trigger Term Quality

Good natural keyword coverage: 'failed renewals', 'Grace Period', 'Account Hold', 'Android', 'RevenueCat' are phrases a user would naturally say. Missing common variations like 'billing issue', 'payment failure', or 'subscription recovery', so it falls short of the comprehensive-synonyms anchor at 5, but is clearly above the missing-variations-midpoint at 3.

4 / 5

Distinctiveness Conflict Risk

Clear niche (RevenueCat + Android + failed renewals) with distinct triggers like Grace Period and Account Hold; minimal overlap risk with any other plausible skill. Matches the clear-niche anchor; nothing pushes it toward the minor-overlap anchor at 4.

5 / 5

Total

18

/

20

Passed

Validation

87%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

metadata_field

'metadata' should map string keys to string values

Warning

Total

14

/

16

Passed

Repository

RevenueCat/ai-toolkit

Path

revenuecat-play-billing/skills/rc-payment-recovery/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.