Agent skill

Typescript Strict

by WrongStack in WrongStack/WrongStack

A skill your agent uses when writing, reviewing, or fixing TypeScript where type safety matters — type errors, narrowing, unsafe casts, or tightening compiler strictness.

MITAuto-check passedDevelopment

Install Typescript Strict

skills CLI
$ npx skills add WrongStack/WrongStack --skill typescript-strict -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install WrongStack/WrongStack typescript-strict --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/WrongStack/WrongStack.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/core/skills/typescript-strict .claude/skills/typescript-strict && rm -rf skills-src

Use ~/.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/

Facts

Skill name
typescript-strict
GitHub stars
370
Token cost
~1.4k tokens
SKILL.md length
515 words
Files
2
Skills in repo
38
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when writing, reviewing, or fixing TypeScript where type safety matters — type errors, narrowing, unsafe casts, or tightening compiler strictness.

  • Works in 7 steps: Respect the project's tsconfig. Write… → Fix type errors, don't silence them. No… → Validate at trust boundaries. JSON,… → …
  • Fixing TypeScript where type safety matters — type errors
  • SKILL.md covers Overview, Rules, Fixing a type error and Patterns, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Typescript Strict is an agent skill from WrongStack/WrongStack. Use this skill when writing, reviewing, or fixing TypeScript where type safety matters — type errors, narrowing, unsafe casts, or tightening compiler strictness. Triggers: user mentions "TypeScript", "type error", "tsc", "strict", "type safety", "narrowing", "any", "unknown", "discriminated union", "branded type", "noUncheckedIndexedAccess", "exactOptionalPropertyTypes".

Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `SKILL.save.md`).

It sits in Development, covering Type safety. It works with TypeScript. The repository describes itself as: An AI coding agent that reads your code, edits files, runs commands, and reasons through bugs — across a terminal REPL, a full-screen TUI, and a browser UI, while you keep your… The licence is MIT.

When your agent uses it

  • Fixing TypeScript where type safety matters — type errors
  • Tightening compiler strictness

Example prompts

  • “TypeScript”
  • “type error”
  • “strict”
  • “/typescript-strict”

