CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

paddle-pricing-pages

Render country-localized prices on a Next.js pricing page using Paddle.js PricePreview — country detection, billing frequency toggle, and currency formatting.

64

Quality

80%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./providers/cursor/plugin/skills/pricing-pages/SKILL.md

The canonical home for this skill is paddle-pricing-pages in PaddleHQ/paddle-agent-skills

SKILL.md
Quality
Evals
Security

Quality

Content

85%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 a strong, highly actionable implementation guide: complete executable code for every layer, a logical build order, and an explicit verification checklist with recovery guidance. Weaknesses are confined to structure and trimming — the general Paddle-MCP guidance block is inlined instead of living in a shared reference file, and the motivational "Why use PricePreview" section adds tokens without instruction.

Suggestions

Move the general Paddle-MCP usage blockquote (camelCase method paths, snake_case params, pagination, 50-call/30s/32k caps) into a shared reference file and link to it, keeping only the pricingPreview example inline.

Trim or delete the "Why use PricePreview at all?" motivational prose (and fix the garbled sentence "but comes with very strong regional pricing built-in"), keeping just the two factual sentences about what PricePreview returns.

Consider splitting the currency-unit/decimal-places deep dive into a short reference file, leaving the four zero-decimal currencies and the parse-money helper inline.

DimensionReasoningScore

Conciseness

The body is code-dense and packed with genuinely Paddle-specific facts (the OTHERS sentinel, zero-decimal currencies, formattedTotals vs totals, checkout country prefill with postalCode), assuming Claude's competence at Next.js/React. Minor over-explanation remains: the motivational "Why use PricePreview at all?" prose ("You _could_ hardcode '$10/month' in your UI..."), which also contains a grammatical garble, and the ~200-word general-purpose Paddle-MCP blockquote that is not pricing-page-specific. This is anchor 4 (efficient with minor instances that could be trimmed), not 5 because of those padded passages, and not 3 because the padding is localized rather than pervasive.

4 / 5

Actionability

Fully executable, copy-paste-ready code throughout: the usePaddlePrices hook, the Pricing component, the App Router server page for header-based country detection, the currency parsing/formatting utils, and the Checkout.open handler, plus npm install and env-var setup. Specific API shapes (item.formattedTotals.total, item.totals.total, address.countryCode) and edge cases (up to 100 items, customer email/id requirement for prefill) cover the common cases. Clear anchor 5.

5 / 5

Workflow Clarity

The build sequence is clearly ordered — prerequisites/catalog, define tiers, hook, page component, country detection options A/B/C, currency formatting, checkout combination, pitfalls — and culminates in an explicit 6-step "Verify the integration" checklist with expected outcomes and a feedback loop ("If it doesn't, the country checkout detected differs from the one you previewed: prefill it"). Error handling is built into the code (.catch setting an error state, role="alert"). Clear anchor 5; no destructive/batch operations that would demand additional validation.

5 / 5

Progressive Disclosure

There are no bundle files at all (no references/, scripts/, or assets/), and the ~360-line body is monolithic. Internal section structure is good and external "Related docs" links are one level deep, but content that belongs in a separate reference is inlined — most notably the general Paddle-MCP usage blockquote (method casing, pagination, per-execute caps) which is shared guidance unrelated to pricing pages, and arguably the currency-decimals deep dive. This matches anchor 3 (some structure, content that should be separate is inline); not 2 because the inlined separable content is one blockquote rather than a large misfiled reference, and the file is well-sectioned and navigable.

3 / 5

Total

17

/

20

Passed

Description

66%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, concrete, and clearly distinct within the Paddle/Next.js niche, listing the key capabilities (country detection, billing frequency toggle, currency formatting) in third person. Its main weakness is the complete absence of a "Use when..." trigger clause, which both caps completeness and slightly weakens natural trigger-term coverage.

Suggestions

Append an explicit trigger clause, e.g.: "Use when building a pricing or upgrade page with Paddle, or when prices need to display in the visitor's local currency with correct tax behavior."

Add natural trigger synonyms users would say — "local currency", "regional pricing", "Paddle billing" — to improve trigger-term coverage.

Mention tax behavior (e.g., VAT-inclusive EU prices) in the description since it is a headline capability of PricePreview covered extensively in the body.

DimensionReasoningScore

Specificity

"Render country-localized prices... using Paddle.js PricePreview — country detection, billing frequency toggle, and currency formatting" names the domain and several concrete actions (country detection, billing frequency toggle, currency formatting), with minor gaps such as tax behavior and checkout-price consistency. It lists several specific actions with minor coverage gaps (anchor 4), not fully comprehensive (anchor 5) and well beyond 1-2 actions (anchor 3).

4 / 5

Completeness

The "what" is clear (render country-localized prices via PricePreview with country detection, frequency toggle, currency formatting), but there is no "Use when..." clause or equivalent explicit trigger guidance; the rubric guideline caps completeness at 3 in that case. It is not score 2 because the "what" is concrete and specific, and not score 4 because the "when" is entirely absent rather than merely imprecise.

3 / 5

Trigger Term Quality

Natural phrases users would say are present — "pricing page", "localized prices", "Next.js", "billing frequency", "currency formatting", "country" — but common variations like "local currency", "Paddle billing", or "price preview" as a user phrase are missing. Good keyword coverage with a few natural terms missing (anchor 4), short of comprehensive synonym coverage (anchor 5).

4 / 5

Distinctiveness Conflict Risk

The Paddle.js + Next.js pricing-page niche is well-delineated with distinct triggers (PricePreview, country-localized prices). Minor overlap risk exists only with a closely related sibling skill (e.g., a Paddle checkout-web skill covering the same SDK), matching anchor 4 rather than anchor 5.

4 / 5

Total

15

/

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

providers/cursor/plugin/skills/pricing-pages/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.