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 strippingCreates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
npx claudepluginhub fusengine/agents --plugin fuse-typescript