# MegaLinter

Add LintLang to an existing MegaLinter installation as the opt-in `AI_LINTLANG` external plugin. It checks conventionally named agent-instruction, prompt, tool, skill, and system files alongside your other linters.

## Setup

Add these entries to `.mega-linter.yml`, preserving any existing plugins and enabled linters:

```yaml
PLUGINS:
  - https://raw.githubusercontent.com/hermes-labs-ai/lintlang/main/mega-linter-plugin-lintlang/lintlang.megalinter-descriptor.yml

ENABLE_LINTERS:
  - AI_LINTLANG
```

The released descriptor installs `lintlang==0.8.0` in MegaLinter's image and invokes `lintlang scan --fail-on fail` on selected files. The `main` descriptor URL can change; review descriptor updates separately from scanner package upgrades.

## Verify

Run your configured MegaLinter workflow and inspect its log for descriptor loading, `AI_LINTLANG` initialization, selected filenames, and scanner version. Confirm that the intended files were selected before interpreting a clean result.

The plugin's default selection includes `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, Copilot `*.instructions.md`, and names containing `agent`, `prompt`, `tool`, `skill`, `system`, or `instruction`. It does not select every Markdown, YAML, JSON, or Python file.

FAIL blocks the linter; REVIEW stays advisory. Input errors also fail. Loading the descriptor and installing the scanner may need network access; scanning makes no model calls.

## Adjust selection

To deliberately broaden the files checked, add a per-linter extension override:

```yaml
AI_LINTLANG_FILE_EXTENSIONS:
  - .yaml
  - .yml
  - .json
```

Use MegaLinter's `FILTER_REGEX_EXCLUDE` or `AI_LINTLANG_FILE_NAMES_REGEX` controls for narrower selection. The [released guide](https://github.com/hermes-labs-ai/lintlang/blob/c0cab00048220286858f227aaf4b13cc043f718b/mega-linter-plugin-lintlang/README.md) includes scratch-container and repository test procedures.

## Recorded verification

The recorded real-container trial used **MegaLinter 8.8.0 and LintLang 0.5.3**. It verified loader behavior, selection, and clean/failing outcomes for that pair. The current descriptor's 0.8.0 package pin is separate from that historical container evidence.

To remove this integration, remove only the LintLang descriptor and `AI_LINTLANG` configuration entries.

## Next steps

[Understand verdicts](/docs/outputs) · [Review baselines](/docs/baselines) · [All integrations](/integrations)

