# Roo Code Memory Bank Protocol I use a Memory Bank to maintain continuity across sessions. The Memory Bank files are located in `.roo/memory-bank/`. ## Core Hierarchy 1. `projectbrief.md` - Core requirements and goals (source of truth). 2. `productContext.md` - Why this project exists and user experience goals. 3. `systemPatterns.md` - System architecture, technical decisions, and design patterns. 4. `techContext.md` - Technologies, setup, constraints, and dependencies. 5. `activeContext.md` - Current focus, recent changes, next steps, and active decisions. 6. `progress.md` - What works, what's left to build, and known issues. ## Operational Workflow ### 1. Initialization (Start of Task) - At the start of a task, I DO NOT blindly read all files. - Instead, I MUST first check if the Memory Bank exists. - I MUST read `activeContext.md` and `progress.md` first to understand the current state. - I will read `projectbrief.md`, `systemPatterns.md`, or `techContext.md` ONLY if the task requires modification of architecture, tech stack, or core requirements. ### 2. Updating the Bank I MUST update the Memory Bank files under the following conditions: - When implementing significant changes or switching to a new sub-task (update `activeContext.md` and `progress.md`). - When discovering or establishing new architectural patterns (update `systemPatterns.md`). - When the user explicitly requests: **"update memory bank"** (in this case, review and update all relevant files). ### 3. Guidelines for Updates - **Keep it concise**: Do not duplicate source code inside markdown files. - **Maintain focus**: The `activeContext.md` should only contain what is relevant _now_ and _next_. Move completed items to `progress.md`. - **Verify**: Before finalizing a task, ensure `progress.md` accurately reflects what works and what is left to do.