Глава 03

Агенты и skills

Когда OpenCode начинает использоваться всерьёз, почти всегда возникает вопрос: как разделить работу по ролям и куда выносить переиспользуемое знание. Ответ — в грамотном использовании subagents и skills, но только если эти сущности спроектированы осмысленно.

Что дают встроенные агенты, а что нужно проекту добавить самому

OpenCode уже поставляется со встроенными primary agents и subagents. Этого достаточно для старта, но не всегда достаточно для зрелого проектного setup. Встроенные агенты хорошо закрывают общие сценарии: реализацию, планирование, исследование. Но как только у проекта появляется своя архитектура и своя командная модель, возникает смысл в проектных subagents.

Тип Когда подходит Примеры
Встроенные primary agents Нужен основной режим работы с кодом или безопасным планированием. build, plan
Встроенные subagents Нужен read-only explore или general-purpose подзадача. explore, general
Проектные subagents Есть четкие роли, связанные именно с вашим проектом. data-engineer, system-analyst, backend-engineer

Когда создание project-specific subagent действительно оправдано

Новый агент нужен не тогда, когда хочется «больше магии», а тогда, когда у роли появляется устойчивый operational boundary. Иначе вы просто плодите лишние промпты.

  • Роль решает повторяемый тип задач.
  • У роли есть своя инженерная логика и свои критерии хорошего результата.
  • Есть смысл ограничить доступ к части инструментов или команд.
  • Роль должна мыслить на языке конкретной предметной области проекта.

Антипаттерн

Если subagent отличается от других только названием, но не областью ответственности и не правилами, то он, скорее всего, лишний. В таком случае знание лучше оставить в AGENTS.md или вынести в skill.

Как выглядит сильный project subagent

Хороший subagent говорит не только «я бэкенд-разработчик», а объясняет, с каким слоем проекта он работает, какие принципы обязательны и чего делать не следует. В примере ai-agent-codex это хорошо видно по агентам уровня data и backend.

---
description: Builds FastAPI and asyncio backend services that expose analytical data, filters, and realtime market updates over HH-based datasets.
mode: subagent
temperature: 0.1
steps: 12
permission:
  bash:
    "*": allow
    "git push*": ask
---

Даже один этот frontmatter уже задает важные ограничения: это не просто «любой backend», а backend над аналитическими данными и realtime market updates. Значит, агент будет мыслить в привязке к этому контексту.

Как писать хорошие prompts для агентов

Плохой вариант

«You are a backend engineer. Build APIs.» Слишком общее описание, без привязки к репозиторию и архитектуре проекта.

Хороший вариант

Агент понимает, что работает с аналитическими API, что бизнес-логика должна жить в warehouse layer, а API должен быть thin and explicit.

Для чего вообще нужны skills

Skills в OpenCode — это не «еще одно место, куда можно положить текст». Их смысл в том, чтобы хранить on-demand playbooks. То есть знания и инструкции, которые не должны занимать базовый контекст всегда, но очень полезны в определенных типах задач.

Например, skill по requirements-spec полезен не в каждой сессии, а только когда идет проработка требований. Skill по docker-compose-local нужен не всегда, а при локальной инфраструктуре. Именно это делает skills сильным инструментом: они загружаются по ситуации.

Как отличать rules, skills и commands

Если сущность... Куда класть Почему
Всегда относится к репозиторию AGENTS.md или instructions Такие правила должны быть доступны постоянно.
Нужна для определенного класса задач .opencode/skills/ Не стоит грузить её в каждую сессию заранее.
Представляет собой повторяемый prompt-шаблон .opencode/commands/ Это не знание и не роль, а shortcut для запуска сценария.

Как выглядит сильный skill

---
name: docker-compose-local
description: Design a reproducible local Docker Compose setup for Airflow, PostgreSQL, and related developer workflows.
compatibility: opencode
metadata:
  audience: infrastructure-engineers
  domain: local-runtime
---
## What I do
- Define service topology and startup order.
- Recommend env vars and volume mounts.
- Keep optional services behind Compose profiles.

Обратите внимание: здесь сразу видно, когда skill использовать и какую форму мышления он даёт. Это не вики-заметка, а reusable playbook.

Каталог skills в проекте-примере

В ai-agent-codex skills разбиты достаточно логично: есть инфраструктурные, аналитические, backend-oriented и delivery-oriented. Это хороший паттерн, потому что каталог остается компактным, но при этом покрывает основные repeatable domains проекта.

Платформа и данные

Data / platform skills

python-etl, postgres-sql, dbt-modeling, airflow-dag-design, metric-design.

Поставка и продукт

Delivery / product skills

requirements-spec, delivery-planning, fastapi-async-api, realtime-analytics-api.

Практическое правило

Один полезный тест

Если вы не можете в одном-двух предложениях объяснить, когда subagent или skill нужен, значит он пока слишком размыт. Хороший OpenCode-артефакт должен быть легко объясним с точки зрения конкретной задачи.