---
name: cli-skill-collector
description: "Detect installed CLI coding tools (Claude Code, Codex, Cursor, Copilot, Cline and more), search GitHub for matching agent skills, and install them to the detected tools via OmniRoute's built-in APIs."
---
<!-- generated by src/lib/agentSkills/generator.ts; manual edits will be overwritten -->

## Overview

Detect installed CLI coding tools (Claude Code, Codex, Cursor, Copilot, Cline and more), search GitHub for matching agent skills, and install them to the detected tools via OmniRoute's built-in APIs.

## Quick install

```bash
npm install -g omniroute   # or: npx omniroute
omniroute --version
```

## Subcommands

### `autostart`

**Example:**

```bash
omniroute autostart
```

### `autostart enable`

**Example:**

```bash
omniroute autostart enable
```

### `autostart disable`

**Example:**

```bash
omniroute autostart disable
```

### `autostart toggle`

**Example:**

```bash
omniroute autostart toggle
```

### `autostart status`

**Example:**

```bash
omniroute autostart status
```

### `config`

Show or update CLI tool configuration

**Example:**

```bash
omniroute config
```

### `config list`

List all CLI tools and config status

**Flags:**

- `--json`

**Example:**

```bash
omniroute config list
```

### `config get <tool>`

Show current config for a tool

**Flags:**

- `--json`

**Example:**

```bash
omniroute config get <tool>
```

### `config set <tool>`

Write config for a tool

**Flags:**

- `--model <model>`
- `--non-interactive`
- `--yes`

**Example:**

```bash
omniroute config set <tool>
```

### `config validate <tool>`

Validate config format without writing

**Flags:**

- `--model <model>`
- `--json`

**Example:**

```bash
omniroute config validate <tool>
```

### `config opencode`

