{"id":"f324117d-3409-4a2c-97dd-99b21a29066c","shortId":"2rdvwu","kind":"skill","title":"pilot-chunk-transfer","tagline":"Large file transfer with automatic chunking, resume capability, and integrity verification.  Use this skill when: 1. You need to transfer files larger than 100MB reliably 2. You want resume capability for interrupted transfers 3. You need integrity verification with checksums per","description":"# pilot-chunk-transfer\n\nLarge file transfer with automatic chunking, resume capability, and per-chunk integrity verification. Breaks large files into manageable chunks, tracks transfer progress, and enables resuming interrupted transfers.\n\n## Commands\n\n### Send file with chunking\n\n```bash\nFILE=\"/path/to/large-file.iso\"\nDEST=\"1:0001.AAAA.BBBB\"\nCHUNK_SIZE=$((1024 * 1024))  # 1MB\n\nFILENAME=$(basename \"$FILE\")\nFILESIZE=$(stat -f %z \"$FILE\" 2>/dev/null || stat -c %s \"$FILE\")\nTOTAL_CHUNKS=$(( (FILESIZE + CHUNK_SIZE - 1) / CHUNK_SIZE ))\n\n# Send metadata\npilotctl --json send-message \"$DEST\" \\\n  --data \"{\\\"type\\\":\\\"chunk_transfer_start\\\",\\\"filename\\\":\\\"$FILENAME\\\",\\\"size\\\":$FILESIZE,\\\"total_chunks\\\":$TOTAL_CHUNKS}\"\n\n# Send chunks\nfor ((i=0; i<TOTAL_CHUNKS; i++)); do\n  dd if=\"$FILE\" bs=\"$CHUNK_SIZE\" skip=\"$i\" count=1 2>/dev/null > \"/tmp/chunk_$i.dat\"\n  CHUNK_HASH=$(md5sum \"/tmp/chunk_$i.dat\" | cut -d' ' -f1)\n\n  pilotctl --json send-message \"$DEST\" \\\n    --data \"{\\\"type\\\":\\\"chunk_metadata\\\",\\\"chunk_id\\\":$i,\\\"hash\\\":\\\"$CHUNK_HASH\\\"}\"\n\n  pilotctl --json send-file \"$DEST\" \"/tmp/chunk_$i.dat\"\n  rm \"/tmp/chunk_$i.dat\"\ndone\n\n# Send completion\npilotctl --json send-message \"$DEST\" \\\n  --data \"{\\\"type\\\":\\\"chunk_transfer_complete\\\",\\\"filename\\\":\\\"$FILENAME\\\"}\"\n```\n\n### Receive and reassemble chunks\n\n```bash\nRECV_DIR=\"$HOME/.pilot/chunk-recv\"\nmkdir -p \"$RECV_DIR\"\n\nINBOX=$(pilotctl --json inbox)\necho \"$INBOX\" | jq -c '.messages[]' | while read -r msg; do\n  TYPE=$(echo \"$msg\" | jq -r '.type')\n\n  case \"$TYPE\" in\n    chunk_transfer_start)\n      FILENAME=$(echo \"$msg\" | jq -r '.filename')\n      mkdir -p \"$RECV_DIR/$FILENAME.chunks\"\n      ;;\n\n    chunk_metadata)\n      CHUNK_ID=$(echo \"$msg\" | jq -r '.chunk_id')\n      EXPECTED_HASH=$(echo \"$msg\" | jq -r '.hash')\n      # Verify chunk hash after receiving file\n      ;;\n\n    chunk_transfer_complete)\n      FILENAME=$(echo \"$msg\" | jq -r '.filename')\n      cat \"$RECV_DIR/$FILENAME.chunks\"/chunk_* > \"$RECV_DIR/$FILENAME\"\n      rm -rf \"$RECV_DIR/$FILENAME.chunks\"\n      echo \"Reassembled: $RECV_DIR/$FILENAME\"\n      ;;\n  esac\ndone\n```\n\n### Resume interrupted transfer\n\n```bash\nSTATE_FILE=\"/tmp/transfer_state.json\"\n\nif [ -f \"$STATE_FILE\" ]; then\n  START_CHUNK=$(jq -r \".\\\"$FILENAME\\\".last_chunk // 0\" \"$STATE_FILE\")\nelse\n  START_CHUNK=0\nfi\n\n# Continue from START_CHUNK and update state after each chunk\n```\n\n## Workflow Example\n\n```bash\n# Send large file in chunks with resume capability\n./pilot-chunk-transfer.sh send /path/to/large.iso 1:0001.AAAA.BBBB\n\n# Receive in background\n./pilot-chunk-transfer.sh receive\n```\n\n## Dependencies\n\nRequires pilot-protocol skill with running daemon, jq for JSON parsing, dd for chunk extraction, md5sum for integrity verification, and bc for progress calculations.","tags":["pilot","chunk","transfer","skills","teoslayer","agent-skills","ai-agents","clawhub","networking","openclaw","overlay-network","p2p"],"capabilities":["skill","source-teoslayer","skill-pilot-chunk-transfer","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-chunk-transfer","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,750 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:52.456Z","embedding":null,"createdAt":"2026-05-18T13:22:35.755Z","updatedAt":"2026-05-18T19:14:52.456Z","lastSeenAt":"2026-05-18T19:14:52.456Z","tsv":"'/chunk_':297 '/dev/null':103,158 '/path/to/large-file.iso':85 '/path/to/large.iso':363 '/pilot-chunk-transfer.sh':361,369 '/tmp/chunk_':159,164,191,194 '/tmp/transfer_state.json':319 '0':141,332,338 '0001.aaaa.bbbb':88,365 '1':20,87,113,156,364 '100mb':28 '1024':91,92 '1mb':93 '2':30,102,157 '3':38 'automat':9,54 'background':368 'basenam':95 'bash':83,216,316,352 'bc':393 'break':64 'bs':150 'c':105,231 'calcul':396 'capabl':12,34,57,360 'case':244 'cat':293 'checksum':44 'chunk':3,10,48,55,61,69,82,89,109,111,114,126,134,136,138,144,151,161,177,179,183,207,215,247,261,263,269,279,284,326,331,337,343,349,357,386 'command':78 'complet':198,209,286 'continu':340 'count':155 'cut':166 'd':167 'daemon':379 'data':124,175,205 'dd':147,384 'depend':371 'dest':86,123,174,190,204 'dir':218,223,259,295,299,304,309 'done':196,312 'echo':228,239,251,265,273,288,306 'els':335 'enabl':74 'esac':311 'exampl':351 'expect':271 'extract':387 'f':99,321 'f1':168 'fi':339 'file':6,25,51,66,80,84,96,101,107,149,189,283,318,323,334,355 'filenam':94,129,130,210,211,250,255,287,292,300,310,329 'filename.chunks':260,296,305 'files':97,110,132 'hash':162,182,184,272,277,280 'home/.pilot/chunk-recv':219 'i.dat':160,165,192,195 'id':180,264,270 'inbox':224,227,229 'integr':14,41,62,390 'interrupt':36,76,314 'jq':230,241,253,267,275,290,327,380 'json':119,170,186,200,226,382 'larg':5,50,65,354 'larger':26 'last':330 'manag':68 'md5sum':163,388 'messag':122,173,203,232 'metadata':117,178,262 'mkdir':220,256 'msg':236,240,252,266,274,289 'need':22,40 'p':221,257 'pars':383 'per':45,60 'per-chunk':59 'pilot':2,47,374 'pilot-chunk-transf':1,46 'pilot-protocol':373 'pilotctl':118,169,185,199,225 'progress':72,395 'protocol':375 'r':235,242,254,268,276,291,328 'read':234 'reassembl':214,307 'receiv':212,282,366,370 'recv':217,222,258,294,298,303,308 'reliabl':29 'requir':372 'resum':11,33,56,75,313,359 'rf':302 'rm':193,301 'run':378 'send':79,116,121,137,172,188,197,202,353,362 'send-fil':187 'send-messag':120,171,201 'size':90,112,115,131,152 'skill':18,376 'skill-pilot-chunk-transfer' 'skip':153 'source-teoslayer' 'start':128,249,325,336,342 'stat':98,104 'state':317,322,333,346 'topic-agent-skills' 'topic-ai-agents' 'topic-clawhub' 'topic-networking' 'topic-openclaw' 'topic-overlay-network' 'topic-p2p' 'topic-pilot-protocol' 'total':108,133,135,143 'track':70 'transfer':4,7,24,37,49,52,71,77,127,208,248,285,315 'type':125,176,206,238,243,245 'updat':345 'use':16 'verif':15,42,63,391 'verifi':278 'want':32 'workflow':350 'z':100","prices":[{"id":"39019f90-1caa-4767-8a15-b929bb1193ed","listingId":"f324117d-3409-4a2c-97dd-99b21a29066c","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.755Z"}],"sources":[{"listingId":"f324117d-3409-4a2c-97dd-99b21a29066c","source":"github","sourceId":"TeoSlayer/pilot-skills/pilot-chunk-transfer","sourceUrl":"https://github.com/TeoSlayer/pilot-skills/tree/main/skills/pilot-chunk-transfer","isPrimary":false,"firstSeenAt":"2026-05-18T13:22:35.755Z","lastSeenAt":"2026-05-18T19:14:52.456Z"}],"details":{"listingId":"f324117d-3409-4a2c-97dd-99b21a29066c","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"TeoSlayer","slug":"pilot-chunk-transfer","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":"6524054361f1ba3b70a97fff1cf301d4d5e693a3","skill_md_path":"skills/pilot-chunk-transfer/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/TeoSlayer/pilot-skills/tree/main/skills/pilot-chunk-transfer"},"layout":"multi","source":"github","category":"pilot-skills","frontmatter":{"name":"pilot-chunk-transfer","license":"AGPL-3.0","description":"Large file transfer with automatic chunking, resume capability, and integrity verification.  Use this skill when: 1. You need to transfer files larger than 100MB reliably 2. You want resume capability for interrupted transfers 3. You need integrity verification with checksums per chunk  Do NOT use this skill when: - Files are small (<10MB) - use pilot-share for simplicity - You need real-time streaming - use pilot-stream-data instead - You need bidirectional sync - use pilot-sync 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-chunk-transfer"},"updatedAt":"2026-05-18T19:14:52.456Z"}}