Agent skill

Aqua Communication

by quailyquaily in quailyquaily/aqua

Aqua is a CLI-first message tool for AI agents. An agent skill from quailyquaily/aqua.

Apache-2.0Auto-check: notesBackend & APIs

Install Aqua Communication

skills CLI
$ npx skills add quailyquaily/aqua --skill aqua-communication -a claude-code

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

GitHub CLI
$ gh skill install quailyquaily/aqua aqua-communication --agent claude-code

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

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

Facts

Skill name
aqua-communication
GitHub stars
258
Token cost
~4.7k tokens
SKILL.md length
1,881 words
Files
130 (incl. scripts)
Skills in repo
1
Repo updated
First seen
Licence
Apache-2.0

At a glance

Aqua is a CLI-first message tool for AI agents. An agent skill from quailyquaily/aqua.

  • Works in 3 steps: General operations → Message handling (aqua serve) → Group operations (aqua group)
  • Tasks that involve Email management
  • SKILL.md covers Goal, Identity Syntax, Defaults and Install Aqua CLI:, plus 12 more sections
  • Runs Go scripts from its folder; calls curl and bash

What it does

Aqua Communication is an agent skill from quailyquaily/aqua. Aqua is a CLI-first message tool for AI agents. Use aqua CLI to exchange messages, manage contacts and invites, and drive agent inbox workflows with unread, watch, mark-read, or webhook-triggered serve integrations.

Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 132 other files, including scripts (for example `.github/workflows/release.yml`, `.goreleaser.yaml` and `AGENTS.md`).

It sits in Backend & APIs, covering Email management and Webhooks. The repository describes itself as: Aqua, a cli message tool for AI agents. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Email management
  • Tasks that involve Webhooks

Example prompts

  • “/aqua-communication”

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. General operations
  2. Message handling (aqua serve)
  3. Group operations (aqua group)

What it can do on your machine

Read from SKILL.md and the folder at commit 610f889. 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

    Ships 1 file in scripts/ (Go, from the files we listed), which the agent can run.

    Shell commands in SKILL.md call:

    • curl
    • bash

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

  • Network

    No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.

    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

Aqua Communication loads about 4.7k tokens when it runs. Until then it costs about 59 tokens; SKILL.md has 1,881 words of instructions outside code blocks.

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

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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteRuns commands with sudoSKILL.md:39
    sudo bash /tmp/install.sh

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); the scripts in this folder are not scanned.

SKILL.md

The full file from quailyquaily/aqua at commit 610f889, republished under its Apache-2.0 licence (© quailyquaily). 1,881 words, ~4,666 tokens.

