{
  "schemaVersion": "1.0",
  "item": {
    "slug": "ravi-identity",
    "name": "Ravi identity",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/raunaksingwi/ravi-identity",
    "canonicalUrl": "https://clawhub.ai/raunaksingwi/ravi-identity",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/ravi-identity",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=ravi-identity",
    "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/ravi-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/ravi-identity",
    "agentPageUrl": "https://openagent3.xyz/skills/ravi-identity/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ravi-identity/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ravi-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": "Ravi Identity",
        "body": "You have access to ravi, a CLI that gives you your own phone number, email address, and secret store."
      },
      {
        "title": "Install the CLI",
        "body": "If ravi is not installed, tell the user to install it:\n\nbrew install ravi-hq/tap/ravi"
      },
      {
        "title": "Check authentication",
        "body": "Verify you're authenticated before using any command:\n\nravi auth status --json\n\nIf \"authenticated\": false, tell the user to run ravi auth login (requires browser interaction — you cannot do this yourself)."
      },
      {
        "title": "Your Identity",
        "body": "# Your email address (use this for signups)\nravi get email --json\n# → {\"id\": 1, \"email\": \"janedoe@example.com\", \"created_dt\": \"...\"}\n\n# Your phone number (use this for SMS verification)\nravi get phone --json\n# → {\"id\": 1, \"phone_number\": \"+15551234567\", \"provider\": \"twilio\", \"created_dt\": \"...\"}\n\n# The human who owns this account\nravi get owner --json\n# → {\"first_name\": \"Jane\", \"last_name\": \"Doe\"}"
      },
      {
        "title": "Switching Identities",
        "body": "Ravi supports multiple identities. Each identity has its own email, phone, and secrets."
      },
      {
        "title": "Listing identities",
        "body": "ravi identity list --json"
      },
      {
        "title": "Setting an identity for this project",
        "body": "Use this when the user wants a different identity for a specific project:\n\nList identities: ravi identity list --json\nSet for this project (per-directory override):\n# Recommended: use the CLI (handles bound tokens automatically)\nravi identity use \"<uuid>\"\n\n# Manual fallback (identity only, no bound tokens):\nmkdir -p .ravi && echo '{\"identity_uuid\":\"<uuid>\",\"identity_name\":\"<name>\"}' > .ravi/config.json\n\n\nAdd .ravi/ to .gitignore\n\nAll ravi commands in this directory will use the specified identity."
      },
      {
        "title": "Switching identity globally",
        "body": "ravi identity use \"<uuid>\""
      },
      {
        "title": "Creating a new identity",
        "body": "Only create a new identity when the user explicitly asks for one (e.g., for a\nseparate project that needs its own email/phone). New identities require a paid\nplan and take a moment to provision.\n\n# Auto-generated name and email (recommended — looks like a real person)\nravi identity create --json\n# → name: \"Sarah Johnson\", email: \"sarah.johnson472@ravi.app\"\n\n# Custom name, auto-generated email\nravi identity create --name \"Shopping Agent\" --json\n\n# Custom email local part (domain auto-picked)\nravi identity create --name \"Work Agent\" --email \"shopping\" --json\n\n# Full email on a specific domain (must be a domain you have access to)\nravi identity create --email \"work@acme.com\" --json\n\n# List available domains\nravi domains --json\n\nWhen name is omitted, the server generates a realistic human name like \"Sarah Johnson\".\nThe auto-generated email uses the same name: sarah.johnson472@ravi.app.\n\nCustom email rules: 3-30 chars, lowercase alphanumeric + dots + hyphens,\nmust start/end with letter or number, no consecutive dots (..) or hyphens (--).\nReturns HTTP 409 if the email address is already taken."
      },
      {
        "title": "Important Notes",
        "body": "Always use --json — all commands support it. Human-readable output is not designed for parsing.\nAuth is automatic — token refresh happens transparently. If you get auth errors, ask the user to re-login.\nIdentity resolution — .ravi/config.json in CWD takes priority over ~/.ravi/config.json.\nIdentities are permanent — each identity has its own email, phone, and secrets. Don't create new identities unless the user asks for it."
      },
      {
        "title": "Related Skills",
        "body": "ravi-inbox — Read SMS and email messages\nravi-email-send — Compose, reply, forward emails\nravi-email-writing — Write professional emails with proper formatting and tone\nravi-contacts — Look up or manage contacts associated with this identity\nravi-passwords — Store and retrieve website credentials (domain + username + password)\nravi-secrets — Store and retrieve key-value secrets (API keys, env vars)\nravi-login — Sign up for and log into services, handle 2FA/OTPs\nravi-feedback — Send feedback, report bugs, request features"
      }
    ],
    "body": "Ravi Identity\n\nYou have access to ravi, a CLI that gives you your own phone number, email address, and secret store.\n\nPrerequisites\nInstall the CLI\n\nIf ravi is not installed, tell the user to install it:\n\nbrew install ravi-hq/tap/ravi\n\nCheck authentication\n\nVerify you're authenticated before using any command:\n\nravi auth status --json\n\n\nIf \"authenticated\": false, tell the user to run ravi auth login (requires browser interaction — you cannot do this yourself).\n\nYour Identity\n# Your email address (use this for signups)\nravi get email --json\n# → {\"id\": 1, \"email\": \"janedoe@example.com\", \"created_dt\": \"...\"}\n\n# Your phone number (use this for SMS verification)\nravi get phone --json\n# → {\"id\": 1, \"phone_number\": \"+15551234567\", \"provider\": \"twilio\", \"created_dt\": \"...\"}\n\n# The human who owns this account\nravi get owner --json\n# → {\"first_name\": \"Jane\", \"last_name\": \"Doe\"}\n\nSwitching Identities\n\nRavi supports multiple identities. Each identity has its own email, phone, and secrets.\n\nListing identities\nravi identity list --json\n\nSetting an identity for this project\n\nUse this when the user wants a different identity for a specific project:\n\nList identities: ravi identity list --json\nSet for this project (per-directory override):\n# Recommended: use the CLI (handles bound tokens automatically)\nravi identity use \"<uuid>\"\n\n# Manual fallback (identity only, no bound tokens):\nmkdir -p .ravi && echo '{\"identity_uuid\":\"<uuid>\",\"identity_name\":\"<name>\"}' > .ravi/config.json\n\nAdd .ravi/ to .gitignore\n\nAll ravi commands in this directory will use the specified identity.\n\nSwitching identity globally\nravi identity use \"<uuid>\"\n\nCreating a new identity\n\nOnly create a new identity when the user explicitly asks for one (e.g., for a separate project that needs its own email/phone). New identities require a paid plan and take a moment to provision.\n\n# Auto-generated name and email (recommended — looks like a real person)\nravi identity create --json\n# → name: \"Sarah Johnson\", email: \"sarah.johnson472@ravi.app\"\n\n# Custom name, auto-generated email\nravi identity create --name \"Shopping Agent\" --json\n\n# Custom email local part (domain auto-picked)\nravi identity create --name \"Work Agent\" --email \"shopping\" --json\n\n# Full email on a specific domain (must be a domain you have access to)\nravi identity create --email \"work@acme.com\" --json\n\n# List available domains\nravi domains --json\n\n\nWhen name is omitted, the server generates a realistic human name like \"Sarah Johnson\". The auto-generated email uses the same name: sarah.johnson472@ravi.app.\n\nCustom email rules: 3-30 chars, lowercase alphanumeric + dots + hyphens, must start/end with letter or number, no consecutive dots (..) or hyphens (--). Returns HTTP 409 if the email address is already taken.\n\nImportant Notes\nAlways use --json — all commands support it. Human-readable output is not designed for parsing.\nAuth is automatic — token refresh happens transparently. If you get auth errors, ask the user to re-login.\nIdentity resolution — .ravi/config.json in CWD takes priority over ~/.ravi/config.json.\nIdentities are permanent — each identity has its own email, phone, and secrets. Don't create new identities unless the user asks for it.\nRelated Skills\nravi-inbox — Read SMS and email messages\nravi-email-send — Compose, reply, forward emails\nravi-email-writing — Write professional emails with proper formatting and tone\nravi-contacts — Look up or manage contacts associated with this identity\nravi-passwords — Store and retrieve website credentials (domain + username + password)\nravi-secrets — Store and retrieve key-value secrets (API keys, env vars)\nravi-login — Sign up for and log into services, handle 2FA/OTPs\nravi-feedback — Send feedback, report bugs, request features"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/raunaksingwi/ravi-identity",
    "publisherUrl": "https://clawhub.ai/raunaksingwi/ravi-identity",
    "owner": "raunaksingwi",
    "version": "1.7.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/ravi-identity",
    "downloadUrl": "https://openagent3.xyz/downloads/ravi-identity",
    "agentUrl": "https://openagent3.xyz/skills/ravi-identity/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ravi-identity/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ravi-identity/agent.md"
  }
}