Agent skill

Send

by xhluca in xhluca/agent-talk

Send an end-to-end-encrypted message to a peer, autonomously.

MITAuto-check passed

Install Send

skills CLI
$ npx skills add xhluca/agent-talk --skill send -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install xhluca/agent-talk send --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/xhluca/agent-talk.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/send .claude/skills/send && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
send
GitHub stars
190
Token cost
~1.6k tokens
SKILL.md length
814 words
Files
1
Skills in repo
14
Repo updated
First seen
Licence
MIT

At a glance

Send an end-to-end-encrypted message to a peer, autonomously.

  • This agent should message another agent
  • SKILL.md covers Show the conversation —…, Send to a group (a whole room… and Next
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Person over retalk

What it does

Send is an agent skill from xhluca/agent-talk. Send an end-to-end-encrypted message to a peer, autonomously. Use whenever this agent should message another agent or person over retalk. Designed to run with no human supervision — it resolves the recipient from saved contacts; a routine send never stops to ask — but it always renders the conversation (both sent and received) as a beautiful chat transcript so the user can track it. (Recipient/relay are set up once by the init skill.)

Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: agent-talk enables any coding agent to talk to each other. The licence is MIT.

When your agent uses it

  • This agent should message another agent
  • Person over retalk

Example prompts

  • “/send”

What it can do on your machine

Read from SKILL.md and the folder at commit 8a7fc4f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Send loads about 1.6k tokens when it runs. Until then it costs about 111 tokens; SKILL.md has 814 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~111
When it runs · the whole SKILL.md, loaded when a task matches
~1.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from xhluca/agent-talk at commit 8a7fc4f, republished under its MIT licence (© xhluca). 814 words, ~1,627 tokens.

Download SKILL.mdSave it as .claude/skills/send/SKILL.md (or your agent's skills folder).
name
send
description
Send an end-to-end-encrypted message to a peer, autonomously. Use whenever this agent should message another agent or person over retalk. Designed to run with no human supervision — it resolves the recipient from saved contacts; a routine send never stops to ask — but it always renders the conversation (both sent and received) as a beautiful chat transcript so the user can track it. (Recipient/relay are set up once by the init skill.)

send — message a peer (seamless, autonomous)

retalk send --peer <name-or-fingerprint> "your message" --save --dir "<user>/identity" --passphrase-path "<user>/passphrase"
# -> {"id","to"} on stdout
retalk send --group <group-name> "your message" --save --dir "<user>/identity" --passphrase-path "<user>/passphrase"   # message a whole room
# -> {"id","group","group_id","sent","failed"} on stdout

--save is not optional here. agent-talk keeps a sealed copy of everything it sends so history shows both sides of the conversation, and a send without it is the one half that goes missing. It is a flag rather than the RETALK_SAVE_MESSAGE=1 prefix the older skills used, for two reasons: the call stays one flat command starting with retalk, which a single Bash(retalk:*) allowlist rule covers, and a flag inside the command is much harder to drop by accident than a prefix in front of it. The passphrase is named, never read: --passphrase-path (retalk 0.3.0+) keeps the secret in its file. Drop that one on a --no-passphrase identity; on an older retalk see init Session rule 8.

Show the conversation — always, and make it beautiful

After every send (and receive), render the exchange in the chat as a clean markdown transcript so the human can follow the discussion without watching the wire. Show both directions — not just the new line — and the real text, never just a summary or a count. Use this shape:

### 💬 bob
**📥 bob** · 14:32
> Did the relay switch work?

**📤 you** · 14:33
> Yep — on the GCP relay now.
  • One block per message, oldest → newest. Received = 📥 + the peer's name in bold; sent = 📤 + you. Add the HH:MM time when known.
  • Show the new message plus a little recent context from both sides (~1–3 prior turns) so it reads as a thread — pull earlier lines from the spool (<user>/inbox.ndjson) and your saved sent copies if needed.
  • Keep multi-line messages intact inside the quote; never change the wording.

This is display, never a confirmation prompt — it must not block an autonomous send. (Only stay quiet if the human explicitly asked you to.)

Send to a group (a whole room at once)

retalk send --group <name> "..." messages every member of a saved room, each with their own private copy (set up the room with the group skill; --group and --peer can't be combined). The receipt is different:

retalk send --group team "standup in 5" --save --dir "<user>/identity"
# stdout: {"id","group","group_id","sent","failed"}   (sent/failed are counts)
  • sent and failed are counts of members, not lists. All delivered → failed is 0 and the command exits 0. If some copies couldn't go out, the command exits 2 (a partial send) and names each unreachable member on stderr as ✗ <fingerprint>: <reason>.

  • Render it as a friendly room note, never raw JSON. Say what happened in the room and to whom:

    📤 you → 💬 team · 09:15

    standup in 5 Delivered to 3 of 3 · bob, carol, dave

    On a partial send, name who got it and who didn't, and flag it as an encryption/delivery hiccup you'll retry — resolve the fingerprints on stderr back to saved names when you can:

    📤 you → 💬 team · 09:15

    standup in 5 Delivered to 2 of 3 · ✓ bob, carol · ✗ dave (couldn't reach — I'll retry)

    The others already have the message; a retry only re-sends to the ones that failed. A later send or sync flushes the queued copies, so treat a partial as "mostly delivered, resolving the rest", not a failure. Never surface the exit code or the raw stderr line to the user.

  • Group replies come back as ordinary messages from the individual members, so render the incoming side as a group-room transcript (see receive): the room name at the top, each reply attributed to its sender.

Show full SKILL.md (291 more words)Show less

Run without interrupting the human in the normal case:

  • Recipient — resolve from saved contacts, don't ask: retalk contacts --json --dir "<user>/identity". One contact → send to it; several → pick the one the task/conversation is for. Contacts are front-loaded by init. When the task is for a whole room, resolve the room name from retalk group list --dir "<user>/identity" and use --group instead of --peer.
  • Identity — always targeted inline with --dir "<user>/identity" (env vars don't persist between commands); the relay is saved in that store and defaults to the init relay (recorded in <user>/relay). The relay can change after init — if yours moved, add --relay <URL> (or --relay "$(cat "<user>/relay")"). Encrypted identity? add --passphrase-path "<user>/passphrase".

Publishes keys + resends the outbox first; the peer reads it with receive. First contact auto-verifies the peer's keys — a PIN MISMATCH means possible relay tampering, so stop and surface it.

Plain language (init → Session rules): outbox/ack/session are internals — tell the user "queued", "delivered ✓", or "an encryption hiccup I'm resolving", not ratchet/MAC/outbox talk.

Only fall back to AskUserQuestion if there are no contacts at all (a setup gap — prefer fixing it via init). Never block a routine send.

After sending, honor the delivery mode (init → Session rules) — act, don't ask. <user>/check-mode = auto → silently start the follower + Monitor if not running (receive skill); manual → leave it; missing → ask once (Auto-receive "(Recommended)" first), record, act. Never ask "want me to listen for the reply?".

<user> = this session's user directory — an absolute path resolved at init (e.g. ~/.agent-talk/users/alice (global) or <project>/.agent-talk/users/alice (local)). Each session uses a distinct, isolated user, so parallel sessions never collide.

Next

  • receive — get the reply.
  • receive --follow — live delivery as it arrives.
  • history — replay if you saved messages.
  • group — set up or adjust a room to send to.

© xhluca, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/send of xhluca/agent-talk.

Open the folder on GitHubat commit 8a7fc4f

Compare with similar skills

Send next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Send compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Send this skillxhluca/agent-talk190—~1.6kAutomated safety check: PassMIT
Implementing End To End Encryption For Messagingmukul975/Anthropic-Cybersecurity-Skills34k—~843Automated safety check: PassApache-2.0
Messages Opsaffaan-m/ECC275k1 repos~724Automated safety check: PassMIT
Autonomous Loopsaffaan-m/ECC275k4 repos~5.8kAutomated safety check: PassMIT
Send User MessageTinyAGI/tinyagi3.6k—~829Automated safety check: PassMIT
Autonomous Agent Harnessaffaan-m/ECC275k2 repos~2.9kAutomated safety check: PassMIT

Similar skills

  • Implementing End To End Encryption For Messaging

    mukul975/Anthropic-Cybersecurity-Skills

    Implements a simplified Signal Protocol-style end-to-end encryption scheme for messaging, covering key exchange, forward secrecy, and the core cryptographic components so no server or intermediary…

    34k GitHub stars~843 tokensUpdated 1 mo ago
    SecurityAuto-check passed
  • Messages Ops

    affaan-m/ECC

    Evidence-first live messaging workflow for ECC. An agent skill from affaan-m/ECC.

    275k GitHub starsUsed in 1 repo~724 tokens
    Productivity & AutomationAuto-check passed
  • Autonomous Loops

    affaan-m/ECC

    Patterns and architectures for autonomous Claude Code loops — from simple sequential pipelines to RFC-driven multi-agent DAG systems.

    275k GitHub starsUsed in 4 repos~5.8k tokens
    Agent WorkflowsAuto-check passed
  • Send User Message

    TinyAGI/tinyagi

    Send a proactive message to a paired user via their channel (Discord, Telegram, or WhatsApp).

    3.6k GitHub stars~829 tokensUpdated 6 mo ago
    Productivity & AutomationAuto-check passed
  • Transform Claude Code into a fully autonomous agent system with persistent memory, scheduled operations, computer use, and task queuing.

    275k GitHub starsUsed in 2 repos~2.9k tokens
    Agent WorkflowsAuto-check passed
  • Autonomous Loops

    affaan-m/ECC

    自主Claude代码循环的模式与架构——从简单的顺序管道到基于RFC的多智能体有向无环图系统. An agent skill from affaan-m/ECC.

    275k GitHub starsUsed in 2 repos~3.8k tokens
    Agent WorkflowsAuto-check passed

More from xhluca/agent-talk

All 14 skills in this repo
  • Add

    xhluca/agent-talk

    Save a peer's retalk user id (their 32-hex fingerprint), optionally under a local name, so you can message them by name.

    190 GitHub stars~1.2k tokensUpdated 28 days ago
    Auto-check passed
  • Group

    xhluca/agent-talk

    Manage group rooms — create, list, members, add, remove, rename, leave, join, delete — so this session can message several peers at once.

    190 GitHub stars~2k tokensUpdated 28 days ago
    Auto-check passed
  • History

    xhluca/agent-talk

    Replay this session's locally-saved conversation log — the at-rest copies agent-talk keeps by default on every send and receive — both sent and received, oldest first, without re-contacting the relay.

    190 GitHub stars~758 tokensUpdated 28 days ago
    Auto-check passed
  • Id

    xhluca/agent-talk

    Print this agent's retalk user id (fingerprint) to share with peers, or to confirm which identity is active, and issue or redeem the invite codes that let a peer register themselves as a contact.

    190 GitHub stars~3.5k tokensUpdated 28 days ago
    Auto-check passed
  • Receive

    xhluca/agent-talk

    Read incoming retalk messages from this session's user's DESIGNATED sender(s) — one-shot, or as a background --follow reader that surfaces new messages in the session as they arrive (on your next…

    190 GitHub stars~3.6k tokensUpdated 28 days ago
    Auto-check passed
  • Relay

    xhluca/agent-talk

    Set up, check, stop, or delete a retalk relay server (retalk-server).

    190 GitHub stars~1.5k tokensUpdated 28 days ago
    Auto-check passed

Questions about Send

What does Send do?

Send an end-to-end-encrypted message to a peer, autonomously. Send is an agent skill from xhluca/agent-talk. Send an end-to-end-encrypted message to a peer, autonomously.

When should I use Send?

Send fits situations like: this agent should message another agent; person over retalk.

How do I install Send in Claude Code?

Run `npx skills add xhluca/agent-talk --skill send -a claude-code`. Or copy the skill folder (skills/send in xhluca/agent-talk) into .claude/skills/send in your project. Claude Code loads it when a task matches its description.

How do I install Send in Codex?

Run `npx skills add xhluca/agent-talk --skill send -a codex`. Or copy the skill folder (skills/send in xhluca/agent-talk) into .agents/skills/send in your project. Codex loads it when a task matches its description.

Can I use Send in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add xhluca/agent-talk --skill send -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/send, .gemini/skills/send, .github/skills/send and .opencode/skills/send in your project.

What does Send need to run?

SKILL.md names no scripts, command-line tools or credentials: Send is instructions for the agent only.

Does Send access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Send safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Send use?

Send is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Send use?

About 1.6k tokens (SKILL.md is roughly 6.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Send?

Skills that share tags, products or a category with Send: Implementing End To End Encryption For Messaging (mukul975/Anthropic-Cybersecurity-Skills, 34k stars), Messages Ops (affaan-m/ECC, 275k stars), Autonomous Loops (affaan-m/ECC, 275k stars) and Send User Message (TinyAGI/tinyagi, 3.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Send?

xhluca (a GitHub user) maintains it in xhluca/agent-talk, which has 190 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on September 10, 2026.

Source: xhluca/agent-talk on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.