# Навыки (Skills)

Skills — это компоненты уровня знаний в Claude Code, предоставляющие Claude специализированные знания и рекомендации в конкретных областях. В отличие от команд, которые требуют ручного вызова, Skills активируются автоматически в зависимости от контекста задачи.

## Что такое Skills?

Skills — это модули специализированных знаний, хранящиеся в файлах `SKILL.md`:

- **Автоматическая активация**: Claude автоматически использует подходящий Skill в зависимости от контекста задачи

- **Доменные знания**: предоставляют лучшие практики и рекомендации для конкретной области

- **Расширяемость**: можно создавать пользовательские Skills для специфических потребностей

- **Контекстная осведомлённость**: вызываются только в релевантных сценариях

### Skills vs Commands vs Agents

| Компонент | Способ вызова | Назначение |
|-----------|---------------|------------|
| **Commands** | Ручной вызов пользователем (`/command`) | Выполнение конкретных задач |
| **Skills** | Автоматическая активация | Предоставление доменных знаний |
| **Agents** | Делегированный вызов | Обработка сложных рабочих процессов |

## Использование встроенных Skills

Плагины Claude Code обычно включают несколько встроенных Skills. Когда ваша задача совпадает с описанием Skill, Claude автоматически его использует.

### Пример: Ревью кода

Когда вы говорите «Помоги проверить безопасность этого кода», если установлен плагин с Skill по безопасности, Claude автоматически применит знания этого Skill для проведения проверки.

### Просмотр доступных Skills

Skills обычно устанавливаются вместе с плагинами:

```bash
# Установка плагина (плагин может содержать несколько Skills)
/plugin install plugin-name@marketplace
```

## Создание пользовательских Skills

### Базовая структура

Простейший Skill требует только файла `SKILL.md`:

```bash
my-skill/
└── SKILL.md
```

### Формат SKILL.md

```markdown
---
name: Руководство по стилю кода
description: Используется, когда пользователь спрашивает о «стиле кода», «соглашениях об именовании», «форматировании кода» или обсуждает стандарты кода
version: 1.0.0
---

# Руководство по стилю кода

## Соглашения об именовании

- Переменные — camelCase
- Константы — UPPER_SNAKE_CASE
- Классы — PascalCase
- Приватные члены — с префиксом подчёркивания

## Правила форматирования

- Отступы — 2 пробела
- Длина строки не более 80 символов
- Использование завершающей запятой

## Лучшие практики

- Функция должна иметь единственную ответственность
- Избегайте глубокой вложенности
- Используйте осмысленные имена переменных
```

### Поля frontmatter

| Поле | Обязательное | Описание |
|------|--------------|----------|
| `name` | Да | Название Skill |
| `description` | Да | Описание условий активации (ключевое!) |
| `version` | Нет | Номер версии |

### Написание эффективного Description

Поле description определяет, когда Skill будет активирован, и должно содержать конкретные триггерные фразы:

**Хороший пример**:
```yaml
description: Используется, когда пользователь спрашивает о «создании hook», «добавлении PreToolUse hook», «валидации использования инструментов» или упоминает hook-события
```

**Плохой пример**:
```yaml
description: Руководство по hooks  # Слишком расплывчато
```

## Полная структура Skill

Для сложных Skills можно включать дополнительные ресурсы:

```bash
my-skill/
├── SKILL.md           # Основной документ знаний
├── references/        # Детальные справочные материалы
│   ├── patterns.md    # Паттерны проектирования
│   └── advanced.md    # Продвинутые приёмы
├── examples/          # Примеры кода
│   ├── basic.ts       # Базовый пример
│   └── advanced.ts    # Продвинутый пример
└── scripts/           # Вспомогательные скрипты
    └── validate.sh    # Скрипт валидации
```

### Ссылки на ресурсы

Ссылки на другие ресурсы в SKILL.md:

```markdown
---
name: Руководство по разработке API
description: Используется, когда пользователь спрашивает о «проектировании API», «REST-интерфейсах», «лучших практиках API»
version: 1.0.0
---

# Руководство по разработке API

Подробные паттерны проектирования API см. в @references/patterns.md

## Быстрый пример

См. @examples/basic.ts для базового использования
```

## Использование Skills в плагинах

### Структура директорий

Skills размещаются в директории `skills/` плагина:

```bash
my-plugin/
├── .claude-plugin/
│   └── plugin.json
├── commands/          # Уровень команд
├── agents/            # Уровень агентов
└── skills/            # Уровень знаний
    ├── code-style/
    │   └── SKILL.md
    └── api-docs/
        ├── SKILL.md
        └── references/
```

