Use claude-relay to run a long or rate-limit-prone task autonomously across subscription accounts. Invoke this skill whenever the user says "use relay", "run this with relay", "do this overnight", "run this autonomously", "use relay for X", or has a multi-hour / multi-step task they want to hand off completely. Also use proactively when a task looks like it will take many turns and the user hasn't thought about rate limits yet. Guides goal writing, picks the right flags, and starts the run.
3 stars
0 votes
0 copies
0 views
Added October 14, 2026
ai-agentsgoshellbashnodegitapidatabase
Works with
api
Security analysis
B75/100
criticalExfiltrates credentials via HTTP — exact pattern from Snyk ToxicSkills study
Installs into .claude/skills of the current project.
Are you the author of Relay?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/oleg-koval-relay)
---
name: relay
description: >
Use claude-relay to run a long or rate-limit-prone task autonomously across subscription accounts.
Invoke this skill whenever the user says "use relay", "run this with relay", "do this overnight",
"run this autonomously", "use relay for X", or has a multi-hour / multi-step task they want to
hand off completely. Also use proactively when a task looks like it will take many turns and the
user hasn't thought about rate limits yet. Guides goal writing, picks the right flags, and starts
the run.
license: MIT
allowed-tools: Bash, Read, Write
metadata:
author: Oleg Koval
tags:
- relay
- autonomous
- rate-limits
- claude-relay
---
<!-- Generated by scripts/build-adapters.sh. Do not edit directly. -->
# relay
Runs a task **unattended** using `claude-relay`: drives `claude -p` in a headless loop, writes a
handoff summary when one account's limit approaches, and switches to the next account automatically.
You watch logs; relay handles the rest.
Binary: `claude-relay` (alias `relay` if added to shell). Config: `~/.claude-relay/relay.config.json`.
---
## Step 1: Decide: relay or inline?
**Use relay when:**
- Task will take many turns or hours (big refactor, migration, research + implementation)
- The user wants to hand it off and walk away
- Rate limits are a real concern (long-running or token-heavy)
**Stay inline when:**
- Task is quick (< ~10 turns)
- User wants to review each step
- Task needs interactive input that relay can't provide
---
## Step 2: Write the goal
A relay goal is a self-contained spec a fresh Claude agent can execute cold. Write it to
`/tmp/relay-goal-<short-name>.md`. It must include:
- **What to do**: concrete deliverables, not vague intent
- **How to verify**: the exact command proving success (`npm test`, `curl /api/health`, etc.)
- **Scope**: explicit list of what NOT to do (no commits, no PRs, no migrations, unless stated)
- **Key files**: paths the agent should read first if the context isn't obvious
**Template:**
```markdown
## Goal
<1-3 sentences: the deliverable>
## Success criteria
Run `<command>` and confirm it exits 0 / returns the expected result.
## Scope
- DO: <explicit list>
- DO NOT: open PRs / push commits / run migrations / touch unrelated files
## Key files
- <path>: <why it matters>
```
Good goals are specific. "Add input validation to all POST routes in `app/api/`" beats "improve the API".
---
## Step 3: Pick flags
| Situation | Flag |
|-----------|------|
| Task needs uncommitted changes, local `.env`, or a local database | `--in-place` |
| Everything is committed; task is self-contained | *(default, isolated git worktree)* |
When in doubt: if the repo has a `.env` or `node_modules` the task depends on, use `--in-place`.
---
## Step 4: Run
```bash
claude-relay run /tmp/relay-goal-<name>.md <absolute-path-to-repo> [--in-place]
```
Relay logs stream to stderr. The run ends when the agent outputs `RELAY_TASK_COMPLETE` on its own
line, or hits a hard cap (400 turns / 48h wall clock).
---
## Step 5: Tell the user
After starting, report:
- The exact command you ran
- What to watch for: `RELAY_TASK_COMPLETE` in logs, or `claude-relay status --config ~/.claude-relay/relay.config.json`
- The flag you picked and why (especially if you chose `--in-place`)
---
## Health check
If anything seems misconfigured:
```bash
claude-relay doctor --config ~/.claude-relay/relay.config.json
```
Should show ✓ for both account slots. If a slot shows ✗, tell the user to run:
```bash
claude-relay login <email> # must have claude.ai open in browser as that account first
```