Skip to content
cccskills
FreePublished on 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.

OriginalShow the original description

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/openpanel7,217 stars(GitHub 7,217 + cccskills 0)

Run score Not tested

See how to install

Good for

  • 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

Files included (1)

  • SKILL.md5.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

merge

FreeSummary

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/openpanel7.2KUpdated Oct 29, 2026

pr

FreeSummary

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/openpanel7.2KUpdated Oct 29, 2026

sdk-testbed

FreeSummary

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/openpanel7.2KUpdated Oct 29, 2026

See all skills by Openpanel-dev

Report a problem with this skill