CtrlK
BlogDocsLog inGet started
Tessl Logo

paddle-subscription-update

Change a Paddle subscription's plan from a Next.js Server Action — auth, ownership check, `prorationBillingMode`, items-array replace semantics, preview-before-commit, and `on_payment_failure` handling.

87

1.35x
Quality

81%

Does it follow best practices?

Impact

96%

1.35x

Average score across 3 eval scenarios

SecuritybySnyk

Medium

Suggest reviewing before use

The canonical home for this skill is paddle-subscription-update in PaddleHQ/paddle-agent-skills

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.

A dense, high-value skill: nearly all content is Paddle-specific knowledge Claude lacks, the Server Action is fully executable, and the verification section is exemplary with real failure-path checkpoints. The main improvement levers are deduplicating the overlapping proration tables and pitfalls restatements, and splitting the reference-heavy tables/pitfalls into a bundle file to shorten SKILL.md.

Suggestions

Deduplicate the proration guidance: the 'Upgrade, downgrade, or term change?' table largely subsumes the 'Choose your prorationBillingMode' table and the related pitfalls bullets — merging them would cut significant tokens.

Move the 'Common pitfalls' list and the detailed proration/onPaymentFailure decision tables into a references/ file (e.g. references/proration-modes.md), keeping SKILL.md as a lean overview with one-level-deep links — this would lift progressive_disclosure toward 5.

Trim the 'Verify the integration' section's dashboard-sub-steps to a compact checklist; a few steps restate guidance already given in 'Preview before committing'.

DimensionReasoningScore

Conciseness

Nearly every section carries non-obvious API knowledge Claude cannot be assumed to have (the five prorationBillingMode values, items replace-not-append semantics, onPaymentFailure defaults, mixed-interval rejection), and there is no filler explaining basic concepts. However, content repeats: the 'Choose your prorationBillingMode' table overlaps the 'Upgrade, downgrade, or term change?' table, and the 'Common pitfalls' section restates the proration, items, and ownership guidance from earlier sections almost verbatim. This places it at anchor 4 (efficient, minor instances that could be trimmed) rather than 5 (every token earns its place).

4 / 5

Actionability

The full Server Action is complete, executable TypeScript with 'use server', imports, numbered auth/ownership/update/revalidate/DTO steps, and copy-paste-ready snippets for previewUpdate and the apply_change override. The related-docs links and Paddle dashboard verification steps cover the common cases. Project-local helpers (getPaddleInstance, Supabase clients) are legitimately external, so there are no real gaps — anchor 5.

5 / 5

Workflow Clarity

The flow is clearly sequenced — pick prorationBillingMode by flow type, preview before committing, run the update, then verify — and the 'Verify the integration' section provides eight explicit validation checkpoints including failure-path checks (a declining test card for both onPaymentFailure values, a forged subscriptionId, a logged-out call, an unoffered priceId). These are true feedback loops for a billing operation, matching anchor 5. Not a 4 because validation gaps are essentially absent.

5 / 5

Progressive Disclosure

Sections are well-organized and clearly signaled ('When to use this skill', 'Prerequisites', mode tables, pitfalls, verify, related docs), and the body points one level deep to sibling skills and external Paddle docs. However, no bundle files exist and the skill is ~240 lines in a single SKILL.md — the proration decision tables and the long pitfalls list are prime candidates for a references/ file per the rubric's own good-example pattern. Anchor 4 (good structure, most content appropriately placed, minor organization gaps) fits; anchor 5 requires well-signaled references splitting content appropriately, which the single-file layout doesn't achieve at this length.

4 / 5

Total

18

/

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.

A highly specific, well-scoped description that names concrete API-level capabilities in third-person voice. Its one structural weakness is the missing 'Use when...' trigger clause, which both caps completeness and leaves natural trigger phrases like 'upgrade plan' or 'switch tier' out of the description.

Suggestions

Append an explicit trigger clause, e.g. 'Use when building an "Upgrade plan", "Switch tier", or "Change subscription" action in a Next.js billing UI' — the body already contains this phrasing and it would raise completeness from 3.

Include the natural user-facing synonyms ("upgrade", "downgrade", "switch tier", "change plan") in the description so it matches the phrasings users actually say.

Consider trimming the enumerated parameter names (prorationBillingMode, on_payment_failure) to two or three headline capabilities; they add specificity but the current em-dash list reads slightly dense against the rubric's bias toward concise trigger-rich text.

DimensionReasoningScore

Specificity

The description enumerates concrete actions: "Change a Paddle subscription's plan", "auth", "ownership check", "prorationBillingMode", "items-array replace semantics", "preview-before-commit", and "on_payment_failure handling" — multiple specific, concrete capabilities with comprehensive coverage of the skill's scope. It does not fit score 4 (minor gaps in coverage) since it names every major behavior the body actually covers, and score 5's anchor is the best match.

5 / 5

Completeness

The 'what' is clear and specific (plan change via Server Action with auth, proration, items semantics), but there is no 'Use when...' clause or equivalent explicit trigger guidance — the judging guideline caps this at 3. It is not a 2 because the 'what' is concrete rather than vague, and not a 4 because the 'when' is entirely absent rather than weakly implied.

3 / 5

Trigger Term Quality

"Change a Paddle subscription's plan", "Next.js Server Action", and "on_payment_failure" are natural, searchable terms, but the body's own "Upgrade plan," "Switch tier," "Change subscription" phrasing — the phrases a user would actually say — are absent from the description. Good coverage with a few natural synonyms missing, which matches anchor 4; it is above anchor 3 (missing common variations is more than 'some' gaps here is marginal, but anchor 5's 'comprehensive coverage including synonyms' is not met).

4 / 5

Distinctiveness Conflict Risk

"Paddle subscription's plan" + "Next.js Server Action" carves out a clear niche with distinct triggers — a plan-change request naming Paddle would not plausibly route to a PDF or git skill. Sibling skills (subscription-cancel, subscription-sync) cover different operations, so conflict risk is minimal, matching anchor 5.

5 / 5

Total

17

/

20

Passed

Validation

100%

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

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository
PaddleHQ/paddle-agent-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.