Skip to content

Add lintlang (AI_LINTLANG) to External Plugins Catalog - #8899

Open
roli-lpci wants to merge 2 commits into
oxsecurity:mainfrom
roli-lpci:add-lintlang-plugin
Open

Add lintlang (AI_LINTLANG) to External Plugins Catalog#8899
roli-lpci wants to merge 2 commits into
oxsecurity:mainfrom
roli-lpci:add-lintlang-plugin

Conversation

@roli-lpci

@roli-lpci roli-lpci commented Sep 5, 2026

Copy link
Copy Markdown

Fixes #8865

Proposed Changes

  1. Add one row to .automation/plugins.yml for lintlang (AI_LINTLANG), a deterministic, offline linter for AI agent instructions, tool definitions, and prompt files, published as an external plugin at https://github.com/hermes-labs-ai/lintlang/tree/main/mega-linter-plugin-lintlang.
  2. Add lintlang to .cspell.json, matching earlier catalog additions.

Generated tables in README.md and docs/plugins.md are left to .automation/build.py, as with previous catalog rows.

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

Verified end to end in oxsecurity/megalinter:v8 and oxsecurity/megalinter-python:v9.4.0: the plugin loader installs lintlang==0.5.3 at run time, a failing fixture makes MegaLinter exit 1, and a clean workspace exits 0.

Readiness Checklist

Author/Contributor

Reviewing Maintainer

  • Label as breaking if this is a large fundamental change
  • Label as either automation, bug, documentation, enhancement, infrastructure, or performance

MegaLinter v10 compatibility

Reopening this existing catalog contribution after completing the requested v10 check. The two-file catalog diff is unchanged.

Tested on 5 September 2026 with ghcr.io/oxsecurity/megalinter-python:v10.1.0 (linux/amd64), image digest sha256:f12a40b0dd5ad2c9aa029dcf7d3a0a92182d05cacc32d37756e67c3446484acb.

The external plugin loader fetched the HTTPS descriptor and installed lintlang==0.5.3 at runtime.

Workspace Selected files Container exit
Clean and deliberately bad agent fixtures, plus unrelated package.json The two agent YAML files; clean reported PASS, bad reported FAIL 1
Clean agent fixture plus unrelated package.json Only the clean agent YAML file 0

This verifies the loader, installation, file selection, and exit behavior on the Python flavor of v10.1.0.

Reproduce the v10 check

Use the descriptor and fixtures from LintLang commit b525d910ac73b3c7d34c8e20ed9dc34786c2ca66.

In a scratch directory, copy clean_config.yaml to agent-clean.yaml and bad_tool_descriptions.yaml to agent-bad.yaml. Add an unrelated package.json containing {} and this .mega-linter.yml:

PLUGINS:
  - https://raw.githubusercontent.com/hermes-labs-ai/lintlang/b525d910ac73b3c7d34c8e20ed9dc34786c2ca66/mega-linter-plugin-lintlang/lintlang.megalinter-descriptor.yml
ENABLE_LINTERS:
  - AI_LINTLANG
VALIDATE_ALL_CODEBASE: true
LOG_LEVEL: INFO
PRINT_ALPACA: false
SHOW_ELAPSED_TIME: true
docker run --rm --platform linux/amd64   -v "$PWD:/tmp/lint:rw"   -e DEFAULT_WORKSPACE=/tmp/lint   ghcr.io/oxsecurity/megalinter-python@sha256:f12a40b0dd5ad2c9aa029dcf7d3a0a92182d05cacc32d37756e67c3446484acb

The first run exits 1. Move agent-bad.yaml outside the scratch directory and rerun; it exits 0. The unrelated metadata file is not selected in either run.

Adds one row to .automation/plugins.yml for lintlang, a deterministic,
offline linter for AI agent instructions, tool definitions, and prompt
files, published as an external MegaLinter plugin under
hermes-labs-ai/lintlang/mega-linter-plugin-lintlang.

Adds "lintlang" to .cspell.json, matching the fmlint, j2lint, and
repolinter catalog additions. Generated tables in README.md and
docs/plugins.md are left to .automation/build.py.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CnXLGuM98H1sVPJcBJwdAD
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Proposal: place LintLang agent-instruction linting in AI_LINTLANG or REPOSITORY_LINTLANG

2 participants