agentleFS
crisandrewscrisandrews/ClawCode/skills/channels/SKILL.md

channels

Skill64 starsChanged 2 months agoMITView on GitHub

Show messaging channel status (WhatsApp, Telegram, Discord, iMessage, Slack, Fakechat) and the launch command to load them. Triggers on /agent:channels, /agent:channels list, /agent:channels status, /agent:channels launch, "ver canales", "estado de canales", "cómo lanzo con whatsapp", "channel status", "messaging status".

The file

We split this skill into the rules it gives an agent

9 rules. About 0 are common, 0 are distinctive, and 9 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 9

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    If any channels show ❌ under Installed and the user is new, remind: "Install a channel with /agent:messaging <name>"

    line 28
  2. Very specific:

    If not found, respond: *"I don't track a channel called <name>.

    line 34
  3. Very specific:

    If the entry has a runtime field, surface it — see Runtime warnings.

    line 46
  4. Very specific:

    When runtime.problem is true, do NOT report the channel as healthy.

    line 52
  5. Very specific:

    Call channels_detect({ format: "launch" }) (with the appropriate flags from the user's command)

    line 67
  6. Very specific:

    If the user included --skip-permissions, ADD a warning above the command:

    line 71
  7. Very specific:

    Do NOT try to install or authenticate channels from this skill.

    line 82
  8. Very specific:

    Do NOT lie about active state — the tool says ❓ unknown when it can't tell.

    line 83
  9. Very specific:

    Do NOT generate a launch command with --skip-permissions unless the user explicitly asked for it.

    line 84

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Channels — messaging status + launch

Diagnose messaging channel plugins and give the user the exact command to load them. This skill does NOT install channels (use /agent:messaging) or authenticate them (per-channel skills like /whatsapp:configure) — it reports state and hands back a launch command.

This is a CORE feature. See docs/channels.md for details.

Dispatch

User saysAction
/agent:channels or /agent:channels listCall channels_detect({ format: "table" }) and print card
/agent:channels status [<name>]Call channels_detect({ format: "json" }), filter by name if given, format single channel
/agent:channels launchCall channels_detect({ format: "launch" }) and print only the command
/agent:channels launch --with-installedCall with includeInstalledOnly: true — includes installed-but-not-authenticated
/agent:channels launch --skip-permissionsCall with skipPermissions: true — adds the dangerous flag to the command (warn the user)

List flow

  1. Call channels_detect({ format: "table" })
  2. Print the returned text verbatim — it already has the table, next-steps hints, the launch command, and a ⚠️ Runtime block when a channel server is up but not delivering inbound (see Runtime warnings below)
  3. If any channels show ❌ under Installed and the user is new, remind: "Install a channel with /agent:messaging <name>"

Status flow (single channel)

  1. Call channels_detect({ format: "json" })
  2. Find the entry where name matches (case-insensitive)
  3. If not found, respond: "I don't track a channel called <name>. Known channels: whatsapp, telegram, discord, imessage, slack, fakechat."
  4. Otherwise print a compact block:
📡 <label>
   kind:           <development|official|integration>
   installed:      <✅ | ❌>  (<detail>)
   authenticated:  <✅ | ❌ | ⏸️>  (<detail>)
   active:         <❓ | ❌>  (<detail>)
   next:           <setupHint>
  1. If the entry has a runtime field, surface it — see Runtime warnings.

Runtime warnings

The JSON entry may carry a runtime field read from the channel's live status.json (currently WhatsApp). When runtime.problem is true, the channel server is running but inbound is NOT reaching this session — the classic "I see 'typing…' on my phone but the agent never answers" failure, usually after an in-session update/reload or when a second session (interactive, service, or a still-alive scheduled-task session) holds the single-device lock.

When runtime.problem is true, do NOT report the channel as healthy. Lead with the warning, verbatim from runtime.detail, and then runtime.remediation if present. For example:

⚠️ WhatsApp inbound is NOT active in this session — another instance (PID <runtime.holderPid>) holds the single-device lock, so incoming messages go to that session, not this one.
Fix: <runtime.remediation>

Key runtime.status values: idle_other_instance (lock held by another session — the main one), logged_out (re-link needed), lock_error (filesystem/PID-file problem). Never tell the user to run /whatsapp:configure reset for idle_other_instance — it's a lock-ownership problem, not a link problem; the fix is to get down to one session. On claude-whatsapp ≥ 1.21 the waiting session takes over the lock automatically (within ~15 s of the holder exiting), so closing the extra session is enough; on older channel versions the waiting session stays idle forever and needs a full relaunch after the holder is closed. See claude-whatsapp docs/troubleshooting.md → "You see 'typing…' but get no reply".

Live voice setup

For attaching ClaudeLive to this existing agent, use /agent:live setup. channels_detect can describe launch flags after opt-in, but does not enable the bridge or configure credentials. /agent:live status distinguishes saved settings, running listener and native verification.

Launch flow

  1. Call channels_detect({ format: "launch" }) (with the appropriate flags from the user's command)
  2. Print the command in a code block
  3. Remind the user: "Preserve these channel arguments when preparing /agent:service install; it must receive the existing launcher arguments explicitly."

If the user included --skip-permissions, ADD a warning above the command:

⚠️ The --dangerously-skip-permissions flag pre-approves every tool call. Use only for background/service runs.

Response style

  • CLI / WebChat: full table
  • WhatsApp / Telegram / Discord: collapse to one line per channel using the icons, e.g. 📡 WhatsApp:✅✅❓ · Telegram:✅❌❌ · iMessage:✅✅❓. The full table is too wide for mobile.

Never

  • Do NOT try to install or authenticate channels from this skill. Redirect to /agent:messaging or the channel's own skill.
  • Do NOT lie about active state — the tool says ❓ unknown when it can't tell. Pass that through; the user can verify with /mcp or by sending a message.
  • Do NOT generate a launch command with --skip-permissions unless the user explicitly asked for it.

References

  • docs/channels.md — full reference
  • lib/channel-detector.ts — pure detection logic
  • skills/messaging/SKILL.md — channel installation
  • skills/service/SKILL.md — always-on, consumes the launch command

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.