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

Optimize this skill with Tessl

npx tessl skill review --optimize ./skills/billing-history/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Discovery

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 extremely detailed implementation-level information about Paddle billing history rendering in Next.js. Its main weaknesses are the absence of an explicit 'Use when...' clause and a reliance on implementation jargon over natural user trigger terms. Adding trigger guidance and more user-facing language would significantly improve skill selection accuracy.

Suggestions

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

Include more natural user-facing trigger terms such as 'invoices', 'payment history', 'billing page', 'Paddle integration', and 'subscription payments' to improve matching against how users actually phrase requests.

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 description clearly answers 'what does this do' with extensive detail about capabilities, but it lacks an explicit 'Use when...' clause or equivalent trigger guidance explaining when Claude should select this skill. Per the rubric, a missing 'Use when...' clause caps completeness at 2.

2 / 3

Trigger Term Quality

It includes relevant technical keywords like 'billing history', 'Next.js', 'Paddle Node SDK', 'transactions', 'pagination', 'Intl.NumberFormat', and specific currencies. However, it lacks common natural user phrases — a user might say 'show invoices', 'payment history', 'billing page', or 'Paddle integration' which aren't all covered, and some terms are very implementation-specific rather than what users would naturally say.

2 / 3

Distinctiveness Conflict Risk

This description is highly specific to a narrow niche: Paddle billing history in Next.js with very particular implementation details (customer-id filter, .next()/.hasMore pagination, zero-decimal currencies). It is very unlikely to conflict with other skills.

3 / 3

Total

10

/

12

Passed

Implementation

62%

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

The skill is highly actionable with excellent executable code examples and a thorough verification checklist, but it is severely undermined by verbosity and redundancy. The same critical points (zero-decimal currencies, customerId filter, TransactionCollection not being an array) are repeated 3-4 times across different sections. Trimming the redundancy and extracting the lengthy pitfalls/traps into a separate reference file would significantly improve token efficiency without losing any value.

Suggestions

Consolidate the repeated warnings about zero-decimal currencies (JPY/KRW/CLP) into a single location — currently stated in the Server Action comments, 'Display' section, 'Common formatting traps', and 'Common pitfalls'.

Merge 'Common formatting traps' into 'Common pitfalls' since they overlap significantly, and reduce both to a concise bullet list without explanatory paragraphs for each point.

Remove the 'Should you build this yourself?' section — Claude can determine applicability from context without being told when not to use a skill.

Remove or drastically shorten the 'How paddle.transactions.list works' preamble section — the full Server Action that follows already demonstrates all the same points with executable code.

DimensionReasoningScore

Conciseness

The skill is extremely verbose at ~300+ lines. It repeats the zero-decimal currency caveat (JPY/KRW/CLP) at least four separate times across different sections. The 'Common pitfalls' section largely restates points already made inline (e.g., customerId filter importance, TransactionCollection not being an array, formattedTotals not existing on Transaction). The 'Should you build this yourself?' and 'Common formatting traps' sections explain things Claude can infer. Significant token waste through redundancy.

1 / 3

Actionability

The skill provides fully executable, copy-paste-ready code: a complete Server Action with type definitions, a utility module for currency formatting, and a client component for pagination. Commands, type shapes, and API patterns are all concrete and specific rather than abstract.

3 / 3

Workflow Clarity

The verification section provides a clear 7-step checklist covering happy path, empty state, unauthenticated state, security validation (cross-customer leakage), and pagination. The Server Action itself is numbered with inline comments explaining each step's purpose. Validation checkpoints are explicit, including the critical security check in step 6.

3 / 3

Progressive Disclosure

The skill references related skills (subscription-sync, webhooks, customer-portal, pricing-pages) and external docs, which is good. However, with no bundle files, all content is inlined in a single monolithic document. The status filter table, common pitfalls, and formatting traps sections could be separated. The content that is present is reasonably well-organized with clear headers, but the sheer volume inline hurts this score.

2 / 3

Total

9

/

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.