# Codex Code Guidelines ## Code Quality Standards ### Code Quality - Follow project's existing patterns - Match import style and naming conventions - Single responsibility per function/class - DRY (Don't Repeat Yourself) - YAGNI (You Aren't Gonna Need It) ### Testing - Test all public functions - Test edge cases and error conditions - Mock external dependencies - Target 80%+ coverage ### Error Handling - Proper try-catch blocks - Clear error messages - Graceful degradation - Don't expose sensitive info ## Core Principles **Incremental Progress**: - Small, testable changes - Commit working code frequently - Build on previous work (subtasks) **Evidence-Based**: - Study 3+ similar patterns before implementing - Match project style exactly - Verify with existing code **Pragmatic**: - Boring solutions over clever code - Simple over complex - Adapt to project reality **Context Continuity** (Multi-Task): - Leverage resume for consistency - Maintain established patterns - Test integration between subtasks **Git Operations** (Parallel Task Safety): - Only stage/commit files directly produced by current task - Never touch unrelated changes or other task outputs - Use `git add ` instead of `git add .` - Verify staged files before commit to avoid cross-task conflicts ## System Optimization **Direct Binary Calls**: Always call binaries directly in `functions.shell`, set `workdir`, avoid shell wrappers (`bash -lc`, `cmd /c`, etc.) **Text Editing Priority**: 1. Use `apply_patch` tool for all routine text edits 2. Fall back to `sed` for single-line substitutions if unavailable 3. Avoid Python editing scripts unless both fail **apply_patch invocation**: ```json { "command": ["apply_patch", "*** Begin Patch\n*** Update File: path/to/file\n@@\n- old\n+ new\n*** End Patch\n"], "workdir": "", "justification": "Brief reason" } ``` **Windows UTF-8 Encoding** (before commands): ```powershell [Console]::InputEncoding = [Text.UTF8Encoding]::new($false) [Console]::OutputEncoding = [Text.UTF8Encoding]::new($false) chcp 65001 > $null ``` ## Context Acquisition (MCP Tools Priority) **For task context gathering and analysis, ALWAYS prefer MCP tools**: 1. **mcp__ace-tool__search_context** - HIGHEST PRIORITY for code discovery - Semantic search with real-time codebase index - Use for: finding implementations, understanding architecture, locating patterns - Example: `mcp__ace-tool__search_context(project_root_path="/path", query="authentication logic")` 2. **smart_search** - Fallback for structured search - Use `smart_search(query="...")` for keyword/regex search - Use `smart_search(action="find_files", pattern="*.ts")` for file discovery - Supports modes: `auto`, `hybrid`, `exact`, `ripgrep` 3. **read_file** - Batch file reading - Read multiple files in parallel: `read_file(path="file1.ts")`, `read_file(path="file2.ts")` - Supports glob patterns: `read_file(path="src/**/*.config.ts")` **Priority Order**: ``` ACE search_context (semantic) → smart_search (structured) → read_file (batch read) → shell commands (fallback) ``` **NEVER** use shell commands (`cat`, `find`, `grep`) when MCP tools are available. ## Execution Checklist **Before**: - [ ] Understand PURPOSE and TASK clearly - [ ] Use ACE search_context first, fallback to smart_search for discovery - [ ] Use read_file to batch read context files, find 3+ patterns - [ ] Check RULES templates and constraints **During**: - [ ] Follow existing patterns exactly - [ ] Write tests alongside code - [ ] Run tests after every change - [ ] Commit working code incrementally **After**: - [ ] All tests pass - [ ] Coverage meets target - [ ] Build succeeds - [ ] All EXPECTED deliverables met