Skip to content

Commit 501e27b

Browse files
committed
docs(tui): drop unregistered /compact from handoff copy
1 parent 9b74216 commit 501e27b

4 files changed

Lines changed: 10 additions & 9 deletions

File tree

‎docs/PRODUCT.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ the file path and parse details.
105105

106106
## Slash Commands (TUI)
107107

108-
The TUI has an extensible slash-command framework. Built-ins include `/help` (shortcut + command overlay), `/model` (models-only picker for connected accounts; **Alt+A** or `/connect` adds a provider), `/settings`, `/permissions`, `/plugins`, `/clear`, `/new`, `/mcp` (enable, disable, or remove servers), `/handoff [optional instructions]` (folds context through the shared operator pipeline, then immediately starts the next turn with the instructions as the inbound content — default copy when omitted; unlike `/compact`, which stops after the fold, handoff always re-infers, so the operator can pivot goals without `/clear`; a handoff issued mid-tool-batch queues behind the in-flight batch and whichever boundary fires first runs the single fold), and `/yolo` (persists as the user-global skip-permissions default; `--dangerously-skip-permissions` still forces this process; secret-guard and authz still apply; `/yolo [on|off|toggle]`, bare `/yolo` toggles), plus a `/<name>` command per available workflow. When a session starts with the persisted default already on, the TUI shows a startup notice ("Permission prompts are disabled by your saved default…") so the silent machine-wide default is never invisible; `corbits exec` prints the equivalent warning to stderr. Plugins can register additional commands.
108+
The TUI has an extensible slash-command framework. Built-ins include `/help` (shortcut + command overlay), `/model` (models-only picker for connected accounts; **Alt+A** or `/connect` adds a provider), `/settings`, `/permissions`, `/plugins`, `/clear`, `/new`, `/mcp` (enable, disable, or remove servers), `/handoff [optional instructions]` (folds context through the shared operator pipeline, then immediately starts the next turn with the instructions as the inbound content — default copy when omitted; auto-compact and an operator fold stop after the fold, while handoff always re-infers, so the operator can pivot goals without `/clear`; a handoff issued mid-tool-batch queues behind the in-flight batch and whichever boundary fires first runs the single fold), and `/yolo` (persists as the user-global skip-permissions default; `--dangerously-skip-permissions` still forces this process; secret-guard and authz still apply; `/yolo [on|off|toggle]`, bare `/yolo` toggles), plus a `/<name>` command per available workflow. When a session starts with the persisted default already on, the TUI shows a startup notice ("Permission prompts are disabled by your saved default…") so the silent machine-wide default is never invisible; `corbits exec` prints the equivalent warning to stderr. Plugins can register additional commands.
109109

110110
**Default skills** exist out of the gate as first-party slash **actions**, not director names: `/implement`, `/plan`, `/refactor`, `/review`, `/pull-request-review`, `/create-issue`, `/scribe`, `/interview`, `/ast-grep`, `/lexicon`. Each one is a how-to playbook — the slash sends the skill body to the primary, which follows the steps. Skills do not assign identity or route the fleet; that stays on director system prompts. `/review` classifies the target first, then dispatches a selected fleet; `/pull-request-review` is worktree checkout plus a surface pass, loading `/review` for quality rules only; `/scribe` is how to maintain PRODUCT / ARCHITECTURE / IMPLEMENTATION; `/implement` is the per-commit review/build/critique loop — it does not steal planning from `/plan`. Substantial Builder work consumes a counsel / `/plan` plan first; tiny parent-DIY stays plan-optional. `/plan` authors an eng change plan (files, AC, non-goals, risks, ordered steps) and does not implement. `/create-issue` remains the tracker command: Linear MCP when available; otherwise it `ask_operator`s for the platform (GitHub etc.) and persists `Preferred issue tracker` in `.corbits/MEMORY.md` (GitHub via `gh issue create`). `/lexicon` owns director-prompt drift and size against the agents repo at a pinned commit. There is no first-party dispatch skill — Skywalker orchestrates natively. `git-rebase`, `linear-issue-workflow`, `style`, `philosophy`, `native-integration`, `typescript`, `ponytail`, and `opsh` stay `use_skill` only (`user-invocable: false`). Bake-only bars such as `idiot-proof` and `native-runtime` are not slashes and are not listed for `use_skill`. Draper and emil are not slashes; they remain closed directors via `spawn_agent(agent=…)`. There is no catch-all worker. Slash names are also available to the model via `skill_search` (descriptions) then `use_skill` (body). Disable the catalog in `/plugins` (`corbits-skills`) if you want them gone.
111111

‎src/tui/commands/built-in.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,8 @@ export function registerBuiltInCommands(): void {
220220

221221
// Pivot: fold the context through the shared operator pipeline, then
222222
// immediately start the next turn with the trailing instructions as the
223-
// inbound content (default copy when omitted). Unlike `/compact`, which
224-
// stops after the fold, handoff always re-infers.
223+
// inbound content (default copy when omitted). Auto-compact and an
224+
// operator fold stop after the fold; handoff always re-infers.
225225
registerCommand({
226226
name: "handoff",
227227
description: "Fold context now, then continue with optional instructions",

‎src/tui/commands/registry.ts‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,10 @@ export interface CommandContext {
3030
setSkipPermissions?: (value: boolean) => void;
3131
/**
3232
* Fold conversation context now, then start the next turn with the given
33-
* pivot instructions (default copy when empty). Unlike `/compact` this
34-
* always answers with a fresh inference. Returns an operator-facing error,
35-
* or undefined when the handoff pivot was queued.
33+
* pivot instructions (default copy when empty). Compact-without-infer
34+
* (operator fold / auto-compact) stops after the fold; this always answers
35+
* with a fresh inference. Returns an operator-facing error, or undefined
36+
* when the handoff pivot was queued.
3637
*/
3738
requestHandoff?: (instructions: string) => string | undefined;
3839
}

‎src/tui/runner/commands.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -224,9 +224,9 @@ export function createCommandLayer(
224224
// behind the in-flight tool batch: whichever boundary fires first runs
225225
// the single operator fold (a tool pause compacts-then-continues, the
226226
// pivot arrival folds-then-infers), because firing clears the arming.
227-
// Unlike `/compact`, the pivot is always delivered, so handoff always
228-
// starts the next assistant turn — even a "noop" fold still pivots to
229-
// the operator's new goal without needing `/clear`.
227+
// Compact-without-infer stops after the fold; the pivot is always
228+
// delivered, so handoff always starts the next assistant turn — even a
229+
// "noop" fold still pivots to the operator's new goal without `/clear`.
230230
const pivot = trimmed.length > 0 ? trimmed : HANDOFF_DEFAULT_PIVOT;
231231
const disarmOnMiss = arming === "armed";
232232
void send(userInboundMessage(pivot, [])).then(

0 commit comments

Comments
 (0)