npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@aurelienbbn/agentlint

v0.1.5

Published

Stateless, deterministic CLI that bridges traditional linters and AI-assisted code review

Readme

agentlint

CI npm version License: MIT

Stateless, deterministic CLI that bridges traditional linters and AI-assisted code review.

agentlint uses tree-sitter to parse code, runs visitor-based rules that flag suspicious patterns, and outputs structured reports with natural language instructions. The output is designed to be consumed by an AI coding agent (Claude Code, Cursor, etc.) that evaluates each finding in context.

How it works

Phase 1 - Deterministic (agentlint)
  tree-sitter AST parsing -> visitor dispatch -> pattern match -> collect flags

Phase 2 - AI-evaluated (the calling agent)
  reads agentlint stdout -> evaluates each match per instructions -> acts

agentlint owns Phase 1 only. It does not call any AI model. It does not require an API key.

Quick start

pnpm add @aurelienbbn/agentlint

Create agentlint.config.ts:

import { defineConfig, defineRule } from "@aurelienbbn/agentlint";

const noNoiseComments = defineRule({
  meta: {
    name: "no-noise-comments",
    description: "Flags comments for AI evaluation",
    languages: ["ts", "tsx"],
    instruction: `Evaluate each comment. Is it noise or valuable?
Remove noise comments. Keep valuable ones.`,
  },
  createOnce(context) {
    return {
      comment(node) {
        const text = node.text.replace(/^\/\/\s*/, "").trim();
        if (text === "") return;
        context.flag({ node, message: `Comment: "${text.slice(0, 60)}"` });
      },
    };
  },
});

export default defineConfig({
  rules: { "no-noise-comments": noNoiseComments },
});

Run:

# Scan files changed in current branch
pnpm agentlint check

# Scan all files
pnpm agentlint check --all

# Scan specific files or globs
pnpm agentlint check src/utils.ts "src/**/*.tsx"

# List registered rules
pnpm agentlint list

# Mark flags as reviewed
pnpm agentlint review <hash...>

Output format

agentlint v0.1.0 - 1 rule(s) triggered, 3 match(es)

━━━ no-noise-comments: Flags comments for AI evaluation (3 match(es)) ━━━

  [abc1234] src/utils.ts:5:1  // Increment the counter
  [def5678] src/utils.ts:12:1  // Helper function
  [ghi9012] src/utils.ts:18:3  // TODO: implement later

  ┌─ Instruction ─────────────────────────────────────────
  │ Evaluate each comment. Is it noise or valuable?
  │ Remove noise comments. Keep valuable ones.
  └───────────────────────────────────────────────────────

3 match(es) across 1 rule(s)

CLI reference

agentlint check [files...] [options]

| Flag | Description | | --------------------- | --------------------------------------- | | --all, -a | Scan all files (not just git diff) | | --rule, -r <name> | Run only this rule | | --dry-run, -d | Show counts only, no instruction blocks | | --base <ref> | Git ref to diff against |

agentlint list

Lists all registered rules with their metadata.

agentlint init

Scaffolds a starter agentlint.config.ts file in the current directory.

agentlint review [hashes...] [options]

Manages per-developer reviewed-flag state. When you run agentlint check, flags that have been marked as reviewed are automatically filtered out of the output.

| Flag | Description | | ------------- | ---------------------------------------- | | --all, -a | Mark all current flags as reviewed | | --reset | Wipe the state file (.agentlint-state) |

Review workflow:

  1. Run agentlint check to see current flags.
  2. After evaluating a flag, mark it as reviewed by passing its hash:
    pnpm agentlint review abc1234 def5678
  3. To mark every current flag as reviewed at once:
    pnpm agentlint review --all
  4. Reviewed flags are stored in .agentlint-state (a local file, not committed to git). Future check runs hide them automatically.
  5. To start fresh and see all flags again:
    pnpm agentlint review --reset

Contributing

See CONTRIBUTING.md for local development setup and how to write rules.

Security

Please report vulnerabilities privately as described in SECURITY.md.

License

MIT