{
  "schemaVersion": "1.0",
  "item": {
    "slug": "claude-relay",
    "name": "Claude Relay",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/artwalker/claude-relay",
    "canonicalUrl": "https://clawhub.ai/artwalker/claude-relay",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/claude-relay",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=claude-relay",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/relay.sh"
    ],
    "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/claude-relay"
    },
    "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/claude-relay",
    "agentPageUrl": "https://openagent3.xyz/skills/claude-relay/agent",
    "manifestUrl": "https://openagent3.xyz/skills/claude-relay/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/claude-relay/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": "Claude Relay",
        "body": "Operate Claude Code as a persistent terminal copilot through tmux."
      },
      {
        "title": "Script",
        "body": "All actions go through scripts/relay.sh. Run with no args for usage help.\n\nscripts/relay.sh <action> [project] [args...]\n\nActions: start, send, tail, stop, status, session"
      },
      {
        "title": "Workflow",
        "body": "Start session: scripts/relay.sh start <project>\nSend instruction: scripts/relay.sh send <project> \"<text>\"\nRead output: scripts/relay.sh tail <project> [lines]\nRepeat send/tail as needed.\nStop when done: scripts/relay.sh stop <project>"
      },
      {
        "title": "Project resolution",
        "body": "The script resolves <project> in order:\n\nAbsolute path (if directory exists)\nAlias from projects.map (name=/abs/path)\n$CLAUDE_RELAY_ROOT/<name> exact match\nFind under $CLAUDE_RELAY_ROOT (maxdepth=2) by folder name\nIf omitted, re-use last project\n\nMultiple matches → script exits with candidates; ask user to clarify."
      },
      {
        "title": "Session naming",
        "body": "Deterministic: cc_<basename_sanitized>. One project = one tmux session."
      },
      {
        "title": "Error handling",
        "body": "tmux not installed: script exits with code 2 and \"missing dependency\" message.\nClaude binary not found: same exit code 2. Verify CLAUDE_BIN env or default path.\nSession not running (send/tail on stopped session): exits code 6. Start first.\nProject not found: exits code 4. Check projects.map or project path.\nClaude process hung: tail still works — check output. If stuck, stop and start fresh."
      },
      {
        "title": "Environment variables",
        "body": "VariableDefaultDescriptionCLAUDE_RELAY_ROOT$HOME/projectsRoot directory for project discoveryCLAUDE_RELAY_MAP<skill-dir>/projects.mapPath to project alias map fileCLAUDE_BINclaude (from PATH)Path to Claude Code CLI binaryRELAY_WAIT6Seconds to wait after send before tailing output"
      },
      {
        "title": "Setup",
        "body": "Install this skill\nCreate a projects.map file in the skill directory (see projects.map.example)\nEnsure tmux and claude are installed and in your PATH"
      },
      {
        "title": "Notes",
        "body": "Transport-focused skill (relay/orchestration), not deep code reasoning."
      }
    ],
    "body": "Claude Relay\n\nOperate Claude Code as a persistent terminal copilot through tmux.\n\nScript\n\nAll actions go through scripts/relay.sh. Run with no args for usage help.\n\nscripts/relay.sh <action> [project] [args...]\n\n\nActions: start, send, tail, stop, status, session\n\nWorkflow\nStart session: scripts/relay.sh start <project>\nSend instruction: scripts/relay.sh send <project> \"<text>\"\nRead output: scripts/relay.sh tail <project> [lines]\nRepeat send/tail as needed.\nStop when done: scripts/relay.sh stop <project>\nProject resolution\n\nThe script resolves <project> in order:\n\nAbsolute path (if directory exists)\nAlias from projects.map (name=/abs/path)\n$CLAUDE_RELAY_ROOT/<name> exact match\nFind under $CLAUDE_RELAY_ROOT (maxdepth=2) by folder name\nIf omitted, re-use last project\n\nMultiple matches → script exits with candidates; ask user to clarify.\n\nSession naming\n\nDeterministic: cc_<basename_sanitized>. One project = one tmux session.\n\nError handling\ntmux not installed: script exits with code 2 and \"missing dependency\" message.\nClaude binary not found: same exit code 2. Verify CLAUDE_BIN env or default path.\nSession not running (send/tail on stopped session): exits code 6. Start first.\nProject not found: exits code 4. Check projects.map or project path.\nClaude process hung: tail still works — check output. If stuck, stop and start fresh.\nEnvironment variables\nVariable\tDefault\tDescription\nCLAUDE_RELAY_ROOT\t$HOME/projects\tRoot directory for project discovery\nCLAUDE_RELAY_MAP\t<skill-dir>/projects.map\tPath to project alias map file\nCLAUDE_BIN\tclaude (from PATH)\tPath to Claude Code CLI binary\nRELAY_WAIT\t6\tSeconds to wait after send before tailing output\nSetup\nInstall this skill\nCreate a projects.map file in the skill directory (see projects.map.example)\nEnsure tmux and claude are installed and in your PATH\nNotes\nTransport-focused skill (relay/orchestration), not deep code reasoning."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/artwalker/claude-relay",
    "publisherUrl": "https://clawhub.ai/artwalker/claude-relay",
    "owner": "artwalker",
    "version": "1.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/claude-relay",
    "downloadUrl": "https://openagent3.xyz/downloads/claude-relay",
    "agentUrl": "https://openagent3.xyz/skills/claude-relay/agent",
    "manifestUrl": "https://openagent3.xyz/skills/claude-relay/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/claude-relay/agent.md"
  }
}