{
  "schemaVersion": "1.0",
  "item": {
    "slug": "niche",
    "name": "Niche - Peer to Peer Trading Cards Marketplace",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/ClementSutjiatma/niche",
    "canonicalUrl": "https://clawhub.ai/ClementSutjiatma/niche",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/niche",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=niche",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "skill.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/niche"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/niche",
    "agentPageUrl": "https://openagent3.xyz/skills/niche/agent",
    "manifestUrl": "https://openagent3.xyz/skills/niche/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/niche/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Niche v1 — Trading Card Marketplace with Partial Deposits",
        "body": "A peer-to-peer trading card marketplace where users list, discover, and transact cards with partial USDC deposits on Base Sepolia. Meet in person to inspect cards before completing payment."
      },
      {
        "title": "Architecture",
        "body": "Hosted backend on Supabase Edge Functions. The CLI is a thin HTTP client — all heavy logic (auth, signing, escrow, on-chain transactions) runs server-side.\n\nCLI (thin client)          →  Edge Functions (Supabase)\n  fetch() + open()              niche-api   (REST API)\n  ~/.niche/auth.json            niche-ui    (hosted HTML pages)\n  @supabase/supabase-js         niche-sign  (passkey signing)\n  open (browser launcher)       niche-escrow (on-chain ops)\n\nHosted UI: https://niche-ddq89ltdk-clement-sutjiatmas-projects.vercel.app\n\nAnyone with the link can browse cards — no install needed."
      },
      {
        "title": "Why Partial Deposits + In-Person Inspection",
        "body": "Partial deposits — Hold a card with just $10-50 deposit, not full price\nMeet & inspect — See the card condition in person before final payment\nAtomic payment — Buyer confirms + pays remaining amount in single action\nUSDC escrow — All funds secured on-chain, released when both confirm\nBuyer cancellation — Get full refund before seller confirms meetup\nPasskey signing — Touch ID / Face ID to authorize transactions\nGas sponsored — No ETH needed for transactions\nShareable links — Send card URLs to anyone, no app needed"
      },
      {
        "title": "Trading Card Flow",
        "body": "1. Seller lists \"Charizard Base Set\" for $50 with $10 min deposit\n2. Buyer deposits $10 USDC → card is held for buyer\n3. Buyer can cancel anytime before seller confirms → full $10 refund\n4. Both parties meet in person to inspect card\n5. Seller confirms they showed up\n6. Buyer confirms AND pays $40 remaining (atomic action)\n7. Backend releases total $50 to seller"
      },
      {
        "title": "Browse (no account needed)",
        "body": "niche search --category \"Pokemon\" --max-price 100\nniche browse                              # Open listings in browser\nniche browse --category \"Magic\"           # Filtered browser view\nniche view <id>                           # Open card detail in browser\nniche show <id>                           # View card detail in terminal"
      },
      {
        "title": "Authentication",
        "body": "niche login       # Opens browser → email OTP → passkey → wallet created\nniche logout      # Clear local session\nniche whoami      # Show identity + wallet + USDC balance\n\nLogin happens entirely in the hosted UI. The browser handles:\n\nEmail → OTP verification (Privy)\nPasskey registration (Touch ID / Face ID)\nEmbedded wallet creation (server-side)"
      },
      {
        "title": "Listings",
        "body": "niche post --item-name \"Charizard Base Set\" --price 50 --min-deposit 10 --category \"Pokemon\"\nniche list                    # Your listings\nniche cancel <id>             # Cancel listing"
      },
      {
        "title": "Watches",
        "body": "niche watch --category \"Pokemon,Magic\" --max-price 100\nniche watches                 # List active watches\nniche unwatch <id>            # Remove watch\nniche check-matches           # Check for new matches (cron)"
      },
      {
        "title": "Deposits & Payments",
        "body": "niche interest <id>           # Opens deposit page in browser (passkey signing)\nniche confirm <id>            # Confirm meetup + pay remaining (buyer) OR confirm meetup (seller)\nniche cancel <id>             # Cancel deposit and get refund (buyer only, before seller confirms)\nniche dispute <id>            # File dispute, hold funds\nniche escrow [id]             # View payment status\nniche balance                 # Check wallet USDC + ETH balance\nniche fund [amount]           # Open Circle faucet for testnet USDC"
      },
      {
        "title": "Testing",
        "body": "niche post --item-name \"Pikachu\" --price 25 --min-deposit 5 --simulate seller1\nniche interest abc123 --simulate buyer1\nniche confirm abc123 --simulate buyer1\nniche confirm abc123 --simulate seller1"
      },
      {
        "title": "Authentication Requirements",
        "body": "ActionWithout LoginWith LoginSearch / browse✅ Works✅ WorksPost listings✅ With simulate✅ WorksPlace deposit❌ REQUIRES LOGIN✅ Real USDC depositConfirm + pay❌ REQUIRES LOGIN✅ Completes purchaseCancel deposit❌ REQUIRES LOGIN✅ Get refundDispute❌ REQUIRES LOGIN✅ Holds fundsFund wallet❌ REQUIRES LOGIN✅ Faucet"
      },
      {
        "title": "User Journey",
        "body": "1. BROWSE — niche search / niche browse (no account)\n2. VIEW   — niche view <id> (opens hosted page)\n3. LOGIN  — niche login (browser: email → OTP → passkey → wallet)\n4. FUND   — niche fund 50 (Circle faucet → testnet USDC)\n5. DEPOSIT — niche interest <id> (browser: passkey signs $10 deposit)\n6. MEET   — Schedule in-person inspection\n7. SELLER CONFIRMS — niche confirm <id> (seller acknowledges meetup)\n8. BUYER CONFIRMS + PAYS — niche confirm <id> (buyer: passkey signs $40 remaining)\n9. RELEASED — Backend releases total $50 to seller"
      },
      {
        "title": "First-Time User",
        "body": "User: \"Find me a Charizard card under $100\"\n\nAgent runs: niche search --category \"Pokemon\" --item-name \"Charizard\" --max-price 100\n\nAgent: \"Found 2 Charizard cards! Here are the results:\n  1. [a1b2c3d4] Charizard Base Set 1st Edition - $50 (min deposit: $10)\n  2. [e5f6g7h8] Charizard EX Full Art - $85 (min deposit: $20)\n\nWant to see any in your browser? Or interested in one?\"\n\nUser: \"I'm interested in #1\"\n\nAgent runs: niche whoami\n\nAgent: \"You'll need to login first. Opening the login page...\"\n\nAgent runs: niche login\n\nAgent: \"Complete the email verification and passkey setup in your browser.\n        Once done, run `niche whoami` to verify.\""
      },
      {
        "title": "Deposit Flow",
        "body": "User: \"Place deposit on listing a1b2c3d4\"\n\nAgent runs: niche interest a1b2c3d4\n\nAgent: \"Opening the deposit page in your browser.\n        Sign with your passkey (Touch ID) to deposit $10 USDC.\n        You'll pay the remaining $40 when you meet and confirm.\""
      },
      {
        "title": "Buyer Confirmation + Payment",
        "body": "User: \"I met the seller and the card is perfect. Complete the purchase.\"\n\nAgent runs: niche confirm a1b2c3d4\n\nAgent: \"Opening the confirmation page in your browser.\n        Sign with your passkey to:\n        1. Confirm you inspected the card\n        2. Pay the remaining $40 USDC\n\n        The seller will receive the total $50 once both confirm.\""
      },
      {
        "title": "Cancellation",
        "body": "User: \"I need to cancel my deposit on listing a1b2c3d4\"\n\nAgent runs: niche cancel a1b2c3d4\n\nAgent: \"Cancelling your deposit. You'll get your full $10 USDC back.\n        (Note: You can only cancel before the seller confirms meetup)\""
      },
      {
        "title": "Tips for Agents",
        "body": "Auto-login for deposits — Before niche interest, check niche whoami. If not logged in, run niche login.\nAlways check setup — Run niche whoami to see if user is configured.\nOffer to watch — If search returns no results, offer niche watch.\nShow listing IDs — Users need IDs for interest/confirm/view.\nExplain partial deposits — Users deposit minimum amount, pay rest at meetup.\nPrompt before confirming — Confirming as buyer = paying remaining amount (real funds).\nPrompt before interest — Deposits real USDC to escrow.\n--simulate is for demos only — Only use when user explicitly asks to test.\nBrowser commands — niche login, niche interest, niche confirm (buyer), niche fund, niche browse, niche view all open the browser.\nTerminal commands — niche search, niche show, niche whoami, niche balance, niche confirm (seller) stay in terminal.\nCancellation window — Buyers can cancel anytime before seller confirms meetup."
      },
      {
        "title": "Sample Trading Cards (15 Available)",
        "body": "Pokemon (5 cards):\n\nCharizard Base Set 1st Edition - $50 (min: $10)\nBlastoise Base Set - $30 (min: $8)\nPikachu Illustrator - $150 (min: $50)\nMewtwo EX Full Art - $25 (min: $5)\nRayquaza VMAX Rainbow - $40 (min: $10)\n\nMagic: The Gathering (4 cards):\n\nBlack Lotus Alpha - $200 (min: $75)\nMox Sapphire - $100 (min: $30)\nTarmogoyf Future Sight - $35 (min: $10)\nLiliana of the Veil - $45 (min: $12)\n\nSports (4 cards):\n\nMichael Jordan 1986 Fleer Rookie - $120 (min: $40)\nTom Brady 2000 Playoff Contenders Auto - $80 (min: $25)\nMike Trout 2009 Bowman Chrome Auto - $60 (min: $20)\nLeBron James 2003 Topps Chrome Rookie - $55 (min: $15)\n\nYu-Gi-Oh (2 cards):\n\nBlue-Eyes White Dragon 1st Edition - $28 (min: $8)\nDark Magician Girl MFC 1st - $22 (min: $6)"
      },
      {
        "title": "Testnet & On-Chain",
        "body": "All transactions use real on-chain USDC on Base Sepolia testnet. No real funds at risk.\n\nUSDC (Base Sepolia): 0x036CbD53842c5426634e7929541eC2318f3dCF7e\nGas is sponsored — users don't need ETH\nGet testnet USDC: https://faucet.circle.com (select Base Sepolia)"
      },
      {
        "title": "Error Handling",
        "body": "ErrorAgent ResponseNot logged inRun niche login to open browser auth.No walletLogin creates a wallet automatically.Insufficient USDCRun niche fund to get testnet USDC from Circle faucet.Listing not foundCheck ID, or run niche search again.Already confirmedWaiting for other party.Cannot cancelSeller already confirmed. Buyer can only cancel before seller confirms.On-chain tx failedTry again; escrow Edge Function handles retries."
      },
      {
        "title": "Data Storage",
        "body": "Supabase Postgres — Users, listings, watches, escrows (with partial deposit tracking)\nSupabase Vault — Privy secrets, escrow private key\nEdge Functions — All server-side logic (Deno runtime)\nLocal — ~/.niche/auth.json (auth token + wallet), ~/.niche/config.json (legacy)"
      },
      {
        "title": "Key Differences from v0 (Housing)",
        "body": "Partial deposits — Deposit only minimum amount, not full price\nAtomic confirmation + payment — Buyer confirms and pays remaining in single action\nBuyer cancellation — Full refund before seller confirms\nIn-person inspection — Meet to verify card condition before completing purchase\nTrading cards — Pokemon, Magic, Sports, Yu-Gi-Oh instead of housing\nCategories — Card categories instead of neighborhoods\nSimplified UI — Less \"escrow\" jargon, clearer payment flow"
      }
    ],
    "body": "Niche v1 — Trading Card Marketplace with Partial Deposits\n\nA peer-to-peer trading card marketplace where users list, discover, and transact cards with partial USDC deposits on Base Sepolia. Meet in person to inspect cards before completing payment.\n\nArchitecture\n\nHosted backend on Supabase Edge Functions. The CLI is a thin HTTP client — all heavy logic (auth, signing, escrow, on-chain transactions) runs server-side.\n\nCLI (thin client)          →  Edge Functions (Supabase)\n  fetch() + open()              niche-api   (REST API)\n  ~/.niche/auth.json            niche-ui    (hosted HTML pages)\n  @supabase/supabase-js         niche-sign  (passkey signing)\n  open (browser launcher)       niche-escrow (on-chain ops)\n\n\nHosted UI: https://niche-ddq89ltdk-clement-sutjiatmas-projects.vercel.app\n\nAnyone with the link can browse cards — no install needed.\n\nWhy Partial Deposits + In-Person Inspection\nPartial deposits — Hold a card with just $10-50 deposit, not full price\nMeet & inspect — See the card condition in person before final payment\nAtomic payment — Buyer confirms + pays remaining amount in single action\nUSDC escrow — All funds secured on-chain, released when both confirm\nBuyer cancellation — Get full refund before seller confirms meetup\nPasskey signing — Touch ID / Face ID to authorize transactions\nGas sponsored — No ETH needed for transactions\nShareable links — Send card URLs to anyone, no app needed\nTrading Card Flow\n1. Seller lists \"Charizard Base Set\" for $50 with $10 min deposit\n2. Buyer deposits $10 USDC → card is held for buyer\n3. Buyer can cancel anytime before seller confirms → full $10 refund\n4. Both parties meet in person to inspect card\n5. Seller confirms they showed up\n6. Buyer confirms AND pays $40 remaining (atomic action)\n7. Backend releases total $50 to seller\n\nCommands\nBrowse (no account needed)\nniche search --category \"Pokemon\" --max-price 100\nniche browse                              # Open listings in browser\nniche browse --category \"Magic\"           # Filtered browser view\nniche view <id>                           # Open card detail in browser\nniche show <id>                           # View card detail in terminal\n\nAuthentication\nniche login       # Opens browser → email OTP → passkey → wallet created\nniche logout      # Clear local session\nniche whoami      # Show identity + wallet + USDC balance\n\n\nLogin happens entirely in the hosted UI. The browser handles:\n\nEmail → OTP verification (Privy)\nPasskey registration (Touch ID / Face ID)\nEmbedded wallet creation (server-side)\nListings\nniche post --item-name \"Charizard Base Set\" --price 50 --min-deposit 10 --category \"Pokemon\"\nniche list                    # Your listings\nniche cancel <id>             # Cancel listing\n\nWatches\nniche watch --category \"Pokemon,Magic\" --max-price 100\nniche watches                 # List active watches\nniche unwatch <id>            # Remove watch\nniche check-matches           # Check for new matches (cron)\n\nDeposits & Payments\nniche interest <id>           # Opens deposit page in browser (passkey signing)\nniche confirm <id>            # Confirm meetup + pay remaining (buyer) OR confirm meetup (seller)\nniche cancel <id>             # Cancel deposit and get refund (buyer only, before seller confirms)\nniche dispute <id>            # File dispute, hold funds\nniche escrow [id]             # View payment status\nniche balance                 # Check wallet USDC + ETH balance\nniche fund [amount]           # Open Circle faucet for testnet USDC\n\nTesting\nniche post --item-name \"Pikachu\" --price 25 --min-deposit 5 --simulate seller1\nniche interest abc123 --simulate buyer1\nniche confirm abc123 --simulate buyer1\nniche confirm abc123 --simulate seller1\n\nAuthentication Requirements\nAction\tWithout Login\tWith Login\nSearch / browse\t✅ Works\t✅ Works\nPost listings\t✅ With simulate\t✅ Works\nPlace deposit\t❌ REQUIRES LOGIN\t✅ Real USDC deposit\nConfirm + pay\t❌ REQUIRES LOGIN\t✅ Completes purchase\nCancel deposit\t❌ REQUIRES LOGIN\t✅ Get refund\nDispute\t❌ REQUIRES LOGIN\t✅ Holds funds\nFund wallet\t❌ REQUIRES LOGIN\t✅ Faucet\nUser Journey\n1. BROWSE — niche search / niche browse (no account)\n2. VIEW   — niche view <id> (opens hosted page)\n3. LOGIN  — niche login (browser: email → OTP → passkey → wallet)\n4. FUND   — niche fund 50 (Circle faucet → testnet USDC)\n5. DEPOSIT — niche interest <id> (browser: passkey signs $10 deposit)\n6. MEET   — Schedule in-person inspection\n7. SELLER CONFIRMS — niche confirm <id> (seller acknowledges meetup)\n8. BUYER CONFIRMS + PAYS — niche confirm <id> (buyer: passkey signs $40 remaining)\n9. RELEASED — Backend releases total $50 to seller\n\nExample Agent Interactions\nFirst-Time User\nUser: \"Find me a Charizard card under $100\"\n\nAgent runs: niche search --category \"Pokemon\" --item-name \"Charizard\" --max-price 100\n\nAgent: \"Found 2 Charizard cards! Here are the results:\n  1. [a1b2c3d4] Charizard Base Set 1st Edition - $50 (min deposit: $10)\n  2. [e5f6g7h8] Charizard EX Full Art - $85 (min deposit: $20)\n\nWant to see any in your browser? Or interested in one?\"\n\nUser: \"I'm interested in #1\"\n\nAgent runs: niche whoami\n\nAgent: \"You'll need to login first. Opening the login page...\"\n\nAgent runs: niche login\n\nAgent: \"Complete the email verification and passkey setup in your browser.\n        Once done, run `niche whoami` to verify.\"\n\nDeposit Flow\nUser: \"Place deposit on listing a1b2c3d4\"\n\nAgent runs: niche interest a1b2c3d4\n\nAgent: \"Opening the deposit page in your browser.\n        Sign with your passkey (Touch ID) to deposit $10 USDC.\n        You'll pay the remaining $40 when you meet and confirm.\"\n\nBuyer Confirmation + Payment\nUser: \"I met the seller and the card is perfect. Complete the purchase.\"\n\nAgent runs: niche confirm a1b2c3d4\n\nAgent: \"Opening the confirmation page in your browser.\n        Sign with your passkey to:\n        1. Confirm you inspected the card\n        2. Pay the remaining $40 USDC\n\n        The seller will receive the total $50 once both confirm.\"\n\nCancellation\nUser: \"I need to cancel my deposit on listing a1b2c3d4\"\n\nAgent runs: niche cancel a1b2c3d4\n\nAgent: \"Cancelling your deposit. You'll get your full $10 USDC back.\n        (Note: You can only cancel before the seller confirms meetup)\"\n\nTips for Agents\nAuto-login for deposits — Before niche interest, check niche whoami. If not logged in, run niche login.\nAlways check setup — Run niche whoami to see if user is configured.\nOffer to watch — If search returns no results, offer niche watch.\nShow listing IDs — Users need IDs for interest/confirm/view.\nExplain partial deposits — Users deposit minimum amount, pay rest at meetup.\nPrompt before confirming — Confirming as buyer = paying remaining amount (real funds).\nPrompt before interest — Deposits real USDC to escrow.\n--simulate is for demos only — Only use when user explicitly asks to test.\nBrowser commands — niche login, niche interest, niche confirm (buyer), niche fund, niche browse, niche view all open the browser.\nTerminal commands — niche search, niche show, niche whoami, niche balance, niche confirm (seller) stay in terminal.\nCancellation window — Buyers can cancel anytime before seller confirms meetup.\nSample Trading Cards (15 Available)\n\nPokemon (5 cards):\n\nCharizard Base Set 1st Edition - $50 (min: $10)\nBlastoise Base Set - $30 (min: $8)\nPikachu Illustrator - $150 (min: $50)\nMewtwo EX Full Art - $25 (min: $5)\nRayquaza VMAX Rainbow - $40 (min: $10)\n\nMagic: The Gathering (4 cards):\n\nBlack Lotus Alpha - $200 (min: $75)\nMox Sapphire - $100 (min: $30)\nTarmogoyf Future Sight - $35 (min: $10)\nLiliana of the Veil - $45 (min: $12)\n\nSports (4 cards):\n\nMichael Jordan 1986 Fleer Rookie - $120 (min: $40)\nTom Brady 2000 Playoff Contenders Auto - $80 (min: $25)\nMike Trout 2009 Bowman Chrome Auto - $60 (min: $20)\nLeBron James 2003 Topps Chrome Rookie - $55 (min: $15)\n\nYu-Gi-Oh (2 cards):\n\nBlue-Eyes White Dragon 1st Edition - $28 (min: $8)\nDark Magician Girl MFC 1st - $22 (min: $6)\nTestnet & On-Chain\n\nAll transactions use real on-chain USDC on Base Sepolia testnet. No real funds at risk.\n\nUSDC (Base Sepolia): 0x036CbD53842c5426634e7929541eC2318f3dCF7e\nGas is sponsored — users don't need ETH\nGet testnet USDC: https://faucet.circle.com (select Base Sepolia)\nError Handling\nError\tAgent Response\nNot logged in\tRun niche login to open browser auth.\nNo wallet\tLogin creates a wallet automatically.\nInsufficient USDC\tRun niche fund to get testnet USDC from Circle faucet.\nListing not found\tCheck ID, or run niche search again.\nAlready confirmed\tWaiting for other party.\nCannot cancel\tSeller already confirmed. Buyer can only cancel before seller confirms.\nOn-chain tx failed\tTry again; escrow Edge Function handles retries.\nData Storage\nSupabase Postgres — Users, listings, watches, escrows (with partial deposit tracking)\nSupabase Vault — Privy secrets, escrow private key\nEdge Functions — All server-side logic (Deno runtime)\nLocal — ~/.niche/auth.json (auth token + wallet), ~/.niche/config.json (legacy)\nKey Differences from v0 (Housing)\nPartial deposits — Deposit only minimum amount, not full price\nAtomic confirmation + payment — Buyer confirms and pays remaining in single action\nBuyer cancellation — Full refund before seller confirms\nIn-person inspection — Meet to verify card condition before completing purchase\nTrading cards — Pokemon, Magic, Sports, Yu-Gi-Oh instead of housing\nCategories — Card categories instead of neighborhoods\nSimplified UI — Less \"escrow\" jargon, clearer payment flow"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ClementSutjiatma/niche",
    "publisherUrl": "https://clawhub.ai/ClementSutjiatma/niche",
    "owner": "ClementSutjiatma",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/niche",
    "downloadUrl": "https://openagent3.xyz/downloads/niche",
    "agentUrl": "https://openagent3.xyz/skills/niche/agent",
    "manifestUrl": "https://openagent3.xyz/skills/niche/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/niche/agent.md"
  }
}