UNPKG

al-development-collection

Version:

AI Native AL Development toolkit for Microsoft Dynamics 365 Business Central with GitHub Copilot integration

516 lines (358 loc) 11.6 kB
--- agent: agent model: Claude Sonnet 4.5 description: "Generate or update memory.md file tracking decisions, changes, and learnings throughout project development for continuity across sessions" tools: ['edit', 'read_file', 'changes', 'problems', 'todos'] --- # AL Memory File Generator Generate and maintain a `memory.md` file that serves as the **project memory** - tracking decisions, changes, learnings, and important conversations across development sessions. ## Purpose The `memory.md` file provides: - **Session Continuity**: What happened in previous sessions - **Decision Log**: Why things were done a certain way - **Problem/Solution Patterns**: What issues occurred and how they were solved - **TODO Tracking**: What needs to be done next - **Learning Journal**: Insights gained during development - **Context for AI**: Prevents re-asking questions or repeating mistakes This enables AI assistants and developers to pick up where they left off and build on previous work. ## Execution Steps ### 1. Initialize Memory Structure If `memory.md` doesn't exist, create with this template: ```markdown # Project Memory - [Extension Name] > **Purpose**: Continuous memory across development sessions > **Maintained by**: AI assistants and developers > **Last Updated**: [Date] ## Quick Reference **Current Focus**: [What we're working on now] **Next Steps**: [ImMEDIUMte next actions] **Blockers**: [Current blockers if any] --- ## Session Log ### [Date] - Session [N] **Focus**: [What was worked on] **Completed**: - [Task 1] - [Task 2] **Decisions Made**: - **[Decision]**: [Rationale] **Problems Encountered**: - **[Problem]**: [Solution or workaround] **Next Session**: - [ ] [Task to continue] - [ ] [Task to start] **Notes**: - [Any important observations] --- ## Decision Log ### [Date] - [Decision Title] **Context**: [Why this decision needed to be made] **Options Considered**: 1. [Option 1]: [Pros/Cons] 2. [Option 2]: [Pros/Cons] **Decision**: [What was chosen] **Rationale**: [Why this option] **Impact**: [What this affects] **Review Date**: [When to revisit if applicable] --- ## Problem/Solution Patterns ### [Problem Category] - [Specific Issue] **Symptom**: [What we observed] **Root Cause**: [What was actually wrong] **Solution**: [How we fixed it] **Prevention**: [How to avoid in future] **Related Code**: [File paths or line numbers] --- ## Learning Journal ### [Date] - [Topic/Insight] **What We Learned**: [Key insight or pattern discovered] **Why It Matters**: [Impact on project] **Where Applied**: [Code locations] **Resources**: [Links to docs, articles that helped] --- ## Code Evolution ### [Feature/Module Name] **v1.0** - [Date] - Initial implementation - [Key characteristics] **v1.1** - [Date] - Changed: [What changed] - Reason: [Why it changed] - Migration: [How to adapt if needed] --- ## TODO & Backlog ### High Priority - [ ] [Task] - [Why important] - [Target date] ### Medium Priority - [ ] [Task] - [Context] ### Future Ideas - [ ] [Idea] - [Rationale] ### Done ✅ - [x] [Completed task] - [Date completed] --- ## Questions & Answers ### [Question] **Asked**: [Date] **Answer**: [The answer found] **Source**: [Where answer came from - docs, testing, expert] --- ## Integration Points ### [External System/Extension Name] **First Integrated**: [Date] **Current Status**: [Active/Deprecated/Planned] **Contact Point**: [Method - API/Event/etc] **Issues Encountered**: [Problems and solutions] **Dependencies**: [What depends on this] --- ## Performance Tracking ### [Feature/Operation] **Baseline**: [Initial performance metrics] **Optimizations Applied**: - [Date]: [Change] [Result] **Current State**: [Latest metrics] **Target**: [Performance goal] --- ## Testing Insights ### [Test Scenario] **First Tested**: [Date] **Results**: [What we found] **Edge Cases Discovered**: - [Edge case 1]: [How handled] **Regression History**: [If this broke before, when and why] --- ## Communication Log ### [Date] - [Stakeholder/Team Member] **Topic**: [What was discussed] **Decisions**: [Agreements reached] **Action Items**: [Who does what] **Follow-up**: [When to check back] --- ## Environment Notes ### Development Setup **Last Working Config**: [Date] - BC Version: [Version] - Extensions: [Key extensions used] - Settings: [Important VS Code/AL settings] **Known Issues**: - [Issue]: [Workaround] --- ## Deprecated Patterns ### [Pattern Name] **Used**: [Date range when this was used] **Replaced By**: [New pattern] **Migration Guide**: [How to update old code] **Reason for Deprecation**: [Why we stopped using it] --- ## Useful Snippets ### [Snippet Name] ```al [Code snippet that proved useful] ``` **Use Case**: [When to use this] **Source**: [Where this came from] --- ## Meeting Notes ### [Date] - [Meeting Type] **Attendees**: [Who was there] **Topics**: [What was discussed] **Decisions**: [What was decided] **Actions**: [Who does what by when] --- ## Maintenance Log ### [Date] - [Maintenance Activity] **What**: [What was maintained] **Why**: [Reason for maintenance] **Changes**: [What changed] **Impact**: [What this affects] ``` ### 2. If Memory File Exists - Update It **Add new session entry:** ```powershell # Check for recent changes @changes # Check current problems @problems # Check TODOs @todos ``` **Update with:** - New session log entry at the top - Any decisions made in this session - Problems solved - Learnings discovered - Progress on existing TODOs - New TODOs identified ### 3. Session Entry Creation For each development session, document: **Format:** ```markdown ### [Today's Date] - Session N **Focus**: [Main task(s) worked on] **Completed**: - [Specific accomplishment 1] - [Specific accomplishment 2] **Decisions Made**: - **[Decision Topic]**: [Choice made and brief reason] **Problems Encountered**: - **[Problem Description]**: - Symptom: [What we saw] - Cause: [Root cause if known] - Solution: [How fixed or workaround] **Learnings**: - [Insight gained from this session] **Next Session**: - [ ] [Continue/start task 1] - [ ] [Continue/start task 2] **Files Changed**: - `[file path]`: [What changed] **Notes**: - [Any other important context] ``` ### 4. Decision Documentation When architectural/technical decisions are made: ```markdown ### [Date] - [Decision Title] **Context**: [What situation required this decision? What were we trying to solve?] **Options Considered**: 1. **[Option 1]** - Pros: [Benefits] - Cons: [Drawbacks] 2. **[Option 2]** - Pros: [Benefits] - Cons: [Drawbacks] **Decision**: [What we chose] **Rationale**: [Why this option was best given the context, constraints, and requirements] **Implementation Notes**: - [Key points about how this was implemented] **Impact**: - Code: [What code was affected] - Performance: [Performance implications if any] - Maintenance: [Ongoing maintenance considerations] **Review Date**: [Optional - when to revisit this decision] **References**: - [Links to documentation, discussions, etc.] ``` ### 5. Problem/Solution Pattern Documentation When bugs are fixed or challenges overcome: ```markdown ### [Category] - [Problem Title] **Date Encountered**: [Date] **Symptom**: [What behavior did we observe? What was wrong?] **Context**: [When does this happen? What conditions trigger it?] **Root Cause**: [What was actually causing the problem?] **Solution**: [How we fixed it - code changes, configuration, etc.] **Code Changed**: ```al // Before [problematic code] // After [fixed code] ``` **Prevention**: [How to avoid this in the future - pattern to follow, test to add, etc.] **Related**: - Files: `[file paths]` - Similar issues: [References to related problems] - Documentation: [Links to relevant docs] ``` ### 6. Learning Capture When discovering new patterns or insights: ```markdown ### [Date] - [Topic] **What We Learned**: [The key insight, pattern, or understanding gained] **How We Learned It**: [Through debugging, documentation, experimentation, etc.] **Why It Matters**: [Impact on the project, development efficiency, code quality, etc.] **Where Applied**: - `[file path]`: [How this learning was applied] **Best Practice**: [If this leads to a best practice for this project] **Resources**: - [Links to documentation that helped] - [Code examples from BC or other sources] ``` ### 7. Update Quick Reference At the end of each session, update the top section: ```markdown ## Quick Reference **Current Focus**: [Update with current work] **Last Session**: [Date of last session] **Next Steps**: 1. [Most imMEDIUMte next action] 2. [Second priority] **Active Blockers**: - [Blocker 1]: [Status] **Recent Achievements** (Last 7 days): - [Achievement 1] - [Achievement 2] **Active Branch**: [Git branch if relevant] ``` ### 8. Maintenance & Cleanup **Weekly:** - Move completed TODOs to "Done" section - Archive old session entries (keep last 10, summarize older ones) - Update code evolution section if major changes **Monthly:** - Review decision log - mark outdated decisions - Consolidate similar problem/solution patterns - Clean up deprecated patterns section - Update environment notes if setup changed ## Output Format Deliver: 1. Created/updated `memory.md` at project root 2. Summary of key additions made 3. Highlight any important patterns/decisions documented 4. Suggest next session focus based on TODOs ## Integration with Development Workflow ### At Session Start ```markdown **AI Assistant**: Load memory.md to understand: - What was done last session - What the plan was for this session - Any blockers or important context ``` ### During Development ```markdown **Capture**: - Decisions as they're made - Problems as they're encountered - Learnings as they're discovered ``` ### At Session End ```markdown **Update**: - Session log with completion status - TODOs with progress - Quick Reference with next steps ``` ## Key Principles - **Chronological**: Most recent first for quick access - **Searchable**: Use clear headings and keywords - **Contextual**: Include enough context to understand later - **Actionable**: TODOs and next steps are concrete - **Honest**: Document failures and mistakes - they're learning opportunities - **Linked**: Reference files, line numbers, other sections - **Concise**: Important but brief - detailed docs go in context.md ## Success Criteria A successful `memory.md` enables: - Picking up project after weeks away - Understanding why code is the way it is - Avoiding repeat mistakes - Building on previous learnings - Tracking progress over time - AI assistant continuity across sessions ## Collaboration When multiple developers work on the project: - Each adds their session entries - Decisions are collaborative - note who participated - Problem solutions are shared learning - TODOs can be assigned to people - Communication log tracks cross-team discussions