gates
The canonical AskUserQuestion conventions for every orc gate — class-tagged header chips, Recommended-first options, side-by-side `preview` for preview-then-confirm, multiSelect chunking, notes as the rewrite channel, and the --auto ladder
- License 许可
- MIT
- 所属仓库
- HigorAlves/orc
- 最近更新
- 2026-11-07
- Stars
- ★ 7
- Forks
- 0
01 前言 Front Matter
- name
- gates
- description
- The canonical AskUserQuestion conventions for every orc gate — class-tagged header chips, Recommended-first options, side-by-side `preview` for preview-then-confirm, multiSelect chunking, notes as the rewrite channel, and the --auto ladder
- when_to_use
- Use when about to render an orc gate.
03 SKILL.md 正文
Gates
Every orc gate is ONE AskUserQuestion call shaped by these rules. The gate classes themselves (hard-outward / soft-inward / escalation-only) are defined in orc:using-orc; the 1–3 line context block before the call is the ⛔ Gate callout from orc:callouts. Options never go inside the callout — the question widget renders them.
1. Header chip = gate class
The header chip (≤12 chars) tells the user what kind of decision this is. Hard-outward and escalation gates use a closed vocabulary, so the class is readable at a glance — and the orc mod reads it to draw a gate badge above the dialog:
| Class | Chips | Rule |
|---|---|---|
| Hard-outward | Publish (evidence / artifact upload) · Post (PR review, replies, comments) · Tracker (issue / Jira writes) |
Always asks — no flag, policy, or settled decision skips it. Name the exact target (repo, PR #, ticket key) in the question. |
| Escalation-only | Escalation |
Never asked proactively; stops the run at every policy level. |
| Soft-inward | Free, short noun: Plan, Driver, PR size, Compose, Next step, … |
Never reuse an outward or escalation chip. |
2. Options
- 2–4 options. Never add an "Other" option — the widget always provides free text.
- Recommended option first, label suffixed
(Recommended). Exactly one, or none when there is no defensible default. - Each
descriptionstates the consequence ("pushes to origin", "posts 6 comments to #123"), not a restatement of the label. - A destructive or outward option names its target in the label or description.
3. preview for preview-then-confirm
When the user approves a payload (PR body, review comments, upload manifest, slice table, stack split, Jira tree):
- Put the payload in the option's
previewfield (markdown, monospace) — single-select only. Alternatives render side by side: give each variant its own option + preview (e.g. caveman vs full PR body). - The
📋 Previewcallout stays as a one-line headline; do not also print the full payload in a fence — one rendering. - Payload over ~60 lines: write it to
${ORC_STATE_DIR}/<branch>/files/and preview the head plus the path. - No
AskUserQuestionavailable (headless): print the callout + fenced payload, then stop for a plain-text answer. Hard-outward gates still never auto-proceed.
4. Picking items: multiSelect chunks
To drop / keep items from a numbered list (replies, comments, slices):
multiSelect: true, one question per chunk of 4 items ("Drop which of comments 1–4?"), up to 4 questions in the same call (16 items max). Default = keep all.- Never one question per item; never more than one extra round trip to apply edits.
5. Rewrites ride the notes
Edits to an item travel in the selection's notes annotation, one per line: <n>: <new text>. The free-text answer is accepted as a fallback in the same shape. Edited payloads re-render once in a final preview before anything outward happens.
6. Autopilot ladder (--auto[=guided|full])
Commands that take --auto point here instead of restating it. The flag overrides the interaction_policy userConfig; resolution and the settled-decisions store live in orc:state-protocol.
manual(default) — every soft-inward gate asks.guided— mechanical confirms auto-advance with a printed one-liner (➡️ auto: <choice> — guided); judgment calls still ask.full(bare--auto) — soft-inward gates resolve from settled decisions; the run stops only on escalation-only conditions.- Hard-outward gates are unaffected at every level. Auto never picks an option that writes outward or overrides a budget (e.g. never "Open as one big PR").
- An escalation-only stop during a
fullrun is the moment an unattended user must hear about: send aPushNotification(when the tool is available) naming the phase and the blocker, then ask.
7. Batching
One decision point = one AskUserQuestion call, up to 4 questions. Ask everything that's answerable now in that call; don't serialize questions the user could answer together.
04 同仓库更多 Skills
writing-plans
Write a comprehensive implementation plan of bite-sized TDD tasks that an engineer with zero codebase context could execute — exact files, code, tests, and verification steps
writing-for-agents
orc's doctrine layer for writing any document an agent consumes — skills, AGENTS.md/CLAUDE.md, reference docs
workspace-mode
Use when cwd is a parent dir holding multiple sibling git repos — defines repo auto-detection, --repos/--repo/--all-repos/--this-repo precedence, per-repo dispatch, and linked-PR mechanics.
wizard
Generate an interactive bash wizard walking a human through work only they can perform — credentials, secrets, one-off migrations
wait-what
Stop and re-pitch — the last message did not land; say it again simply, in the project's own vocabulary.
vitest
Vitest fast unit testing framework powered by Vite with Jest-compatible API