{"id":"a52af045-1d6e-44fd-9aa1-a144e12b3bcd","shortId":"gmqyvd","kind":"skill","title":"Error Log Summarizer","tagline":"Parses raw error logs and produces a concise, prioritized summary of unique issues with root cause hints.","description":"# Error Log Summarizer\n\n## What this skill does\n\nThis skill directs the agent to ingest raw error logs — from a server, application, CI pipeline, or any other source — and produce a structured, de-duplicated summary. It groups repeated errors, counts occurrences, identifies the most frequent and most severe issues, and provides a root cause hint for each unique error type. The output gives you a clear picture of what's actually wrong without needing to scroll through thousands of log lines.\n\nUse this when you have a dump of logs from a production incident, a CI failure, an error monitoring alert, or a server that's behaving oddly.\n\n## How to use\n\n### Claude Code / Cline\n\nCopy this file to `.agents/skills/error-log-summarizer/SKILL.md` in your project root.\n\nThen ask:\n- *\"Use the Error Log Summarizer skill on these logs.\"*\n- *\"Summarize this error output from our production server using the Error Log Summarizer skill.\"*\n\nPaste the raw logs directly into the message, or provide a file path if the logs are in the repo.\n\n### Cursor\n\nAdd the instructions below to your `.cursorrules` or paste them into the Cursor AI pane, then paste your raw logs.\n\n### Codex\n\nPaste the logs directly in your message and ask Codex to follow the instructions below.\n\n## The Prompt / Instructions for the Agent\n\nWhen asked to summarize error logs, follow these steps:\n\n### Step 1 — Parse and classify each log entry\n\nRead through the entire log. For each line or entry, extract:\n- **Timestamp** (if present)\n- **Severity level**: ERROR, WARN, FATAL, CRITICAL, or inferred from context\n- **Error message**: the actual error text, not the full stack trace\n- **Source**: the file, service, or module where the error originated\n- **Stack trace identifier**: if a stack trace is present, note the top application-code frame (not framework internals)\n\n### Step 2 — De-duplicate and group\n\nGroup log entries that represent the same underlying error. Two entries are the same error if:\n- The error message is identical or differs only in dynamic values (IDs, timestamps, paths)\n- They originate from the same source location\n\nFor variable parts of error messages (e.g., user IDs, file names), replace them with a placeholder like `[USER_ID]` or `[FILE_PATH]` to produce a canonical error signature.\n\nCount occurrences of each unique error.\n\n### Step 3 — Prioritize\n\nRank the unique errors by a combination of:\n- **Frequency** — how many times does it appear?\n- **Severity** — FATAL/CRITICAL > ERROR > WARN\n- **Recency** — errors appearing toward the end of the log window are more likely to be the active issue\n\n### Step 4 — Generate root cause hints\n\nFor each unique error, analyze the message, source, and any available stack trace to produce a 1–2 sentence root cause hypothesis. This is a hint to guide investigation, not a definitive diagnosis.\n\n### Step 5 — Format the output\n\n```markdown\n## Error Log Summary\n\n**Log window**: [Start timestamp] → [End timestamp] (or \"timestamps not present\")\n**Total log lines analyzed**: N\n**Unique error signatures**: N\n**Total error occurrences**: N\n\n---\n\n### Top Issues (by priority)\n\n#### 1. [Error signature]\n- **Severity**: ERROR / FATAL / WARN\n- **Occurrences**: N times\n- **First seen**: [timestamp or \"unknown\"]\n- **Last seen**: [timestamp or \"unknown\"]\n- **Source**: `file.ts:line` or service name\n- **Sample message**: `[Exact or representative log line]`\n- **Root cause hint**: [1–2 sentences on likely cause]\n- **Suggested next step**: [Where to look first — a specific file, a query to run, a config to check]\n\n#### 2. ...\n\n---\n\n### Warnings (non-critical but worth noting)\n\n| # | Signature | Occurrences | Source | Note |\n|---|-----------|-------------|--------|------|\n| 1 | `Deprecated API used: /v1/users` | 43 | `api/userController.ts` | Will break on next major version |\n\n---\n\n### Noise / Expected Errors\n[List any errors that appear expected or benign, e.g., health check 404s, with a brief explanation of why they can be ignored]\n```\n\n### Step 6 — Call out patterns\n\nAfter the per-error breakdown, note any cross-cutting patterns:\n- Did errors spike at a specific time? (Possible deploy or traffic spike)\n- Are all errors coming from a single service or file? (Localized failure)\n- Are there cascading errors where one root failure causes secondary errors? (Identify the origin)\n\n## Example\n\n**Input to Agent:**\n> \"Use the Error Log Summarizer skill on these logs:\n> ```\n> 2024-01-15 14:02:11 ERROR [OrderService] Cannot read property 'price' of undefined at processOrder (order.service.ts:87)\n> 2024-01-15 14:02:12 ERROR [OrderService] Cannot read property 'price' of undefined at processOrder (order.service.ts:87)\n> 2024-01-15 14:02:15 WARN  [AuthService] JWT expiry within 5 minutes for user 4821\n> 2024-01-15 14:02:18 ERROR [OrderService] Cannot read property 'price' of undefined at processOrder (order.service.ts:87)\n> 2024-01-15 14:02:20 ERROR [PaymentService] Stripe API timeout after 30s (requestId: req_abc123)\n> 2024-01-15 14:02:21 ERROR [PaymentService] Stripe API timeout after 30s (requestId: req_def456)\n> 2024-01-15 14:02:25 FATAL [OrderService] Unhandled promise rejection: Cannot read property 'price' of undefined\n> ```\"\n\n**Output from Agent:**\n\n> ## Error Log Summary\n>\n> **Log window**: 2024-01-15 14:02:11 → 14:02:25\n> **Total log lines analyzed**: 7\n> **Unique error signatures**: 3\n> **Total error occurrences**: 6 (+ 1 warning)\n>\n> ### Top Issues\n>\n> #### 1. `Cannot read property 'price' of undefined` — OrderService\n> - **Severity**: FATAL (escalated from ERROR)\n> - **Occurrences**: 4 times\n> - **Source**: `order.service.ts:87`\n> - **Root cause hint**: A product object is `undefined` at the point where `price` is accessed — likely a missing null-check after a database lookup or an item that was deleted from the catalog while still in an active cart.\n> - **Suggested next step**: Inspect `order.service.ts:87` and the function that populates the product before line 87. Add a null guard.\n>\n> #### 2. `Stripe API timeout after 30s` — PaymentService\n> - **Severity**: ERROR\n> - **Occurrences**: 2 times\n> - **Root cause hint**: Stripe API is not responding within the 30-second timeout — could be a Stripe outage, network issue, or an unusually large payload.\n> - **Suggested next step**: Check https://status.stripe.com for incidents. Review the Stripe request payload size and consider reducing the timeout threshold with a retry strategy.\n\n## Notes\n\n- The larger the log file, the more valuable de-duplication is — 1,000 lines of logs often contain only 5–10 unique error types.\n- If logs are structured JSON (e.g., from Winston or Pino), mention that when invoking the skill so the agent can parse the `message` and `level` fields correctly.\n- This skill summarizes; it does not fix. For root cause diagnosis, use the Bug Root Cause Analyzer skill on the top issue.","tags":["error","log","summarizer","openagentskills","notysoty","agent-skills","claude","claude-code","claude-skills","cline","cursor","llm"],"capabilities":["skill","source-notysoty","skill-error-log-summarizer","topic-agent-skills","topic-claude","topic-claude-code","topic-claude-skills","topic-cline","topic-cursor","topic-llm","topic-llm-skills","topic-skills"],"categories":["openagentskills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/Notysoty/openagentskills/error-log-summarizer","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add Notysoty/openagentskills","source_repo":"https://github.com/Notysoty/openagentskills","install_from":"skills.sh"}},"qualityScore":"0.454","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 8 github stars · SKILL.md body (6,849 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:13:21.590Z","embedding":null,"createdAt":"2026-05-18T13:20:42.396Z","updatedAt":"2026-05-18T19:13:21.590Z","lastSeenAt":"2026-05-18T19:13:21.590Z","tsv":"'-01':685,702,719,735,752,768,784,809 '-15':686,703,720,736,753,769,785,810 '/v1/users':582 '000':985 '02':688,705,722,738,755,771,787,812,815 '1':242,453,506,542,578,830,834,984 '10':993 '11':689,813 '12':706 '14':687,704,721,737,754,770,786,811,814 '15':723 '18':739 '2':314,454,543,566,911,921 '20':756 '2024':684,701,718,734,751,767,783,808 '21':772 '25':788,816 '3':392,825 '30':933 '30s':763,779,916 '4':432,848 '404s':605 '43':583 '4821':733 '5':471,729,992 '6':617,829 '7':821 '87':906 'abc123':766 'access':866 'activ':429,890 'actual':91,276 'add':190,907 'agent':32,231,674,802,1015 'agents/skills/error-log-summarizer/skill.md':139 'ai':203 'alert':121 'analyz':441,492,820,1040 'api':580,760,776,913,927 'api/usercontroller.ts':584 'appear':408,415,598 'applic':41,307 'application-cod':306 'ask':145,219,233 'authservic':725 'avail':447 'behav':127 'benign':601 'break':586 'breakdown':626 'brief':608 'bug':1037 'call':618 'cannot':692,709,742,794,835 'canon':382 'cart':891 'cascad':659 'catalog':885 'caus':19,74,435,457,540,547,665,853,924,1033,1039 'check':565,604,872,951 'ci':42,116 'classifi':245 'claud':132 'clear':86 'cline':134 'code':133,308 'codex':210,220 'combin':400 'come':648 'concis':11 'config':563 'consid':962 'contain':990 'context':272 'copi':135 'correct':1023 'could':936 'count':60,385 'critic':268,570 'cross':630 'cross-cut':629 'cursor':189,202 'cursorrul':196 'cut':631 'databas':875 'de':53,316,981 'de-dupl':52,315,980 'def456':782 'definit':468 'delet':882 'deploy':641 'deprec':579 'diagnosi':469,1034 'differ':342 'direct':30,173,214 'dump':108 'duplic':54,317,982 'dynam':345 'e.g':363,602,1002 'end':418,483 'entir':252 'entri':248,258,322,330 'error':1,6,21,36,59,79,119,148,157,165,236,265,273,277,292,328,334,337,361,383,390,397,411,414,440,476,495,499,507,510,593,596,625,634,647,660,667,677,690,707,740,757,773,803,823,827,846,919,995 'escal':844 'exact':534 'exampl':671 'expect':592,599 'expiri':727 'explan':609 'extract':259 'failur':117,656,664 'fatal':267,511,789,843 'fatal/critical':410 'field':1022 'file':137,180,286,366,377,557,654,976 'file.ts':527 'first':516,554 'fix':1030 'follow':222,238 'format':472 'frame':309 'framework':311 'frequenc':402 'frequent':65 'full':281 'function':899 'generat':433 'give':83 'group':57,319,320 'guard':910 'guid':464 'health':603 'hint':20,75,436,462,541,854,925 'hypothesi':458 'id':347,365,375 'ident':340 'identifi':62,296,668 'ignor':615 'incid':114,954 'infer':270 'ingest':34 'input':672 'inspect':895 'instruct':192,224,228 'intern':312 'investig':465 'invok':1010 'issu':16,69,430,503,833,942,1045 'item':879 'json':1001 'jwt':726 'larg':946 'larger':973 'last':521 'level':264,1021 'like':373,425,546,867 'line':101,256,491,528,538,819,905,986 'list':594 'local':655 'locat':356 'log':2,7,22,37,100,110,149,154,166,172,184,209,213,237,247,253,321,421,477,479,490,537,678,683,804,806,818,975,988,998 'look':553 'lookup':876 'major':589 'mani':404 'markdown':475 'mention':1007 'messag':176,217,274,338,362,443,533,1019 'minut':730 'miss':869 'modul':289 'monitor':120 'n':493,497,501,514 'name':367,531 'need':94 'network':941 'next':549,588,893,949 'nois':591 'non':569 'non-crit':568 'note':303,573,577,627,971 'null':871,909 'null-check':870 'object':857 'occurr':61,386,500,513,575,828,847,920 'odd':128 'often':989 'one':662 'order.service.ts:87':700,717,750,851,896 'orderservic':691,708,741,790,841 'origin':293,351,670 'outag':940 'output':82,158,474,800 'pane':204 'pars':4,243,1017 'part':359 'past':169,198,206,211 'path':181,349,378 'pattern':620,632 'payload':947,959 'paymentservic':758,774,917 'per':624 'per-error':623 'pictur':87 'pino':1006 'pipelin':43 'placehold':372 'point':862 'popul':901 'possibl':640 'present':262,302,488 'price':695,712,745,797,838,864 'priorit':12,393 'prioriti':505 'processord':699,716,749 'produc':9,49,380,451 'product':113,161,856,903 'project':142 'promis':792 'prompt':227 'properti':694,711,744,796,837 'provid':71,178 'queri':559 'rank':394 'raw':5,35,171,208 'read':249,693,710,743,795,836 'recenc':413 'reduc':963 'reject':793 'repeat':58 'replac':368 'repo':188 'repres':324,536 'req':765,781 'request':958 'requestid':764,780 'respond':930 'retri':969 'review':955 'root':18,73,143,434,456,539,663,852,923,1032,1038 'run':561 'sampl':532 'scroll':96 'second':934 'secondari':666 'seen':517,522 'sentenc':455,544 'server':40,124,162 'servic':287,530,652 'sever':68,263,409,509,842,918 'signatur':384,496,508,574,824 'singl':651 'size':960 'skill':26,29,151,168,680,1012,1025,1041 'skill-error-log-summarizer' 'sourc':47,284,355,444,526,576,850 'source-notysoty' 'specif':556,638 'spike':635,644 'stack':282,294,299,448 'start':481 'status.stripe.com':952 'step':240,241,313,391,431,470,550,616,894,950 'still':887 'strategi':970 'stripe':759,775,912,926,939,957 'structur':51,1000 'suggest':548,892,948 'summar':3,23,150,155,167,235,679,1026 'summari':13,55,478,805 'text':278 'thousand':98 'threshold':966 'time':405,515,639,849,922 'timeout':761,777,914,935,965 'timestamp':260,348,482,484,486,518,523 'top':305,502,832,1044 'topic-agent-skills' 'topic-claude' 'topic-claude-code' 'topic-claude-skills' 'topic-cline' 'topic-cursor' 'topic-llm' 'topic-llm-skills' 'topic-skills' 'total':489,498,817,826 'toward':416 'trace':283,295,300,449 'traffic':643 'two':329 'type':80,996 'undefin':697,714,747,799,840,859 'under':327 'unhandl':791 'uniqu':15,78,389,396,439,494,822,994 'unknown':520,525 'unusu':945 'use':102,131,146,163,581,675,1035 'user':364,374,732 'valu':346 'valuabl':979 'variabl':358 'version':590 'warn':266,412,512,567,724,831 'window':422,480,807 'winston':1004 'within':728,931 'without':93 'worth':572 'wrong':92","prices":[{"id":"cb3e4dce-83f1-4710-8472-654f9d4a53f6","listingId":"a52af045-1d6e-44fd-9aa1-a144e12b3bcd","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"Notysoty","category":"openagentskills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:20:42.396Z"}],"sources":[{"listingId":"a52af045-1d6e-44fd-9aa1-a144e12b3bcd","source":"github","sourceId":"Notysoty/openagentskills/error-log-summarizer","sourceUrl":"https://github.com/Notysoty/openagentskills/tree/main/skills/error-log-summarizer","isPrimary":false,"firstSeenAt":"2026-05-18T13:20:42.396Z","lastSeenAt":"2026-05-18T19:13:21.590Z"}],"details":{"listingId":"a52af045-1d6e-44fd-9aa1-a144e12b3bcd","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"Notysoty","slug":"error-log-summarizer","github":{"repo":"Notysoty/openagentskills","stars":8,"topics":["agent-skills","claude","claude-code","claude-skills","cline","cursor","llm","llm-skills","skills"],"license":"mit","html_url":"https://github.com/Notysoty/openagentskills","pushed_at":"2026-03-28T06:50:19Z","description":"A  community-driven library of reusable AI agent skills for Claude Code, Cursor, Codex, Cline, and more.","skill_md_sha":"bf29c5b9883b490720a87a0c401d238da438a2e9","skill_md_path":"skills/error-log-summarizer/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/Notysoty/openagentskills/tree/main/skills/error-log-summarizer"},"layout":"multi","source":"github","category":"openagentskills","frontmatter":{"name":"Error Log Summarizer","description":"Parses raw error logs and produces a concise, prioritized summary of unique issues with root cause hints."},"skills_sh_url":"https://skills.sh/Notysoty/openagentskills/error-log-summarizer"},"updatedAt":"2026-05-18T19:13:21.590Z"}}