# Создать skill

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

## Цель

**Создать свой skill** с нуля: от идеи до проверки в Cursor Agent.

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

- [Что такое skills](chto-takoe-skills.md)
- [Когда использовать skill](kogda-ispolzovat-skill.md)

## Время

**60–90 минут** (с одной тестовой задачей)

---

## Шаг 1: Собрать требования

Ответьте письменно:

1. **Purpose** — какой workflow автоматизируем?
2. **Target location** — project (`.cursor/skills/`) или user (`~/.cursor/skills/`)?
3. **Trigger** — когда агент должен включить skill?
4. **Domain knowledge** — что агент не знает без вас?
5. **Output format** — шаблон отчёта, commit message, структура PR?
6. **Existing patterns** — аналоги в ECC для копирования структуры?

---

## Шаг 2: Создать каталог

```bash
mkdir -p .cursor/skills/team-release/SKILL.md
# или отдельно:
mkdir -p .cursor/skills/team-release
touch .cursor/skills/team-release/SKILL.md
```

Имя каталога = kebab-case, совпадает с `name` в frontmatter.

---

## Шаг 3: Написать SKILL.md (минимальный шаблон)

```markdown
---
name: team-release
description: Use when preparing a release — changelog, version bump, tag. For this repo only.
---

# Team Release Workflow

## When to Activate

- User asks for release, version bump, or changelog
- Before creating git tag v*.*

## Prerequisites

- Main branch green CI
- No uncommitted secrets in diff

## Steps

1. Run `npm test` (or project test command) — must pass
2. Update CHANGELOG.md — section [Unreleased] → [X.Y.Z]
3. Bump version in package.json / pyproject.toml
4. Show summary; do NOT push or tag without explicit user request

## Checklist

- [ ] Tests green
- [ ] Changelog date and version match
- [ ] No unrelated files in diff

## Anti-patterns

- Do not force push
- Do not skip changelog «for patch»
```

---

## Шаг 4: Description — критично

Плохо:

```yaml
description: Release stuff
```

Хорошо:

```yaml
description: Use when preparing a release — changelog, semver bump, git tag. Project nazeebo.site release process.
```

Включите **глаголы и артефакты** (changelog, tag, semver).

---

## Шаг 5: Опциональные файлы

- `reference.md` — длинные таблицы env, URLs staging (без секретов).
- `scripts/smoke-test.sh` — если агент должен запускать фиксированную команду.
- `examples.md` — образец changelog entry.

---

## Шаг 6: Тест skill

1. **Новая** Agent-сессия.
2. Промпт: «Подготовь patch release 1.2.3 — follow team-release skill».
3. Проверьте: шаги, checklist, запрет push без запроса.
4. Если игнорирует — уточните description или вызовите `@team-release`.

---

## Шаг 7: Итерация

| Проблема | Fix |
|----------|-----|
| Не активируется | Расширить description synonyms |
| Лишние действия | Anti-patterns + «do NOT» |
| Пропуск шага | Numbered steps + checklist |
| Слишком длинный | Split reference.md |

ECC `skill-evolution` (продвинутое) — метрики health skills; на старте достаточно ручного ревью.

---

## User vs project skill

| | Project | User |
|---|---------|------|
| Командный release process | ✓ | |
| Личный «как я пишу commit body» | | ✓ |

Project skills **коммитьте** в git для shared workflow.

---

## Связь с create-skill (Cursor built-in)

Cursor имеет built-in skill `create-skill` в `~/.cursor/skills-cursor/` — можно попросить Agent «создай skill по шаблону create-skill». Ваш финальный файл всё равно проверьте вручную.

---

## Чеклист готовности skill

- [ ] `name` уникален в project + user
- [ ] `description` на английском (лучше для match) или bilingual
- [ ] Steps пронумерованы
- [ ] Checklist измерим
- [ ] Нет секретов
- [ ] Протестирован в новой сессии

---

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

1. Какие шесть вопросов на этапе сбора требований?
2. Где создать каталог project skill?
3. Почему description важнее длины тела skill?
4. Как протестировать skill изолированно?

## Дальше

→ [06 — Agents](../06-agents/README.md)
