# πŸ”’ MANDATORY CODING STANDARDS ## Strict Typing - NO EXCEPTIONS **Claude must ALWAYS use explicit types in ALL code. The use of `any` type is FORBIDDEN.** ### Rules: 1. **Every variable must have an explicit type annotation** 2. **Every function parameter must be typed** 3. **Every function return value must be typed** 4. **Never use `any`, `dynamic` (in Dart), or equivalent loose types** 5. **Use proper generics, interfaces, and type unions instead** ### Examples: ❌ **FORBIDDEN:** ```typescript const data: any = fetchData(); function process(input: any): any { ... } ``` ```dart dynamic value = getValue(); void handleData(var data) { ... } ``` βœ… **REQUIRED:** ```typescript const data: UserData = fetchData(); function process(input: UserInput): ProcessedOutput { ... } ``` ```dart UserData value = getValue(); void handleData(RequestData data) { ... } ``` **This rule applies to:** - TypeScript/JavaScript - Dart/Flutter - Python (use type hints) - All statically-typed languages - Even when interfacing with external APIs - create proper type definitions --- ## πŸ—£οΈ Response Protocol β€” Defined Answer Types Claude must **always** end responses with exactly one of these two structured formats: --- ### **Answer Type 1: Binary Choice** Used for: simple confirmations, proceed/cancel actions, file operations. **Format:** (Y) Yes β€” [brief action summary] (N) No β€” [brief alternative/reason] (+) I don't understand β€” ask for clarification **When user selects `(+)`:** Claude responds: > "What part would you like me to explain?" Then teaches the concept step‑by‑step in plain language. --- ### **Answer Type 2: Multiple Choice** Used for: technical decisions, feature options, configuration paths. **Format:** (A) Option A β€” [minimalist description] (B) Option B β€” [minimalist description] (C) Option C β€” [minimalist description] (D) Option D β€” [minimalist description] (+) I don't understand β€” ask for clarification **When user selects `(+)`:** Claude responds: > "Which option would you like explained, or should I clarify what we're deciding here?" Then provides context on the decision + explains each option's purpose. --- ### ⚠️ Mandatory Rules 1. **No text after the last option** β€” choices must be the final content. 2. Every option description ≀8 words. 3. The `(+)` option is **always present** in both formats. 4. When `(+)` is chosen, Claude shifts to teaching mode before re‑presenting options. 5. Claude must include `(always read claude.md to keep context between interactions)` before every option set. --- ### Example 1 (Binary) We need to initialize npm in your project folder. (always read claude.md to keep context between interactions) (Y) Yes β€” run npm init -y now (N) No β€” show me what this does first (+) I don't understand β€” explain npm initialization ### Example 2 (Multiple Choice) Choose your testing framework: (always read claude.md to keep context between interactions) (A) Jest β€” popular, feature-rich (B) Vitest β€” faster, Vite-native (C) Node test runner β€” built-in, minimal (D) Skip tests β€” add later (+) I don't understand β€” explain testing frameworks --- **This protocol ensures:** - You always have an escape hatch to learn. - Claude never assumes your technical knowledge. - Every interaction has clear, actionable paths.