CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

pakistan-payments-stack

Design and implement production-grade Pakistani payment integrations (JazzCash, Easypaisa, bank/PSP rails, optional Raast) for SaaS with PKR billing, webhook reliability, and reconciliation.

Quality

72%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./skills/pakistan-payments-stack/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

63%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.

A substantive, well-guarded payments playbook with explicit verification gates, idempotency and reconciliation controls. Its weaknesses are a currency-unit contradiction (rupee vs paisa) that undercuts money-handling correctness, degraded markdown structure (lost heading markers, broken code fence, mojibake such as "Pakistan?s" and "?Validate this implementation..."), and a fully monolithic layout with no reference files.

Suggestions

Resolve the currency contradiction: pick one unit (paisa is the smallest unit of PKR) and align the data model field (amount_rupee), the interface (amountPaisa), and the comment so all three agree.

Repair the markdown: restore '##' heading markers on the sections that lost them, fix the broken mermaid fence, and re-encode the mojibake characters ("Pakistan?s", "?Validate this implementation...").

Move the TypeScript provider abstraction, data model spec, and reconciliation procedure into references/ files linked from a leaner SKILL.md overview, and delete the meta "Suggested references to keep in your skill docs (for provenance)" block, which addresses the skill author rather than the executing agent.

DimensionReasoningScore

Conciseness

The body is dense and prescriptive (field lists, numbered webhook rules, checklists) and does not explain concepts Claude already knows. Minor trimmable material keeps it below the 5 anchor: the meta-instructions to the skill author ("**Suggested references to keep in your skill docs (for provenance)**" with a URL dump), a duplicated stop condition ("UNSPECIFIED: Missing or unverified dependency" appears both in the verification rules and the output format), and landscape padding in "Verified Context (Public, High-Level)".

4 / 5

Actionability

There is real concrete guidance (the TypeScript "PaymentsService"/"CreatePaymentParams" interfaces, numbered "Webhook Handling Rules", mismatch classifications), but key implementation details are contradictory or missing: "Use smallest currency unit (Rupee) as integer" conflicts with the field "amountPaisa: number; // PKR in rupee" — the smallest unit of PKR is paisa, so an implementer cannot tell whether amounts are rupees or paisa, a critical gap for money handling. This matches the 3 anchor 'concrete guidance but incomplete; missing key details' rather than 4's 'minor gaps'.

3 / 5

Workflow Clarity

The sequence is well checkpointed: a hard verification gate ("If any of these are missing, respond with: UNSPECIFIED..."), webhook validation ("Verify signature from raw body", "Never mark succeeded from client redirect alone"), reconciliation mismatch handling, and an ordered "Output Format for User Requests" ending in a "Go-live checklist and rollback plan". It is not 5 because the build sequence between sections (architecture → data model → adapters → webhooks → reconciliation) is implied by section order rather than given as one explicit ordered procedure with fix-and-retry loops.

4 / 5

Progressive Disclosure

At ~160 lines with no bundle files at all (no references/, scripts/, or assets/ exist), everything is inlined in one SKILL.md — the TypeScript interfaces, data model spec, and reconciliation procedure are candidates for separate reference files. Structure exists via section headers, but roughly half of them have lost their '##' markers (e.g. "Data Model Requirements", "Webhook Handling Rules (Non-Negotiable)", "Security and Operations Checklist" render as plain text), and the mermaid code fence is corrupted (the closing ``` sits inline on the content line), impairing navigation. This fits the 3 anchor 'some structure but could be better organized'; not 2 because the content is still sectioned and readable, not a structureless wall.

3 / 5

Total

14

/

20

Passed

Description

70%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.

A strong, distinct description with concrete provider-specific scope and good natural keywords. Its one material weakness is the complete absence of a 'Use when...' trigger clause, which caps completeness at 3.

Suggestions

Append an explicit trigger clause, e.g. "Use when building PKR-first billing for the Pakistan market or when the user mentions JazzCash, Easypaisa, Raast, or Pakistani payment gateways."

Drop the filler adjective "production-grade" and replace it with a concrete capability verb (e.g. "verify webhooks, enforce idempotency, run daily reconciliation") to strengthen specificity.

DimensionReasoningScore

Specificity

The description lists several concrete actions — "Design and implement production-grade Pakistani payment integrations", "PKR billing", "webhook reliability, and reconciliation" — and names specific providers (JazzCash, Easypaisa, Raast). It falls just short of the 5 anchor because actions like "production-grade" are buzzword-adjacent and the concrete verbs (design, implement) are fewer and less discretely enumerated than the 5 example.

4 / 5

Completeness

The 'what' is clear (design/implement Pakistani payment integrations with billing, webhooks, reconciliation), but there is no 'Use when...' clause or equivalent explicit trigger guidance — 'for SaaS' scopes the audience, not the trigger. Per the judging guidelines, a missing 'Use when...' clause caps completeness at 3, which matches the anchor 'Has a clear what but when is missing or only weakly implied'; it cannot be 4 because no explicit 'when' exists at all.

3 / 5

Trigger Term Quality

Strong natural keyword coverage: users would literally say "JazzCash", "Easypaisa", "PKR", "Pakistani payment", "webhook", "reconciliation", "SaaS billing". A few natural variants are missing ("payment gateway", "checkout", "Easypay", "subscription billing"), matching the 4 anchor 'good keyword coverage; a few natural terms missing' rather than the 5 anchor's comprehensive synonym coverage.

4 / 5

Distinctiveness Conflict Risk

"Pakistani payment integrations (JazzCash, Easypaisa, bank/PSP rails, optional Raast)" carves out a clear niche with distinct, geo/provider-specific triggers; a user mentioning these providers would unambiguously want this skill over a generic payments or Stripe skill. Not 4 because overlap risk is minimal — the Pakistan/PKR/JazzCash/Easypaisa naming is uniquely identifying.

5 / 5

Total

16

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

15

/

16

Passed

Repository

administrakt0r/AI-Agents-Safe-Coding-Skills

Path

skills/pakistan-payments-stack/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.