Naming Conventions
thedaviddias/Front-End-Checklist
A skill your agent uses when reviewing stylesheets, component styles, and responsive behavior related to Use consistent CSS naming conventions.
How to think about names in the Grida repo — not conventions, but what a name commits you to, reveals about the system, and costs to change.
$ npx skills add gridaco/grida --skill naming -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install gridaco/grida naming --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/naming .claude/skills/naming && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "naming" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/naming into .claude/skills/naming/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "naming", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/gridaco/grida/tree/main/.agents/skills/namingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add gridaco/grida --skill naming -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install gridaco/grida naming --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/naming .agents/skills/naming && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "naming" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/naming into .agents/skills/naming/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "naming", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gridaco/grida --skill naming -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install gridaco/grida naming --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/naming .cursor/skills/naming && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "naming" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/naming into .cursor/skills/naming/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "naming", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/gridaco/grida.git --path .agents/skills/naming--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add gridaco/grida --skill naming -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install gridaco/grida naming --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/naming .gemini/skills/naming && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "naming" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/naming into .gemini/skills/naming/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "naming", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install gridaco/grida namingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add gridaco/grida --skill naming -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/naming .github/skills/naming && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "naming" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/naming into .github/skills/naming/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "naming", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gridaco/grida --skill naming -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install gridaco/grida naming --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gridaco/grida.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/naming .opencode/skills/naming && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "naming" agent skill from https://github.com/gridaco/grida/tree/main/.agents/skills/naming into .opencode/skills/naming/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "naming", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
namingHow to think about names in the Grida repo — not conventions, but what a name commits you to, reveals about the system, and costs to change.
Naming is an agent skill from gridaco/grida. How to think about names in the Grida repo — not conventions, but what a name commits you to, reveals about the system, and costs to change. The central discipline is that a strict, honest name refuses to grow, and that refusal drives the repo's shape (flat modules, small agnostic packages, suffix siblings). Use when planning a new package, crate, module, directory, route group, or test corpus — the name comes first.
Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `cases.md`).
The licence is Apache-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 165496f. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Naming loads about 2.5k tokens when it runs. Until then it costs about 107 tokens; SKILL.md has 1,480 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from gridaco/grida at commit 165496f, republished under its Apache-2.0 licence (© gridaco). 1,480 words, ~2,497 tokens.
.claude/skills/naming/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Vanilla conventions (snake_case in Rust, kebab-case in JS/TS,
PascalCase exports, use-* hooks) are table stakes — assume them.
This document is about the observations on top: what a name commits
you to, what it reveals, and what it costs when it's wrong.
Pick the name before the types, before the tests, before the file exists. If the name doesn't come easily, the design isn't ready — don't start coding; sharpen the concept until the name falls out. Maintainability is downstream of naming. How a module grows, how cleanly it retires, how safely it can be deleted — all of it is decided at the moment you choose what to call it.
A name's primary job here is to refuse the wrong content. A
module called painter should feel actively wrong to host a
layout helper; a package called @grida/cmath should feel wrong
to host color logic. The strictness is deliberate — it is the
mechanism that keeps features from leaking into each other.
"Strict" requires "honest." A name that no longer describes what's inside has stopped being a gate: it won't reject foreign additions, and new readers can't trust it. When contents drift past the name, you have two moves — rename to match what the module has become, or extract the drifted pieces out — and you must pick one promptly. Letting a name go stale is how codebases rot quietly.
Three consequences cascade from the gate discipline, and together they produce the current repo structure:
src/ or a package's
src/. When you're tempted to grow a third level, the parent's
name has stopped describing what's inside — flatten or extract,
don't nest.painter.rs +
painter_debug_node.rs + painter_geometry.rs) or whether it
collapses into the existing file. Both preserve the parent's
scope; a new subdirectory quietly widens it.@grida/* packages and small crates precisely
because this extraction was made each time a sibling would have
diluted the parent's name.The gate only works because each module commits to one thing. Two-thing modules can't enforce either scope — the name becomes ambiguous as a filter, and new additions slip in under whichever reading is convenient. When you notice a module doing two things, pick the primary, rename for it, and extract or delete the other. The repo's proliferation of tiny packages is this choice compounded.
A well-named module exhibits two properties under change. Treat them as the measurable signal that naming is doing its work:
A codebase where neither test passes easily has a naming problem
dressed up as an architecture problem. The inverse is the real
payoff: when both tests pass, code grows by adding siblings or
spawning small packages, and it retires by a single git rm.
The cost of a bad name is rename friction × fanout. Fanout is
set by where the name is visible, and the difference is severe:
git mv + import updates. Cheap.@grida/cg, Cargo name) is seen
by every call site in every branch in every downstream repo.
Rename cost: coordinated migration, deprecation window, semver
break.This asymmetry is why the directory name and the published name
can diverge. packages/grida-canvas-cg publishes as
@grida/cg: the long directory pays for browsability (the
canvas family clusters in the file tree) where rename is cheap;
the short scope pays for ergonomics where rename is expensive.
The Rust side, by contrast, aligns — the engine repo's
crates/grida (gridaco/nothing) publishes as grida because
the core crate is also the project's public namespace, and
keeping the two in lockstep removes a name to remember. Two different trade-offs; pick per
surface. Invest heavily in a name before it escapes its
file; once it's a public surface, the name is a commitment.
A name that feels hard to pick is telling you something about the module, not your vocabulary. Common tells:
grida-canvas/canvas-text/ is the symptom;
grida-canvas/text/ is the correction.Naming is the cheapest design review you get. Listen to it when it resists.
Two-letter names (cg, fe, k/, q/) are not
abbreviations — they are assertions that nothing else in this
parent competes for the slot. The assertion is load-bearing;
reviewers rely on it to mean "this is the canvas-graphics
module," not "one of several."
The bar to mint one: would adding any peer to this parent make
the terse name ambiguous? If yes, qualify now. If no, terseness
pays — proportionally to how often the name appears at call sites.
Long breadcrumb names earn their length by narrowing; every
segment in grida-canvas-react-renderer-dom discriminates against
a sibling that differs at that segment. Segments that don't
narrow are decoration, and decoration erodes trust in the ones
that do.
The alphabetic sort in a file tree is the primary lookup index
most readers use. Domain first, role last makes the tree a
usable index — the canvas family clusters, its react variants
cluster under that, the DOM renderer variant under that.
Role-as-prefix inverts this and scatters siblings across the
alphabet by what they do rather than what they're of. That's
why *-hosted, *-wasm, *-react, *-renderer-<backend> are
always suffixes.
@grida/* and the grida-canvas-* package family are not filing
conventions — they are assertions that these packages share
release cadence, review ownership, and compatibility guarantees.
Adding a package to the scope is a governance decision.
react-p-queue lives unscoped because it doesn't derive identity
from Grida.
The same is true of lifecycle signals in names — -legacy,
-experimental-*, x- (cross-cutting / vendor-adjacent),
-hosted. They carry more trust than documentation because they
sit in the name itself, and that trust decays the moment they
stop being accurate. Prune: promote out of experimental/ when
the shape settles; remove legacy/ when the replacement is done;
don't let x- become the label for "anything weird."
A flat directory of kebab-breadcrumb filenames is an index optimized for grep and prefix-completion — the reader's first motion — not browsing. Nest only when a subfolder would be a browseable category a reader would open without knowing the case they want. Almost no real test corpus is that.
(www) / (site) / (workbench) / (workspace) / (tenant)
encode who is on the other side of the screen, not which
feature lives here. Each group is a surface with its own auth,
chrome, analytics, and deployability story. Adding a group is an
architectural commitment; if it's a new feature for an existing
reader, it belongs inside an existing group.
See cases.md for concrete tables and the
grandfathered short-name list.
© gridaco, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in .agents/skills/naming of gridaco/grida.
Open the folder on GitHubat commit 165496f
Naming next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Naming this skillgridaco/grida | 2.7k | — | ~2.5k | Automated safety check: Pass | Apache-2.0 | |
| Naming Conventionsthedaviddias/Front-End-Checklist | 74k | — | ~481 | Automated safety check: Pass | MIT | |
| Naming ConventionOwl-Listener/designer-skills | 2.9k | 1 repos | ~309 | Automated safety check: Pass | MIT | |
| Campaign Naming Convention Builderirinabuht12-oss/marketing-skills | 3.9k | — | ~717 | Automated safety check: Pass | None | |
| Standardize Naming Conventionsdata-goblin/power-bi-agentic-development | 1k | — | ~1.8k | Automated safety check: Pass | GPL-3.0 | |
| Ecc Conventionsaffaan-m/ECC | 275k | — | ~2.8k | Automated safety check: Pass | MIT |
thedaviddias/Front-End-Checklist
A skill your agent uses when reviewing stylesheets, component styles, and responsive behavior related to Use consistent CSS naming conventions.
Owl-Listener/designer-skills
Establish naming rules for components, tokens, and layers with patterns and worked examples.
irinabuht12-oss/marketing-skills
Builds a consistent, filterable naming convention across your Google and Meta accounts based on your campaign types, objectives, targeting, and reporting needs.
data-goblin/power-bi-agentic-development
Interactive naming convention standardization for TMDL-based Power BI semantic models.
affaan-m/ECC
Development conventions and patterns for ECC. An agent skill from affaan-m/ECC.
sgl-project/sglang
Naming conventions for SGLang speculative decoding identifiers.
gridaco/grida
Grida Desktop Electron shell and release-impact work: BrowserWindow, preload, window.grida, menus, protocol/deep links, file associations, Forge, path-scoped bridge security, Electron-only UI bugs…
gridaco/grida
Guides work on the Figma I/O package (@grida/io-figma, packages/grida-canvas-io-figma/).
gridaco/grida
Set up, download, verify, and seed the optional Grida Library developer corpus into local Supabase.
gridaco/grida
Query images with a local Ollama vision model without loading the image into the main agent context.
gridaco/grida
Research, compare, and update shared AI model JSON for TypeScript, web, and Rust consumers.
gridaco/grida
Grida AI agent system work: @grida/daemon (DaemonServer, loopback HTTP perimeter, files/workspaces, secrets store, daemon discovery) and @grida/agent (the agent tenant: sessions, providers/BYOK…
How to think about names in the Grida repo — not conventions, but what a name commits you to, reveals about the system, and costs to change. Naming is an agent skill from gridaco/grida. How to think about names in the Grida repo — not conventions, but what a name commits you to, reveals about the system, and costs to change.
Naming fits situations like: planning a new package; test corpus — the name comes first.
Run `npx skills add gridaco/grida --skill naming -a claude-code`. Or copy the skill folder (.agents/skills/naming in gridaco/grida) into .claude/skills/naming in your project. Claude Code loads it when a task matches its description.
Run `npx skills add gridaco/grida --skill naming -a codex`. Or copy the skill folder (.agents/skills/naming in gridaco/grida) into .agents/skills/naming in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add gridaco/grida --skill naming -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/naming, .gemini/skills/naming, .github/skills/naming and .opencode/skills/naming in your project.
Going by SKILL.md and its folder, Naming needs the command-line tools its instructions call (git).
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Naming is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.5k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Naming: Naming Conventions (thedaviddias/Front-End-Checklist, 74k stars), Naming Convention (Owl-Listener/designer-skills, 2.9k stars), Campaign Naming Convention Builder (irinabuht12-oss/marketing-skills, 3.9k stars) and Standardize Naming Conventions (data-goblin/power-bi-agentic-development, 1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
gridaco (a GitHub organization) maintains it in gridaco/grida, which has 2,659 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on October 7, 2026.
Source: gridaco/grida on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.