Tirith Policies
StackGuardian/tirith
Write, validate, run and debug Tirith IaC governance policies, install Tirith, and add it to a CI pipeline (GitHub Actions, GitLab CI, Bitbucket Pipelines, Jenkins, Azure DevOps, CircleCI or any…
Collect MegaLinter lint errors for the current repository. An agent skill from nvuillam/npm-groovy-lint.
$ npx skills add nvuillam/npm-groovy-lint --skill megalinter-check -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nvuillam/npm-groovy-lint megalinter-check --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/nvuillam/npm-groovy-lint.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/megalinter-check .claude/skills/megalinter-check && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "megalinter-check" agent skill from https://github.com/nvuillam/npm-groovy-lint/tree/main/.claude/skills/megalinter-check into .claude/skills/megalinter-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "megalinter-check", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/nvuillam/npm-groovy-lint/tree/main/.claude/skills/megalinter-checkType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add nvuillam/npm-groovy-lint --skill megalinter-check -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nvuillam/npm-groovy-lint megalinter-check --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nvuillam/npm-groovy-lint.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/megalinter-check .agents/skills/megalinter-check && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "megalinter-check" agent skill from https://github.com/nvuillam/npm-groovy-lint/tree/main/.claude/skills/megalinter-check into .agents/skills/megalinter-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "megalinter-check", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nvuillam/npm-groovy-lint --skill megalinter-check -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nvuillam/npm-groovy-lint megalinter-check --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nvuillam/npm-groovy-lint.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/megalinter-check .cursor/skills/megalinter-check && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "megalinter-check" agent skill from https://github.com/nvuillam/npm-groovy-lint/tree/main/.claude/skills/megalinter-check into .cursor/skills/megalinter-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "megalinter-check", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/nvuillam/npm-groovy-lint.git --path .claude/skills/megalinter-check--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add nvuillam/npm-groovy-lint --skill megalinter-check -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nvuillam/npm-groovy-lint megalinter-check --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nvuillam/npm-groovy-lint.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/megalinter-check .gemini/skills/megalinter-check && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "megalinter-check" agent skill from https://github.com/nvuillam/npm-groovy-lint/tree/main/.claude/skills/megalinter-check into .gemini/skills/megalinter-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "megalinter-check", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install nvuillam/npm-groovy-lint megalinter-checkInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add nvuillam/npm-groovy-lint --skill megalinter-check -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/nvuillam/npm-groovy-lint.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/megalinter-check .github/skills/megalinter-check && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "megalinter-check" agent skill from https://github.com/nvuillam/npm-groovy-lint/tree/main/.claude/skills/megalinter-check into .github/skills/megalinter-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "megalinter-check", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nvuillam/npm-groovy-lint --skill megalinter-check -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install nvuillam/npm-groovy-lint megalinter-check --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nvuillam/npm-groovy-lint.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/megalinter-check .opencode/skills/megalinter-check && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "megalinter-check" agent skill from https://github.com/nvuillam/npm-groovy-lint/tree/main/.claude/skills/megalinter-check into .opencode/skills/megalinter-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "megalinter-check", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
megalinter-checkCollect MegaLinter lint errors for the current repository. An agent skill from nvuillam/npm-groovy-lint.
Megalinter Check is an agent skill from nvuillam/npm-groovy-lint. Collect MegaLinter lint errors for the current repository. Use when the user wants to know if the code passes linting, why the MegaLinter CI job fails, or before/after fixing lint errors. Two modes - watch a CI job (GitHub Actions, GitLab CI, Azure Pipelines, Bitbucket Pipelines) and parse its logs, or run MegaLinter locally with Docker (full run or fast parallel standalone linter runs).
Its SKILL.md is about 3.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files (for example `container-engine.md`, `performance.md` and `providers/azure.md`).
It sits in DevOps & Cloud, covering Linting and formatting and CI/CD. It works with Docker, Bitbucket, GitLab and Azure DevOps. The repository describes itself as: Lint, format and auto-fix your Groovy / Jenkinsfile / Gradle files using command line. The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 2080dff. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadGrepGlobWriteAgentAskUserQuestionFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxgitnpmdockerpodmanFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, git, npm and docker, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Megalinter Check loads about 3.9k tokens when it runs. Until then it costs about 102 tokens; SKILL.md has 1,954 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Grep, Glob, Write, Agent, AskUserQuestionAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from nvuillam/npm-groovy-lint at commit 2080dff, republished under its MIT licence (© nvuillam). 1,954 words, ~3,901 tokens.
.claude/skills/megalinter-check/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.Collect the current MegaLinter errors and produce a compact error list that the megalinter-fix skill can consume.
npx mega-linter-runner.git remote get-url origin and the CI config files present.providers/github.mdproviders/gitlab.mdproviders/azure.mdproviders/bitbucket.md❌/✅ table) and per-linter error sections.Before the first local run, make sure the user is aware that running MegaLinter locally is resource-consuming: it needs a reasonably powerful machine (CPU, RAM, free disk space) and a good internet connection — MegaLinter is Docker-based and the first run downloads a large image (can be several GB depending on the flavor). Because of this, watch mode (CI does the work) is usually the recommended option. When both modes are possible (a MegaLinter CI job exists for the repository, or a branch/PR could be pushed to trigger one) and the user did not explicitly choose, ask them which mode to use (use your platform's structured question mechanism if it has one, with watch mode first/recommended) instead of starting a local run.
Requires a container engine (docker or podman) that actually responds - an installed binary proves nothing: with a stopped backend (e.g. Docker Desktop's Windows service), the docker CLI can hang indefinitely instead of failing fast. Probe with a bound before starting any run:
timeout 10 docker info --format '{{.ServerVersion}}' # exit 124 = installed but not answering
timeout 10 podman info --format '{{.Version.Version}}'--container-engine podman when using podman).container-engine.md from this skill's directory for the setup instructions (prefer podman: free of charge even in enterprise contexts). If the user declines, fall back to watch mode.Flavor and version are resolved automatically from MEGALINTER_FLAVOR / MEGALINTER_VERSION in .mega-linter.yml — do not pass --flavor or --release yourself.
npx mega-linter-runner # docker
npx mega-linter-runner --container-engine podman # podmanTip: for repeated local runs (e.g. fix → re-check loops), install the runner once with npm install -g mega-linter-runner and call mega-linter-runner directly — it avoids the npx package resolution overhead on every invocation.
--fix if .mega-linter.yml defines APPLY_FIXES other than none (the repository has opted into auto-fixing).CI/GITHUB_ACTIONS/GITLAB_CI-style environment variable set) — add -e PARALLEL_PROCESS_NUMBER=4 to full runs (use the machine's core count instead if it has fewer than 4). Skip this when the repository configuration already sets PARALLEL_PROCESS_NUMBER; never write it into .mega-linter.yml, where it would also slow down CI.-e JSON_REPORTER=true to full runs: the JSON report is not generated by default (JSON_REPORTER defaults to false), and this env variable overrides the repository configuration, guaranteeing megalinter-reports/mega-linter-report.json.megalinter-reports/mega-linter-report.json and megalinter-reports/linters_logs/ERROR-*.log instead of parsing the console output, and extract the console tips from the persisted log file (see "Console tips" below) - do not re-read the whole console stream for them.REPORT_OUTPUT_FOLDER to a custom folder or none, TEXT_REPORTER: false, or a different TEXT_REPORTER_SUB_FOLDER), fall back in order: check REPORT_OUTPUT_FOLDER in .mega-linter.yml and glob **/mega-linter-report.json / **/linters_logs/ under it, then parse the console output — the ❌/✅ summary table and per-linter error sections are always printed there.Local runs can hang for environmental reasons (engine backend down, Windows bind-mount stalls - see below), so give every local invocation (prerun, full run, targeted re-check) an explicit bound:
npx mega-linter-runner --help for --timeout, and pass --timeout <seconds> if listed - on expiry it also stops and removes the container. Do not assume it exists (older runner versions / pinned MEGALINTER_VERSION).timeout <seconds> npx mega-linter-runner .... This kills the wrapper only, not the container: after it fires, do the orphan cleanup below.Suggested bounds: full run 30 min, prerun or targeted single-linter run 10 min - a full flavor run on a mid-size repo normally takes minutes, not hours. First run on a machine: pre-pull the image separately (docker pull <image> / podman pull <image>) so the multi-GB download does not eat the bound.
No new log output for ~5 minutes is a possible stall, not proof of work. Diagnose actively (<engine> = docker or podman):
<engine> ps -a - is the container still there, and how long has it been "Up"?<engine> logs --tail 30 <name> - what was the last line? A phase boundary that never advances (e.g. "...collects the files to analyse", "Processing linters on [N] parallel cores") shows where it is stuck.<engine> exec <name> ps aux - what is running inside, and how much cumulative CPU TIME do those processes show vs the container's wall-clock uptime? Seconds of CPU over hours of uptime = I/O stall (filesystem or network), not real computation: stop waiting, kill the run, clean up (below), and report the diagnosis instead of polling further. On Windows the usual culprit is the WSL2 bind-mount penalty - see "Windows bind-mount slowness" in performance.md.Killing the wrapping command (shell timeout expiring, Ctrl-C, killing the npx process) does not reliably stop the container - especially on Windows, where signal forwarding is unreliable. Only the runner's own --timeout guarantees cleanup. After any forced interrupt:
<engine> ps -a - look for a still-"Up" container running a megalinter image.<engine> stop <name>, then <engine> rm <name>, for each match.Before the first local full run on a repository (fresh megalinter-setup, or no megalinter-reports/mega-linter-report.json from a previous run), start with a prerun analysis so the real run is not wasted on a badly tuned configuration. Also use it later whenever the user asks to tune MegaLinter performances.
Prerun requires MegaLinter v10 or beta: check MEGALINTER_VERSION in .mega-linter.yml and skip this step (go straight to the full run) when the pinned version is older.
Run MegaLinter in analysis-only mode (fast: no linter is run, and the image pull is reused by the real run right after):
npx mega-linter-runner --prerunRead megalinter-reports/prerun-report.json. Each entry of suggestions describes a .mega-linter.yml change: variable, operation (append to a list / set), values, safe, reason, details.
Review the suggestions with the user:
safe: true suggestions (directories containing only gitignored files) do not change the linting scope - present them grouped, recommend applying them.safe: false suggestions (well-known generated folder names still containing lintable files, flavor change) need an explicit user decision - ask about each one, with the file counts from details. A flavor change also requires updating the image reference in the CI workflow files.Apply the accepted changes to .mega-linter.yml, then continue with the normal full run.
If the report file is missing after the run (image older than v10 that ignored MEGALINTER_PRERUN and linted everything), treat the output as a normal full run instead of re-running.
Re-run only what previously failed, in parallel (max 4 concurrent containers):
npx mega-linter-runner --linter PYTHON_RUFF -e JSON_REPORTER=true src/a.py src/b.py &
npx mega-linter-runner --linter MARKDOWN_MARKDOWNLINT -e JSON_REPORTER=true README.md &
wait(-e JSON_REPORTER=true for the same reason as in full runs: the JSON report is not generated by default.)
Version rule (all skills): runner and Docker image versions always follow MEGALINTER_VERSION from .mega-linter.yml — invoke npx mega-linter-runner@beta when it is beta, plain npx mega-linter-runner otherwise, and never pass --release yourself. Caveat until MegaLinter v10: standalone megalinter-only-* images are only multi-arch on the beta tag, so if a standalone run fails with a platform error while MEGALINTER_VERSION is not beta, inform the user and propose either pinning MEGALINTER_VERSION: beta or falling back to a full-image re-check.
REPOSITORY_*, COPYPASTE_JSCPD).megalinter-reports/<linter_key_lower>/ — no conflict between parallel runs.Whatever the mode, summarize the result in this shape (this is what megalinter-fix consumes):
{
"status": "success|errors|failure",
"linters": [
{
"key": "PYTHON_RUFF",
"errors": 12,
"fixable": true,
"blocking": true,
"files": ["src/a.py"],
"samples": ["src/a.py:10:5 E501 line too long"]
}
]
}Distinguish blocking linters (❌, fail the job) from non-blocking ones (⚠️, DISABLE_ERRORS: true). A failure status means the job/run itself broke (container engine, network, configuration): include a "failure_reason" field with a short cause excerpt instead of linter errors. In watch mode, a "job_url" field may be added for reference. Add the optional "tips" field when console tips were found (see below).
MegaLinter's console output is full of actionable advice for agents that never reaches the JSON report: performance warnings (">300 .gitignored files... consider ADDITIONAL_EXCLUDED_DIRECTORIES", "Heavy folders detected"), flavor suggestions, [Activation] notices explaining why a linter did not run, deprecation and removed-linter notices, timeout kills, forwarded-exclusion traces. Always collect them:
megalinter-reports/mega*linter.log (file name from LOG_FILE, default mega-linter.log; LOG_FILE: none disables it, then use the captured console output). Grep it instead of re-reading the console: grep -E "⚠|WARNING|\[Activation\]|Heavy folders|To improve|[Ff]lavor|deprecat|Timed out|[Cc]onsider" <log-file>.Curate the matches into at most 10 one-line entries: keep lines that suggest a configuration, performance, or upgrade action; drop per-file lint errors, banners, and progress lines; dedupe repeats. Add them to the output as:
"tips": [
"More than 300 .gitignored files detected (612): consider adding directories to ADDITIONAL_EXCLUDED_DIRECTORIES (heaviest: site, coverage)",
"[Activation] MARKDOWN_RUMDL inactive: set MARKDOWN_DEFAULT_STYLE=rumdl to activate"
]Relay the tips to the user after the error summary, and feed the configuration-related ones into the megalinter-setup refinement step or the prerun suggestions review when one is in progress. Like performance suggestions, never apply a tip without the user's agreement.
MegaLinter's summary table includes an Elapsed time column per linter — always collect it. Add a "slow_linters" field to the output when any linter took more than 30 seconds or more than 25% of the total lint time:
"slow_linters": [{"key": "REPOSITORY_GRYPE", "elapsed_seconds": 116.6}]When slow_linters is non-empty, load performance.md from this skill's directory and report the matching improvement suggestions to the user — explicitly noting that nothing is failing and these are pure speed wins. Never apply a performance change (exclusions, caching, disabling a linter) without the user's agreement.
If sub-agents are available and the agent definitions are installed (see megalinter-setup):
megalinter-watcher with the branch/PR reference; it polls, fetches and parses, and returns the output contract.megalinter-runner with the command to run; it executes and digests the reports.megalinter-runner per standalone linter run, in parallel (max 4).This keeps multi-megabyte CI logs and linter output out of your context. Without sub-agents, do everything inline.
© nvuillam, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files in .claude/skills/megalinter-check of nvuillam/npm-groovy-lint.
Open the folder on GitHubat commit 2080dff
We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in nvuillam/npm-groovy-lint, which our catalogue first saw on October 7, 2026.
Megalinter Check next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Megalinter Check this skillnvuillam/npm-groovy-lint | 248 | 1 repos | ~3.9k | Automated safety check: Notes | MIT | |
| Tirith PoliciesStackGuardian/tirith | 170 | — | ~1.8k | Automated safety check: Pass | Apache-2.0 | |
| Playwright CIzebbern/claude-code-guide | 4.7k | 2 repos | ~675 | Automated safety check: Pass | MIT | |
| GitHub Actions CreatorFNOSP/FlyNarwhal | 496 | 1 repos | ~2.4k | Automated safety check: Pass | AGPL-3.0 | |
| CI CDEliasOulkadi/shokunin | 114 | — | ~3.4k | Automated safety check: Notes | MIT | |
| CI CDahmedasmar/devops-claude-skills | 203 | — | ~3.5k | Automated safety check: Pass | None |
StackGuardian/tirith
Write, validate, run and debug Tirith IaC governance policies, install Tirith, and add it to a CI pipeline (GitHub Actions, GitLab CI, Bitbucket Pipelines, Jenkins, Azure DevOps, CircleCI or any…
zebbern/claude-code-guide
Production-ready CI/CD configurations for Playwright — GitHub Actions, GitLab CI, CircleCI, Azure DevOps, Jenkins, Docker, parallel sharding, reporting, code coverage, and global setup/teardown.
FNOSP/FlyNarwhal
A skill your agent uses when the user wants to create, generate, or set up a GitHub Actions workflow.
EliasOulkadi/shokunin
Design CI/CD pipelines for GitHub Actions, GitLab CI, and CircleCI with matrix builds, test sharding, caching, Docker layer caching, OIDC auth, deployment strategies (rolling, blue-green, canary)…
ahmedasmar/devops-claude-skills
CI/CD pipeline design, optimization, DevSecOps security scanning, and troubleshooting.
dotnet/skills
Author and review GitHub Actions workflow YAML safely so syntactically-valid YAML can't ship a workflow that GitHub Actions refuses to run.
nvuillam/npm-groovy-lint
Install or upgrade MegaLinter on a repository. An agent skill from nvuillam/npm-groovy-lint.
nvuillam/npm-groovy-lint
Entry point for everything MegaLinter. An agent skill from nvuillam/npm-groovy-lint.
nvuillam/npm-groovy-lint
Upgrade CodeNarc and the bundled Java dependencies (jackson, logback, slf4j, janino, GMetrics, Groovy libs) that ship inside lib/java/, rebuild the deterministic CodeNarcServer.jar, and verify…
nvuillam/npm-groovy-lint
Fix the errors reported by MegaLinter. An agent skill from nvuillam/npm-groovy-lint.
nvuillam/npm-groovy-lint
Watch the GitHub PR for the current branch, wait for CI to finish, and autonomously fix failing jobs by reading logs, editing sources, and pushing.
Categories
Collect MegaLinter lint errors for the current repository. An agent skill from nvuillam/npm-groovy-lint. Megalinter Check is an agent skill from nvuillam/npm-groovy-lint. Collect MegaLinter lint errors for the current repository.
Megalinter Check fits situations like: the user wants to know if the code passes linting; why the MegaLinter CI job fails; before/after fixing lint errors.
Run `npx skills add nvuillam/npm-groovy-lint --skill megalinter-check -a claude-code`. Or copy the skill folder (.claude/skills/megalinter-check in nvuillam/npm-groovy-lint) into .claude/skills/megalinter-check in your project. Claude Code loads it when a task matches its description.
Run `npx skills add nvuillam/npm-groovy-lint --skill megalinter-check -a codex`. Or copy the skill folder (.claude/skills/megalinter-check in nvuillam/npm-groovy-lint) into .agents/skills/megalinter-check in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add nvuillam/npm-groovy-lint --skill megalinter-check -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/megalinter-check, .gemini/skills/megalinter-check, .github/skills/megalinter-check and .opencode/skills/megalinter-check in your project.
Going by SKILL.md and its folder, Megalinter Check needs the command-line tools its instructions call (npx, git, npm, docker and podman). Our summary lists: Node.js; Docker. Its frontmatter pre-approves these tools: Bash, Read, Grep, Glob, Write, Agent, AskUserQuestion.
SKILL.md contains no URLs. Its commands use npx, git, npm and docker, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Megalinter Check is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.9k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Megalinter Check: Tirith Policies (StackGuardian/tirith, 170 stars), Playwright CI (zebbern/claude-code-guide, 4.7k stars), GitHub Actions Creator (FNOSP/FlyNarwhal, 496 stars) and CI CD (EliasOulkadi/shokunin, 114 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
nvuillam (a GitHub user) maintains it in nvuillam/npm-groovy-lint, which has 248 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 8, 2026.
Source: nvuillam/npm-groovy-lint on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.