К основному содержанию
скилл CX Codex

cyrus-setup-endpoint — скилл для Claude Code: что делает

Настраивает публичный вебхук-эндпоинт для агента Cyrus через ngrok, туннель Cloudflare или собственный домен. Пригодится для приёма событий из Linear, Slack и GitHub.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add cyrusagents/cyrus --skill cyrus-setup-endpoint -a claude-code
Открыть на GitHub

Что делает cyrus-setup-endpoint

Скилл по шагам настраивает публичный адрес для локального сервера Cyrus на порту 3456. На выбор предлагаются три варианта туннелирования: бесплатный статический домен ngrok, постоянный Cloudflare Tunnel или собственный HTTPS-адрес. В конфигурационный файл ~/.cyrus/.env записывается переменная CYRUS_BASE_URL.

Главная особенность процесса — защита секретов. Агенту строго запрещено читать или открывать ~/.cyrus/.env стандартными инструментами чтения файлов, чтобы ключи не попали в контекст диалога. Вместо этого все токены ngrok и Cloudflare переносятся в конфиг только через потоки ввода или буфер обмена в командной строке Bash.

Заодно скилл выставляет параметры LINEAR_DIRECT_WEBHOOKS=true и CYRUS_HOST_EXTERNAL=true. Это необходимо для прямой проверки подписей вебхуков от внешних сервисов при автономном размещении. Без запущенного туннеля входящие вебхуки до сервера не дойдут.

Какие задачи решает

  • пробросить локальный сервер Cyrus в интернет для приёма вебхуков
  • создать конфигурацию ngrok со статическим бесплатным доменом
  • подключить Cloudflare Tunnel без утечки токена в контекст чата
  • включить прямую проверку подписей вебхуков от Linear, GitHub и Slack

Примеры запросов агенту

  • Настрой эндпоинт для вебхуков Cyrus через ngrok
  • Сконфигурируй внешний адрес Cyrus через Cloudflare Tunnel
  • Пропиши мой собственный домен в CYRUS_BASE_URL для вебхуков

Как установить cyrus-setup-endpoint

1Через Skills CLI (Vercel)

npx skills add cyrusagents/cyrus --skill cyrus-setup-endpoint -a claude-code

2Вручную: положить файлы

~/.claude/skills/cyrus-setup-endpoint/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/cyrus-setup-endpoint/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора18

cyrus-setup Пошагово настраивает self-hosted агента Cyrus для Claude Code, связывая его с GitHub, Linear и Slack. Запускает фонового ассистента для решения задач. CX Codex +1 1 200установок cyrus-setup-claude-auth Скилл прописывает учётные данные Claude в ~/.cyrus/.env, чтобы Cyrus запускал ИИ-сессии. Пригодится при первом запуске или смене аккаунта. CX Codex +1 1 100установок cyrus-setup-linear Создаёт OAuth-приложение Linear и прописывает его ключи в конфиг Cyrus, чтобы агент получал вебхуки и отвечал на issues. CX Codex +1 1 100установок cyrus-setup-prerequisites Проверяет Node.js, jq и gh CLI, ставит пакет cyrus-ai и готовит каталог ~/.cyrus перед настройкой Cyrus. CX Codex +1 1 000установок cyrus-setup-github Скилл настраивает gh CLI и git, чтобы Cyrus создавал ветки, коммиты и пул-реквесты, а по желанию — отвечал на @упоминания в комментариях. CX Codex +1 1 000установок cyrus-setup-launch Скилл проверяет готовность окружения агента Cyrus, выводит сводку подключений и запускает фоновый процесс через pm2 или systemd. CX Codex +1 997установок google Ищет сведения в интернете через WebSearch и открывает нужные страницы через WebFetch. Пригодится для проверки текущих фактов и исследования темы. CX Codex +1 931установок cyrus-setup-slack Настраивает интеграцию Cyrus со Slack через приложение из готового манифеста. Нужен, когда агент должен отвечать на сообщения в каналах Slack. CX Codex +1 905установок

Похожие

linear-release-setup linear Помогает настроить пайплайны Linear Release в GitHub Actions, GitLab CI или CircleCI. Проводит по шагам от выбора модели веток до добавления секретов. CX Codex +1 15 200установок sync-health-monitor davila7 Слэш-команда проверяет здоровье синхронизации GitHub и Linear: лимиты API, вебхуки, задержки, ошибки. Пригодится, когда задачи перестали доезжать. 121установок linear-tickets stablyai Скилл ведёт задачи Linear через CLI Orca: берёт тикет, двигает его по статусам, закрывает ссылкой на PR и комментарием. CX Codex +1 4 600установок pp-linear Matt Van Horn Управляет задачами Linear из терминала, включая локальный поиск и сводки по циклам. Пригодится для очереди задач, проверки дублей и планирования спринта. CX Codex +1 615установок groove-utilities-task-analyse andreadellacorte Собирает задачи из бэкенда проекта и раскладывает их по статусам, чтобы вечером было чем заполнить дневную память. CX Codex +1 588установок groove-utilities-task-list andreadellacorte Показывает активные задачи из настроенного бэкенда: что в работе, что готово к старту, что заблокировано. Удобно в начале дня. CX Codex +1 577установок

Рядом в теме «Настройка агента: память, контекст, субагенты»

Всё по теме «Настройка агента: память, контекст, субагенты» →

Вопросы о cyrus-setup-endpoint

Как установить cyrus-setup-endpoint в Claude Code?

Выполните команду npx skills add cyrusagents/cyrus --skill cyrus-setup-endpoint -a claude-code. Также можно вручную поместить файл спецификации в ~/.claude/skills/cyrus-setup-endpoint/SKILL.md.

Что делает скилл cyrus-setup-endpoint?

Он настраивает публичный URL-адрес для Cyrus через ngrok, Cloudflare Tunnel или личный домен. Скилл прописывает адрес и порт 3456 в ~/.cyrus/.env, чтобы принимать вебхуки от сторонних сервисов.

Как скилл обеспечивает безопасность API-токенов?

Инструкция запрещает модели читать файлы из папки ~/.cyrus/ в контекст диалога. Все токены авторизации передаются в конфиг исключительно через команды Bash из буфера обмена или скрытого ввода терминала.

Исходный текст

SKILL.md · Apache-2.0
---
name: cyrus-setup-endpoint
description: Configure the public webhook endpoint for Cyrus — ngrok, Cloudflare Tunnel, or custom URL.
---

**CRITICAL: Never use `Read`, `Edit`, or `Write` tools on `~/.cyrus/.env` or any file inside `~/.cyrus/`. Use only `Bash` commands (`grep`, `printf >>`, etc.) to interact with env files — secrets must never be read into the conversation context.**

# Setup Endpoint

Configures a public URL so Linear (and other integrations) can send webhooks to your Cyrus instance.

## Step 1: Check Existing Configuration

```bash
grep -E '^CYRUS_BASE_URL=' ~/.cyrus/.env 2>/dev/null
```

If `CYRUS_BASE_URL` is already set, inform the user:

> Webhook endpoint already configured: `<value>`
> To reconfigure, remove `CYRUS_BASE_URL` from `~/.cyrus/.env` and re-run this skill.

Skip to Step 4 (write port/webhooks if missing).

## Step 2: Choose Endpoint Method

Ask the user:

> **How will you expose Cyrus to the internet for webhooks?**
>
> 1. **ngrok** (recommended — every free account includes one static domain that persists across restarts)
> 2. **Cloudflare Tunnel** (permanent, requires Cloudflare account)
> 3. **Own URL** (you already have a public URL/domain)

**Important:** ngrok's free tier includes a permanent static domain — do NOT tell the user this is a paid feature or that URLs change on restart. Every free ngrok account gets one static domain at https://dashboard.ngrok.com/domains.

## Step 3: Configure Endpoint

### Option 1: ngrok

#### 3a. Check if ngrok is installed

```bash
which ngrok
```

If not installed, provide install instructions:

**macOS:**
```bash
brew install ngrok
```

**Linux:**
```bash
curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok-v3-stable-linux-amd64.tgz | sudo tar xvz -C /usr/local/bin
```

#### 3b. Guide ngrok domain setup

Instruct the user:

> ngrok provides a free static domain so your URL doesn't change between restarts.
>
> 1. Sign up or log in at https://dashboard.ngrok.com
> 2. Go to https://dashboard.ngrok.com/domains
> 3. Copy your free static domain (e.g., `your-name-here.ngrok-free.app`)
> 4. Go to https://dashboard.ngrok.com/get-started/your-authtoken and copy your authtoken

Ask the user to provide:
- Their ngrok domain
- Their ngrok authtoken

**CRITICAL: The authtoken is a secret. Use clipboard-to-file commands.**

#### 3c. Write ngrok configuration

Write the ngrok config so it can be started with `ngrok start cyrus`:

```bash
mkdir -p ~/.config/ngrok
```

Then write `~/.config/ngrok/ngrok.yml` (merge with existing if present):

```yaml
version: 3
agent:
  authtoken: <token>
endpoints:
  - name: cyrus
    url: <domain>
    upstream:
      url: 3456
```

For the authtoken, use a clipboard-to-file approach:

**macOS:**
```bash
# User copies authtoken, then runs:
NGROK_TOKEN=$(pbpaste) && cat > ~/.config/ngrok/ngrok.yml << EOF
version: 3
agent:
  authtoken: $NGROK_TOKEN
endpoints:
  - name: cyrus
    url: <domain>
    upstream:
      url: 3456
EOF
```

**Universal fallback:**
```bash
read -s -p "Paste your ngrok authtoken: " NGROK_TOKEN && cat > ~/.config/ngrok/ngrok.yml << EOF
version: 3
agent:
  authtoken: $NGROK_TOKEN
endpoints:
  - name: cyrus
    url: <domain>
    upstream:
      url: 3456
EOF
echo " ✓ Saved"
```

#### 3d. Write CYRUS_BASE_URL

```bash
printf 'CYRUS_BASE_URL=https://%s\n' "<domain>" >> ~/.cyrus/.env
```

Where `<domain>` is the ngrok domain the user provided (e.g., `your-name-here.ngrok-free.app`).

Inform the user:

> To start ngrok, run: `ngrok start cyrus`
> Run this in a separate terminal before starting Cyrus.

### Option 2: Cloudflare Tunnel

Ask the user for:
- Their Cloudflare Tunnel token
- Their tunnel hostname (e.g., `cyrus.yourdomain.com`)

**Token is a secret — use clipboard-to-env:**

**macOS:**
```bash
printf 'CLOUDFLARE_TOKEN=%s\n' "$(pbpaste)" >> ~/.cyrus/.env
```

**Universal fallback:**
```bash
read -s -p "Paste your Cloudflare token: " val && printf 'CLOUDFLARE_TOKEN=%s\n' "$val" >> ~/.cyrus/.env && echo " ✓ Saved"
```

Then write the base URL (not a secret — agent can write directly):

```bash
printf 'CYRUS_BASE_URL=https://<hostname>\n' >> ~/.cyrus/.env
```

### Option 3: Own URL

Ask the user for their URL. Validate it starts with `https://`.

```bash
printf 'CYRUS_BASE_URL=%s\n' "<url>" >> ~/.cyrus/.env
```

## Step 4: Write Common Config

Ensure these are present in `~/.cyrus/.env` (add only if missing):

```bash
grep -q '^CYRUS_SERVER_PORT=' ~/.cyrus/.env 2>/dev/null || printf 'CYRUS_SERVER_PORT=3456\n' >> ~/.cyrus/.env
grep -q '^LINEAR_DIRECT_WEBHOOKS=' ~/.cyrus/.env 2>/dev/null || printf 'LINEAR_DIRECT_WEBHOOKS=true\n' >> ~/.cyrus/.env
grep -q '^CYRUS_HOST_EXTERNAL=' ~/.cyrus/.env 2>/dev/null || printf 'CYRUS_HOST_EXTERNAL=true\n' >> ~/.cyrus/.env
```

`LINEAR_DIRECT_WEBHOOKS=true` enables direct Linear webhook signature verification. `CYRUS_HOST_EXTERNAL=true` enables direct Slack and GitHub webhook signature verification. Both are required for self-hosted setups where webhooks come directly from the services (not forwarded through CYHOST).

## Completion

> ✓ Webhook endpoint configured: `<CYRUS_BASE_URL>`
> ✓ Server port: 3456
> ✓ Direct webhooks: enabled

© cyrusagents · Apache-2.0 · cyrusagents/cyrus

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой