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.
npx skills add moonlight-lupin/agent-skills --skill log-analyzergit clone --depth 1 https://github.com/moonlight-lupin/agent-skillsWrote 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/skills/moonlight-lupin/agent-skills/log-analyzer)<a href="https://agentmods.dev/skills/moonlight-lupin/agent-skills/log-analyzer"><img src="https://agentmods.dev/badge/skills/moonlight-lupin/agent-skills/log-analyzer/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/skills/moonlight-lupin/agent-skills/log-analyzer"><img src="https://agentmods.dev/badge/skills/moonlight-lupin/agent-skills/log-analyzer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00069 | $0.02914 |
| Opus 5 | $0.00034 | $0.01457 |
| Sonnet 5 | $0.00014 | $0.00583 |
| Haiku 4.5 | $0.00007 | $0.00291 |
Grade A, and why
log-analyzer 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 2d 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 — 278 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Log Analyzer
Overview
Log viewers filter lines. This skill finds patterns.
Use it when an agent runtime, tool process, gateway, scheduler, or other service
has produced enough log output that individual grep hits no longer explain the
system behavior. The analyzer parses standard log lines, normalizes repeated
messages, groups errors by component and tool, and produces a structured anomaly
report that is suitable for debugging sessions or cron digests.
The script is intentionally lightweight and portable: it uses only Python's standard library and works on any text log with timestamp, level, optional component, and message fields. It also has a best-effort fallback for unstructured logs.
Quick Start
cd agent-ops/log-analyzer
python scripts/analyze_logs.py scan --log-file agent.log --since 24h
For per-tool failure rates from a Hermes profile's session DB (structured exit_code signals, NOT regex-over-content):
python scripts/state_failures.py # last 7 days, dashboard
python scripts/state_failures.py --days 30 --json
python scripts/state_failures.py --quiet # cron: silent when healthy
See references/state-failure-monitor.md for provenance (adapted concept
from hermes-dojo), the spike evidence for why structured signals matter,
and interpretation notes.
To write JSON for later Markdown rendering:
python scripts/analyze_logs.py scan --log-file agent.log --since 24h --output scan.json
python scripts/analyze_logs.py report --scan scan.json --output report.md
For cron-compatible anomaly detection:
python scripts/analyze_logs.py scan --log-file agent.log --since 24h --quiet
--quiet exits 0 and prints nothing when no anomalies are found. If anomalies
exist, it prints the JSON report so the scheduler can deliver the digest.
What It Detects
- Error clusters — the same normalized error message repeated 3+ times within the selected time window. URLs, IP addresses, and numbers are replaced with placeholders before grouping so repeated failures with changing IDs still cluster.
- Rate limit hits — HTTP
429,rate limit,rate_limit,too many requests, andquota exceededpatterns. The analyzer groups them by provider when it can detect a provider name. - Timeout patterns —
timeout,timed out,deadline exceeded, andconnection timeout. Results are grouped by detected tool name and include example URLs where present. - Tool failures — error lines grouped by tool name extracted from patterns
such as
tool: terminal,tool_call: web_search,tool terminal failed, or lines emitted by atoolscomponent. - Session crashes — fatal errors, unhandled exceptions, stack traces,
Traceback,Exception, andsegfaultmarkers. Multiline stack traces are grouped as one crash entry with nearby context. - Component breakdown — error and warning counts by component such as
gateway,agent,tools,cron, orunknown. - Error timeline — error counts bucketed by hour to reveal spikes and regressions after deploys or scheduled jobs.
What ships with it
9 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/anomaly-types.md 4.1 KB
- references/hermes-profile-audit.md 3.9 KB
- references/log-formats.md 3.2 KB
- references/state-failure-monitor.md 4.5 KB
- scripts/analyze_logs.py 23 KB runs code
- scripts/hermes_log_window.py 4.2 KB runs code
- scripts/state_failures.py 8.8 KB runs code
- tests/test_analyze_logs.py 8.1 KB runs code
- tests/test_state_failures.py 9.0 KB runs code
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.
- 2d ago Changed · +49 lines · +19 tokens per session 4d8eb92d0954
- 10d ago First seen · 229 lines · 50 tokens per session scan A bd21247f52e4
log-analyzer is a skill published in the GitHub repository moonlight-lupin/agent-skills (60 stars, last pushed 3d ago), licensed MIT. It adds 69 tokens to every session and 2,914 once invoked, about $0.0003 per session on Opus 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-30.
Other skills, from other repositories
sks-investigate
Use when investigating a bug, test failure, build break, or unexpected behavior in a shikanime repo — find root cause, form a hypothesis, and propose a solution, never apply the fix itself.
sks-adversarial
Use when probing uncertain results in a disposable sandbox — large investigation, development, debugging, testing, UAT, white-room, or data validation before promoting a change.
systematic-debugging
4-phase root cause debugging: understand bugs before fixing.
browser-edge-cases
SOP for debugging browser automation failures on complex websites. Use when browser tools fail on specific sites like LinkedIn, Twitter/X, SPAs, or sites with Shadow DOM.
ios-simulator
Verify and debug native, React Native, Expo, or Flutter apps on an iOS Simulator with agent-device. Use when an agent needs to launch an app, inspect its live UI, tap, type, scroll, validate a code change, collect failure evidence, or reproduce a workflow on an iPhone or iPad Simulator.
debugging-executions
Debug failed or wrong-output workflow executions using executions tools. Load when the user reports execution failures, unexpected node output, empty parameter values after a successful run, or a node showing a red or failed expression error.