aboutsummaryrefslogtreecommitdiff
path: root/.claude/rules/interaction.md
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-26 07:47:03 -0500
committerCraig Jennings <c@cjennings.net>2026-05-26 07:47:03 -0500
commit85fa5f6b3d52c0c18043144653aaafeeb4dcf4a3 (patch)
treea6a2a54effe0811c4a11b4c66b165858d93558bf /.claude/rules/interaction.md
parent35b5739e791965c837c2e715076b52d3fee9e156 (diff)
downloaddotemacs-85fa5f6b3d52c0c18043144653aaafeeb4dcf4a3.tar.gz
dotemacs-85fa5f6b3d52c0c18043144653aaafeeb4dcf4a3.zip
chore(claude): sync rules and hooks with the rulesets bundle
Bring .claude/hooks/validate-el.sh and .claude/rules/interaction.md back in line with the shared bundle, and add the new keybinding-display.md rule.
Diffstat (limited to '.claude/rules/interaction.md')
-rw-r--r--.claude/rules/interaction.md16
1 files changed, 16 insertions, 0 deletions
diff --git a/.claude/rules/interaction.md b/.claude/rules/interaction.md
index 4d9279ba..83afc45a 100644
--- a/.claude/rules/interaction.md
+++ b/.claude/rules/interaction.md
@@ -29,3 +29,19 @@ For multi-select decisions, say so explicitly: "Pick any combination — reply w
Reserve `AskUserQuestion` only when the user explicitly asks for the popup form ("use the popup for this one") or for genuinely free-form input where numbered options don't fit.
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.
+
+**Why:** The styling that looks like emphasis in most renderers comes through as inverted foreground/background here. Plain prose, plain identifiers, and plain key chords read cleanly; the "highlight" actively hurts legibility.
+
+**How to apply:**
+
+- Write command names, file paths, key chords, and code identifiers as plain text — `pearl-save-issue` becomes pearl-save-issue, `C-; L s s` becomes C-; L s s.
+- Use structure that doesn't invert colors: headers, numbered lists, dashes, parentheses, and double quotes for labels are all fine.
+- Fenced code blocks (triple backtick) are acceptable when the user explicitly wants a block to copy — they don't invert the way inline spans do. Default to plain text otherwise.
+
+This governs **chat output**, not the Markdown source of rule files, specs, or docs the user reads in an editor — those keep normal Markdown formatting. The constraint is the terminal rendering of the live conversation.