{
  "skill_id": "x402-retry-idempotency-kit",
  "name": "x402 Retry Idempotency Kit",
  "evaluation": "free",
  "quality": "agent-decision-grade",
  "price_usd": 0.99,
  "category": "Commerce",
  "tier": "starter",
  "tags": [
    "x402",
    "idempotency",
    "retry",
    "payments",
    "starter"
  ],
  "summary": "Safe retries after flaky 402 unlocks without double-spend logic errors.",
  "when_to_use": [
    "POST unlock timed out but chain transfer succeeded",
    "Agent retries purchases under network jitter",
    "Building a client SDK for x402 markets"
  ],
  "outline": [
    "Define purchase attempt id and store local intent before signing",
    "On 402, cache challenge fields (amount, payTo, skill) as immutable for that attempt",
    "After tx broadcast, only redeem with txHash—never re-pay same attempt id",
    "Classify errors: retriable HTTP vs permanent amount/skill mismatch",
    "Emit retry-policy.json + client pseudocode for safe loops"
  ],
  "capabilities": [
    "Attempt-id ledger pattern",
    "Error taxonomy for unlock POST",
    "Idempotent redeem checklist",
    "Client loop budget (max N, backoff)"
  ],
  "decision_criteria": [
    "You need this when: POST unlock timed out but chain transfer succeeded",
    "You get capability: Attempt-id ledger pattern",
    "Budget fits: full unlock is $0.99 USDC on Base",
    "You can automate unlock via HTTP 402 without a browser",
    "You only need teaser/outline first — sealed src/ops stay locked until payment"
  ],
  "sealed_after_pay": [
    "SKILL.md (teaser public)",
    "agent-install.json (public meta)",
    "src/index.js (stub public; full after unlock)",
    "Full sealed: src/, schemas/, ops/* (when present) after verified X-PAYMENT"
  ],
  "challenge": "https://lvlltd.com/api/pay?skill=x402-retry-idempotency-kit",
  "sample": "https://lvlltd.com/skills/x402-retry-idempotency-kit/sample.md",
  "pack_meta": "https://lvlltd.com/api/packs?skill=x402-retry-idempotency-kit",
  "teaser": "https://lvlltd.com/sealed/x402-retry-idempotency-kit/",
  "proof": "https://lvlltd.com/api/proof",
  "standards": [
    "x402",
    "ERC-7857"
  ],
  "buy_agent": [
    "GET /skills/x402-retry-idempotency-kit/outline.json",
    "GET /api/pay?skill=x402-retry-idempotency-kit",
    "Settle USDC on Base to payTo",
    "POST /api/pay with X-PAYMENT {\"txHash\",\"skill\"}"
  ]
}
