AgentLint
Version updated for https://github.com/0xmariowu/AgentLint to version v1.1.8.
- This action is used across all versions by 0 repositories.
Action Type
This is a Composite action.
Go to the GitHub Marketplace to find the latest changes.
Action Summary
AgentLint is a GitHub Action designed to analyze and score the “harness” of AI agents—comprising configurations, rules, and supporting files that guide large language models (LLMs) in delivering accurate and effective results. It automates the evaluation process with 51 deterministic checks across key dimensions such as safety, workability, and continuity, and provides actionable fixes to optimize agent performance. By identifying and resolving issues in the harness, it helps prevent inefficiencies and AI-related errors, ensuring reliable and refined agent outputs.
What’s Changed
Deferred-P0 follow-up bundle. Closes the 5 P0 blockers from docs/p0-production-blocker-scan-2026-04-25.md that Round 1 (v1.1.6 / v1.1.7) deferred, all reproduced against the 1.1.7 tarball.
You can now…
- Install
agentlint-aion BSD / macOS without GNU coreutils — the global CLI’s symlink resolver no longer relies onreadlink -f. New portable_al_resolve_selfwalks symlink chains via POSIXreadlink, resolves relative targets against the symlink’s containing directory (not the caller’s cwd), and canonicalizes viacd + pwd -P. Mirrored inline inscripts/agentlint.shandsrc/scanner.sh; canonical reference inscripts/lib/resolve-self.shwith regression testtests/test-resolve-self.sh. (P0-5) - Run
/alwithout short project names absorbing unrelated sessions —src/session-analyzer.jsno longer substring-matches encoded session names against project aliases.matchProjectFromCatalognow requires either realpath equality on the decoded session path or exact-equality on the sanitized alias (no.includes()fallback). Sessions with no project match are dropped by default; the new--include-unmatchedflag opts back in. Even with--include-unmatched --include-raw-snippets, unmatched sessions stay redacted. (P0-8) - Trust
agentlint setupnot to silently disable existing hooks — when a repo already hascore.hooksPathset (organisation-level hooks) or executable.git/hooks/pre-commit, setup now fails closed and tells the user to pass--force(or merge their hook chain manually). The check usesgit rev-parse --git-dirso it covers worktrees and submodules where.gitis a file. (P0-3-followup) - Run
agentlint checkin a TTY without piped input and get Usage instead of a hang —src/reporter.jschecksrequire('node:tty').isatty(0)before the blockingfs.readFileSync(0)and exits 1 with Usage when no input is piped. (Initially usedprocess.stdin.isTTY, but accessingprocess.stdininstantiates Node’s Readable wrapper around FD 0 and breaks the pipeline path with EAGAIN;tty.isattyis a pure ioctl check with no side effects.) Pipeline use (scorer | reporter) is preserved. (P0-7) - Trust that v* tags can only release from
main—release.ymlnow (a) refuses to publish unless the tag SHA is an ancestor oforigin/main, (b) verifies every required CI check frombranch-protection.ymlreportedsuccesson that SHA before npm publish, and (c) ships under a new repo rulesettag-protection-v(target=tag,enforcement=active,refs/tags/v*, blocksnon_fast_forward+deletion). Apply once viabash scripts/setup-tag-protection.sh --apply. (P0-2-tag)
Internal
bump-version.sh:139no longer drops 24 lines fromdocs/content/contributing.md— the “Branch protection” section is now in both rootCONTRIBUTING.mdanddocs/content/contributing.md, so the GitBook source-of-truthcpis a no-op (release blocker prerequisite for this bump itself).- Audit doc
docs/p0-production-blocker-scan-2026-04-25.mdpublished to main with Round 2 verification marks for P0-5 and P0-8 (precise line numbers), a new sub-section P0-2-tag, and a new P0-3-followup section documenting the v1.1.6 regression.
Tests added (regression pinning)
tests/test-resolve-self.sh— BSD-readlink stub fixture + 5 cases (non-symlink, absolute symlink, relative symlink in npm-bin shape, chained symlink, negative control).tests/test-session-cross-project.js— end-to-end fixture proving an unmatched session named-tmp-other-application-appnever leaks into projectappeven with--include-unmatched --include-raw-snippetstogether.tests/test-setup-hook-fail-closed.sh— 3 fixtures (existingcore.hooksPath, existing executable.git/hooks/pre-commit,--forceoverride path).tests/test-reporter-tty-noinput.sh— node wrapper overridesprocess.stdin.isTTY=true, perl alarm 8s watchdog catches the hang regression.tests/test-release-yaml-gates.sh— static-shape test asserting tag-protection.yml + release.yml gate ordering.- Hygiene:
tests/test-registry-consistency.jsupdated to grep for the new portable resolver pattern instead of the brokenreadlink -fit was hard-coded to.