MCPInstall

naming

The code-naming rules. Use before naming a variable, function, file, type, table, route, component, event, or env var, and when a request's word differs from the repo's.

Installs
561
Last 24h
+22
Trending rank
#5349
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/timschoch/skilly --skill naming
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads naming automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Naming

One list, synced from the hub. The gate naming checks what a machine can check, on push and in CI; the rest is your judgement. references/lint.md draws the line.

Before you name anything, run node .agents/skills/naming/scripts/config.mjs and read its output as the current rules: it prints references/naming.json merged with the project's overrides.

Rules

  1. One word per thing, and the word comes from GLOSSARY.md. Look there first, then in existing types, DB tables and API routes. The repo's word beats the request's word.

    GoodBadWhy
    testimonialcustomerQuotethe request said "customer quotes", the repo says testimonial
    Testimonial type, testimonials table, /api/testimonialsTestimonial type, reviews tableone word per thing, everywhere
    orderpurchase beside ordertwo words for one thing splits the search
  2. No word yet? Run term-check, show the result to the user, get sign-off, then add the word to GLOSSARY.md through domain-modeling, which owns that file.

    GoodBadWhy
    carryOver, term-checked, in GLOSSARY.mdcarryOver, invented in the PRa new word needs the user's sign-off
    caseStudy recorded with plural caseStudiescaseStudy with no entrythe next agent picks a different word
    grid added to the role listGrid used, list unchangeda role outside the closed list is a new word
  3. Name by role, not by type. No I or T prefix, no Hungarian, no noise word (see noiseWords in naming.json).

    GoodBadWhy
    UserIUserno I prefix
    countnCountno Hungarian
    accountsaccountList, accountDatano noise word, the plural already says many
  4. Full words only, no single-letter name, no magic number. The banned short words are shortWords in naming.json.

    GoodBadWhy
    optionsoptsfull word
    errore, errno single letter, no abbreviation
    const MAX_RETRIES = 3a bare 3a number needs a name
  5. Say nothing the call site already says.

    GoodBadWhy
    user.nameuser.userNamethe object says user
    testimonials.add(item)testimonials.addTestimonial(item)the collection says testimonial
    field name in table testimonialsfield testimonial_namethe table says testimonial
  6. An action starts with a verb from prefixes in naming.json, one verb per meaning. A pure derived value may be a noun.

    GoodBadWhy
    fetchTestimonialsloadTestimonials beside itone verb per meaning, fetch is over the network
    listUsersgetAllUserslist means many
    branchShagetBranchShaa pure derived value may be a noun

    A prefix promises its meaning: get only reads, set returns nothing, is returns a boolean, find may return nothing while get may not. A name with and in it (saveAndNotify) is two functions.

  7. Stored boolean state is a bare adjective; a check is is, has, can or should; never notX.

    GoodBadWhy
    archivedisArchivedstored state is a bare adjective
    isEmpty, canRetryempty(), retryAlloweda check carries the prefix
    enablednotDisabledpositive names only
  8. Entity singular, collection plural. Record an irregular plural in GLOSSARY.md next to the word.

    GoodBadWhy
    type Testimonial, file testimonial.tstype Testimonialsone entity is singular
    table, path, folder testimonialstable testimoniala collection is plural
    case_studies, plural recorded in GLOSSARY.mdcase_studysan irregular plural is written down once
  9. No enum. Use a string-literal union or an as const object. The discriminant key is discriminant in naming.json (kind). Own values are kebab-case; values mirrored from an external API stay verbatim.

    GoodBadWhy
    type Status = 'open' | 'in-progress'enum Status { Open }no enum
    { kind: 'pull-request' }{ type: 'pull-request' }the discriminant key is kind
    'MERGED' from the GitHub API'merged'a mirrored value stays verbatim
  10. Build every name from parts in naming.json, big to small: project · area · entity · role · action · attribute · consumer. Take the parts you need, keep their order. Each artifacts entry lists parts, case and examples. role is a closed list per repo (artifacts.component.roles, artifacts.env.roles). Env vars follow artifacts.env.shape. Payload CMS: collection slug = API path = table; the slug is kebab-case and plural (case-studies), the table replaces the hyphen with an underscore (case_studies).

    GoodBadWhy
    COLIN_SYNC_KEY_FOR_TWENTYTWENTY_API_KEYissuer first, then what the key is for, then who holds it
    TestimonialGridGridTestimonialentity first, then role
    testimonial.addedaddTestimonialan event is a fact in the past, not a command
  11. Casing follows the language guide and the repo's linter. Files and folders are lowercase kebab-case. An existing repo convention wins over this line: set it in artifacts.file.case and artifacts.folder.case, one case or a list (["kebab", "PascalCase", "camelCase"] for React components and hooks).

    GoodBadWhy
    render-pr-body.mjsrenderPrBody.mjsfiles are kebab-case
    src/components/case-studies/src/components/case_studies/folders are kebab-case
    loadUser in a repo that uses load everywherefetchUser beside itthe existing convention wins
  12. Meaning changed? Rename everywhere in the same change, rule 204 in writing-rules.

    GoodBadWhy
    draft renamed to proposal in code, docs and DB in one PRcode renamed, docs still say drafttwo words for one thing
    retryCount after the value stopped being a limitmaxRetries keptthe name lies
    rename plus a GLOSSARY.md updaterename onlythe glossary is the source

