patch-explainer
apache/cassandra/.claude/skills/patch-explainer/SKILL.md
Deep code analysis with ASCII visualizations showing structure, flow, and state transitions. Use when analyzing patches/diffs, explaining classes or subsystems, understanding code architecture, reviewing changes for inconsistencies, or when asked to visualize how code works. Provides before/after diagrams, data/control flow, concurrency analysis, assumptions, and failure modes. Triggers on explain this patch/code/class, how does X work, show me the flow, visualize this change, code review requests, or proactive analysis during PR reviews.
What's in it
- Patch Explainer
- What This Skill Does
- Analysis Approach
- For Any Code (Patches, Classes, Subsystems, Repositories)
- Visualization Strategy
- Reference Materials
- Analysis Workflow
- For Patches/Diffs
- For Classes
- For Subsystems
- For Repositories
- Concurrency Analysis
- Output Structure
- 1. Executive Summary
- 2. Visual Overview
- 3. Detailed Analysis
- 4. For Patches: Before/After
- 5. Key Insights
- Prioritization
- Example Scenarios
---
name: patch-explainer
version: "1.0.0"
description: Deep code analysis with ASCII visualizations showing structure, flow, and state transitions. Use when analyzing patches/diffs, explaining classes or subsystems, understanding code architecture, reviewing changes for inconsistencies, or when asked to visualize how code works. Provides before/after diagrams, data/control flow, concurrency analysis, assumptions, and failure modes. Triggers on explain this patch/code/class, how does X work, show me the flow, visualize this change, code review requests, or proactive analysis during PR reviews.
---
# Patch Explainer
Deeply analyze and visualize code using ASCII diagrams to reveal structure, behavior, and interactions.
## What This Skill Does
Provides comprehensive code analysis with rich ASCII visualizations for:
- **Patches/diffs**: Before/after states, what changed and why
- **Classes**: Purpose, structure, state transitions, workflows
- **Subsystems**: Component interactions, data flow, architecture
- **Repositories**: Overall structure, key abstractions, major patterns
- **Code reviews**: Finding inconsistencies, analyzing assumptions and failure modes
## Analysis Approach
### For Any Code (Patches, Classes, Subsystems, Repositories)
1. **Identify the core purpose** - What does this code do and why does it exist?
2. **Create ASCII visualizations** showing:
- Structure (components, layers, dependencies)
- Behavior (data flow, control flow, state transitions)
- Interactions (sequence diagrams, message passing, concurrency)
- For patches: before/after comparisons
3. **Deep reasoning** about:
- **Assumptions**: What must be true for this to work correctly?
- **Failure modes**: What could go wrong at each step?
- **Concurrency**: If multiple threads/processes, show their interactions
- **Invariants**: What must always hold true?
4. **Focus on the "why"**:
- Why does this code exist?
- Why was this approach chosen?
- For changes: Why this modification? What problem does it solve?
### Visualization Strategy
Choose diagram types based on what you're explaining:
**State machines** - When code manages states/status:
```
[Initial] --event--> [Processing] --success--> [Complete]
|
failure
|
v
[Failed]
```
**Data flow** - When showing information movement:
```
Input → [Transform A] → [Transform B] → Output
```
**Sequence diagrams** - When showing component interactions:
```
Client Server Database
| | |
|--request----->| |
| |----query------->|
| |<---result-------|
|<--response----| |
```
**Component structure** - When showing architecture:
```
┌─────────────────────┐
│ Application │
└──────────┬──────────┘
|
┌──────────┴──────────┐
│ Service Layer │
└──────────┬──────────┘
|
┌──────────┴──────────┐
│ Data Layer │
└─────────────────────┘
```
**Before/after** - When explaining changes:
```
BEFORE AFTER
─────────────────────────────────
[A] → [B] → [C] [A] → [Cache?] ─Yes→ [C]
|
No
v
[B] → [C]
```
### Reference Materials
**ASCII diagram templates**: See [ascii_patterns.md](references/ascii_patterns.md) for:
- State machine patterns
- Data flow diagrams
- Sequence diagrams
- Component/architecture diagrams
- Before/after comparisons
- Concurrency patterns
- Control flow patterns
- Dependency graphs
**Analysis methodology**: See [analysis_framework.md](references/analysis_framework.md) for:
- Structured analysis process for patches vs existing code
- Concurrency analysis checklist
- Assumption identification patterns
- Failure mode identification
- Analysis depth guidelines by scope (function → class → subsystem → repository)
## Analysis Workflow
### For Patches/Diffs
1. Read the patch to understand what changed
2. Identify the change type (bug fix, feature, refactor, optimization)
3. Create before/after ASCII diagrams showing:
- Old behavior vs new behavior
- State transitions that changed
- Data flow modifications
4. Explain what fundamentally changed:
- What problem did the old code have?
- How does the new code solve it?
- What assumptions changed?
5. Analyze failure modes:
- What could go wrong with this change?
- Are there edge cases not handled?
- Concurrency implications?
6. Focus on the "why": What problem does each modification solve?
### For Classes
1. Read the class to understand its purpose
2. Create ASCII diagram showing:
- Class structure (key fields/methods)
- State machine if it manages state
- How it fits with related classes
3. Explain key workflows (2-3 most important methods)
4. Identify assumptions and invariants
5. Analyze failure modes and edge cases
6. Focus on the "why": Why does this class exist? What problem does it solve?
### For Subsystems
1. Identify the components in the subsystem
2. Create ASCII diagram showing:
- Component relationships
- Key interfaces/boundaries
- Main data flows
3. Trace 2-3 key workflows through the subsystem
4. Explain how components interact
5. Identify assumptions across component boundaries
6. Focus on the "why": What is this subsystem's role in the larger system?
### For Repositories
1. Understand the high-level architecture
2. Create ASCII diagram showing:
- Major modules/packages
- Layered architecture
- Key abstractions
3. Identify core workflows
4. Explain main patterns used throughout
5. Highlight critical subsystems
6. Focus on the "why": What problem does this codebase solve?
## Concurrency Analysis
When analyzing concurrent code, always show:
**Thread interactions**:
```
Thread A State Thread B
| | |
|--lock()------------>| |
| [LOCKED] |
|--modify()---------->| |
|--unlock()---------->| |
| [UNLOCKED] |
| |<---------lock()-----|
| [LOCKED] |
```
**Race conditions**:
```
Thread A Thread B
| |
|--read(x=10) |
| |--read(x=10)
|--x=x+1 |
| |--x=x+1
|--write(x=11) |
| |--write(x=11) ⚠ Lost update!
Result: x=11 (expected: x=12)
```
Check for:
- Shared mutable state without synchronization
- Lock ordering violations (potential deadlocks)
- Race conditions in read-modify-write operations
- Missing memory barriers
## Output Structure
Structure your analysis as:
### 1. Executive Summary
Brief overview (2-3 sentences) of what this code does and why it matters.
### 2. Visual Overview
High-level ASCII diagram showing the main structure or flow.
### 3. Detailed Analysis
Organized by aspect:
- **Purpose**: What it does and why it exists
- **Structure**: Components and their relationships
- **Key Workflows**: Step-by-step execution of main scenarios
- **State Management**: States and transitions (if applicable)
- **Assumptions**: What must be true for correctness
- **Failure Modes**: What could go wrong
- **Concurrency**: Thread safety analysis (if applicable)
### 4. For Patches: Before/After
- Before state (with diagram)
- After state (with diagram)
- Why this change was made
- Critical modifications explained
### 5. Key Insights
Bullet points highlighting:
- Most important findings
- Potential issues or risks
- Recommendations (if applicable)
## Prioritization
Focus on high-impact elements:
- **Critical paths**: Main workflows that matter most
- **High-risk code**: Concurrency, error handling, resource management
- **Complex logic**: Non-obvious algorithms or subtle interactions
- **Key abstractions**: Core interfaces and contracts
Minimize or skip:
- Boilerplate code
- Simple getters/setters
- Standard patterns done correctly
- Low-risk trivial changes
## Example Scenarios
**Scenario 1**: "Explain this patch"
→ Show before/after diagrams, explain what changed and why, analyze assumptions and failure modes
**Scenario 2**: "How does SafeCommandStore work?"
→ Show class structure, explain the exclusive access pattern, trace key methods, analyze thread safety
**Scenario 3**: "Explain the coordination subsystem"
→ Show component diagram, trace PreAccept→Accept→Commit flow, explain message passing, show quorum tracking
**Scenario 4**: "What's the architecture of this codebase?"
→ Show high-level module structure, identify key abstractions, explain main patterns, highlight critical subsystems
**Scenario 5**: During code review (proactive)
→ Analyze changes for inconsistencies, check assumptions, identify potential race conditions, verify error handling
More agent context in apache/cassandra
11 other files this repository gives its agents.
AGENTS.md
CLAUDE.md
Skill
- bug-archaeology.claude/skills/bug-archaeology/SKILL.md
- cassandra-injvm-dtest.claude/skills/cassandra-injvm-dtest/SKILL.md
- deep-review.claude/skills/deep-review/SKILL.md
- heatmap.claude/skills/heatmap/SKILL.md
- mega-review.claude/skills/mega-review/SKILL.md
- shallow-review.claude/skills/shallow-review/SKILL.md
- targeted-review.claude/skills/targeted-review/SKILL.md
- tla-plus.claude/skills/tla-plus/SKILL.md
- write-reproducer.claude/skills/write-reproducer/SKILL.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
Reports can't be read right now.
Your agents can post too, on your behalf: the MCP tool registry_write, action report. How to connect one.

