feat(skill-command): route /skill:* through the submission keybinding
Makes `/skill:<name> [args]` work identically under both submission keybindings, mirroring how free text is already routed during streaming: - `/skill:foo` + Enter, streaming -> steer queue (interrupt) - `/skill:foo` + Ctrl+Enter, streaming -> followUp queue - `/skill:foo` + Enter, idle -> idle prompt - `/skill:foo` + Ctrl+Enter, idle -> idle prompt (was: literal text) A single private helper `#invokeSkillCommand(text, streamingBehavior)` on `InputController` handles the dispatch; the Enter submit handler calls it with "steer", and `handleFollowUp` calls it with "followUp" after the compaction short-circuit so a skill typed during compaction rides the same `queueCompactionMessage` queue as free text. Behavior deltas vs upstream/main: - Enter on `/skill:foo` during streaming now steers (was: queued as followUp). Users who relied on the followUp default can press Ctrl+Enter -- the same key they already use for free-text follow-ups. - Ctrl+Enter on `/skill:foo` is new capability; previously the literal string `/skill:foo ...` was sent as plain followUp text and the skill was never invoked. Op: extend
This commit is contained in:
+6
-1
@@ -136,9 +136,14 @@ If `skills.enableSkillCommands` is true, interactive mode registers one slash co
|
||||
|
||||
- reads the skill file directly from `filePath`
|
||||
- strips frontmatter
|
||||
- injects skill body as a follow-up custom message
|
||||
- injects skill body as a custom message
|
||||
- delivery mode follows the **submission keybinding**:
|
||||
- **Enter** → invokes the skill on the `steer` queue while streaming (matches free-text Enter, which also steers), or as a normal idle prompt when the agent is not streaming
|
||||
- **Ctrl+Enter** (`app.message.followUp`) → invokes the skill on the `followUp` queue while streaming, or as a normal idle prompt when the agent is not streaming
|
||||
- appends metadata (`Skill: <path>`, optional `User: <args>`)
|
||||
|
||||
There is no flag, mode-selector, or frontmatter knob to override this — the keybinding *is* the choice, identical to how free text is routed during streaming (`input-controller.ts:243-249` for Enter, `input-controller.ts:462-500` for Ctrl+Enter; both dispatch through `#invokeSkillCommand`).
|
||||
|
||||
## `skill://` URL behavior
|
||||
|
||||
`src/internal-urls/skill-protocol.ts` supports:
|
||||
|
||||
Reference in New Issue
Block a user