explain-changes-mental-model
The explain-changes-mental-model command analyzes code changes from commits, branches, or ranges and organizes them into logical, dependency-ordered chunks for incremental understanding. Use this when reviewing large diffs or commits where understanding the sequence of related changes helps comprehension, breaking complex modifications into themed groups that build upon each other rather than presenting all changes at once.
mkdir -p ~/.claude/commands && curl -fsSL https://raw.githubusercontent.com/softaworks/agent-toolkit/HEAD/commands/explain-changes-mental-model.md -o ~/.claude/commands/explain-changes-mental-model.mdexplain-changes-mental-model.md
# Mental Model Builder Analyze code changes and present them as a coherent mental model - breaking large diffs into logical chunks ordered by dependency so they can be understood incrementally. ## What This Command Does 1. **Gather changes** from the specified source (commit, branch, range, or custom input) 2. **Analyze and categorize** changes into logical groups by theme/purpose 3. **Identify dependencies** between change groups 4. **Present ordered explanation** so changes can be reviewed in a sensible sequence ## Usage ```bash # Current working changes (staged + unstaged) /mental-model # Specific commit /mental-model abc1234 /mental-model HEAD~3 # Branch comparison (vs main) /mental-model feature/my-branch # Explicit range /mental-model main..HEAD /mental-model origin/main...HEAD # Custom - user will provide diff/changes in next message /mental-model custom ``` ## Implementation Steps When this command is invoked: ### 1. Determine Change Source Parse the argument to determine what changes to analyze: **No argument provided:** - Run `git diff HEAD` to get all uncommitted changes (staged + unstaged) - If no changes found, report "No uncommitted changes to analyze" **Argument looks like a commit hash** (7-40 hex chars): - Run `git show <hash> --stat` first to verify it exists - Run `git show <hash>` to get the full diff **Argument looks like a branch name** (contains letters, no `..`): - Detect main branch: check if `main` or `master` exists - Run `git diff <main-branch>...<argument>` to compare **Argument contains `..`** (explicit range): - Use as-is: `git diff <argument>` **Argument is "custom":** - Tell the user: "Please paste or describe the changes you want me to analyze in your next message." - Wait for user input before proceeding ### 2. Extract the Diff Run the appropriate git command and capture the output: ```bash # Example for commit git show <hash> --no-color # Example for range git diff <range> --no-color ``` If the diff is very large (>5000 lines), use `--stat` first to get an overview, then selectively read the most important files. ### 3. Analyze and Categorize Changes Group changes into logical categories based on: - **Purpose**: What problem does this change solve? - **Layer**: API, UI, business logic, data, infrastructure, tests, config - **Feature area**: Authentication, payments, search, etc. - **Type**: New feature, refactor, bug fix, cleanup For each file changed, determine: - What logical group it belongs to - What other changes it depends on - What changes depend on it ### 4. Build Dependency Graph Identify how changes relate to each other: - **Foundation changes**: Types, interfaces, schemas that other code depends on - **Implementation changes**: Code that uses the foundation - **Integration changes**: Code that ties implementations together - **Test/config changes**: Usually depend on everything else Order groups so that: 1. Dependencies come before dependents 2. Lower-level abstractions come before higher-level ones 3. Core changes come before peripheral changes ### 5. Present the Mental Model Output the analysis in this format: ```markdown ## Mental Model: [Brief title of what these changes accomplish] ### High-Level Summary [2-3 sentences explaining the overall goal and approach of these changes] ### Key Concepts to Understand Before diving into the code, understand these concepts: - **[Concept 1]**: [Brief explanation] - **[Concept 2]**: [Brief explanation] - **[Concept 3]**: [Brief explanation] ### Change Groups (in review order) #### 1. [Group Name] - [Purpose] **Files:** `file1.ts`, `file2.ts` **Why this matters:** [Explain the purpose and context] **Key changes:** - [Change 1 and why] - [Change 2 and why] **Depends on:** Nothing (foundation) **Enables:** [What other groups need this] #### 2. [Group Name] - [Purpose] **Files:** `file3.ts`, `file4.ts` **Why this matters:** [Explain the purpose and context] **Key changes:** - [Change 1 and why] - [Change 2 and why] **Depends on:** Group 1 **Enables:** [What other groups need this] [Continue for all groups...] ### Review Sequence For the best understanding, review in this order: 1. **[Group 1]** - Start here because [reason] 2. **[Group 2]** - Then this because [reason] 3. **[Group 3]** - Finally this because [reason] ### Gotchas and Non-Obvious Details - [Any tricky parts or things that might be confusing] - [Implicit assumptions in the code] - [Things that look wrong but are intentional] ``` ## Important Notes - **Focus on understanding, not just describing**: Explain WHY changes were made, not just WHAT changed - **Use the user's domain language**: If the codebase has specific terminology, use it - **Be honest about complexity**: If something is genuinely complex, say so and break it down further - **Highlight the "aha moments"**: What insight makes everything click into place? - **Skip trivial changes**: Don't waste mental bandwidth on import reordering, formatting, etc. ## Error Handling If git command fails: - Report the specific error - Suggest alternatives (e.g., "Did you mean branch X?") If diff is empty: - Report "No changes found for the specified source" If changes are too large to analyze meaningfully: - Provide a high-level overview first - Offer to deep-dive into specific areas: "This is a large changeset. Want me to focus on a specific area? (e.g., 'the API changes' or 'the database migrations')" ## Example Output For a commit that adds user authentication: ```markdown ## Mental Model: Adding JWT-based User Authentication ### High-Level Summary These changes add user authentication using JWT tokens. The flow is: user submits credentials → server validates → server returns JWT → client stores and sends JWT with requests → server validates JWT on protected routes. ### Key Concepts to Understand - **JWT (JSON Web Token)**: A signed token containing user identity, passed in Authorization header - **Middleware pattern**: Express middleware t
Refactor bloated AGENTS.md, CLAUDE.md, or similar agent instruction files to follow progressive disclosure principles. Splits monolithic files into organized, linked documentation.
Use this agent when you need to visualize UI concepts through ASCII mockups before implementation. Examples: <example>Context: User has an idea for a dashboard layout with data tables and charts. user: 'I want to create a dashboard that shows user analytics with a sidebar navigation, main content area with charts, and a data table below' assistant: 'I'll use the ascii-ui-mockup-generator agent to create multiple ASCII mockup variations for your dashboard concept.' <commentary>The user wants to visualize a UI concept, so use the ascii-ui-mockup-generator to create multiple ASCII representations they can choose from.</commentary></example> <example>Context: User is designing a form layout with multiple input fields. user: 'I need a contact form with name, email, message fields and a submit button' assistant: 'Let me use the ascii-ui-mockup-generator to create several ASCII mockup options for your contact form layout.' <commentary>Since the user needs to visualize form layouts, use the ascii-ui-mockup-generator to provide multiple ASCII design options.</commentary></example>
Create API handoff documentation for frontend developers. Use when backend work is complete and needs to be documented for frontend integration, or user says 'create handoff', 'document API', 'frontend handoff', or 'API documentation'.
Generate architecture documentation using C4 model Mermaid diagrams. Use when asked to create architecture diagrams, document system architecture, visualize software structure, create C4 diagrams, or generate context/container/component/deployment diagrams. Triggers include "architecture diagram", "C4 diagram", "system context", "container diagram", "component diagram", "deployment diagram", "document architecture", "visualize architecture".
codebase-pattern-finder is a useful subagent_type for finding similar implementations, usage examples, or existing patterns that can be modeled after. It will give you concrete code examples based on what you're looking for! It's sorta like codebase-locator, but it will not only tell you the location of files, it will also give you code details!
Use when the user asks to run Codex CLI (codex exec, codex resume) or references OpenAI Codex for code analysis, refactoring, or automated editing. Uses GPT-5.2 by default for state-of-the-art software engineering.
Create a detailed implementation plan using Codex 5.2 with high reasoning
This skill should be used when creating a Claude Code slash command. Use when users ask to "create a command", "make a slash command", "add a command", or want to document a workflow as a reusable command. Essential for creating optimized, agent-executable slash commands with proper structure and best practices.