Skip to main content

implement

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.

Source facts

Repository
oxsecurity/megalinter
Last source activity
August 31, 2026 at 18:22
Detected SKILL.md language
English
Stars
2,638
Forks
318

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
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` — Zensical markdown rules - `generated-files.md` — what NOT to edit - `testing.md` — test structure and fixtures ## Process 1. **Understand what to implement**. If `/design` produced a spec, follow it. Otherwise grep for relevant code and form a clear plan before writing. 2. **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`. 3. **Descriptor changes**: - Edit `megalinter/descriptors/<lang>.megalinter-descriptor.yml`. - Maximize property coverage — see the catalog in `.claude/agents/descriptor-expert.md`. - Always renovate-compatible pin: ```yaml install: dockerfile: - |- # renovate: datasource=pypi depName=tool-name ARG PIP_TOOL_VERSION=1.2.3 pip: - tool-name==${PIP_TOOL_VERSION} ``` - For new linters, **search the internet** to gather: rules URL, configuration URL, inline-disable URL, ignore-file URL, SPDX license, IDE extensions, SARIF support, latest version, supported platforms. 4. **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. 5. **Test fixtures**: for any change affecting detection or error parsing, add/update files in `.automation/test/<test_folder>/`. Good file lints clean; bad file triggers `cli_lint_errors_regex`. 6. **Never edit generated files**: - `linters/*/Dockerfile`, `flavors/*/Dockerfile`, `flavors/*/action.yml`, `flavors/*/flavor.json`. - `megalinter/tests/test_megalinter/linters/*_test.py` files with the `automatically @generated by .automation/build.py` header. - `docs/descriptors/*`. - Schemas under `megalinter/descriptors/schemas/`. - Change the source (descriptor YAML or `.automation/build.py`) instead. 7. **Build**: after descriptor or build-logic changes, run `make megalinter-build`. Delegate to the `build-runner` agent if it gets complex. **Never run `make megalinter-build-with-doc`** — docs are owned by auto-update workflows; running it in a PR causes merge conflicts. 8. **Dependencies**: after editing `pyproject.toml`, run `uv lock`. Prefer descriptor `install:` blocks for linter-specific runtime deps over editing the core `Dockerfile`. 9. **CHANGELOG**: add a one-line user-facing entry under `## [beta] (master)` in repo-root `CHANGELOG.md`. Write it for end users per `.claude/rules/changelog.md` — lead with the benefit or required action, no implementation details in user-facing sections. Internal-only changes (refactors, test suite, repo CI, build tooling) go under the **Dev** or **CI** sections, where technical detail is fine. **Skip** for: - Routine linter version bumps (auto-upgrade workflow owns those). - CVE-ignore entries. 10. **Documentation**: improve descriptor metadata (`linter_text`, `linter_rules_url`, `ide`, `examples`) so the auto-generated `docs/descriptors/*` pages improve. Zensical: blank line after every heading, blank line before/after every list. 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
View on GitHub