CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

rc-plan-changes

Use this skill when implementing subscription upgrades, downgrades, and plan switches via RevenueCat on Android. Covers StoreReplacementMode, picking a replacement mode, and letting the SDK manage linkedPurchaseToken chaining.

Quality

90%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Medium

Suggest reviewing before use

SKILL.md
Quality
Evals
Security

Quality

Content

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

Highly actionable, expert-aimed content with an exemplary phased workflow (preconditions, planning, execution with error handling, verification) and a useful mistakes checklist. The main weaknesses are redundancy in restating mode-validity rules and inline version/deprecation details that could be consolidated.

Suggestions

Consolidate the repeated mode-validity rules: the prepaid-plan 'CHARGE_FULL_PRICE only' and 'any other mode fails the purchase' statements appear in the intro prose, both tables, and the DEFERRED paragraph — state each rule once and let the tables carry it.

Move version-sensitive details (SDK 10.x / Play Billing 8.3.0 requirement, GoogleReplacementMode deprecated since 10.3.0) into a short 'Deprecated / version notes' section so the main flow stays stable over time.

DimensionReasoningScore

Conciseness

Mostly lean, expert-level content with no basic-concept padding, but mode-validity rules are repeated across the prose, both tables, and the DEFERRED paragraph ('any other mode fails the purchase' appears four times), and version-sensitive details (SDK 10.x, Play Billing 8.3.0, deprecation since 10.3.0) sit inline rather than in a dedicated deprecated section. Efficient overall with trimmable redundancy — anchor 4, clearly above the noticeably-verbose 3 and below the every-token-earns-its-place 5.

4 / 5

Actionability

Fully executable copy-paste Kotlin covering the common case: PurchaseParams builder with oldProductId derivation from activeSubscriptions, replacementMode selection, awaitPurchase with PurchasesTransactionException and userCancelled handling, plus the required import and per-scenario mode tables. Covers the common cases with specific, runnable guidance.

5 / 5

Workflow Clarity

Four clearly sequenced phases with a preconditions checklist (including the DEFERRED RTDN requirement), a decision procedure for picking the mode, execution with explicit error handling and routing ('nothing active, route to purchase-flow instead'), and an explicit verification phase covering entitlement checks and the DEFERRED pending-switch caveat. The Common mistakes table adds a checklist, matching the anchor-5 pattern.

5 / 5

Progressive Disclosure

No bundle files exist, so all content is appropriately inline for a single-file skill, with well-organized sections, clearly signaled cross-skill links (rc-subscriptions, rc-purchase-flow, rc-error-handling), and a single external reference. At ~113 lines it exceeds the under-50-line simple-skill exception, and the reference structure is minimal, so it fits the good-structure-with-minor-gaps anchor rather than the well-signaled one-level-deep reference structure of a 5.

4 / 5

Total

18

/

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: it states concrete capabilities with named APIs, gives an explicit and specific use-when clause, and occupies a well-defined niche. The only gap is synonym-level trigger coverage (cross-grade, tier change, switch plans).

DimensionReasoningScore

Specificity

Lists multiple concrete actions — 'implementing subscription upgrades, downgrades, and plan switches', 'picking a replacement mode', 'letting the SDK manage linkedPurchaseToken chaining' — and names the exact API type (StoreReplacementMode) with full domain scoping, matching the comprehensive anchor rather than the minor-gaps anchor.

5 / 5

Completeness

Explicitly answers both: an explicit 'Use this skill when implementing subscription upgrades, downgrades, and plan switches via RevenueCat on Android' trigger clause and a distinct 'Covers StoreReplacementMode, picking a replacement mode, and letting the SDK manage linkedPurchaseToken chaining' statement of what it does. The when-clause is concrete and specific, so the anchor-4 caveat ('when could be more explicit') does not apply.

5 / 5

Trigger Term Quality

Good natural terms ('subscription upgrades', 'downgrades', 'plan switches', 'RevenueCat', 'Android') but misses common variations users would say such as 'cross-grade', 'tier change', or 'switch plans'. Fits the good-coverage-with-a-few-missing-terms anchor, not the comprehensive synonym coverage of a 5.

4 / 5

Distinctiveness Conflict Risk

Clear niche — plan changes on an existing Google Play subscription via RevenueCat — with distinct triggers that separate it from sibling skills like a fresh-purchase flow. Minimal conflict risk with other skills.

5 / 5

Total

19

/

20

Passed

Validation

81%

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

Validation — 13 / 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

relative_links

Relative link issues: 2 suspicious

Warning

Total

13

/

16

Passed

Repository

RevenueCat/ai-toolkit

Path

revenuecat-play-billing/skills/rc-plan-changes/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.