Skip to main content
skill CX Codex

human-in-the-loop — Claude Code skill: what it does, how to install

Classifies workflow closeouts into auto-continue, human gates, or parked states. Escalations become durable queue items with context rather than ephemeral chat pings.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add mvschwarz/openrig --skill human-in-the-loop -a claude-code
Open on GitHub

What human-in-the-loop does

The skill organizes handoffs between autonomous conveyor runs and human judgment. Instead of dropping ad-hoc chat notifications, it converts issues into durable queue entries with proofs, trade-offs, and defaults. Use it whenever provider limits, authorization walls, or product ambiguity require a hard call.

Closeouts fall into three strict categories: auto-continue, human gate, or park. Clean runs with a declared next step in PROGRESS.md proceed immediately. Fabricating an artificial human approval gate on a clear slice breaks the protocol.

The shipped interface operates through Mission Control using seven discrete verbs: approve, deny, route, annotate, hold, drop, and handoff. Approval passes execution back to the orchestrator, while feedback seeds a fresh queue item instead of silently editing files.

What it helps with

  • Classify slice closeouts into auto-continue, human gate, or park
  • Escalate authorization roadblocks and trade-offs into a durable decision queue
  • Return control back to the orchestrator after operator sign-off
  • Design attention surfaces and queues for human operators

Example prompts for the agent

  • Classify the current slice closeout and check PROGRESS.md before pausing
  • Create a durable human gate item for the provider credential limit decision
  • Handle the approve action from Mission Control and pass execution to the next owner

How to install human-in-the-loop

1Skills CLI (Vercel)

npx skills add mvschwarz/openrig --skill human-in-the-loop -a claude-code

2Manually: put the files in place

~/.claude/skills/human-in-the-loop/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/human-in-the-loop/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about human-in-the-loop

How to install human-in-the-loop in Claude Code?

Run npx skills add mvschwarz/openrig --skill human-in-the-loop -a claude-code. The file will be placed at ~/.claude/skills/human-in-the-loop/SKILL.md.

What does the human-in-the-loop skill do?

It manages decision routing between agents and humans. The system routes real blockers into a dedicated attention queue while letting routine slices continue without manufactured delays.

What actions can an operator take on an escalated item?

The Mission Control implementation provides seven verbs: approve, deny, route, annotate, hold, drop, and handoff. Calling approve wakes the next runner, while handoff creates a new durable queue item.

Source text

SKILL.md · Apache-2.0
---
name: human-in-the-loop
description: Use when classifying a slice closeout (auto-continue / human gate / park), routing a real decision to a human, or designing a human queue/dashboard surface. Treats humans as durable network participants with attention surfaces, queues, and decision records — escalation lands as a durable attention item, not a chat message. Approval is NOT required for every clean closeout; the default RSI conveyor continues unless an explicit human gate is reached.
metadata:
  openrig:
    stage: factory-approved
    sibling_skills:
      - queue-handoff
      - workflow-runtime
      - watchdog
      - refocus
      - looping-workflows
      - intake-routing
      - attention-queue
      - dispatching-parallel-agents
      - subagent-driven-development
      - control-plane-capabilities
      - status-not-chat-orchestrator
      - control-plane-queue
      - control-plane-watchdog
      - control-plane-workflows
      - control-plane-delivery-loop
      - control-plane-rollout-manager
---

# Human In The Loop

The primitive that treats humans as **durable network participants** —
attention surfaces, queues, decision records, routing semantics — not
as ad-hoc chat receivers.

**Autonomy is not the absence of humans; it is knowing when human
judgment is needed and making that handoff crisp.**

## Use this when

- A slice closeout needs classifying: auto-continue, human gate, or park
- A real decision needs to land in front of a human (usage limits, provider auth, roadmap tradeoff, product-intent ambiguity)
- Designing a human queue/dashboard surface
- Returning a hot potato to orchestration after human approval

## Don't use this when

- The slice closeout is clean and `PROGRESS.md` already names the next safe slice. **Default RSI conveyor continues; do NOT manufacture a human gate.**
- The escalation is just a status update. Humans are participants for *decisions*, not narration.
- The next owner is another agent. Use queue-handoff, not human-in-the-loop.

## The 3-class closeout classification

In a productized daemon-backed version, closeout classifies the next
step BEFORE touching the human queue:

| Class | When | Action |
|---|---|---|
| **auto-continue** | Slice closes cleanly, next named slice in workstream plan | Mark closed; create next-owner qitem from plan |
| **human gate** | Genuine decision needed (usage limits, provider auth, product-intent ambiguity, roadmap tradeoff) | Create human queue item with proof + decision text + recommended default + action outcomes |
| **park** | Intentionally stop the conveyor (e.g., waiting on external) | Stop with reason + resumption path |

## Failure modes (5)

1. **Human decision needed, but the rig only mentions it in chat.** Decisions belong as durable attention items, not chat messages.
2. **Human queue item lacks enough plain-English context for a decision.** Include proof + decision text + recommended default + action outcomes.
3. **Human response updates a file but does not wake the next owner.** Approval should return the hot potato; feedback should create the next durable qitem.
4. **The dashboard shows too much raw rig state and hides the actual decision queue.** Decision queue is the primary surface; rig state is secondary.
5. **A clean closeout is parked on the human even though `PROGRESS.md` already names the next safe slice.** Don't manufacture human gates.

## Proof standard (both paths)

A trustworthy human-in-the-loop system proves both directions:

- **Blocking gate path**: real item routed to human → human decision recorded through UI → resulting hot-potato handoff wakes correct next owner
- **Non-blocking closeout path**: proof inspectable by human, but orchestrator continues to next named slice without manufacturing a human gate

A primitive that only wakes humans is not trustworthy. It must also know when NOT to.

## Product shape (SHIPPED — Mission Control, PL-005)

This surface has shipped as **Mission Control** (product UI, `/mission-control`
route; actions via `POST /api/mission-control/action`). The seven verbs the
human acts with:
- **approve** (returns the hot potato to orchestration or the chosen owner)
- **deny** (reject the item)
- **route** (send to a different owner)
- **annotate** (add context without action)
- **hold** (intentional pause with reason)
- **drop** (mark not-actionable)
- **handoff** (hand to a specific next owner — creates the next durable qitem)

**Approval returns the hot potato to orchestration or the chosen owner;
feedback creates the next durable qitem rather than only mutating the source
queue file** — enforced by the shipped verbs (handoff/route create qitems).
See `docs/as-built/architecture/mission-control.md`.

## Long-term shape

Likely needs **multiple humans with different scopes**, not a singleton
human attention feed. Different humans own different decision
domains; queue items route by scope.

## See also

- `queue-handoff` skill — durable handoff via queue items; human-in-the-loop is the human-side complement
- `watchdog` skill — when to wake (humans included) vs no-op
- `looping-workflows` (convention) — the looping-workflows convention covers loop closeouts; human-in-the-loop is the escape hatch

© mvschwarz · Apache-2.0 · mvschwarz/openrig

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set49

openrig-skills This skill helps an agent in OpenRig find the right context for a handover, debugging, or recovery task. It also shows how to locate and load other skills with rig. CX Codex +1 ★ 8,227repo stars openrig-cmux Renders OpenRig agent fleets, missions, and pods into live cmux terminal tiles. Helpful when monitoring running agents without disrupting active sessions. CX Codex +1 ★ 8,227repo stars openrig-architect This skill helps plan an OpenRig agent team, write its specs and startup guidance, and investigate agents that behave differently from their intended roles. CX Codex +1 ★ 8,227repo stars messaging-the-human This skill covers the mechanics of an agent messaging a human through rig: filing a decision request or a quiet update, then handling the reply. CX Codex +1 ★ 8,227repo stars cross-host-rig-commands This skill explains how to route OpenRig commands to registered remote hosts and interpret their results. Use it when checking transport setup or diagnosing a failed remote operation. CX Codex +1 ★ 8,227repo stars agent-startup-and-context-ingestion A skill for anyone writing an agent's startup files: it covers the four failure modes of startup context and how a seat picks up its role and current operating mode. CX Codex +1 ★ 8,227repo stars agent-starters Defines and tracks agent starting points by packaging roles, context, and session provenance without copying secrets or VM images. CX Codex +1 ★ 8,227repo stars rigs Set up OpenRig and hand a coding task to its agent team. The skill is for projects where you want Claude Code and Codex agents working side by side. CX Codex +1 ★ 8,227repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor