CtrlK
BlogDocsLog inGet started
Tessl Logo

paddle-billing-history

Render the authenticated user's billing history in Next.js — listing transactions via the Paddle Node SDK, the mandatory customer-id filter, pagination via `.next()`/`.hasMore`, status filtering, and formatting raw transaction totals (lowest-unit conversion + Intl.NumberFormat, with the zero-decimal currency special case for JPY/KRW/CLP).

57

Quality

65%

Does it follow best practices?

Impact

No eval scenarios have been run

SecuritybySnyk

Passed

No known issues

Fix and improve this skill with Tessl

tessl review fix ./skills/billing-history/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

62%

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

The skill excels at actionability with complete, executable code and a thorough verification checklist, but suffers significantly from verbosity and repetition. The zero-decimal currency caveat appears three times, and the common pitfalls section largely restates warnings already given inline. Trimming redundancy and consolidating repeated warnings would cut the skill by 30-40% without losing any information.

Suggestions

Consolidate the zero-decimal currency warning to a single location (the parseMoney utility section) and remove the duplicate mentions in 'Common formatting traps' and 'Common pitfalls'.

Merge 'Common formatting traps' into 'Common pitfalls' — they cover overlapping concerns and splitting them creates redundancy.

Remove the 'Should you build this yourself?' section or reduce it to a single sentence — Claude can determine applicability from the 'When to use' section.

Cut the status filter table explanation to just the rule: 'Include billed, paid, past_due, completed, canceled. Exclude draft and ready (internal states).'

DimensionReasoningScore

Conciseness

The skill is extremely verbose at ~300+ lines. It repeats the zero-decimal currency warning at least 3 times (in the formatting section, common formatting traps, and common pitfalls). The 'Should you build this yourself?' section, the lengthy status filter table explanation, and the extensive common pitfalls list (many of which restate points already made inline) all add significant redundancy. Claude doesn't need to be told multiple times that JPY/KRW/CLP are zero-decimal currencies.

1 / 3

Actionability

The skill provides fully executable, copy-paste-ready code: a complete Server Action, a utility module for currency formatting, and a client component for pagination. Code is concrete with real types, real SDK method calls, and real Supabase patterns — not pseudocode.

3 / 3

Workflow Clarity

The Server Action has clearly numbered steps (1-5) with inline comments explaining each phase. The verification section provides a thorough 7-step checklist including security validation (step 6) and edge cases (no customer record, logged out). The pagination flow is explicitly sequenced with a warning against eager-loading.

3 / 3

Progressive Disclosure

The skill references related skills (subscription-sync, webhooks, customer-portal, pricing-pages) and external docs, which is good. However, the content is monolithic — the status filter table, common formatting traps, common pitfalls, and verification steps could be better organized or split. With no bundle files, all ~300 lines live in one file with significant inline detail that could be separated.

2 / 3

Total

9

/

12

Passed

Description

67%

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 excels at specificity and distinctiveness, providing highly detailed implementation-level information about Paddle billing in Next.js. Its main weakness is the lack of an explicit 'Use when...' clause, which would help Claude know when to select this skill. The trigger terms are heavily technical, which may miss more natural user phrasings around billing and payment history.

Suggestions

Add an explicit 'Use when...' clause, e.g., 'Use when the user asks about displaying billing history, payment transactions, or invoices using Paddle in a Next.js application.'

Include more natural user-facing trigger terms like 'payment history', 'invoices', 'charges', 'subscription billing', 'customer billing page' alongside the technical terms.

DimensionReasoningScore

Specificity

The description lists multiple specific concrete actions: rendering billing history, listing transactions via Paddle Node SDK, customer-id filtering, pagination via .next()/.hasMore, status filtering, and formatting raw transaction totals with lowest-unit conversion, Intl.NumberFormat, and zero-decimal currency handling for JPY/KRW/CLP.

3 / 3

Completeness

The 'what' is thoroughly covered with detailed implementation specifics, but there is no explicit 'Use when...' clause or equivalent trigger guidance. The when is only implied by the specificity of the domain (Paddle + Next.js billing). Per rubric guidelines, a missing 'Use when...' clause caps completeness at 2.

2 / 3

Trigger Term Quality

Contains strong technical keywords like 'Paddle Node SDK', 'billing history', 'Next.js', 'transactions', 'pagination', 'Intl.NumberFormat', 'JPY/KRW/CLP'. However, these are quite specific/technical and may miss more natural user phrasings like 'payment history', 'invoices', 'charges', or 'subscription billing'. Some terms are very implementation-specific rather than what users would naturally say.

2 / 3

Distinctiveness Conflict Risk

Extremely specific niche: Paddle Node SDK + Next.js + billing history with particular formatting rules. This is highly unlikely to conflict with other skills due to the very narrow technology and domain combination.

3 / 3

Total

10

/

12

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.

Validation11 / 11 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.