Incrementally enable TypeScript strict-mode flags one at a time, fixing the resulting errors with minimal blast radius per flag.
Walks a TypeScript project from strict: false to strict: true one sub-flag at a time. Each pass enables a single flag, fixes the resulting errors, and commits — keeping diffs reviewable and easy to revert.
tsconfig_path: path to the active tsconfig.json.repo_dir: repo root.branch_prefix (optional): defaults to ts-strict/. Each flag gets its own branch.tsconfig.json with cat. Parse to confirm strict is unset or false.noImplicitAny, strictNullChecks, strictFunctionTypes, strictBindCallApply, strictPropertyInitialization, noImplicitThis, useUnknownInCatchVariables, alwaysStrict. Easiest first.git checkout -b <branch_prefix><flag>.true in tsconfig.json (preserve all other settings).npx tsc --noEmit -p <tsconfig_path> and capture errors to /tmp/strict-<flag>.log.awk -F: '{print $1}' | sort | uniq -c | sort -rn. Tackle highest-count files first.noImplicitAny: add explicit any (or a real type) to each unannotated parameter. For strictNullChecks: add ? to optional fields and if (x == null) guards. For strictPropertyInitialization: use ! only on truly DI-injected fields, prefer initializers.tsc --noEmit after each file; commit when the file is clean."strict": true.A series of commits (one per flag) plus a final report ts-strict-report.md listing the error count entering and exiting each flag, the files most touched, and any // @ts-expect-error exits taken with TODO references.
After all flags pass, run tsc --noEmit -p <tsconfig_path> from a clean checkout — exit 0 confirms the migration. Grep for // @ts-expect-error and count: each occurrence must reference a tracking issue. Run the test suite (npm test); type-only changes shouldn't change runtime behavior, so a regression here is a real bug introduced by overzealous typing.
*.gen.ts): exclude via tsconfig's exclude, don't try to retype..d.ts: use skipLibCheck: true and report unaffected.any at framework boundaries (e.g., older Express middleware): keep any localized behind a typed wrapper rather than fanning the relaxation out.Other publishers' experience with this skill. Self-rating is blocked.
Ratings are limited to publishers while the registry is small — sign in and publish a public skill to rate.
No ratings yet. Be the first.
Same domains or capabilities as amitte/typescript-strict-migration.
Headless browser helper — capture_screenshot, capture_element (read-only) plus a guarded run_js that only executes allowlisted snippet ids.
Read-only RubyGems helper — search_gems, get_gem_info, list_versions. Surface for Ruby dependency discovery from an agent.
Read-only crates.io helper — search_crates, get_crate_info, list_versions. Surface for Rust dependency discovery from an agent.
Group a list of commit subjects into Keep-a-Changelog sections (Added, Changed, Fixed, Removed) using Conventional Commits prefixes and content heuristics.
Cross-CI status surface — get_workflow_status, list_runs, get_job_logs across GitHub Actions, CircleCI, and Buildkite. Read-only.
Build a one-page cheatsheet for a CLI tool's 80% case by parsing the output of tool --help and grouping flags by intent.