{ "schema_version": 2, "kind": "shortening-method", "format": "agent-skill", "id": "log-digest", "name": "Log digest", "category": "Technical", "summary": "Group repeated log events into a compact timeline with honest counts.", "use_cases": [ "Operational log summaries", "Batch-job diagnostics" ], "word_count": 158, "url": "https://sho.rten.it/methods/log-digest/", "instructions_url": "https://sho.rten.it/methods/log-digest/SKILL.md", "skill_url": "https://sho.rten.it/methods/log-digest/SKILL.md", "json_url": "https://sho.rten.it/methods/log-digest/llms.txt", "plain_text_url": "https://sho.rten.it/methods/log-digest/prompt.txt", "license": "MIT", "sources_url": "https://sho.rten.it/sources/#log-digest", "skill_name": "log-digest", "skill_description": "Group repeated log events into a compact timeline with honest counts. Use for Operational log summaries, Batch-job diagnostics.", "agents_md_url": "https://sho.rten.it/methods/log-digest/AGENTS.md", "sources": [], "instructions": "Condense supplied logs into a digest of distinct events and their sequence. Use this for many timestamped records; use an exception-chain method when one stack trace is the main evidence.\n\nGroup exact or meaningfully equivalent repeats by component, event, and correlation identifier. Keep first and last occurrence, count, severity, and changing values when the input supports them. Preserve transitions such as retry, recovery, and a new failure mode. Retain representative messages and identifiers exactly where they are needed to locate the event.\n\nRemove routine success noise unless it establishes a boundary or recovery. Do not treat a sampled excerpt as the complete system history. Distinguish an explicit event count from a count inferred only from the supplied lines. Preserve timezones and ordering ambiguity.\n\nOutput a short timeline or grouped event list, followed by unresolved observations if supplied. Do not infer root cause from proximity, merge different request IDs, fabricate missing timestamps, or claim recovery without a success signal.", "example": { "context": "Worker retry log excerpt", "before": "This is the complete six-line excerpt supplied for request r17; it may not be the complete request history.\n10:00:00Z INFO worker request=r17 started\n10:00:01Z WARN worker request=r17 upstream timeout attempt=1\n10:00:03Z WARN worker request=r17 upstream timeout attempt=2\n10:00:05Z WARN worker request=r17 upstream timeout attempt=3\n10:00:06Z ERROR worker request=r17 retries exhausted\n10:00:07Z INFO worker request=r17 moved to dead-letter queue", "after": "r17 — supplied excerpt only; full history may be incomplete.\n10:00:00Z: worker started.\n10:00:01Z–10:00:05Z: 3 WARN upstream timeout events, attempts 1–3.\n10:00:06Z: ERROR retries exhausted.\n10:00:07Z: moved to dead-letter queue. No recovery shown.", "must_preserve": [ "request r17 and worker component", "Supplied excerpt may not be full history", "Started 10:00:00Z", "Three WARN timeouts 10:00:01Z to 10:00:05Z; attempts 1 through 3", "ERROR retries exhausted 10:00:06Z", "Dead-letter queue 10:00:07Z; no recovery event" ], "omitted": [ "Intermediate timeout timestamp 10:00:03Z grouped into the event range" ], "kind": "illustrative" } }