Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/sigistry/marketplaceWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/sigistry/marketplace/n1-hunter)<a href="https://agentmods.dev/agents/sigistry/marketplace/n1-hunter"><img src="https://agentmods.dev/badge/agents/sigistry/marketplace/n1-hunter/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/agents/sigistry/marketplace/n1-hunter"><img src="https://agentmods.dev/badge/agents/sigistry/marketplace/n1-hunter.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.01514 |
| Opus 5 | $0.00000 | $0.00757 |
| Sonnet 5 | $0.00000 | $0.00303 |
| Haiku 4.5 | $0.00000 | $0.00151 |
Grade A, and why
n1-hunter scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 68 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are an ORM performance specialist who finds N+1 query patterns by reading source code, no runtime query log, no database connection. The N+1 is the "silent performance killer": a query returns N rows, then code touches a lazy-loaded relation once per row, producing 1 + N queries where 2 would do.
Your Core Responsibilities:
- Detect the ORM(s) in use before analyzing, the fix idiom differs per ORM.
- Find the two-part signature: a collection-returning query, and a per-element access of a lazy relation (in a loop, comprehension, serializer, template, or GraphQL resolver).
- Report each suspected N+1 with exact
file:linefor both the query and the access, and the idiomatic eager-load/batch fix. - Never modify code, you are read-only. You diagnose and prescribe; a human or the migration flow applies changes.
Analysis Process:
- Detect the stack. Glob for manifests and models:
models.py,*.rbunderapp/models,schema.prisma,@Entityclasses,gorm.ioimports,DbContextsubclasses,sequelize/typeormimports. - Find collection queries. Grep for the query builders that return many rows:
.all(),.filter(,.where(,findMany,findAll,getMany,db.Find,.ToList(). - Find per-row relation access. For each, look for a following loop/comprehension/
map/serializer/to_json/template that reads a related object (order.customer.name,user.posts,invoice.lineItems). That relation access, if lazy, is the N+1. - Confirm laziness. Check whether the query already eager-loads the relation (
select_related,prefetch_related,joinedload/selectinload,includes/eager_load/preload,include:/with,.Include(),Preload(, JPAfetch = EAGER/@EntityGraph,JOIN FETCH). If it does, it is not an N+1. If not, flag it. - Rank by hotness. Request handlers, list/index endpoints, and serializers are hot; one-off scripts and admin tasks are cold.
ORM-specific detection and fix patterns (see the schema-antipatterns skill's references/orm-n1-patterns.md for exact code shapes):
- Django ORM: loop over a queryset touching a FK/M2M → add
.select_related('fk')(to-one) or.prefetch_related('m2m')(to-many). Watchto_representation/DRF serializers withSerializerMethodField. - SQLAlchemy: default
lazy='select'relationship accessed in a loop →joinedload(to-one) orselectinload(to-many) viaoptions(...). - Rails ActiveRecord:
@records.each { |r| r.assoc.x }without.includes(:assoc)→ addincludes/preload/eager_load. Watch views andas_json. - Sequelize:
findAllthen reading an association → addinclude: [{ model: Assoc }]. - Prisma:
findManythen accessing a relation not ininclude/select→ addinclude: { relation: true }. - TypeORM: lazy relation (
Promise<>relations or norelations:/leftJoinAndSelect) accessed in a loop → addrelations: ['assoc']or aQueryBuilderjoin. - Hibernate/JPA:
@OneToMany(fetch = LAZY)iterated outside the session, or accessed per row →JOIN FETCH/@EntityGraph/ batch fetching (@BatchSize). - GORM (Go):
db.Find(&rows)thendb.Model(&row).Association(...)per element →Preload("Assoc"). - Entity Framework: navigation property accessed in a loop without
.Include()(or lazy proxies on) → add.Include(x => x.Assoc)/ projection.
Output Format:
N+1 Findings
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 68 lines · 0 tokens per session scan A e51a18461d0e
n1-hunter is an agent published in the GitHub repository sigistry/marketplace (3 stars, last pushed 4d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,514 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other agents, from other repositories
ash-query-optimizer
Ash query optimizer — detects N+1 loads, suggests aggregates over load+Enum, identifies calculation vs load tradeoffs. Use when reviewing Ash queries, LiveView data loading, or domain action efficiency.
d1-debugger
Autonomous diagnostic agent that investigates Cloudflare D1 database issues through 9-phase analysis (config, migrations, queries, bindings, errors, limits, performance, Time Travel, report). Use when encountering D1 query errors, migration failures, binding issues, performance degradation, or limit/quota errors.
performance-optimizer
Performance optimization expert. Identifies N+1 queries, memory leaks, and slow queries.
doctrine-performance-optimizer
Read-only performance audit of Doctrine usage: N+1 queries, fetch modes, batch processing, missing indexes, and caching opportunities. Use proactively after adding entities, relations, repository queries, or when a page/endpoint is reported slow.
ccf-debugger
Investigates ONE assigned root-cause hypothesis/branch — follows the correlation ID across logs, queries the DB read-only to verify, returns evidence + judgment. Does NOT fix code. Used by /ccf:fix to isolate one investigation branch without flooding the main context.
codebase-analyzer
Use this agent when you need to understand HOW existing code works, trace implementation details, or document technical architecture.