Cancel a Paddle subscription from a Next.js Server Action — auth, ownership check, safe `effectiveFrom` default, revalidation, and the `canceled` vs `scheduledChange` distinction.
87
80%
Does it follow best practices?
Impact
100%
1.09xAverage score across 3 eval scenarios
Advisory
Suggest reviewing before use
Optimize this skill with Tessl
npx tessl skill review --optimize ./skills/subscription-cancel/SKILL.mdCancel subscription Server Action implementation
'use server' directive
100%
100%
Auth check first
100%
100%
Unauthenticated rejection
50%
100%
Customer ownership lookup
100%
100%
Subscription ownership check
100%
100%
Forbidden error on mismatch
50%
100%
Null customerRow handled
100%
100%
effectiveFrom default
100%
100%
revalidatePath called
0%
100%
Slim DTO returned
20%
100%
Security hardening of broken cancel action
Auth check added
100%
100%
Customer table lookup
100%
100%
Subscription ownership verified
100%
100%
Null customer handled
100%
100%
effectiveFrom corrected
100%
100%
Slim DTO instead of raw object
100%
100%
Subscription state display and access gating
Terminal state check
100%
100%
Access revoked only on canceled
100%
100%
Scheduled status display
100%
100%
Canceled status display
100%
100%
handleCancelResponse: no immediate revoke
100%
100%
handleCancelResponse: scheduled message
100%
100%
Mirror-based logic
100%
100%
62438cd
Table of Contents
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.