From rentahuman-skills
Drive a full Rent A Human bounty lifecycle over time using the `/loop` command — create a bounty, poll for applications as they trickle in, evaluate and accept the best applicant, monitor the deliverable, confirm and release payment. Trigger whenever the user wants to "hire someone", "post a bounty and wait for apps", "find a human for <task>", "manage this rental end-to-end", "wake me when applications come in", "run this bounty until it's done", or any other request that spans the gap between posting work and getting it delivered. Also trigger for "rent a human for X and handle the whole thing", "babysit this bounty", "keep checking for applicants", or when the user delegates ongoing coordination of an in-flight rental. Do NOT trigger for one-off lookups (use `browse_services` / `search_humans` directly) or for synchronous tasks that finish in one turn.
How this skill is triggered — by the user, by Claude, or both
Slash command
/rentahuman-skills:loopThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Rent A Human work is inherently *asynchronous*. A bounty lives for hours or days while applications trickle in, one applicant is selected, the human does the work, and payment is released. That lifecycle doesn't fit in a single agent turn — it needs the `/loop` command so Claude Code wakes itself up on a sensible cadence and drives the whole thing to completion.
Rent A Human work is inherently asynchronous. A bounty lives for hours or days while applications trickle in, one applicant is selected, the human does the work, and payment is released. That lifecycle doesn't fit in a single agent turn — it needs the /loop command so Claude Code wakes itself up on a sensible cadence and drives the whole thing to completion.
This skill is the playbook for that loop. The MCP tools come from rentahuman-mcp (bundled with this plugin).
Loop when:
create_bounty, create_personal_bounty).Don't loop when:
browse_services, search_humans, get_human) — just answer./loopTwo forms:
/loop <what to do this iteration> — you decide when to wake up next via ScheduleWakeup. Best when the cadence changes across phases (fast when evaluating apps, slow when waiting for a deadline)./loop 30m <what to do this iteration> — runs every 30 minutes. Use only if the user asks for a specific cadence.Each iteration re-runs the same prompt with full context of prior runs, so write the prompt once so it can pick up cold: "Check bounty <id>: list new applications since last check, evaluate against criteria <...>, accept if a clear winner, otherwise wait. If work is in progress, check deliverable status. If delivered, confirm and release."
Bounty work moves slowly compared to build/deploy polling. Default to longer sleeps:
| Phase | Sleep between ticks |
|---|---|
| Fresh bounty, zero apps yet | 20–30 min |
| Apps arriving, evaluating | 5–15 min |
| One applicant accepted, waiting for delivery | 30–60 min (or to deadline) |
| Near deadline / active back-and-forth in chat | 5–10 min |
| Deliverable received, reviewing before release | act immediately, no sleep |
Avoid 300s (5 min) exactly — the prompt cache TTL is 5 min, so either stay under it (≤270s) or commit to longer (≥1200s). See the ScheduleWakeup guidance for the reasoning.
Each step names the MCP tool to call.
create_bounty (open applications) or create_personal_bounty (pre-funded, targeted at one human). Record the returned bounty ID — every subsequent iteration needs it.get_bounty_applications <bounty_id>. On each tick, compare against what you've already seen. For new apps, read the applicant's profile via get_human and recent get_reviews.accept_application for the winner. Optionally reject_application for obvious no-goes so applicants don't dangle. For multi-slot bounties, repeat until slots fill.start_conversation / send_message to brief the accepted human, share context, answer questions. Poll get_conversation for their replies.get_bounty <bounty_id> for status transitions. If the human submits work, evaluate it against the brief.confirm_delivery + release_payment on acceptance. If something's wrong, open_dispute and stop the loop — disputes need human review.End the loop (omit the next ScheduleWakeup call) when any of these hold:
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub rentahuman-ai/skills --plugin rentahuman-skills