name: clean-code
description: >
Knowledge base distilled from "Clean Code: A Handbook of Agile Software Craftsmanship"
by Robert C. Martin (Uncle Bob): all 17 chapters plus a decision cheat sheet, a technique
and pattern catalogue, a glossary, and a cross-language map. Use it to apply Uncle Bob's
frameworks for meaningful names, small functions, comments, formatting, objects vs data
structures, error handling, boundaries, unit tests / TDD, class design (SRP), systems,
concurrency, refactoring, and code smells — while writing code, reviewing a diff, cleaning
up, or doing TDD. Trigger phrases: clean code, 整洁代码, 代码整洁, 重构, refactor, 代码质量;
naming, 命名, meaningful names, 变量名, 函数名, 命名规范; 函数设计, 小函数, do one thing,
函数拆分; 注释, comments, 该不该写注释; TDD, 单元测试, unit test, 测试驱动, clean tests;
异常处理, error handling, 异常设计; 代码味道, code smell, 坏味道, 反模式, code review;
SRP, 面向对象, 类设计, 对象与数据结构, 并发.
Clean Code
Author: Robert C. Martin (Uncle Bob) | Pages: ~462 | Chapters: 17 | Generated: 2026-08-24
Purpose
A synthesised study aid for Clean Code: it maps every named framework, principle,
anti-pattern, and heuristic in the book to a reference file, then routes a question or a
review finding to the file that answers it. It produces grounded advice with chapter
citations — not the book text, and not a linting tool.
When to Use
- Naming, functions, comments, formatting, objects vs data structures, error handling,
boundaries, tests/TDD, classes/SRP, systems, concurrency, refactoring, code smells.
- A live review or cleanup where you must name why something is a smell and what to do.
- Studying the book, or asking "what does Uncle Bob say about X".
- Trigger phrases: 整洁代码, 重构, 代码质量, 命名, 函数设计, 注释, 代码味道, 反模式, 测试驱动;
clean code, naming, TDD, error handling, code smell, code review, SRP.
When NOT to Use
- Review-and-fix of a diff ->
claude-simplify runs the review and applies fixes; this
skill only supplies the justification the review cites.
- Beyond the book — design patterns, architecture, framework idioms -> say it is out of
scope; do not extrapolate book positions.
- Untrusted third-party code safety ->
skill-security-check.
- Language tooling (linters, formatters, rule configs) -> not covered.
Workflow
A. Look something up
- Classify the question into a topic in the Decision Rules table.
- Read that one file; preloading
references/ defeats the routing table.
- Follow a chapter's cross-reference only when the question actually needs it.
- Answer from the loaded content, citing chapter and heuristic ids (
Ch 3, G5, F1).
- For a non-Java language, read
references/appendix-lang-map.md and translate rather than
quoting Java syntax.
B. Apply the book to a live code review
- Read
references/cheatsheet.md — it is the review lens.
- Tag each diff finding with its C/E/F/G/J/N/T heuristic id; load
references/chapters/ch17-smells-and-heuristics.md for tags absent from the cheat sheet.
- Name the fixing framework, then load the chapter that owns it via the routing table.
- Load
references/patterns.md when the fix is a technique and you need its trade-offs.
- Report each finding as: id -> why -> fix -> citation.
Decision Rules
Route by topic; load exactly one row's file:
| Topic | File | Topic | File |
|---|
| Boy Scout Rule, LeBlanc's law, professionalism | references/chapters/ch01-clean-code.md | Classes, SRP, cohesion | references/chapters/ch10-classes.md |
| Naming: intent-revealing, no encodings | references/chapters/ch02-meaningful-names.md | Systems: construction vs use, DI, factory | references/chapters/ch11-systems.md |
| Functions: Do One Thing, step-down, CQS, args | references/chapters/ch03-functions.md | Four Rules of Simple Design, emergence | references/chapters/ch12-emergence.md |
| Comments: good vs bad | references/chapters/ch04-comments.md | Concurrency: isolation, shared state | references/chapters/ch13-concurrency.md |
| Formatting: newspaper metaphor, ordering | references/chapters/ch05-formatting.md | Args case study, festering pile, refinement | references/chapters/ch14-successive-refinement.md |
| Objects vs data, Law of Demeter | references/chapters/ch06-objects-and-data-structures.md | Extract Method, Collecting Parameter | references/chapters/ch15-junit-internals.md |
| Errors, null, Special Case | references/chapters/ch07-error-handling.md | enum over int, Feature Envy fix, factory | references/chapters/ch16-refactoring-serialdate.md |
| Boundaries, learning tests, adapters | references/chapters/ch08-boundaries.md | Smells (C/E/F/G/J/N/T), DRY, ONE SWITCH | references/chapters/ch17-smells-and-heuristics.md |
| TDD three laws, F.I.R.S.T., BUILD-OPERATE-CHECK | references/chapters/ch09-unit-tests.md | | |
Cross-chapter topics: Demeter / Feature Envy -> ch06 + ch17; DRY -> ch12 + ch17;
refactoring -> ch14 + ch16; Boy Scout Rule -> ch01 + ch15.
Other routing:
- One-line definition only ->
references/core-frameworks.md; escalate to the chapter after.
- Concrete technique or pattern + trade-offs ->
references/patterns.md.
- A term you cannot place ->
references/glossary.md, which names its chapter.
- A "what should I decide" question ->
references/cheatsheet.md.
- Conflict between two answers -> apply Priority below.
Constraints
- Never present this skill as the book's verbatim text. It is a study aid; attribute
paraphrases as "the book's argument", never as a quotation.
- Cite chapter and heuristic ids whenever you assert a principle.
- Do not summarise detail away. One-liners orient only; when reasoning or edge cases
matter, read the chapter and answer from it.
- Principles are language-agnostic. Java examples are carriers, not the rule.
- Stay in scope. Outside Clean Code, say so instead of inventing book positions.
Priority
When rules compete:
- Pass all tests before any other design improvement — Simple Design rule 1 (Ch 12).
- Then, in the book's order: remove duplication, polish expressiveness, minimise the number
of classes/methods (Ch 12).
- Project conventions and language idioms override the Java-specific J-series heuristics.
- Name the smell before proposing the fix — an unnamed finding cannot be checked.
Stop Conditions
- Stop once the routed file answers the question; never read all 17 chapters.
- Do not chase a framework past the one linked chapter unless the user wants the derivation.
- Topic outside the book -> stop and say so.
Verification
Output
- Outcome: Clean Code guidance with chapter citations, or a coded review of a diff.
- Done when: the question is classified, the routed reference was read, and the answer
cites its source.
- Evidence: the framework or smell id, its chapter, and the concrete change to make.
References
Load only when needed:
references/core-frameworks.md — read for a one-line definition before escalating.
references/cheatsheet.md — read first for any live review or "what should I decide" case.
references/glossary.md — read when a term is unfamiliar; it gives the owning chapter.
references/patterns.md — read when the fix needs a technique and its trade-offs.
references/appendix-lang-map.md — read before quoting Java syntax to a non-Java user.
references/chapters/ — read only the single chapter named by the routing table.
Related Skills
claude-simplify — runs a diff review and fixes findings; pair with this skill for the
taxonomy behind each finding.
skill-security-check — pre-install safety review, a different concern.