[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7DM9QF9C8849D5YPCWNKXCC":3,"skill-same:01M7DM9QF9C8849D5YPCWNKXCC":67},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":50,"ownerDescription":51,"updatedAt":52,"install":53,"resources":66},"01M7DM9QF9C8849D5YPCWNKXCC","human-in-the-loop",null,"Use when classifying a slice closeout (auto-continue \u002F human gate \u002F park), routing a real decision to a human, or designing a human queue\u002Fdashboard 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.","mvschwarz\u002Fopenrig-world","mvschwarz","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F171890339?v=4","01M7DM95A4N5936P8G2FTSPMY7","Mike Schwarz","01M7DM95AX80NY8HZA7XXDYAZR",16,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fmvschwarz\u002Fopenrig-world\u002Fblob\u002Fmain\u002Fagents\u002Fshared\u002Fskills\u002Fcore\u002Fhuman-in-the-loop\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: human-in-the-loop\ndescription: Use when classifying a slice closeout (auto-continue \u002F human gate \u002F park), routing a real decision to a human, or designing a human queue\u002Fdashboard 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.\nmetadata:\n  openrig:\n    stage: factory-approved\n    sibling_skills:\n      - queue-handoff\n      - workflow-runtime\n      - watchdog\n      - refocus\n      - looping-workflows\n      - intake-routing\n      - attention-queue\n      - dispatching-parallel-agents\n      - subagent-driven-development\n      - control-plane-capabilities\n      - status-not-chat-orchestrator\n      - control-plane-queue\n      - control-plane-watchdog\n      - control-plane-workflows\n      - control-plane-delivery-loop\n      - control-plane-rollout-manager\n---\n\n# Human In The Loop\n\nThe primitive that treats humans as **durable network participants** —\nattention surfaces, queues, decision records, routing semantics — not\nas ad-hoc chat receivers.\n\n**Autonomy is not the absence of humans; it is knowing when human\njudgment is needed and making that handoff crisp.**\n\n## Use this when\n\n- A slice closeout needs classifying: auto-continue, human gate, or park\n- A real decision needs to land in front of a human (usage limits, provider auth, roadmap tradeoff, product-intent ambiguity)\n- Designing a human queue\u002Fdashboard surface\n- Returning a hot potato to orchestration after human approval\n\n## Don't use this when\n\n- The slice closeout is clean and `PROGRESS.md` already names the next safe slice. **Default RSI conveyor continues; do NOT manufacture a human gate.**\n- The escalation is just a status update. Humans are participants for *decisions*, not narration.\n- The next owner is another agent. Use queue-handoff, not human-in-the-loop.\n\n## The 3-class closeout classification\n\nIn a productized daemon-backed version, closeout classifies the next\nstep BEFORE touching the human queue:\n\n| Class | When | Action |\n|---|---|---|\n| **auto-continue** | Slice closes cleanly, next named slice in workstream plan | Mark closed; create next-owner qitem from plan |\n| **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 |\n| **park** | Intentionally stop the conveyor (e.g., waiting on external) | Stop with reason + resumption path |\n\n## Failure modes (5)\n\n1. **Human decision needed, but the rig only mentions it in chat.** Decisions belong as durable attention items, not chat messages.\n2. **Human queue item lacks enough plain-English context for a decision.** Include proof + decision text + recommended default + action outcomes.\n3. **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.\n4. **The dashboard shows too much raw rig state and hides the actual decision queue.** Decision queue is the primary surface; rig state is secondary.\n5. **A clean closeout is parked on the human even though `PROGRESS.md` already names the next safe slice.** Don't manufacture human gates.\n\n## Proof standard (both paths)\n\nA trustworthy human-in-the-loop system proves both directions:\n\n- **Blocking gate path**: real item routed to human → human decision recorded through UI → resulting hot-potato handoff wakes correct next owner\n- **Non-blocking closeout path**: proof inspectable by human, but orchestrator continues to next named slice without manufacturing a human gate\n\nA primitive that only wakes humans is not trustworthy. It must also know when NOT to.\n\n## Product shape (SHIPPED — Mission Control, PL-005)\n\nThis surface has shipped as **Mission Control** (product UI, `\u002Fmission-control`\nroute; actions via `POST \u002Fapi\u002Fmission-control\u002Faction`). The seven verbs the\nhuman acts with:\n- **approve** (returns the hot potato to orchestration or the chosen owner)\n- **deny** (reject the item)\n- **route** (send to a different owner)\n- **annotate** (add context without action)\n- **hold** (intentional pause with reason)\n- **drop** (mark not-actionable)\n- **handoff** (hand to a specific next owner — creates the next durable qitem)\n\n**Approval returns the hot potato to orchestration or the chosen owner;\nfeedback creates the next durable qitem rather than only mutating the source\nqueue file** — enforced by the shipped verbs (handoff\u002Froute create qitems).\nSee `docs\u002Fas-built\u002Farchitecture\u002Fmission-control.md`.\n\n## Long-term shape\n\nLikely needs **multiple humans with different scopes**, not a singleton\nhuman attention feed. Different humans own different decision\ndomains; queue items route by scope.\n\n## See also\n\n- `queue-handoff` skill — durable handoff via queue items; human-in-the-loop is the human-side complement\n- `watchdog` skill — when to wake (humans included) vs no-op\n- `looping-workflows` (convention) — the looping-workflows convention covers loop closeouts; human-in-the-loop is the escape hatch\n","# Human In The Loop\n\nThe primitive that treats humans as **durable network participants** —\nattention surfaces, queues, decision records, routing semantics — not\nas ad-hoc chat receivers.\n\n**Autonomy is not the absence of humans; it is knowing when human\njudgment is needed and making that handoff crisp.**\n\n## Use this when\n\n- A slice closeout needs classifying: auto-continue, human gate, or park\n- A real decision needs to land in front of a human (usage limits, provider auth, roadmap tradeoff, product-intent ambiguity)\n- Designing a human queue\u002Fdashboard surface\n- Returning a hot potato to orchestration after human approval\n\n## Don't use this when\n\n- The slice closeout is clean and `PROGRESS.md` already names the next safe slice. **Default RSI conveyor continues; do NOT manufacture a human gate.**\n- The escalation is just a status update. Humans are participants for *decisions*, not narration.\n- The next owner is another agent. Use queue-handoff, not human-in-the-loop.\n\n## The 3-class closeout classification\n\nIn a productized daemon-backed version, closeout classifies the next\nstep BEFORE touching the human queue:\n\n| Class | When | Action |\n|---|---|---|\n| **auto-continue** | Slice closes cleanly, next named slice in workstream plan | Mark closed; create next-owner qitem from plan |\n| **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 |\n| **park** | Intentionally stop the conveyor (e.g., waiting on external) | Stop with reason + resumption path |\n\n## Failure modes (5)\n\n1. **Human decision needed, but the rig only mentions it in chat.** Decisions belong as durable attention items, not chat messages.\n2. **Human queue item lacks enough plain-English context for a decision.** Include proof + decision text + recommended default + action outcomes.\n3. **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.\n4. **The dashboard shows too much raw rig state and hides the actual decision queue.** Decision queue is the primary surface; rig state is secondary.\n5. **A clean closeout is parked on the human even though `PROGRESS.md` already names the next safe slice.** Don't manufacture human gates.\n\n## Proof standard (both paths)\n\nA trustworthy human-in-the-loop system proves both directions:\n\n- **Blocking gate path**: real item routed to human → human decision recorded through UI → resulting hot-potato handoff wakes correct next owner\n- **Non-blocking closeout path**: proof inspectable by human, but orchestrator continues to next named slice without manufacturing a human gate\n\nA primitive that only wakes humans is not trustworthy. It must also know when NOT to.\n\n## Product shape (SHIPPED — Mission Control, PL-005)\n\nThis surface has shipped as **Mission Control** (product UI, `\u002Fmission-control`\nroute; actions via `POST \u002Fapi\u002Fmission-control\u002Faction`). The seven verbs the\nhuman acts with:\n- **approve** (returns the hot potato to orchestration or the chosen owner)\n- **deny** (reject the item)\n- **route** (send to a different owner)\n- **annotate** (add context without action)\n- **hold** (intentional pause with reason)\n- **drop** (mark not-actionable)\n- **handoff** (hand to a specific next owner — creates the next durable qitem)\n\n**Approval returns the hot potato to orchestration or the chosen owner;\nfeedback creates the next durable qitem rather than only mutating the source\nqueue file** — enforced by the shipped verbs (handoff\u002Froute create qitems).\nSee `docs\u002Fas-built\u002Farchitecture\u002Fmission-control.md`.\n\n## Long-term shape\n\nLikely needs **multiple humans with different scopes**, not a singleton\nhuman attention feed. Different humans own different decision\ndomains; queue items route by scope.\n\n## See also\n\n- `queue-handoff` skill — durable handoff via queue items; human-in-the-loop is the human-side complement\n- `watchdog` skill — when to wake (humans included) vs no-op\n- `looping-workflows` (convention) — the looping-workflows convention covers loop closeouts; human-in-the-loop is the escape hatch\n",{"name":5,"metadata":24,"description":7},{"openrig":25},{"stage":26,"sibling_skills":27},"factory-approved",[28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"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","main","60438a272b68d091eddb01aad6e399af4996d536","agents\u002Fshared\u002Fskills\u002Fcore\u002Fhuman-in-the-loop",4,"https:\u002F\u002Fgithub.com\u002Fmvschwarz\u002Fopenrig-world","https:\u002F\u002Fgithub.com\u002Fmvschwarz","https:\u002F\u002Fopenrig.dev","Building OpenRig. Running rogue AI civilizations. Debugging their coordination problems.","2026-11-12 13:31:38",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add mvschwarz\u002Fopenrig-world --skill human-in-the-loop",{"tool":59,"command":60},"bunx","bunx skills add mvschwarz\u002Fopenrig-world --skill human-in-the-loop",{"tool":62,"command":63},"pnpm","pnpm dlx skills add mvschwarz\u002Fopenrig-world --skill human-in-the-loop","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmvschwarz\u002Fopenrig-world\u002Fblob\u002Fmain\u002Fagents\u002Fshared\u002Fskills\u002Fcore\u002Fhuman-in-the-loop\u002FSKILL.md",true,[],[68,75,82,89,96,103],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":19},"01M7DMSEDCRREMBJF57RQB59HC","notes","Use when taking notes.","https:\u002F\u002Fgithub.com\u002Fmvschwarz\u002Fopenrig-world\u002Fblob\u002Fmain\u002Ftools\u002Ftest\u002Ffixtures\u002Finstall-verify\u002Fbundle\u002Fagents\u002Fteam\u002Fskills\u002Fnotes\u002FSKILL.md",[],[],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":19},"01M7DMSBZP9WE8MC09JDXFCR2F","software-for-agents","Use when older OpenRig instructions name software-for-agents or describe agent-in-the-middle or studio software under the former skill name.","https:\u002F\u002Fgithub.com\u002Fmvschwarz\u002Fopenrig-world\u002Fblob\u002Fmain\u002Frigs\u002Fworkshop\u002Fagents\u002Fworkshop\u002Fskills\u002Fsoftware-for-agents\u002FSKILL.md",[],[],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":19},"01M7DMS55VHEAGPXMHZJ7FX94R","session-compaction-and-restore","Use when reasoning about what survives compaction\u002Fcontext-loss\u002Frestart\u002Fseat-refresh, designing a high-fidelity restore packet, or distinguishing native runtime resume vs fork vs artifact-backed mental-model rebuild. Covers the 4 failure modes that prevent honest restore (compacted seat drops hot potato; restore packet preserves details but loses product intent; runtime resume mistaken for handover or fork; rebuilt seat starts with stale instructions).","https:\u002F\u002Fgithub.com\u002Fmvschwarz\u002Fopenrig-world\u002Fblob\u002Fmain\u002Frigs\u002Fworkshop\u002Fagents\u002Fworkshop\u002Fskills\u002Fsession-compaction-and-restore\u002FSKILL.md",[],[],{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":19},"01M7DMRYQK0JTV7MMVHFWZ0BW0","seat-continuity-and-handover","Use when replacing a seat's occupant (rebuild\u002Fhandover\u002Fswap), reasoning about stable-seat-identity vs fluid-occupant-identity, choosing an old-occupant disposition (retire\u002Fadvise\u002Fshadow), or recording provenance for an occupant change. Two independent outcomes (continuityOutcome + seatBindingOutcome) and the 5 failure modes that prevent silent dishonesty.","https:\u002F\u002Fgithub.com\u002Fmvschwarz\u002Fopenrig-world\u002Fblob\u002Fmain\u002Frigs\u002Fworkshop\u002Fagents\u002Fworkshop\u002Fskills\u002Fseat-continuity-and-handover\u002FSKILL.md",[],[],{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":19},"01M7DMRP6RRGCJZSH9CE3PC1MY","retiring-and-inheriting-a-seat","Use when you are a sitting agent near your context threshold (~85%) and a PLANNED seat transition is due — retire deliberately and hand your seat to a fresh successor primed from a packet, rather than let compaction degrade you. Covers the handover packet, the append-only lineage ledger (one row per tenure), physical-seat continuity, the do-not-over-inherit framing, the optional warm-handoff window, and wake-v0 (consulting a retired predecessor). NOT for unplanned compaction\u002Fcrash recovery (session-compaction-and-restore \u002F claude-compaction-restore) and NOT the seat-binding primitive mechanics (seat-continuity-and-handover).","https:\u002F\u002Fgithub.com\u002Fmvschwarz\u002Fopenrig-world\u002Fblob\u002Fmain\u002Frigs\u002Fworkshop\u002Fagents\u002Fworkshop\u002Fskills\u002Fretiring-and-inheriting-a-seat\u002FSKILL.md",[],[],{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":19},"01M7DMRJGN6Z8TZDR7JNHXH6KX","refocusing","Use when a long-running agent may have lost the product outcome, when context was compacted, when work has crossed a major boundary, or when a fresh path-based trace is needed before the next consequential action. Not for fresh-session orientation, waking an idle seat, or checkpoints.","https:\u002F\u002Fgithub.com\u002Fmvschwarz\u002Fopenrig-world\u002Fblob\u002Fmain\u002Frigs\u002Fworkshop\u002Fagents\u002Fworkshop\u002Fskills\u002Frefocusing\u002FSKILL.md",[],[]]