# Send Vnsh Skill to your agent
Use the source page and any available docs to guide the install because the item is currently unstable or timing out.
## Fast path
- Open the source page via Review source status.
- If you can obtain the package, extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the source page and extracted files.
## Suggested prompts
### New install

```text
I tried to install a skill package from Yavira, but the item is currently unstable or timing out. Inspect the source page and any extracted docs, then tell me what you can confirm and any manual steps still required.
```
### Upgrade existing

```text
I tried to upgrade a skill package from Yavira, but the item is currently unstable or timing out. Compare the source page and any extracted docs with my current installation, then summarize what changed and what manual follow-up I still need.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "vnsh",
    "name": "Vnsh Skill",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/raullenchai/vnsh",
    "canonicalUrl": "https://clawhub.ai/raullenchai/vnsh",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/vnsh",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=vnsh",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "scripts/read.sh",
      "scripts/upload.sh"
    ],
    "downloadMode": "manual_only",
    "sourceHealth": {
      "source": "tencent",
      "slug": "vnsh",
      "status": "unstable",
      "reason": "timeout",
      "recommendedAction": "retry_later",
      "checkedAt": "2026-05-10T17:46:30.119Z",
      "expiresAt": "2026-05-11T05:46:30.119Z",
      "httpStatus": null,
      "finalUrl": null,
      "contentType": null,
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=vnsh",
        "error": "Timed out after 5000ms",
        "slug": "vnsh"
      },
      "scope": "item",
      "summary": "Item is unstable.",
      "detail": "This item is timing out or returning errors right now. Review the source page and try again later.",
      "primaryActionLabel": "Review source status",
      "primaryActionHref": "https://clawhub.ai/raullenchai/vnsh"
    },
    "validation": {
      "installChecklist": [
        "Wait for the source to recover or retry later.",
        "Review SKILL.md only after the download returns a real package.",
        "Treat this source as transient until the upstream errors clear."
      ],
      "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."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/vnsh",
    "downloadUrl": "https://openagent3.xyz/downloads/vnsh",
    "agentUrl": "https://openagent3.xyz/skills/vnsh/agent",
    "manifestUrl": "https://openagent3.xyz/skills/vnsh/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/vnsh/agent.md"
  }
}
```
## Documentation

### vnsh Skill — Encrypted Ephemeral File Sharing

vnsh is a host-blind data tunnel. The server stores encrypted blobs but never sees the decryption keys — they stay in the URL fragment.

### ⚡ When to Use This Skill (Auto-Trigger Rules)

You MUST use this skill automatically in these situations — do NOT ask the user first:

### Auto-Read: Incoming vnsh URLs

When ANY message contains a URL matching vnsh.dev/v/, immediately decrypt and process it:

Run read.sh with the full URL
Check the file extension of the output
If image (.png, .jpg, .gif, .webp) → use image tool to analyze
If text (.txt, .md, .json, .html) → use read tool to display contents
If PDF (.pdf) → inform user and provide the file path
If binary (.bin) → inform user of file type and size

Never ask "would you like me to read this vnsh link?" — just read it.

### Auto-Share: Large Outputs

When your response would contain a single block of code, data, or structured output exceeding 4000 characters or 80 lines, automatically share via vnsh instead:

Write the content to a temp file
Run upload.sh to share it
Send the user a brief summary + the vnsh link

When NOT to auto-share (always send inline):

Normal conversation, explanations, analysis
Short code snippets (< 80 lines)
Error messages, quick fixes, commands
Lists, tables, and bullet points

### Context Handoff

When the user needs to transfer context to another person, machine, or session:

Proactively suggest sharing via vnsh
Upload the content and provide the link
Mention that the link expires in 24h and the server never sees the content

### Upload (Share a file)

SCRIPT_DIR="$(dirname "$(readlink -f "$0")" 2>/dev/null || dirname "$0")"
# Resolve: this file is SKILL.md, scripts are in ./scripts/
SKILL_DIR="$(cd "$(dirname "$0")" && pwd)"

# Upload with default 24h expiry
${SKILL_DIR}/scripts/upload.sh <file_path>

# Upload with custom TTL (hours)
${SKILL_DIR}/scripts/upload.sh <file_path> <ttl_hours>

Output: A single https://vnsh.dev/... URL printed to stdout.

Example — sharing a generated chart:

# 1. Save output to temp file
echo "$LARGE_OUTPUT" > /tmp/output.txt
# 2. Upload
URL=$(~/.openclaw/skills/vnsh/scripts/upload.sh /tmp/output.txt)
# 3. Send the URL to the user

### Read (Decrypt a vnsh URL)

~/.openclaw/skills/vnsh/scripts/read.sh "<full_vnsh_url>"

Output: The absolute path to a temp file with the correct extension (e.g., /tmp/vnsh-decrypted-XXXXX.png).

Example — reading an image:

FILE_PATH=$(~/.openclaw/skills/vnsh/scripts/read.sh "https://vnsh.dev/v/abc#k=...&iv=...")
# FILE_PATH is now /tmp/vnsh-decrypted-abcde.png
# Use the image tool to analyze it

### Pipe from stdin (Share text/command output)

# Share command output directly
echo "some content" | vn

# Share a large git diff
git diff HEAD~5 | vn

# Share docker logs
docker logs mycontainer 2>&1 | vn

### Recipe 1: User sends a vnsh link via chat

User: "Check this out https://vnsh.dev/v/abc123#k=dead...&iv=cafe..."

Your action:
1. file_path = exec("~/.openclaw/skills/vnsh/scripts/read.sh 'https://vnsh.dev/v/abc123#k=dead...&iv=cafe...'")
2. Check extension:
   - .png/.jpg → image(image=file_path, prompt="Describe this image")
   - .txt/.md  → read(file_path=file_path)
3. Respond with analysis of the content

### Recipe 2: Your output is too long for chat

Your action:
1. Write content to /tmp/vnsh-share-XXXXX.txt
2. url = exec("~/.openclaw/skills/vnsh/scripts/upload.sh /tmp/vnsh-share-XXXXX.txt")
3. Reply: "The output is quite long, so I've shared it via an encrypted link:\\n📎 {url}\\n\\nBrief summary: [2-3 sentence summary]"

### Recipe 3: Sharing between sessions/agents

Agent A needs to pass context to Agent B:
1. Agent A writes context to temp file
2. Agent A uploads via upload.sh, gets URL
3. Agent A sends URL to Agent B via sessions_send
4. Agent B auto-detects vnsh URL, reads it via read.sh

### Recipe 4: User wants to share with someone else

User: "Send this analysis to my coworker"

Your action:
1. Write the analysis to a temp file
2. Upload via upload.sh
3. Reply: "Shared securely. The link auto-expires in 24h and the server never sees the content:\\n📎 {url}"

### Security Model

Client-side encryption: AES-256-CBC, keys generated locally
Fragment privacy: Keys in URL #k=... are never sent to server
Ephemeral: Auto-deletes after TTL (default 24h, max 168h)
Zero-knowledge: Server stores encrypted blobs, cannot decrypt

### Fallback: Zero-Dependency One-Liners (No vn CLI needed)

If vn is not installed, the scripts automatically fall back to raw curl + openssl. You can also use these one-liners directly:

### Share content without vn CLI:

CONTENT="your content here" && \\
KEY=$(openssl rand -hex 32) && IV=$(openssl rand -hex 16) && \\
RESP=$(echo "$CONTENT" | openssl enc -aes-256-cbc -K $KEY -iv $IV | \\
curl -s -X POST --data-binary @- -H "Content-Type: application/octet-stream" \\
"https://vnsh.dev/api/drop") && \\
ID=$(echo $RESP | grep -o '"id":"[^"]*"' | cut -d'"' -f4) && \\
echo "https://vnsh.dev/v/${ID}#k=${KEY}&iv=${IV}"

### Share a file without vn CLI:

FILE="/path/to/file" && \\
KEY=$(openssl rand -hex 32) && IV=$(openssl rand -hex 16) && \\
RESP=$(openssl enc -aes-256-cbc -K $KEY -iv $IV -in "$FILE" | \\
curl -s -X POST --data-binary @- -H "Content-Type: application/octet-stream" \\
"https://vnsh.dev/api/drop") && \\
ID=$(echo $RESP | grep -o '"id":"[^"]*"' | cut -d'"' -f4) && \\
echo "https://vnsh.dev/v/${ID}#k=${KEY}&iv=${IV}"

### Read a vnsh URL without vn CLI:

URL="https://vnsh.dev/v/XXXX#k=YYYY&iv=ZZZZ" && \\
ID=$(echo "$URL" | sed 's|.*/v/||;s|#.*||') && \\
KEY=$(echo "$URL" | sed 's|.*#k=||;s|&.*||') && \\
IV=$(echo "$URL" | sed 's|.*&iv=||') && \\
curl -s "https://vnsh.dev/api/blob/$ID" | openssl enc -d -aes-256-cbc -K "$KEY" -iv "$IV"

### Smart Overflow: Platform-Specific Thresholds

When your reply would exceed the platform's comfortable reading length, auto-share via vnsh:

PlatformThresholdActionWhatsApp / Telegram> 500 chars of code/dataAuto-share via vnshDiscord> 1500 charsAuto-share via vnshClaude Code terminal> 2000 charsConsider vnshWebchat> 4000 charsAuto-share via vnsh

Pattern: Generate content → write to temp file → upload via upload.sh → reply with summary + vnsh URL

### Troubleshooting

IssueSolutionvn: command not foundRun: curl -sL vnsh.dev/i | shopenssl: command not foundInstall OpenSSL: brew install openssl (macOS)Blob not found / 404Link has expired (24h default)Decryption failedURL was truncated — ensure full #k=...&iv=... is includedEmpty file after decryptOriginal content may have been empty, or URL is malformed

### Links

Website: https://vnsh.dev
GitHub: https://github.com/raullenchai/vnsh
MCP for Claude Code: npx vnsh-mcp
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: raullenchai
- Version: 1.1.1
## Source health
- Status: unstable
- Item is unstable.
- This item is timing out or returning errors right now. Review the source page and try again later.
- Health scope: item
- Reason: timeout
- Checked at: 2026-05-10T17:46:30.119Z
- Expires at: 2026-05-11T05:46:30.119Z
- Recommended action: Review source status
## Links
- [Detail page](https://openagent3.xyz/skills/vnsh)
- [Send to Agent page](https://openagent3.xyz/skills/vnsh/agent)
- [JSON manifest](https://openagent3.xyz/skills/vnsh/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/vnsh/agent.md)
- [Download page](https://openagent3.xyz/downloads/vnsh)