From fuse-typescript
Use when: creating or migrating a tsconfig.json, choosing module/moduleResolution, or fixing TS 6.0 deprecation errors. Covers the two official 2026 config tracks (Bun/bundler vs pure Node.js) and the TS 6.0 → 7.0 deprecation cleanup. Do NOT use for: TypeScript language syntax and idioms (use ts-language-patterns), framework configs shipping their own tsconfig base (Next.js/Astro/Vite plugin skills), or non-TS build tooling.
How this skill is triggered — by the user, by Claude, or both
Slash command
/fuse-typescript:ts-configThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Before writing any tsconfig, use `TeamCreate` to spawn 3 agents:
Before writing any tsconfig, use TeamCreate to spawn 3 agents:
package.json type/microsoft/typescript for any flag whose behavior is unclearAfter writing, run fuse-ai-pilot:sniper for validation.
There are exactly two supported config trajectories in 2026. Pick by runtime, never mix.
| Track | Runtime | module | moduleResolution |
|---|---|---|---|
| Bundler | Bun, Vite, esbuild, webpack | Preserve | bundler |
| Node | Pure Node.js (native type stripping) | nodenext | nodenext |
moduleResolution: node / node10 - deprecated in 6.0, removed in 7.0. Use bundler or nodenext.verbatimModuleSyntax: true - both tracks. Forces explicit import type, matches Node's type stripping.strict + noUncheckedIndexedAccess - strict is the 6.0 default; add noUncheckedIndexedAccess explicitly.types explicitly - 6.0 defaults types to []. Add ["node"], ["bun"], etc. or you lose globals.rootDir when sources are nested - 6.0 defaults rootDir to the tsconfig dir, no longer inferred.Runs on Bun, or bundled by Vite/esbuild/webpack/Parcel?
→ Bundler track → references/bundler-track.md
Runs directly on `node file.ts` (type stripping), or emits .js for Node?
→ Node track → references/node-track.md
Migrating an existing 5.x config / seeing deprecation errors?
→ references/deprecations-6.md (do this first, then pick a track)
| Topic | Reference | When to Consult |
|---|---|---|
| Bundler track | bundler-track.md | Load when configuring a Bun or bundler (Vite/esbuild/webpack) project |
| Node track | node-track.md | Load when configuring a pure Node.js project with native type stripping |
| 6.0 deprecations | deprecations-6.md | Load when migrating from TS 5.x or fixing deprecation errors |
| Template | When to Use |
|---|---|
| tsconfig.bundler.md | Complete Bun/bundler tsconfig |
| tsconfig.node.md | Complete pure-Node tsconfig |
{
"compilerOptions": {
"module": "Preserve",
"moduleResolution": "bundler",
"verbatimModuleSyntax": true,
"allowImportingTsExtensions": true,
"noEmit": true,
"strict": true,
"noUncheckedIndexedAccess": true
}
}
{
"compilerOptions": {
"module": "nodenext",
"rewriteRelativeImportExtensions": true,
"erasableSyntaxOnly": true,
"verbatimModuleSyntax": true,
"noEmit": true, // only if you never emit .js
"strict": true
}
}
"ignoreDeprecations": "6.0" temporarily while migrating, then remove it before adopting TS 7.0"#/*": "./src/*" in package.json imports (supported under nodenext and bundler)baseUrl prefix into each paths entry (baseUrl is deprecated)module: Preserve with moduleResolution: nodenext (or vice-versa)esModuleInterop, allowSyntheticDefaultImports, or alwaysStrict to false (no longer allowed)enum, namespace with runtime code, or parameter properties in files run by Node's type strippingnpx claudepluginhub fusengine/agents --plugin fuse-typescriptProvides 2025 TypeScript strict mode tsconfig.json recommendations, explains strict flags like noUncheckedIndexedAccess, moduleResolution (Bundler vs NodeNext), verbatimModuleSyntax. Use for new projects or stricter type safety migrations.
Guides migration from TypeScript 5.x to 6 and then to 7 (native Go port 'Corsa'). Covers tsconfig breaking changes, deprecation codes, and tooling compatibility.
Configures tsconfig.json with extends, project references, composite builds, incremental compilation, and separation of concerns for monorepos and build optimization.