/ts-lint-format
Use when choosing or configuring a TS linter/formatter — Biome 2.x vs ESLint 9 flat config + typescript-eslint typed linting. Not for type checking itself (ts-config).
$ npx -y skills add fusengine/agents --skill ts-lint-format --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/ts-lint-format
Context preview
The summary Claude sees to decide when to auto-load this skill.
Use when choosing or configuring a TS linter/formatter — Biome 2.x vs ESLint 9 flat config + typescript-eslint typed linting. Not for type checking itself (ts-config).
SKILL.md
ts-lint-format.SKILL.mdname: ts-lint-format
description: Use when choosing or configuring a TS linter/formatter — Biome 2.x vs ESLint 9 flat config + typescript-eslint typed linting. Not for type checking itself (ts-config).
versions:
biome: "2.x"
eslint: "9 (flat config)"
typescript-eslint: "8.x"
typescript: "5.8+ (latest stable 6.0)"
references: references/tool-choice.md, references/biome-setup.md, references/eslint-typed.md, references/templates/config-examples.md
related-skills: ts-runtime-node, ts-runtime-bun, solid-generic
<objective> This skill covers choosing and configuring a TypeScript linting/formatting stack: Biome 2.x as a single binary that formats and lints (biome.json, domains, type-aware rules covering ~75% of typed-linting needs) versus ESLint 9 flat config (eslint.config.mjs) with typescript-eslint for full typed linting including cross-file narrowing and no-unsafe-* rules.
It covers the 2026 arbitrage between the two — new projects default to Biome for a fast zero-config start, established/typed-heavy codebases lean ESLint + typescript-eslint — plus a note on Oxlint as a challenger, and the rule to never run Biome and Prettier on the same files.
Out of scope: type checking itself (tsc --noEmit, tsconfig flags) belongs to ts-config; test-runner configuration belongs to ts-testing. </objective>
TypeScript Linting & Formatting
Agent Workflow (MANDATORY)
Before ANY implementation, use `TeamCreate` to spawn 3 agents:
1. **fuse-ai-pilot:explore-codebase** - Detect existing lint/format config, project age, framework 2. **fuse-ai-pilot:research-expert** - Verify latest Biome 2.x + typescript-eslint via Context7/Exa 3. **mcp__context7__query-docs** - Check Biome and typescript-eslint docs
After implementation, run **fuse-ai-pilot:sniper** for validation.
Use when
- Choosing a linter/formatter stack for a TS project (new vs established codebase)
- Configuring **Biome 2.x** (`biome.json`, `biome check`, domains, type-aware rules)
- Configuring **ESLint 9 flat config** + **typescript-eslint** typed linting
- Migrating from ESLint+Prettier, or adding a CI lint gate
Do NOT use for
- Runtime execution → use [ts-runtime-node](../ts-runtime-node/SKILL.md) / [ts-runtime-bun](../ts-runtime-bun/SKILL.md)
- Framework-specific style rules owned by that framework's own config
- Type checking itself — linters complement, never replace, `tsc --noEmit`
Critical Rules
1. **Pick ONE formatter** - Biome formats AND lints in one binary; do not also run Prettier on the same files. 2. **Type-aware linting needs the type checker** - `typescript-eslint` typed rules and Biome's type-aware rules both cost a build pass; expect them to be slower than syntactic rules. 3. **Biome does NOT format-lint** - It never reports formatting via lint rules; the formatter owns all formatting decisions. 4. **ESLint 9 = flat config** - Use `eslint.config.mjs` with `typescript-eslint`'s `tseslint.configs.*`; legacy `.eslintrc` is deprecated. 5. **Coverage gap is real** - Biome's type-aware rules cover ~75% of typed-linting needs; full cross-file narrowing and `no-unsafe-*` still require typescript-eslint.
Architecture
project/
├── biome.json # Biome path: one binary, format + lint
│ OR
├── eslint.config.mjs # ESLint path: flat config + typescript-eslint
├── .prettierrc # (only on ESLint path; Biome replaces Prettier)
└── tsconfig.json # required for typed linting (both tools)
→ See [config-examples.md](references/templates/config-examples.md) for both stacks
Reference Guide
Concepts
| Topic | Reference | When to Consult | |-------|-----------|-----------------| | **Tool choice (2026)** | [tool-choice.md](references/tool-choice.md) | Deciding Biome vs ESLint; Oxlint challenger | | **Biome setup** | [biome-setup.md](references/biome-setup.md) | Configuring `biome.json`, rules, domains, CI | | **ESLint typed** | [eslint-typed.md](references/eslint-typed.md) | Flat config + typescript-eslint typed linting |
Templates
| Template | When to Use | |----------|-------------| | [config-examples.md](references/templates/config-examples.md) | Copy a Biome or ESLint config into a project |
Best Practices
DO
- New project → default to **Biome 2.x** (one binary, fast, zero-config start)
- Established/typed-heavy codebase → **ESLint 9 + typescript-eslint** typed linting
- Run the linter in CI with `error` severity to gate merges
DON'T
- Run Biome and Prettier on the same files (conflicting formatting)
- Enable typed linting and then complain about speed — it's the type checker cost
- Assume Biome covers every typescript-eslint rule — check the gaps first
Read more
name: ts-lint-format description: Use when choosing or configuring a TS linter/formatter — Biome 2.x vs ESLint 9 flat config + typescript-eslint typed linting. Not for type checking itself (ts-config). versions: biome: "2.x" eslint: "9 (flat config)" typescript-eslint: "8.x" typescript: "5.8+ (latest stable 6.0)" references: references/tool-choice.md, references/biome-setup.md, references/eslint-typed.md, references/templates/config-examples.md related-skills: ts-runtime-node, ts-runtime-bun, solid-generic
<objective> This skill covers choosing and configuring a TypeScript linting/formatting stack: Biome 2.x as a single binary that formats and lints (biome.json, domains, type-aware rules covering ~75% of typed-linting needs) versus ESLint 9 flat config (eslint.config.mjs) with typescript-eslint for full typed linting including cross-file narrowing and no-unsafe-* rules.
It covers the 2026 arbitrage between the two — new projects default to Biome for a fast zero-config start, established/typed-heavy codebases lean ESLint + typescript-eslint — plus a note on Oxlint as a challenger, and the rule to never run Biome and Prettier on the same files.
Out of scope: type checking itself (tsc --noEmit, tsconfig flags) belongs to ts-config; test-runner configuration belongs to ts-testing. </objective>
TypeScript Linting & Formatting
Agent Workflow (MANDATORY)
Before ANY implementation, use `TeamCreate` to spawn 3 agents:
1. **fuse-ai-pilot:explore-codebase** - Detect existing lint/format config, project age, framework 2. **fuse-ai-pilot:research-expert** - Verify latest Biome 2.x + typescript-eslint via Context7/Exa 3. **mcp__context7__query-docs** - Check Biome and typescript-eslint docs
After implementation, run **fuse-ai-pilot:sniper** for validation.
Use when
- Choosing a linter/formatter stack for a TS project (new vs established codebase)
- Configuring **Biome 2.x** (`biome.json`, `biome check`, domains, type-aware rules)
- Configuring **ESLint 9 flat config** + **typescript-eslint** typed linting
- Migrating from ESLint+Prettier, or adding a CI lint gate
Do NOT use for
- Runtime execution → use [ts-runtime-node](../ts-runtime-node/SKILL.md) / [ts-runtime-bun](../ts-runtime-bun/SKILL.md)
- Framework-specific style rules owned by that framework's own config
- Type checking itself — linters complement, never replace, `tsc --noEmit`
Critical Rules
1. **Pick ONE formatter** - Biome formats AND lints in one binary; do not also run Prettier on the same files. 2. **Type-aware linting needs the type checker** - `typescript-eslint` typed rules and Biome's type-aware rules both cost a build pass; expect them to be slower than syntactic rules. 3. **Biome does NOT format-lint** - It never reports formatting via lint rules; the formatter owns all formatting decisions. 4. **ESLint 9 = flat config** - Use `eslint.config.mjs` with `typescript-eslint`'s `tseslint.configs.*`; legacy `.eslintrc` is deprecated. 5. **Coverage gap is real** - Biome's type-aware rules cover ~75% of typed-linting needs; full cross-file narrowing and `no-unsafe-*` still require typescript-eslint.
Architecture
project/ ├── biome.json # Biome path: one binary, format + lint │ OR ├── eslint.config.mjs # ESLint path: flat config + typescript-eslint ├── .prettierrc # (only on ESLint path; Biome replaces Prettier) └── tsconfig.json # required for typed linting (both tools)
→ See [config-examples.md](references/templates/config-examples.md) for both stacks
Reference Guide
Concepts
| Topic | Reference | When to Consult | |-------|-----------|-----------------| | **Tool choice (2026)** | [tool-choice.md](references/tool-choice.md) | Deciding Biome vs ESLint; Oxlint challenger | | **Biome setup** | [biome-setup.md](references/biome-setup.md) | Configuring `biome.json`, rules, domains, CI | | **ESLint typed** | [eslint-typed.md](references/eslint-typed.md) | Flat config + typescript-eslint typed linting |
Templates
| Template | When to Use | |----------|-------------| | [config-examples.md](references/templates/config-examples.md) | Copy a Biome or ESLint config into a project |
Best Practices
DO
- New project → default to **Biome 2.x** (one binary, fast, zero-config start)
- Established/typed-heavy codebase → **ESLint 9 + typescript-eslint** typed linting
- Run the linter in CI with `error` severity to gate merges
DON'T
- Run Biome and Prettier on the same files (conflicting formatting)
- Enable typed linting and then complain about speed — it's the type checker cost
- Assume Biome covers every typescript-eslint rule — check the gaps first
A plugin ecosystem that turns Claude Code into a supervised, multi-agent development environment.
Repo: fusengine/agents
Other skills on fusengine-agents.
- /agent-creator
Use when creating expert agents. Generates agent.md with frontmatter, hooks, required sections, and skill references.
Open skill - /apex-methodology
Use when starting ANY development task -- feature, bug fix, refactor, hotfix (triggers: implement, create, build, fix, add feature, refactor, develop).
Open skill - /brainstorming
Use when creating a feature/component or adding functionality. Fires BEFORE APEX Analyze to refine requirements via structured questioning.
Open skill - /challenge
Use before a root-cause, done/verified claim, irreversible action, or 2nd-time fix reaches the owner (APEX or plain conversation); also fires at every eLicit/Verify gate. Not for code correctness (use sniper).
Open skill - /code-quality
Use when validating code quality after modifications -- SOLID compliance, DRY duplication, linter errors, architecture violations. Do NOT use for functional verification (run verification FIRST, then code-quality).
Open skill - /elicitation
Use when an expert agent self-reviews and self-corrects code after the Execute phase, before sniper validation (BMAD-METHOD elicitation techniques).
Open skill

