Battle-skills code-explainer
Explain and analyze source code for learning. Auto-detects prerequisite knowledge and creates docs before explaining. Use when asked to explain, analyze, break down, or teach code.
git clone https://github.com/QuocTang/battle-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/QuocTang/battle-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/code-explainer" ~/.claude/skills/quoctang-battle-skills-code-explainer && rm -rf "$T"
skills/code-explainer/SKILL.mdCode Explainer
Create comprehensive, beginner-friendly code explanations that include foundational knowledge, line-by-line annotations, analogies, ASCII diagrams, and FAQ sections.
When to Use This Skill
- User asks to explain, analyze, or document code for learning
- User wants to understand a new codebase or unfamiliar script
- Creating educational documentation for a project
- Onboarding material for new developers joining a project
- User says "I don't understand this code" or "what does this do"
When NOT to Use This Skill
- User wants API reference docs → use a doc-generation tool instead
- User wants to refactor or fix code → just do the refactoring
- User only needs a one-line summary → answer directly, don't create full docs
Core Rules
- English only — All output documents must be in English
- Analogies first — Every complex concept MUST have a real-world analogy
- Progressive depth — Start simple, then go deeper. Never assume prior knowledge
- Show, don't just tell — Use ASCII diagrams, code examples, tables for comparison
- Language-agnostic — This skill works for ANY programming language or framework
- Foundational knowledge auto-detect — If the code uses domain-specific concepts (DL, web frameworks, databases, DevOps, etc.), create a prerequisite knowledge doc FIRST
Workflow
Step 1 — Survey the Code
Read the code and determine:
- Language & framework (Python + PyTorch? TypeScript + Next.js? Go + gRPC?)
- Domain (Machine Learning? Web? Systems? Data pipeline? DevOps?)
- Complexity level — Does the reader need foundational knowledge?
- Key concepts — List every concept a beginner would NOT know
Example survey output (internal, not in final doc): Language: Python Framework: Ultralytics (YOLO), PyTorch Domain: Deep Learning — Object Detection Foundational knowledge needed: YES Key concepts: transfer learning, GPU/CUDA, loss functions, hyperparameters, bounding boxes, epochs, batch size
Step 2 — Create Foundational Knowledge Doc (if needed)
If Step 1 identifies domain-specific concepts, create
00_foundational_knowledge.md BEFORE explaining any code.
When to create this doc:
- Code uses specialized libraries (PyTorch, TensorFlow, React, Kubernetes, etc.)
- Domain has jargon a general developer wouldn't know
- Multiple scripts share common concepts → explain once, reference everywhere
Structure of the foundational knowledge doc:
# 🧠 Foundational Knowledge — Read Before Starting > **Goal:** Understand the core concepts needed to read the code in this project. > If you already know [DOMAIN], you can skip this file. --- ## 1. [High-Level Concept] [Analogy] + [Simple explanation] + [Why it matters for this project] ## 2. [Next Concept] ... ## N. Key Terminology | Term | Explanation | Analogy | | ---- | ----------- | ------- | | ... | ... | ... | ## Project Flow Summary [ASCII diagram showing how all scripts connect]
For the full template, see references/output-template.md
Step 3 — Explain the Code
For each code file, create a documentation file following this structure:
# 📄 File: `filename.py` — [One-line purpose] > **Goal:** [What the reader will understand after reading this doc] --- ## 📋 Original Code (Annotated) \`\`\`python # — SECTION NAME — code_line_here # Inline comment explaining what this does \`\`\` --- ## 🧩 Detailed Explanation ### [Concept 1 from the code] [Analogy] → [Technical explanation] → [ASCII diagram if applicable] ### [Concept 2] ... --- ## 📝 Language Syntax Explained ### `some_syntax_here` \`\`\`python # What it does + example \`\`\` --- ## ❓ FAQ **Q: [Common question]** A: [Clear answer] --- > **Next:** [link to next file]
Step 4 — Create README Index
If multiple files are documented, create/update a
README.md index:
# 📚 Code Documentation ## Table of Contents | # | File | Content | | --- | ----------------------------------- | ------------- | | 0 | [00_foundational_knowledge.md](...) | Prerequisites | | 1 | [01_filename.md](...) | [Description] | | ... | ... | ... | ## Reading Order [ASCII flow showing dependencies]
Analogy Writing Guide
Good analogies are the most important part of this skill. Rules:
| Rule | Example |
|---|---|
| Use everyday objects | "A batch is like a teacher grading 8 papers at once" |
| Match complexity | Don't use a PhD analogy for a simple concept |
| Be consistent | If you compare training to studying, keep that metaphor |
| Use tables for comparisons | CPU vs GPU, SQL vs NoSQL, etc. |
Good Analogy
Learning Rate = the "step size" each time the model updates its knowledge Too large (0.1): Jumping wildly — never converges! Just right (0.005): Steady descent — converges well Too small (0.00001): Standing still — takes forever!
Bad Analogy
Learning rate is a hyperparameter that controls the step size during gradient descent optimization.
(Too technical, no analogy, no visual — useless for beginners)
ASCII Diagram Guide
Use ASCII diagrams for:
- Data flow between scripts/components
- Architecture of systems or models
- Comparisons (before/after, good/bad)
- Visual math (coordinates, grids, layouts)
Example — Data pipeline flow: Raw Data → Clean → Split → Train → Evaluate → Deploy ┌──────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌────────┐ ┌──────┐ │ CSV │→ │Clean│→ │Split│→ │Train│→ │Evaluate│→ │Deploy│ │ JSON │ │ NaN │ │70/30│ │Model│ │Metrics │ │ API │ └──────┘ └─────┘ └─────┘ └─────┘ └────────┘ └──────┘
Anti-Patterns (Avoid)
| ❌ Don't | ✅ Do Instead |
|---|---|
| Explain only WHAT code does | Explain WHY + WHEN + HOW |
| Skip library/framework context | Explain what the library is and why it's used |
| Write walls of text | Use tables, diagrams, code blocks |
| Assume the reader knows jargon | Define every term with an analogy |
| Copy-paste official docs | Rewrite in beginner-friendly language |
| Hard-code for one language | Keep patterns language-agnostic |
| Write foundational knowledge inside code docs | Separate into |
Output File Naming Convention
docs/ ├── README.md ← Index + reading order ├── 00_foundational_knowledge.md ← Domain prerequisites (if needed) ├── 01_[script_name].md ← First script explanation ├── 02_[script_name].md ← Second script └── ...
For full output templates with examples, see references/output-template.md For foundational knowledge patterns by domain, see references/knowledge-patterns.md