Slack Browser Automation
vercel-labs/agent-browser
Drives the Slack web app with the agent-browser CLI to check unread channels, search, read channel details and extract information, with screenshots as evidence.
Reference for the dial CLI, which gives an agent a real phone number to send SMS, place AI voice calls and wait for inbound texts or verification codes.
$ npx skills add nanocoai/nanoclaw --skill dial-cli -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nanocoai/nanoclaw dial-cli --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/nanocoai/nanoclaw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/add-dial-tool/container-skills/dial-cli .claude/skills/dial-cli && 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 "dial-cli" agent skill from https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-dial-tool/container-skills/dial-cli into .claude/skills/dial-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dial-cli", 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/nanocoai/nanoclaw/tree/main/.claude/skills/add-dial-tool/container-skills/dial-cliType 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 nanocoai/nanoclaw --skill dial-cli -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nanocoai/nanoclaw dial-cli --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nanocoai/nanoclaw.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/add-dial-tool/container-skills/dial-cli .agents/skills/dial-cli && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "dial-cli" agent skill from https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-dial-tool/container-skills/dial-cli into .agents/skills/dial-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dial-cli", 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 nanocoai/nanoclaw --skill dial-cli -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nanocoai/nanoclaw dial-cli --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nanocoai/nanoclaw.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/add-dial-tool/container-skills/dial-cli .cursor/skills/dial-cli && 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 "dial-cli" agent skill from https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-dial-tool/container-skills/dial-cli into .cursor/skills/dial-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dial-cli", 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/nanocoai/nanoclaw.git --path .claude/skills/add-dial-tool/container-skills/dial-cli--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 nanocoai/nanoclaw --skill dial-cli -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nanocoai/nanoclaw dial-cli --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nanocoai/nanoclaw.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/add-dial-tool/container-skills/dial-cli .gemini/skills/dial-cli && 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 "dial-cli" agent skill from https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-dial-tool/container-skills/dial-cli into .gemini/skills/dial-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dial-cli", 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 nanocoai/nanoclaw dial-cliInstalls 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 nanocoai/nanoclaw --skill dial-cli -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/nanocoai/nanoclaw.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/add-dial-tool/container-skills/dial-cli .github/skills/dial-cli && 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 "dial-cli" agent skill from https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-dial-tool/container-skills/dial-cli into .github/skills/dial-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dial-cli", 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 nanocoai/nanoclaw --skill dial-cli -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install nanocoai/nanoclaw dial-cli --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nanocoai/nanoclaw.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/add-dial-tool/container-skills/dial-cli .opencode/skills/dial-cli && 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 "dial-cli" agent skill from https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-dial-tool/container-skills/dial-cli into .opencode/skills/dial-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dial-cli", 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.
dial-cliReference for the dial CLI, which gives an agent a real phone number to send SMS, place AI voice calls and wait for inbound texts or verification codes.
Dial is a communication service for AI agents, and its CLI wraps the REST API for texting, voice calls handled by an AI voice agent, number management and waiting on inbound events. In the NanoClaw sandbox described here, the account, number and credentials are already provisioned and the API key is injected at the network boundary, so the agent never asks for or reads a key.
Rather than listing flags, the skill tells the agent to run help for each new command before using it, and to pass the json option when it needs machine-readable output. For anything beyond local help it points to the published docs, including a single concatenated text file that can be searched with grep. If the CLI is missing, the agent reports an image installation problem and does not try to install it.
Read from SKILL.md and the folder at commit 66f0823. 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:
curlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
docs.getdial.aiAlso links to:
getdial.aiFrom 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.
Dial Phone CLI loads about 2k tokens when it runs. Until then it costs about 158 tokens; SKILL.md has 912 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 nanocoai/nanoclaw at commit 66f0823, republished under its MIT licence (© nanocoai). 912 words, ~2,042 tokens.
.claude/skills/dial-cli/SKILL.md (or your agent's skills folder).dial is the official CLI for Dial — a Communication Stack for AI Agents. It wraps the Dial REST API so you can send SMS, place voice calls handled by an AI voice agent, manage numbers, and wait for inbound events — all without writing HTTP code.
The first time the user asks you to "text someone," "call someone," "receive a code," or anything else phone-shaped, reach for dial.
You are running inside a pre-provisioned, ephemeral environment:
dial --help shows what's available here.If dial is somehow missing (command -v dial returns nothing), that is an installation bug in this image, not something for you to fix — report it to the operator ("the Dial CLI isn't installed in this container") rather than improvising an install.
This skill does not enumerate every flag. The CLI is the source of truth — when you encounter a verb you have not used in this session, run its --help first:
dial --help # available commands
dial <command> --help # flags + usage for a specific command
dial <command> <sub> --help # subcommand-level helpExamples worth running on first use: dial doctor --help, dial message --help, dial call --help, dial call get --help, dial wait-for --help.
Every command supports --json for machine-readable output — prefer it when piping into jq or parsing the result programmatically.
For anything beyond what --help shows on the local CLI, the canonical reference is the published docs. Two endpoints make this fast:
llms-full.txtA single concatenated markdown file of the whole docs site. Grep it directly for the keyword you care about:
curl -fsSL https://docs.getdial.ai/llms-full.txt | grep -i -B2 -A8 'whatsapp'
curl -fsSL https://docs.getdial.ai/llms-full.txt | grep -i -B1 -A5 'language'Use this when you want to know if Dial supports something, or which command / endpoint covers it — without reading the whole site.
sitemap.xml + per-page .mdWhen you need to read a page in detail, use the sitemap to discover URLs, then fetch the .md companion of any page — same content as the HTML page but plain markdown, faster to scan.
# 1. Discover available pages
curl -fsSL https://docs.getdial.ai/sitemap.xml | grep -oE 'https://docs\.getdial\.ai/[^<]+'
# 2. For any page like https://docs.getdial.ai/documentation/get-started/introduction
# fetch the .md companion:
curl -fsSL https://docs.getdial.ai/documentation/get-started/introduction.mdThe rule is one-to-one: every page at https://docs.getdial.ai/<path> has a markdown twin at https://docs.getdial.ai/<path>.md.
These are the verbs you will most often compose. Read the relevant .md page for the full story; the one-liners below are signposts.
dial message --to +14155550123 --body "..." (send-an-sms.md)dial typing start --to-number +14155550123; sending a message clears it natively, so start again between messages, and dial typing stop --to-number +14155550123 if you end up not sending. iMessage numbers display it; SMS numbers ignore it, so it's always safe to call (commands.md)dial call --to +14155550123 --outbound-instruction "..." then dial call get <id> once it ends. Add --voice-gender male|female to choose the agent's voice (default: female) (place-a-voice-call.md)dial number purchase --inbound-instruction "..." --explicit-programmatic-consent "<attestation>". --explicit-programmatic-consent is required: a short attestation that the account holder consented to provisioning programmatically. Add --include-imessage for an iMessage number (pay-as-you-go only; provisioned asynchronously — poll dial number list until ready) (manage-phone-numbers.md)dial number set +14155550123 --inbound-instruction "..." and/or --inbound-language es-ES and/or --nickname "Support line" (at least one flag; --nickname "" / --inbound-language "" clear). The inbound instruction is the system prompt the AI uses on calls into that number. The inbound language pins inbound calls to one language — unset, the AI detects the caller's language from their country prefix (alongside en-US). The nickname is a human-readable label for telling numbers apart (manage-phone-numbers.md)dial wait-for message.received -f channel=sms and parse the body (receive-inbound-sms.md)dial wait-for call.ended -f callId=<id>. Fires however the call ends — completed, failed, or cancelled — carrying the terminal status and a canceled flag, so the wait always resolves (stream-account-events.md)dial wait-for long-polls the Dial API directly, so it works here without any background daemon.
--json everywhere for parseable output.--from-number with this install's wired line (stated at the end of this file if the channel is set up). This sandbox has no saved default sender — defaultNumberId is null here — so an omitted selector fails outright. Never pick one from dial number list instead: on a multi-number account that list is ordered newest-first, which is unrelated to the line this install is wired to, so a number chosen from it reaches nobody and replies to it are dropped. If no line is stated below and the user hasn't named one, ask rather than guess.+14155550123). Reject anything else before calling Dial.message, call, number purchase) are not idempotent — on an ambiguous failure, list first to check before retrying.You run keyless — the gateway injects the credential, so neither error is something you can fix from here. A 403 blocked_by_policy means the operator chose not to give this agent Dial access: say so plainly and stop. A 401 means the operator's Dial credential is missing or invalid in the vault: tell the operator the Dial credential needs (re)connecting. In both cases stop and wait rather than retrying in a loop.
© nanocoai, 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 .claude/skills/add-dial-tool/container-skills/dial-cli of nanocoai/nanoclaw.
Open the folder on GitHubat commit 66f0823
Dial Phone CLI 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 |
|---|---|---|---|---|---|---|
| Dial Phone CLI this skillnanocoai/nanoclaw | 31k | — | ~2k | Automated safety check: Pass | MIT | |
| Slack Browser Automationvercel-labs/agent-browser | 44k | 1 repos | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| She Love Me863401402/she-love-me | 914 | 1 repos | ~1.3k | Automated safety check: Pass | MIT | |
| Claude To Imop7418/Claude-to-IM-skill | 2.9k | — | ~3.4k | Automated safety check: Notes | MIT | |
| Last30days CnJesseovo/last30days-skill-cn | 1.9k | — | ~2.4k | Automated safety check: Notes | MIT | |
| Huashu Wechat Imagealchaincyf/huashu-skills | 1.7k | 1 repos | ~2.4k | Automated safety check: Notes | MIT |
vercel-labs/agent-browser
Drives the Slack web app with the agent-browser CLI to check unread channels, search, read channel details and extract information, with screenshots as evidence.
863401402/she-love-me
Acquire, import, and analyze WeChat or QQ chat histories, including installing supported exporters, guiding required login or contact selection, converting exports, assessing relationship dynamics…
op7418/Claude-to-IM-skill
Bridge THIS Claude Code or Codex session to Telegram, Discord, Feishu/Lark, QQ, or WeChat so the user can chat with Claude from their phone.
Jesseovo/last30days-skill-cn
Research what Chinese internet users actually said in the last 30 days across Weibo, Xiaohongshu (RED), Bilibili, Zhihu, Douyin, WeChat public accounts, Baidu and Toutiao: engagement-weighted…
alchaincyf/huashu-skills
为微信公众号文章生成高质量配图。支持封面图(2.35:1)、正文插图(16:9/4:3)、信息图。提供两条路径:AI生成(视觉创意型)和HTML渲染(文字精确型)。当用户提到"公众号配图"、"公众号封面"、"文章配图"、"正文插图"、"公众号图片"时使用此技能。
supreme-gg-gg/instagram-cli
How to use Instagram CLI to interact with Instagram from the command line on behalf of a user.
nanocoai/nanoclaw
Installs or refreshes Iron Proxy and its Iron Control web console for NanoClaw, with a local Docker setup, database, credentials and a human approval bridge.
nanocoai/nanoclaw
Drives a web browser from the shell with the agent-browser CLI: open pages, read an element snapshot, click and fill by reference, grab text and screenshots.
nanocoai/nanoclaw
Installs or refreshes OneCLI as the gateway provider for NanoClaw, copying the adapter files, registering the provider and running the setup script.
nanocoai/nanoclaw
Guides a conversational migration from an OpenClaw install to NanoClaw v2, carrying over identity, channel credentials, scheduled tasks and workspace files.
nanocoai/nanoclaw
Wires up an additional phone number onto an already-installed Dial channel, so one NanoClaw install answers SMS and AI voice calls on more than one line.
nanocoai/nanoclaw
Adds a persistent wiki knowledge base to a NanoClaw group following Karpathy's LLM Wiki pattern, with folders, a tailored container skill and a CLAUDE.md section.
Categories
Reference for the dial CLI, which gives an agent a real phone number to send SMS, place AI voice calls and wait for inbound texts or verification codes. Dial is a communication service for AI agents, and its CLI wraps the REST API for texting, voice calls handled by an AI voice agent, number management and waiting on inbound events. In the NanoClaw sandbox described here, the account, number and credentials are already provisioned and the API key is injected at the network boundary, so the agent never asks for or reads a key.
Dial Phone CLI fits situations like: A user asks the agent to text or call someone; waiting for a one-time passcode or verification code sent by SMS; checking what the Dial platform can do before running a dial command.
Run `npx skills add nanocoai/nanoclaw --skill dial-cli -a claude-code`. Or copy the skill folder (.claude/skills/add-dial-tool/container-skills/dial-cli in nanocoai/nanoclaw) into .claude/skills/dial-cli in your project. Claude Code loads it when a task matches its description.
Run `npx skills add nanocoai/nanoclaw --skill dial-cli -a codex`. Or copy the skill folder (.claude/skills/add-dial-tool/container-skills/dial-cli in nanocoai/nanoclaw) into .agents/skills/dial-cli 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 nanocoai/nanoclaw --skill dial-cli -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dial-cli, .gemini/skills/dial-cli, .github/skills/dial-cli and .opencode/skills/dial-cli in your project.
Going by SKILL.md and its folder, Dial Phone CLI needs the command-line tools its instructions call (curl). Our summary lists: The dial CLI installed in the sandbox; A pre-provisioned Dial account and phone number.
SKILL.md names 2 domains. In commands or code: docs.getdial.ai; the agent is likely to contact it when it follows the instructions. As links in the text: getdial.ai. 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.
Dial Phone CLI is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 8.2k 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 Dial Phone CLI: Slack Browser Automation (vercel-labs/agent-browser, 44k stars), She Love Me (863401402/she-love-me, 914 stars), Claude To Im (op7418/Claude-to-IM-skill, 2.9k stars) and Last30days Cn (Jesseovo/last30days-skill-cn, 1.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
nanocoai (a GitHub organization) maintains it in nanocoai/nanoclaw, which has 30,883 GitHub stars. The repository holds 59 skills in this directory. The repository was last updated on October 6, 2026.
Source: nanocoai/nanoclaw on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.