--- name: propose-project-learning description: Propose additions to project CLAUDE.md based on session learnings argument-hint: "[--save]" --- # Propose Project Learning Retrospect on the current session and propose learnings for the project's CLAUDE.md. ## Purpose After working on a project, identify patterns, conventions, preferences, and rules that should be documented in the project's CLAUDE.md to improve future sessions. ## Usage ```bash /propose-project-learning # Analyze and propose learnings /propose-project-learning --save # Save proposal to ~/.claude/learnings/ ``` ## What This Captures | Category | Examples | |----------|----------| | **Code conventions** | Naming patterns, file organization, import ordering | | **Architecture decisions** | Preferred patterns, avoided anti-patterns | | **Tool preferences** | Test frameworks, linters, formatters | | **Project-specific rules** | Business logic constraints, domain terminology | | **Workflow preferences** | Commit style, PR conventions, review process | ## Execution Instructions When the user runs this command: ### 1. Analyze Current Session Review the conversation history for: - **Corrections made** - When the user corrected Claude's approach - **Explicit preferences** - "Always use X", "Never do Y", "Prefer Z" - **Repeated patterns** - Consistent choices across multiple files - **Project conventions** - Naming, structure, organization patterns - **Tool/framework specifics** - Project-specific configurations or usage ### 2. Check Existing CLAUDE.md Read the project's CLAUDE.md (if exists) to avoid duplicates: ```bash cat CLAUDE.md 2>/dev/null || echo "No CLAUDE.md found" ``` Also check for CLAUDE.local.md: ```bash cat CLAUDE.local.md 2>/dev/null ``` ### 3. Generate Proposal Format the proposal as: ```markdown # Proposed Learnings for CLAUDE.md Based on this session, consider adding these to your project's CLAUDE.md: ## Code Conventions - Use `snake_case` for all Python function names - Prefer dataclasses over plain dicts for structured data ## Architecture - All API endpoints go through the service layer, never direct DB access - Use repository pattern for database operations ## Testing - Use pytest fixtures, not setUp/tearDown methods - Mock external services at the client level, not individual methods ## Project-Specific - The `core` module should have no dependencies on other app modules - All dates are stored as UTC, converted to local time only in templates --- To add these to your CLAUDE.md: 1. Review each suggestion 2. Copy relevant items to CLAUDE.md 3. Adjust wording to match your style ``` ### 4. Handle --save Flag If `--save` is provided: 1. **Ensure directory exists**: ```bash mkdir -p ~/.claude/learnings/projects/{project-slug}/proposals/ ``` 2. **Save proposal** with timestamp: ```bash # File: ~/.claude/learnings/projects/{project-slug}/proposals/learning-{timestamp}.md ``` 3. **Confirm**: ``` Proposal saved to ~/.claude/learnings/projects/{project-slug}/proposals/learning-2026-01-09.md Review later with: cat ~/.claude/learnings/projects/{project-slug}/proposals/ ``` ### 5. Offer Next Steps ``` Next steps: [1] Add to CLAUDE.md now (I'll help edit) [2] Save for later (/propose-project-learning --save) [3] Dismiss Select option: ``` ## Quality Criteria Only propose learnings that are: | Criterion | Description | |-----------|-------------| | **Specific** | Concrete rules, not vague guidelines | | **Actionable** | Claude can follow them in future sessions | | **Project-relevant** | Not general best practices already known | | **Validated** | Based on actual session behavior, not assumptions | ## Examples ### Good Learnings ```markdown - API responses use `{"data": ..., "error": null}` wrapper format - All Django models inherit from `BaseModel` in `core.models` - Use `ruff` for linting, not `flake8` ``` ### Poor Learnings (Too Generic) ```markdown - Write clean code - Follow PEP 8 - Use meaningful variable names ``` ## Notes - This command analyzes the current session context - Works best after substantial implementation work - Complements `/propose-forge-improvement` which targets Product Forge itself - Learnings are project-specific, not global