Content
92%Weight 40%Scale 1-5Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
An exceptionally strong single-file skill: executable end-to-end code, explicit validation gates and feedback loops, and dense API-specific knowledge with no filler. Its one structural weakness is that everything — constraint catalogs, renewal semantics, pitfalls — lives inline in one ~500-line file with no reference bundle to offload detail to.
Suggestions
Move the stable reference material (meter/price/allowance constraint lists in Step 3, the renewals and plan-changes table, and the early-access limitations list) into a `references/` file such as `references/api-constraints.md`, keeping SKILL.md as the workflow overview with one-level-deep, clearly signaled pointers.
Optionally split the full webhook-handling and outbox-worker code into `scripts/` files so the body keeps only the signatures and the decision logic, reducing SKILL.md's token footprint when only the workflow is needed.
Add a short table of contents or 'jump to step' map near the top so the seven-step sequence and the cross-cutting sections (renewals, pitfalls, verify) are navigable without scrolling the whole monolith.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The body is dense with non-obvious, Paddle-specific facts ("Paddle returns `403` for both permission and authentication problems", "PATCH /prices/{price_id} replaces `allowances` in full", "aggregation defaults to `sum`, the only option during early access") rather than concepts Claude already knows; directives are terse ("Don't call Paddle in the middle of the customer's request") and nearly every sentence carries API-specific information the model cannot infer. The rare transitional sentences ("Read this first. These facts change how you build the integration.") are single-line signposts, not padding, so it sits at the 'lean and efficient' anchor rather than the 'minor over-explanation' anchor below it. | 5 / 5 |
Actionability | Every step ships complete, copy-paste-ready TypeScript: the `paddleApi` helper with error/Retry-After handling, `check-usage-billing-access.ts` with an explicit AUTH_ERRORS branch, `setup-usage-billing.ts` with real request bodies, a `sendUsageEvent` worker with a quantity regex (`/^(0|[1-9]\d{0,34})(\.\d{1,9})?$/`) and enumerated retry/failure outcomes, the webhook handler, plus the exact run command (`node --env-file=.env.local --import tsx scripts/<name>.ts`). Specific error codes (`usage_event_timestamp_too_old`, `meter_action_usage_balance_unit_duplicate`, `subscription_prorated_billing_not_allowed_for_allowance`) and concrete SQL make the common cases fully executable — matching the top anchor, not the 'minor gaps' anchor at 4. | 5 / 5 |
Workflow Clarity | Seven numbered steps are strictly ordered with an explicit gate up front (Step 2 "If the account isn't in early access... stop there"), validation checkpoints inside the flow (Step 4 confirms "`remaining.total` should equal the allowance `amount` multiplied by the item quantity" with a failure-troubleshooting list), feedback loops for batch financial operations (outbox retry with backoff, "Stop the run on a `429`", and a 7-item "Verify the integration" checklist including idempotency: "Send the same row again... Confirm `remaining.total` doesn't change"). This exceeds the 'clear sequence with explicit validation steps; feedback loops; checklists' anchor. | 5 / 5 |
Progressive Disclosure | There are no bundle files at all (no `references/`, `scripts/`, `assets/`), so all ~500 lines — including API-constraint lists, the renewals/plan-changes table, and the pitfalls section — are inlined in SKILL.md. Internal structure is good (numbered steps, clear headers, well-signaled external doc links), but content that would naturally live in a one-level-deep reference file (e.g. the meter/price constraint catalog or the renewal semantics table) is inline, and the under-50-lines exception for header-only skills clearly doesn't apply. This matches 'some structure but content that should be separate is inline' better than the 'most content appropriately placed' anchor at 4, which presumes a working split across files. | 3 / 5 |
Total | 18 / 20 Passed |