Skip to content
Agentmart
Submit a tool

eslint-config

ESLint configuration expert for flat config setup, custom rules, TypeScript integration, plugin management, and migration from legacy .eslintrc to modern…

Skill by dallay

IndexedMIT★ 2
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/dallay-eslint-config

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

ESLint configuration expert for flat config setup, custom rules, TypeScript integration, plugin management, and migration from legacy .eslintrc to modern eslint.config.js. Use when the task involves `ESLint`, `eslint.config`, `linting JavaScript`, `TypeScript linting`, or `ESLint rules`.

Use cases: productivity

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/eslint-config

What's inside

Skill name
eslint-config
Description
ESLint configuration expert for flat config setup, custom rules, TypeScript integration, plugin management, and migration from legacy .eslintrc to modern eslint.config.js. Use when the task involves `ESLint`, `eslint.config`, `linting JavaScript`, `TypeScript linting`, or `ESLint rules`.
License
MIT
Metadata
version: 1.0.0
Instructions
220 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

## When to Use

- Setting up ESLint from scratch using the modern flat config format (`eslint.config.js`).
- Migrating a project from legacy `.eslintrc.*` to flat config.
- Configuring TypeScript-ESLint for strict type-checked linting.
- Writing custom ESLint rules or shareable config packages.
- Resolving rule conflicts between ESLint, Prettier, and framework-specific plugins.
- Optimizing linting performance for large monorepos.

## Critical Patterns

- **Flat Config Only:** Always use `eslint.config.js` (or `.mjs`/`.mts`). The legacy `.eslintrc.*`
  format is deprecated since ESLint v9. Do NOT create new projects with `.eslintrc`.
- **Explicit Over Implicit:** Flat config has no implicit inheritance. Every config object in the
  array is applied in order — later entries override earlier ones.
- **TypeScript Requires Parser:** Always pair `@typescript-eslint/parser` with
  `@typescript-eslint/eslint-plugin`. Use type-checked rules (`strictTypeChecked`) for maximum
  safety.
- **Severity Consistency:** Use `"error"` for rules that must block CI, `"warn"` for progressive
  adoption, and `"off"` to explicitly disable inherited rules. Never leave rules ambiguous.
- **Ignore via Config:** Use the `ignores` property in flat config instead of `.eslintignore` files.
  Global ignores go in a config object with *only* the `ignores` key.
- **Plugin Namespacing:** In flat config, plugins are objects, not strings. Import the plugin and
  assign it to a namespace key to avoid collisions.
- **Performance:** Use `--cache` in CI and locally. For monorepos, scope linting to changed files
  with `--no-error-on-unmatched-pattern`.

## Code Examples

### Modern Flat Config (eslint.config.js)

```js
import js from "@eslint/js";
import tseslint from "typescript-eslint";
import prettier from "eslint-config-prettier";

export default tseslint.config(
  // Global ignores — standalone object with ONLY ignores key
  {
    ignores: ["dist/", "node_modules/", "coverage/", "**/*.generated.*"],
  },

  // Base JS recommended rules
  js.configs.recommended,

  // TypeScript strict + type-checked rules
  ...tseslint.configs.strictTypeChecked,
  ...tseslint.configs.stylisticTypeChecked,

  // TypeScript parser options — applies to all TS files
  {
    languageOptions: {
      parserOptions: {
        projectService: true,
        tsconfigRootDir: import.meta.dirname,
      },
    },
  },

  // Disable type-checked rules for JS files (config files, scripts)
  {
    files: ["**/*.js", "**/*.mjs"],
    ...tseslint.configs.disableTypeChecked,
  },

  // Project-specific overrides
  {
    files: ["src/**/*.ts"],
    rules: {
      "@typescript-eslint/no-unused-vars": [
        "error",
        { argsIgnorePattern: "^_", varsIgnorePattern: "^_" },
      ],
      "@typescript-eslint/explicit-function-return-type": "error",
      "@typescript-eslint/no-floating-promises": "error",
      "@typescript-eslint/strict-boolean-expressions": "warn",
    },
  },

  // Test file relaxations
  {
    files: ["**/*.test.ts", "**/*.spec.ts"],
    rules: {
      "@typescript-eslint/no-explicit-any": "off",
      "@typescript-eslint/no-non-null-assertion": "off",
      "@typescript-eslint/no-unsafe-assignment": "off",
    },
  },

  // Prettier must be LAST to override formatting rules
  prettier,
);
```

### Custom ESLint Rule

```js
// eslint-rules/no-console-in-services.js
/** @type {import("eslint").Rule.RuleModule} */
export default {
  meta: {
    type: "suggestion",
    docs: {
      description: "Disallow console.* in service files, use a logger instead",
    },
    fixable: null,
    schema: [],
    messages: {
      noConsole: "Use the injected logger instead of console.{{ method }}().",
    },
  },
  create(context) {
    return {
      MemberExpression(node) {
        if (
          node.object.type === "Identifier" &&
          node.object.name === "console" &&
          node.property.type === "Identifier"
        ) {

From dallay/agents-skills, MIT.

More from dallay/agents-skills

Signals

Stars
2
Forks
0
Open issues
3
Last commit (this folder)
Apr 4, 2026 (6 months ago)

From GitHub (fetched Oct 24, 2026).

Details

Version
1.0.0
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from dallay

Cite this page

eslint-config skill. Agent Mart. https://agentmart.dev/skills/dallay-eslint-config (last updated 2026-10-24)