Install
openclaw skills install @dodge1218/venture-spawnerInstant agent hiring. Takes job postings from the orchestrator and fills them with properly configured sub-agents. Handles context passing, timeout enforcement, concurrent agent limits, and completion tracking. The bridge between scoping (orchestrator) and execution (sub-agents).
openclaw skills install @dodge1218/venture-spawnerTakes job postings → spawns the right agent → passes context → tracks completion.
Invoked by the orchestrator after JOB_BOARD.md is written with job postings. Can also be invoked directly when the user says "spawn an agent to do X".
Read workspace/JOB_BOARD.md for pending job postings.
Each posting has:
subagents list for active count.| Bucket | Label Pattern | Timeout | Key Context to Pass | Notes |
|---|---|---|---|---|
| 🏗️ BUILD | build-[project] | 600s | webdev-sop, project files, WORK_BUCKETS.md | Always include "npm run build must pass, git commit + push" |
| 📬 OUTREACH | outreach-[target] | 300s | outreach-infrastructure.md, warmup state, suppression list | Include SSH commands for droplet |
| 💰 SALES | sales-[client] | 300s | business-strategy.md, client project file | Include pitch framework |
| 🔧 MAINTAIN | fix-[project]-[issue] | 300s | Project memory file, error description | Include "verify fix works" step |
| 🧠 STRATEGY | research-[topic] | 300s | business-strategy.md, OUTSTANDING.md | Include "cite sources" requirement |
| 📦 PRODUCT | product-[item] | 300s | product-catalog-registry.md, casefinder docs | Include unit economics requirement |
| 🤖 SYSTEM | system-[tool] | 300s | Relevant skill files, OpenClaw docs | Include "test the skill" step |
| 💼 CAREER | career-[company] | 300s | Ryan's resume, target role | Include "output PDF" requirement |
| 💡 IDEATION | ideation-[source] | 600s | batch-cognition skill, value-stack.md | Include ICE scoring requirement |
For each sub-agent spawn, construct the task as:
You are working on: [workspace path]
## Job
[Bucket emoji] [Bucket name]: [Job title]
## What to Do
[Detailed task description from job posting]
## Context
[Relevant file contents or summaries — keep under 2K tokens]
[Reference to full files the agent can read itself]
## Acceptance Criteria
[Specific, testable conditions — copied from job posting]
- [ ] [criterion 1]
- [ ] [criterion 2]
- [ ] [criterion 3]
## Constraints
- [Bucket-specific constraints from table above]
- Do NOT modify .env files with real keys
- Build must pass before committing
- Git commit with descriptive message
When jobs in the same wave are related:
output/analysis.md → Job B needs it as input# Pseudocode for spawning logic
for wave in execution_plan.waves:
active = get_active_subagents()
for job in wave.jobs:
if job.effort == "QUICK":
execute_inline(job) # No sub-agent needed
job.status = "✅"
continue
# Wait for slot
while len(active) >= 3:
wait_for_completion_event()
active = get_active_subagents()
# Check dependencies
if job.depends_on and not all_done(job.depends_on):
job.status = "QUEUED"
continue
# Spawn
agent = sessions_spawn(
label=f"{bucket_prefix}-{job.slug}",
mode="run",
runTimeoutSeconds=job.timeout,
task=build_task_description(job)
)
job.status = "🔄"
job.agent_key = agent.childSessionKey
active.append(agent)
# Wait for wave to complete before next wave
wait_for_all_wave_completions(wave)
When a sub-agent completion event arrives:
| Failure Type | Action |
|---|---|
| Sub-agent timeout | Kill agent, mark ⚠️, retry once with simpler scope |
| Sub-agent error | Mark ❌, log error, notify orchestrator |
| Build failure | Mark ⚠️, check build output, fix inline if trivial |
| Dependency failed | Mark BLOCKED, skip, notify orchestrator |
| 3 consecutive failures | Stop spawning, escalate to Ryan |
Update workspace/JOB_BOARD.md with:
When all jobs complete, notify orchestrator for reconciliation.