oxsecurity/megalinter

review-descriptor

Audit a linter descriptor YAML for completeness, correctness, and best practices. Checks all properties against the full schema.

First seen Aug 3, 2026

Installation

$ npx skills add oxsecurity/megalinter --skill review-descriptor

Also in this package

Other skills from oxsecurity/megalinter · top by installs.

npx skills add oxsecurity/megalinter

Browse all from oxsecurity/megalinter

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 2.6K
License LICENSE
Default branch main
Open issues 25
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Allowed toolsRead Grep Glob Bash WebSearch WebFetch
Declared agents claude-code
More metadata
internal
1

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 5,518 B
  • docs SUMMARY.md 153 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 3 installs

SKILL.md

Review the descriptor for $ARGUMENTS. If a linter name is given, find its descriptor in megalinter/descriptors/.

If a linter entry declares extends: <name>, audit the resolved definition: read megalinter/descriptors/shared/<name>.megalinter-linter.yml and apply the entry's overrides on top (shallow merge). Report gaps against the shared file when the property is common to all descriptors, against the entry when it is descriptor-specific.

For each linter entry, audit against the full property list below. Report a checklist with status for each category.

1. Identity (required)

  • linter_name — present, lowercase, matches CLI executable
  • linter_url — valid URL to tool docs/website
  • examples — at least 2: one plain, one with config file

2. Documentation Quality

  • linter_text — rich description with features, what it checks, use cases
  • linter_repo — GitHub/source repository URL
  • linterrulesurl — URL listing all rules/checks
  • linterrulesconfiguration_url — how to configure
  • linterrulesinlinedisableurl — how to suppress inline
  • linterrulesignoreconfigurl — how to use ignore files
  • linterspdxlicense — valid SPDX ID (e.g., MIT, Apache-2.0)
  • linter_speed — rated 1-5 (check if realistic)
  • linterimageurl or lintericonpngurl or linterbannerimageurl — at least one image

3. CLI Configuration

  • clilintmode — default mode: file, listoffiles, or project
  • supportedclilintmodes — all modes the linter supports (must include clilint_mode); each listed mode gets its own success/failure test, so don't declare a mode the tool can't actually run in
  • configfilename — set if linter uses a config file
  • cliconfigarg_name — set if config file is used
  • clilintfixargname — set if linter supports auto-fix
  • clilintfixremoveargs — set if fix mode requires removing args (e.g., --check)
  • ignorefilename + clilintignoreargname — set if linter has ignore files
  • Excluded directories forwarding — if project is a supported lint mode, exactly ONE mechanism must be declared: clilintmodeprojectexcludeargname (+ argvalue template, separator when a repeated flag overrides, seedvalues when the flag replaces built-in defaults, configkey when it replaces a config-file list), OR the ignorefile* properties, OR workspacefilename, OR a manageexcludeddirectoriesconfig() class override. Search the internet to confirm flag semantics (path/glob/regex, anchoring, repeatability, config/defaults replacement) — see .claude/rules/descriptors.md for the trap list
  • If the linter class overrides buildlintcommand without calling super(), verify it applies buildprojectexclude_arguments() itself in project mode
  • Poison fixture present in .automation/test/<test_folder>/good/.wireit/ when forwarding is declared (and the folder is not shared with a non-forwarding project linter)
  • cliversionarg_name — set if not --version
  • clihelparg_name — set if not --help

4. Error Parsing

  • clilinterrorscount — set (regexcount, regexnumber, regexsum, total_lines, or sarif)
  • clilinterrors_regex — set and matches actual linter output format

5. SARIF Support

  • If linter supports SARIF: canoutputsarif: true, clisarifargs with {{SARIFOUTPUTFILE}}
  • If not: confirmed that tool doesn't support SARIF output (search the internet to verify)

6. Install & Platforms

  • install section with proper renovate-compatible # renovate: datasource=... comments
  • Version explicitly pinned (no @latest in production)
  • supported_platforms lists linux/amd64 (and linux/arm64 if applicable)
  • install_override for ARM if install differs by platform

7. IDE Integration

  • ide.vscode — VS Code extension listed (if one exists; search if unsure)
  • ide.idea — JetBrains/IntelliJ extension listed (if available)
  • Other IDEs checked: eclipse, sublime, emacs, atom, visual_studio

8. Test Fixtures

  • .automation/test/<test_folder>/ exists
  • Contains at least one good (clean) file
  • Contains at least one bad (has errors) file
  • Bad file errors match clilinterrors_regex pattern

9. Behavior Flags

  • is_formatter — set to true if it's a formatter
  • activation_rules — set if depends on env vars (e.g., style choice)
  • activeonlyiffilefound — set if should only run when config exists
  • deprecated/disabled — correct if applicable

10. Flavor Assignment

  • descriptor_flavors is appropriate for the language
  • Cross-check against existing flavors in flavors/
  • descriptorflavorsexclude set if needed

Summary

After the checklist, provide:

  • Missing properties that should be added (with suggested values when possible)
  • Incorrect values that should be fixed
  • Internet search results for any missing documentation URLs, IDE extensions, or SARIF support