Generate OpenCode config (alias for 

**Flags:**

- `--model <model>`
- `--non-interactive`
- `--yes`

**Example:**

```bash
omniroute config opencode
```

### `config lang`

**Example:**

```bash
omniroute config lang
```

### `config get`

**Flags:**

- `--json`

**Example:**

```bash
omniroute config get
```

### `config set <code>`

**Flags:**

- `--force`

**Example:**

```bash
omniroute config set <code>
```

### `config list`

**Flags:**

- `--json`

**Example:**

```bash
omniroute config list
```

### `env`

Show and manage environment variables

**Example:**

```bash
omniroute env
```

### `env show`

Show current environment variables

**Flags:**

- `--json`

**Example:**

```bash
omniroute env show
```

### `env get <key>`

Get a single environment variable

**Example:**

```bash
omniroute env get <key>
```

### `env set <key> <value>`

Set an environment variable (current session only)

**Example:**

```bash
omniroute env set <key> <value>
```

### `setup`

**Flags:**

- `--password <value>`
- `--add-provider`
- `--provider <id>`
- `--provider-name <name>`
- `--api-key <value>`
- `--default-model <model>`
- `--provider-base-url <url>`
- `--test-provider`
- `--non-interactive`
- `--list`

**Example:**

```bash
omniroute setup
```

### `update`

**Flags:**

- `--check`
- `--apply`
- `--changelog`
- `--dry-run`
- `--no-backup`
- `--yes`

**Example:**

```bash
omniroute update
```

<!-- skill:custom-start -->
<!-- Preserved curated content from #6294 (skills/cli-skill-collector authored workflow) -->

# /cli-skill-collector — Agent Skill Collector

Discover and install agent skills for your coding CLI tools — all through OmniRoute's built-in APIs.

This skill teaches you how to:

1. **Detect** which coding CLIs are installed on this machine
2. **Search** GitHub for relevant agent skills (SKILL.md repos)
3. **Install** discovered skills to the detected coding tools

No separate Skill Collector app needed — OmniRoute's own CLI detection + GitHub search handles everything.

---

## Step 1 — Detect installed coding tools

Query OmniRoute's CLI tool detection to find which coding agents are installed:

```bash
curl -H "Authorization: Bearer $OMNIROUTE_API_KEY" http://localhost:20128/api/skills/collect/detect
```

This returns:

- Every CLI tool in OmniRoute's catalog (`CLI_TOOL_IDS`: claude, codex, cursor, copilot, opencode, cline, kilocode, hermes, hermes-agent, openclaw, droid, continue, qwen, windsurf, devin, antigravity, etc.)
- Whether each is **installed** and **runnable**
- GitHub skills **matched** to your installed tools (scored by relevance)

Example response:

```json
{
  "tools": {
    "codex": { "installed": true, "runnable": true, "command": "codex" },
    "claude": { "installed": true, "runnable": true, "command": "claude" },
    "cursor": { "installed": false, "runnable": false }
  },
  "installedToolIds": ["codex", "claude"],
  "matchedSkills": [
    { "toolId": "codex", "repo": "user/skill-codex-xxx", "score": 0.85, "stars": 120 },
    { "toolId": "claude", "repo": "user/claude-agent-rules", "score": 0.92, "stars": 340 }
  ],
  "totalSkills": 85
}
```

---

## Step 2 — Review matched skills

For each installed tool, the API returns relevant GitHub repos that contain SKILL.md or agent configuration files. Use the `score` field to prioritize:

| Score | Recommendation                                  |
| ----- | ----------------------------------------------- |
| 0.80+ | Excellent — well-maintained, high stars, active |
| 0.60+ | Good — relevant with decent quality             |
| 0.40+ | Fair — may need review                          |
| <0.40 | Low quality — skip                              |

You can also browse manually:

```bash
curl -H "Authorization: Bearer $OMNIROUTE_API_KEY" \
  "http://localhost:20128/api/github-skills?minStars=3&maxResults=50"
```

---

## Step 3 — Install skills to detected tools

Install a chosen skill to one or more detected tools:

```bash
curl -X POST http://localhost:20128/api/skills/collect/install \
  -H "Authorization: Bearer $OMNIROUTE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "repoName": "user/skill-codex-xxx",
    "targets": ["codex", "claude"],
    "description": "Agent skill for coding workflows"
  }'
```

This plans the installation path for each target tool:

- **claude** → `~/.claude/skills/{category}/`
- **codex** → `~/.codex/skills/{category}/`
- **hermes** → `~/AppData/Local/hermes/skills/{category}/`
- **opencode** → `~/.opencode/skills/{category}/`
- **gemini** → `~/.gemini/skills/{category}/`

The actual file sync (cloning from GitHub and copying SKILL.md) is done by the agent using standard `curl` + `cp` commands.

---

## Step 4 — Verify installation

After installing, verify the skill is in place:

```bash
# For Codex
ls -la ~/.codex/skills/imported-github/*/SKILL.md

# For Claude Code
ls -la ~/.claude/skills/imported-github/*/SKILL.md

# For Hermes (Windows)
ls -la ~/AppData/Local/hermes/skills/imported-github/*/SKILL.md
```

Also re-check detection:

```bash
curl -H "Authorization: Bearer $OMNIROUTE_API_KEY" http://localhost:20128/api/skills/collect/detect
```

---

## Quick start (full workflow)

```bash
AUTH_HEADER="Authorization: Bearer $OMNIROUTE_API_KEY"

# 1. Detect
DETECT=$(curl -s -H "$AUTH_HEADER" http://localhost:20128/api/skills/collect/detect)

# 2. Pick top matched skill for first installed tool
TOOL=$(echo "$DETECT" | python3 -c "import sys,json;d=json.load(sys.stdin);print(d['installedToolIds'][0] if d['installedToolIds'] else '')")
SKILL=$(echo "$DETECT" | python3 -c "import sys,json;d=json.load(sys.stdin);ms=d.get('matchedSkills',[]);print(ms[0]['repo'] if ms else '')")

if [ -n "$TOOL" ] && [ -n "$SKILL" ]; then
  # 3. Install
  curl -s -X POST http://localhost:20128/api/skills/collect/install \
    -H "$AUTH_HEADER" \
    -H "Content-Type: application/json" \
    -d "{\"repoName\": \"$SKILL\", \"targets\": [\"$TOOL\"]}"
  echo "Installed $SKILL to $TOOL"
fi
```

---

## Notes

- OmniRoute must be running locally on port 20128 (default) — see `docs/frameworks/SKILLS.md` for custom-port setups.
- The `/api/skills/collect/*` and `/api/github-skills` endpoints require **management-scoped authentication** the same way every other `/api/skills/*` route does: a dashboard session, the loopback CLI token, or an API key with the `manage` scope (`requireManagementAuth()`). Auth is only bypassed when the server has no login/API-key requirement configured at all.
- This replaces the standalone Skill Collector Python app — all logic is now inside OmniRoute.
<!-- skill:custom-end -->
