Pilot chunk transfer
80+ agent skills for Pilot Protocol — communication, file transfer, trust, task routing, swarm coordination, and more
npx -y skills add TeoSlayer/pilot-skills --skill pilot-chunk-transferAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
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
The file declares its own license as AGPL-3.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
3.6 KB, as published. Nobody here has run it
pilot-chunk-transfer
Large 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.
Commands
Send file with chunking
FILE="/path/to/large-file.iso"
DEST="1:0001.AAAA.BBBB"
CHUNK_SIZE=$((1024 * 1024)) # 1MB
FILENAME=$(basename "$FILE")
FILESIZE=$(stat -f %z "$FILE" 2>/dev/null || stat -c %s "$FILE")
TOTAL_CHUNKS=$(( (FILESIZE + CHUNK_SIZE - 1) / CHUNK_SIZE ))
# Send metadata
pilotctl --json send-message "$DEST" \
--data "{\"type\":\"chunk_transfer_start\",\"filename\":\"$FILENAME\",\"size\":$FILESIZE,\"total_chunks\":$TOTAL_CHUNKS}"
# Send chunks
for ((i=0; i<TOTAL_CHUNKS; i++)); do
dd if="$FILE" bs="$CHUNK_SIZE" skip="$i" count=1 2>/dev/null > "/tmp/chunk_$i.dat"
CHUNK_HASH=$(md5sum "/tmp/chunk_$i.dat" | cut -d' ' -f1)
pilotctl --json send-message "$DEST" \
--data "{\"type\":\"chunk_metadata\",\"chunk_id\":$i,\"hash\":\"$CHUNK_HASH\"}"
pilotctl --json send-file "$DEST" "/tmp/chunk_$i.dat"
rm "/tmp/chunk_$i.dat"
done
# Send completion
pilotctl --json send-message "$DEST" \
--data "{\"type\":\"chunk_transfer_complete\",\"filename\":\"$FILENAME\"}"
Receive and reassemble chunks
RECV_DIR="$HOME/.pilot/chunk-recv"
mkdir -p "$RECV_DIR"
INBOX=$(pilotctl --json inbox)
echo "$INBOX" | jq -c '.messages[]' | while read -r msg; do
TYPE=$(echo "$msg" | jq -r '.type')
case "$TYPE" in
chunk_transfer_start)
FILENAME=$(echo "$msg" | jq -r '.filename')
mkdir -p "$RECV_DIR/$FILENAME.chunks"
;;
chunk_metadata)
CHUNK_ID=$(echo "$msg" | jq -r '.chunk_id')
EXPECTED_HASH=$(echo "$msg" | jq -r '.hash')
# Verify chunk hash after receiving file
;;
chunk_transfer_complete)
FILENAME=$(echo "$msg" | jq -r '.filename')
cat "$RECV_DIR/$FILENAME.chunks"/chunk_* > "$RECV_DIR/$FILENAME"
rm -rf "$RECV_DIR/$FILENAME.chunks"
echo "Reassembled: $RECV_DIR/$FILENAME"
;;
esac
done
Resume interrupted transfer
STATE_FILE="/tmp/transfer_state.json"
if [ -f "$STATE_FILE" ]; then
START_CHUNK=$(jq -r ".\"$FILENAME\".last_chunk // 0" "$STATE_FILE")
else
START_CHUNK=0
fi
# Continue from START_CHUNK and update state after each chunk
Workflow Example
# Send large file in chunks with resume capability
./pilot-chunk-transfer.sh send /path/to/large.iso 1:0001.AAAA.BBBB
# Receive in background
./pilot-chunk-transfer.sh receive
Dependencies
Requires pilot-protocol skill with running daemon, jq for JSON parsing, dd for chunk extraction, md5sum for integrity verification, and bc for progress calculations.