[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71SQCSGW1BKJ6MQ14XH2T10":3,"skill-same:01M71SQCSGW1BKJ6MQ14XH2T10":68},{"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":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":49,"ownerHtmlUrl":50,"ownerBlogUrl":51,"ownerDescription":52,"updatedAt":53,"install":54,"resources":67},"01M71SQCSGW1BKJ6MQ14XH2T10","gates",null,"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","HigorAlves\u002Forc","HigorAlves","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F11262976?v=4","01M71S79EZEMHZ8PQSV0XQJHYY","Higor Alves","01M71S79FKKTCHCN1EDR8DSTWQ",7,"MIT","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fgates\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"as","channel","conventions","gate","ladder","about","first","rewrite","use","for","chunking","canonical","tagged","options","notes","preview","when","auto","render","2026-11-10 13:02:02",false,"---\nname: gates\ndescription: 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\nwhen_to_use: Use when about to render an orc gate.\n---\n\n# Gates\n\nEvery orc gate is ONE `AskUserQuestion` call shaped by these rules. The gate classes themselves (hard-outward \u002F soft-inward \u002F 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.\n\n## 1. Header chip = gate class\n\nThe `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:\n\n| Class | Chips | Rule |\n|---|---|---|\n| Hard-outward | `Publish` (evidence \u002F artifact upload) · `Post` (PR review, replies, comments) · `Tracker` (issue \u002F Jira writes) | Always asks — no flag, policy, or settled decision skips it. Name the exact target (repo, PR #, ticket key) in the question. |\n| Escalation-only | `Escalation` | Never asked proactively; stops the run at every policy level. |\n| Soft-inward | Free, short noun: `Plan`, `Driver`, `PR size`, `Compose`, `Next step`, … | Never reuse an outward or escalation chip. |\n\n## 2. Options\n\n- 2–4 options. Never add an \"Other\" option — the widget always provides free text.\n- Recommended option **first**, label suffixed `(Recommended)`. Exactly one, or none when there is no defensible default.\n- Each `description` states the consequence (\"pushes to origin\", \"posts 6 comments to #123\"), not a restatement of the label.\n- A destructive or outward option names its target in the label or description.\n\n## 3. `preview` for preview-then-confirm\n\nWhen the user approves a payload (PR body, review comments, upload manifest, slice table, stack split, Jira tree):\n\n- Put the payload in the option's `preview` field (markdown, monospace) — single-select only. Alternatives render side by side: give each variant its own option + preview (e.g. caveman vs full PR body).\n- The `📋 Preview` callout stays as a one-line headline; do not also print the full payload in a fence — one rendering.\n- Payload over ~60 lines: write it to `${ORC_STATE_DIR}\u002F\u003Cbranch>\u002Ffiles\u002F` and preview the head plus the path.\n- No `AskUserQuestion` available (headless): print the callout + fenced payload, then stop for a plain-text answer. Hard-outward gates still never auto-proceed.\n\n## 4. Picking items: `multiSelect` chunks\n\nTo drop \u002F keep items from a numbered list (replies, comments, slices):\n\n- `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.\n- Never one question per item; never more than one extra round trip to apply edits.\n\n## 5. Rewrites ride the notes\n\nEdits to an item travel in the selection's **notes** annotation, one per line: `\u003Cn>: \u003Cnew 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.\n\n## 6. Autopilot ladder (`--auto[=guided|full]`)\n\nCommands 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`.\n\n- `manual` (default) — every soft-inward gate asks.\n- `guided` — mechanical confirms auto-advance with a printed one-liner (`➡️ auto: \u003Cchoice> — guided`); judgment calls still ask.\n- `full` (bare `--auto`) — soft-inward gates resolve from settled decisions; the run stops only on escalation-only conditions.\n- 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\").\n- An escalation-only stop during a `full` run is the moment an unattended user must hear about: send a `PushNotification` (when the tool is available) naming the phase and the blocker, then ask.\n\n## 7. Batching\n\nOne 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.\n","# Gates\n\nEvery orc gate is ONE `AskUserQuestion` call shaped by these rules. The gate classes themselves (hard-outward \u002F soft-inward \u002F 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.\n\n## 1. Header chip = gate class\n\nThe `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:\n\n| Class | Chips | Rule |\n|---|---|---|\n| Hard-outward | `Publish` (evidence \u002F artifact upload) · `Post` (PR review, replies, comments) · `Tracker` (issue \u002F Jira writes) | Always asks — no flag, policy, or settled decision skips it. Name the exact target (repo, PR #, ticket key) in the question. |\n| Escalation-only | `Escalation` | Never asked proactively; stops the run at every policy level. |\n| Soft-inward | Free, short noun: `Plan`, `Driver`, `PR size`, `Compose`, `Next step`, … | Never reuse an outward or escalation chip. |\n\n## 2. Options\n\n- 2–4 options. Never add an \"Other\" option — the widget always provides free text.\n- Recommended option **first**, label suffixed `(Recommended)`. Exactly one, or none when there is no defensible default.\n- Each `description` states the consequence (\"pushes to origin\", \"posts 6 comments to #123\"), not a restatement of the label.\n- A destructive or outward option names its target in the label or description.\n\n## 3. `preview` for preview-then-confirm\n\nWhen the user approves a payload (PR body, review comments, upload manifest, slice table, stack split, Jira tree):\n\n- Put the payload in the option's `preview` field (markdown, monospace) — single-select only. Alternatives render side by side: give each variant its own option + preview (e.g. caveman vs full PR body).\n- The `📋 Preview` callout stays as a one-line headline; do not also print the full payload in a fence — one rendering.\n- Payload over ~60 lines: write it to `${ORC_STATE_DIR}\u002F\u003Cbranch>\u002Ffiles\u002F` and preview the head plus the path.\n- No `AskUserQuestion` available (headless): print the callout + fenced payload, then stop for a plain-text answer. Hard-outward gates still never auto-proceed.\n\n## 4. Picking items: `multiSelect` chunks\n\nTo drop \u002F keep items from a numbered list (replies, comments, slices):\n\n- `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.\n- Never one question per item; never more than one extra round trip to apply edits.\n\n## 5. Rewrites ride the notes\n\nEdits to an item travel in the selection's **notes** annotation, one per line: `\u003Cn>: \u003Cnew 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.\n\n## 6. Autopilot ladder (`--auto[=guided|full]`)\n\nCommands 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`.\n\n- `manual` (default) — every soft-inward gate asks.\n- `guided` — mechanical confirms auto-advance with a printed one-liner (`➡️ auto: \u003Cchoice> — guided`); judgment calls still ask.\n- `full` (bare `--auto`) — soft-inward gates resolve from settled decisions; the run stops only on escalation-only conditions.\n- 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\").\n- An escalation-only stop during a `full` run is the moment an unattended user must hear about: send a `PushNotification` (when the tool is available) naming the phase and the blocker, then ask.\n\n## 7. Batching\n\nOne 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.\n",{"name":5,"description":7,"when_to_use":43},"Use when about to render an orc gate.","main","7522fd7266944e30052204c2f6df287d8b5516be","orc\u002Fskills\u002Fgates",0,"https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc","https:\u002F\u002Forc.novacstack.com\u002F","https:\u002F\u002Fgithub.com\u002FHigorAlves","higoralves.dev","Software Engineering","2026-11-07 07:26:38",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add HigorAlves\u002Forc --skill gates",{"tool":60,"command":61},"bunx","bunx skills add HigorAlves\u002Forc --skill gates",{"tool":63,"command":64},"pnpm","pnpm dlx skills add HigorAlves\u002Forc --skill gates","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fgates\u002FSKILL.md",true,[],[69,106,132,152,174,194],{"skillNo":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":88,"publishedAt":38},"01M71SW40F9TAAEDKBYYBCM814","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","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fwriting-plans\u002FSKILL.md",[75,80,85],{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":86,"categoryName":87,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000036","内容创作者",[89,90,91,92,93,94,95,35,96,97,98,99,100,101,102,103,104,28,105,27],"writing","writing plans","plans","engineer","superpowers","implementation plan","files","you","code","tasks","verification","plan","write","steps","context","ZeRO","tests",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":117,"publishedAt":38},"01M71SW15KHE4MHJW9NEXV65X2","writing-for-agents","orc's doctrine layer for writing any document an agent consumes — skills, AGENTS.md\u002FCLAUDE.md, reference docs","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fwriting-for-agents\u002FSKILL.md",[112,113,116],{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},{"categoryNo":114,"categoryName":115,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":86,"categoryName":87,"taxonomyType":83,"taxonomyTypeDesc":84},[118,89,28,119,35,120,121,122,123,124,125,126,27,127,128,129,130,131],"writing for agents","matt pocock","inline","tuning","a skill","layer","doctrine","push","editing","document","github","https","reference","docs",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":139,"publishedAt":38},"01M71SVYQKXT743HHHWGHT3G13","workspace-mode","Use when cwd is a parent dir holding multiple sibling git repos — defines repo auto-detection, --repos\u002F--repo\u002F--all-repos\u002F--this-repo precedence, per-repo dispatch, and linked-PR mechanics.","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fworkspace-mode\u002FSKILL.md",[138],{"categoryNo":114,"categoryName":115,"taxonomyType":78,"taxonomyTypeDesc":79},[140,141,142,143,36,35,144,145,146,147,27,148,149,150,151],"workspace mode","mode","workspace","mechanics","repos","git","pr","repo","dispatch","auto-detection","detection","parent",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":159,"publishedAt":38},"01M71SVVP3BXS06G9395P2K0RH","wizard","Generate an interactive bash wizard walking a human through work only they can perform — credentials, secrets, one-off migrations","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fwizard\u002FSKILL.md",[158],{"categoryNo":114,"categoryName":115,"taxonomyType":78,"taxonomyTypeDesc":79},[154,160,161,162,163,119,35,164,165,166,167,168,169,102,170,171,28,27,172,173],"condition","never","provisioning infrastructure","only","Bash","work","credentials","generate","human","secrets","infrastructure","do","one","interactive",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":180,"publishedAt":38},"01M71SVT4AR6NKAM5B077E7QSJ","wait-what","Stop and re-pitch — the last message did not land; say it again simply, in the project's own vocabulary.","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fwait-what\u002FSKILL.md",[],[181,182,183,184,185,119,186,187,188,189,128,129,190,191,192,193],"wait what","wait","project","re","true","pitch","last","say","message","land","it","stop","vocabulary",{"skillNo":195,"name":196,"nameZh":6,"description":197,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":198,"categories":199,"keywords":204,"publishedAt":38},"01M71SVQVYRA9QBQ6G8MWR8G6F","vitest","Vitest fast unit testing framework powered by Vite with Jest-compatible API","https:\u002F\u002Fgithub.com\u002FHigorAlves\u002Forc\u002Fblob\u002Fmain\u002Forc\u002Fskills\u002Fvitest\u002FSKILL.md",[200,203],{"categoryNo":201,"categoryName":202,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},[196,205,206,207,208,209,89,35,210,211,212,213,214,215,216,217,218,219,105,220],"coverage","unit","testing","testing framework","generated","api","jest","2026","at","scripts","unit testing","antfu","framework","vite","mocking","dev"]