← [Раздел](README.md) · [Главная](../README.md)

# Lab 03 — Свой Skill

## Цель

Написать минимальный **skill** `SKILL.md`, чтобы агент подключал его по `description`, и выполнить workflow из skill на учебной задаче.

## Предварительно

- [05 — Skills](../05-skills/README.md)
- Lab 02 завершена
- Пример ECC: `ECC/.cursor/skills/tdd-workflow/SKILL.md`

## Время

~75 минут.

---

## Шаг 1 — Структура каталога

```bash
mkdir -p .cursor/skills/lab-api-check/SKILL.md
# правильнее:
mkdir -p .cursor/skills/lab-api-check
touch .cursor/skills/lab-api-check/SKILL.md
```

---

## Шаг 2 — Содержимое SKILL.md

```markdown
---
name: lab-api-check
description: Проверка учебного HTTP handler — статус-коды, JSON, тесты. Используй при добавлении или изменении API endpoints в lab проекте.
---

# Lab API Check

## When to Activate

- Пользователь добавляет endpoint
- Пользователь просит «проверить API» в учебном репо

## Steps

1. Найди handler и маршрут
2. Проверь: корректный status code (200/400/404)
3. Ответ JSON с Content-Type
4. Добавь или обнови тест request/response
5. Запусти тесты проекта

## Output

- Таблица: endpoint | method | status | test file
- Список рисков (валидация входа)

## Do Not

- Не добавлять auth без запроса
- Не коммитить
```

---

## Шаг 3 — Учебный endpoint

Добавьте минимальный HTTP сервер (выберите стек репо), например `GET /health` → `{"ok": true}`.

Без skill — только код. Со skill — явный запрос:

```text
Добавь GET /health и проверь по skill lab-api-check
```

или

```text
Используй skill lab-api-check для нового endpoint /version
```

---

## Шаг 4 — Проверка активации

В новой сессии:

```text
Добавь POST /echo который возвращает тело запроса
```

Не упоминайте skill. Если агент **не** подхватил — улучшите `description` (ключевые слова: endpoint, API, handler).

---

## Шаг 5 — Сравнение с command

Создайте `.cursor/commands/api-check.md` на 5 строк, дублирующий вызов skill.

| Артефакт | Когда удобнее |
|----------|---------------|
| Skill | Много шагов, условия |
| Command | Быстрый вызов `/api-check` |

Запишите в журнал.

---

## Шаг 6 — Commit

```bash
git add .cursor/skills/lab-api-check/
git commit -m "lab03: add lab-api-check skill"
```

---

## Критерии успеха

- [ ] Валидный frontmatter `name` + `description`
- [ ] Агент выдал таблицу endpoint из skill
- [ ] Есть тест на endpoint
- [ ] Журнал: улучшение description после неудачной активации

---

## Самопроверка

1. Что в skill заставляет агента «увидеть» его?
2. Чем skill длиннее command?
3. Где лежит skill в ECC для сравнения стиля?
4. Как проверить активацию без имени skill в промпте?

---

## Дальше

→ [Lab 04 — Hooks](lab-04-hooks.md)  
← [Lab 02](lab-02-rules.md)
