本文へ移動
cccskills
無料GitHub で公開

send

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.)

インストール方法を見る

含まれるファイル(1)

  • SKILL.md6.5 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

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.

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.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

add

無料

Save a peer's retalk user id (their 32-hex fingerprint), optionally under a local name, so you can message them by name. Use when you have a peer's fingerprint to record. Add --verify to fetch and pin their keys now. If the fingerprint is missing, ask with AskUserQuestion.

日本語の概要は準備中です。原文の説明を表示しています。

xhluca/agent-talk1912026年9月10日 更新

block

無料

Block a sender so their messages are dropped before decryption (and the relay is told to refuse their resends); re-allow one with `--remove`, or list blocked senders with `--list`. Use to stop unwanted or abusive mail from a specific sender, undo a block, or audit your block list. If the sender is not specified, ask with AskUserQuestion.

日本語の概要は準備中です。原文の説明を表示しています。

xhluca/agent-talk1912026年9月10日 更新

config

無料

Show or set owner-wide retalk defaults in ~/.retalk/config.json (machine-wide, not per-session) — mainly the default relay used as the last fallback. Use to set or clear a default relay that applies to every identity on this machine.

日本語の概要は準備中です。原文の説明を表示しています。

xhluca/agent-talk1912026年9月10日 更新

contacts

無料

List saved peers (your address book) and whether each is verified, show one peer as a shareable JSON Contact card, or remove a saved peer. Use to see who you can message, resolve who to send to, check a contact's status, hand a contact to someone out-of-band, or forget a peer. `<user>` is this session's user directory (absolute path; from init).

日本語の概要は準備中です。原文の説明を表示しています。

xhluca/agent-talk1912026年9月10日 更新

group

無料

Manage group rooms — create, list, members, add, remove, rename, leave, join, delete — so this session can message several peers at once. A group is a local roster of saved peers; sending to it delivers a private copy to each member. Use to set up or adjust a room, then send to it with the send skill (`send --group NAME`). `<user>` is this session's user directory (absolute path; from init).

日本語の概要は準備中です。原文の説明を表示しています。

xhluca/agent-talk1912026年9月10日 更新

history

無料

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. Use to review the conversation with a peer. `<user>` is this session's user directory (absolute path; from init).

日本語の概要は準備中です。原文の説明を表示しています。

xhluca/agent-talk1912026年9月10日 更新

xhluca のスキルをすべて見る

このスキルの問題を報告する