You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Flag-based signal where meaningful: destructive flags (rm -rf, git push --force), dry-run flags (-n, --dry-run), verbose flags, etc.
Compound-statement keywords: finish what PR Replace setup.sh with CLAUDE.md onboarding; fix hook rendering #9 started (do/then/else/elif unwrap, for/while/if/case styled, done/fi/esac/in still falling through to gray, function/brace-groups/subshells not handled)
Open questions
Where do mappings live? Stay inline in the bash case statement, or move to a data file (e.g. revive command-map.json, which is in-repo but the hook doesn't currently read it)? Data file is more maintainable but adds a parsing step to the hot path. Decide before large expansion.
Match precedence. Clearest model: full-command match (Tier 1, e.g. git commit) → base command (Tier 2, e.g. git) → default. The old SKILL.md sketch had this shape but the current hook only has Tier 2.
Flags inspection. Full flag parsing per command is a lot of surface. Probably want a small allowlist of "signal flags" per command (--force, --dry-run, -rf) rather than a general parser.
Acceptance
git commit, git push, git pull, git rebase render distinctly from generic git status
npm install / npm test / npm run <script> render distinctly
docker run / docker build / docker compose render distinctly
PR Replace setup.sh with CLAUDE.md onboarding; fix hook rendering #9 control-flow TODO is closed: do/then/else/elif unwrap correctly in all tested compound statements, and trailing done/fi/esac no longer fall through to gray (or we have an explicit reason why we let them)
Today
_lookupinscripts/annotate-pre.shkeys only on the segment's base command (e.g.git,npm,docker). That loses a lot of signal:git commitvsgit pushvsgit status→ all render identicallynpm install(destructive-ish / network) vsnpm test(verify) → samedocker runvsdocker ps→ samerm -rf /vsrm -i file→ same danger emojifor/while/if/case/do/then/else/done/fi/...) — see PR Replace setup.sh with CLAUDE.md onboarding; fix hook rendering #9; partially implemented, still not rightWe want the annotation to reflect what the command is actually doing, not just which binary is invoked.
Scope (to decide on review)
rm -rf,git push --force), dry-run flags (-n,--dry-run), verbose flags, etc.do/then/else/elifunwrap,for/while/if/casestyled,done/fi/esac/instill falling through to gray,function/brace-groups/subshells not handled)Open questions
command-map.json, which is in-repo but the hook doesn't currently read it)? Data file is more maintainable but adds a parsing step to the hot path. Decide before large expansion.git commit) → base command (Tier 2, e.g.git) → default. The old SKILL.md sketch had this shape but the current hook only has Tier 2.--force,--dry-run,-rf) rather than a general parser.Acceptance
git commit,git push,git pull,git rebaserender distinctly from genericgit statusnpm install/npm test/npm run <script>render distinctlydocker run/docker build/docker composerender distinctlydo/then/else/elifunwrap correctly in all tested compound statements, and trailingdone/fi/esacno longer fall through to gray (or we have an explicit reason why we let them)