transfer-pack/SKILL.md

4.9 KiB

name description version metadata
transfer-pack Send a transfer packet to a remote Hermes agent with file delivery and Discord notification. 1.1.0
hermes
tags
transfer
agent-communication
scp
cron

Transfer Pack

Send a transfer packet (files + letter) to a remote Hermes Agent instance. The recipient agent reads the letter and responds via Discord.

Prerequisites

  • SSH key access to recipient agent's server
  • mcp_ssh tool available (SSH-MCP)
  • Both agents must have Hermes cron support

Configuration

Before using, identify from context or AGENTS.md:

Variable Source
SENDER_NAME Your agent name (e.g., BarnacleBoy, Lucy, CeeLo, MermaidMan)
RECIPIENT_NAME Target agent name from AGENTS.md
RECIPIENT_SSH_HOST Tailscale address from AGENTS.md
RECIPIENT_SSH_USER SSH username for recipient server
USER_NAME Human operator's name (for acknowledgment)

Procedure

Step 1: Parse the prompt

Identify:

  • The topic (succinct kebab-case keyword from the user's prompt)
  • The files to include (from context — code, docs, configs, etc.)
  • The instructions for the recipient (what they should do with the contents)

Step 2: Create the transfer packet directory

mkdir -p /tmp/transfer-packs/YYYY-MM-DD-<topic>

Use today's date and the succinct topic. Example: 2026-05-08-agent-coordination

Step 3: Copy relevant files into the directory

Copy all files referenced in the prompt into the packet directory. Use cp or write_file as appropriate.

If no files needed, just create the LETTER.md.

Step 4: Write LETTER.md

Write LETTER.md in the packet directory with this structure:

# Transfer Packet: <Topic>

**From:** <SENDER_NAME> (Hermes Agent)
**To:** <RECIPIENT_NAME> (Hermes Agent)
**Date:** YYYY-MM-DD
**Topic:** <topic>

---

<Personal letter addressing the recipient. Explain:>
- What's in this packet
- Why it's being sent
- What the recipient should do with it
- Any specific instructions or context needed

**At the end, include this line:**
"Please inform <USER_NAME> that this transfer was successful and include a brief summary of what you received."

The letter MUST end with the instruction to inform the user of success.

Step 5: Create the tarball

cd /tmp/transfer-packs && tar czf YYYY-MM-DD-<topic>.tar.gz YYYY-MM-DD-<topic>/

Step 6: SCP the tarball to the recipient

scp -o StrictHostKeyChecking=no /tmp/transfer-packs/YYYY-MM-DD-<topic>.tar.gz <RECIPIENT_SSH_USER>@<RECIPIENT_SSH_HOST>:~/

Step 7: Extract the tarball on the recipient server

Use SSH-MCP (mcp_ssh_execute_command):

cd ~ && tar xzf YYYY-MM-DD-<topic>.tar.gz

Step 8: Create a one-shot cron job on the recipient server

Use SSH-MCP to run:

hermes cron create \
  --name "transfer-ack-<topic>" \
  --deliver discord \
  --repeat 1 \
  1m \
  "New transfer packet from <SENDER_NAME>. Please read ~/YYYY-MM-DD-<topic>/LETTER.md and follow the instructions inside."

This creates a one-shot cron job that:

  • Runs in ~1 minute
  • Triggers the recipient agent with the notification prompt
  • Delivers the response to Discord
  • Auto-removes after running once (--repeat 1)

Note: The cron ticker runs at 60s intervals, so it may take 1-2 minutes for the job to fire.

Step 9: Confirm to user

Report:

  • Packet directory name
  • Files included
  • That the cron notification was created
  • Expected delivery timeframe (~1-2 minutes)

Cleanup

After confirming the transfer, clean up local temp files:

rm -rf /tmp/transfer-packs/YYYY-MM-DD-<topic> /tmp/transfer-packs/YYYY-MM-DD-<topic>.tar.gz

The recipient should clean up their copy after reading the letter.

Pitfalls

  • Do NOT use hermes -z or hermes chat -q — those output to stdout only, not Discord. Always use the cron mechanism with --deliver discord.
  • Do NOT try to message the recipient's Discord bot directly — Discord bots cannot see messages from other bots.
  • The --repeat 1 flag is required — without it, the job runs indefinitely.
  • Schedule format: Use 1m (relative offset), not now. The cron ticker picks it up on the next tick.
  • SCP requires SSH key auth — ensure ~/.ssh/authorized_keys is set up on the recipient server for the sending agent's key.
  • Files must be in the tarball — don't assume the recipient has access to your filesystem. Copy everything into the packet directory.
  • Hardcoded names — always derive SENDER_NAME, RECIPIENT_NAME, and USER_NAME from context or AGENTS.md, never hardcode them.

Integration with agent-coordination

For agents using the agent-coordination repository:

  1. Parse ~/.hermes/agent-coordination/AGENTS.md (or equivalent path) to resolve recipient names to SSH hosts and users
  2. Use ~/.hermes/agent-coordination/PERSONALITY.md for shared behavioral context
  3. The sender's name should match their entry in AGENTS.md