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

16-eyes

v1.2.0

Published

AI-driven security audits — full-repo or diff/PR-scoped — for Claude Code, Gemini CLI, Cursor, and GitHub Copilot. Profiles the repo, designs tailored investigation lenses, runs them, verifies every finding, adversarially reviews high-impact ones. Install

Downloads

1,033

Readme

16 Eyes

16 Eyes

Auditorias de segurança orientadas por IA para Claude Code, Gemini CLI, Cursor e GitHub Copilot — repositório inteiro ou escopado a diff/PR.

Claude Code Gemini CLI Cursor GitHub Copilot

Como o 16 Eyes funciona

Dezesseis olhos independentes olham cada achado antes dele chegar no seu relatório: a lente que o encontrou, um verificador cético que relê o código de verdade, e — pros achados de impacto alto — vários revisores adversariais tentando ativamente derrubar o achado. Nada entra no relatório só na palavra de um agente.

Demo do 16 Eyes

Vídeo em qualidade completa no YouTube

Read in English · Lee en español

Por que isso existe

Ferramentas escopadas a diff (o /security-review nativo do Claude Code, a maioria dos scanners ligados no CI) fazem uma única passada sobre o que mudou e só enxergam o PR/branch atual. O /16-eyes audit-diff também é escopado a diff, mas roda as lentes sob medida do repo, verifica cada achado ceticamente e faz revisão adversarial dos de impacto alto — um pipeline mais pesado e cético que um revisor de passada única, e uma boa opção pra plugar no CI. O /16-eyes audit vai além: varre o repositório inteiro, independente do que mudou recentemente — uma vulnerabilidade parada no código há meses é invisível pra qualquer ferramenta escopada a diff, audit-diff incluído. É um sweep profundo, deliberado e ocasional, não algo pra rodar a cada commit.

Diferente de uma checklist fixa, o 16 Eyes perfila seu repo primeiro (stack, domínios, arquitetura) e só então desenha o próprio plano de investigação — um serviço pequeno ganha um punhado de lentes sob medida, um backend grande e multi-domínio ganha bem mais — e em ambos os casos as lentes são sobre o que realmente existe no seu código, não uma lista genérica.

Instalação

Claude Code, como plugin — o caminho mais rápido, sem precisar de npm/Node:

/plugin marketplace add kigiela/16-eyes
/plugin install 16-eyes@16-eyes

Qualquer uma das quatro ferramentas, via npm:

npx 16-eyes install

Instala o skill do Claude Code globalmente em ~/.claude/skills/user/16-eyes. Use --project pra instalar no .claude/skills/16-eyes do repositório atual em vez disso. Uma sessão nova do Claude Code é necessária depois — skills são descobertos no início da sessão, não no meio dela.

npx 16-eyes update       # recopia a versão mais recente
npx 16-eyes uninstall    # remove o que foi instalado (nunca toca no .16-eyes/ próprio de um repo)
npx 16-eyes status       # mostra o que está instalado, e onde, em cada ferramenta

Pra Gemini CLI, Cursor ou GitHub Copilot (em vez de, ou além do Claude Code), passe --target:

npx 16-eyes install --target gemini    # → .gemini/commands + .gemini/agents
npx 16-eyes install --target cursor    # → .cursor/skills + .cursor/agents
npx 16-eyes install --target copilot   # → .github/agents + .github/prompts
npx 16-eyes install --target all       # todas as ferramentas de uma vez

Esses são sempre relativos ao projeto (dê git add e commit neles) — nenhuma dessas ferramentas tem o conceito de skill global do Claude Code. Veja Outras ferramentas abaixo pra saber o que muda nelas.

Uso

Dentro do Claude Code, em qualquer repositório:

/16-eyes init         configura — detecta gates/exclusões/saída, desenha as lentes
/16-eyes audit        roda todas as lentes no repositório inteiro
/16-eyes audit-diff   o mesmo motor, escopado a um diff/PR
/16-eyes fix          aplica os achados — os safe direto, os risky com sua confirmação

init desenha e persiste as lentes de investigação do repo — audit e audit-diff reaproveitam em vez de redesenhar do zero a cada execução. Se pular, qualquer um dos dois faz o bootstrap automático (sem perguntas, seguro em CI); rode explicitamente antes se quiser customizar padrões de exclusão, local de saída, profundidade, idioma, ou qual model as chamadas de subagente do pipeline usam, antes disso acontecer. audit é somente leitura e pode levar alguns minutos (dezenas de chamadas de subagente) — esperado pra um sweep do repositório inteiro; audit-diff é bem mais barato por ser escopado a um diff. fix nunca commita nem dá push; sempre deixa as mudanças na working tree pra você revisar.

