# Agent Reach Skill Registration System and Supported Platforms Explained

> Discover Agent Reach's skill registration system and how it enables AI agents to access 13 platforms. Learn about supported directories like OpenClaw and Claude Code.

- Repository: [Pnant/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
- Tags: architecture
- Published: 2026-06-17

---

**Agent Reach exposes its 13-platform internet access capabilities to AI agents via a file-based skill registration system that installs SKILL.md and reference documents into OpenClaw, Claude Code, or generic .agents directories.**

Agent Reach is a Python library and CLI tool that routes AI-agent requests to 13 internet platforms including Twitter/X, Reddit, YouTube, and GitHub. The **skill registration system** allows the tool to expose its capabilities to agent platforms by installing structured documentation into specific skill directories. Understanding this registration flow and the supported platform channels is essential for integrating Agent Reach into your AI agent workflow.

## How Skill Registration Works

The skill registration system operates through pure file operations, copying packaged resources from the `agent_reach/skill/` directory into agent-specific folders. This "glue-layer" approach avoids external commands and ensures compatibility across different agent platforms.

### Installing Skills for Agent Platforms

When you run the install command, the CLI invokes `_install_skill()` from [`agent_reach/cli.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/cli.py) to set up the skill files:

```bash
python -m agent_reach.cli skill --install

```

The installation process follows these steps:

1. Locates the packaged skill resources in `agent_reach/skill/`
2. Reads [`SKILL.md`](https://github.com/Panniantong/Agent-Reach/blob/main/SKILL.md) with locale-awareness via `_skill_resource_name()`
3. Iterates over a priority list of known skill directories:
   - `~/.agents/skills` (generic)
   - `~/.openclaw/skills` (OpenClaw)
   - `~/.claude/skills` (Claude Code)
4. Creates `agent-reach/` in the first existing directory and writes [`SKILL.md`](https://github.com/Panniantong/Agent-Reach/blob/main/SKILL.md)
5. Copies the `references/` folder containing per-platform command guides

### The SKILL.md File and References

The [`SKILL.md`](https://github.com/Panniantong/Agent-Reach/blob/main/SKILL.md) file serves as the machine-readable contract that tells agents what capabilities Agent Reach provides. According to the source code in [`agent_reach/skill/SKILL_en.md`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/skill/SKILL_en.md), this document describes the available commands and routing capabilities. The `references/` subdirectory contains supplemental documentation for each of the 13 supported platforms.

### Uninstalling Skills

To remove the skill from all agent directories, the `_uninstall_skill()` function deletes the entire `agent-reach` directory from every known skill location:

```bash
python -m agent_reach.cli skill --uninstall

```

This leaves no trace in the agent's skill path, ensuring clean removal across OpenClaw, Claude Code, and generic .agents installations.

## Supported Platforms and Channel Architecture

Agent Reach supports 13 internet platforms, each implemented as a **channel** that inherits from a common base class. The architecture ensures consistent behavior across disparate platforms while allowing platform-specific optimizations.

### The Channel Base Class

All channels inherit from the abstract `Channel` class defined in [`agent_reach/channels/base.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/base.py). This base provides:

- `ordered_backends(config)` – Respects user overrides like `twitter_backend=excli`
- `check(config)` – Runs lightweight probes via `agent_reach.probe` and sets `self.active_backend`

Every concrete channel must implement four key methods: `can_handle`, `read`, `search`, and `check`. The test suite in [`tests/test_channel_contracts.py`](https://github.com/Panniantong/Agent-Reach/blob/main/tests/test_channel_contracts.py) enforces this API contract across all implementations.

### The 13 Supported Platforms

Each platform lives in its own file within `agent_reach/channels/`:

| Platform | File | Description |
|----------|------|-------------|
| **YouTube** | [`youtube.py`](https://github.com/Panniantong/Agent-Reach/blob/main/youtube.py) | Video platform with subtitle retrieval via `yt-dlp` |
| **Bilibili** | [`bilibili.py`](https://github.com/Panniantong/Agent-Reach/blob/main/bilibili.py) | Chinese video site using `bili-cli` |
| **XiaoHongShu** | [`xiaohongshu.py`](https://github.com/Panniantong/Agent-Reach/blob/main/xiaohongshu.py) | Social media platform preferring OpenCLI backend |
| **Xiaoyuzhou** | [`xiaoyuzhou.py`](https://github.com/Panniantong/Agent-Reach/blob/main/xiaoyuzhou.py) | Podcast platform with transcript extraction |
| **Twitter/X** | [`twitter.py`](https://github.com/Panniantong/Agent-Reach/blob/main/twitter.py) | Micro-blogging supporting `twitter-cli` and `opencli` |
| **Reddit** | [`reddit.py`](https://github.com/Panniantong/Agent-Reach/blob/main/reddit.py) | Discussion forums via OpenCLI or `rdt-cli` |
| **LinkedIn** | [`linkedin.py`](https://github.com/Panniantong/Agent-Reach/blob/main/linkedin.py) | Professional networking platform |
| **V2EX** | [`v2ex.py`](https://github.com/Panniantong/Agent-Reach/blob/main/v2ex.py) | Chinese tech community with API-based fetch |
| **Xueqiu** | [`xueqiu.py`](https://github.com/Panniantong/Agent-Reach/blob/main/xueqiu.py) | Stock information platform |
| **GitHub** | [`github.py`](https://github.com/Panniantong/Agent-Reach/blob/main/github.py) | Code hosting wrapping the `gh` CLI |
| **RSS** | [`rss.py`](https://github.com/Panniantong/Agent-Reach/blob/main/rss.py) | Feed reader using `feedparser` |
| **Exa Search** | [`exa_search.py`](https://github.com/Panniantong/Agent-Reach/blob/main/exa_search.py) | General web search via Exa AI |
| **Web** | [`web.py`](https://github.com/Panniantong/Agent-Reach/blob/main/web.py) | Generic page retrieval via `curl` and Jina AI reader |

## Routing and Backend Selection

The `Core` class in [`agent_reach/core.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/core.py) serves as the dispatcher, mapping URLs and queries to the appropriate channel based on pattern matching.

### The Core Router

When processing requests, `Core` inspects the input URL or query string and selects the appropriate channel. For example, YouTube URLs route to the YouTube channel, while generic searches route to Exa Search or Web channels.

```python
from agent_reach.core import Core

core = Core()
transcript = core.read("https://www.youtube.com/watch?v=abcd1234")
print(transcript[:200])  # First 200 characters of subtitles

```

The router automatically calls `channel.check()` to verify backend availability before executing the request.

### Health Checks with Doctor

The `doctor` command in [`agent_reach/doctor.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/doctor.py) runs health checks for all channels, reporting which backend is active for each:

```bash
python -m agent_reach.cli doctor --json

```

This outputs a JSON map like `{ "twitter": {"status":"ok","backend":"twitter-cli"}, ... }`, informing the skill's routing table which backends are available for use.

## Practical Usage Examples

### Routing Cross-Platform Searches

To search across multiple platforms simultaneously:

```python
from agent_reach.core import Core

core = Core()
result = core.search("open source licensing trends")
print(result)  # Uses Exa for web search and GitHub for code references

```

### Checking Channel Health

Verify all backends are configured correctly:

```bash
python -m agent_reach.cli doctor

```

This iterates through all 13 channels and reports which `active_backend` is selected for each platform.

## Summary

- **Agent Reach** provides a file-based skill registration system that installs [`SKILL.md`](https://github.com/Panniantong/Agent-Reach/blob/main/SKILL.md) and reference documents into `~/.agents/skills`, `~/.openclaw/skills`, or `~/.claude/skills`.
- The **13 supported platforms** include Twitter/X, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu, Xiaoyuzhou, LinkedIn, V2EX, Xueqiu, RSS, Exa Search, and generic Web.
- Each platform implements a **channel** class with `can_handle`, `read`, `search`, and `check` methods defined in [`agent_reach/channels/base.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/base.py).
- The **Core router** automatically selects appropriate channels based on URL patterns or query intent.
- The **doctor** command validates backend availability and informs the skill's routing decisions.

## Frequently Asked Questions

### How do I install the Agent Reach skill for Claude Code?

Run `python -m agent_reach.cli skill --install`. The `_install_skill()` function in [`agent_reach/cli.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/cli.py) automatically detects the presence of `~/.claude/skills` and copies [`SKILL.md`](https://github.com/Panniantong/Agent-Reach/blob/main/SKILL.md) along with the `references/` directory into `~/.claude/skills/agent-reach/`.

### What happens if multiple agent platforms are installed?

The installation process checks a priority list: generic `.agents`, then OpenClaw, then Claude Code. It installs to the first existing directory found. To install across all platforms simultaneously, you would need to create the missing directories before running the install command.

### Which backends are required for the YouTube channel?

The YouTube channel in [`agent_reach/channels/youtube.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/youtube.py) retrieves subtitles using `yt-dlp` as its primary backend. If `yt-dlp` is not available, the channel's `check()` method will report the backend as unavailable, and the `Core` router will handle the failure gracefully.

### Can I add custom platforms to Agent Reach?

While the current architecture supports 13 fixed platforms, you could extend the system by creating a new file in `agent_reach/channels/` that inherits from the `Channel` base class in [`agent_reach/channels/base.py`](https://github.com/Panniantong/Agent-Reach/blob/main/agent_reach/channels/base.py) and implements the required `can_handle`, `read`, `search`, and `check` methods. The `Core` router would automatically pick up the new channel if it follows the existing naming conventions.