{
  "schemaVersion": "1.0",
  "item": {
    "slug": "nihao",
    "name": "Skill",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/dergigi/nihao",
    "canonicalUrl": "https://clawhub.ai/dergigi/nihao",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/nihao",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=nihao",
    "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-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-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/nihao"
    },
    "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/nihao",
    "agentPageUrl": "https://openagent3.xyz/skills/nihao/agent",
    "manifestUrl": "https://openagent3.xyz/skills/nihao/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/nihao/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": "nihao 👋",
        "body": "Nostr identity setup and health-check CLI. Single binary, non-interactive, agent-friendly.\n\nSource: https://github.com/dergigi/nihao"
      },
      {
        "title": "Capabilities Disclosure",
        "body": "This skill installs a single Go binary (nihao) that:\n\nGenerates Nostr keypairs — random Ed25519 key generation via crypto/rand\nPublishes events — kind 0 (profile), kind 3 (follows), kind 1 (note), kind 10002 (relay list), kind 10050 (DM relays), kind 17375 (wallet), kind 10019 (nutzap info)\nMakes HTTP requests — NIP-05 verification, LNURL resolution, Cashu mint validation, relay NIP-11 probes, image HEAD checks\nConnects to Nostr relays — WebSocket connections to publish and query events\n\nIt does not:\n\nStore keys on disk (prints nsec to stdout; use --nsec-file to write to a file or --nsec-cmd to pipe to a command)\nRun as a daemon or background process\nAccess local files beyond the binary itself\nRequire any accounts, API keys, or KYC"
      },
      {
        "title": "Prerequisites",
        "body": "Go 1.21+ — required to compile the binary from source. Check with go version.\n\nInstall: https://go.dev/dl/ or via your package manager (brew install go, apt install golang, etc.)"
      },
      {
        "title": "Install",
        "body": "nihao is distributed as source code compiled locally via Go's standard toolchain. No pre-built binaries are downloaded — the code is fetched from GitHub, compiled on your machine, and placed in your $GOPATH/bin.\n\ngo install github.com/dergigi/nihao@latest\n\nVerify: nihao version\n\nThe source is fully auditable at https://github.com/dergigi/nihao."
      },
      {
        "title": "On Install",
        "body": "When an agent installs this skill:"
      },
      {
        "title": "Step 1: Install Binary",
        "body": "go install github.com/dergigi/nihao@latest"
      },
      {
        "title": "Step 2: Create Identity",
        "body": "nihao --name \"<AGENT_NAME>\" --about \"<AGENT_BIO>\" --nsec-file ./nsec.key --json --quiet\n\nThis generates a keypair, publishes the identity, and securely writes the nsec to ./nsec.key with 0600 permissions. Parse the JSON output to extract npub, pubkey, and relays.\n\n⚠️ The nsec cannot be recovered if lost. Always use --nsec-file or --nsec-cmd to persist it securely."
      },
      {
        "title": "Step 3: Report to User",
        "body": "Tell the user:\n\nTheir agent's npub\nTheir agent's lightning address (default: <npub>@npub.cash)\nRemind them to back up the nsec"
      },
      {
        "title": "Step 4: (Optional) Follow Owner",
        "body": "If the user provides their npub, the agent should follow them. nihao doesn't handle follows of specific npubs — use nak or another tool for that."
      },
      {
        "title": "Setup — Create a New Identity",
        "body": "nihao --name \"AgentName\" --about \"I do things\" --json\n\nWhat this does:\n\nGenerates a Nostr keypair (or uses --sec/--stdin)\nPublishes profile metadata (kind 0)\nPublishes relay list (kind 10002) with NIP-65 read/write markers\nPublishes DM relay list (kind 10050) per NIP-17\nPublishes follow list (kind 3)\nSets up a NIP-60 Cashu wallet (kind 17375 + kind 10019)\nSets lightning address to <npub>@npub.cash\nPosts a first note with #nihao hashtag"
      },
      {
        "title": "Setup Flags",
        "body": "FlagPurpose--name <name>Display name (default: \"nihao-user\")--about <text>Bio--picture <url>Profile picture URL--banner <url>Banner image URL--nip05 <user@domain>NIP-05 identifier--lud16 <user@domain>Lightning address (default: npub@npub.cash)--relays <r1,r2,...>Override default relay list--discoverDiscover relays from well-connected npubs--dm-relays <r1,r2,...>Override DM relay list (kind 10050)--no-dm-relaysSkip DM relay list publishing--mint <url>Custom Cashu mint (repeatable)--no-walletSkip wallet setup--sec, --nsec <nsec|hex>Use existing secret key--stdinRead secret key from stdin--nsec-file <path>Write nsec to file (0600 perms) for secure storage--nsec-cmd <command>Pipe nsec to shell command (alias: --nsec-exec)--jsonJSON output for parsing--quiet, -qSuppress non-JSON, non-error output"
      },
      {
        "title": "Key Management",
        "body": "nihao never writes keys to disk by default. Secret keys are handled securely:\n\n--nsec-file <path> — writes nsec to a file with 0600 permissions (recommended for automation)\n--nsec-cmd <command> — pipes nsec to a command's stdin (e.g., a password manager), never as a CLI argument\n--stdin — reads an existing key from stdin, avoiding shell history and process list exposure\n--json output — includes nsec in structured output for programmatic parsing\n\n⚠️ Avoid passing raw nsec values as CLI arguments (e.g., --sec nsec1...) in shared environments, as arguments are visible in process listings. Prefer --stdin or --nsec-cmd instead.\n\n# Generate and save securely\nnihao --name \"Bot\" --nsec-file ./bot-nsec.key --json\n\n# Pipe to password manager\nnihao --name \"Bot\" --nsec-cmd \"pass insert -m nostr/nsec\" --json\n\n# Use existing key via stdin (avoids process list exposure)\necho \"$NSEC\" | nihao --name \"Bot\" --stdin"
      },
      {
        "title": "Check — Audit an Existing Identity",
        "body": "nihao check npub1... --json\n\nChecks and scores (0–8):\n\nCheckWhat it doesprofileKind 0 completeness (name, display_name, about, picture, banner)nip05NIP-05 live HTTP verification, root domain detectionpictureImage reachability, Blossom hosting detection, file sizebannerSame as picturelud16Lightning address LNURL resolutionrelay_listKind 10002 presence, relay countrelay_markersNIP-65 read/write marker analysisrelay_qualityPer-relay latency, NIP-11 support, reachabilitydm_relaysKind 10050 DM relay list (NIP-17)follow_listKind 3 follow countnip60_walletKind 17375/37375 wallet presencenutzap_infoKind 10019 nutzap configurationwallet_mintsCashu mint reachability and validation"
      },
      {
        "title": "Check Flags",
        "body": "FlagPurpose--jsonStructured JSON output--quiet, -qSuppress non-JSON output--relays <r1,r2,...>Query these relays instead of defaults"
      },
      {
        "title": "Exit Codes",
        "body": "CodeMeaning0All checks pass (score = max)1One or more checks fail"
      },
      {
        "title": "Backup — Export Identity Events",
        "body": "nihao backup <npub|nip05> > identity.json\nnihao backup <npub|nip05> --quiet > identity.json\n\nExports all identity-related events as JSON: kind 0 (profile), kind 3 (follows), kind 10002 (relay list), kind 10050 (DM relays), kind 10019 (nutzap info), kind 17375/37375 (wallet). JSON goes to stdout, progress to stderr. Use for snapshots, migration, or archival."
      },
      {
        "title": "Backup Flags",
        "body": "FlagPurpose--quiet, -qSuppress progress output (JSON always goes to stdout)--relays <r1,r2,...>Query these relays instead of defaults"
      },
      {
        "title": "JSON Output",
        "body": "Both setup and check support --json for structured, parseable output.\n\nSetup output:\n\n{\n  \"npub\": \"npub1...\",\n  \"nsec\": \"nsec1...\",\n  \"pubkey\": \"hex...\",\n  \"relays\": [\"wss://...\"],\n  \"profile\": { \"name\": \"...\", \"lud16\": \"...\" },\n  \"wallet\": { \"p2pk_pubkey\": \"02...\", \"mints\": [\"https://...\"] }\n}\n\nCheck output:\n\n{\n  \"npub\": \"npub1...\",\n  \"pubkey\": \"hex...\",\n  \"score\": 6,\n  \"max_score\": 8,\n  \"checks\": [\n    { \"name\": \"profile\", \"status\": \"pass\", \"detail\": \"...\" },\n    { \"name\": \"nip05\", \"status\": \"fail\", \"detail\": \"not set\" }\n  ]\n}"
      },
      {
        "title": "TOOLS.md",
        "body": "After setup, store for quick reference:\n\n## Nostr Identity\n- npub: npub1...\n- Lightning: npub1...@npub.cash\n- Relays: relay.damus.io, relay.primal.net, nos.lol"
      },
      {
        "title": "Periodic Health Check",
        "body": "Run nihao check <npub> --json --quiet on a schedule to monitor identity health. Parse the JSON and alert if score drops."
      },
      {
        "title": "Security",
        "body": "No pre-built binaries — nihao is compiled from source on your machine via go install. The source is public and auditable.\nNo key storage — nihao does not persist keys unless explicitly told to via --nsec-file or --nsec-cmd.\nNo network exfiltration — the only network connections are to Nostr relays (WebSocket), NIP-05/LNURL endpoints (HTTPS), and Cashu mints (HTTPS). No telemetry, no analytics, no phoning home.\nStdin-first key input — when using an existing key, prefer --stdin over --sec to avoid process list exposure.\nFile permissions — --nsec-file writes with 0600 (owner read/write only)."
      },
      {
        "title": "Defaults",
        "body": "SettingValueRelaysrelay.damus.io, relay.primal.net, nos.lol, purplepag.esDM relaysnip17.com, relay.damus.io, relay.primal.net, nos.lolLightning<npub>@npub.cashMintsminibits, coinos, macadamiaWallet kind17375 (NIP-60)"
      }
    ],
    "body": "nihao 👋\n\nNostr identity setup and health-check CLI. Single binary, non-interactive, agent-friendly.\n\nSource: https://github.com/dergigi/nihao\n\nCapabilities Disclosure\n\nThis skill installs a single Go binary (nihao) that:\n\nGenerates Nostr keypairs — random Ed25519 key generation via crypto/rand\nPublishes events — kind 0 (profile), kind 3 (follows), kind 1 (note), kind 10002 (relay list), kind 10050 (DM relays), kind 17375 (wallet), kind 10019 (nutzap info)\nMakes HTTP requests — NIP-05 verification, LNURL resolution, Cashu mint validation, relay NIP-11 probes, image HEAD checks\nConnects to Nostr relays — WebSocket connections to publish and query events\n\nIt does not:\n\nStore keys on disk (prints nsec to stdout; use --nsec-file to write to a file or --nsec-cmd to pipe to a command)\nRun as a daemon or background process\nAccess local files beyond the binary itself\nRequire any accounts, API keys, or KYC\nPrerequisites\nGo 1.21+ — required to compile the binary from source. Check with go version.\nInstall: https://go.dev/dl/ or via your package manager (brew install go, apt install golang, etc.)\nInstall\n\nnihao is distributed as source code compiled locally via Go's standard toolchain. No pre-built binaries are downloaded — the code is fetched from GitHub, compiled on your machine, and placed in your $GOPATH/bin.\n\ngo install github.com/dergigi/nihao@latest\n\n\nVerify: nihao version\n\nThe source is fully auditable at https://github.com/dergigi/nihao.\n\nOn Install\n\nWhen an agent installs this skill:\n\nStep 1: Install Binary\ngo install github.com/dergigi/nihao@latest\n\nStep 2: Create Identity\nnihao --name \"<AGENT_NAME>\" --about \"<AGENT_BIO>\" --nsec-file ./nsec.key --json --quiet\n\n\nThis generates a keypair, publishes the identity, and securely writes the nsec to ./nsec.key with 0600 permissions. Parse the JSON output to extract npub, pubkey, and relays.\n\n⚠️ The nsec cannot be recovered if lost. Always use --nsec-file or --nsec-cmd to persist it securely.\n\nStep 3: Report to User\n\nTell the user:\n\nTheir agent's npub\nTheir agent's lightning address (default: <npub>@npub.cash)\nRemind them to back up the nsec\nStep 4: (Optional) Follow Owner\n\nIf the user provides their npub, the agent should follow them. nihao doesn't handle follows of specific npubs — use nak or another tool for that.\n\nSetup — Create a New Identity\nnihao --name \"AgentName\" --about \"I do things\" --json\n\n\nWhat this does:\n\nGenerates a Nostr keypair (or uses --sec/--stdin)\nPublishes profile metadata (kind 0)\nPublishes relay list (kind 10002) with NIP-65 read/write markers\nPublishes DM relay list (kind 10050) per NIP-17\nPublishes follow list (kind 3)\nSets up a NIP-60 Cashu wallet (kind 17375 + kind 10019)\nSets lightning address to <npub>@npub.cash\nPosts a first note with #nihao hashtag\nSetup Flags\nFlag\tPurpose\n--name <name>\tDisplay name (default: \"nihao-user\")\n--about <text>\tBio\n--picture <url>\tProfile picture URL\n--banner <url>\tBanner image URL\n--nip05 <user@domain>\tNIP-05 identifier\n--lud16 <user@domain>\tLightning address (default: npub@npub.cash)\n--relays <r1,r2,...>\tOverride default relay list\n--discover\tDiscover relays from well-connected npubs\n--dm-relays <r1,r2,...>\tOverride DM relay list (kind 10050)\n--no-dm-relays\tSkip DM relay list publishing\n--mint <url>\tCustom Cashu mint (repeatable)\n--no-wallet\tSkip wallet setup\n--sec, --nsec <nsec|hex>\tUse existing secret key\n--stdin\tRead secret key from stdin\n--nsec-file <path>\tWrite nsec to file (0600 perms) for secure storage\n--nsec-cmd <command>\tPipe nsec to shell command (alias: --nsec-exec)\n--json\tJSON output for parsing\n--quiet, -q\tSuppress non-JSON, non-error output\nKey Management\n\nnihao never writes keys to disk by default. Secret keys are handled securely:\n\n--nsec-file <path> — writes nsec to a file with 0600 permissions (recommended for automation)\n--nsec-cmd <command> — pipes nsec to a command's stdin (e.g., a password manager), never as a CLI argument\n--stdin — reads an existing key from stdin, avoiding shell history and process list exposure\n--json output — includes nsec in structured output for programmatic parsing\n\n⚠️ Avoid passing raw nsec values as CLI arguments (e.g., --sec nsec1...) in shared environments, as arguments are visible in process listings. Prefer --stdin or --nsec-cmd instead.\n\n# Generate and save securely\nnihao --name \"Bot\" --nsec-file ./bot-nsec.key --json\n\n# Pipe to password manager\nnihao --name \"Bot\" --nsec-cmd \"pass insert -m nostr/nsec\" --json\n\n# Use existing key via stdin (avoids process list exposure)\necho \"$NSEC\" | nihao --name \"Bot\" --stdin\n\nCheck — Audit an Existing Identity\nnihao check npub1... --json\n\n\nChecks and scores (0–8):\n\nCheck\tWhat it does\nprofile\tKind 0 completeness (name, display_name, about, picture, banner)\nnip05\tNIP-05 live HTTP verification, root domain detection\npicture\tImage reachability, Blossom hosting detection, file size\nbanner\tSame as picture\nlud16\tLightning address LNURL resolution\nrelay_list\tKind 10002 presence, relay count\nrelay_markers\tNIP-65 read/write marker analysis\nrelay_quality\tPer-relay latency, NIP-11 support, reachability\ndm_relays\tKind 10050 DM relay list (NIP-17)\nfollow_list\tKind 3 follow count\nnip60_wallet\tKind 17375/37375 wallet presence\nnutzap_info\tKind 10019 nutzap configuration\nwallet_mints\tCashu mint reachability and validation\nCheck Flags\nFlag\tPurpose\n--json\tStructured JSON output\n--quiet, -q\tSuppress non-JSON output\n--relays <r1,r2,...>\tQuery these relays instead of defaults\nExit Codes\nCode\tMeaning\n0\tAll checks pass (score = max)\n1\tOne or more checks fail\nBackup — Export Identity Events\nnihao backup <npub|nip05> > identity.json\nnihao backup <npub|nip05> --quiet > identity.json\n\n\nExports all identity-related events as JSON: kind 0 (profile), kind 3 (follows), kind 10002 (relay list), kind 10050 (DM relays), kind 10019 (nutzap info), kind 17375/37375 (wallet). JSON goes to stdout, progress to stderr. Use for snapshots, migration, or archival.\n\nBackup Flags\nFlag\tPurpose\n--quiet, -q\tSuppress progress output (JSON always goes to stdout)\n--relays <r1,r2,...>\tQuery these relays instead of defaults\nJSON Output\n\nBoth setup and check support --json for structured, parseable output.\n\nSetup output:\n\n{\n  \"npub\": \"npub1...\",\n  \"nsec\": \"nsec1...\",\n  \"pubkey\": \"hex...\",\n  \"relays\": [\"wss://...\"],\n  \"profile\": { \"name\": \"...\", \"lud16\": \"...\" },\n  \"wallet\": { \"p2pk_pubkey\": \"02...\", \"mints\": [\"https://...\"] }\n}\n\n\nCheck output:\n\n{\n  \"npub\": \"npub1...\",\n  \"pubkey\": \"hex...\",\n  \"score\": 6,\n  \"max_score\": 8,\n  \"checks\": [\n    { \"name\": \"profile\", \"status\": \"pass\", \"detail\": \"...\" },\n    { \"name\": \"nip05\", \"status\": \"fail\", \"detail\": \"not set\" }\n  ]\n}\n\nIntegration\nTOOLS.md\n\nAfter setup, store for quick reference:\n\n## Nostr Identity\n- npub: npub1...\n- Lightning: npub1...@npub.cash\n- Relays: relay.damus.io, relay.primal.net, nos.lol\n\nPeriodic Health Check\n\nRun nihao check <npub> --json --quiet on a schedule to monitor identity health. Parse the JSON and alert if score drops.\n\nSecurity\nNo pre-built binaries — nihao is compiled from source on your machine via go install. The source is public and auditable.\nNo key storage — nihao does not persist keys unless explicitly told to via --nsec-file or --nsec-cmd.\nNo network exfiltration — the only network connections are to Nostr relays (WebSocket), NIP-05/LNURL endpoints (HTTPS), and Cashu mints (HTTPS). No telemetry, no analytics, no phoning home.\nStdin-first key input — when using an existing key, prefer --stdin over --sec to avoid process list exposure.\nFile permissions — --nsec-file writes with 0600 (owner read/write only).\nDefaults\nSetting\tValue\nRelays\trelay.damus.io, relay.primal.net, nos.lol, purplepag.es\nDM relays\tnip17.com, relay.damus.io, relay.primal.net, nos.lol\nLightning\t<npub>@npub.cash\nMints\tminibits, coinos, macadamia\nWallet kind\t17375 (NIP-60)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/dergigi/nihao",
    "publisherUrl": "https://clawhub.ai/dergigi/nihao",
    "owner": "dergigi",
    "version": "0.12.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/nihao",
    "downloadUrl": "https://openagent3.xyz/downloads/nihao",
    "agentUrl": "https://openagent3.xyz/skills/nihao/agent",
    "manifestUrl": "https://openagent3.xyz/skills/nihao/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/nihao/agent.md"
  }
}