Como funciona

  1. Perfil e desenho de lentes (/16-eyes init, uma vez) — um agente explora a estrutura do repo e identifica a stack, o domínio, e os subsistemas específicos que importam pra segurança (pagamentos, webhooks, auth, upload de arquivo, uso de LLM, o que realmente se aplicar); um segundo agente, dado esse perfil, desenha uma lista de lentes de investigação sob medida — pulando categorias que não se aplicam, adicionando as específicas do repo que se aplicam. Persistido em .16-eyes/lenses.json.
  2. Lentes → verificação (audit/audit-diff, a cada execução) — cada lente persistida investiga de forma independente (no repo inteiro, ou escopada a um diff); todo achado que ela levanta passa por uma reverificação cética independente contra o código de verdade (não só a descrição do próprio achado).
  3. Revisão adversarial — achados classificados como impacto alto passam por uma segunda rodada independente: vários revisores tentam, cada um, derrubar o achado. Só sobrevive se a maioria não conseguir refutar.
  4. Relatório — os achados que sobrevivem são classificados safe (correção mecânica, sem mudança de comportamento) ou risky (precisa de decisão humana), escritos tanto como relatório markdown (SECURITY_AUDIT_<data>.md ou SECURITY_AUDIT_DIFF_<data>.md) quanto um companheiro legível por máquina (.json, consumido pelo /16-eyes fix).

Veja a Wiki pra um mergulho técnico mais profundo: os guards exatos de verificação/revisão adversarial, como as categorias de lentes mapeiam pro OWASP Top 10:2025, o tradeoff entre auditoria full-repo vs. diff, e ressalvas honestas.

Outras ferramentas

Gemini CLI, Cursor e GitHub Copilot têm cada um seu próprio adaptador enxuto em integrations/ (instalado via --target, veja acima), todos compartilhando o mesmo .16-eyes/config.json / .16-eyes/lenses.json / relatórios que o Claude Code — rode init uma vez com qualquer uma das ferramentas e todas as outras instaladas reaproveitam. A sintaxe de invocação muda conforme a convenção de cada ferramenta:

| | init | audit | audit-diff | fix | |---|---|---|---|---| | Claude Code | /16-eyes init | /16-eyes audit | /16-eyes audit-diff | /16-eyes fix | | Gemini CLI | /16-eyes:init | /16-eyes:audit | /16-eyes:audit-diff | /16-eyes:fix | | Cursor | 16-eyes-init | 16-eyes-audit | 16-eyes-audit-diff | 16-eyes-fix | | GitHub Copilot | @16-eyes-init | @16-eyes-audit | @16-eyes-audit-diff | @16-eyes-fix |

A ferramenta Workflow do Claude Code roda um pipeline escrito-por-agente com chamadas validadas por JSON-schema — as etapas de fan-out, verificação e revisão adversarial são impostas de fato, não só sugeridas. No momento desta escrita, Gemini CLI, Cursor e Copilot têm subagentes paralelos, mas nenhum tem essa capacidade de impor schema — os adaptadores deles pedem pra cada agente delegado retornar um bloco JSON e fazem o parsing, com as mesmas travas de corrupção/refutação escritas como instruções explícitas em vez de código imposto. É a mesma metodologia, com garantias um pouco mais fracas que a versão Claude Code. O coding agent assíncrono do GitHub Copilot especificamente não tem equivalente a slash-command nenhum — ele depende do AGENTS.md (também instalado por --target copilot) pra ter um mínimo de contexto, em vez de um comando dedicado.

CI

/16-eyes audit-diff foi feito pra rodar em toda PR. Configuração mais simples, como uma GitHub Action publicada:

- uses: kigiela/16-eyes@v1
  with:
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}

Veja docs/ci.md pro panorama completo (só comentário por padrão, bloqueio de merge opcional, e a alternativa com o workflow bruto se quiser ver cada passo explicitamente).

Licença

MIT — ver LICENSE. Também: Política de Privacidade · Termos de Serviço · Disclosures de segurança e transparência.