Вы наверняка ловили себя на том, что раз за разом копипастите в чат с ИИ одни и те же инструкции: «Пиши на TypeScript», «Не используй сторонние библиотеки», «Добавляй тесты». В программировании мы по сути называем это нарушением принципа DRY (Don't Repeat Yourself). Но почему мы продолжаем это делать при общении с нейросетями?

В этой статье мы разберем концепцию Skills (Скиллов) - переиспользуемых «навыков» для ИИ-ассистентов, которые живут прямо в вашем репозитории и делают работу агентов предсказуемой, чистой и профессиональной.

Что такое Skills (навыки) на самом деле?

Если коротко Skill - это персистентный (постоянный) плейбук, который учит ИИ выполнять конкретный тип задач по вашим стандартам.

  • Обычный промпт - это просто одноразовая просьба

  • Skill - это системный компонент. Он версионируется в Git, лежит в папке проекта и автоматически подтягивается агентом, когда возникает подходящая задача

Пример набора SKILLS
Пример набора SKILLS

Чем Skill отличается от системного промпта?

Системный промпт (например, в настройках Claude, Cursor) это глобальная роль (условно «Ты - программист»)

Skill - это узкая специализация (Например: «Ты эксперт по написанию PRD для No-code MVP»)

На практике проблема не в том, что модель “плохо отвечает”. Проблема в том, что мы не фиксируем стандарты работы

В обычной разработке:

  • код-стайл фиксируется линтерами,

  • архитектура - правилами репозитория,

  • процессы - PR templates, DoD, CI

С нейросетями то же самое, только вместо “компилятора” у нас - “агент”, который каждый раз пытается угадать, что вы хотели.

И важный момент:

Это не “фича Cursor” или “фича Claude Code”.
Это слой поверх инструментов, который делает поведение агента переносимым.

Анатомия идеального скилла

Хороший навык не должен быть «водой». Если вы напишете «пиши хороший код», ИИ проигнорирует это. Чтобы навык работал, он должен содержать:

  1. Scope (Область) - когда именно активировать этот навык? (Например: «при создании нового эндпоинта»)

  2. Context & Inputs - какие данные агенту нужно собрать перед началом работы?

  3. Process (Алгоритм) - пошаговый план (Chain of Thought)

  4. Output Format - структура ответа (Markdown-шаблоны, JSON-схемы)

  5. Quality Bar (Чек-лист) - критерии самопроверки модели

  6. Anti-patterns - чего категорически нельзя делать

Чтобы не писать “отдельную инструкцию для Cursor и отдельную для Claude Code, Warp”, делаем единую структуру, а инструменты просто читают её.

Рекомендуемая структура:

.ai/
  AGENTS.md          # глобальные правила проекта (always-on)
  router.md          # маршрутизация: какой skill выбирать
  skills/
    prd_mvp_nocode.md
    code_review.md
    webapp_testing.md
    research.md
  subagents/         # опционально: роли для больших задач
    planner.md
    reviewer.md

Что куда класть (чтобы не превратить всё в кашу)

AGENTS.md - это “правила” проекта:

  • стиль работы (минимальные изменения, не выдумывать),

  • политика уточняющих вопросов,

  • формат ответа по умолчанию,

  • безопасность и запреты.

skills/* - конкретные плейбуки (то что мы смотрим):

  • PRD,

  • ревью кода,

  • тестирование,

  • ресёрч,

  • миграции и т.д.

router.md - логика выбора:

  • “если задача про тесты → используй webapp_testing.md

Минимально необходимый Skill: пример “Webapp Testing”

Может уже встречали формат вроде:

---
name: webapp-testing
description: Toolkit for interacting with and testing local web applications using Playwright.
---

Почему это работает:

  • name/description - триггеры для активации

  • дальше идёт “как думать” и “что вернуть” (process + output contract)

Но чтобы skill реально давал результат каждый раз, добавь Output requirements:

  • всегда выдавай runnable скрипт

  • обязательно networkidle

  • обязательно browser.close()

  • добавь 1-2 команды “как запустить”

И всё - у тебя “сотрудник”, который стабильно пишет автотесты

Практический шаблон skill (универсальный)

Вот “идеальный каркас”, который можно копировать:

---
name: <skill-name>
description: <one-line>
triggers: [<keywords>]
---

# Purpose
<what this skill is for>

# When to use
<exact situations>

# Inputs needed
- ...
- ...

# Procedure
1) ...
2) ...
3) ...

# Output format
- Section 1
- Section 2
- ...

# Quality bar (self-check)
- [ ] ...
- [ ] ...

# Anti-patterns
- ❌ ...
- ❌ ...

# Examples
Input: ...
Output: ...

Как агент понимает, какой skill включить?

Это важный инженерный нюанс, здесь как раз можно применять “роутеры”, без них даже идеальные skills будут работать нестабильно, потому что агент не всегда догадается сам.

Простой и рабочий router.md:

  • Определи тип задачи: product / engineering / testing / research / writing

  • Выбери соответствующий файл в .ai/skills/

  • Следуй ему строго

  • В конце self-check по Quality Bar

Пример добавления в AGENTS.md:

## Mandatory startup
Before starting any task:
1) Read `.ai/router.md`
2) Follow it to select exactly one skill from `.ai/skills/`
3) Follow the selected skill's Output format and Quality bar

Пример использование router.md:

# Router: Skill Selection & Execution Protocol

## Goal
Route each user request to exactly ONE most relevant skill in `.ai/skills/` and produce the required artifact consistently.

## Step 0 — Task classification (mandatory)
Classify the request into ONE primary category:

- **product**: PRD, requirements, MVP scope, user stories, acceptance criteria, roadmap
- **engineering**: implementation, refactoring, debugging, architecture, PR changes
- **testing**: e2e/ui tests, Playwright, test plan, QA steps, screenshots/logs
- **research**: competitor analysis, tech landscape, tool comparison, citations
- **writing**: article drafts, posts, editing tone, structure, storytelling

If multiple categories apply, choose the one that best matches the **final deliverable**.

## Step 1 — Skill mapping (choose ONE)
Choose the best matching skill file (exactly one) using this priority order:
1) explicit user request (“use skill X”)
2) keyword match with skill `name/description/triggers`
3) closest deliverable match from the table below

### Skill table
| Category | Skill file | Use when |
|---|---|---|
| product | `.ai/skills/prd_mvp_nocode.md` | PRD/MVP, no-code/vibe constraints |
| product | `.ai/skills/jira_sprint_ac.md` | Sprint tasks + Acceptance Criteria + DoD |
| engineering | `.ai/skills/code_review.md` | Review PR / risks / architecture / tests |
| testing | `.ai/skills/webapp_testing.md` | Local webapp testing with Playwright |
| research | `.ai/skills/research_competitors.md` | Competitor research / tool landscape |
| writing | `.ai/skills/article_habr.md` | Habr/VC article structure and tone |

If no skill matches, proceed with `AGENTS.md` default rules, but **still follow Output Contract** below.

## Step 2 — Execution rules (mandatory)
After selecting the skill:
- Read the chosen skill file fully.
- Follow its **Process** section step-by-step internally.
- Produce output strictly following its **Output format**.
- Apply the skill’s **Anti-patterns** as hard constraints.

## Output Contract (default)
Unless the selected skill overrides this, format every answer as:

1) **Plan** (2–6 bullets)
2) **Deliverable** (the artifact the user asked for)
3) **Self-check** (3–7 checklist items)

If the user explicitly asks for “just the final result”, omit the Plan and keep only Deliverable + Self-check.

## Safety / Quality gates (always-on)
- Do not invent files/APIs/metrics. If uncertain, state uncertainty and propose verification.
- Prefer minimal changes (smallest viable diff) when editing code.
- Avoid long explanations; be direct and artifact-first.

Суть в том что, вы задаёте протокол мышления. Это сильнее, чем любой “будь умным”

Где именно устанавливать Skills?

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

  1. Создаем директорию: .ai/skills/ (здесь будут лежать узкоспециализированные файлы).

  2. Главный файл: .cursorrules (например для Cursor)

Если не хочется писать инструкции с нуля, можно воспользоваться готовыми шаблонами (aitmpl.com). Например, для тестирования веб-приложений (Webapp Testing) уже есть проверенный «плейбук»

Пример skill-template на aitmpl.com
Пример skill-template на aitmpl.com

Установить его в проект можно одной командой в терминале:

npx claude-code-templates@latest --skill=development/webapp-testing --yes

А если я хочу вручную? (The Hard Way)

Если вы нашли крутой навык на aitmpl.com, вам не обязательно использовать CLI

  1. Зайдите в раздел нужного скилла (например, Webapp Testing).

  2. Скопируйте Markdown-код инструкции.

  3. Создайте файл .ai/skills/webapp-testing.md и вставьте код туда.

Markdown-код инструкции
Markdown-код инструкции

Итоги, а зачем все это? Почему это не бред:

  1. Синхронизация команды: если ты работаешь в команде, вы пушите папку .ai/ в Git. Теперь у всей команды Claude и Cursor работают одинаково. Это «прошивка» для проекта.

  2. Независимость от инструментов: завтра выйдет новый «убийца Курсора». Тебе не нужно ничего переучивать — ты просто скажешь нов��му ИИ: «Твои инструкции лежат в той папке».

  3. Скорость работы: ты пишешь “используй skill X”, а не полотно инструкций или промптов

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Планируете ли вы пользоваться Skills в проектах?
87.5%Думаю да21
4.17%Скорее всего нет1
8.33%Еще не уверен2
Проголосовали 24 пользователя. Воздержались 2 пользователя.