Token导航 LogoToken导航

Agent Skill · 研究检索

clean-code(干净的代码)

clean-code 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

clean-code 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证信息还不明确,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 4,376。

总安装 32,928周安装 1,441GitHub Stars 779下载 11,536核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:clean-code(干净的代码)
来源仓库:https://github.com/wondelai/skills
仓库路径:skills/clean-code
安装命令:
npx skills add https://github.com/wondelai/skills --skill clean-code
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/wondelai/skills --skill clean-code

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

clean-code 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。它可结合来源仓库、安装命令和原始 README 继续核验具体用法。

安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。安装命令:npx skills add https://github.com/wondelai/skills --skill clean-code 来源仓库:https://github.com/wondelai/skills

来源仓库内路径:skills/clean-code

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/wondelai/skills --skill clean-code;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

clean-code 怎么安装?

在终端执行 npx skills add https://github.com/wondelai/skills --skill clean-code。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

clean-code 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

clean-code 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

clean-code 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

clean-code 用的人多吗?

公开数据是累计安装 32,928 次,近一周安装 1,441 次,下载 11,536 次,GitHub 779 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

clean-code 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
clean-code

干净的代码 · 本页

32,928779需要联网未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Clean Code Framework

A disciplined approach to writing code that communicates intent, minimizes surprises, and welcomes change. Apply these principles when writing new code, reviewing pull requests, refactoring legacy systems, or advising on code quality improvements.

Core Principle

Code is read far more often than it is written. Optimize for the reader. Every naming choice, function boundary, and formatting decision either adds clarity or adds cost. The ratio of time spent reading code to writing code is well over 10:1. Making code easier to read makes it easier to write, easier to debug, and easier to extend.

The foundation: Clean code is not about following rules mechanically -- it is about caring for the craft. A clean codebase reads like well-written prose: names reveal intent, functions tell a story one step at a time, and there are no surprises lurking in dark corners. The Boy Scout Rule applies: always leave the code cleaner than you found it.

Scoring

Goal: 10/10. When reviewing or writing code, rate it 0-10 based on adherence to the principles below. A 10/10 means full alignment with all guidelines; lower scores indicate gaps to address. Always provide the current score and specific improvements needed to reach 10/10.

  • 9-10: Names reveal intent, functions are small and focused, error handling is consistent, tests are clean and comprehensive.
  • 7-8: Mostly clean with minor naming ambiguities or a few long functions. Tests exist but may lack edge cases.
  • 5-6: Mixed quality -- some good patterns alongside unclear names, duplicated logic, or inconsistent error handling.
  • 3-4: Significant readability issues -- long functions doing multiple things, misleading names, poor or missing tests.
  • 1-2: Code works but is nearly unreadable -- magic numbers, cryptic abbreviations, no structure, no tests.

The Clean Code Framework

Six disciplines for writing code that communicates clearly and adapts to change:

1. Meaningful Names

Core concept: Names should reveal intent, avoid disinformation, and make the code read like prose. If a name requires a comment to explain it, the name is wrong.

Why it works: Names are the most pervasive form of documentation. A well-chosen name eliminates the need to read the implementation. A poorly chosen name forces every reader to reverse-engineer the author's intent.

Key insights:

  • Names should answer why it exists, what it does, and how it is used
  • Avoid single-letter variables except for loop counters in tiny scopes
  • Avoid encodings, prefixes, and type information in names (no Hungarian notation)
  • Class names should be nouns or noun phrases; method names should be verbs or verb phrases
  • Use one word per concept consistently: don't mix fetch, retrieve, and get
  • Longer scopes demand longer, more descriptive names
  • Don't be afraid to rename -- IDEs make it trivial

Code applications:

ContextPatternExample
VariablesIntention-revealing nameelapsedTimeInDays not d or elapsed
BooleansPredicate phrasingisActive, hasPermission, canEdit
FunctionsVerb + noun describing actioncalculateMonthlyRevenue() not calc()
ClassesNoun describing responsibilityInvoiceGenerator not InvoiceManager
ConstantsSearchable, all-caps with contextMAX_RETRY_ATTEMPTS = 3 not 3 inline
CollectionsPlural nouns or descriptive phrasesactiveUsers not list or data

See: references/naming-conventions.md

2. Functions

Core concept: Functions should be small, do one thing, and do it well. The ideal function is 4-6 lines long, takes zero to two arguments, and operates at a single level of abstraction.

Why it works: Small functions are easy to name, easy to understand, easy to test, and easy to reuse. When a function does one thing, its name can describe exactly what it does, eliminating the need to read the body. Long functions hide bugs, resist testing, and accumulate responsibilities over time.

Key insights:

  • Functions should do one thing, do it well, and do it only
  • The Step-Down Rule: code should read like a top-down narrative, each function calling the next level of abstraction
  • Ideal argument count is zero (niladic), then one (monadic), then two (dyadic); three or more (polyadic) requires justification
  • Flag arguments (booleans) are a code smell -- they mean the function does two things
  • Command-Query Separation: a function should either change state or return a value, never both
  • Extract till you drop: if you can extract a named function from a block, do it
  • Functions should have no side effects -- no hidden changes to state

