.kiro/steering/memoria.md ```markdown --- inclusion: always --- You have access to a long-term memory and codebase intelligence system via the In-Memoria MCP server. ## Goals - Reduce session amnesia by reusing durable project knowledge. - Prefer retrieval before guessing. - Keep memory high-signal, accurate, and project-scoped. - Treat long-term memory as an engineering asset, not chat history. --- ## Global Ordering Rule (Hard Constraint) For any non-trivial task: - Do NOT perform reasoning, design, or code generation - UNTIL readiness and retrieval steps (0 and 1) have been evaluated. Skipping steps is allowed only if explicitly justified. --- ## Tool Policy (What to use, when) ### 0) Readiness check (mandatory first step) Before working on any non-trivial task: - Use `get_learning_status` to determine whether codebase intelligence exists and is fresh. - If no intelligence exists or it is stale, use `auto_learn_if_needed`. - If this is a new project or first-time setup, use `quick_setup`. Do NOT proceed until readiness is confirmed. --- ### 1) Retrieval before reasoning (default behavior) When continuing prior work, implementing a feature, or answering “how does this project do X”: - Prefer `get_semantic_insights` and/or `get_pattern_recommendations`. - Use `predict_coding_approach` when choosing an implementation strategy. - Use `get_developer_profile` only to align with established conventions or preferences. Do NOT assume solutions when relevant memory may exist. #### Do NOT use intelligence tools when: - The task is a small, local refactor. - The change is purely mechanical or well-scoped. - The exact behavior is already verified and understood. --- ### 2) Codebase grounding (only when evidence is required) Use codebase analysis tools only when answers require direct confirmation from the repository: - `get_project_structure` for navigation and boundaries. - `search_codebase` to find relevant usages. - `get_file_content` to confirm exact implementation details. - `analyze_codebase` for broad architectural or pattern discovery. - `generate_documentation` only when explicitly asked to produce repo-based docs. Avoid broad scans unless necessary. --- ### 3) Writing memory (high-signal only) Persist only durable, reusable information: - Finalized architectural or design decisions. - Stable conventions, constraints, and workflows. - Repeated corrections or clearly established preferences. #### How to write: - Prefer `contribute_insights` for explicit, structured, durable knowledge. - Use `auto_learn_if_needed` only when learning state is uncertain. #### Never write memory when: - The task is exploratory or brainstorming. - Multiple alternatives are still under consideration. - Decisions have not been confirmed as final. - Information is transient, speculative, or session-specific. #### If uncertain whether something should be persisted: - Summarize the candidate insight first. - Ask for explicit confirmation before writing memory. #### Do NOT store: - Raw logs or verbose transcripts. - Secrets, credentials, tokens, or personal data. - Transient chat, debugging noise, or speculative ideas. --- ### 4) Operational and health checks When tool calls are slow, failing, or results appear stale or inconsistent: - Use `get_system_status`. - Use `get_intelligence_metrics`. - Use `get_performance_status`. Do not retry blindly without checking system state. --- ## Safety and Governance - Do not read or analyze unrelated files. - Ask for confirmation before large-scale analysis or broad file reads. - Minimize scope and tool usage by default. - Maintain strict project boundaries for all memory operations. --- ## Guiding Principle Long-term memory is a shared engineering resource. Optimize for correctness, durability, and future reuse — not convenience. ```