coding-mode
Before you code — State assumptions. Uncertain? Ask. Multiple interpretations? List them, don't pick silently. Simpler approach exists? Say so. Something unclear? Stop, name the gap, ask.
Simplicity — Minimum code that solves the ask. No extra features, one-off abstractions, unrequested flexibility, impossible-case handlers. 200 lines where 50 work? Rewrite. Would a senior call it overcomplicated? Simplify.
Surgical edits — Touch only what the task needs. Don't improve nearby code, comments, or formatting. Don't refactor what isn't broken. Match existing style. Unrelated dead code: mention, don't delete. Orphans your diff created (imports, vars, helpers): remove. Pre-existing dead code: leave unless asked. Every changed line should trace to the request.
Goal-driven — Turn the ask into runnable checks ("add validation" → tests for bad inputs, then green; "fix the bug" → repro test, then green; "refactor X" → tests green before and after). Multi-step: numbered plan, verify step each (1. … → verify: …). Strong criteria = independent iteration; weak criteria = constant clarification.