aboutsummaryrefslogtreecommitdiff
path: root/claude-rules
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-26 12:58:14 -0500
committerCraig Jennings <c@cjennings.net>2026-05-26 12:58:14 -0500
commit9bfb13aced68e9e0778f9d46b0eeb939cef05a30 (patch)
tree4309185cfc6d17b31ec9580cf07b31f216b6f5b3 /claude-rules
parent7beb8d10451bd4c425bf71d22734a9cb1272f83c (diff)
downloadrulesets-9bfb13aced68e9e0778f9d46b0eeb939cef05a30.tar.gz
rulesets-9bfb13aced68e9e0778f9d46b0eeb939cef05a30.zip
feat(hooks): hard-deny the AskUserQuestion popup machine-wide
The no-popup-menus rule in interaction.md was too easy to forget, so the popup kept slipping back into choice prompts. I added a PreToolUse hook on AskUserQuestion that denies the call outright and returns the rule as the reason, which routes choices back to inline numbered lists. Since ~/.claude/settings.json symlinks to this repo's .claude/settings.json, the hook is machine-wide and version-controlled across machines. I documented it under the rule in interaction.md, including the consequence: the deny is unconditional, so the old "use the popup for this one" exception now needs the hook disabled via /hooks first.
Diffstat (limited to 'claude-rules')
-rw-r--r--claude-rules/interaction.md2
1 files changed, 2 insertions, 0 deletions
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.