--- name: hermes-slash-command-coaching description: Use when a user needs the right slash command. The task is already running. Covers the decision rule for steer, queue, background and interrupt, plus goal, loop and plan. version: 1.0.0 author: Pixel Rainbow (shagghiesuperstar) license: MIT metadata: hermes: tags: [hermes, slash-commands, steer, queue, goals, operator, guidance] category: hermes-operations related_skills: [hermes-api-dispatch, hermes-gateway-ops] --- # Hermes Slash Command Coaching ## Overview A Hermes session can take a new message while a turn is still running, and the right response depends on two questions: is the message about the running task or a different one, and does it need to act now or after the turn. The slash commands answer those questions. Choosing the wrong one restarts a turn that did not need to restart, or queues a correction that should have landed at once. This skill is the decision rule, the trigger signals in a message, the format for a one-line tip, and the anti-patterns to avoid. Command names and defaults change between releases. Before you rely on one, check the installed version's help output for that command. ## When to Use - A user asks how to steer, queue or background a running task. - A user's message fits a slash command better than a plain reply, and a one-line tip would help. - A user asks how to run a long objective, a timed check, a plan, or a context compression. ## Features - Decision table for a message sent during a running turn: background, steer, queue, interrupt, or side question. - Decision table for the shape of the work: goal, loop, plan, compress and undo. - Trigger-phrase table that maps a message to a command. - A strict one-line tip format, given only after the work is done. - Anti-patterns that cause wrong advice. ## Benefits - A correction lands without restarting the turn. - A new subject runs in its own session, and the current chat stays free. - Long objectives run to a judged finish instead of stopping after one turn. - Tips stay short, so they help without interrupting the work. ## Procedure 1. Decide with two questions about the message: - Is it about the task that is running now, or a different task? - Does it need to happen now, or after the current turn? | Situation | Command | What it does | |---|---|---| | Different task, do not wait | `/bg ` | Runs in a separate session; the current chat stays free | | Same task, correction, now | `/steer ` | Lands after the next tool call, with no restart | | Same task, follow-up, later | `/queue ` | Waits until the current turn finishes | | Same task, wrong direction | Plain message (interrupt) | Stops the turn; the agent restarts on the new input | | Side question, no action | `/btw ` | Answers about the conversation without changing the task | 2. Pick a command for the shape of the work, when interruption is not the issue: | Situation | Command | |---|---| | Multi-hour objective with a finish a judge can check | `/goal `; draft the contract first, add deterministic checks, or park on a process | | Same check on a timer, stopping on evidence | `/loop [--times N] [--until ]` | | Think before touching anything | `/plan `; writes a plan file and runs nothing | | Context is long and drifting | `/compress ` | | Rerun with different framing | `/undo`, then retype the message | 3. Set the default busy behavior if the user wants a different one. Check the current default in the config, then set it through the config command. A message can override it for one turn with the busy-mode command. 4. Match the user's message to a trigger, and only nudge when the signal is clear. If two triggers fit, use the higher row of the trigger table: | Signal in the message | Command | |---|---| | "also", "one more thing", during a run, same task | `/steer` | | "after that", "when you're done", "next", during a run | `/queue` | | A new subject during a run | `/bg` | | "stop", "wait", "wrong", "undo that" | Interrupt; no tip needed | | "what does X mean", no action wanted | `/btw` | | "keep going until", "end to end", "overnight" | `/goal` | | "every N minutes", "poll", "until it is green" | `/loop`, or a scheduled job if it must outlive the session | | "how would you", "don't do it yet" | `/plan` | | The context has been compacted more than once, or the user re-explains a lost detail | `/compress `, or a fresh session with a title | | The same objective is restated in plain chat a third time | `/goal` | 5. Give the tip only after the work is done. Use one italic line at the end of the reply, with the command, a reason of six words or fewer, and what would have changed. Give at most one tip per message, and do not repeat a tip the user already uses. ### Tip format > *Operator tip: `/steer` fits this, because it is a same-task correction. Plain input restarts the turn; `/steer ` lands it without a restart.* Rules for the tip: - The requested action comes first. The tip never replaces the work. - One tip per message, and no paragraphs. - If the user asks to stop tips, stop them for the rest of the session. ## Pitfalls - **Coaching from a summary of a command is not enough.** Check the installed version's help for the exact subcommands and the exact timing. For example, a steer lands after the next tool call, not at an arbitrary point. - **A "also" that concerns a different topic is a background task, not a steer.** Match the topic first. - **Nudging on an ambiguous signal wastes the user's attention.** When the signal is unclear, say nothing. - **A long objective started in plain chat has no finish condition.** Give it a goal with a judge, and a task record on the team's board in the same turn if the team uses one. - **Do not turn a tip into a lecture.** Six words of reason, one line. ## Verification - The chosen command appears in the installed version's help output. - A correction sent with the steer command lands in the running turn without a restart. - A tip, when given, is one italic line placed after the completed work. - The user's busy-mode default is the one stated in the config after any change.