Agent build · v1
AI outreach agent team: short-lived role agents on a schedule (free sample)
What it does: The layout of a Claude Code agent team that runs replies, inbox and numbers on a schedule. Each role wakes up, does one run, writes down what it learned, and exits. Sample of the paid kit.
- Model
- Claude Opus and Claude Sonnet (Claude Code background agents)
- Runs in
- Claude Code scheduled tasks, Playwright over CDP
- Cost per run
- not measured
- License
- MIT
- Used by
- 0
- Files
- 8 (20 KB)
curl -L https://tensorust.com/builds/ai-outreach-agent-team/download -o ai-outreach-agent-team.zip
Receipts
- Source
- https://agent-receipts-five.vercel.app/
- Measured
- Oct 22, 2026
- Check
- Number found on the source page by our checker
- Stamp
- w5H4zZScAptjReQTwOTdHqZ7ELh2hJd_
- Source
- https://agent-receipts-five.vercel.app/
- Measured
- Oct 22, 2026
- Check
- Number found on the source page by our checker
- Stamp
- N8LcJHO392fsJGWy_O4kp8pjF7_h1543
Files
- .claude/skills/agent-team-restart/SKILL.md2 KB
- README.md3 KB
- roles/numbers/ROLE.md2 KB
- roles/x-reply/ROLE.md3 KB
- schedule.example.json4 KB
- shared/LEARNING-LOOP.md1 KB
- shared/RULES.md3 KB
- tools/start-browsers.ps11 KB
# Starts the browsers the agent team attaches to. Safe to run any time:
# it only starts a profile whose CDP port is not already answering.
# Agents never launch browsers themselves; they attach with Playwright connectOverCDP.
$Chrome = "C:\Program Files\Google\Chrome\Application\chrome.exe"
$Profiles = @(
@{ Port = 9336; Dir = "$env:USERPROFILE\agent-chrome\personal"; What = "personal X + LinkedIn" },
@{ Port = 9335; Dir = "$env:USERPROFILE\agent-chrome\posting"; What = "article cross-posting (dev.to, Medium, GitHub)" },
@{ Port = 9337; Dir = "$env:USERPROFILE\agent-chrome\accounts"; What = "brand X + business inbox" }
)
function Test-Cdp($port) {
try { Invoke-WebRequest -UseBasicParsing -TimeoutSec 3 "http://127.0.0.1:$port/json/version" | Out-Null; return $true } catch { return $false }
}
foreach ($p in $Profiles) {
if (Test-Cdp $p.Port) { Write-Output "$($p.What) ($($p.Port)): already running"; continue }
Start-Process $Chrome -ArgumentList "--remote-debugging-port=$($p.Port)", "--user-data-dir=`"$($p.Dir)`"", "--no-first-run"
Write-Output "$($p.What) ($($p.Port)): started"
}
Start-Sleep -Seconds 8
foreach ($p in $Profiles) { Write-Output ("{0} up: {1}" -f $p.Port, (Test-Cdp $p.Port)) }
# Clear browser locks left by a crashed agent (older than 15 minutes).
$Locks = Join-Path $PSScriptRoot "..\locks\*.lock"
Get-ChildItem $Locks -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt (Get-Date).AddMinutes(-15) } | Remove-Item -Force -ErrorAction SilentlyContinue
README
This is the structure behind the agent team that has run Tensorust's distribution since 2026-10-09: X replies, long-form articles, cold email, an inbox closer and a daily numbers agent. It runs on Claude Code. Nothing stays on. A scheduled job wakes up, spawns one short-lived background agent for one role, the agent does one run, and it exits.
Each role is two files. ROLE.md is the playbook: the job, what to read first, the steps, hard caps and what to log. NOTES.md is the role's memory: a LESSONS block at the top that the agent reads before acting, and a run log it appends to after (TRIED, RESULT, LESSON). Shared files hold the voice, the goals, and posts.json, a log of every action with its live URL. Cadence limits are checked against posts.json before anything is posted, so two runs can never double-post.
What is in this sample:
README.md: the architecture and how a run works.
shared/RULES.md: the rules every role reads first (real Chrome only, never sign out, reuse tabs, stop on 401 and 429, log the live URL).
shared/LEARNING-LOOP.md: how roles get better between runs.
roles/x-reply/ROLE.md and roles/numbers/ROLE.md: two of the role briefs.
schedule.example.json: three jobs with their exact prompts, including the precheck the main session runs before spawning anything.
.claude/skills/agent-team-restart/SKILL.md: a skill that brings the whole team back in a fresh session.
tools/start-browsers.ps1: starts the Chrome profiles agents attach to.
How to run it:
1. Start Chrome profiles with remote debugging (tools/start-browsers.ps1) and sign into each account by hand.
2. Put the files under outreach/ as laid out in README.md, write your own VOICE.md and PLAYBOOK.md, and fill the handles and ports in schedule.json.
3. In Claude Code, run the restart skill. It checks logins read-only and creates one scheduled job per entry in schedule.json.
/agent-team-restartScheduled jobs in Claude Code live only in the session and expire after 7 days, so run the restart skill in every new session and at least weekly.
What to change: your platforms, your ports, your voice, and the cadences. Start with low cadences; new accounts get rate-limited fast. Keep the shape: one run per agent, cheap prechecks in the main session, every action logged with a live URL, and a numbers agent that writes one change per role per day.
The full kit, The Agent-Run Outreach Team, adds the other roles (scout, LinkedIn, community, articles, revenue), the pacing gate and posts log enforced in code, the scorecard and learning scripts, and a setup guide: https://shop.tensorust.com/