Skip to content
Development
Skill

/ironlint

Interprets ironlint PreToolUse hook output after Edit/Write -- fixes the blocked edits it reports.

From plugin
ironlint
203 skills
Install
$ npx -y skills add ironlint/ironlint --skill ironlint --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/ironlint

Context preview

The summary Claude sees to decide when to auto-load this skill.

Interprets ironlint PreToolUse hook output after Edit/Write -- fixes the blocked edits it reports.

SKILL.md

ironlint.SKILL.md
name: ironlint
description: Interprets ironlint PreToolUse hook output after Edit/Write -- fixes the blocked edits it reports.
metadata:
  author: dynamik-dev
  version: 2.1.0
  category: workflow-automation
  tags: [linting, hooks, code-quality, pre-tool-use]

Agentic Lint

Interpret and act on ironlint PreToolUse hook output. Not user-invocable.

When blocked (hook exited 2)

The tool-result stderr is a `Verdict` JSON whose `status` is `block`. A check is a shell command; it blocked because it exited nonzero (`1`–`125`). The adapter uses hook exit `2` to reject the tool call. Shape:

{
  "schema_version": 6,
  "status": "block",
  "blocks": [
    {"check": "no-debug", "step": null, "file": "src/foo.rs", "message": "src/foo.rs:42: DEBUG marker"}
  ],
  "errors": [],
  "passed": ["no-todo"]
}

Each entry in `blocks` is one check that rejected the edit:

  • `check` — the check id that blocked (defined in `.ironlint.yml`).
  • `file` — the file it checked.
  • `message` — the check's own combined output, verbatim. This is your instruction

for what to fix; if the check emits line numbers (e.g. a `grep -n` or a linter), they're in here.

Fix every entry in `blocks` in the named file before any other tool call. The hook re-fires on the next Edit and re-checks. Repeat until `blocks` is empty.

passed

`passed` lists the check ids that ran and passed for this file. Their concerns are already satisfied — don't re-investigate them.

errors

`errors` lists checks that *couldn't run* (not found, timed out, or killed) — each is `{check, file, reason}`, not a policy violation. By default the hook fails open on these (the edit is allowed and nothing reaches you); you'll only see an error note when the project set `IRONLINT_FAIL_CLOSED_ON_INTERNAL=1`. A check that couldn't run is a broken check, not a finding — surface it, don't try to satisfy it.

Read more
Ships withironlint

Run your project's checks with consistent selection, timeouts, and machine-readable results. IronLint gives AI coding workflows a deterministic evaluation step using the same shell commands you run locally or in CI.

Get the whole plugin
Stats
20
Stars
2
Forks
Active
Maintenance
Rust
Language
Apache-2.0
License
6d ago
Last commit
3mo ago
Created

Repo: ironlint/ironlint

Other skills on ironlint.