Code applications:

ContextPatternExample
Long functionExtract into named stepsvalidateInput(); transformData(); saveRecord();
Flag argumentSplit into two functionsrenderForPrint() and renderForScreen() not render(isPrint)
Deep nestingExtract inner blocksMove nested if/for bodies into named functions
Multiple returnsGuard clauses at topEarly return for error cases, single happy path
Many argumentsIntroduce parameter objectnew DateRange(start, end) not report(start, end, format, locale)
Side effectsMake effects explicitRename checkPassword() to checkPasswordAndInitSession() or separate

See: references/functions-and-methods.md

3. Comments and Formatting

Core concept: A comment is a failure to express yourself in code. Good code is self-documenting. When comments are necessary, they should explain *why*, never *what*. Formatting creates the visual structure that makes code scannable.

Why it works: Comments rot. Code changes but comments often do not, creating misleading documentation that is worse than no documentation. Clean formatting -- consistent indentation, vertical spacing between concepts, and logical ordering -- lets developers scan code the way readers scan a newspaper: headlines first, details on demand.

Key insights:

  • The best comment is the code itself -- extract a well-named function instead of writing a comment
  • Legal comments (copyright headers) and TODO comments are acceptable
  • Javadoc for public APIs is valuable; Javadoc for internal code is noise
  • Commented-out code should be deleted -- version control remembers it
  • Journal comments (changelog in the file) are obsolete -- use git log
  • Vertical openness: separate concepts with blank lines
  • Vertical density: related code should appear close together
  • Variables should be declared close to their usage
  • Instance variables should be declared at the top of the class

Code applications:

ContextPatternExample
Explaining "what"Replace with better nameRename // check if eligible to isEligible()
Explaining "why"Keep as comment// RFC 7231 requires this header for proxies
Commented-out codeDelete itTrust version control to remember
File organizationNewspaper metaphorHigh-level functions at top, details below
Related codeGroup verticallyKeep caller near callee in the same file
Team formattingAgree on rules onceUse automated formatters (Prettier, Black, gofmt)

See: references/comments-formatting.md

4. Error Handling

Core concept: Error handling is a separate concern from business logic. Use exceptions rather than return codes, provide context with every exception, and never return or pass null.

Why it works: Return codes force the caller to check immediately, cluttering the happy path with error-checking logic. Exceptions let you separate the happy path from error handling, making both easier to read. Returning null forces every caller to add null checks, and a single missing check produces a NullPointerException far from the source.

Key insights:

  • Write your try-catch block first -- it defines a transaction boundary
  • Use unchecked exceptions -- checked exceptions violate the Open/Closed Principle
  • Create informative exception messages: include the operation that failed and the context
  • Define exception classes in terms of the caller's needs, not the type of failure
  • The Special Case Pattern: return a special-case object instead of null (e.g., empty list, guest user)
  • Don't return null -- return empty collections, Optional, or throw
  • Don't pass null -- no reasonable behavior exists for null arguments
  • Wrap third-party APIs to translate their exceptions into your domain

Code applications:

ContextPatternExample
Null returnsReturn empty collection or Optionalreturn Collections.emptyList() not return null
Error codesReplace with exceptionsthrow new InsufficientFundsException(balance, amount)
Third-party APIsWrap with adapterPortfolioService wraps vendor API, translates exceptions
Null argumentsFail fast with assertionObjects.requireNonNull(user, "user must not be null")
Special casesNull Object patternGuestUser with default behavior instead of null checks
Context in errorsInclude operation + state"Failed to save invoice #1234 for customer 'Acme'"

See: references/error-handling.md

5. Unit Testing

Core concept: Tests are first-class code. They must be clean, readable, and maintained with the same discipline as production code. Dirty tests are worse than no tests -- they become a liability that slows every change.

Why it works: Clean tests serve as executable documentation, showing exactly how the system is intended to behave. They provide a safety net for refactoring and a regression check for every change. Without tests, every modification is a potential bug. With dirty tests, every modification requires fighting through incomprehensible test code.

Key insights:

  • The Three Laws of TDD: (1) write a failing test first, (2) write only enough test to fail, (3) write only enough code to pass
  • One concept per test -- not necessarily one assert, but one logical assertion
  • Tests should be readable: use the Build-Operate-Check pattern (Arrange-Act-Assert)
  • F.I.R.S.T. principles: Fast, Independent, Repeatable, Self-validating, Timely
  • Test names should describe the scenario and expected behavior
  • Test code deserves the same refactoring attention as production code
  • Domain-specific testing language: build helper functions that read like a DSL

Code applications:

ContextPatternExample
Test structureArrange-Act-AssertSetup, execute, verify -- clearly separated
Test namingScenario + expected behaviorshouldRejectExpiredToken not test1
Shared setupExtract builder/factoryaUser().withRole(ADMIN).build()
Multiple scenariosParameterized testsOne test method, multiple input/output pairs
Flaky testsRemove external dependenciesMock time, network, file system
Test readabilityDomain-specific helpersassertThatInvoice(inv).isPaidInFull()

