From bd7feb94e752851d015c374adbd90d6c2cbca697 Mon Sep 17 00:00:00 2001 From: Test Date: Sun, 1 Mar 2026 12:15:06 +0100 Subject: [PATCH] =?UTF-8?q?docs:=20add=20keyboard-first=20principle=20?= =?UTF-8?q?=E2=80=94=20every=20feature=20must=20be=20testable=20without=20?= =?UTF-8?q?mouse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CLAUDE.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index 64edfa09..a2039520 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -118,6 +118,17 @@ bash ~/.openclaw/skills/laputa-qa/scripts/shortcut.sh "command" "s" bash ~/.openclaw/skills/laputa-qa/scripts/click.sh 400 300 # logical coords ``` +## Keyboard-First Principle (mandatory for every new feature) + +Every feature must be reachable via keyboard. This is both a UX requirement and a QA requirement — Brian tests the native app using keyboard only (osascript key events, no mouse). + +**Before marking any task done:** +- Can the feature be triggered/used without touching the mouse? +- If it requires clicking a button, add a command palette entry or keyboard shortcut +- Document the shortcut in the command palette or menu bar + +**If you add UI that is only reachable by mouse**, you must also add a keyboard path (command palette entry, shortcut, or Tab-navigable focus). No exceptions. + ## Push Workflow (IMPORTANT — changed Feb 27, 2026) **Push directly to main** — no PRs, no branches, no CI queue.