Requirements

  • Node.js

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Respect the project's tsconfig. Write code that passes the flags it has.
  2. Fix type errors, don't silence them. No as any, no as unknown as T, no
  3. Validate at trust boundaries. JSON, network responses, environment, and user
  4. Prefer narrowing to assertion. A non-null ! or an as cast is acceptable
  5. Model finite states as discriminated unions, and end exhaustive switches with
  6. Annotate the return types of exported functions; inference is fine inside.
  7. Verify with the type checker (the typecheck tool, or the project's own

What it can do on your machine

Read from SKILL.md and the folder at commit 57f6018. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Typescript Strict loads about 1.4k tokens when it runs. Until then it costs about 98 tokens; SKILL.md has 515 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~98
When it runs · the whole SKILL.md, loaded when a task matches
~1.4k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from WrongStack/WrongStack at commit 57f6018, republished under its MIT licence (© WrongStack). 515 words, ~1,362 tokens.

Download SKILL.mdSave it as .claude/skills/typescript-strict/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
typescript-strict
description
Use this skill when writing, reviewing, or fixing TypeScript where type safety matters — type errors, narrowing, unsafe casts, or tightening compiler strictness. Triggers: user mentions "TypeScript", "type error", "tsc", "strict", "type safety", "narrowing", "any", "unknown", "discriminated union", "branded type", "noUncheckedIndexedAccess", "exactOptionalPropertyTypes".
version
2.0.0
required-capabilities
filesystem.read, filesystem.write
optional-capabilities
verification.run

TypeScript Strict

Overview

Make the type checker carry the invariants so runtime doesn't have to discover them. Work within the project's compiler settings: read tsconfig.json (and any package-level configs it extends) before deciding what a file must satisfy.

Rules

  1. Respect the project's tsconfig. Write code that passes the flags it has. Tightening flags repo-wide is a separate, requested change — it can surface hundreds of errors.
  2. Fix type errors, don't silence them. No as any, no as unknown as T, no @ts-ignore; a @ts-expect-error needs a comment explaining why.
  3. Validate at trust boundaries. JSON, network responses, environment, and user input arrive as unknown and are narrowed by a parser or type guard.
  4. Prefer narrowing to assertion. A non-null ! or an as cast is acceptable only where the invariant is locally obvious and a check would be noise.
  5. Model finite states as discriminated unions, and end exhaustive switches with a never check so a new variant fails to compile.
  6. Annotate the return types of exported functions; inference is fine inside.
  7. Verify with the type checker (the typecheck tool, or the project's own command) before calling the work done.

Fixing a type error

  1. Read the full error, including the "Type X is not assignable to Y" chain — the last line usually names the real mismatch.
  2. Decide which side is wrong: the value, or the declared type. Changing the declaration to match a buggy value hides the bug.
  3. Fix at the source of the bad value, not at every use site.
  4. Re-run the checker; one fix can expose or clear several errors.

Patterns

ts
// Exhaustive switch — adding a variant becomes a compile error here.
type Block =
  | { type: 'text'; text: string }
  | { type: 'image'; url: string }
  | { type: 'error'; message: string };

function assertNever(value: never): never {
  throw new Error(`Unhandled variant: ${JSON.stringify(value)}`);
}

function render(block: Block): string {
  switch (block.type) {
    case 'text':
      return block.text;
    case 'image':
      return `<img src="${block.url}">`;
    case 'error':
      return block.message;
    default:
      return assertNever(block);
  }
}

// Trust boundary — unknown in, narrowed out.
interface User {
  id: string;
  email: string;
}

function isUser(value: unknown): value is User {
  return (
    typeof value === 'object' &&
    value !== null &&
    typeof (value as Record<string, unknown>).id === 'string' &&
    typeof (value as Record<string, unknown>).email === 'string'
  );
}

const body: unknown = await response.json();
if (!isUser(body)) throw new Error('Unexpected user payload');

// Branded id — a SessionId can no longer be passed where a UserId is expected.
type UserId = string & { readonly __brand: 'UserId' };
const toUserId = (raw: string): UserId => raw as UserId; // the one sanctioned cast

With a schema library already in the project (zod, valibot, arktype), use it at the boundary instead of hand-written guards.

Show full SKILL.md (225 more words)Show less

Strictness flags worth knowing

FlagWhat it catchesTypical fix
strictImplicit any, unchecked null, loose function typesAnnotate; narrow nullables
noUncheckedIndexedAccessarr[i] and record[key] may be undefinedCheck the value, or use .at() with a guard
exactOptionalPropertyTypesprop?: T receiving an explicit undefinedDeclare prop?: T | undefined, or omit the key
noImplicitReturnsCode paths that fall off the endReturn on every path
noImplicitOverrideAccidental method overridesAdd override

Anti-patterns

Anti-patternWhy it hurtsInstead
as any / double assertionTurns off checking for everything downstreamNarrow, or fix the declaration
Function, Object, {} as typesAccept almost anythingSpecific signatures and shapes
Promise<any>Callers lose all type informationPromise<unknown> or a generic
a?.b?.c?.d to dodge an unclear typeHides which level can be absentEstablish what can be absent, then narrow
Optional fields for mutually exclusive statesAllows impossible combinationsDiscriminated union
Loosening tsconfig to make an error go awayReintroduces the whole class of bugsFix the code

Before returning

  • Code passes the project's own tsconfig, checked with the type checker
  • No new any, double assertions, or unexplained suppressions
  • External data narrowed from unknown at the boundary
  • Finite states modeled as unions with exhaustive handling
  • Exported functions have explicit return types

Skills in scope

  • node-modern — for runtime patterns in Node.js TypeScript code
  • react-modern — for component and hook typing
  • testing — for type-safe fixtures and assertions

© WrongStack, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in packages/core/skills/typescript-strict of WrongStack/WrongStack.

  • SKILL.md
  • SKILL.save.md

Open the folder on GitHubat commit 57f6018

Compare with similar skills

Typescript Strict 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.

Typescript Strict compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Typescript Strict this skillWrongStack/WrongStack370—~1.4kAutomated safety check: PassMIT
Typescript Advanced Typesrolling-scopes/rsschool-app10k25 repos~4.2kAutomated safety check: PassMPL-2.0
Wagmi Feature Developmentwevm/wagmi6.8k—~3.8kAutomated safety check: PassMIT
Convert Internal Package to TypeScriptTryGhost/Ghost55k—~1.2kAutomated safety check: PassMIT
Add NodeBridge Handlerneovateai/neovate-code1.6k—~1kAutomated safety check: PassMIT
AST Visitor Pattern for Unionsprisma/orm48k—~830Automated safety check: PassApache-2.0

Similar skills

  • Typescript Advanced Types

    rolling-scopes/rsschool-app

    Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications.

    10k GitHub starsUsed in 25 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Walks through adding a Wagmi feature across its layers: a Viem-based core action, TanStack Query options, and React and Vue bindings.

    6.8k GitHub stars~3.8k tokensUpdated 6 days ago
    DevelopmentAuto-check passed
  • Moves a legacy internal Ghost package from JavaScript and CommonJS to TypeScript and ESM in three focused commits that keep git file history intact.

    55k GitHub stars~1.2k tokensUpdated today
    DevelopmentAuto-check passed
  • Add NodeBridge Handler

    neovateai/neovate-code

    Walks through adding a message handler to NodeBridge in Neovate Code, from the implementation and its types to an optional test entry and a run with Bun.

    1.6k GitHub stars~1k tokensUpdated 6 mo ago
    DevelopmentAuto-check passed
  • Official

    Replaces a plain TypeScript union plus switch statements with frozen subclasses and a visitor interface when several places dispatch on the same variants.

    48k GitHub stars~830 tokensUpdated today
    DevelopmentAuto-check passed
  • Bumpy Add Change

    zap-studio/monorepo

    Create a bumpy bump file describing which packages changed and how, for version bumping and changelog generation.

    172 GitHub starsUsed in 1 repo~1.4k tokens
    DevelopmentAuto-check: notes

More from WrongStack/WrongStack

All 38 skills in this repo
  • Design Craft

    WrongStack/WrongStack

    Design or substantially improve user-facing interfaces with a product-specific visual direction, content hierarchy, and rendered critique.

    370 GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Design Critique

    WrongStack/WrongStack

    A skill your agent uses to audit an interface that already exists and say precisely why it looks generated, templated, or unfinished — a scored rubric across composition, typography, color, states…

    370 GitHub stars~3k tokensUpdated today
    Auto-check passed
  • Mailbox Bridge

    WrongStack/WrongStack

    A skill your agent uses when external coding agents (Claude Code, Aider, custom scripts) need to participate in the project's shared WrongStack mailbox, or when a user asks to "expose the mailbox"…

    370 GitHub stars~3.9k tokensUpdated today
    Auto-check passed
  • Multi Agent

    WrongStack/WrongStack

    A skill your agent uses whenever work can be split across multiple AI agents running in parallel, or when orchestrating leader/worker patterns in WrongStack.

    370 GitHub stars~3.6k tokensUpdated today
    Auto-check passed
  • Web Platform Baseline

    WrongStack/WrongStack

    Use this skill before asserting that a CSS, HTML or accessibility capability is available, unavailable, or the right tool — it carries dated, refreshable platform facts and refuses to let stale…

    370 GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Wrongstack Mailbox

    WrongStack/WrongStack

    A skill your agent uses when the user wants to communicate with WrongStack's shared project mailbox from outside WrongStack — read messages sent by WrongStack agents, send replies, broadcast to all…

    370 GitHub stars~3.5k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Typescript Strict

What does Typescript Strict do?

A skill your agent uses when writing, reviewing, or fixing TypeScript where type safety matters — type errors, narrowing, unsafe casts, or tightening compiler strictness. Typescript Strict is an agent skill from WrongStack/WrongStack. Use this skill when writing, reviewing, or fixing TypeScript where type safety matters — type errors, narrowing, unsafe casts, or tightening compiler strictness.

When should I use Typescript Strict?

Typescript Strict fits situations like: fixing TypeScript where type safety matters — type errors; tightening compiler strictness.

How do I install Typescript Strict in Claude Code?

Run `npx skills add WrongStack/WrongStack --skill typescript-strict -a claude-code`. Or copy the skill folder (packages/core/skills/typescript-strict in WrongStack/WrongStack) into .claude/skills/typescript-strict in your project. Claude Code loads it when a task matches its description.

How do I install Typescript Strict in Codex?

Run `npx skills add WrongStack/WrongStack --skill typescript-strict -a codex`. Or copy the skill folder (packages/core/skills/typescript-strict in WrongStack/WrongStack) into .agents/skills/typescript-strict in your project. Codex loads it when a task matches its description.

Can I use Typescript Strict in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add WrongStack/WrongStack --skill typescript-strict -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/typescript-strict, .gemini/skills/typescript-strict, .github/skills/typescript-strict and .opencode/skills/typescript-strict in your project.

What does Typescript Strict need to run?

SKILL.md names no scripts, command-line tools or credentials: Typescript Strict is instructions for the agent only. Our summary lists: Node.js.

Does Typescript Strict access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Typescript Strict safe to install?

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.

What licence does Typescript Strict use?

Typescript Strict is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Typescript Strict use?

About 1.4k tokens (SKILL.md is roughly 5.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Typescript Strict?

Skills that share tags, products or a category with Typescript Strict: Typescript Advanced Types (rolling-scopes/rsschool-app, 10k stars), Wagmi Feature Development (wevm/wagmi, 6.8k stars), Convert Internal Package to TypeScript (TryGhost/Ghost, 55k stars) and Add NodeBridge Handler (neovateai/neovate-code, 1.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Typescript Strict?

WrongStack (a GitHub organization) maintains it in WrongStack/WrongStack, which has 370 GitHub stars. The repository holds 38 skills in this directory. The repository was last updated on October 7, 2026.

Source: WrongStack/WrongStack on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.