TypeScript Style Guide
Apply only the conventions relevant to the current task. Keep TypeScript, linters, and formatters responsible for rules they can enforce automatically.
Workflow
- Inspect the consuming repository's conventions and configuration.
- Let explicit repository conventions take precedence over this opinionated guide.
- Identify which guide topic applies.
- Read only the reference for the task's primary guide topic. Read multiple references only when the task substantively spans multiple topics.
- Apply, review, or explain the conventions in the context of the current task.
- State important tradeoffs when a convention depends on context or judgment.
Reference routing
- Read references/types.md for type modelling, inference, readonly data, constants, template literal types,
any,unknown, assertions, type errors, type definitions, arrays, type imports, and generated service types. This reference takes precedence for narrowingunknownand assertions, including their runtime null checks. - Read references/discriminated-unions.md for general discriminated-union modelling, narrowing, invalid states, exhaustiveness checking, required and optional object properties, application state with variant-specific data, function arguments, and React props. This reference takes precedence when discriminated unions concern application state, function arguments, or React props.
- Read references/functions.md for function responsibility, statelessness, purity, side effects, function arguments, function API design, and return types.
- Read references/variables.md when the task concerns variable declarations, simple literal-union state modelling, enum alternatives, or choosing how application state represents absence with
nullorundefined. Do not read it for incidental variables or runtime checks used only for type narrowing. - Read references/naming.md for named exports, naming conventions, generic type parameters, React naming, comments, and TSDoc.
- Read references/source-organization.md for code collocation, feature-based organization, relative and absolute import paths, and frontend or backend project structure. Do not read it for type-only import semantics, which belong to Types.
- Read references/react.md for React component and hook APIs, props-to-state, component typing and roles, data flow, state placement, and compound components.
- Read references/tests.md for test design, the Arrange-Act-Assert pattern, isolation, implementation details, mocking, test descriptions, and snapshots.
Boundaries
- Do not reimplement deterministic TypeScript, ESLint, or formatting checks.
- Do not introduce unrelated conventions merely because this skill is active.
- Treat guide conventions as defaults when the consuming repository is silent.