Configuring Horizon
coollabsio/coolify
A skill your agent uses whenever the user mentions Horizon by name in a Laravel context.
AAMP (Agent-to-Agent Mail Protocol) via aamp-cli. An agent skill from larksuite/aamp.
$ npx skills add larksuite/aamp --skill aamp -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install larksuite/aamp aamp --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/larksuite/aamp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/aamp .claude/skills/aamp && rm -rf skills-srcUse ~/.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/
Install the "aamp" agent skill from https://github.com/larksuite/aamp/tree/main/skills/aamp into .claude/skills/aamp/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aamp", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/larksuite/aamp/tree/main/skills/aampType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add larksuite/aamp --skill aamp -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install larksuite/aamp aamp --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/larksuite/aamp.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/aamp .agents/skills/aamp && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "aamp" agent skill from https://github.com/larksuite/aamp/tree/main/skills/aamp into .agents/skills/aamp/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aamp", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add larksuite/aamp --skill aamp -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install larksuite/aamp aamp --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/larksuite/aamp.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/aamp .cursor/skills/aamp && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "aamp" agent skill from https://github.com/larksuite/aamp/tree/main/skills/aamp into .cursor/skills/aamp/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aamp", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/larksuite/aamp.git --path skills/aamp--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add larksuite/aamp --skill aamp -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install larksuite/aamp aamp --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/larksuite/aamp.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/aamp .gemini/skills/aamp && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "aamp" agent skill from https://github.com/larksuite/aamp/tree/main/skills/aamp into .gemini/skills/aamp/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aamp", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install larksuite/aamp aampInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add larksuite/aamp --skill aamp -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/larksuite/aamp.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/aamp .github/skills/aamp && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "aamp" agent skill from https://github.com/larksuite/aamp/tree/main/skills/aamp into .github/skills/aamp/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aamp", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add larksuite/aamp --skill aamp -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install larksuite/aamp aamp --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/larksuite/aamp.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/aamp .opencode/skills/aamp && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "aamp" agent skill from https://github.com/larksuite/aamp/tree/main/skills/aamp into .opencode/skills/aamp/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aamp", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
aampAAMP (Agent-to-Agent Mail Protocol) via aamp-cli. An agent skill from larksuite/aamp.
Aamp is an agent skill from larksuite/aamp. AAMP (Agent-to-Agent Mail Protocol) via aamp-cli. Use this skill when the agent needs to register a mailbox, listen for incoming AAMP mail, inspect a task thread, complete a pairing URL, dispatch a task, or reply with task.result / task.helpneeded. Prefer the CLI over hand-written HTTP requests.
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Backend & APIs. The repository describes itself as: Mailbox-native protocol and SDKs for asynchronous agent collaboration over email. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 7fd7508. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
nodenpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Aamp loads about 2.2k tokens when it runs. Until then it costs about 76 tokens; SKILL.md has 692 words of instructions outside code blocks.
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.
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.
The full file from larksuite/aamp at commit 7fd7508, republished under its MIT licence (© larksuite). 692 words, ~2,215 tokens.
.claude/skills/aamp/SKILL.md (or your agent's skills folder).Use aamp-cli as the default control plane for AAMP. Do not handcraft
/.well-known/aamp, aamp.mailbox.register, aamp.mailbox.inbox, or
aamp.mailbox.send requests unless you are explicitly debugging the service.
Prefer the first option that works:
aamp-cli ...node /absolute/path/to/packages/aamp-cli/dist/index.js ...npm --prefix /absolute/path/to/packages/aamp-cli run dev -- ...When working inside this monorepo, option 3 is the safest fallback because
packages/aamp-cli/dist may not exist yet.
~/.aamp/cli/profiles/<profile>.json already exists and status succeeds.register only when you need a brand new mailbox. Use login or
init when you already have email + smtpPassword.listen in a long-lived terminal session.
In the current CLI, inbox is a catch-up reconcile command, not a rich
inbox browser.taskId and sender email from the
received event or thread history.card-query first.aamp://connect?... URL, or gives you a
mailbox plus a pair_code, complete pairing with aamp-cli pair --url
before sending normal task.dispatch mail. If only a bare code is provided,
ask for the target mailbox because the code is not useful by itself.Register a new mailbox:
aamp-cli register --profile "${AAMP_PROFILE:-default}" --host "${AAMP_HOST:-https://meshmail.ai}" --slug "${AAMP_SLUG:-agent}"Use existing credentials instead of registering:
aamp-cli login --profile "${AAMP_PROFILE:-default}" --email "agent@meshmail.ai" --password "smtp-password"Validate the profile and transport:
aamp-cli status --profile "${AAMP_PROFILE:-default}"Notes:
register saves the mailbox under ~/.aamp/cli/profiles/<profile>.json.status verifies SMTP and shows whether the client is on WebSocket or
polling fallback.When an Agent, bridge, plugin, or human gives you pairing material, consume it from your current mailbox profile. Recognize all of these as pairing requests:
aamp://connect?mailbox=agent@meshmail.ai&pair_code=abc123mailbox=agent@meshmail.ai plus pair_code=abc123If you have split fields, construct the equivalent URL before calling the CLI:
aamp-cli pair \
--profile "${AAMP_PROFILE:-default}" \
--url "aamp://connect?mailbox=agent@meshmail.ai&pair_code=abc123"For a bare code without a mailbox, stop and ask for the mailbox. Do not guess.
For platform bridges, pass dispatch-context rules that the receiver should enforce for this sender:
aamp-cli pair \
--profile "${AAMP_PROFILE:-default}" \
--url "aamp://connect?mailbox=agent@meshmail.ai&pair_code=abc123" \
--dispatch-context-rule "source=feishu" \
--dispatch-context-rule "project_key=proj_123,proj_456"Pairing sends a pair.request email. The receiver validates the one-time
pair_code, stores this profile's mailbox as an allowed sender, and destroys
the code. The receiver must then send pair.respond with the same task ID:
completed for success, or rejected plus X-AAMP-ErrorMsg for a failure
reason. Pairing URLs expire after five minutes unless the producer documents a
different TTL.
After aamp-cli pair prints the generated taskId, use listen, inbox, or
thread --task-id <taskId> if the user needs confirmation from pair.respond.
When running inside OpenClaw with aamp-openclaw-plugin, the agent can also
produce its own QR code for the AAMP App or another runtime by calling the
aamp_pairing_code tool, or the user can run /aamp-pair.
Primary receive loop:
aamp-cli listen --profile "${AAMP_PROFILE:-default}"Catch up recent mail after downtime:
aamp-cli inbox --profile "${AAMP_PROFILE:-default}" --limit 20Inspect a known task thread:
aamp-cli thread --profile "${AAMP_PROFILE:-default}" --task-id "<task-id>"Use listen when you need the CLI to print inbound task.dispatch,
task.result, task.help_needed, card.query, card.response, and human
reply events in real time. Use thread to reconstruct context for a specific
task instead of guessing from partial logs.
Dispatch a new task:
aamp-cli dispatch \
--profile "${AAMP_PROFILE:-default}" \
--to "target@meshmail.ai" \
--title "Review PR #42" \
--body "Please review the linked patch and summarize risks." \
--priority highReply with a successful result:
aamp-cli result \
--profile "${AAMP_PROFILE:-default}" \
--to "sender@meshmail.ai" \
--task-id "<task-id>" \
--status completed \
--output "Implemented and verified."Reply with a rejection:
aamp-cli result \
--profile "${AAMP_PROFILE:-default}" \
--to "sender@meshmail.ai" \
--task-id "<task-id>" \
--status rejected \
--error "Missing repository access."Ask for help while blocked:
aamp-cli help \
--profile "${AAMP_PROFILE:-default}" \
--to "sender@meshmail.ai" \
--task-id "<task-id>" \
--question "Which environment should I use?" \
--reason "The task mentions production data, but no target environment is specified." \
--option staging \
--option productionCancel a previously dispatched task:
aamp-cli cancel \
--profile "${AAMP_PROFILE:-default}" \
--to "target@meshmail.ai" \
--task-id "<task-id>" \
--body "No longer needed."Search the agent directory:
aamp-cli directory-search --profile "${AAMP_PROFILE:-default}" --query "reviewer"Ask another node for its card:
aamp-cli card-query --profile "${AAMP_PROFILE:-default}" --to "target@meshmail.ai" --body "What can you do?"Update your own directory profile:
aamp-cli directory-update \
--profile "${AAMP_PROFILE:-default}" \
--summary "Code review, debugging, and incident summaries" \
--card-file "/absolute/path/to/card.md"If a card clearly advertises local registered commands, use aamp-cli node
instead of free-form dispatch.
Call a registered command node:
aamp-cli node call \
--profile "${AAMP_PROFILE:-default}" \
--target "worker@meshmail.ai" \
--command "git.apply" \
--title "Apply patch" \
--stream full \
--arg repo=service-a \
--attachment patch_file=/absolute/path/to/fix.diffRules:
card-query and the returned card body.--arg key=value.--attachment slot=/absolute/path.Run this sequence before falling back to raw HTTP debugging:
aamp-cli status --profile "${AAMP_PROFILE:-default}"
aamp-cli inbox --profile "${AAMP_PROFILE:-default}" --limit 20Use direct HTTP only when diagnosing the CLI or server itself. In that case:
GET /.well-known/aamp verifies discovery.aamp.mailbox.register plus aamp.mailbox.credentials verifies
registration flow.aamp.mailbox.send failures usually mean SMTP delivery or credential
issues.401 usually means the saved profile is stale and should be recreated.© larksuite, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/aamp of larksuite/aamp.
Open the folder on GitHubat commit 7fd7508
Aamp 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Aamp this skilllarksuite/aamp | 120 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Configuring Horizoncoollabsio/coolify | 63k | 4 repos | ~898 | Automated safety check: Pass | MIT | |
| Nestjs Best Practicesrolling-scopes/rsschool-app | 10k | 6 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Sub2API AdminWei-Shaw/sub2api | 44k | 1 repos | ~717 | Automated safety check: Pass | LGPL-3.0 | |
| Firecrawl Build Onboardingfirecrawl/firecrawl | 190k | 1 repos | ~1.4k | Automated safety check: Notes | ISC | |
| Obsidian BasesAtmosphere/atmosphere | 3.8k | 22 repos | ~3.2k | Automated safety check: Pass | Apache-2.0 |
coollabsio/coolify
A skill your agent uses whenever the user mentions Horizon by name in a Laravel context.
rolling-scopes/rsschool-app
NestJS best practices and architecture patterns for building production-ready applications.
Wei-Shaw/sub2api
Manages a Sub2API deployment from the command line: accounts, redeem and invitation codes, groups, proxies, imports, exports and raw admin API calls.
firecrawl/firecrawl
Gets Firecrawl working in a project: signs you in through the browser, saves FIRECRAWL_API_KEY to .env and picks the first SDK or REST path.
Atmosphere/atmosphere
Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries.
coollabsio/coolify
ACTIVATE when the user works on authentication in Laravel. An agent skill from coollabsio/coolify.
larksuite/aamp
AAMP (Agent-to-Agent Mail Protocol) — gives this agent an email identity and lets it exchange structured tasks with other AAMP nodes via email.
Categories
AAMP (Agent-to-Agent Mail Protocol) via aamp-cli. An agent skill from larksuite/aamp. Aamp is an agent skill from larksuite/aamp. AAMP (Agent-to-Agent Mail Protocol) via aamp-cli.
Aamp fits situations like: the agent needs to register a mailbox; listen for incoming AAMP mail; inspect a task thread; complete a pairing URL.
Run `npx skills add larksuite/aamp --skill aamp -a claude-code`. Or copy the skill folder (skills/aamp in larksuite/aamp) into .claude/skills/aamp in your project. Claude Code loads it when a task matches its description.
Run `npx skills add larksuite/aamp --skill aamp -a codex`. Or copy the skill folder (skills/aamp in larksuite/aamp) into .agents/skills/aamp in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add larksuite/aamp --skill aamp -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/aamp, .gemini/skills/aamp, .github/skills/aamp and .opencode/skills/aamp in your project.
Going by SKILL.md and its folder, Aamp needs the command-line tools its instructions call (node and npm).
SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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.
Aamp is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Aamp: Configuring Horizon (coollabsio/coolify, 63k stars), Nestjs Best Practices (rolling-scopes/rsschool-app, 10k stars), Sub2API Admin (Wei-Shaw/sub2api, 44k stars) and Firecrawl Build Onboarding (firecrawl/firecrawl, 190k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
larksuite (a GitHub organization) maintains it in larksuite/aamp, which has 120 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on July 29, 2026.
Source: larksuite/aamp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.