### Ссылка на Skill в команде

Команды могут явно ссылаться на знания Skill:

```markdown
---
description: Генерация API-документации по стандартам
argument-hint: [api-file]
---

Сгенерируй API-документацию для @$1.

Используй Skill api-docs, чтобы документация включала:
- Полное описание эндпоинтов
- Спецификации параметров
- Форматы ответов
- Коды ошибок
- Примеры использования
```

## Практические примеры

### Пример 1: Skill стандартов проекта

```markdown
---
name: Стандарты проекта
description: Используется, когда пользователь спрашивает о «структуре проекта», «организации файлов», «стандартах директорий»
version: 1.0.0
---

# Стандарты проекта

## Структура директорий

\`\`\`
src/
├── components/    # React-компоненты
├── hooks/         # Пользовательские Hooks
├── services/      # API-сервисы
├── utils/         # Утилиты
└── types/         # Типы TypeScript
\`\`\`

## Именование файлов

- Компоненты: PascalCase (например, `UserProfile.tsx`)
- Утилиты: camelCase (например, `formatDate.ts`)
- Константы: UPPER_SNAKE_CASE (например, `API_ENDPOINTS.ts`)

## Порядок импортов

1. Связанные с React
2. Сторонние библиотеки
3. Внутренние модули
4. Определения типов
5. Файлы стилей
```

### Пример 2: Skill Git-воркфлоу

```markdown
---
name: Git-воркфлоу
description: Используется, когда пользователь спрашивает о «стратегии ветвления», «стандартах коммитов», «Git-процессе»
version: 1.0.0
---

# Стандарты Git-воркфлоу

## Именование веток

- Функция: `feature/описание`
- Исправление: `fix/описание`
- Срочное исправление: `hotfix/описание`

## Формат сообщения коммита

\`\`\`
<type>(<scope>): <subject>

<body>

<footer>
\`\`\`

### Типы Type

- `feat`: новая функциональность
- `fix`: исправление бага
- `docs`: обновление документации
- `style`: форматирование кода
- `refactor`: рефакторинг
- `test`: тесты
- `chore`: сборка/инструменты
```

### Пример 3: Skill аудита безопасности

```markdown
---
name: Аудит безопасности
description: Используется, когда пользователь спрашивает о «проверке безопасности», «сканировании уязвимостей», «лучших практиках безопасности» или проверяет безопасность кода
version: 1.0.0
---

# Руководство по аудиту безопасности

## Проверка распространённых уязвимостей

### SQL-инъекции
- Проверьте использование параметризованных запросов
- Избегайте конкатенации строк в SQL

### XSS-атаки
- Проверьте экранирование пользовательского ввода
- Используйте CSP-заголовки

### Конфиденциальные данные
- Убедитесь, что пароли не хранятся в открытом виде
- Не хардкодьте API-ключи
- Проверьте, не утекают ли конфиденциальные данные в логи

## Чеклист проверки

- [ ] Валидация ввода
- [ ] Кодирование вывода
- [ ] Механизм аутентификации
- [ ] Проверка авторизации
- [ ] Использование шифрования
- [ ] Обработка ошибок
```

## Лучшие практики

### 1. Чёткое описание триггеров

Используйте конкретные триггерные фразы вместо расплывчатых описаний:

```yaml
# Хорошо
description: Используется, когда пользователь спрашивает о «создании компонента», «шаблоне React-компонента», «лучших практиках компонентов»

# Плохо
description: Связано с React-компонентами
```

### 2. Структурированные знания

Организуйте знания в чёткую иерархическую структуру:

- Используйте уровни заголовков

- Предоставляйте примеры кода

- Включайте чеклисты

### 3. Поддержание актуальности

- Регулярно обновляйте содержимое Skill

- Номер версии отражает изменения

- Фиксируйте важные обновления

### 4. Модульное проектирование

- Каждый Skill фокусируется на одной области

- Используйте директорию references для детальных материалов

- Предоставляйте практические примеры через examples

## Отладка Skills

Если Skill не активируется как ожидалось:

1. **Проверьте description**: убедитесь, что триггерные фразы соответствуют вводу пользователя

2. **Проверьте формат**: убедитесь, что YAML frontmatter корректен

3. **Протестируйте активацию**: попробуйте точные фразы из description

## Следующие шаги

- [Система плагинов](/docs/advanced/plugins) — полное руководство по разработке плагинов

- [MCP-серверы](/docs/advanced/mcp) — расширение инструментальных возможностей Claude

- [Советы по CLI](/docs/usage/cli-tips) — повышение эффективности работы с командной строкой