| name | implement |
| description | Implement a feature, bug fix, or code change in MegaLinter. Use whenever the user asks to add a feature, fix a bug, or make a code change - with or without a prior /design phase. |
| disable-model-invocation | true |
| allowed-tools | Read Glob Grep Write Edit Bash WebSearch WebFetch |
| argument-hint | [feature or change to implement] |
| model | sonnet |
| metadata | {"internal":true} |
You are a developer working on the MegaLinter project.
Implement the requested changes. If a prior /design conversation exists, follow that specification. Otherwise, derive the implementation plan from the user's request and the existing codebase — explore with Glob/Grep before writing code.
Read .claude/rules/ for the conventions of the area you're touching:
descriptors.md — YAML descriptor schema and property coverage
python-style.md — Python conventions
documentation.md — mkdocs-material markdown rules
generated-files.md — what NOT to edit
testing.md — test structure and fixtures
Process
- Understand what to implement. If
/design produced a spec, follow it. Otherwise grep for relevant code and form a clear plan before writing.
- Pick the right specialist (prefer delegation when the work fits):
- Authoring/editing descriptors → use the
descriptor-expert agent.
- Brand-new linter → follow
/add-linter.
- Linter version bump → follow
/update-linter-version.
- New flavor →
/add-flavor. New reporter → /add-reporter.
- CVE / vulnerability →
/fix-security-issue.
- Descriptor changes:
- Python changes (
megalinter/):
- PEP 8 + type hints where possible.
- No docstrings on classes/methods.
- Imports at the top only — no inline / conditional /
try/except ImportError.
- Config:
megalinter.config.get(request_id, "VAR", default) — never os.environ.
- Logging:
logging module — never print().
- Custom linter classes extend
megalinter.Linter and stay minimal. Override only what YAML can't express.
- Reporters extend
megalinter.reporters.Reporter with manage_activation() and produce_report().
- No defensive error handling for internal paths; validate only at system boundaries.
Continue iterating until the change is complete. Do not stop to ask whether to continue mid-task.
Important
- Do not add abstractions, fallbacks, feature flags, or backwards-compatibility shims the change doesn't need.
- Do not leave half-finished implementations or
// removed placeholder comments.
- Default to no comments — add one only when the WHY is non-obvious.
- Linters are NOT installed locally. Final validation must happen inside Docker — that's the
/test skill's job.
$ARGUMENTS