This hook intercepts user messages starting with '/' and REPLACES them with the actual command template output instead of injecting instructions. The implementation includes: - Slash command detection (detector.ts) - identifies messages starting with '/' - Command discovery and execution (executor.ts) - loads templates from ~/.claude/commands/ or similar - Hook integration (index.ts) - registers with chat.message event to replace output.parts - Comprehensive test coverage - 37 tests covering detection, replacement, error handling, and command exclusions - Configuration support in HookNameSchema Key features: - Supports excluded commands to skip processing - Loads command templates from user's command directory - Replaces user input before reaching the LLM - Tests all edge cases including missing files, malformed templates, and special commands 🤖 Generated with assistance of OhMyOpenCode (https://github.com/code-yeongyu/oh-my-opencode)
12 lines
338 B
TypeScript
12 lines
338 B
TypeScript
export const HOOK_NAME = "auto-slash-command" as const
|
|
|
|
export const AUTO_SLASH_COMMAND_TAG_OPEN = "<auto-slash-command>"
|
|
export const AUTO_SLASH_COMMAND_TAG_CLOSE = "</auto-slash-command>"
|
|
|
|
export const SLASH_COMMAND_PATTERN = /^\/([a-zA-Z][\w-]*)\s*(.*)/
|
|
|
|
export const EXCLUDED_COMMANDS = new Set([
|
|
"ralph-loop",
|
|
"cancel-ralph",
|
|
])
|