See: references/testing-principles.md

6. Code Smells and Heuristics

Core concept: Code smells are surface indicators of deeper design problems. Learn to recognize them quickly and apply targeted refactorings. Not every smell requires immediate action, but ignoring them accumulates technical debt.

Why it works: Smells are heuristics -- they point toward likely problems without requiring deep analysis. A developer who can quickly identify "this function has too many arguments" or "this class has feature envy" can make targeted improvements instead of vague "cleanup" efforts.

Key insights:

  • Comments: inappropriate information, obsolete comments, redundant comments that repeat the code
  • Functions: too many arguments, output arguments, flag arguments, dead functions never called
  • General: obvious duplication, code at wrong level of abstraction, feature envy (method uses another class more than its own), magic numbers
  • Names: names at wrong abstraction level, names that don't describe side effects, ambiguous short names
  • Tests: insufficient tests, skipped tests, untested boundary conditions, no failure-path tests
  • Apply the Boy Scout Rule: leave code cleaner than you found it
  • Refactor in small, tested steps -- never refactor and add features simultaneously

Code applications:

ContextPatternExample
DuplicationExtract shared logicCommon validation → validateEmail() helper
Long parameter listIntroduce parameter objectSearchCriteria groups related params
Feature envyMove method to data's classorder.calculateTotal() not calculator.total(order)
Dead codeDelete itRemove unused functions, unreachable branches
Magic numbersNamed constantsMAX_LOGIN_ATTEMPTS = 5 not bare 5
Shotgun surgeryConsolidate related changesGroup scattered logic into a single module

See: references/code-smells.md

Common Mistakes

MistakeWhy It FailsFix
Abbreviating namesSaves seconds writing, costs hours readingUse full, descriptive names; IDEs autocomplete
"Clever" one-linersImpressive to write, impossible to debugExpand into readable steps with clear names
Comments instead of refactoringComments rot; code is the truthExtract well-named function instead of commenting
Catching generic exceptionsSwallows bugs along with expected errorsCatch specific exceptions, let unexpected ones propagate
No tests for error pathsHappy path works, edge cases crashTest every branch, boundary, and failure mode
Premature optimizationObscures intent for marginal performanceWrite clean code first, optimize measured bottlenecks
God classesOne class, 2000 lines, does everythingApply SRP -- split by responsibility
Refactoring without testsNo safety net to catch regressionsWrite characterization tests before refactoring
Inconsistent conventionsEvery file feels like a different codebaseAgree on style, enforce with linters and formatters
Returning null everywhereNull checks spread like a virusUse Optional, empty collections, or Null Object pattern

Quick Diagnostic

Audit any codebase:

QuestionIf NoAction
Can you understand each function without reading its body?Names don't reveal intentRename functions to describe what they do
Are all functions under 20 lines?Functions do too many thingsExtract sub-operations into named helpers
Are there zero commented-out code blocks?Dead code creating confusionDelete them -- version control has history
Is error handling separate from business logic?Try-catch blocks cluttering main flowExtract error handling; use exceptions not return codes
Does every class have a single responsibility?Classes accumulate unrelated dutiesSplit into focused classes with clear names
Is there a test for every public method?No safety net for changesAdd tests before making further changes
Are test names descriptive of behavior?Tests are hard to understand when they failRename to shouldDoXWhenY pattern
Is duplication below 3 occurrences?Copy-paste spreading bugsExtract into shared function or module
Are magic numbers replaced with named constants?Intent is hidden behind raw valuesExtract constants with descriptive names
Can you run all tests in under 10 seconds?Slow tests discourage running themMock external deps, split integration tests

Reference Files

  • naming-conventions.md: Intention-revealing names, avoiding disinformation, class vs. method naming, before/after examples
  • functions-and-methods.md: Small functions, argument counts, command-query separation, the step-down rule, side effects
  • comments-formatting.md: Good vs. bad comments, the newspaper metaphor, vertical formatting, team rules
  • error-handling.md: Exceptions over return codes, null handling, Special Case pattern, wrapping third-party APIs
  • testing-principles.md: TDD laws, F.I.R.S.T. principles, clean test patterns, test readability
  • code-smells.md: Comprehensive smell catalog organized by category, with targeted refactorings

Further Reading

This skill is based on Robert C. Martin's seminal guide to software craftsmanship:

About the Author

Robert C. Martin ("Uncle Bob") is a software engineer, instructor, and author who has been programming since 1970. He is a co-author of the Agile Manifesto and the founder of Uncle Bob Consulting LLC and Clean Coders. His books -- *Clean Code* (2008), *The Clean Coder* (2011), *Clean Architecture* (2017), and *Clean Agile* (2019) -- have shaped how an entire generation of developers think about code quality, professional responsibility, and software design. Martin is known for his uncompromising stance that developers are professionals who must take responsibility for the quality of their work, and that the only way to go fast is to go well.

平台分布

Codex

36.53%
按下载量换算4,214

Claude

28.37%
按下载量换算3,273

Cursor

18.42%
按下载量换算2,125

Gemini CLI

9.7%
按下载量换算1,119

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills