232 lines
8.4 KiB
Plaintext
232 lines
8.4 KiB
Plaintext
# Task ID: 32
|
|
# Title: Implement "learn" Command for Automatic Cursor Rule Generation
|
|
# Status: deferred
|
|
# Dependencies: None
|
|
# Priority: high
|
|
# Description: Create a new "learn" command that analyzes Cursor's chat history and code changes to automatically generate or update rule files in the .cursor/rules directory, following the cursor_rules.mdc template format. This command will help Cursor autonomously improve its ability to follow development standards by learning from successful implementations.
|
|
# Details:
|
|
Implement a new command in the task-master CLI that enables Cursor to learn from successful coding patterns and chat interactions:
|
|
|
|
Key Components:
|
|
1. Cursor Data Analysis
|
|
- Access and parse Cursor's chat history from ~/Library/Application Support/Cursor/User/History
|
|
- Extract relevant patterns, corrections, and successful implementations
|
|
- Track file changes and their associated chat context
|
|
|
|
2. Rule Management
|
|
- Use cursor_rules.mdc as the template for all rule file formatting
|
|
- Manage rule files in .cursor/rules directory
|
|
- Support both creation and updates of rule files
|
|
- Categorize rules based on context (testing, components, API, etc.)
|
|
|
|
3. AI Integration
|
|
- Utilize ai-services.js to interact with Claude
|
|
- Provide comprehensive context including:
|
|
* Relevant chat history showing the evolution of solutions
|
|
* Code changes and their outcomes
|
|
* Existing rules and template structure
|
|
- Generate or update rules while maintaining template consistency
|
|
|
|
4. Implementation Requirements:
|
|
- Automatic triggering after task completion (configurable)
|
|
- Manual triggering via CLI command
|
|
- Proper error handling for missing or corrupt files
|
|
- Validation against cursor_rules.mdc template
|
|
- Performance optimization for large histories
|
|
- Clear logging and progress indication
|
|
|
|
5. Key Files:
|
|
- commands/learn.js: Main command implementation
|
|
- rules/cursor-rules-manager.js: Rule file management
|
|
- utils/chat-history-analyzer.js: Cursor chat analysis
|
|
- index.js: Command registration
|
|
|
|
6. Security Considerations:
|
|
- Safe file system operations
|
|
- Proper error handling for inaccessible files
|
|
- Validation of generated rules
|
|
- Backup of existing rules before updates
|
|
|
|
# Test Strategy:
|
|
1. Unit Tests:
|
|
- Test each component in isolation:
|
|
* Chat history extraction and analysis
|
|
* Rule file management and validation
|
|
* Pattern detection and categorization
|
|
* Template validation logic
|
|
- Mock file system operations and AI responses
|
|
- Test error handling and edge cases
|
|
|
|
2. Integration Tests:
|
|
- End-to-end command execution
|
|
- File system interactions
|
|
- AI service integration
|
|
- Rule generation and updates
|
|
- Template compliance validation
|
|
|
|
3. Manual Testing:
|
|
- Test after completing actual development tasks
|
|
- Verify rule quality and usefulness
|
|
- Check template compliance
|
|
- Validate performance with large histories
|
|
- Test automatic and manual triggering
|
|
|
|
4. Validation Criteria:
|
|
- Generated rules follow cursor_rules.mdc format
|
|
- Rules capture meaningful patterns
|
|
- Performance remains acceptable
|
|
- Error handling works as expected
|
|
- Generated rules improve Cursor's effectiveness
|
|
|
|
# Subtasks:
|
|
## 1. Create Initial File Structure [pending]
|
|
### Dependencies: None
|
|
### Description: Set up the basic file structure for the learn command implementation
|
|
### Details:
|
|
Create the following files with basic exports:
|
|
- commands/learn.js
|
|
- rules/cursor-rules-manager.js
|
|
- utils/chat-history-analyzer.js
|
|
- utils/cursor-path-helper.js
|
|
|
|
## 2. Implement Cursor Path Helper [pending]
|
|
### Dependencies: None
|
|
### Description: Create utility functions to handle Cursor's application data paths
|
|
### Details:
|
|
In utils/cursor-path-helper.js implement:
|
|
- getCursorAppDir(): Returns ~/Library/Application Support/Cursor
|
|
- getCursorHistoryDir(): Returns User/History path
|
|
- getCursorLogsDir(): Returns logs directory path
|
|
- validatePaths(): Ensures required directories exist
|
|
|
|
## 3. Create Chat History Analyzer Base [pending]
|
|
### Dependencies: None
|
|
### Description: Create the base structure for analyzing Cursor's chat history
|
|
### Details:
|
|
In utils/chat-history-analyzer.js create:
|
|
- ChatHistoryAnalyzer class
|
|
- readHistoryDir(): Lists all history directories
|
|
- readEntriesJson(): Parses entries.json files
|
|
- parseHistoryEntry(): Extracts relevant data from .js files
|
|
|
|
## 4. Implement Chat History Extraction [pending]
|
|
### Dependencies: None
|
|
### Description: Add core functionality to extract relevant chat history
|
|
### Details:
|
|
In ChatHistoryAnalyzer add:
|
|
- extractChatHistory(startTime): Gets history since task start
|
|
- parseFileChanges(): Extracts code changes
|
|
- parseAIInteractions(): Extracts AI responses
|
|
- filterRelevantHistory(): Removes irrelevant entries
|
|
|
|
## 5. Create CursorRulesManager Base [pending]
|
|
### Dependencies: None
|
|
### Description: Set up the base structure for managing Cursor rules
|
|
### Details:
|
|
In rules/cursor-rules-manager.js create:
|
|
- CursorRulesManager class
|
|
- readTemplate(): Reads cursor_rules.mdc
|
|
- listRuleFiles(): Lists all .mdc files
|
|
- readRuleFile(): Reads specific rule file
|
|
|
|
## 6. Implement Template Validation [pending]
|
|
### Dependencies: None
|
|
### Description: Add validation logic for rule files against cursor_rules.mdc
|
|
### Details:
|
|
In CursorRulesManager add:
|
|
- validateRuleFormat(): Checks against template
|
|
- parseTemplateStructure(): Extracts template sections
|
|
- validateAgainstTemplate(): Validates content structure
|
|
- getRequiredSections(): Lists mandatory sections
|
|
|
|
## 7. Add Rule Categorization Logic [pending]
|
|
### Dependencies: None
|
|
### Description: Implement logic to categorize changes into rule files
|
|
### Details:
|
|
In CursorRulesManager add:
|
|
- categorizeChanges(): Maps changes to rule files
|
|
- detectRuleCategories(): Identifies relevant categories
|
|
- getRuleFileForPattern(): Maps patterns to files
|
|
- createNewRuleFile(): Initializes new rule files
|
|
|
|
## 8. Implement Pattern Analysis [pending]
|
|
### Dependencies: None
|
|
### Description: Create functions to analyze implementation patterns
|
|
### Details:
|
|
In ChatHistoryAnalyzer add:
|
|
- extractPatterns(): Finds success patterns
|
|
- extractCorrections(): Finds error corrections
|
|
- findSuccessfulPaths(): Tracks successful implementations
|
|
- analyzeDecisions(): Extracts key decisions
|
|
|
|
## 9. Create AI Prompt Builder [pending]
|
|
### Dependencies: None
|
|
### Description: Implement prompt construction for Claude
|
|
### Details:
|
|
In learn.js create:
|
|
- buildRuleUpdatePrompt(): Builds Claude prompt
|
|
- formatHistoryContext(): Formats chat history
|
|
- formatRuleContext(): Formats current rules
|
|
- buildInstructions(): Creates specific instructions
|
|
|
|
## 10. Implement Learn Command Core [pending]
|
|
### Dependencies: None
|
|
### Description: Create the main learn command implementation
|
|
### Details:
|
|
In commands/learn.js implement:
|
|
- learnCommand(): Main command function
|
|
- processRuleUpdates(): Handles rule updates
|
|
- generateSummary(): Creates learning summary
|
|
- handleErrors(): Manages error cases
|
|
|
|
## 11. Add Auto-trigger Support [pending]
|
|
### Dependencies: None
|
|
### Description: Implement automatic learning after task completion
|
|
### Details:
|
|
Update task-manager.js:
|
|
- Add autoLearnConfig handling
|
|
- Modify completeTask() to trigger learning
|
|
- Add learning status tracking
|
|
- Implement learning queue
|
|
|
|
## 12. Implement CLI Integration [pending]
|
|
### Dependencies: None
|
|
### Description: Add the learn command to the CLI
|
|
### Details:
|
|
Update index.js to:
|
|
- Register learn command
|
|
- Add command options
|
|
- Handle manual triggers
|
|
- Process command flags
|
|
|
|
## 13. Add Progress Logging [pending]
|
|
### Dependencies: None
|
|
### Description: Implement detailed progress logging
|
|
### Details:
|
|
Create utils/learn-logger.js with:
|
|
- logLearningProgress(): Tracks overall progress
|
|
- logRuleUpdates(): Tracks rule changes
|
|
- logErrors(): Handles error logging
|
|
- createSummary(): Generates final report
|
|
|
|
## 14. Implement Error Recovery [pending]
|
|
### Dependencies: None
|
|
### Description: Add robust error handling throughout the system
|
|
### Details:
|
|
Create utils/error-handler.js with:
|
|
- handleFileErrors(): Manages file system errors
|
|
- handleParsingErrors(): Manages parsing failures
|
|
- handleAIErrors(): Manages Claude API errors
|
|
- implementRecoveryStrategies(): Adds recovery logic
|
|
|
|
## 15. Add Performance Optimization [pending]
|
|
### Dependencies: None
|
|
### Description: Optimize performance for large histories
|
|
### Details:
|
|
Add to utils/performance-optimizer.js:
|
|
- implementCaching(): Adds result caching
|
|
- optimizeFileReading(): Improves file reading
|
|
- addProgressiveLoading(): Implements lazy loading
|
|
- addMemoryManagement(): Manages memory usage
|
|
|