CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

paddle-subscription-cancel

Cancel a Paddle subscription from a Next.js Server Action — auth, ownership check, safe `effectiveFrom` default, revalidation, and the `canceled` vs `scheduledChange` distinction.

Quality

83%

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.

The body is highly actionable and workflow-safe: executable code with inline validation, an explicit error-recovery loop, and a thorough verification checklist for a destructive operation. The only notable weakness is a generic Supabase boilerplate section that pads token cost and could live in a reference file.

DimensionReasoningScore

Conciseness

The body is mostly lean, Paddle-specific knowledge Claude cannot be assumed to have (paused-subscription 400 behavior, the 30-minute lock, `scheduledChange` vs `canceled`, pitfalls), but the ~50 lines of generic Supabase helper boilerplate and the env-var listing are over-explanation that could be trimmed.

4 / 5

Actionability

Fully executable, copy-paste-ready server action with complete imports, auth and ownership checks, paused-status branching, typed error mapping, revalidatePath, a slim DTO, a working undo action, and specific expected outputs ("{ success: true, status: 'active', scheduledChange: '<some date>' }").

5 / 5

Workflow Clarity

Numbered steps (1–6) are sequenced inline, an explicit error-recovery loop maps ApiError codes to user messages and rethrows the rest, and a 7-item verification checklist — including adversarial checks (logged out, forged subscriptionId, confirming the SDK was NOT called) — covers this destructive operation.

5 / 5

Progressive Disclosure

A single well-sectioned file with clearly signaled sibling-skill and external-doc links one level deep, but no bundle files exist and ~50 lines of Supabase helper boilerplate sit inline where a separate reference file would fit better.

4 / 5

Total

18

/

20

Passed

Description

70%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 clearly distinctive, with concrete named components and natural trigger phrases. Its main weakness is the missing explicit "Use when..." clause, which caps completeness, and the absence of common trigger synonyms like "unsubscribe".

Suggestions

Add an explicit trigger clause, e.g. "Use when building a cancel-subscription button or handling subscription cancellation requests in a Next.js app using Paddle billing."

Include common user phrasings as trigger terms: "unsubscribe", "end subscription", "stop billing".

Mention the undo capability (removing a scheduled cancellation) since the skill covers reversing a scheduled cancel.

DimensionReasoningScore

Specificity

Names the concrete action ("Cancel a Paddle subscription from a Next.js Server Action") plus specific components ("auth, ownership check, safe `effectiveFrom` default, revalidation, and the `canceled` vs `scheduledChange` distinction"), but coverage has minor gaps — e.g., undoing a scheduled cancellation is not mentioned.

4 / 5

Completeness

The "what" is clear and specific, but there is no "Use when..." clause or equivalent explicit trigger guidance — "from a Next.js Server Action" describes the mechanism, not when to invoke the skill — which caps completeness at 3.

3 / 5

Trigger Term Quality

Natural phrases users would say are present ("Cancel", "subscription", "Paddle", "Next.js", "Server Action"), but common variations like "unsubscribe", "end subscription", or "stop billing" are missing.

4 / 5

Distinctiveness Conflict Risk

"Paddle subscription cancel from Next.js Server Action" carves a clear niche with distinct triggers (Paddle + Next.js + cancel) and minimal conflict risk even against sibling skills like webhook sync or portal link-outs.

5 / 5

Total

16

/

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

Path

skills/subscription-cancel/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.