{"id":"eb938f48-d853-4a6f-9783-191f2d83f002","shortId":"ayPJNU","kind":"skill","title":"pilot-event-log","tagline":"Persistent NDJSON event logging with rotation, compression, and retention policies.  Use this skill when: 1. You need persistent storage of event streams 2. You need log rotation and compression for long-term retention 3. You need to audit event history with timestamps 4. You nee","description":"# Pilot Event Log\n\nPersistent NDJSON logging of Pilot Protocol event streams with rotation and compression.\n\n## Commands\n\n### Subscribe and Log\n```bash\npilotctl --json subscribe <source> <topic> --timeout <seconds> | jq -c '.data.events[]' >> <log-file.ndjson>\n```\n\n### Query by Time\n```bash\njq -c --arg start \"2026-04-08T00:00:00Z\" --arg end \"2026-04-08T23:59:59Z\" \\\n  'select(.timestamp >= $start and .timestamp <= $end)' events.ndjson\n```\n\n### Query by Topic\n```bash\njq -c 'select(.topic | startswith(\"alerts.\"))' events.ndjson\n```\n\n### Rotate Logs\n```bash\n[ \"$(du -m \"$log_file\" | cut -f1)\" -ge \"$MAX_SIZE_MB\" ] && mv \"$log_file\" \"$log_file.$(date +%s)\" && gzip \"$log_file.$(date +%s)\" &\n```\n\n### Compress Old Logs\n```bash\nfind /var/log/pilot-events -name \"events-*.ndjson\" -mtime +1 -exec gzip {} \\;\n```\n\n### Retention Cleanup\n```bash\nfind /var/log/pilot-events -name \"events-*.ndjson.gz\" -mtime +90 -delete\n```\n\n## Workflow Example\n\n```bash\n#!/bin/bash\n# Production event logging\n\nSOURCE=\"${1:-production-app}\"\nLOG_DIR=\"/var/log/pilot-events/$SOURCE\"\nMAX_SIZE_MB=500\n\nmkdir -p \"$LOG_DIR\"\nlog_file=\"$LOG_DIR/current.ndjson\"\n\nwhile true; do\n  pilotctl --json subscribe \"$SOURCE\" \"*\" --timeout 600 | jq -c '.data.events[]? // empty' | \\\n  while IFS= read -r event; do\n    echo \"$event\" | jq -c '. + {logged_at: (now | todate)}' >> \"$log_file\"\n\n    size_mb=$(du -m \"$log_file\" 2>/dev/null | cut -f1)\n    if [ \"${size_mb:-0}\" -ge \"$MAX_SIZE_MB\" ]; then\n      rotated=\"$LOG_DIR/events-$(date +%Y%m%d-%H%M%S).ndjson\"\n      mv \"$log_file\" \"$rotated\" && gzip \"$rotated\" &\n    fi\n  done\n  sleep 5\ndone\n```\n\n## Dependencies\n\nRequires pilot-protocol skill, jq (1.6+), gzip, and running daemon.","tags":["pilot","event","log","skills","teoslayer","agent-skills","ai-agents","clawhub","networking","openclaw","overlay-network","p2p"],"capabilities":["skill","source-teoslayer","skill-pilot-event-log","topic-agent-skills","topic-ai-agents","topic-clawhub","topic-networking","topic-openclaw","topic-overlay-network","topic-p2p","topic-pilot-protocol"],"categories":["pilot-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/TeoSlayer/pilot-skills/pilot-event-log","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add TeoSlayer/pilot-skills","source_repo":"https://github.com/TeoSlayer/pilot-skills","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 6 github stars · SKILL.md body (1,687 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:14:55.416Z","embedding":null,"createdAt":"2026-05-18T13:22:39.970Z","updatedAt":"2026-05-18T19:14:55.416Z","lastSeenAt":"2026-05-18T19:14:55.416Z","tsv":"'+1':153 '+90':165 '-0':237 '-04':87,95 '-08':88,96 '/bin/bash':170 '/dev/null':231 '/var/log/pilot-events':148,160,181 '00':90 '00z':91 '1':19,175 '1.6':272 '2':27,230 '2026':86,94 '3':39 '4':48 '5':263 '500':186 '59':98 '59z':99 '600':203 'alert':116 'app':178 'arg':84,92 'audit':43 'bash':70,81,110,120,146,158,169 'c':76,83,112,205,217 'cleanup':157 'command':66 'compress':11,33,65,143 'cut':125,232 'd':249 'daemon':276 'data.events':77,206 'date':136,141,246 'delet':166 'depend':265 'dir':180,190 'dir/current.ndjson':194 'dir/events-':245 'done':261,264 'du':121,226 'echo':214 'empti':207 'end':93,105 'event':3,7,25,44,52,60,150,162,172,212,215 'events.ndjson':106,117 'exampl':168 'exec':154 'f1':126,233 'fi':260 'file':124,133,135,140,192,223,229,256 'find':147,159 'ge':127,238 'gzip':138,155,258,273 'h':250 'histori':45 'if':209 'jq':75,82,111,204,216,271 'json':72,199 'log':4,8,30,53,56,69,119,123,132,134,139,145,173,179,189,191,193,218,222,228,244,255 'long':36 'long-term':35 'm':122,227,248,251 'max':128,183,239 'mb':130,185,225,236,241 'mkdir':187 'mtime':152,164 'mv':131,254 'name':149,161 'ndjson':6,55,151,253 'ndjson.gz':163 'nee':50 'need':21,29,41 'old':144 'p':188 'persist':5,22,54 'pilot':2,51,58,268 'pilot-event-log':1 'pilot-protocol':267 'pilotctl':71,198 'polici':14 'product':171,177 'production-app':176 'protocol':59,269 'queri':78,107 'r':211 'read':210 'requir':266 'retent':13,38,156 'rotat':10,31,63,118,243,257,259 'run':275 'select':100,113 'size':129,184,224,235,240 'skill':17,270 'skill-pilot-event-log' 'sleep':262 'sourc':174,182,201 'source-teoslayer' 'start':85,102 'startswith':115 'storag':23 'stream':26,61 'subscrib':67,73,200 't00':89 't23':97 'term':37 'time':80 'timeout':74,202 'timestamp':47,101,104 'todat':221 'topic':109,114 'topic-agent-skills' 'topic-ai-agents' 'topic-clawhub' 'topic-networking' 'topic-openclaw' 'topic-overlay-network' 'topic-p2p' 'topic-pilot-protocol' 'true':196 'use':15 'workflow':167 'y':247","prices":[{"id":"cc3c2823-e08d-48a1-b945-bcbbbaf83784","listingId":"eb938f48-d853-4a6f-9783-191f2d83f002","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"TeoSlayer","category":"pilot-skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:22:39.970Z"}],"sources":[{"listingId":"eb938f48-d853-4a6f-9783-191f2d83f002","source":"github","sourceId":"TeoSlayer/pilot-skills/pilot-event-log","sourceUrl":"https://github.com/TeoSlayer/pilot-skills/tree/main/skills/pilot-event-log","isPrimary":false,"firstSeenAt":"2026-05-18T13:22:39.970Z","lastSeenAt":"2026-05-18T19:14:55.416Z"}],"details":{"listingId":"eb938f48-d853-4a6f-9783-191f2d83f002","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"TeoSlayer","slug":"pilot-event-log","github":{"repo":"TeoSlayer/pilot-skills","stars":6,"topics":["agent-skills","ai-agents","clawhub","networking","openclaw","overlay-network","p2p","pilot-protocol"],"license":"agpl-3.0","html_url":"https://github.com/TeoSlayer/pilot-skills","pushed_at":"2026-05-13T06:08:49Z","description":"80+ agent skills for Pilot Protocol — communication, file transfer, trust, task routing, swarm coordination, and more","skill_md_sha":"57ef48a42a3e433e43bfb04c137dd83fe80f6bf7","skill_md_path":"skills/pilot-event-log/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/TeoSlayer/pilot-skills/tree/main/skills/pilot-event-log"},"layout":"multi","source":"github","category":"pilot-skills","frontmatter":{"name":"pilot-event-log","license":"AGPL-3.0","description":"Persistent NDJSON event logging with rotation, compression, and retention policies.  Use this skill when: 1. You need persistent storage of event streams 2. You need log rotation and compression for long-term retention 3. You need to audit event history with timestamps 4. You need to export events for external analysis  Do NOT use this skill when: - You need real-time event processing (use pilot-event-bus instead) - You need short-term replay (use pilot-event-replay instead) - You need filtered logs (use pilot-event-filter first, then log)","compatibility":"Requires pilot-protocol skill and pilotctl binary on PATH. The daemon must be running (pilotctl daemon start). Requires jq for JSON processing."},"skills_sh_url":"https://skills.sh/TeoSlayer/pilot-skills/pilot-event-log"},"updatedAt":"2026-05-18T19:14:55.416Z"}}