Claude Code превращают в команду специалистов: когда skills реально ускоряют разработку, а когда создают ещё один слой хаоса

Я — Denis Shokhirev, Agentic AI Systems Architect из Freiburg im Breisgau, Germany; в DennisCraft AI Studio я собираю production AI-системы для DACH B2B на стеке Claude, Supabase, n8n, Doppler и self-hosted Postgres. Самая неприятная сцена в реальной разработке с Claude Code выглядит не как “модель ошиблась”, а как 4 разных skills начинают править один и тот же модуль, спорить через артефакты и оставляют после себя код, который формально работает, но уже не имеет одного владельца.

Именно здесь начинается путаница вокруг “команды специалистов” внутри Claude Code. Идея кажется логичной: один skill пишет SQL, другой проверяет безопасность, третий готовит migration, четвертый собирает тесты. На практике ускорение появляется не от количества специализаций, а от того, насколько жестко ограничены их права, контекст и момент вызова. Если этого нет, вы получаете не команду, а многослойную систему рассинхронизации.

Когда skills действительно полезны

Я вижу смысл в skills только в 3 сценариях.

1. Узкая повторяемая задача с предсказуемым выходом

Например: подготовка SQL migration, генерация типового CRUD-слоя, проверка secrets, запуск статического анализа. Здесь skill должен работать как специализированный исполнитель с коротким контекстом и четким контрактом: что он читает, что меняет, что запрещено менять.

2. Разделение по типу риска, а не по “ролям”

Самая частая ошибка — моделировать оргструктуру компании: “backend engineer”, “security engineer”, “reviewer”, “architect”. Для кода это слабая декомпозиция. Намного лучше делить по риску: доступ к файловой системе, доступ к зависимостям, доступ к БД-схеме, доступ к secrets, право только читать, право только предлагать patch.

3. Skill вызывается после базовой проверки, а не вместо нее

OWASP в 2021 обновил Top 10 и снова поставил broken access control на первое место как наиболее распространенную категорию рисков (OWASP Top 10, 2021). Для agent coding это хороший якорь: если вы надеетесь, что “специалист по безопасности” внутри Claude Code сам все заметит, вы переносите ответственность с системы контроля на вероятностный вывод модели. Skill полезен после того, как semgrep, bandit или gitleaks уже определили базовые границы.

Когда skills начинают замедлять команду

У меня это происходит в 4 повторяющихся режимах отказа.

Skills наследуют слишком много контекста

Если каждый вызов получает всю историю проекта, все прошлые решения и половину репозитория, skill перестает быть инструментом и начинает импровизировать. В regulated среде это особенно плохо: причины изменения теряются, а трассировка решений становится слабее.

Несколько skills могут править один и тот же слой

Если SQL может менять и “db skill”, и “feature skill”, и “bugfix skill”, конфликт неизбежен. Внешне это выглядит как прогресс: много параллельной активности. Реально это рост diff, повторные исправления и регрессии на стыке слоев.

Skill не привязан к проверяемому артефакту

Хороший skill выдает patch, migration, test file или отчет. Плохой skill выдает “рекомендации”, которые следующий агент трактует по-своему. Чем больше свободной интерпретации, тем выше хаос.

Оркестрация важнее самого skill

Anthropic SDK полезен не тем, что дает еще одну абстракцию, а тем, что позволяет явно контролировать сообщения, инструменты и шаги вызова. Проблема почти никогда не в том, что skill “недостаточно умный”. Проблема в том, что порядок вызовов, разрешения и критерии завершения не описаны как система.

Практический шаблон: skills как строго ограниченные этапы

Рабочая схема, которая у меня выдерживает production, выглядит проще, чем ожидают многие. Есть один основной агент, который владеет задачей. Есть узкие skills, которые не ведут “собственную разработку”, а исполняют конкретный этап. Любой код потом проходит внешние проверки.

ЭтапЧто делаетЧто запрещеноАртефакт
PlanРазбивает задачу на шагиМенять кодКраткий план
ImplementПишет patch в ограниченных файлахМенять схему БД без отдельного шагаDiff
VerifyЗапускает тесты и статический анализПереписывать бизнес-логикуОтчет
SecureПроверяет CWE-паттерны, secrets, risky callsДобавлять зависимостиСписок замечаний

Ниже минимальный пример bash-контура, который полезнее, чем “еще один умный reviewer”.

#!/usr/bin/env bash
set -euo pipefail

python -m pytest -q
semgrep --config auto .
bandit -r app -q
gitleaks detect --no-banner --source .

if git diff --name-only | grep -E 'schema|migration'; then
  echo "Database-related change detected"
fi

echo "Verification finished"

