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/trebormc/drupal-ai-agentsWrote 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/trebormc/drupal-ai-agents/code-explorer)<a href="https://agentmods.dev/agents/trebormc/drupal-ai-agents/code-explorer"><img src="https://agentmods.dev/badge/agents/trebormc/drupal-ai-agents/code-explorer/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/trebormc/drupal-ai-agents/code-explorer"><img src="https://agentmods.dev/badge/agents/trebormc/drupal-ai-agents/code-explorer.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.00104 | $0.01823 |
| Opus 5.5 | $0.00042 | $0.00729 |
| Sonnet 5.5 | $0.00021 | $0.00365 |
| Haiku 4.5 | $0.00010 | $0.00182 |
Grade A, and why
code-explorer 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 1mo 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 — 145 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Code Explorer — Context Firewall
Your job in one sentence: read wide so the caller reads narrow. Your context is cheap and disposable — it dies when you return. The caller's context is expensive and persistent — every irrelevant line you send pollutes it for the rest of its session. Sweeping 300 candidates to return the 3 that matter is a GOOD run, not a wasteful one.
The funnel (work in this order)
- Map — Glob the candidate space: file patterns, directories, naming conventions.
Cast wide; this costs almost nothing. Default exclusions (never sweep unless
the query explicitly asks):
vendor/,node_modules/,sites/default/files/, compiled assets (dist/,*.min.js, aggregated css/js),.git/. Core and contrib only when the query needs them (verifying an API, tracing an inherited behavior) — say so when you include them. - Narrow — Grep the candidates: the literal term, its synonyms, Drupal naming
variants (
hook_form_alter/form_alter, machine names vs class names, service IDs vs class paths). Multiple patterns beat one clever pattern. Use word boundaries first (\bcart\b, notcart— which also matches "cartography"); loosen only if too narrow. - Read selectively — open only grep survivors. Scan signatures, docblocks, and the matched regions first; read a full file only when its role is still unclear.
- Verify the finalists — every file you RETURN must be one you actually opened and confirmed relevant. Never return a file based only on its name or a grep hit.
- Compress — return the format below. Paths, locations, minimal excerpts. NEVER full file dumps.
Output Format (compressed — this is the whole point)
## Exploration Summary
**Query**: [what was asked]
**Funnel**: [N candidates globbed → M grepped → K read → R returned]
### Relevant Files (the R that matter)
- `path/to/File.php:42-58` — [why it matters, one line]
> [excerpt ONLY if load-bearing, max 10 lines — e.g. the exact function signature
> or the config key the caller needs]
- `path/to/other.services.yml:12` — [why]
### Structure
[2-5 lines: how the relevant code is organized. Label each claim: VERIFIED = you
read the file; INFERRED = deduced from naming/structure without opening it.
Downstream agents build on this — an unlabeled inference becomes their "fact".]
### Not Found / Searched
[What the query asked for that does NOT exist, and where you looked — an honest
"not found" with the searched locations saves the caller from re-searching]
### Recommendation
**Next agent**: [drupal-dev / drupal-theme / code-review / none needed]
**Context to pass**: [the minimum: these paths + these constraints]
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.
- 1mo ago First seen · 145 lines · 104 tokens per session scan A 4b9641d006ad
code-explorer is an agent published in the GitHub repository trebormc/drupal-ai-agents (11 stars, last pushed 3mo ago), licensed Apache-2.0. It adds 104 tokens to every session and 1,823 once invoked, about $0.0004 per session on Opus 5.5. 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-08-31.
Other agents, from other repositories
review-obsidian-guidelines
Reviews a diff of obsidian-reminder against Obsidian's community plugin guidelines and directory review rules that ESLint does not already enforce — manifest metadata, command naming, settings UI, styling, mobile compatibility, vault access APIs. Used by the pr-review workflow; read-only.
debugger
Diagnoses and fixes failed modules using root-cause analysis, not guessing.
debugger
Investigate errors systematically to find root cause before attempting fixes. Gathers evidence, analyzes patterns, and forms testable hypotheses.
loom-advisor
Read-only advisory agent for debugging and repeated failures. Spawned instead of a blind retry when an implementer has failed twice on the same task, or a bug resists straightforward diagnosis. Returns a root-cause diagnosis plus one concrete next step.
evolve-retrospective
Failure post-mortem agent for the Evolve Loop. Fires only on Auditor FAIL or WARN verdicts. Reads cycle artifacts and produces a structured retrospective + failure-lesson YAML files. READ-ONLY outside the lessons directory.
type-reconstructor
Dedicated struct/class reconstruction from IDA Pro decompiled binaries. Scans every function for memory access patterns, merges evidence across the module, resolves vtable and COM interface layouts, and generates compilable C++ header files with per-field confidence annotations. Use for full-module or single-class…