UNPKG

@ldavis9000aws/mcp-project-memory

Version:

Enhanced memory system for software development projects with persistent context across sessions

253 lines (173 loc) 8.08 kB
# Best Practices for Project Memory This guide provides recommendations for effectively using the Project Memory system to maintain persistent context across software development sessions. ## Knowledge Graph Structure ### Entity Naming Conventions - Use consistent naming patterns for entities: - **PascalCase**: `AuthenticationService`, `UserDatabase`, `ReactFrontend` - **Underscore_Case**: `Authentication_Service`, `User_Database`, `React_Frontend` - Choose descriptive names that clearly identify the entity - Avoid abbreviations unless they're widely understood in your domain - Use the same name consistently when referring to a component ### Entity Type Selection Select the most appropriate entity type for the concept you're representing: - **Project**: Top-level container for a software project - Example: `ECommercePlatform`, `DataAnalyticsDashboard` - **Component**: Distinct functional part of a software system - Example: `AuthenticationService`, `PaymentProcessor`, `UserInterface` - **Technology**: Frameworks, languages, or tools used in the project - Example: `ReactJS`, `PostgreSQL`, `Docker` - **Issue**: Bug, error, or problem encountered - Example: `ConnectionTimeout`, `MemoryLeak`, `SecurityVulnerability` - **Decision**: Architectural or implementation choice - Example: `MicroserviceArchitecture`, `DatabaseSelection`, `AuthStrategy` ### Relation Type Usage Use specific relation types to describe the relationships between entities: - **contains**: Parent-child relationship - Example: `Project contains Component`, `Component contains Subcomponent` - **uses**: Implementation or dependency relationship - Example: `Component uses Technology`, `Service uses Library` - **depends_on**: Functional dependency between components - Example: `Frontend depends_on Backend`, `Service depends_on Database` - **affected_by**: Issue impact relationship - Example: `Component affected_by Bug`, `Service affected_by Performance_Issue` - **resolved_by**: Solution relationship for issues - Example: `Bug resolved_by Code_Fix`, `Issue resolved_by Design_Change` - **led_to**: Causality relationship between decisions - Example: `Initial_Decision led_to Follow_Up_Decision` ## Observation Quality ### Writing Effective Observations - Be specific and concrete rather than vague - Include relevant technical details - Keep each observation focused on a single piece of information - Use clear, consistent language #### Before (Poor): ``` "Has some issues with the database sometimes" ``` #### After (Good): ``` "Connection pool exhaustion occurs under high load (>500 concurrent users)" ``` ### Include Key Information Types When writing observations, include these types of information: 1. **Context**: Environment, conditions, or situations 2. **Technical details**: Versions, settings, configurations 3. **Rationale**: Reasons behind decisions 4. **Impact**: Effects on other components or users 5. **Status**: Current state (if applicable) #### Example: ``` "Using PostgreSQL 14 with TimescaleDB extension for time-series data" "Chosen for performance on large datasets and native time partitioning" "Connection pooling via PgBouncer with max 50 connections" "Current data volume: ~500GB with 30-day retention policy" ``` ## Memory Management Workflow ### When To Update Memory Update the knowledge graph at these key moments: 1. **Initial Project Setup**: Define the core structure 2. **Architecture Decisions**: When making significant design choices 3. **Issue Discovery**: When bugs or problems are encountered 4. **Issue Resolution**: When fixes are implemented 5. **Implementation Progress**: After completing major features 6. **Technical Changes**: When modifying the technology stack 7. **Future Planning**: When discussing roadmap items ### Structure for Different Development Activities #### Architecture Design 1. Create `Decision` entities for major architectural choices 2. Document alternatives considered and rationale 3. Link decisions to affected components 4. Track decision dependencies (`Decision_A led_to Decision_B`) #### Bug Tracking 1. Create `Issue` entities for bugs 2. Link to affected components 3. Document reproduction steps and impact 4. Update with resolution information when fixed #### Feature Development 1. Create `Component` entities for new features 2. Document implementation details as observations 3. Link to parent components and dependencies 4. Update with progress and completion status ## Claude Integration Tips ### Setting Context Effectively When starting a session with Claude: 1. **Project Introduction**: Briefly describe the project at the start 2. **Component Focus**: Specify which component you're working on 3. **Task Context**: Explain what you're trying to accomplish Example: ``` "I'm working on the AuthService component of our e-commerce platform. Today I need to implement token refresh functionality." ``` ### Memory Triggers To ensure Claude updates memory appropriately, use these triggers: #### For Design Decisions: ``` "We've decided to use JWT tokens with a 15-minute expiration and separate refresh tokens." ``` #### For Implementation Details: ``` "I've implemented the token refresh using Axios interceptors that automatically refresh on 401 errors." ``` #### For Issues: ``` "We're encountering a race condition where multiple refresh attempts happen simultaneously." ``` ### Memory Retrieval To retrieve information from memory, use consistent phrasing: - "What do you remember about the authentication service?" - "Show me all issues related to the payment processor." - "What was our decision about the database schema?" - "What components depend on the authentication service?" ## Advanced Usage ### Tracking Decision Evolution Track how decisions change over time by creating related decisions and linking them: 1. Create the initial decision (`Original_Architecture`) 2. When the decision changes, create a new decision (`Architecture_Update`) 3. Link them with a `supersedes` relation: ``` Architecture_Update supersedes Original_Architecture ``` 4. Document the reason for the change in observations ### Component Versioning Track component versions by adding version information in observations: ``` "Version 2.0: Rewritten with TypeScript" "Version 2.1: Added support for OAuth providers" "Version 2.2: Performance optimizations for token validation" ``` ### Cross-Project References When components are shared across projects: 1. Create the component entity once 2. Link it to multiple projects using `contains` relations 3. Use observations to note project-specific configurations Example: ``` "Shared between ECommercePlatform and AdminDashboard" "In ECommercePlatform: configured with customer roles" "In AdminDashboard: configured with admin privileges" ``` ## Troubleshooting Common Issues ### Entity Duplication If you find duplicate entities for the same concept: 1. Decide which entity to keep 2. Transfer unique observations from the duplicate to the kept entity 3. Update relations to point to the kept entity 4. Delete the duplicate entity ### Relation Errors If relations are incorrectly defined: 1. Identify the correct relation type 2. Delete the incorrect relation 3. Create a new relation with the correct type ### Missing Context If you find Claude is missing context: 1. Check if relevant entities exist in memory 2. Verify relations between entities are correctly defined 3. Add more detailed observations to existing entities 4. Use more specific memory retrieval queries ## Memory Maintenance Periodically perform these maintenance tasks: 1. **Clean up redundant observations**: Consolidate similar information 2. **Update status information**: Mark resolved issues, completed tasks 3. **Validate relation consistency**: Ensure relations accurately reflect the system 4. **Archive old information**: Add timestamp context to historical information 5. **Consolidate fragmented entities**: Merge related small entities if appropriate