Loading...
Loading...
Guide for adding new linting/formatting tools to lintro. Use when implementing shellcheck, shfmt, sqlfluff, taplo, semgrep, gitleaks, or any new tool plugin.
npx skill4agent add lgtm-hq/ai-skills lintro-addlintro/tools/definitions/<tool>.py@register_toollintro/parsers/<tool>/tests/unit/test_samples/tools/stand-pytestcommit__init__.pylintro/tools/definitions/actionlint.pyhadolint.pylintro/tools/definitions/ruff.pyblack.pylintro/tools/definitions/bandit.pysemgrep.pylintro/tools/definitions/shellcheck.pyshfmt.pylintro/parsers/<reference-tool>/tests/unit/parsers/tests/unit/tools/<reference-tool>/lintro/parsers/<tool>/__init__.py
lintro/parsers/<tool>/<tool>_issue.py
lintro/parsers/<tool>/<tool>_parser.py
lintro/tools/definitions/<tool>.py
test_samples/tools/<category>/<tool>/<tool>_violations.<ext>
tests/unit/parsers/test_<tool>_parser.py
tests/unit/tools/<tool>/__init__.py
tests/unit/tools/<tool>/test_<tool>_plugin.pylintro/enums/tool_name.py # Add to ToolName enum (alphabetical)
lintro/tools/core/version_parsing.py # Add to TOOLS_WITH_SIMPLE_VERSION_PATTERN
lintro/tools/core/version_checking.py # Add install hints in get_install_hints()
lintro/_tool_versions.py # Add version (external tools only)
lintro/tools/manifest.json # Add tool entry (version MUST match _tool_versions.py)
lintro/cli_utils/commands/doctor.py # Add to TOOL_COMMANDS for health check
package.json # Add version for npm tools (must match _tool_versions.py)
renovate.json # Add custom managers for BOTH _tool_versions.py AND manifest.json
pyproject.toml # Add parser package + [tool.lintro.versions] entry
Dockerfile # Add to verification steps (root AND non-root blocks)
Dockerfile.tools # Add to verification step (tool --version)
scripts/utils/install-tools.sh # Add installation command (external tools)
scripts/ci/homebrew/templates/lintro.rb.template # Add depends_on + update caveats (if Homebrew-installable)lintro/_tool_versions.pylintro/tools/manifest.json_tool_versions.pypackage.json_tool_versions.pymin_version_tool_versions.pyrenovate.json_tool_versions.pymanifest.json--checkstand-ci--checkdepends_on "<tool>"scripts/ci/homebrew/templates/lintro.rb.templategenerate_resources.py --excludeshutil.whichpython -mPythonBundledBuildercommand_builders.pyToolType.LINTER # Code quality checker
ToolType.FORMATTER # Code formatter
ToolType.TYPE_CHECKER # Type checking (mypy)
ToolType.DOCUMENTATION # Doc checker (darglint)
ToolType.SECURITY # Security scanner (bandit, semgrep, gitleaks)
ToolType.INFRASTRUCTURE # IaC linter (hadolint, actionlint)
ToolType.TEST_RUNNER # Test framework (pytest)ToolType.LINTER | ToolType.FORMATTERversion--versiongitleaks versioninitial_issues_count = fixed_issues_count + remaining_issues_countpatch("lintro.plugins.execution_preparation.verify_tool_version", return_value=None)patch.object(plugin, "_run_subprocess", ...)_prepare_execution()file_patternsctx.rel_filesshell=True# nosec B404ctx.should_skipctx.early_resultparse_<tool>_output(output: str | None) -> list[<Tool>Issue]BaseIssueDISPLAY_FIELD_MAPlintro/tools/tool_enum.pylintro/tools/core/tool_base.pyuv run lintro toolsuv run lintro check --tools <tool> .lintuv run lintro chkuv run lintro doctorpytest tests/unit/parsers/test_<tool>_parser.py -vpytest tests/unit/tools/<tool>/ -vuv run lintro fmt && uv run lintro chk--checkDockerfileDockerfile.toolsinstall-tools.shlintro/tools/manifest.json_tool_versions.py_tool_versions.pymanifest.jsondepends_ondocker build -t py-lintro:test .lintro-verify