{"id":"3fd5bdff-ed25-4347-8fb0-ef6d4c82457f","shortId":"mvSnXq","kind":"skill","title":"pilot-blocklist","tagline":"Maintain and share blocklists of untrusted agents in Pilot Protocol networks.  Use this skill when: 1. You need to block malicious or compromised agents from connecting 2. You want to share blocklists across multiple agents in your network 3. You need to maintain a persistent den","description":"# Pilot Blocklist\n\nManage blocklists of untrusted agents with support for sharing and synchronization across networks.\n\n## Commands\n\n**Create blocklist:**\n```bash\nmkdir -p ~/.pilot/blocklists\ncat > ~/.pilot/blocklists/default.json <<EOF\n{\"name\":\"default\",\"description\":\"Primary blocklist\",\"entries\":[]}\nEOF\n```\n\n**Add agent to blocklist:**\n```bash\nAGENT=\"malicious.pilot\"\nNODE_ID=$(pilotctl --json find \"$AGENT\" | jq -r '.[0].node_id')\n\n# Untrust and reject\npilotctl --json untrust \"$NODE_ID\"\npilotctl --json reject \"$NODE_ID\" \"Spam activity\"\n\n# Add to blocklist\njq --arg agent \"$AGENT\" --arg node \"$NODE_ID\" --arg reason \"Spam activity\" \\\n  '.entries += [{hostname: $agent, node_id: $node, reason: $reason, blocked_at: (now | strftime(\"%Y-%m-%dT%H:%M:%SZ\"))}]' \\\n  ~/.pilot/blocklists/default.json > /tmp/blocklist.json && mv /tmp/blocklist.json ~/.pilot/blocklists/default.json\n```\n\n**Remove from blocklist:**\n```bash\njq --arg agent \"$AGENT\" '.entries = [.entries[] | select(.hostname != $agent)]' \\\n  ~/.pilot/blocklists/default.json > /tmp/blocklist.json && mv /tmp/blocklist.json ~/.pilot/blocklists/default.json\n```\n\n**List blocked agents:**\n```bash\njq -r '.entries[] | \"\\(.hostname) - \\(.reason)\"' ~/.pilot/blocklists/default.json\n```\n\n**Enforce blocklist:**\n```bash\nBLOCKED=$(jq -r '.entries[].hostname' ~/.pilot/blocklists/default.json)\n\n# Reject pending handshakes from blocked agents\npilotctl --json pending | jq -r '.[] | .hostname' | while read -r HOSTNAME; do\n  if echo \"$BLOCKED\" | grep -q \"^${HOSTNAME}$\"; then\n    NODE_ID=$(pilotctl --json pending | jq -r --arg h \"$HOSTNAME\" '.[] | select(.hostname == $h) | .node_id')\n    pilotctl --json reject \"$NODE_ID\" \"Blocklisted\"\n  fi\ndone\n```\n\n## Workflow Example\n\n```bash\n#!/bin/bash\n# Automatic blocklist enforcement\n\nBLOCKLIST=~/.pilot/blocklists/default.json\n\nblock_agent() {\n  local AGENT=$1\n  local REASON=$2\n\n  NODE_ID=$(pilotctl --json find \"$AGENT\" | jq -r '.[0].node_id')\n  pilotctl --json untrust \"$NODE_ID\" 2>/dev/null || true\n\n  jq --arg agent \"$AGENT\" --arg node \"$NODE_ID\" --arg reason \"$REASON\" \\\n    '.entries += [{hostname: $agent, node_id: $node, reason: $reason, blocked_at: (now | strftime(\"%Y-%m-%dT%H:%M:%SZ\"))}] | .entries |= unique_by(.hostname)' \\\n    \"$BLOCKLIST\" > /tmp/blocklist.json && mv /tmp/blocklist.json \"$BLOCKLIST\"\n}\n\n# Block agents with polo score < 5\npilotctl --json peers | jq -r '.[] | select(.polo_score < 5) | .hostname' | \\\nwhile read -r AGENT; do\n  block_agent \"$AGENT\" \"Low polo score\"\ndone\n\necho \"Blocklist enforcement complete\"\n```\n\n## Dependencies\n\nRequires `pilot-protocol` skill, `pilotctl` binary, running daemon, and `jq` for JSON management.","tags":["pilot","blocklist","skills","teoslayer","agent-skills","ai-agents","clawhub","networking","openclaw","overlay-network","p2p","pilot-protocol"],"capabilities":["skill","source-teoslayer","skill-pilot-blocklist","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-blocklist","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 (2,655 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:51.899Z","embedding":null,"createdAt":"2026-05-18T13:22:35.044Z","updatedAt":"2026-05-18T19:14:51.899Z","lastSeenAt":"2026-05-18T19:14:51.899Z","tsv":"'/.pilot/blocklists':71 '/.pilot/blocklists/default.json':73,148,152,166,170,180,189,245 '/bin/bash':240 '/dev/null':271 '/tmp/blocklist.json':149,151,167,169,307,309 '0':97,262 '1':19,250 '2':30,253,270 '3':42 '5':316,325 'across':36,63 'activ':114,129 'add':82,115 'agent':10,27,38,56,83,87,94,120,121,132,159,160,165,173,195,247,249,259,275,276,286,312,330,333,334 'arg':119,122,126,158,221,274,277,281 'automat':241 'bash':68,86,156,174,183,239 'binari':350 'block':23,138,172,184,194,209,246,292,311,332 'blocklist':3,7,35,51,53,67,79,85,117,155,182,234,242,244,306,310,340 'cat':72 'command':65 'complet':342 'compromis':26 'connect':29 'creat':66 'daemon':352 'default':76 'den':49 'depend':343 'descript':77 'done':236,338 'dt':144,298 'echo':208,339 'enforc':181,243,341 'entri':80,130,161,162,177,187,284,302 'eof':74,81 'exampl':238 'fi':235 'find':93,258 'grep':210 'h':145,222,226,299 'handshak':192 'hostnam':131,164,178,188,201,205,212,223,225,285,305,326 'id':90,99,107,112,125,134,215,228,233,255,264,269,280,288 'jq':95,118,157,175,185,199,219,260,273,320,354 'json':92,104,109,197,217,230,257,266,318,356 'list':171 'local':248,251 'low':335 'm':143,146,297,300 'maintain':4,46 'malici':24 'malicious.pilot':88 'manag':52,357 'mkdir':69 'multipl':37 'mv':150,168,308 'name':75 'need':21,44 'network':14,41,64 'node':89,98,106,111,123,124,133,135,214,227,232,254,263,268,278,279,287,289 'p':70 'peer':319 'pend':191,198,218 'persist':48 'pilot':2,12,50,346 'pilot-blocklist':1 'pilot-protocol':345 'pilotctl':91,103,108,196,216,229,256,265,317,349 'polo':314,323,336 'primari':78 'protocol':13,347 'q':211 'r':96,176,186,200,204,220,261,321,329 'read':203,328 'reason':127,136,137,179,252,282,283,290,291 'reject':102,110,190,231 'remov':153 'requir':344 'run':351 'score':315,324,337 'select':163,224,322 'share':6,34,60 'skill':17,348 'skill-pilot-blocklist' 'source-teoslayer' 'spam':113,128 'strftime':141,295 'support':58 'synchron':62 'sz':147,301 'topic-agent-skills' 'topic-ai-agents' 'topic-clawhub' 'topic-networking' 'topic-openclaw' 'topic-overlay-network' 'topic-p2p' 'topic-pilot-protocol' 'true':272 'uniqu':303 'untrust':9,55,100,105,267 'use':15 'want':32 'workflow':237 'y':142,296","prices":[{"id":"6f1fe5d7-e21a-467c-9737-abf4232aea1b","listingId":"3fd5bdff-ed25-4347-8fb0-ef6d4c82457f","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:35.044Z"}],"sources":[{"listingId":"3fd5bdff-ed25-4347-8fb0-ef6d4c82457f","source":"github","sourceId":"TeoSlayer/pilot-skills/pilot-blocklist","sourceUrl":"https://github.com/TeoSlayer/pilot-skills/tree/main/skills/pilot-blocklist","isPrimary":false,"firstSeenAt":"2026-05-18T13:22:35.044Z","lastSeenAt":"2026-05-18T19:14:51.899Z"}],"details":{"listingId":"3fd5bdff-ed25-4347-8fb0-ef6d4c82457f","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"TeoSlayer","slug":"pilot-blocklist","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":"4d9fcf2bf4c23f9416aa149822101f9bee32694c","skill_md_path":"skills/pilot-blocklist/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/TeoSlayer/pilot-skills/tree/main/skills/pilot-blocklist"},"layout":"multi","source":"github","category":"pilot-skills","frontmatter":{"name":"pilot-blocklist","license":"AGPL-3.0","description":"Maintain and share blocklists of untrusted agents in Pilot Protocol networks.  Use this skill when: 1. You need to block malicious or compromised agents from connecting 2. You want to share blocklists across multiple agents in your network 3. You need to maintain a persistent deny-list for security  Do NOT use this skill when: - You need temporary connection filtering (use firewall rules) - You're managing trust approvals (use pilot-auto-trust) - You need allowlist-only mode (use trust circles instead)","compatibility":"Requires pilot-protocol skill and pilotctl binary on PATH. The daemon must be running (pilotctl daemon start)."},"skills_sh_url":"https://skills.sh/TeoSlayer/pilot-skills/pilot-blocklist"},"updatedAt":"2026-05-18T19:14:51.899Z"}}