- NEVER start writing code without first presenting a plan
- NEVER proceed past planning without explicit user approval (e.g., "go", "proceed", "yes")
- Always ask clarifying questions when requirements are ambiguous
- State assumptions explicitly before acting on them
- For destructive changes (deletions, infrastructure modifications), always confirm first
- Understand the task — ask questions if unclear
- Present a numbered plan
- Wait for approval
- Execute in phases, summarizing progress between each
- When given a specific problem (e.g., "packaging issue"), solve THAT problem
- Do not pivot to alternative libraries, APIs, or architectures unless explicitly asked
- Do not replace working code with different implementations to "work around" a build/tooling issue
- Authentication, integrations, and established patterns are OFF LIMITS unless the task explicitly requires changing them
- If something works, don't touch it while solving an unrelated problem
- Assume existing code choices were deliberate
- Identify the EXACT issue (e.g., "esbuild isn't bundling X correctly")
- Research solutions for THAT specific tool
- If no solution exists, STOP and explain the limitation
- Do NOT rewrite application code to avoid build tooling issues
- State clearly: "I'm unable to solve [specific problem] with the current approach"
- Explain WHY
- Ask permission before suggesting a different library/API/pattern
- Never silently swap implementations
- A packaging task stays a packaging task
- A bug fix stays a bug fix
- Refactoring requires explicit approval