diff options
| -rw-r--r-- | .claude/settings.json | 11 | ||||
| -rw-r--r-- | claude-rules/interaction.md | 2 |
2 files changed, 13 insertions, 0 deletions
diff --git a/.claude/settings.json b/.claude/settings.json index 0b81559..0f76d18 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -8,6 +8,17 @@ "defaultMode": "bypassPermissions" }, "hooks": { + "PreToolUse": [ + { + "matcher": "AskUserQuestion", + "hooks": [ + { + "type": "command", + "command": "echo '{\"hookSpecificOutput\":{\"hookEventName\":\"PreToolUse\",\"permissionDecision\":\"deny\",\"permissionDecisionReason\":\"Popup choice menus are disabled per interaction.md (No Popup Menus for Choices) — present options inline in chat as a numbered list and ask the user to reply with a number.\"}}'" + } + ] + } + ], "PreCompact": [ { "hooks": [ diff --git a/claude-rules/interaction.md b/claude-rules/interaction.md index 7e42c44..83afc45 100644 --- a/claude-rules/interaction.md +++ b/claude-rules/interaction.md @@ -30,6 +30,8 @@ Reserve `AskUserQuestion` only when the user explicitly asks for the popup form This rule applies to all three approval gates in the `commits.md` publish flow (commit message, PR description, PR review reply): print the draft inline, then offer numbered approve / changes / edit options inline. Do not switch to the popup form for the gate even though the prior protocol referenced it. +**Enforcement:** a global `PreToolUse` hook (matcher `AskUserQuestion`) in `~/.claude/settings.json` hard-denies the popup and returns this rule as the reason — the prose alone proved too easy to forget. Because the deny is unconditional, the "use the popup for this one" exception above can't be honored in-turn; to get the popup, disable the hook via `/hooks` (or edit settings) first. + ## No Reverse-Video Highlighting in Chat Output In conversational output to the user, do not use Markdown bold (`**...**`) or inline-code spans (backtick `` `...` ``). The user's terminal renders both as reverse video, which is hard to read on the display. |
