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 agentmods add skills/anentrypoint/freddie/log-triagenpx skills add AnEntrypoint/freddie --skill log-triagegit clone --depth 1 https://github.com/AnEntrypoint/freddieWrote 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/anentrypoint/freddie/log-triage)<a href="https://agentmods.dev/skills/anentrypoint/freddie/log-triage"><img src="https://agentmods.dev/badge/skills/anentrypoint/freddie/log-triage.svg" alt="Measured on agentmods" 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 | $0.00021 | $0.00659 |
| Opus 5 | $0.00010 | $0.00329 |
| Sonnet 5 | $0.00004 | $0.00132 |
| Haiku 4.5 | $0.00002 | $0.00066 |
Grade A, and why
log-triage 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 — 80 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Log Triage
Given logs, structured JSONL, or excerpts — identify errors, anomalies, and root causes quickly.
What you do
- Parse — identify format (plain text, JSON, syslog, nginx, k8s).
- Classify — group by level (ERROR/WARN/INFO) and origin (service, host, pod).
- Correlate — link errors by request ID, trace ID, or timestamp.
- Identify root cause — find the first error in the causal chain.
- Summarise — triage report with counts, timeline, top errors.
Triage process
Step 1 — Extract errors
# JSON logs
jq 'select(.level == "error" or .level == "fatal")' app.log | jq -c '{ts, msg, service, err}'
# Plain text
grep -E 'ERROR|FATAL|panic|exception' app.log | sort | uniq -c | sort -rn | head -20
Step 2 — Find the first error (usually root cause)
grep -m1 -E 'ERROR|FATAL' app.log
Step 3 — Correlate by request/trace ID
grep '"trace_id":"abc123"' *.log | sort -k1
Step 4 — Count error frequency
jq -r 'select(.level=="error") | .msg' app.log | sort | uniq -c | sort -rn
Common patterns
| Error pattern | Likely cause |
|---|---|
connection refused on DB port |
DB down or pool exhausted |
timeout on upstream |
Upstream slow or dead; check circuit breaker |
OOM killed in k8s |
Memory limit too low or memory leak |
too many open files |
File descriptor limit; check ulimit -n |
certificate has expired |
TLS cert needs renewal |
ECONNRESET in Node.js |
Client disconnected; benign unless spike |
deadlock detected in Postgres |
Competing transactions; check slow query log |
Triage report format
LOG TRIAGE REPORT — <date>
Source: <file or service>
Time range: <start> → <end>
SUMMARY
Total lines: N | ERROR: N | WARN: N | INFO: N
TOP ERRORS
1. [N×] "message" — first seen <ts>
2. [N×] "message" — first seen <ts>
ROOT CAUSE HYPOTHESIS
First error at <ts>: "<message>"
Caused by: <analysis>
Likely trigger: <deploy/traffic/dependency>
RECOMMENDED ACTIONS
1. ...
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 · 80 lines · 21 tokens per session scan A 243b19751898
log-triage is a skill published in the GitHub repository AnEntrypoint/freddie (0 stars, last pushed yesterday), licensed MIT. It adds 21 tokens to every session and 659 once invoked, about $0.0001 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-31.
Other skills, from other repositories
eng-runbook
服务概述 + alerts 表 + dashboards + 操作命令 + on-call + 事故清单.
database-and-schema
Database setup, Drizzle ORM schemas, migrations, and the Ops business logic layer.
lastlight-debug
Debug a running Last Light instance over its admin API with the lastlight CLI — no SSH. Use when the user wants to "look at / debug a failed or stuck workflow", "why didn't the bot do X", "check a bad agent run / phase error on ", "tail a session", "search the logs", "read the server/docker logs", "list/trigger a…
debug-production
Debug a running Last Light instance (usually production) via the lastlight CLI instead of SSH. Use when investigating a failed/stuck workflow, a bad agent run, a phase error, or "why didn't the bot do X" — anything that previously meant SSHing in to read SQLite or session logs.
dpf-worktree-per-session
Use when starting, entering, auditing, or managing a concurrent DPF coding session that touches the working tree.
dpf-file-backlog-item
Use when new DPF work needs to enter the backlog — a feature gap, bug, tool, skill or doc gap, automated detection, or user request.