/** * Canonical skill definitions shipped with botmux. * * Each skill is a SKILL.md ready to drop into any CLI's skills directory. * Skills here MUST: * - use `botmux ` shell commands (CLI is the canonical interface) * - not depend on MCP tools (which may not be wired on every CLI) * - keep frontmatter minimal — just `name` and `description` for discovery */ export interface SkillDef { /** Filesystem-safe name — becomes the directory name under {skillsDir}/ */ name: string; /** Markdown content including YAML frontmatter */ content: string; } export declare const ASK_SKILL = "---\nname: botmux-ask\ndescription: \u5728\u5F53\u524D\u98DE\u4E66/Lark \u8BDD\u9898\u91CC\u5411\u7528\u6237\u53D1\u8D77\u963B\u585E\u5F0F\u9009\u62E9\u9898\u5E76\u7B49\u5F85\u56DE\u7B54\u3002\u89E6\u53D1\u573A\u666F\uFF1A\u4F60\u9700\u8981\u7528\u6237\u5728\u591A\u4E2A\u660E\u786E\u9009\u9879\u4E2D\u505A\u9009\u62E9\u3001\u786E\u8BA4\u98CE\u9669\u52A8\u4F5C\u3001\u51B3\u5B9A\u7EE7\u7EED/\u56DE\u6EDA/\u4E2D\u6B62\uFF0C\u4E14\u540E\u7EED\u547D\u4EE4\u9700\u8981\u62FF\u5230\u673A\u5668\u53EF\u89E3\u6790\u7684\u7B54\u6848\u3002\u4F7F\u7528 botmux ask buttons\uFF0Cstdout \u53EA\u8FD4\u56DE\u9009\u4E2D\u7684 key\uFF0C\u9002\u5408 shell \u811A\u672C\u548C CLI agent \u7EE7\u7EED\u6267\u884C\u3002\n---\n\n# botmux-ask \u2014 \u963B\u585E\u5F0F\u5411\u7528\u6237\u63D0\u95EE\n\n\u5F53\u4F60\u9700\u8981\u7528\u6237\u5728\u660E\u786E\u9009\u9879\u91CC\u505A\u9009\u62E9\uFF0C\u5E76\u4E14\u540E\u7EED\u6B65\u9AA4\u5FC5\u987B\u7B49\u7528\u6237\u56DE\u7B54\u540E\u624D\u80FD\u7EE7\u7EED\u65F6\uFF0C\u4F7F\u7528 `botmux ask buttons`\u3002\n\n## \u4EC0\u4E48\u65F6\u5019\u7528\n\n- \u53D1\u5E03\u3001\u56DE\u6EDA\u3001\u5220\u9664\u3001\u5199\u6587\u4EF6\u3001\u8C03\u7528\u5916\u90E8 API \u7B49\u98CE\u9669\u52A8\u4F5C\u524D\uFF0C\u9700\u8981\u7528\u6237\u9009\u62E9\n- \u9700\u6C42\u5B58\u5728 2-6 \u4E2A\u6E05\u6670\u5206\u652F\uFF0C\u7EE7\u7EED\u6267\u884C\u524D\u5FC5\u987B\u62FF\u5230\u5176\u4E2D\u4E00\u4E2A key\n- \u4F60\u6B63\u5728 shell / CLI \u91CC\u6267\u884C\u4EFB\u52A1\uFF0C\u9700\u8981\u628A\u7528\u6237\u9009\u62E9\u8D4B\u7ED9\u53D8\u91CF\u7EE7\u7EED\u8DD1\n\n## \u4E0D\u8981\u7528\n\n- \u53EA\u662F\u7ED9\u7528\u6237\u6C47\u62A5\u8FDB\u5C55\uFF1A\u7528 `botmux send`\n- \u9700\u8981\u81EA\u7531\u6587\u672C\u957F\u56DE\u7B54\uFF1Av0.1.7 \u4E0D\u652F\u6301\uFF0C\u5148\u7528 `botmux send` \u95EE\u7528\u6237\n- workflow \u8282\u70B9\u5BA1\u6279\uFF1Aworkflow \u5DF2\u7ECF\u6709 humanGate / decision\uFF0C\u4E0D\u8981\u5957\u4E24\u5C42 ask\n\n## Canonical \u7528\u6CD5\n\n\u5982\u679C\u7528\u6237\u9700\u8981\u770B\u5230\u9009\u62E9\u7ED3\u679C\u6216\u540E\u7EED\u7ED3\u8BBA\uFF0C\u5FC5\u987B\u5728 ask \u8FD4\u56DE\u540E\u663E\u5F0F\u8C03\u7528 `botmux send`\u3002`botmux ask buttons` \u53EA\u8D1F\u8D23\u53D1\u5361\u7247\u3001\u963B\u585E\u7B49\u5F85\u3001\u628A\u9009\u62E9\u5199\u5230\u5F53\u524D shell \u7684 stdout\uFF1B\u5B83**\u4E0D\u4F1A\u81EA\u52A8\u628A stdout \u53D1\u56DE\u98DE\u4E66**\u3002\n\n```bash\nchoice=$(botmux ask buttons --options \"deploy=\u7EE7\u7EED\u53D1\u5E03,rollback=\u56DE\u6EDA,abort=\u4E2D\u6B62\" \"\u7EBF\u4E0A latency \u6DA8\u4E86 30%\uFF0C\u4E0B\u4E00\u6B65\u600E\u4E48\u5904\u7406\uFF1F\")\ncase \"$choice\" in\n deploy) botmux send --mention-back \"\u6536\u5230\u9009\u62E9\uFF1A\u7EE7\u7EED\u53D1\u5E03\uFF0C\u5F00\u59CB\u6267\u884C\u53D1\u5E03\u3002\" ;;\n rollback) botmux send --mention-back \"\u6536\u5230\u9009\u62E9\uFF1A\u56DE\u6EDA\uFF0C\u5F00\u59CB\u6267\u884C\u56DE\u6EDA\u3002\" ;;\n abort) botmux send --mention-back \"\u6536\u5230\u9009\u62E9\uFF1A\u4E2D\u6B62\uFF0C\u672C\u6B21\u64CD\u4F5C\u5DF2\u505C\u6B62\u3002\" ;;\nesac\n```\n\n\u793A\u4F8B\u91CC\u7684 `--mention-back` @ \u7684\u662F**\u672C\u4F1A\u8BDD\u7684\u89E6\u53D1\u8005**\uFF08\u534F\u4F5C bot \u89E6\u53D1\u7684\u4F1A\u8BDD\u4F1A @ \u56DE\u90A3\u4E2A bot\uFF09\uFF0C\u4E0D\u4E00\u5B9A\u662F\u70B9\u6309\u94AE\u7684\u4EBA\u3002\u7ED3\u8BBA\u8981\u53D1\u7ED9\u5B9E\u9645\u70B9\u9009\u7684\u4EBA\u65F6\uFF0C\u7528 `--json` \u6A21\u5F0F\uFF08\u89C1\u4E0B\u6587\uFF09\u4ECE `by` \u5B57\u6BB5\u62FF\u70B9\u9009\u8005 open_id\uFF0C\u518D `botmux send --mention ` \u663E\u5F0F\u70B9\u540D\u3002\n\n`key=label` \u91CC\uFF0C**stdout \u6C38\u8FDC\u8FD4\u56DE key**\uFF0C\u6309\u94AE\u4E0A\u663E\u793A label\u3002\u53EA\u5199 `yes,no` \u65F6 key \u548C label \u76F8\u540C\u3002\n\n\u5982\u679C\u53EA\u8FD0\u884C\u4E0B\u9762\u8FD9\u79CD\u88F8\u547D\u4EE4\uFF1A\n\n```bash\nbotmux ask buttons --options \"yes=\u7EE7\u7EED,no=\u505C\u6B62\" \"\u7EE7\u7EED\u5417\uFF1F\"\n```\n\n\u7528\u6237\u70B9\u9009\u540E\u53EA\u4F1A\u5728\u7EC8\u7AEF stdout \u5F97\u5230 `yes` \u6216 `no`\uFF0C\u98DE\u4E66\u91CC\u4E0D\u4F1A\u81EA\u52A8\u51FA\u73B0\u201C\u6536\u5230\u9009\u62E9\u201D\u3002\u9700\u8981\u7528\u6237\u53EF\u89C1\u56DE\u590D\u65F6\uFF0C\u59CB\u7EC8\u7528 `choice=$(...)` \u63A5\u4F4F\u7ED3\u679C\u5E76\u8DDF\u4E00\u4E2A `botmux send`\u3002\n\n\u517C\u5BB9 alias\uFF1A`botmux ask --options \"yes,no\" \"\u7EE7\u7EED\u5417\uFF1F\"` \u53EF\u4EE5\u7528\uFF0C\u4F46\u6587\u6863\u548C\u65B0\u811A\u672C\u4F18\u5148\u5199 `botmux ask buttons`\uFF0C\u7ED9\u672A\u6765 `ask text` / `ask confirm` \u7559\u7A7A\u95F4\u3002\n\n\u591A\u9009\u52A0 `--multi`\uFF0Cstdout \u8FD4\u56DE\u9017\u53F7\u5206\u9694\u7684 key\uFF1B\u9700\u8981\u5B8C\u6574\u7ED3\u6784\u65F6\u52A0 `--json` \u8BFB\u53D6 `answers[0]`\uFF08\u591A\u9009\u4E0B `selected` \u6052\u4E3A `null`\uFF0C\u56E0\u4E3A\u5B83\u53EA\u8868\u793A\u5355\u95EE\u5355\u9009\u7684\u517C\u5BB9\u503C\uFF09\uFF1A\n\n```bash\nchoices=$(botmux ask buttons --multi --options \"lint=Lint,test=\u6D4B\u8BD5,build=\u6784\u5EFA\" \"\u8981\u6267\u884C\u54EA\u4E9B\u68C0\u67E5\uFF1F\")\n```\n\n## JSON \u8F93\u51FA\n\n```bash\nbotmux ask buttons --json --options \"yes=\u7EE7\u7EED,no=\u505C\u6B62\" \"\u7EE7\u7EED\u6267\u884C\u5417\uFF1F\"\n```\n\nstdout \u4E3A\u4E00\u884C JSON\u3002\u6CE8\u610F\uFF1A`--json` \u8986\u76D6\u6240\u6709\u7ED3\u679C\u7C7B\u578B\uFF1B\u8D85\u65F6 / \u5931\u6548\u65F6\u4E5F\u4F1A\u8F93\u51FA JSON\uFF0C\n\u540C\u65F6\u4FDD\u7559\u975E 0 exit code\u3002\u811A\u672C\u5224\u65AD\u8D85\u65F6\u5FC5\u987B\u770B exit code \u6216 `timedOut` \u5B57\u6BB5\u3002\n\n```json\n{\"selected\":\"yes\",\"answers\":[[\"yes\"]],\"by\":\"ou_xxx\",\"timedOut\":false,\"comment\":null}\n```\n\n## \u9000\u51FA\u7801\u548C stdout \u5951\u7EA6\n\n- \u6210\u529F\uFF1Astdout \u4E00\u884C ``\uFF0Cexit 0\n- `--multi` \u6210\u529F\uFF1Astdout \u4E00\u884C\u9017\u53F7\u5206\u9694\u7684 ``\uFF0Cexit 0\n- `--json`\uFF1Astdout \u4E00\u884C JSON\uFF08\u5305\u62EC\u8D85\u65F6 / \u5931\u6548\uFF09\uFF0Cexit code \u4ECD\u6309\u7ED3\u679C\u8FD4\u56DE\n- \u8D85\u65F6\uFF1A\u9ED8\u8BA4\u6A21\u5F0F stdout \u4E3A\u7A7A\uFF0Cexit 124\uFF1B`--json` \u65F6 `{\"selected\":null,\"timedOut\":true,...}`\n- \u7F3A\u5C11 botmux \u73AF\u5883\u53D8\u91CF / \u53C2\u6570\u9519\u8BEF\uFF1Astdout \u4E3A\u7A7A\uFF0Cexit 2\n- daemon \u4E0D\u53EF\u8FBE\u6216 ask \u88AB daemon restart \u5931\u6548\uFF1A\u9ED8\u8BA4\u6A21\u5F0F stdout \u4E3A\u7A7A\uFF0Cexit 3\uFF1B`--json` \u65F6 `selected:null`\n\n\u6240\u6709\u4EBA\u7C7B\u53EF\u8BFB\u63D0\u793A\u90FD\u5728 stderr\uFF0C\u8C03\u7528\u65B9\u4E0D\u8981 parse stderr\u3002\n\n## \u9009\u9879\u89C4\u5219\n\n- `--options` \u5FC5\u586B\uFF0C\u81F3\u5C11 2 \u9879\uFF0C\u9017\u53F7\u5206\u9694\n- \u63A8\u8350 `key=label`\uFF0Ckey \u7528\u7A33\u5B9A\u82F1\u6587\u77ED\u8BCD\uFF0Clabel \u7ED9\u7528\u6237\u770B\n- `--multi` \u5F00\u542F\u591A\u9009\uFF1B`--json` \u7684 `answers[0]` \u4FDD\u7559\u5B8C\u6574 key \u6570\u7EC4\uFF0C\u4E14 `selected` \u6052\u4E3A `null`\uFF08\u591A\u9009\u4E0D\u8981\u8BFB `selected`\uFF09\n- \u9ED8\u8BA4\u8D85\u65F6 300 \u79D2\uFF0C\u53EF\u7528 `--timeout ` \u8C03\u6574\n"; export declare const WHITEBOARD_SKILL = "---\nname: botmux-whiteboard\ndescription: \u4F7F\u7528 botmux \u672C\u5730\u9879\u76EE\u767D\u677F\u8BFB\u5199\u8DE8 agent \u7684\u9879\u76EE\u6458\u8981\u3001\u5173\u952E\u51B3\u7B56\u3001\u5DF2\u9A8C\u8BC1\u547D\u4EE4\u3001\u963B\u585E\u548C\u4EA4\u63A5\u4FE1\u606F\u3002\u89E6\u53D1\u573A\u666F\uFF1A\u7528\u6237\u8BF4\u767D\u677F\u3001\u4E0A\u4E0B\u6587\u3001\u9879\u76EE\u8BB0\u5FC6\u3001\u8BA9\u5176\u4ED6 agent \u770B\u672C\u5730\u603B\u7ED3\u3001\u957F\u4EFB\u52A1\u65AD\u70B9\u3001\u591A agent \u534F\u4F5C\u3001handoff\u3001\u9700\u8981\u6C89\u6DC0\u4E0D\u9002\u5408\u53D1\u98DE\u4E66\u7684\u5927\u6BB5\u4E0A\u4E0B\u6587\u65F6\u3002\n---\n\n# botmux-whiteboard \u2014 \u672C\u5730\u9879\u76EE\u767D\u677F\n\n\u767D\u677F\u662F\u53EF\u9009\u80FD\u529B\uFF0C\u9ED8\u8BA4\u5173\u95ED\u3002\u5B83\u7528\u4E8E\u4FDD\u5B58\u9879\u76EE\u7EA7\u3001\u53EF\u6301\u4E45\u5316\u7684\u6838\u5FC3\u6458\u8981\u77E5\u8BC6\u548C\u672C\u5730 handoff \u4FE1\u606F\uFF1B\u5B83\u4E0D\u662F\u98DE\u4E66\u6D88\u606F\u7684\u66FF\u4EE3\uFF0C\u4E5F\u4E0D\u662F\u5B58\u79D8\u5BC6\u7684\u5730\u65B9\u3002\n\n## \u5148\u5224\u65AD\u662F\u5426\u542F\u7528\n\n```bash\nbotmux whiteboard status\n```\n\n\u5982\u679C\u672A\u542F\u7528\uFF0C\u4E0D\u8981\u5C1D\u8BD5\u9690\u5F0F\u5F00\u542F\uFF1B\u544A\u8BC9\u7528\u6237/dashboard \u7BA1\u7406\u5458\u9700\u8981\u5148\u6253\u5F00\u767D\u677F\u80FD\u529B\u3002\u5173\u95ED\u65F6 CLI/agent \u8BFB\u5199\u4F1A\u62D2\u7EDD\u3002\n\n## \u5F53\u524D\u767D\u677F\n\n```bash\nbotmux whiteboard current\nbotmux whiteboard current --create # \u4EC5\u5728\u7528\u6237\u8981\u6C42\u6216\u4F60\u786E\u5B9E\u9700\u8981\u6C89\u6DC0\u957F\u671F\u4E0A\u4E0B\u6587\u65F6\u4F7F\u7528\nbotmux whiteboard list\n```\n\n\u9ED8\u8BA4\u7ED1\u5B9A key \u662F\u5F53\u524D\u7FA4\u7684 default \u767D\u677F\uFF1B\u4E0D\u6309 bot \u6216 workingDir \u5206\u88C2\u3002\u663E\u5F0F\u521B\u5EFA\u7684\u591A\u767D\u677F\u7528 id/title \u533A\u5206\u3002\n\n## \u8BFB\u53D6\n\n\u5F53\u7528\u6237/\u5176\u4ED6 agent \u8BA9\u4F60\u201C\u770B\u767D\u677F\u201D\u3001\u6216\u4F60\u9700\u8981\u6062\u590D\u9879\u76EE\u72B6\u6001\u65F6\uFF1A\n\n```bash\nbotmux whiteboard read --id # \u8F93\u51FA board.md \u7EAF\u5185\u5BB9\nbotmux whiteboard read --id --json # \u8F93\u51FA { id, updatedAt, content }\n```\n\n\u4E0D\u8981\u5047\u8BBE\u767D\u677F\u6B63\u6587\u5DF2\u7ECF\u5728\u4E0A\u4E0B\u6587\u91CC\uFF1Bprompt \u53EA\u4F1A\u7ED9 id \u548C CLI \u547D\u4EE4\u8BF4\u660E\u3002\n\n`--json` \u540C\u65F6\u8FD4\u56DE\u5185\u5BB9\u4E0E\u8BE5\u7248\u672C\u7684 `updatedAt`\u2014\u2014\u66F4\u65B0\u65F6\u7528\u5B83\u505A\u5E76\u53D1\u51B2\u7A81\u68C0\u6D4B\uFF08\u89C1\u4E0B\uFF09\u3002\n\n## \u5199\u5165\u539F\u5219\n\n\u767D\u677F\u662F**\u5F53\u524D\u9879\u76EE\u7684\u5168\u5C40\u4E0A\u4E0B\u6587\u5FEB\u7167**\uFF1A\u8BB0\u5F55\u9879\u76EE\u76EE\u6807\u3001\u7EC4\u7EC7\u65B9\u5F0F\u3001\u6838\u5FC3\u65B9\u6848\u3001\u5173\u952E\u8FDB\u5C55\u548C\u4E0B\u4E00\u6B65\u3002\u5B83\u4E0D\u662F\u8FC7\u7A0B\u65E5\u5FD7\uFF0C\u4E5F\u4E0D\u662F\u96F6\u6563\u5907\u5FD8\u5F55\u2014\u2014\u4E0D\u8981\u628A\u6BCF\u8F6E\u5BF9\u8BDD/\u547D\u4EE4\u6D41\u6C34\u8BB0\u4E0A\u53BB\u3002\n\n\u9002\u5408\u5199\uFF1A\n- \u9879\u76EE\u76EE\u6807\u3001\u7EC4\u7EC7\u65B9\u5F0F\uFF08\u7FA4/\u767D\u677F/\u534F\u4F5C\u89D2\u8272\u5206\u5DE5\u3001\u9ED8\u8BA4\u767D\u677F\u4E0E\u591A\u767D\u677F\u5173\u7CFB\uFF09\n- \u5F53\u524D\u91C7\u7528\u7684\u6838\u5FC3\u65B9\u6848\u4E0E\u5173\u952E\u8FB9\u754C\uFF08\u542B\u300C\u4E0D\u505A\u4EC0\u4E48 / \u5DF2\u5E9F\u5F03\u4EC0\u4E48\u300D\uFF09\n- \u5173\u952E\u8FDB\u5C55\uFF08\u5DF2\u5B8C\u6210\u3001\u5DF2\u9A8C\u8BC1\u3001\u5F53\u524D\u98CE\u9669/\u963B\u585E\uFF09\n- \u4E0B\u4E00\u6B65\u8BA1\u5212\n- \u9700\u8981\u5176\u4ED6 agent \u63A5\u529B\u65F6\u7684\u5F53\u524D\u72B6\u6001\u8BF4\u660E\n\n\u4E0D\u8981\u5199\uFF1A\u5BC6\u94A5\u3001token\u3001\u4E2A\u4EBA\u9690\u79C1\u3001\u672A\u6388\u6743\u5916\u90E8\u4FE1\u606F\u3001\u5927\u6BB5\u65E0\u7528\u65E5\u5FD7\u3001\u5355\u8F6E\u8FC7\u7A0B\u6D41\u6C34\u3002\n\n\u6BCF\u6B21 update \u90FD\u5148 read \u65E7\u767D\u677F\uFF0C\u878D\u5408\u65B0\u4FE1\u606F\u540E\u6574\u4F53\u91CD\u5199\u4E3A\u4E00\u4EFD\u5B8C\u6574\u7684\u5F53\u524D\u72B6\u6001\uFF0C\u800C\u4E0D\u662F\u53EA\u8FFD\u52A0\u672C\u8F6E\u5C40\u90E8\u4FE1\u606F\u2014\u2014\u767D\u677F\u6C38\u8FDC\u662F\u300C\u5F53\u524D\u5FEB\u7167\u300D\uFF0C\u4E0D\u662F\u7D2F\u52A0\u65E5\u5FD7\u3002\u9ED8\u8BA4\u7528\u4E2D\u6587\u64B0\u5199\uFF0C\u9664\u975E\u7528\u6237\u660E\u786E\u8981\u6C42\u5176\u4ED6\u8BED\u8A00\uFF1B\u4EE3\u7801\u6807\u8BC6\u3001\u547D\u4EE4\u3001\u9519\u8BEF\u4FE1\u606F\u53EF\u4FDD\u7559\u539F\u6587\u3002\n\n### \u5E76\u53D1\u51B2\u7A81\u68C0\u6D4B\uFF08CAS\uFF09\n\n\u767D\u677F\u662F\u6574\u4E2A\u7FA4\u5171\u4EAB\u7684\u5355\u4E00\u5FEB\u7167\uFF0C\u591A\u4E2A agent \u53EF\u80FD\u540C\u65F6\u8BFB\u5199\u3002\u4E3A\u907F\u514D\u540E\u5199\u9759\u9ED8\u8986\u76D6\u5148\u5199\u3001\u4E22\u6389\u5176\u5B83 agent \u7684\u66F4\u65B0\uFF0C\u66F4\u65B0\u65F6\u56DE\u4F20 read \u5230\u7684\u7248\u672C\u53F7\u505A compare-and-set\uFF1A\n\n```bash\n# 1) \u8BFB\u53D6\u5F53\u524D\u5185\u5BB9 + \u7248\u672C\u53F7\nbotmux whiteboard read --id --json\n# \u2192 { \"id\": \"wb_...\", \"updatedAt\": \"2026-06-22T01:23:45.000Z\", \"content\": \"# \u5F53\u524D\u72B6\u6001\\n...\" }\n\n# 2) \u878D\u5408\u540E\u6574\u4F53\u91CD\u5199\uFF0C\u7528 --expected-updated-at \u56DE\u4F20\u521A\u624D\u8BFB\u5230\u7684 updatedAt\nbotmux whiteboard update --id --expected-updated-at 2026-06-22T01:23:45.000Z <<'EOF'\n# \u5F53\u524D\u72B6\u6001\n...\nEOF\n```\n\n- \u82E5\u671F\u95F4\u6CA1\u6709\u5176\u5B83 agent \u6539\u8FC7\u767D\u677F\uFF0C\u5199\u5165\u6210\u529F\uFF0C\u8FD4\u56DE\u65B0\u7684 board\uFF08\u542B\u65B0 updatedAt\uFF09\u3002\n- \u82E5\u62A5 `whiteboard_cas_mismatch`\uFF08exit 2\uFF09\uFF0C\u8BF4\u660E\u6709\u4EBA\u6539\u8FC7\u2014\u2014\u91CD\u65B0 `read --json` \u62FF\u6700\u65B0\u5185\u5BB9\u4E0E updatedAt\uFF0C\u518D\u6B21\u878D\u5408\u91CD\u5199\uFF0C\u4E0D\u8981\u76F4\u63A5\u8986\u76D6\u3002\n- \u4E0D\u4F20 `--expected-updated-at` \u65F6\u9000\u5316\u4E3A\u76F4\u63A5\u8986\u76D6\uFF08\u5411\u540E\u517C\u5BB9\uFF09\uFF0C\u4F46\u63A8\u8350\u6BCF\u6B21 update \u90FD\u5E26\u4E0A\u4EE5\u83B7\u5F97\u51B2\u7A81\u4FDD\u62A4\u3002\n\n\u66F4\u65B0\u5F53\u524D\u72B6\u6001\u7528 update\uFF08\u8986\u76D6 board.md\uFF0C\u4FDD\u6301\u5B83\u662F\u6700\u65B0\u5168\u5C40\u72B6\u6001\uFF09\u3002\u5EFA\u8BAE\u6CBF\u7528\u4EE5\u4E0B\u56FA\u5B9A\u7ED3\u6784\uFF1A\n\n```bash\nbotmux whiteboard update --id <<'EOF'\n# \u5F53\u524D\u72B6\u6001\n\n## \u9879\u76EE\u76EE\u6807\n\n- ...\n\n## \u7EC4\u7EC7\u65B9\u5F0F\n\n- \u7FA4/\u767D\u677F/\u534F\u4F5C\u89D2\u8272\u5982\u4F55\u5206\u5DE5\n- \u5F53\u524D\u9ED8\u8BA4\u767D\u677F/\u591A\u767D\u677F\u5173\u7CFB\n\n## \u6838\u5FC3\u65B9\u6848\n\n- \u5F53\u524D\u91C7\u7528\u7684\u8BBE\u8BA1\u4E0E\u5173\u952E\u8FB9\u754C\n- \u4E0D\u505A\u4EC0\u4E48 / \u5DF2\u5E9F\u5F03\u4EC0\u4E48\n\n## \u5173\u952E\u8FDB\u5C55\n\n- \u5DF2\u5B8C\u6210\n- \u5DF2\u9A8C\u8BC1\n- \u5F53\u524D\u98CE\u9669/\u963B\u585E\n\n## \u4E0B\u4E00\u6B65\n\n- ...\nEOF\n```\n\n`write --yes` \u662F\u4EBA\u5DE5\u5F3A\u5236\u8986\u76D6\u7684\u517C\u5BB9\u547D\u4EE4\uFF1Bagent \u9ED8\u8BA4\u4F7F\u7528 `update`\u3002\n\n## \u98DE\u4E66\u63D0\u793A\n\n\u767D\u677F\u51CF\u5C11\u98DE\u4E66\u566A\u97F3\uFF0C\u4F46\u4E0D\u80FD\u8BA9\u4EBA\u5B8C\u5168\u4E0D\u53EF\u89C1\uFF1A\n- \u9996\u6B21\u521B\u5EFA\u767D\u677F\uFF0C\u6216\u9996\u6B21\u66F4\u65B0\u5173\u952E\u72B6\u6001\u65F6\uFF0C\u7528 `botmux send` \u53D1\u4E00\u53E5\u77ED\u63D0\u793A\uFF1A`\u5DF2\u5EFA\u7ACB/\u66F4\u65B0 whiteboard:\uFF0C\u540E\u7EED\u5173\u952E\u72B6\u6001\u4F1A\u7EF4\u62A4\u5728\u90A3\u91CC\u3002`\n- \u5C0F\u66F4\u65B0\u4E0D\u8981\u6BCF\u6B21\u901A\u77E5\u3002\n- \u9700\u8981\u5176\u4ED6 agent \u63A5\u529B\u65F6\uFF0C\u5728\u98DE\u4E66 @ \u5BF9\u65B9\u5E76\u8BA9\u5B83\u8BFB `whiteboard:`\uFF1B\u4E0D\u8981\u590D\u5236\u5927\u6BB5\u767D\u677F\u5185\u5BB9\u3002\n- \u7528\u6237\u53EF\u89C1\u7ED3\u8BBA\u3001\u9700\u8981\u786E\u8BA4\u7684\u51B3\u7B56\u3001\u6700\u7EC8\u7ED3\u679C\u4ECD\u5FC5\u987B `botmux send`\u3002\n"; export declare const ASK_SKILL_NAME = "botmux-ask"; /** Conditionally-installed skill (like {@link ASK_SKILL_NAME}): kept OUT of * {@link BUILTIN_SKILLS} so it isn't written unconditionally. The whiteboard * feature is off by default, so its skill is only materialised when the * whiteboard is enabled — see `ensureWhiteboardSkill` + the per-spawn call in * worker-pool's `ensureCliSkills`. Disabled → the skill dir is removed so the * agent never sees a skill for a turned-off capability. */ export declare const WHITEBOARD_SKILL_NAME = "botmux-whiteboard"; export declare const BUILTIN_SKILLS: SkillDef[]; /** The v3 Workflow skill family, gated by the machine-wide workflow kill-switch * (`workflow.enabled` / `BOTMUX_WORKFLOW_ENABLED`, see * global-config.ts `isWorkflowFeatureEnabled`). Kept OUT of {@link BUILTIN_SKILLS} * — which is installed/advertised unconditionally — so that when the feature is * disabled these skills are neither written to a CLI's skills dir nor listed in * the prompt catalog (mirrors how the whiteboard skill is conditional). * * `botmux-orchestrate` is deliberately NOT here: it is a separate multi-bot * long-running-orchestration capability, not a v3 workflow, and stays available * regardless of the workflow switch. * * Order matches their historical position in the catalog (right after * `botmux-handoff`) so the ENABLED path renders byte-for-byte as before. */ export declare const WORKFLOW_FEATURE_SKILLS: SkillDef[]; /** Names in {@link WORKFLOW_FEATURE_SKILLS}, for install cleanup + catalog * filtering when the workflow feature is off. */ export declare const WORKFLOW_FEATURE_SKILL_NAMES: string[]; /** Skills that earlier botmux versions installed but no longer ship. The * installer cleans these up so renamed skills don't linger as duplicates * in the CLI's skills directory. */ export declare const RETIRED_SKILL_NAMES: string[]; //# sourceMappingURL=definitions.d.ts.map