add — save a peer

SkillCommunication

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.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the add — save a peer skill

What this skill tells your AI

The instructions your AI receives, as published by xhluca/agent-talk in skills/add/SKILL.md and read by ahel’s review.

retalk add <fingerprint> --peer <name> --dir "<user>/identity"
retalk add <fingerprint> --peer <name> --verify --dir "<user>/identity" --passphrase-path "<user>/passphrase"   # also fetch + pin their keys now

A plain add is local and needs no passphrase. --verify fetches from the relay, so on an encrypted identity add --passphrase-path "<user>/passphrase", which names the file instead of reading it and keeps the call one flat command (retalk 0.3.0+; init Session rule 8).

<fingerprint> is the peer's 32-hex id, obtained out-of-band — it's the positional argument. --peer <name> is an optional local label (yours alone; the peer never learns it); omit it to refer to the peer by fingerprint. If the fingerprint is missing, use AskUserQuestion. Re-adding the same fingerprint updates its name. Target the identity inline with --dir "<user>/identity".

Is a manual add still the right step? This skill is for a peer who sent you their fingerprint. If you are onboarding someone new, the shorter path is an invite code: you issue one, they register themselves, and the contact is saved for you with their keys already pinned (id skill, Invite codes; needs retalk 0.3.0 or newer). Use add when the peer replied with a fingerprint, when their retalk is older than that, or when the user hands you an id from somewhere else.

By default this saves an incomplete contact (fingerprint + optional name); keys are fetched/verified on first send/receive, or run verify now — or pass --verify to fetch and pin the peer's keys in the same step.

After adding: honor the delivery mode (init → Session rules)

Read <user>/check-mode and act — never end an add asking "want me to start a listener?": auto → make sure <user>/receive-from covers this peer, then silently start the follower + Monitor (blocks: receive skill) and note that replies will surface automatically; manual → nothing; missing → ask once (Auto-receive "(Recommended)" first), record to <user>/check-mode, act.

Covering the peer means widening the scope, not only filling a blank. Write this peer's name if receive-from is unset, but if it already names someone else, write *contacts* instead. A follower's peer list is fixed when it starts, so also stop and restart it with the new peer included rather than leaving the running one alone: follow.sh start reports "already following" and changes nothing, so a peer added afterwards is never drained and their first message sits on the relay. invite watch does this for itself when a peer registers with a code.

After adding: share your address back (off-band) — ALWAYS show the message

A peer you add still needs YOUR address to reach you — unless they already have it (e.g. this add came from their invite and you already handed back a reply). Show the message for the user verbatim, unprompted — never just mention that an invite exists. Compose it in agent-talk terms (the peer is most likely on the plugin, not the raw CLI) using the invite/reply template in the init skill, with values from retalk id --card --dir "<user>/identity"; introduce it as "Copy and send the following message to your peer (the person you want to communicate with)." Use the no code variant of that template here: this peer is already set up and only needs your address, so an invite code would give them nothing to redeem. Only for a raw-CLI peer use the retalk-generic blocks:

retalk id --invite-message --as <your-name> --dir "<user>/identity"   # peer not on retalk yet
retalk id --invite-reply --as <your-name> --dir "<user>/identity"     # replying to a peer's invite

Or share your identity as JSON for them to import: retalk id --card --dir "<user>/identity". The same invite also walks a peer who isn't on retalk/agent-talk yet through installing it. The relay comes from your saved relay; if it moved since init, pass --relay <URL> first (it can change — see the relay note in init).

<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

  • verify — pin the peer's keys off-band.
  • send — message the peer you just added.
  • id — hand over your id, or issue an invite code so the next peer registers themselves instead.

Signals

GitHub stars
184
Forks
14
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
add-xhluca
Source
github.com/xhluca/agent-talk