typescript-engineeringlisted
Install: claude install-skill sebastian-software/skills.sebastian-software.com
# TypeScript Engineering
Write TypeScript that makes types, module boundaries, failure, and async
ownership honest to the next maintainer. Prefer repository evidence and the
type system over ambient strictness fashions, defensive `any`, or speculative
abstraction. The compiler is a contract, not a lint to be silenced.
## Establish the Contract
1. Read scoped instructions, `tsconfig.json` (and any extended base or project
references), `package.json`, lockfile, CI, lint and format policy, relevant
ADRs, public entry points, nearby types, and representative call sites.
Discover the compiler strictness, module and target settings, runtime
(Node LTS, edge, worker, browser), module system (ESM/CJS), package manager,
and repository-native commands.
2. State the changed behavior and boundaries: inputs, outputs, nullability,
ownership of promises and resources, expected errors, cancellation,
concurrency, and which values cross an untyped runtime boundary. Do not
invent a stricter compiler flag set, a validation library, a bundler, or a
runtime target the repository has not adopted.
3. Read [Types and boundaries](references/types-and-boundaries.md) for
strictness contracts, honest narrowing and assertions, discriminated unions
versus enums, generics restraint, the `any`/`unknown` policy, and where
runtime validation replaces compile-time trust.
4. Read [Module and API design](references/module-and-api-design.md) for
exports, barrel-file tradeof