Per-project overrides

Override file: .skilly/naming.json, same shape as references/naming.json, only the keys you change. An old docs/agents/naming.json is read only while .skilly/naming.json is missing: move it to .skilly/naming.json.

Merge order:

  1. references/naming.json
  2. references/stacks/<bundle>.json, for each bundle listed in .skilly/config.json bundles, in that order. Missing file: skipped. Bundles reached only through includes do not count.
  3. .skilly/naming.json

Merge rules:

  • Objects merge by key. null drops a key.
  • Arrays append and dedupe. "-Data" drops the default Data.
  • Scalars override.
{
  "prefixes": { "sync": { "meaning": "mirror to a remote system", "not": ["push", "mirror"] } },
  "noiseWords": ["-Data"],
  "allow": {
    "ctxTools": { "names": ["^ctx_"], "rules": ["short-word"], "why": "lean-ctx tool names." },
    "payload/migrations": null
  }
}

allow holds named entries. Shape and what they silence: references/lint.md.

References

  • references/naming.json: prefixes, parts, artifacts, short words, noise words, synonyms, discriminant, allow
  • references/stacks/: per-bundle defaults, same shape
  • references/lint.md: what the gate checks, what you judge, per-repo exceptions
  • references/biome.json: opt-in Biome block for consumers
  • scripts/config.mjs: prints the merged config
  • scripts/check.mjs: runs the gate on the files the branch changes

FAQ

What does the naming skill do?

The code-naming rules. Use before naming a variable, function, file, type, table, route, component, event, or env var, and when a request's word differs from the repo's.

How do I install naming?

Run npx skills add https://github.com/timschoch/skilly --skill naming in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/naming/ (personal) or .claude/skills/naming/ (project).

Which AI agents can use naming?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is naming safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains naming?

It is published by timschoch in timschoch/skilly. It has 561 recorded installs.

More from timschoch/skilly

View all →

git-shortcuts

timschoch/skilly

Translates shorthand git/GitHub workflow commands into the correct sequence of actions. ALWAYS trigger when the user's message contains a "--" prefixed shorthand like: "--c", "--p", "--cp", "--pr", "--prm", "--cppr", "--cpprm", "--ff", "--release", "--pub", "--close" — with or without a trailing "?". The "--" prefix is required — do NOT trigger on bare letters like "c" or "pr" appearing in normal sentences. NEVER invoke this skill autonomously — it MUST always be user-invoked via an explicit "--" shorthand in their message.

cleanup-merged-branches

timschoch/skilly

Delete remote branches whose PR was merged. Read-only dry-run, then confirm, then delete.

step-by-step

timschoch/skilly

Walk the user through a manual procedure step by step, with every value spelled out and every link clickable.

667 installs

plan-critics

timschoch/skilly

Critiques an implementation plan — or a wayfinder map/ticket — from multiple angles (security, simplicity, edge cases, scope creep, codebase conflicts, tech-specific best practices) via parallel critic subagents. Trigger: user says "kritisiere den plan", "plan check", "plan-kritik", "blinde flecken", "/plan-critics" — also invoke when a planning agent wants to validate its own plan before presenting it, or a wayfinder session wants a resolution checked before closing a ticket. Must be called at top-level (not inside a subagent) — it uses the Task tool.

qa

timschoch/skilly

Interactive QA session where user reports bugs or issues conversationally, and the agent files GitHub issues. Explores the codebase in the background for context and domain language. Use when user wants to report bugs, do QA, file issues conversationally, or mentions "QA session".

Testing & QA664 installs

1-3-1

timschoch/skilly

Frame a problem or decision as 1-3-1: one problem, three distinct solutions, one recommendation. Use when the user brings a non-trivial decision or fork and wants options weighed before a pick ("what should I do about X", "help me decide", "weigh the tradeoffs"), or names "1-3-1" or "do a 131". Skip questions with one right answer, just answer those.

662 installs

Popular frontend & design skills

View category →

setup-matt-pocock-skills

mattpocock/skills

Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.

Frontend & Design1.1M installs

frontend-design

anthropics/skills

Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.

OfficialFrontend & Design1M installs

hyperframes-animation

heygen-com/hyperframes

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.

prototype

mattpocock/skills

Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.

Frontend & Design999.2K installs

hyperframes-core

heygen-com/hyperframes

The HyperFrames composition contract — build one renderable project. Use for composition structure, the data- timing attributes, class="clip", tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.

Frontend & Design930.5K installs

vercel-react-best-practices

vercel-labs/agent-skills

React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.

OfficialFrontend & Design843.1K installs