跳到正文
cccskills
免费在 GitHub 公开

clean-code

Apply concise coding standards when writing or reviewing code. The guide covers naming, function boundaries, useful comments, and common anti-patterns, plus checks to make before editing and verification steps to run before calling a change complete.

中文简介正在准备中。当前显示英语简介。

原文查看原文说明

Coding standards for this repo - concise, direct, no over-engineering, and no comments that carry no knowledge. Use when writing or reviewing any code here, and whenever adding a comment.

Openpanel-dev/openpanel星标 7,217(GitHub 7,217 + cccskills 0)

实测评分 未实测

查看安装方法

适用场景

  • Reviewing code for unnecessary abstractions or nesting
  • Choosing clearer names and function boundaries
  • Deciding whether a comment adds useful context
  • Checking dependencies and verification steps before finishing

包含的文件(1)

  • SKILL.md5.0 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Clean code

Adapted from davila7/claude-code-templates (MIT). The comment rules below are this repo's own, derived from what a 2026-09-28 cleanup actually found.

AGENTS.md and packages/core/AGENTS.md are the binding contract. Where this file and either of those disagree, they win.

Core principles

PrincipleRule
SRPOne responsibility per function. But see the size note below.
DRYAt the narrowest level that fits — the module first. Never invent a cross-module abstraction for two call sites.
KISSThe simplest thing that works.
YAGNINo abstraction, parameter or hook for a need that does not exist yet.
Boy ScoutLeave what you touch cleaner — inside the task's scope only.

Naming

ElementConvention
VariablesReveal intent: userCount, not n. No abbreviations unless universal.
FunctionsVerb + noun: getUserById(), not user().
BooleansQuestion form: isActive, hasPermission, canEdit.
ConstantsSCREAMING_SNAKE, at the top of the file or in the module's <name>.constants.ts. Never a magic number inline.

If you need a comment to explain a name, rename it.

Function size — read this before splitting anything

packages/core/AGENTS.md is explicit: "a coherent 100-line function beats twenty five-line fragments. Split where a reader benefits, not to satisfy a metric."

So: no line limit. Split when a reader benefits. Keep arguments few, prefer an options object over four positionals, use guard clauses and early returns, and avoid nesting past two levels.

Comments — the part that actually goes wrong here

Comment the why, briefly: an invariant, a non-obvious side effect, a constraint that bit someone, a reason the obvious spelling is wrong. Never narrate what the code does.

These five shapes are banned. Each one was found in bulk in this repo and deleted:

BannedWhyInstead
Restating a rule from AGENTS.md — // Isomorphic by the AGENTS.md rule: zod and nothing else.True of every file of that name, machine-enforced by the constants-stay-isomorphic cruiser rule, and visible from the imports. Zero knowledge.Nothing. Delete it.
Citing a document the repo does not contain — // Cluster note (docs/ENVIRONMENT.md): …479 ADR-nnn and ~90 doc links pointed into a checkout that never ships. An unresolvable citation reads as authority it cannot back.State the fact itself, with no citation.
Provenance — // Moved from packages/db/src/services/x.service.tsSays nothing about the file you have open, and rots the moment the path moves.Nothing. git log knows.
Referring to a system that no longer exists — // exactly as V1 does, // V1's twinJustifies current behaviour by a reference point the reader cannot check.State the rule the code follows.
Task ids — // M10-005:, // P11:Meaningless outside the tracker that issued them.Nothing.

A comment that survives those five says something a careful reader could not have got from the code. That is the bar.

Anti-patterns

Don'tDo
Comment every lineDelete the obvious ones
Helper for a one-linerInline it
Factory for two objectsConstruct them directly
A utils.ts holding one functionPut it where it is used
Deep nestingGuard clauses
Magic numbersNamed constants
God functionsSplit by responsibility, not by line count
anyunknown, then narrow
as assertionsNarrowing
console.log / debugger left behindRemove before finishing

Before editing a file

AskBecause
What imports this?They may break — grep -rn "from '.*<name>'"
What does it import?An interface change ripples
What tests cover it?Run them, not the whole suite
Is it on a package's public surface?packages/core/src/index.ts and the exports map are contracts

Edit the file and every dependent in the same change. Never leave a broken import or a half-applied rename.

Before saying it is done

Run what the change warrants, from AGENTS.md's verification table — not the whole suite for a one-line fix, and always the full one for a query or ingest change:

bun run typecheck                      # always
npx ultracite fix <files you changed>  # always; they must come out clean
bun test --isolate                     # in packages/core, for backend changes
bunx vitest run                        # in apps/start, for dashboard changes
bun run check:deps                     # if you touched a package boundary

Report what you ran and what you saw. A screenshot or a query result is evidence; "should work" is not.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

merge

免费

Review a GitHub pull request’s final diff and prepare a squash commit message that captures user-visible changes and upgrade notes. It checks merge readiness and required status checks, then merges under the skill’s stated conditions.

中文简介正在准备中。当前显示英语简介。

  • Preparing a complete release note from a PR’s changes
  • Squash merging a reviewed GitHub pull request
  • Checking required CI results before merging
Openpanel-dev/openpanel72172026年10月29日 更新

pr

免费

Use this workflow to push a branch, create or find its pull request, and work through CodeRabbit review feedback in rounds. It fixes valid issues, replies to other comments, and stops with a report when reviews or checks cannot proceed.

中文简介正在准备中。当前显示英语简介。

  • Opening a pull request for the current branch
  • Picking up an existing open pull request
  • Working through CodeRabbit review comments
Openpanel-dev/openpanel72172026年10月29日 更新

Verify JavaScript SDK changes through a browser journey in a sample shop connected to a local API. The workflow checks that tracked events reach ClickHouse, a database for analytics, with expected paths and properties.

中文简介正在准备中。当前显示英语简介。

  • Checking that an SDK event is stored after a browser action
  • Verifying event paths and properties in ClickHouse
  • Testing identify, groups, revenue, or session behavior
Openpanel-dev/openpanel72172026年10月29日 更新

查看 Openpanel-dev 的全部技能

报告此技能的问题