Skip to content
Back to skills

Standards

ASecurity

The conventions this project holds code to — UI state completeness, design tokens, type-safety boundaries, query-key shape, and the anti-patterns to flag on sight.

  • 6 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added February 10, 2026
developmentjavascripttypescriptgojavareactapidatabasesecurityperformance

Works with

  • api

Security analysis

A100/100

Scanned September 24, 2026

npx -y skills add djnsty23/claude-auto-dev --skill standards --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Standards?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Standards
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/djnsty23-standards/badge)](https://www.skillsdirectory.com/skills/djnsty23-standards)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: standards
description: The conventions this project holds code to — UI state completeness, design tokens, type-safety boundaries, query-key shape, and the anti-patterns to flag on sight.
when_to_use: "Background knowledge, loaded automatically when writing or reviewing TypeScript/React code. Not user-invocable."
user-invocable: false
allowed-tools: Read, Grep, Glob
model: opus
paths:
  - "**/*.ts"
  - "**/*.tsx"
  - "**/*.js"
  - "**/*.jsx"
---

# Code Standards

This skill targets the JavaScript and TypeScript paths above. The `paths:` glob does not load it on its own, so load it explicitly. It stays short on purpose, and it
holds only the **decisions this project made** — not general React or
accessibility advice, which you already have.

> **Current user instructions and repository guidance still apply.**
> `.claude/project-rules.md` overrides the shipped defaults in this file. If it exists, read it and
> follow it wherever the two disagree — it was measured from this codebase,
> while everything below is a shipped default. Run `/autodev-init` to generate
> it. Where a convention appears under "Undecided" there, do not flag either
> form in review.

Three bars, in order: **correct** (types pass, it works), **clear** (matches
surrounding patterns), **complete** (handles reality, not just the happy path).

## All UI states

Every user-facing fetch has loading, error, empty and content behavior at the
appropriate component or shared boundary. For list data, for example:

```tsx
if (isLoading) return <Skeleton />;
if (error)     return <ErrorState message={error.message} />;
if (!data?.length) return <EmptyState />;
return <Content data={data} />;
```

A component that renders only the success path is incomplete here even when it
compiles. This is the single most common review finding in this codebase.

## Type-safety boundaries

- No `any`. No `as unknown as Type` on data from a database, an API, or a user —
  validate the shape with the project’s runtime validator (for example Zod).
- Handle HTTP failure (`res.ok` or the API’s explicit status contract) and
  rejected promises at a named boundary. A shared handler or deliberately
  best-effort telemetry path can be valid; prove its failure behavior rather
  than requiring a local try/catch at every call.

## Query keys

Centralised and `as const`, never inline string arrays:

```typescript
export const queryKeys = {
  reports: {
    all: (accountId: string) => ['reports', accountId] as const,
    detail: (accountId: string, id: string) => ['reports', accountId, id] as const,
  }
} as const;
```

For account-scoped data, test account switching/invalidation as well as key
shape. Public global data need not carry an account key. Keys do not replace
server-side authorization.

## Design system

Semantic tokens only (`text-foreground`, `bg-background`, `text-muted-foreground`)
and the spacing scale (`p-4`, never `p-[15px]`). Reuse components and add
variants rather than forking them. `rule-design-system` has the token
definitions and the one exception.

## Anti-patterns — flag these on sight

**Security and data safety**
- Protected operations without effective deny-by-default authorization. A
  positive `if (session)` guard is valid when its remaining paths deny access.
- Protected routes reachable without the intended auth/role checks. Public APIs
  and signed webhooks have different contracts; middleware presence alone
  proves neither authorization nor a defect.
- SSRF: user-supplied URLs fetched without validating against private IP ranges.

**Accessibility**
- `user-scalable=no` or `maximum-scale=1`.
- `outline-none` with no `focus-visible` replacement.
- Motion that ignores the relevant reduced-motion setting or disrupts use;
  `transition: all` alone is not an accessibility violation.
- Hardcoded date and number formats — use `Intl.*`.

**Design**
- Hardcoded colors or arbitrary spacing values.

## Mistake logging

When a review or a fix catches something that should not have shipped, append it
to `.claude/mistakes.md` so the pattern is greppable next time:

```markdown
## [Category]: [Description]
**Task:** ID
**Error:** What
**Fix:** How
**Prevention:** Rule
```

Categories: `Type Safety`, `React`, `API`, `Performance`, `A11y`.

## Proving the run

**Observable:** violations by category, next to the number of files scanned.

Enumerate the files in scope separately from matches, using `rg --files` with
the relevant globs and exclusions. Then run the detector on that population and
record matching files/locations. `rg -l PATTERN` counts matching files, not
scanned files; exit 1 means no matches and exit 2 means the search failed.

Zero violations across 4 files and zero across 400 are different results printed
the same way. State the denominator. When a category returns nothing, confirm the
pattern can match at all by running it against a file you know violates it —
otherwise a typo'd pattern reports a clean codebase.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.