← ClaudeAtlas

gate-protocollisted

Use when a gated pane or wrapper needs to publish a human decision point and carry it to an answer -- opening the daemon's gate registry, presenting the in-pane form, blocking in gate wait, handling a CAS rejection, or reconciling a doorbell push. Not for direct invocation; a gated verb includes this part.
m4ttstack/skills · ★ 0 · AI & Automation · score 75
Install: claude install-skill m4ttstack/skills
# Gate protocol One shared protocol for any gated pane or wrapper: publish first, then branch on attendance. The daemon's gate registry (`rt gate ...`) is the single arbiter; no per-verb conflict logic belongs anywhere downstream of it. ## Publish Open before anything that depends on the answer: `rt gate open --subject <s> --kind <k> --questions <json> [--meta <json>] [--agent <id>] [--pane <id>] [--nudge <spec>]`. Opening on a subject that already carries an open gate of the same kind supersedes the old one, so a relaunch after a crash is safe without a separate cleanup step. After open, branch on attendance below. ## Attendance Attendance comes from the invocation context, never from asking: the spawning surface says so (`--spawned-by`), and a human-run verb defaults to attended. ## Attended (a human's interactive session; default for a human-invoked verb) 1. Present the normal in-pane structured form -- the in-pane experience does not change. When the gate carries more questions than one form call fits, chunk the forms, but submit exactly ONE `rt gate answer <id> --answers <json> --by pane` after the last chunk. A CAS rejection at that point discards every chunk's answer together, not just the last one. 2. Form answered: `rt gate answer <id> --answers <json> --by pane`. If the CAS reports an earlier answer, discard the form's answer, say in the pane in one line which answer won and from where, and proceed on the recorded one -- the rejection pay