[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C6FDYTWQ5PHSF5TTCQ0R5G":3,"skill-same:01M6C6FDYTWQ5PHSF5TTCQ0R5G":81},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":54,"ownerDescription":55,"updatedAt":56,"install":57,"resources":70},"01M6C6FDYTWQ5PHSF5TTCQ0R5G","ao",null,"Control ao, the Allternit agent orchestrator (terminal workspace manager for AI coding agents). Use only when the user explicitly mentions ao or asks to use ao to inspect or control panes, tabs, workspaces, commands, or another agent. Do not use merely because a task could benefit from a background terminal, delegation, or parallel work. Requires HERDR_ENV=1.","Allternit\u002Fallternit-platform","Allternit","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F250397232?v=4","01M6C67T2SPVP033M7REAAHYHX","01M6C67T7CXM1DKVQY8DFAFRB2",1,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ffactory\u002Fpane\u002Fskills\u002Fherdr\u002FSKILL.md",[],[5,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"use","when","for","inspect","env","control","task","do","workspaces","ai coding","only","agent orchestrator","terminal","orchestrator","workspace manager","user","work","workspace","parallel","coding","panes","herdr","delegation","ai coding agents","coding agents","2026-11-10 10:12:30",false,"---\nname: ao\ndescription: \"Control ao, the Allternit agent orchestrator (terminal workspace manager for AI coding agents). Use only when the user explicitly mentions ao or asks to use ao to inspect or control panes, tabs, workspaces, commands, or another agent. Do not use merely because a task could benefit from a background terminal, delegation, or parallel work. Requires HERDR_ENV=1.\"\n---\n\n# ao\n\nao organizes terminals into workspaces, tabs, and panes, recognizes coding agents running inside panes, and exposes the current session through the `ao` CLI.\n\nBefore issuing any control command, verify that this agent is running inside a Factory-managed pane:\n\n```bash\ntest \"${HERDR_ENV:-}\" = 1\n```\n\nIf the check fails, say that you are not running inside the Allternit Factory and stop. Do not inspect or control the focused allternit-factory pane session from outside the Factory.\n\nWhen the check passes, the `ao` binary in `PATH` talks to the current session. Use it to inspect neighboring work, create terminal layout, start agents and commands, read output, and wait for state changes.\n\n## Learn the current CLI\n\nThe installed binary is the authority for command syntax. Start with:\n\n```bash\nallternit-factory pane --help\n```\n\nThen print the relevant command group by running the group without a subcommand:\n\n```bash\nallternit-factory pane agent\nallternit-factory pane pane\nallternit-factory pane workspace\nallternit-factory pane tab\nallternit-factory pane worktree\nallternit-factory pane terminal\nallternit-factory pane notification\nallternit-factory pane integration\nallternit-factory pane session\nallternit-factory pane machine\n```\n\nDo not run bare `ao` for discovery; it launches or attaches the TUI. Do not probe a mutating nested command by omitting arguments. Commands such as `allternit-factory pane workspace create` are valid with defaults and will execute.\n\nMost control commands return JSON. Read identifiers and state from those responses instead of predicting them.\n\n## Understand layout, panes, and agents\n\nChoose the primitive that matches the job:\n\n- Workspace, tab, and pane topology organize terminal locations.\n- Pane commands control raw terminals, shells, tests, servers, input, and output.\n- Agent commands control the recognized coding agent currently occupying a pane.\n\nA pane exists whether or not it contains an agent. `agent start` requires an existing available shell pane and never creates, splits, or moves layout. Use pane commands for ordinary processes. Use agent commands when ao must validate agent identity or interpret `idle`, `working`, `blocked`, `done`, and `unknown` lifecycle states.\n\nAgent commands accept either a unique live agent name or the pane ID currently hosting that agent. They do not accept terminal IDs or bare agent-kind labels. Names must match `[a-z][a-z0-9_-]{0,31}` and be unique among live agents. A name follows the current pane occupant and is cleared when that agent exits, is released, or is replaced.\n\n`idle` and `done` both mean the agent is ready for input. The CLI\u002FAPI uses the server's seen state to distinguish them; explicit focus commands mark the target seen, while reads do not. Each TUI client tracks viewed completions independently, so its Done badge can differ from the CLI or another client's badge. `blocked` means ao recognized an approval or question UI. `unknown` means an agent is present but ao cannot classify it confidently; it does not prove completion.\n\n## Use IDs and caller context\n\nPublic IDs are opaque stable handles:\n\n- workspace: `w1`\n- tab: `w1:t1`\n- pane: `w1:p1`\n\nClosed tab and pane IDs are not reused. A pane moved into another workspace receives a new workspace-qualified pane ID. After `pane move`, continue with `.result.move_result.pane.pane_id` or the live agent name. The old value is reported as `.result.move_result.previous_pane_id`; only the moved process's inherited caller context keeps resolving that old ID, so do not use it as a general agent target.\n\nao injects the caller's context into each managed pane:\n\n```bash\nprintf '%s\\n' \"$HERDR_WORKSPACE_ID\" \"$HERDR_TAB_ID\" \"$HERDR_PANE_ID\"\n```\n\nPrefer `--current` when a pane command should target the calling pane. Omitting a target may use the UI-focused pane, which can belong to the user or another client.\n\nDiscover live state with:\n\n```bash\nallternit-factory pane workspace list\nallternit-factory pane tab list --workspace \"$HERDR_WORKSPACE_ID\"\nallternit-factory pane pane current --current\nallternit-factory pane pane list --workspace \"$HERDR_WORKSPACE_ID\"\nallternit-factory pane agent list\n```\n\nCreation responses expose the IDs to use next. `workspace create` returns `.result.workspace`, `.result.tab`, and `.result.root_pane`. `tab create` returns `.result.tab` and `.result.root_pane`. `pane split` returns the new pane as `.result.pane`.\n\nIDs and live agent names are scoped to one server. Two saved SSH machines can both have `w1:p1` or an agent named `reviewer`. Selecting a machine in the TUI does not retarget commands running in your pane: they still use the inherited session and socket context. Run remote control commands on the intended host with its explicit session, and rediscover IDs there.\n\n`allternit-factory pane machine list` lists saved connection profiles, not a cross-machine pane inventory; add `--json` for scripts. Only add, remove, enable, or disable profiles when the user asks. Removing a profile disconnects the client but does not stop remote sessions. Adding a machine uses the remote default session unless `--remote-session` is explicitly supplied. Setup asks before stopping an incompatible server and defaults to No; do not approve replacement without the user's consent. Experimental handoff is not part of `machine add`.\n\n## Start and coordinate an agent\n\nDefault to a sibling pane in the current tab and the current working directory. Do not create a workspace, tab, worktree, or different cwd unless the user explicitly requests that topology or location.\n\nHonor a direction requested by the user. Otherwise inspect the caller pane:\n\n```bash\nallternit-factory pane pane layout --pane \"$HERDR_PANE_ID\"\n```\n\nSplit a wide pane to the right and a narrow or tall pane down. Avoid repeated same-direction splits that create unusably narrow columns or short rows. Keep the user's focus in the calling pane and explicitly preserve the caller's working directory:\n\n```bash\nallternit-factory pane pane split --current --direction right --cwd \"$PWD\" --no-focus\n```\n\nReplace `right` with `down` when appropriate. Read the new pane ID from `.result.pane.pane_id`.\n\nAn available shell pane must be at its interactive prompt, with the shell itself in the foreground and no foreground command, editor, or agent running. Start a supported agent in that pane with a useful unique name:\n\n```bash\nallternit-factory pane agent start reviewer --kind codex --pane \u003Creturned-pane-id>\n```\n\nUse the kind requested by the user. Run `allternit-factory pane agent` to inspect the installed kind list and options. Pass native agent arguments only after `--`:\n\n```bash\nallternit-factory pane agent start reviewer --kind codex --pane \u003Creturned-pane-id> -- \u003Cagent-args...>\n```\n\nA successful `agent start` returns only after ao detects the expected agent in the same pane and considers it ready for interactive input. If the agent is blocked during startup, the command returns `agent_not_ready` immediately but keeps the name available for `agent read` and `agent send-keys`. Wait until the agent becomes idle before prompting it. Startup defaults to a 30-second timeout.\n\nSubmit work through the agent surface:\n\n```bash\nallternit-factory pane agent prompt reviewer \"Review the current diff and report only actionable findings.\" --wait --timeout 120000\n```\n\n`agent prompt` honors the pane's live bracketed-paste mode and sends text followed by encoded Enter as one ordered submission. It reports successful submission only after both have been written; that alone does not prove the agent started a turn. The submit delay grows with prompt size for Codex on Windows. It rejects an agent already waiting at an approval or question dialog with `agent_blocked` before sending any input. Inspect the blocked UI and ask the user before answering it. For normal agent work, `--wait` is enough: it waits for the first settled `idle`, `done`, or `blocked` state. Do not repeat those defaults with `--until`.\n\nWith `--wait`, a prompt sent from a non-working state must produce observed `working` or `blocked` activity. After submission, ao waits up to five seconds for that activity; unrelated `idle`, `done`, or session changes do not satisfy this gate. It returns `agent_prompt_stalled` if no activity is observed, or `timeout` if the caller's timeout expires first. The caller timeout includes submission time. Without a timeout, the settled-state wait is indefinite after activity is observed. This wait tracks lifecycle state, not an individual turn; if the agent is already working, completion of the active turn may satisfy it.\n\nUse `--until` only for a state-specific workflow, such as waiting for an already-running agent to request input:\n\n```bash\nallternit-factory pane agent wait reviewer --until blocked --timeout 120000\n```\n\nWithout `--until`, standalone `agent wait` uses the same settled-state defaults as `agent prompt --wait`.\n\nUse logical keys for interactive agent UI controls:\n\n```bash\nallternit-factory pane agent send-keys reviewer esc\nallternit-factory pane agent send-keys reviewer ctrl+c\n```\n\nao validates all keys before writing any bytes. Read the result through the resolved agent:\n\n```bash\nallternit-factory pane agent get reviewer\nallternit-factory pane agent read reviewer --source recent-unwrapped --lines 120\n```\n\nIf a wait fails or returns `blocked`, inspect `agent get` and `agent read` before deciding what input to send. A timeout or stalled response does not prove the prompt was never delivered; do not blindly submit it again. Use the pane surface only when raw terminal control is intentional.\n\n## Run an ordinary command in another pane\n\nCreate a sibling pane with the same geometry rule, preserve the caller's working directory, and keep user focus unchanged:\n\n```bash\nallternit-factory pane pane split --current --direction right --cwd \"$PWD\" --no-focus\n```\n\nRead the new pane ID from `.result.pane.pane_id`, then run and inspect the command:\n\n```bash\nallternit-factory pane pane run \u003Creturned-pane-id> \"just test\"\nallternit-factory pane pane wait-output \u003Creturned-pane-id> --match \"test result\" --timeout 120000\nallternit-factory pane pane read \u003Creturned-pane-id> --source recent-unwrapped --lines 120\n```\n\n`pane run` atomically sends command text and Enter. `pane wait-output` searches the selected snapshot immediately, so output that already exists can match. Use `--match \u003Ctext>` for a literal substring or `--regex \u003Cpattern>` for a Rust regular expression. Omitting `--timeout` allows an indefinite wait.\n\nUse the read source that matches the task:\n\n- `visible`: the currently rendered viewport.\n- `recent`: recent rendered output, including soft wraps.\n- `recent-unwrapped`: recent output with soft wraps joined; prefer it for logs and transcripts.\n- `detection`: the plain-text bottom-buffer snapshot used for agent detection.\n\nUse `--format ansi` when colors and terminal styling are evidence. Otherwise use text.\n\n`--lines` asks ao for more rows from the pane's available screen and host scrollback. If increasing it does not reveal more of a completed response, the pane is probably running the agent on the terminal's alternate screen. Rows that leave the alternate screen do not enter ao's host scrollback, so a larger line count cannot recover them.\n\nAfter that failed read, ask the agent to write its complete response as Markdown in a temporary directory and reply only with the file path, then read the file directly. Use this only as a fallback; do not request file output in the initial prompt.\n\n## Safety and coordination rules\n\n- Use `--no-focus` for background work unless the user asked to switch context.\n- Use `--current`, an explicit pane ID, or a unique agent name. Do not rely on another client's focused pane.\n- Parse IDs from JSON responses. Do not derive them from sidebar order or examples.\n- Do not close workspaces, tabs, panes, or sessions you did not create unless the user explicitly asked. `workspace close --group` closes the primary workspace and its linked worktree workspaces; never add it merely to bypass `workspace_group_close_required`.\n- Use `--trust-repository` only after the user has verified the repository. It grants per-request Git trust; it is not a routine retry for a failed worktree command.\n- Client and server versions can differ after an update. Check `allternit-factory pane status` before relying on new server features. A missing method is not permission to stop or upgrade a server.\n- Never run `allternit-factory pane server stop` from an active session unless the user explicitly intends to stop the server and its pane processes.\n- Never kill the main ao process. Use named test sessions for experiments that need an isolated server.\n- CLI server errors are JSON on stderr with exit status 1. CLI syntax errors exit with status 2.\n","# ao\n\nao organizes terminals into workspaces, tabs, and panes, recognizes coding agents running inside panes, and exposes the current session through the `ao` CLI.\n\nBefore issuing any control command, verify that this agent is running inside a Factory-managed pane:\n\n```bash\ntest \"${HERDR_ENV:-}\" = 1\n```\n\nIf the check fails, say that you are not running inside the Allternit Factory and stop. Do not inspect or control the focused allternit-factory pane session from outside the Factory.\n\nWhen the check passes, the `ao` binary in `PATH` talks to the current session. Use it to inspect neighboring work, create terminal layout, start agents and commands, read output, and wait for state changes.\n\n## Learn the current CLI\n\nThe installed binary is the authority for command syntax. Start with:\n\n```bash\nallternit-factory pane --help\n```\n\nThen print the relevant command group by running the group without a subcommand:\n\n```bash\nallternit-factory pane agent\nallternit-factory pane pane\nallternit-factory pane workspace\nallternit-factory pane tab\nallternit-factory pane worktree\nallternit-factory pane terminal\nallternit-factory pane notification\nallternit-factory pane integration\nallternit-factory pane session\nallternit-factory pane machine\n```\n\nDo not run bare `ao` for discovery; it launches or attaches the TUI. Do not probe a mutating nested command by omitting arguments. Commands such as `allternit-factory pane workspace create` are valid with defaults and will execute.\n\nMost control commands return JSON. Read identifiers and state from those responses instead of predicting them.\n\n## Understand layout, panes, and agents\n\nChoose the primitive that matches the job:\n\n- Workspace, tab, and pane topology organize terminal locations.\n- Pane commands control raw terminals, shells, tests, servers, input, and output.\n- Agent commands control the recognized coding agent currently occupying a pane.\n\nA pane exists whether or not it contains an agent. `agent start` requires an existing available shell pane and never creates, splits, or moves layout. Use pane commands for ordinary processes. Use agent commands when ao must validate agent identity or interpret `idle`, `working`, `blocked`, `done`, and `unknown` lifecycle states.\n\nAgent commands accept either a unique live agent name or the pane ID currently hosting that agent. They do not accept terminal IDs or bare agent-kind labels. Names must match `[a-z][a-z0-9_-]{0,31}` and be unique among live agents. A name follows the current pane occupant and is cleared when that agent exits, is released, or is replaced.\n\n`idle` and `done` both mean the agent is ready for input. The CLI\u002FAPI uses the server's seen state to distinguish them; explicit focus commands mark the target seen, while reads do not. Each TUI client tracks viewed completions independently, so its Done badge can differ from the CLI or another client's badge. `blocked` means ao recognized an approval or question UI. `unknown` means an agent is present but ao cannot classify it confidently; it does not prove completion.\n\n## Use IDs and caller context\n\nPublic IDs are opaque stable handles:\n\n- workspace: `w1`\n- tab: `w1:t1`\n- pane: `w1:p1`\n\nClosed tab and pane IDs are not reused. A pane moved into another workspace receives a new workspace-qualified pane ID. After `pane move`, continue with `.result.move_result.pane.pane_id` or the live agent name. The old value is reported as `.result.move_result.previous_pane_id`; only the moved process's inherited caller context keeps resolving that old ID, so do not use it as a general agent target.\n\nao injects the caller's context into each managed pane:\n\n```bash\nprintf '%s\\n' \"$HERDR_WORKSPACE_ID\" \"$HERDR_TAB_ID\" \"$HERDR_PANE_ID\"\n```\n\nPrefer `--current` when a pane command should target the calling pane. Omitting a target may use the UI-focused pane, which can belong to the user or another client.\n\nDiscover live state with:\n\n```bash\nallternit-factory pane workspace list\nallternit-factory pane tab list --workspace \"$HERDR_WORKSPACE_ID\"\nallternit-factory pane pane current --current\nallternit-factory pane pane list --workspace \"$HERDR_WORKSPACE_ID\"\nallternit-factory pane agent list\n```\n\nCreation responses expose the IDs to use next. `workspace create` returns `.result.workspace`, `.result.tab`, and `.result.root_pane`. `tab create` returns `.result.tab` and `.result.root_pane`. `pane split` returns the new pane as `.result.pane`.\n\nIDs and live agent names are scoped to one server. Two saved SSH machines can both have `w1:p1` or an agent named `reviewer`. Selecting a machine in the TUI does not retarget commands running in your pane: they still use the inherited session and socket context. Run remote control commands on the intended host with its explicit session, and rediscover IDs there.\n\n`allternit-factory pane machine list` lists saved connection profiles, not a cross-machine pane inventory; add `--json` for scripts. Only add, remove, enable, or disable profiles when the user asks. Removing a profile disconnects the client but does not stop remote sessions. Adding a machine uses the remote default session unless `--remote-session` is explicitly supplied. Setup asks before stopping an incompatible server and defaults to No; do not approve replacement without the user's consent. Experimental handoff is not part of `machine add`.\n\n## Start and coordinate an agent\n\nDefault to a sibling pane in the current tab and the current working directory. Do not create a workspace, tab, worktree, or different cwd unless the user explicitly requests that topology or location.\n\nHonor a direction requested by the user. Otherwise inspect the caller pane:\n\n```bash\nallternit-factory pane pane layout --pane \"$HERDR_PANE_ID\"\n```\n\nSplit a wide pane to the right and a narrow or tall pane down. Avoid repeated same-direction splits that create unusably narrow columns or short rows. Keep the user's focus in the calling pane and explicitly preserve the caller's working directory:\n\n```bash\nallternit-factory pane pane split --current --direction right --cwd \"$PWD\" --no-focus\n```\n\nReplace `right` with `down` when appropriate. Read the new pane ID from `.result.pane.pane_id`.\n\nAn available shell pane must be at its interactive prompt, with the shell itself in the foreground and no foreground command, editor, or agent running. Start a supported agent in that pane with a useful unique name:\n\n```bash\nallternit-factory pane agent start reviewer --kind codex --pane \u003Creturned-pane-id>\n```\n\nUse the kind requested by the user. Run `allternit-factory pane agent` to inspect the installed kind list and options. Pass native agent arguments only after `--`:\n\n```bash\nallternit-factory pane agent start reviewer --kind codex --pane \u003Creturned-pane-id> -- \u003Cagent-args...>\n```\n\nA successful `agent start` returns only after ao detects the expected agent in the same pane and considers it ready for interactive input. If the agent is blocked during startup, the command returns `agent_not_ready` immediately but keeps the name available for `agent read` and `agent send-keys`. Wait until the agent becomes idle before prompting it. Startup defaults to a 30-second timeout.\n\nSubmit work through the agent surface:\n\n```bash\nallternit-factory pane agent prompt reviewer \"Review the current diff and report only actionable findings.\" --wait --timeout 120000\n```\n\n`agent prompt` honors the pane's live bracketed-paste mode and sends text followed by encoded Enter as one ordered submission. It reports successful submission only after both have been written; that alone does not prove the agent started a turn. The submit delay grows with prompt size for Codex on Windows. It rejects an agent already waiting at an approval or question dialog with `agent_blocked` before sending any input. Inspect the blocked UI and ask the user before answering it. For normal agent work, `--wait` is enough: it waits for the first settled `idle`, `done`, or `blocked` state. Do not repeat those defaults with `--until`.\n\nWith `--wait`, a prompt sent from a non-working state must produce observed `working` or `blocked` activity. After submission, ao waits up to five seconds for that activity; unrelated `idle`, `done`, or session changes do not satisfy this gate. It returns `agent_prompt_stalled` if no activity is observed, or `timeout` if the caller's timeout expires first. The caller timeout includes submission time. Without a timeout, the settled-state wait is indefinite after activity is observed. This wait tracks lifecycle state, not an individual turn; if the agent is already working, completion of the active turn may satisfy it.\n\nUse `--until` only for a state-specific workflow, such as waiting for an already-running agent to request input:\n\n```bash\nallternit-factory pane agent wait reviewer --until blocked --timeout 120000\n```\n\nWithout `--until`, standalone `agent wait` uses the same settled-state defaults as `agent prompt --wait`.\n\nUse logical keys for interactive agent UI controls:\n\n```bash\nallternit-factory pane agent send-keys reviewer esc\nallternit-factory pane agent send-keys reviewer ctrl+c\n```\n\nao validates all keys before writing any bytes. Read the result through the resolved agent:\n\n```bash\nallternit-factory pane agent get reviewer\nallternit-factory pane agent read reviewer --source recent-unwrapped --lines 120\n```\n\nIf a wait fails or returns `blocked`, inspect `agent get` and `agent read` before deciding what input to send. A timeout or stalled response does not prove the prompt was never delivered; do not blindly submit it again. Use the pane surface only when raw terminal control is intentional.\n\n## Run an ordinary command in another pane\n\nCreate a sibling pane with the same geometry rule, preserve the caller's working directory, and keep user focus unchanged:\n\n```bash\nallternit-factory pane pane split --current --direction right --cwd \"$PWD\" --no-focus\n```\n\nRead the new pane ID from `.result.pane.pane_id`, then run and inspect the command:\n\n```bash\nallternit-factory pane pane run \u003Creturned-pane-id> \"just test\"\nallternit-factory pane pane wait-output \u003Creturned-pane-id> --match \"test result\" --timeout 120000\nallternit-factory pane pane read \u003Creturned-pane-id> --source recent-unwrapped --lines 120\n```\n\n`pane run` atomically sends command text and Enter. `pane wait-output` searches the selected snapshot immediately, so output that already exists can match. Use `--match \u003Ctext>` for a literal substring or `--regex \u003Cpattern>` for a Rust regular expression. Omitting `--timeout` allows an indefinite wait.\n\nUse the read source that matches the task:\n\n- `visible`: the currently rendered viewport.\n- `recent`: recent rendered output, including soft wraps.\n- `recent-unwrapped`: recent output with soft wraps joined; prefer it for logs and transcripts.\n- `detection`: the plain-text bottom-buffer snapshot used for agent detection.\n\nUse `--format ansi` when colors and terminal styling are evidence. Otherwise use text.\n\n`--lines` asks ao for more rows from the pane's available screen and host scrollback. If increasing it does not reveal more of a completed response, the pane is probably running the agent on the terminal's alternate screen. Rows that leave the alternate screen do not enter ao's host scrollback, so a larger line count cannot recover them.\n\nAfter that failed read, ask the agent to write its complete response as Markdown in a temporary directory and reply only with the file path, then read the file directly. Use this only as a fallback; do not request file output in the initial prompt.\n\n## Safety and coordination rules\n\n- Use `--no-focus` for background work unless the user asked to switch context.\n- Use `--current`, an explicit pane ID, or a unique agent name. Do not rely on another client's focused pane.\n- Parse IDs from JSON responses. Do not derive them from sidebar order or examples.\n- Do not close workspaces, tabs, panes, or sessions you did not create unless the user explicitly asked. `workspace close --group` closes the primary workspace and its linked worktree workspaces; never add it merely to bypass `workspace_group_close_required`.\n- Use `--trust-repository` only after the user has verified the repository. It grants per-request Git trust; it is not a routine retry for a failed worktree command.\n- Client and server versions can differ after an update. Check `allternit-factory pane status` before relying on new server features. A missing method is not permission to stop or upgrade a server.\n- Never run `allternit-factory pane server stop` from an active session unless the user explicitly intends to stop the server and its pane processes.\n- Never kill the main ao process. Use named test sessions for experiments that need an isolated server.\n- CLI server errors are JSON on stderr with exit status 1. CLI syntax errors exit with status 2.\n",{"name":5,"description":7},"main","7db7c6f88fb96b6792195dacabdb088419b7a9fa","factory\u002Fpane\u002Fskills\u002Fherdr",0,"https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform","https:\u002F\u002Fgithub.com\u002FAllternit","https:\u002F\u002Fallternit.com","Allternit builds AI agents that work on your computer, in the cloud, and from your phone. Home of Allternit Desktop and Gizzi Code.","2026-11-12 03:40:39",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add Allternit\u002Fallternit-platform --skill ao",{"tool":63,"command":64},"bunx","bunx skills add Allternit\u002Fallternit-platform --skill ao",{"tool":66,"command":67},"pnpm","pnpm dlx skills add Allternit\u002Fallternit-platform --skill ao","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ffactory\u002Fpane\u002Fskills\u002Fherdr\u002FSKILL.md",true,[71,77],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"SOURCE.md","REFERENCE","参考文档",193,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol-integration\u002FSOURCE.md",{"path":78,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":79,"sourceHtmlUrl":80},"TRUST.auto.yaml",2217,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol-integration\u002FTRUST.auto.yaml",[82,106,124,146,168,197],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":43},"01M6C6GBWRCJNWQP5S16PKXB77","jev","Ask typed System One judgments (noul \u002F choice \u002F score) against Allternit's LOCAL System One server instead of prompting a chat model to \"return JSON\". Use when classifying, routing, scoring, or screening something and code needs a probability it can branch on, or when the user runs \u002Fjev. Official TypeSafe Jev is an optional, explicit remote lane.","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ftools\u002Fsystem-one-local\u002Fskills\u002Fjev\u002FSKILL.md",[],[84,89,90,91,92,93,94,95,96,97,98,99,33,18,100,101,102,103,104,105,19],"official","routing","code","server","lane","system","json","model","choice","branch","ask","scoring","chat","local","probability","remote","can",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":43},"01M6C6G9CGB9MX47NSQ31QNNB7","jev-route","Route with local System One answers — map Choice + confidence to act \u002F confirm \u002F human lanes, or pick a model tier by Choice label. Also documents the separate `route-model` helper for OpenRouter's typesafe\u002Fjev-router (a chat-model router, NOT System One). Use for confidence routing, model-tier routing, or when the user runs \u002Fjev-route.","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ftools\u002Fsystem-one-local\u002Fskills\u002Fjev-route\u002FSKILL.md",[],[84,113,114,115,90,94,96,116,97,117,33,18,118,119,101,120,102,121,122,20,123,19],"jev route","route","documents","pick","openrouter","router","model router","map","helper","with","model-tier",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":43},"01M6C6G6JZE0RC50QWWE6HG320","jev-guardrail","Screen text or agent tool calls with a battery of local System One Noul hazards plus a Score, with policy in code — and the Claude Code PreToolUse guard (hooks\u002Fpretooluse-guard) that puts deterministic hard rules first and lets Jev only raise friction. Use for injection\u002Fsecret\u002Fdestructive-action screening or when the user runs \u002Fjev-guardrail.","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ftools\u002Fsystem-one-local\u002Fskills\u002Fjev-guardrail\u002FSKILL.md",[],[84,131,132,133,91,134,135,136,94,137,138,139,33,18,140,28,141,142,102,143,144,20,145,19],"jev guardrail","guardrail","policy","injection","first","guard","tool","text","Rules","friction","hooks","deterministic","battery","calls","agent tool",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":157,"publishedAt":43},"01M6C6G426P7Q5J3F98HVYDCB2","jev-fanout","Ask every independent System One question over the same state in ONE POST \u002Fv1\u002Fsystemone to the local server (speculative fan-out). Use for parallel judgments, compound commands, one-call turn assessment, or when the user runs \u002Fjev-fanout. Do not fire one HTTP call per question.","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ftools\u002Fsystem-one-local\u002Fskills\u002Fjev-fanout\u002FSKILL.md",[152],{"categoryNo":153,"categoryName":154,"taxonomyType":155,"taxonomyTypeDesc":156},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",[84,158,159,160,161,162,92,94,36,99,163,33,18,25,164,102,165,166,20,167,19],"fanout","jev fanout","http","assessment","state","question","call","post","v1","local server",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":174,"publishedAt":43},"01M6C6G13D7JK869Q3DHMQ9542","memory-drive","Read and write the user's Allternit Memory Drive, a git repo of markdown memories in the open Agent Memory Repo format. Use at the start of a session to load what the user's agents remember (MEMORY.md), when the user says \"remember this\", when you learn a durable fact about the user or their work, and before answering questions that depend on past sessions.","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ftools\u002Fmemory-drive-plugin\u002Fskills\u002Fmemory-drive\u002FSKILL.md",[],[175,176,177,178,179,180,181,182,183,184,185,186,34,187,188,189,33,190,18,191,192,193,194,195,196,19],"memory","drive","memory drive","sessions","remember","learn","git","agent memory","start","open","markdown","format","repo","read","write","session","what the","memories","about","questions","you","load",{"skillNo":198,"name":199,"nameZh":6,"description":200,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":201,"categories":202,"keywords":206,"publishedAt":43},"01M6C6FX778N1047QAJ39Y582H","agent-orchestrator","Orchestrate external CLI agents (kimi, codex, agy, claude, grok, gizzi) through the Allternit Factory (gizzi agents \u002F orchestration \u002F workspace \u002F workflows). Use when the user asks to delegate, offload, or farm out implementation work to another CLI agent \u002F terminal session, or to run work outside this session to save tokens. Part of Allternit Agents \u002F Bot Agents — not a separate product.","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ftools\u002Fagent-orchestrator\u002FSKILL.md",[203],{"categoryNo":204,"categoryName":205,"taxonomyType":155,"taxonomyTypeDesc":156},"01JBSEEDCAT000000000000023","Skill与智能体开发",[31,29,207,208,30,209,210,211,212,213,214,215,35,34,216,217,190,18,218,219,220,221,222,223,224,225,19],"bot","cli","codex","orchestration","workflows","run","product","orchestrate","save","delegate","factory","grok","kimi","implementation","offload","tokens","cli agents","farm","terminal session"]