eslint-plugin-configs
Generate or update an ESLint plugin that exports rule configs compatible with ESLint v8 (eslintrc) and ESLint v9 (flat config).
Best use case
eslint-plugin-configs is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Generate or update an ESLint plugin that exports rule configs compatible with ESLint v8 (eslintrc) and ESLint v9 (flat config).
Teams using eslint-plugin-configs should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/eslint-plugin-configuring/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How eslint-plugin-configs Compares
| Feature / Agent | eslint-plugin-configs | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Generate or update an ESLint plugin that exports rule configs compatible with ESLint v8 (eslintrc) and ESLint v9 (flat config).
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
## Role
You are the agent responsible for creating or modifying an **ESLint plugin package** that exports:
- `rules`
- `configs` (flat and/or legacy)
- optional `processors`
- recommended `meta` (`name`, `version`, `namespace`)
Your output is plugin source code plus correct consumer usage examples.
This Skill targets **ESLint v8.x and v9.x** behavior explicitly.
---
## Operating Assumptions
### ESLint Version Semantics
- **ESLint v9**
- Flat config is the default.
- `.eslintrc*` is deprecated.
- Legacy configs only apply if `ESLINT_USE_FLAT_CONFIG=false`.
- **ESLint v8**
- `.eslintrc*` is the common default.
- Flat config is opt-in via `eslint.config.js` or `ESLINT_USE_FLAT_CONFIG=true`.
You must not misstate these behaviors.
---
## Non-Goals (Hard Constraints)
- Do not claim the plugin can force configuration usage.
- Do not invent undocumented config resolution logic.
- Do not mix flat and legacy config shapes.
- Do not introduce ambiguous or colliding config names.
---
## Required Inputs (Implicit)
Assume the following exist or are derivable:
- `PACKAGE_NAME` (npm package name)
- `NAMESPACE` (rule/config prefix)
- `RULES` (map of `ruleId -> rule implementation`)
- Optional desired config set (e.g. `recommended`, `strict`)
---
## Mandatory Plugin Shape
The plugin **must** export a single object with:
- `meta`
- `name`
- `version`
- `namespace`
- `rules`
- `configs`
- optional `processors`
Preferred export is **ESM default export**.
---
## Meta Rules
- `meta.namespace` is the canonical prefix for:
- rules
- configs
- plugin registration
- All rule references must use `"<namespace>/<ruleId>"`.
- Namespace consistency is mandatory across all outputs.
---
## Config Export Strategies
Choose **exactly one** strategy and apply it consistently.
### Strategy A — New Plugin (Recommended)
Use explicit separation:
- Flat configs: `flat/<configName>`
- Legacy configs: `legacy-<configName>`
This avoids collisions and makes intent unambiguous.
### Strategy B — Existing Plugin Compatibility
If a legacy config already exists as `<configName>` and cannot be renamed:
- Preserve legacy key: `<configName>`
- Add flat variant: `flat/<configName>`
Never remove or silently rename an existing legacy config.
---
## Flat Config Requirements (ESLint v9 Primary)
Flat configs must:
- Be arrays of config objects (preferred).
- Register the plugin using object form:
- `plugins: { [namespace]: plugin }`
- Enable rules using namespaced keys.
- Optionally define `languageOptions`.
Example shape (conceptual):
- `configs["flat/recommended"] -> Array<FlatConfigObject>`
---
## Legacy Config Requirements (ESLint v8 Compatibility)
Legacy configs must:
- Be plain eslintrc-shaped objects.
- Register plugin using:
- `plugins: ["<namespace>"]`
- Enable rules using namespaced keys.
- Optionally include `globals`, `parserOptions`, etc.
Example shape (conceptual):
- `configs["legacy-recommended"] -> EslintrcObject`
---
## Self-Reference Rule (Critical)
If configs need to reference the plugin object itself:
1. Instantiate `plugin` with empty `configs`.
2. Assign configs **after** plugin creation (e.g. via `Object.assign`).
Never reference `plugin` before it exists.
---
## Consumer Mapping Rules
### Flat Config Consumers
If the plugin exports:
- `configs["flat/recommended"]`
Then consumers extend:
- `"namespace/recommended"`
The `flat/` prefix is **not** used by consumers.
### Legacy Consumers
If the plugin exports:
- `configs["legacy-recommended"]`
Then consumers extend:
- `"namespace/legacy-recommended"`
If preserving an existing legacy name:
- `configs["recommended"]` → `"namespace/recommended"`
---
## Required Consumer Examples
Unless explicitly excluded, you must output:
1. **Flat config example**
- `eslint.config.js`
- Uses `defineConfig`
- Registers plugin
- Uses `extends`
2. **Legacy config example**
- `.eslintrc` (JSON/YAML/JS)
- Uses `plugins` + `extends`
Examples must match the chosen naming strategy exactly.
---
## Repair / Migration Rules
When updating existing plugins:
- Legacy only → add `flat/<name>` if dual support is required.
- Flat only → add `legacy-<name>` if v8 support is required.
- Missing `meta.namespace` → add it and realign all rule prefixes.
- Incorrect consumer examples → regenerate to match config keys.
Never silently change public config names.
---
## Validation Checklist (Fail Fast)
Confirm all of the following:
- `plugin.meta.namespace` exists and matches all rule prefixes.
- Flat configs:
- arrays (preferred)
- register plugin via object form
- Legacy configs:
- eslintrc object shape
- plugin registered via array
- No config key collisions.
- ESLint v8 vs v9 behavior is stated correctly.
- No claim that the plugin forces config usage.
---
## Output Expectations
When executing this Skill, output:
- Plugin source code (or diffs).
- Flat consumer example.
- Legacy consumer example.
- Brief validation confirmation.Related Skills
wordpress-plugin-development
WordPress plugin development workflow covering plugin architecture, hooks, admin interfaces, REST API, and security best practices.
enhance-plugins
Use when analyzing plugin structures, MCP tools, and plugin security patterns.
typespec-create-api-plugin
Generate a TypeSpec API plugin with REST operations, authentication, and Adaptive Cards for Microsoft 365 Copilot
writing-skills
Use when creating new skills, editing existing skills, or verifying skills work before deployment
writing-plans
Use when you have a spec or requirements for a multi-step task, before touching code
update-oo-component-documentation
Update existing object-oriented component documentation following industry best practices and architectural documentation standards.
tailored-resume-generator
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
sync-docs
Sync documentation with code. Use when user asks to update docs, check docs, fix stale documentation, update changelog, or after code changes.
social-content
When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, Facebook, or other platforms. Also use when the user mentions 'LinkedIn...
scientific-writing
Core skill for the deep research and writing tool. Write scientific manuscripts in full paragraphs (never bullet points). Use two-stage process with (1) section outlines with key points using research-lookup then (2) convert to flowing prose. IMRAD structure, citations (APA/AMA/Vancouver), figures/tables, reporting guidelines (CONSORT/STROBE/PRISMA), for research papers and journal submissions.
readme
When the user wants to create or update a README.md file for a project. Also use when the user says 'write readme,' 'create readme,' 'document this project,' 'project documentation,' or asks for he...
readme-blueprint-generator
Intelligent README.md generation prompt that analyzes project documentation structure and creates comprehensive repository documentation. Scans .github/copilot directory files and copilot-instructions.md to extract project information, technology stack, architecture, development workflow, coding standards, and testing approaches while generating well-structured markdown documentation with proper formatting, cross-references, and developer-focused content.