{
  "skill_id": "gf-pc-multi-currency-display-notes",
  "name": "Multi-Currency Display Notes",
  "evaluation": "free",
  "quality": "agent-decision-grade",
  "functional": true,
  "price_usd": 3.49,
  "category": "Finance",
  "tier": "standard",
  "kind": "good",
  "tags": [
    "x402",
    "quality-factory",
    "good",
    "decision-grade",
    "functional",
    "sealed-runtime",
    "gf-complete"
  ],
  "summary": "Display, rounding, and disclosure notes for showing fiat estimates beside Base USDC settle amounts in agent checkout UIs.",
  "when_to_use": [
    "Listings quote in USD or local fiat but checkout settles only in Base USDC",
    "Agent UIs show estimated totals and buyers confuse estimate with locked settle amount",
    "You need consistent minor-unit and rounding labels across cart, quote, and receipt"
  ],
  "outline": [
    "Separate quote_currency, settle_asset, and rate_source fields so every price surface names which number is binding at pay",
    "Document rounding and minor-unit rules for display estimates versus on-chain USDC units with worked digit examples",
    "Write rate-as-of timestamp and non-lock disclaimer microcopy agents can attach next to estimated fiat lines",
    "Define receipt lines that restate settle amount in USDC first and optional estimate second without implying dual settlement",
    "Build a mismatch matrix for estimate drift after rate refresh so support knows when to re-quote versus honor a sealed total"
  ],
  "capabilities": [
    "Quote vs settle field separation schema",
    "Rounding and minor-unit display rules",
    "Rate-as-of and non-lock disclosure snippets",
    "Receipt ordering for USDC-primary totals",
    "Estimate-drift re-quote decision matrix"
  ],
  "artifact_outputs": [
    "multi-currency-field-schema.json",
    "rounding-display-rules.md",
    "fx-estimate-disclosure-snippets.md",
    "estimate-drift-matrix.csv"
  ],
  "decision_criteria": [
    "Outline steps are specific to this skill (not generic templates)",
    "Sealed pack exposes createSkill().run with outline-driven steps",
    "Artifacts are named concrete deliverables",
    "No revenue guarantees or banned claims",
    "Free eval path works without payment"
  ],
  "sealed_after_pay": [
    "Full src/index.js runtime (createSkill, run, plan)",
    "src/runbook.js with skill-specific steps",
    "src/tools.js registry for agent ToolRegistry",
    "WORKBOOK.md operator procedure",
    "templates/ checklist and artifact shells",
    "schemas/output.schema.json"
  ],
  "runtime": {
    "entry": "src/index.js",
    "export": "createSkill",
    "install": "node scripts/install-unlocked-pack.mjs unlock.json ./skills"
  },
  "challenge": "https://lvlltd.com/api/pay?skill=gf-pc-multi-currency-display-notes",
  "sample": "https://lvlltd.com/skills/gf-pc-multi-currency-display-notes/sample.md",
  "pack_meta": "https://lvlltd.com/api/packs?skill=gf-pc-multi-currency-display-notes",
  "teaser": "https://lvlltd.com/sealed/gf-pc-multi-currency-display-notes/",
  "proof": "https://lvlltd.com/api/proof",
  "standards": [
    "x402",
    "ERC-7857"
  ],
  "operator_notes": [
    "Confirm pay path with GET /api/pay before purchasing.",
    "Dry-run createSkill().run({ goal, dry_run: true }) after unlock.",
    "Persist payment.txHash with skill_id for re-redeem.",
    "Never commit private keys or OPS_SECRET into pack usage.",
    "Category focus: Finance. Kind: good.",
    "Claim scrub: no guaranteed ROI, no fake testimonials.",
    "If outline 404s on production, redeploy public/skills after completion pass."
  ]
}