{
  "schemaVersion": "1.0",
  "item": {
    "slug": "hodlxxi-bitcoin-identity",
    "name": "Bitcoin Identity",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/hodlxxi/hodlxxi-bitcoin-identity",
    "canonicalUrl": "https://clawhub.ai/hodlxxi/hodlxxi-bitcoin-identity",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/hodlxxi-bitcoin-identity",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=hodlxxi-bitcoin-identity",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "HEARTBEAT.md",
      "SKILL.md",
      "scripts/verify_signature.py",
      "templates/oauth-client.json"
    ],
    "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-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.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/hodlxxi-bitcoin-identity"
    },
    "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/hodlxxi-bitcoin-identity",
    "agentPageUrl": "https://openagent3.xyz/skills/hodlxxi-bitcoin-identity/agent",
    "manifestUrl": "https://openagent3.xyz/skills/hodlxxi-bitcoin-identity/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/hodlxxi-bitcoin-identity/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": "Overview",
        "body": "Use this skill to integrate HODLXXI (Universal Bitcoin Identity Layer) for agent authentication, LNURL-Auth linking, and JWT-based identity claims."
      },
      {
        "title": "Installation",
        "body": "Fetch the skill file from the repository (raw link works for installable agents):\n\ncurl -L -o SKILL.md \\\n  https://raw.githubusercontent.com/hodlxxi/Universal-Bitcoin-Identity-Layer/main/skills/public/hodlxxi-bitcoin-identity/SKILL.md\n\nInstall helper dependencies for local verification scripts:\n\npython -m pip install ecdsa pyjwt requests"
      },
      {
        "title": "Quick start",
        "body": "Set a base URL for the HODLXXI deployment.\nRegister an OAuth client to obtain client_id and client_secret.\nRun the OAuth2/OIDC authorization code flow (PKCE recommended).\nStart an LNURL-Auth session for Lightning wallet login.\nVerify JWTs with the JWKS endpoint."
      },
      {
        "title": "1) Configure the base URL",
        "body": "Set the base URL to the HODLXXI deployment (update as needed):\n\nBASE_URL=\"https://hodlxxi.com\""
      },
      {
        "title": "2) Register an OAuth client",
        "body": "Register a client to get credentials:\n\ncurl -X POST \"$BASE_URL/oauth/register\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"client_name\": \"YourAgentName\", \"redirect_uris\": [\"https://your-callback-url\"], \"scopes\": [\"openid\", \"profile\"]}'\n\nStore client_id and client_secret securely."
      },
      {
        "title": "3) Run OAuth2/OIDC authorization code flow",
        "body": "Discover endpoints:\n\ncurl \"$BASE_URL/.well-known/openid-configuration\"\n\nCreate an authorization request (PKCE recommended):\n\ncurl \"$BASE_URL/oauth/authorize?client_id=your_client_id&redirect_uri=your_callback&response_type=code&scope=openid%20profile&code_challenge=your_challenge&code_challenge_method=S256\"\n\nExchange the authorization code for tokens:\n\ncurl -X POST \"$BASE_URL/oauth/token\" \\\n  -H \"Content-Type: application/x-www-form-urlencoded\" \\\n  -d \"grant_type=authorization_code&code=received_code&redirect_uri=your_callback&client_id=your_client_id&code_verifier=your_verifier\"\n\nExpect an access token, ID token (JWT), and optional refresh token."
      },
      {
        "title": "4) Start an LNURL-Auth session",
        "body": "Create a session and show the LNURL to the user:\n\ncurl -X POST \"$BASE_URL/api/lnurl-auth/create\" \\\n  -H \"Accept: application/json\"\n\nPoll for completion after the user scans the LNURL with a Lightning wallet:\n\ncurl \"$BASE_URL/api/lnurl-auth/check/your_session_id\""
      },
      {
        "title": "5) Verify JWTs",
        "body": "Fetch JWKS:\n\ncurl \"$BASE_URL/oauth/jwks.json\"\n\nVerify with Python (example uses PyJWT):\n\nimport jwt\nimport requests\n\njwks = requests.get(\"https://your-hodlxxi-deployment.com/oauth/jwks.json\", timeout=10).json()\npublic_key = jwt.algorithms.RSAAlgorithm.from_jwk(jwks[\"keys\"][0])\nclaims = jwt.decode(your_jwt, public_key, algorithms=[\"RS256\"], audience=\"your_audience\")\nprint(claims)"
      },
      {
        "title": "6) Monitor health and metrics",
        "body": "Check liveness and OAuth system status endpoints:\n\ncurl \"$BASE_URL/health\"\ncurl \"$BASE_URL/oauthx/status\""
      },
      {
        "title": "Register a client from a JSON template",
        "body": "curl -X POST \"$BASE_URL/oauth/register\" \\\n  -H \"Content-Type: application/json\" \\\n  -d @templates/oauth-client.json"
      },
      {
        "title": "Create LNURL session and poll",
        "body": "session_json=$(curl -s -X POST \"$BASE_URL/api/lnurl-auth/create\")\nsession_id=$(python3 -c 'import json,sys; print(json.loads(sys.argv[1])[\"session_id\"])' \"$session_json\")\ncurl \"$BASE_URL/api/lnurl-auth/check/$session_id\""
      },
      {
        "title": "Best practices",
        "body": "Always use HTTPS and verify TLS certificates in production.\nKeep client secrets in a secrets manager or environment variables.\nUse PKCE for public clients and rotate secrets for confidential clients.\nTreat LNURL sessions as single-use and enforce short TTLs.\nValidate aud, iss, and exp claims for JWTs."
      },
      {
        "title": "Advanced features",
        "body": "Use /oauthx/docs for live OAuth/OIDC API documentation.\nUse /oauthx/status to monitor database and LNURL session health.\nRotate JWKS keys via the server configuration (JWKS directory + rotation days)."
      },
      {
        "title": "PAYG billing for OAuth clients",
        "body": "Paid API calls are billed per OAuth client_id (agent/app), not per session pubkey. When balance or free quota is exhausted, paid endpoints return HTTP 402 with a Lightning top-up path."
      },
      {
        "title": "Billing endpoints (OAuth token required)",
        "body": "POST /api/billing/agent/create-invoice\nPOST /api/billing/agent/check-invoice\n\nExample create invoice:\n\ncurl -X POST \"$BASE_URL/api/billing/agent/create-invoice\" \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"amount_sats\": 1000}'\n\nExample check invoice:\n\ncurl -X POST \"$BASE_URL/api/billing/agent/check-invoice\" \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"invoice_id\": \"your_invoice_id\"}'"
      },
      {
        "title": "402 response shape",
        "body": "When a paid endpoint is called with insufficient balance, expect:\n\n{\n  \"ok\": false,\n  \"error\": \"payment_required\",\n  \"code\": \"PAYMENT_REQUIRED\",\n  \"client_id\": \"your_client_id\",\n  \"cost_sats\": 1,\n  \"balance_sats\": 0,\n  \"create_invoice_endpoint\": \"/api/billing/agent/create-invoice\",\n  \"hint\": \"Top up via Lightning PAYG\"\n}"
      },
      {
        "title": "Supporting files",
        "body": "scripts/verify_signature.py validates LNURL-Auth signatures locally.\nHEARTBEAT.md describes periodic health checks for the deployment.\ntemplates/oauth-client.json provides a ready client registration payload."
      },
      {
        "title": "Optional helper script",
        "body": "Use scripts/verify_signature.py to validate LNURL signatures locally. Install the dependency first:\n\npython -m pip install ecdsa\npython scripts/verify_signature.py --k1 <hex> --signature <hex> --pubkey <hex>"
      }
    ],
    "body": "HODLXXI Bitcoin Identity\nOverview\n\nUse this skill to integrate HODLXXI (Universal Bitcoin Identity Layer) for agent authentication, LNURL-Auth linking, and JWT-based identity claims.\n\nInstallation\nFetch the skill file from the repository (raw link works for installable agents):\ncurl -L -o SKILL.md \\\n  https://raw.githubusercontent.com/hodlxxi/Universal-Bitcoin-Identity-Layer/main/skills/public/hodlxxi-bitcoin-identity/SKILL.md\n\nInstall helper dependencies for local verification scripts:\npython -m pip install ecdsa pyjwt requests\n\nQuick start\nSet a base URL for the HODLXXI deployment.\nRegister an OAuth client to obtain client_id and client_secret.\nRun the OAuth2/OIDC authorization code flow (PKCE recommended).\nStart an LNURL-Auth session for Lightning wallet login.\nVerify JWTs with the JWKS endpoint.\nUsage steps\n1) Configure the base URL\n\nSet the base URL to the HODLXXI deployment (update as needed):\n\nBASE_URL=\"https://hodlxxi.com\"\n\n2) Register an OAuth client\n\nRegister a client to get credentials:\n\ncurl -X POST \"$BASE_URL/oauth/register\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"client_name\": \"YourAgentName\", \"redirect_uris\": [\"https://your-callback-url\"], \"scopes\": [\"openid\", \"profile\"]}'\n\n\nStore client_id and client_secret securely.\n\n3) Run OAuth2/OIDC authorization code flow\n\nDiscover endpoints:\n\ncurl \"$BASE_URL/.well-known/openid-configuration\"\n\n\nCreate an authorization request (PKCE recommended):\n\ncurl \"$BASE_URL/oauth/authorize?client_id=your_client_id&redirect_uri=your_callback&response_type=code&scope=openid%20profile&code_challenge=your_challenge&code_challenge_method=S256\"\n\n\nExchange the authorization code for tokens:\n\ncurl -X POST \"$BASE_URL/oauth/token\" \\\n  -H \"Content-Type: application/x-www-form-urlencoded\" \\\n  -d \"grant_type=authorization_code&code=received_code&redirect_uri=your_callback&client_id=your_client_id&code_verifier=your_verifier\"\n\n\nExpect an access token, ID token (JWT), and optional refresh token.\n\n4) Start an LNURL-Auth session\n\nCreate a session and show the LNURL to the user:\n\ncurl -X POST \"$BASE_URL/api/lnurl-auth/create\" \\\n  -H \"Accept: application/json\"\n\n\nPoll for completion after the user scans the LNURL with a Lightning wallet:\n\ncurl \"$BASE_URL/api/lnurl-auth/check/your_session_id\"\n\n5) Verify JWTs\n\nFetch JWKS:\n\ncurl \"$BASE_URL/oauth/jwks.json\"\n\n\nVerify with Python (example uses PyJWT):\n\nimport jwt\nimport requests\n\njwks = requests.get(\"https://your-hodlxxi-deployment.com/oauth/jwks.json\", timeout=10).json()\npublic_key = jwt.algorithms.RSAAlgorithm.from_jwk(jwks[\"keys\"][0])\nclaims = jwt.decode(your_jwt, public_key, algorithms=[\"RS256\"], audience=\"your_audience\")\nprint(claims)\n\n6) Monitor health and metrics\n\nCheck liveness and OAuth system status endpoints:\n\ncurl \"$BASE_URL/health\"\ncurl \"$BASE_URL/oauthx/status\"\n\nCode examples\nRegister a client from a JSON template\ncurl -X POST \"$BASE_URL/oauth/register\" \\\n  -H \"Content-Type: application/json\" \\\n  -d @templates/oauth-client.json\n\nCreate LNURL session and poll\nsession_json=$(curl -s -X POST \"$BASE_URL/api/lnurl-auth/create\")\nsession_id=$(python3 -c 'import json,sys; print(json.loads(sys.argv[1])[\"session_id\"])' \"$session_json\")\ncurl \"$BASE_URL/api/lnurl-auth/check/$session_id\"\n\nBest practices\nAlways use HTTPS and verify TLS certificates in production.\nKeep client secrets in a secrets manager or environment variables.\nUse PKCE for public clients and rotate secrets for confidential clients.\nTreat LNURL sessions as single-use and enforce short TTLs.\nValidate aud, iss, and exp claims for JWTs.\nAdvanced features\nUse /oauthx/docs for live OAuth/OIDC API documentation.\nUse /oauthx/status to monitor database and LNURL session health.\nRotate JWKS keys via the server configuration (JWKS directory + rotation days).\nPAYG billing for OAuth clients\n\nPaid API calls are billed per OAuth client_id (agent/app), not per session pubkey. When balance or free quota is exhausted, paid endpoints return HTTP 402 with a Lightning top-up path.\n\nBilling endpoints (OAuth token required)\nPOST /api/billing/agent/create-invoice\nPOST /api/billing/agent/check-invoice\n\nExample create invoice:\n\ncurl -X POST \"$BASE_URL/api/billing/agent/create-invoice\" \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"amount_sats\": 1000}'\n\n\nExample check invoice:\n\ncurl -X POST \"$BASE_URL/api/billing/agent/check-invoice\" \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"invoice_id\": \"your_invoice_id\"}'\n\n402 response shape\n\nWhen a paid endpoint is called with insufficient balance, expect:\n\n{\n  \"ok\": false,\n  \"error\": \"payment_required\",\n  \"code\": \"PAYMENT_REQUIRED\",\n  \"client_id\": \"your_client_id\",\n  \"cost_sats\": 1,\n  \"balance_sats\": 0,\n  \"create_invoice_endpoint\": \"/api/billing/agent/create-invoice\",\n  \"hint\": \"Top up via Lightning PAYG\"\n}\n\nSupporting files\nscripts/verify_signature.py validates LNURL-Auth signatures locally.\nHEARTBEAT.md describes periodic health checks for the deployment.\ntemplates/oauth-client.json provides a ready client registration payload.\nOptional helper script\n\nUse scripts/verify_signature.py to validate LNURL signatures locally. Install the dependency first:\n\npython -m pip install ecdsa\npython scripts/verify_signature.py --k1 <hex> --signature <hex> --pubkey <hex>"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/hodlxxi/hodlxxi-bitcoin-identity",
    "publisherUrl": "https://clawhub.ai/hodlxxi/hodlxxi-bitcoin-identity",
    "owner": "hodlxxi",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/hodlxxi-bitcoin-identity",
    "downloadUrl": "https://openagent3.xyz/downloads/hodlxxi-bitcoin-identity",
    "agentUrl": "https://openagent3.xyz/skills/hodlxxi-bitcoin-identity/agent",
    "manifestUrl": "https://openagent3.xyz/skills/hodlxxi-bitcoin-identity/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/hodlxxi-bitcoin-identity/agent.md"
  }
}