You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CLAUDE.md
+7-4Lines changed: 7 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -82,7 +82,7 @@ The `'use client'` server boundary, the app/worker runtime env split, and featur
82
82
83
83
## Code Conventions
84
84
85
-
-**Naming**: components PascalCase (`WorkflowList`); hooks `use*`; files kebab-case (`workflow-list.tsx`); constants SCREAMING_SNAKE_CASE; interfaces PascalCase with a suffix (`WorkflowListProps`); stores `stores/<feature>/store.ts`. A file never repeats its folder's name (`lib/logs/views.ts`, not `lib/logs/log-views.ts`; `utils/date.ts`, not `utils/date-utils.ts`); `check:file-names` enforces this.
85
+
-**Naming**: components PascalCase (`WorkflowList`); hooks `use*`; files kebab-case (`workflow-list.tsx`); constants SCREAMING_SNAKE_CASE; interfaces PascalCase with a suffix (`WorkflowListProps`); stores `stores/<feature>/store.ts`. A file never repeats its folder's name (inside `logs/`, `views.ts` not `log-views.ts`; inside `utils/`, `date.ts` not `date-utils.ts`); `check:file-names` enforces this.
86
86
-**Imports**: absolute (`@/...`) only, never relative (a barrel `index.ts` re-exports its own siblings relatively). A folder with 3+ exports gets an `index.ts` barrel; never re-export from a non-barrel file. `import type` for type-only imports. Order and lazy-loading through barrels: `.claude/rules/sim-imports.md`.
87
87
-**TypeScript**: no `any` and no non-null `!` (use precise types or `unknown` with guards; `check:explicit-any` ratchets both); no export nothing imports (`check:unused-exports`); a props interface for every component; `as const` for constant objects/arrays; explicit ref types (`useRef<HTMLDivElement>(null)`).
88
88
-**Unused bindings** fail lint (biome `noUnusedVariables`, `noUnusedFunctionParameters`): delete the dead variable, import, or parameter and update callers; write `catch {}` when the error is unused. Prefix `_` only for a parameter that must hold its position because a later one is used. `const { a, ...rest } = obj` to omit keys is allowed. The rules carry no autofix, so `bun run lint` will not rename anything for you.
@@ -150,7 +150,7 @@ A diff that touches `packages/db/migrations/**` also runs `bun run check:migrati
150
150
151
151
| Written rule | Enforced by |
152
152
| --- | --- |
153
-
| Formatting, lint, no `nanoid`/`uuid` imports |`bun run lint` (biome) |
153
+
| Formatting, lint, no `nanoid`/`uuid` imports, no unused variables or parameters|`bun run lint` (biome) |
| Route contracts, no `zod` in routes or clients, `requestJson`, boundary annotations |`check:api-validation:strict`, `check:api-contract-routes`, `check:route-verbs`|
@@ -164,8 +164,11 @@ A diff that touches `packages/db/migrations/**` also runs `bun run check:migrati
| No `any` or non-null `!` (ratcheted), no suppressions of either |`check:explicit-any`|
169
+
| kebab-case file names; no file repeating its folder's name |`check:file-names`|
170
+
| No banner separators or commented-out code |`check:comment-hygiene`|
168
171
| Skills and rules projections in sync; guidance references resolve |`check:skills`, `check:guidance-refs`|
169
172
| Generated artifacts fresh (tool metadata, docs, catalog, CLI/MCP/OpenAPI surfaces) | the `*:check` entries in `check:audits`|
170
173
171
-
Rules not in this table (logging, comments, naming, imports, styling, state ownership, caching) are enforced by review only; follow them as written.
174
+
Rules not in this table (logging, the rest of comment style and naming, imports, styling, state ownership, caching) are enforced by review only; follow them as written.
0 commit comments