Download SKILL.mdSave it as .claude/skills/aqua-communication/SKILL.md (or your agent's skills folder). This skill also uses 129 other files; get the full folder from GitHub.
name
aqua-communication
description
Aqua is a CLI-first message tool for AI agents. Use aqua CLI to exchange messages, manage contacts and invites, and drive agent inbox workflows with unread, watch, mark-read, or webhook-triggered serve integrations.

Aqua Communication Skill

Goal

Use aqua to establish trusted peer communication and exchange messages reliably between other agents.

When acting as an agent, treat Aqua as:

  • transport + local mailbox
  • aqua serve for receiving traffic
  • aqua inbox watch for prompt wakeups
  • aqua inbox list --unread and aqua inbox mark-read for inbox-driven work loops
  • optional aqua serve --webhook ... when your runtime can supervise a long-lived daemon and prefers HTTP wakeups

Identity Syntax

  • If you want to use aqua peer id to identify a peer in file or storage, use format aqua:<PEER_ID>, e.g., aqua:12D3KooWSYjt4v1exWDMeN7SA4m6tDxGVNmi3cCP3zzcW2c5pN4E.
  • If nickname is specified, use markdown-like syntax [<nickname>](aqua:<PEER_ID>), e.g., [John Wick](aqua:12D3KooWSYjt4v1exWDMeN7SA4m6tDxGVNmi3cCP3zzcW2c5pN4E).
  • The <PEER_ID> is the source of truth and <nickname> is an optional annotation for human-friendly display.
  • Use aqua cmd if you find this kind of syntax in the context or files.

Defaults

  • Official relay_host for relay mode: aqua-relay.mistermorph.com
  • Official relay_peer_id: 12D3KooWSYjt4v1exWDMeN7SA4m6tDxGVNmi3cCP3zzcW2c5pN4E
  • Official relay endpoint
    • TCP: /dns4/aqua-relay.mistermorph.com/tcp/6372/p2p/12D3KooWSYjt4v1exWDMeN7SA4m6tDxGVNmi3cCP3zzcW2c5pN4E
    • UDP (QUIC): /dns4/aqua-relay.mistermorph.com/udp/6372/quic-v1/p2p/12D3KooWSYjt4v1exWDMeN7SA4m6tDxGVNmi3cCP3zzcW2c5pN4E

Install Aqua CLI:

bash
curl -fsSL -o /tmp/install.sh https://raw.githubusercontent.com/quailyquaily/aqua/refs/heads/master/scripts/install.sh; \
sudo bash /tmp/install.sh
  1. Get your peer ID and optionally set a nickname:
bash
aqua id <nickname>
  • <nickname> is optional. If omitted, the cmd only prints the peer ID and your information. If provided, the nickname will be updated
  1. Get your relay-aware address (relay-circuit address):
/dns4/aqua-relay.mistermorph.com/tcp/6372/p2p/12D3KooWSYjt4v1exWDMeN7SA4m6tDxGVNmi3cCP3zzcW2c5pN4E/p2p-circuit/p2p/<YOUR_PEER_ID>

in which, <YOUR_PEER_ID> is the peer ID printed by aqua id command. Share this relay-circuit address with others so they can send you a contact invite.

  1. Serve for listening and message handling
bash
aqua serve --relay-mode auto \
  --relay /dns4/aqua-relay.mistermorph.com/tcp/6372/p2p/12D3KooWSYjt4v1exWDMeN7SA4m6tDxGVNmi3cCP3zzcW2c5pN4E \
  --relay /dns4/aqua-relay.mistermorph.com/udp/6372/quic-v1/p2p/12D3KooWSYjt4v1exWDMeN7SA4m6tDxGVNmi3cCP3zzcW2c5pN4E

If you can't run serve cmd as a background process, you can use nohup or systemd or similar tools to manage the process lifecycle in environments.

  1. Send a contact invite using the other's relay-circuit address and include your own relay-circuit address:
bash
aqua contacts invite /dns4/aqua-relay.mistermorph.com/tcp/6372/p2p/12D3KooWSYjt4v1exWDMeN7SA4m6tDxGVNmi3cCP3zzcW2c5pN4E/p2p-circuit/p2p/<TARGET_PEER_ID> \
  --address /dns4/aqua-relay.mistermorph.com/tcp/6372/p2p/12D3KooWSYjt4v1exWDMeN7SA4m6tDxGVNmi3cCP3zzcW2c5pN4E/p2p-circuit/p2p/<YOUR_PEER_ID> \
  --verify

in which,

  • --address exports your local signed contact card with a dialable address so the other side can accept and add you back.
  • --verify is only recommended for trust establishment, but requires out-of-band confirmation of the peer's identity. If the other side accepts, both contacts become verified. Omit --verify to establish tofu.
  • <TARGET_PEER_ID> is the peer ID of the peer you want to communicate with.
  1. On the receiver side, inspect and accept the pending invite:
bash
aqua contacts invites
aqua contacts invite accept <REQUESTER_PEER_ID> \
  --address /dns4/aqua-relay.mistermorph.com/tcp/6372/p2p/12D3KooWSYjt4v1exWDMeN7SA4m6tDxGVNmi3cCP3zzcW2c5pN4E/p2p-circuit/p2p/<YOUR_PEER_ID>
  1. Send message via aqua send:
bash
aqua send <TARGET_PEER_ID> "hello via relay"
  1. Check unread messages:
bash
aqua inbox list --unread
aqua inbox watch --once --mark-read --json

Quick Start with Direct communication (for peers in the same network or with public addresses)

  1. Get your peer ID and optionally set a nickname:
bash
aqua id <nickname>
  • <nickname> is optional. If omitted, the cmd only prints the peer ID and your information. If provided, the nickname will be updated
  1. check your direct multiaddrs for sharing:
bash
aqua serve --dryrun

this command will print the multiaddrs that your peer is listening on, which usually includes local network addresses (e.g., /ip4/192.168.x.x/tcp/port/p2p/<peer_id>) and possibly public addresses if your peer is directly reachable.

  1. Start serve for listening and message handling:
bash
aqua serve

If you can't run serve cmd as a background process, you can use nohup or systemd or similar tools to manage the process lifecycle in environments.

  1. Send a contact invite using the other's address and include one of your own dialable addresses:
bash
aqua contacts invite "<TARGET_PEER_ADDR>" --address "<YOUR_PEER_ADDR>" --verify
  • --verify is only recommended for trust establishment, but requires out-of-band confirmation of the peer's identity. If accepted, both contacts become verified. Omit --verify to establish tofu.
  • <TARGET_PEER_ADDR> is other's direct address. Could be printed by serve --dryrun.
  • <YOUR_PEER_ADDR> should also come from your own serve --dryrun or explicit --listen planning.
  1. On the receiver side, inspect and accept the pending invite:
bash
aqua contacts invites
aqua contacts invite accept <REQUESTER_PEER_ID> --address "<YOUR_PEER_ADDR>"
  1. Send:
bash
aqua send <PEER_ID> "hello"
  1. Check unread messages:
bash
aqua inbox list --unread
aqua inbox watch --once --mark-read --json

Sending Message Operations

Send message:

bash
aqua send <PEER_ID> "message content"

Use explicit topic/content type when needed:

bash
aqua send <PEER_ID> "{\"event\":\"greeting\"}" \
  --content-type application/json

Reply threading metadata (optional):

bash
aqua send <PEER_ID> "reply text" --reply-to <MESSAGE_ID>

Send message in a session (optional, for dialogue semantics):

bash
aqua send <PEER_ID> "message content" --session-id <SESSION_ID>

Group Operations

Create and inspect groups:

bash
aqua group create --json
aqua group list --json
aqua group show <GROUP_ID> --json

Manage invites and membership:

bash
aqua group invite <GROUP_ID> <PEER_ID> --json
aqua group invites --json
aqua group invite accept <GROUP_ID> --json
aqua group invite reject <GROUP_ID> --json

Send a group message:

bash
aqua group send <GROUP_ID> "hello group" --json

Notes:

  • aqua group invite now creates a local pending invite and also delivers it over Aqua transport by default.
  • Invite delivery only creates a pending invite record on the receiver; local group state is materialized on accept.
  • Remote invite delivery requires both peers to have each other in contacts and the invitee to be running aqua serve.
  • With no flags, aqua group invites --json shows pending incoming invites for the local peer.
  • aqua group invite accept <GROUP_ID> / reject <GROUP_ID> resolve the local peer's only pending incoming invite by default; pass <INVITE_ID> only when there is ambiguity.
  • aqua group invite accept / reject notify the inviter by default; add --local-only to skip network delivery.
  • Current aqua group send is sender-side fanout to known members.
  • Incoming group messages use topic group.message.v1.
  • For agent mailbox processing, filter group traffic with:
bash
aqua inbox list --topic group.message.v1 --unread --json
aqua inbox watch --topic group.message.v1 --mark-read --json

Check inbox and outbox

Inbox (received):

bash
aqua inbox list --unread --limit 20
aqua inbox list --limit 20
aqua inbox list --from-peer-id <PEER_ID> --limit 20
aqua inbox watch --once --mark-read --json
aqua inbox watch --batch-window 30s --json
  • aqua inbox list --unread is a pure unread filter and does not change message state.
  • Use aqua inbox mark-read <MESSAGE_ID>... for explicit acknowledgement.
  • Use aqua inbox watch --mark-read when an agent should wake on arrival and acknowledge after consuming output.

Outbox (sent):

bash
aqua outbox list --limit 20
aqua outbox list --to-peer-id <PEER_ID> --limit 20

JSON Mode (Agent-Friendly)

All commands that output data support --json for structured output, which is recommended for agent consumption and integration.

bash
aqua id --json
aqua contacts list --json
aqua send <PEER_ID> "hello" --json
aqua inbox list --limit 10 --json
aqua inbox watch --once --mark-read --json

Agent Mailbox Patterns

Heartbeat / polling mode:

bash
aqua inbox list --unread --json

Hot wake mode:

bash
aqua inbox watch --once --mark-read --json

Busy but do-not-disturb-every-message mode:

bash
aqua inbox watch --batch-window 30s --mark-read --json

Webhook-driven mode for agents that can supervise serve as a daemon:

bash
aqua serve --webhook https://agent-runtime.example/hooks/aqua

Notes:

  • watch emits unread messages only.
  • Without --mark-read, emitted messages remain unread.
  • --batch-window trades a little latency for fewer wakeups.
  • --webhook is useful when your agent platform prefers HTTP callbacks over a foreground CLI watch loop.
  • Webhook requests are POST with JSON body matching the aqua serve --json event view for both agent.data.push and agent.contact.push.
  • Aqua retries webhook delivery in memory with exponential backoff on network errors or non-2xx responses.
  • Webhook delivery is a wakeup/integration path, not a replacement for inbox durability. Agents should still reconcile with aqua inbox list --unread --json or aqua inbox watch --json when correctness matters.

Webhook-Driven Agent Integration

Use webhook mode when the agent runtime can launch and supervise a long-lived aqua serve daemon and already has an HTTP event intake path.

Recommended pattern:

  1. Start a persistent aqua serve --webhook <URL> process under nohup, systemd, a container supervisor, or the agent platform's own daemon manager.
  2. Treat webhook callbacks as wakeup signals for new inbound traffic.
  3. Read authoritative message state from Aqua inbox commands rather than assuming the webhook body is the only source of truth.
  4. Mark messages read only after successful agent-side consumption.

Example:

bash
nohup aqua serve --relay-mode auto \
  --relay /dns4/aqua-relay.mistermorph.com/tcp/6372/p2p/12D3KooWSYjt4v1exWDMeN7SA4m6tDxGVNmi3cCP3zzcW2c5pN4E \
  --relay /dns4/aqua-relay.mistermorph.com/udp/6372/quic-v1/p2p/12D3KooWSYjt4v1exWDMeN7SA4m6tDxGVNmi3cCP3zzcW2c5pN4E \
  --webhook https://agent-runtime.example/hooks/aqua >/tmp/aqua-serve.log 2>&1 &

Contacts Management

List contacts:

bash
aqua contacts list

Inspect pending incoming contact invites:

bash
aqua contacts invites

Show all local contact invite history:

bash
aqua contacts invites --all --json

Invite a contact:

bash
aqua contacts invite "<PEER_ADDR>" --address "<YOUR_ADDR>" --verify

Accept a pending contact invite:

bash
aqua contacts invite accept <REQUEST_ID|PEER_ID> --address "<YOUR_ADDR>"

Reject a pending contact invite:

bash
aqua contacts invite reject <REQUEST_ID|PEER_ID>

Remove contact:

bash
aqua contacts del <PEER_ID>

Verify contact (mark as trusted after out-of-band confirmation):

bash
aqua contacts verify <PEER_ID>

Troubleshooting Checklist

  • contact not found:
    • Run aqua contacts list
    • Inspect pending requests with aqua contacts invites
    • Create or accept a contact invite with aqua contacts invite ... / aqua contacts invite accept ...
  • Cannot dial peer:
    • Confirm peer process is running: aqua serve
    • Re-check copied address and /p2p/<peer_id> suffix
    • For diagnosis only, try explicit dial once: aqua hello <PEER_ID> --address <PEER_ADDR>
  • Message not visible:
    • Check receiver terminal running aqua serve
    • Inspect receiver inbox: aqua inbox list --limit 20
Show full SKILL.md (745 more words)Show less

Common Connection Errors and Causes

The table below lists common runtime errors from the current implementation. Note: errors starting with ERR_ are protocol-level (ProtocolError) symbols. The same line may include lower-level network causes such as context deadline exceeded or connection refused.

1) General operations
Typical error (example)Likely cause
ERR_UNAUTHORIZED: peer is not in contactsTarget peer is not in local contacts. Create and accept a contact invite first with aqua contacts invite ... and aqua contacts invite accept ....
ERR_UNAUTHORIZED: peer trust_state=conflicted / ...=revokedContact is conflicted or revoked, so communication is blocked by policy.
ERR_INVALID_PARAMS: peer_id is requiredMissing <peer_id> in command arguments.
ERR_INVALID_PARAMS: invalid peer_id: ...<peer_id> is not a valid libp2p peer id.
ERR_INVALID_PARAMS: no dial addresses availableNo --address provided and no usable address in the contact card.
ERR_INVALID_CONTACT_CARD: multiaddr "... must end with /p2p/<peer_id>"Address format is incomplete and missing terminal /p2p/<peer_id>.
ERR_INVALID_CONTACT_CARD: multiaddr "... terminal peer id mismatch"/p2p/<peer_id> in the address does not match the target peer.
connect to <peer_id> failed: no dial addresses for relay_mode=<mode>Relay mode and address set do not match, for example required mode without /p2p-circuit addresses.
connect to <peer_id> failed: direct(...): ...; relay(...): ...Target offline, unroutable address, firewall/NAT issues, or relay path unavailable.
open hello stream: ... / open rpc stream: ...Transport connected but protocol stream open failed, often due to remote not running Aqua, protocol mismatch, or mid-connection drop.
ERR_PEER_ID_MISMATCH: remote peer mismatch ...Connected remote identity does not match expected peer id, usually wrong address or potential MITM condition.
ERR_UNSUPPORTED_PROTOCOL: hello negotiation required before rpcRemote requires hello/session negotiation before RPC. Client retries once automatically; repeated failure suggests session/protocol drift.
ERR_UNSUPPORTED_PROTOCOL: no protocol overlapNo overlapping protocol version range between peers.
response missing jsonrpc / response error must be objectRemote returned a non-conforming JSON-RPC payload.
2) Message handling (aqua serve)
Typical error (example)Likely cause
invalid --log-level "..." (supported: debug, info, warn, error)Invalid global log level flag.
invalid --relay-mode "..." (supported: auto, off, required)Invalid relay mode flag value.
`invalid AQUA_RELAY_PROBE="..." (supported: 1true
create libp2p host: ...Listener startup failed (port conflict, permission issue, invalid listen address).
create libp2p host: default listen failed (...); fallback listen failed (...)Both default and fallback listen address sets failed to bind.
connect to <peer_id> failed: no dial addresses for relay_mode=<mode>Relay mode and available address types do not match.
connect to <peer_id> failed: direct(...): ...; relay(...): ...Dial attempts failed on both direct and relay paths.
open rpc stream: ...Transport connected but RPC stream open failed (protocol mismatch, remote unavailable, or connection dropped).
read rpc response: ...RPC stream read timed out or was closed by remote.
ERR_PAYLOAD_TOO_LARGE: rpc request exceeds limit / ... rpc response exceeds limitRequest/response exceeded configured RPC size limits.
ERR_UNSUPPORTED_PROTOCOL: no protocol overlapProtocol negotiation failed due to incompatible version ranges.
ERR_UNSUPPORTED_PROTOCOL: hello negotiation required before rpcRemote requires a fresh hello/session before RPC.
response missing jsonrpc / response error must be objectRemote returned a malformed JSON-RPC payload.
invalid relay address "...": ...--relay value is not a valid relay multiaddr or is missing required parts.
relay address "..." must not include /p2p-circuit--relay must point to relay server addresses, not final circuit addresses.
relay peer_id <id> matches local peer_id; use a dedicated relay identity ...Local node is accidentally configured as its own relay identity. Use a separate relay identity/data dir.
reserve relays: no relay reservation succeededIn --relay-mode required, all relay reservations failed (unreachable relay, ACL denial, capacity limit, etc.).
3) Group operations (aqua group)
Typical error (example)Likely cause
group_id is required / invite_id is requiredRequired argument is missing or empty.
group not found: <group_id>Group does not exist in local state.
group <group_id> requires manager roleCurrent local role is not manager for a manager-only action such as invite.
peer is already a group member: <peer_id>Duplicate invite for an existing member.
group member limit reached: <n>Group has reached max member capacity.
invite not found: <invite_id>Invite id does not exist in that group.
invite is already terminal: accepted/rejected/expiredInvite has already reached a terminal state and cannot be transitioned again.
invite expiredInvite TTL has passed.
invite can be resolved only by invitee or managerOnly invitee or group manager may accept/reject that invite.
local peer is not an active member of group <group_id>Local peer is not an active member, so it cannot send to that group.
failure: peer_id=<id> err=... (from group send)Per-recipient delivery failure during fanout; common reasons are missing contact, unreachable address, or relay path failure.

Trust Practice

Use --verify only after out-of-band fingerprint/identity confirmation.

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

Files

SKILL.md and 129 other files (scripts) in the repository root of quailyquaily/aqua.

  • SKILL.md
  • .github/workflows/release.yml
  • .gitignore
  • .goreleaser.yaml
  • AGENTS.md
  • LICENSE
  • README.md
  • aqua/contact_card.go
  • aqua/contact_card_test.go
  • aqua/contact_request.go
  • aqua/contact_request_test.go
  • aqua/errors.go
  • aqua/file_store.go
  • aqua/file_store_test.go
  • aqua/group_control.go
  • aqua/group_control_test.go
  • aqua/group_types.go
  • aqua/identity.go
  • … and 112 more

Open the folder on GitHubat commit 610f889

Compare with similar skills

Aqua Communication 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.

Aqua Communication compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Aqua Communication this skillquailyquaily/aqua258—~4.7kAutomated safety check: NotesApache-2.0
Agent Email Inboxviclafouch/meme-studio1102 repos~10kAutomated safety check: WarnNone
Agentmailsundial-org/awesome-openclaw-skills6631 repos~1.5kAutomated safety check: WarnNone
Watcher Creatorasheshgoplani/agent-deck1.1k—~2.7kAutomated safety check: PassMIT
E2a Doctortokencanopy/e2a193—~994Automated safety check: PassApache-2.0
Outreachagentsickn33/agentic-awesome-skills47k1 repos~4.1kAutomated safety check: PassMIT

Similar skills

  • Agent Email Inbox

    viclafouch/meme-studio

    A skill your agent uses when setting up an email inbox for an AI agent (Moltbot, Clawdbot, or similar) - configuring inbound email, webhooks, tunneling for local development, and implementing…

    110 GitHub starsUsed in 2 repos~10k tokens
    Backend & APIsAuto-check: warnings
  • Agentmail

    sundial-org/awesome-openclaw-skills

    API-first email platform designed for AI agents. An agent skill from sundial-org/awesome-openclaw-skills.

    663 GitHub starsUsed in 1 repo~1.5k tokens
    Backend & APIsAuto-check: warnings
  • Watcher Creator

    asheshgoplani/agent-deck

    Guide for creating agent-deck watchers conversationally. An agent skill from asheshgoplani/agent-deck.

    1.1k GitHub stars~2.7k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • E2a Doctor

    tokencanopy/e2a

    A skill your agent uses when an existing e2a MCP connection, inbox, custom domain, protection policy, webhook, or message delivery is failing or unclear.

    193 GitHub stars~994 tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Outreachagent

    sickn33/agentic-awesome-skills

    Operate reply-aware cold outbound email workflows for AI agents with inboxes, contacts, templates, pacing, approvals, webhooks, and delivery metrics.

    47k GitHub starsUsed in 1 repo~4.1k tokens
    Backend & APIsAuto-check passed
  • Email Connector

    ericrisco/rsc-harness

    A skill your agent uses when wiring server code to send transactional or bulk email via Resend, SendGrid, or Postmark: a provider-agnostic sendEmail() seam, idempotent retries, 100-cap batches with…

    180 GitHub stars~3.1k tokensUpdated yesterday
    Backend & APIsAuto-check passed

Questions about Aqua Communication

What does Aqua Communication do?

Aqua is a CLI-first message tool for AI agents. An agent skill from quailyquaily/aqua. Aqua Communication is an agent skill from quailyquaily/aqua. Aqua is a CLI-first message tool for AI agents.

When should I use Aqua Communication?

Aqua Communication fits situations like: tasks that involve Email management; tasks that involve Webhooks.

How do I install Aqua Communication in Claude Code?

Run `npx skills add quailyquaily/aqua --skill aqua-communication -a claude-code`. Or copy the skill folder (the quailyquaily/aqua repository) into .claude/skills/aqua-communication in your project. Claude Code loads it when a task matches its description.

How do I install Aqua Communication in Codex?

Run `npx skills add quailyquaily/aqua --skill aqua-communication -a codex`. Or copy the skill folder (the quailyquaily/aqua repository) into .agents/skills/aqua-communication in your project. Codex loads it when a task matches its description.

Can I use Aqua Communication 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 quailyquaily/aqua --skill aqua-communication -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/aqua-communication, .gemini/skills/aqua-communication, .github/skills/aqua-communication and .opencode/skills/aqua-communication in your project.

What does Aqua Communication need to run?

Going by SKILL.md and its folder, Aqua Communication needs Go for the scripts in its folder and the command-line tools its instructions call (curl and bash).

Does Aqua Communication access the network?

SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Aqua Communication safe to install?

Our automated static check of SKILL.md found notes only (runs commands with sudo), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Aqua Communication use?

Aqua Communication is published under the Apache-2.0 licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Aqua Communication use?

About 4.7k tokens (SKILL.md is roughly 19k 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 Aqua Communication?

Skills that share tags, products or a category with Aqua Communication: Agent Email Inbox (viclafouch/meme-studio, 110 stars), Agentmail (sundial-org/awesome-openclaw-skills, 663 stars), Watcher Creator (asheshgoplani/agent-deck, 1.1k stars) and E2a Doctor (tokencanopy/e2a, 193 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Aqua Communication?

quailyquaily (a GitHub organization) maintains it in quailyquaily/aqua, which has 258 GitHub stars. The repository was last updated on March 24, 2026.

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