Эта схема скучная, и в этом ее плюс. Skills остаются полезными, пока они встроены в детерминированный контур.

Где именно появляется ускорение

На моих проектах ускорение приходит не от “автономности” skills, а от снижения стоимости повторяемых решений. Например, Claude Code стабильно экономит время там, где нужно быстро провести однотипное изменение через 8–15 файлов: добавить audit-поля, нормализовать обработку ошибок, привести DB layer к одному шаблону, подготовить test fixtures. Но если задача не локализована и требует спорного архитектурного решения, мульти-skill конфигурация почти всегда пишет слишком рано и думает слишком мало.

Поэтому я использую простое правило: чем ближе изменение к данным, правам доступа и внешним интеграциям, тем меньше “команды специалистов” и тем больше явных gate. Для Postgres, Supabase policies, webhook-цепочек в n8n и секретов в Doppler это особенно заметно. Один неверный skill может не сломать demo, но испортить операционную трассу или режим доступа в production.

Что проверять перед тем, как добавлять новый skill

Перед добавлением каждого нового skill я задаю 5 вопросов.

  • Какой у него единственный измеримый результат?
  • Какие файлы или ресурсы он может менять?
  • Что произойдет, если он ошибется молча?
  • Можно ли ту же задачу закрыть static analysis или шаблоном?
  • Кто финально владеет решением: skill или основной агент?

Если на любой из этих вопросов нет короткого ответа, skill пока не нужен. Чаще всего команде нужен не новый “специалист”, а меньше свободы в уже существующей цепочке.

from pathlib import Path
import subprocess

ALLOWED_PATHS = {"app/", "tests/"}

def changed_files():
    out = subprocess.check_output(
        ["git", "diff", "--name-only", "HEAD~1"]
    ).decode().splitlines()
    return out

for file_path in changed_files():
    if not any(file_path.startswith(p) for p in ALLOWED_PATHS):
        raise SystemExit(f"blocked change: {file_path}")

print("change scope accepted")

Именно такой примитивный контроль часто дает больше пользы, чем сложная агентная иерархия.

FAQ

Стоит ли делать отдельный skill под безопасность?

Да, если он не заменяет внешнюю проверку. Пусть он находит подозрительные места и формирует замечания, но финальный барьер должны держать semgrep, bandit, gitleaks и обычный review.

Нужны ли skills маленькой команде из 2–5 инженеров?

Только если у вас уже есть повторяемый процесс. Если процесс плавает, skills просто копируют этот хаос быстрее.

Можно ли давать skill доступ к migration-файлам?

Можно, но только в отдельном этапе и с обязательной проверкой diff. Схема БД — это не место для “пусть агент сам решит”.

Как понять, что skills вредят?

Посмотрите на повторные правки одних и тех же файлов, рост diff без роста качества и на случаи, где никто не может объяснить, почему решение принято именно так. Это типичный сигнал потери владельца у изменений.

Что важнее: точность модели или orchestration?

Для production почти всегда orchestration. Сильная модель внутри плохого контура делает дорогие ошибки быстрее.

Где в вашей agent pipeline чаще всего возникает хаос: на этапе планирования, в handoff между skills или уже после merge, когда выясняется, что никто не владеет финальным diff? Мне правда интересно сравнить это с тем, что я вижу в production у DACH B2B клиентов.

I run a free 30-min stack audit for DACH founders building AI in regulated markets. DM me on LinkedIn or write to @ger_dennis_ai.

Read more

Computer-Use-Agenten scheitern an Pixeln: wie Sie auf stabile UI-Referenzen über Accessibility Trees umstellen und fehleranfällige Desktop-Automatisierung nicht mehr ständig reparieren

von Denis Shokhirev, Enterprise AI Architect aus Freiburg im Breisgau Ich bin Denis Shokhirev, Agentic AI Systems Architect in Freiburg im Breisgau, Germany, und bei DennisCraft AI Studio setze ich produktive KI-Systeme für DACH-B2B-Kunden auf Basis von Claude, Supabase, n8n, Doppler und selbst betriebenem Postgres um. Die teuersten Fehler in

By Denis Shokhirev

Компьютерные агенты ломаются на пикселях: как перейти на stable UI refs через accessibility tree и перестать чинить flaky desktop automation

Я Denis Shokhirev, Agentic AI Systems Architect из Freiburg im Breisgau, Germany, и в DennisCraft AI Studio я собираю production AI-системы для DACH B2B на Claude, Supabase, n8n, Doppler и self-hosted Postgres. Самая дорогая поломка в desktop automation, которую я вижу у клиентов, почти никогда не связана с моделью: агент

By Denis Shokhirev