Plan
Режим планирования: создать actionable markdown-план в .hermes/plans/ без выполнения. Мелкие задачи, точные пути, готовый код.
Метаданные навыка
| Источник | Встроенный (установлен по умолчанию) |
| Путь | skills/software-development/plan |
| Версия | 2.0.0 |
| Автор | Hermes Agent (writing-craft adapted from obra/superpowers) |
| Лицензия | MIT |
| Платформы | linux, macos, windows |
| Теги | planning, plan-mode, implementation, workflow, design, documentation |
| Связанные навыки | subagent-driven-development, test-driven-development, requesting-code-review |
Справочник: полный SKILL.md
Ниже — полное определение навыка, которое Hermes загружает при его активации. Это те инструкции, которые агент видит, когда навык включён.
Plan Mode
Используй этот навык, когда пользователь хочет получить план, а не выполнение.
Основное поведение
В этом ходу ты только планируешь.
- Не реализуй код.
- Не редактируй файлы проекта — только markdown-файл плана.
- Не запускай мутирующие команды терминала, не делай commit, push и не совершай внешних действий.
- Для получения контекста можно использовать команды и инструменты только для чтения.
- Результат работы — markdown-план, сохранённый в активном рабочем пространстве в директории
.hermes/plans/.
Требования к выводу
Напиши конкретный и actionable markdown-план.
Включи при наличии:
- Цель
- Текущий контекст и допущения
- Предлагаемый подход
- Пошаговый план
- Файлы, которые, вероятно, изменятся
- Тесты и валидация
- Риски, трейдоффы, открытые вопросы
Если задача связана с кодом — укажи точные пути к файлам, целевые тесты и шаги верификации.
Место сохранения
Сохрани план через write_file по пути:
.hermes/plans/YYYY-MM-DD_HHMMSS-<slug>.md
Путь указывается относительно активной рабочей директории / бэкенд-воркспейса. Файловые инструменты Hermes учитывают бэкенд, поэтому относительный путь сохраняет план рядом с воркспейсом на любом бэкенде: local, docker, ssh, modal, daytona.
Если среда выполнения указывает конкретный целевой путь — используй его. Если нет — сформируй разумное имя файла с временной меткой в .hermes/plans/.
Стиль взаимодействия
- Если запрос достаточно ясен — пиши план сразу.
- Если
/planвызвали без явной инструкции — определи задачу по контексту текущего разговора. - Если задача реально не определена — задай короткий уточняющий вопрос, не угадывай.
- После сохранения плана ответь коротко: что запланировано и по какому пути сохранено.
Как написать хороший план
Остальная часть навыка — это методика написания хорошего плана реализации: содержание, которое попадает в markdown-файл выше.
Обзор
Пиши подробные планы реализации в расчёте на исполнителя с нулевым знанием кодовой базы и сомнительными вкусами. Документируй всё необходимое: какие файлы трогать, готовый код, команды тестирования, документацию для проверки, способы верификации. Дроби задачи на мелкие шаги. DRY. YAGNI. TDD. Частые коммиты.
Считай, что исполнитель — опытный разработчик, который почти ничего не знает о конкретном инструментарии или предметной области. И что хорошее проектирование тестов ему даётся слабо.
Главный принцип: хороший план делает реализацию очевидной. Если приходится догадываться — план неполный.
Когда нужен полный план реализации
Всегда используй перед:
- Реализацией многошаговых фич
- Декомпозицией сложных требований
- Делегированием субагентам через subagent-driven-development
Не пропускай, даже если:
- Фича кажется простой (допущения приводят к багам)
- Планируешь реализовать сам (будущий ты тоже нуждается в руководстве)
- Работаешь в одиночку (документация имеет значение)
Гранулярность: мелкие задачи
Каждая задача = 2–5 минут сосредоточенной работы.
Каждый шаг — одно действие:
- «Написать падающий тест» — шаг
- «Запустить его и убедиться, что он падает» — шаг
- «Написать минимальный код, чтобы тест прошёл» — шаг
- «Запустить тесты и убедиться, что они проходят» — шаг
- «Сделать коммит» — шаг
Слишком крупно:
### Task 1: Build authentication system
[50 lines of code across 5 files]
В самый раз:
### Task 1: Create User model with email field
[10 lines, 1 file]
### Task 2: Add password hash field to User
[8 lines, 1 file]
### Task 3: Create password hashing utility
[15 lines, 1 file]
Структура документа плана
Заголовок (обязательно)
Каждый план ДОЛЖЕН начинаться с:
# [Feature Name] Implementation Plan
> **For Hermes:** Use subagent-driven-development skill to implement this plan task-by-task.
**Goal:** [One sentence describing what this builds]
**Architecture:** [2-3 sentences about approach]
**Tech Stack:** [Key technologies/libraries]
---
Структура задачи
Каждая задача оформляется так:
### Task N: [Descriptive Name]
**Objective:** What this task accomplishes (one sentence)
**Files:**
- Create: `exact/path/to/new_file.py`
- Modify: `exact/path/to/existing.py:45-67` (line numbers if known)
- Test: `tests/path/to/test_file.py`
**Step 1: Write failing test**
```python
def test_specific_behavior():
result = function(input)
assert result == expected
```
**Step 2: Run test to verify failure**
Run: `pytest tests/path/test.py::test_specific_behavior -v`
Expected: FAIL — "function not defined"
**Step 3: Write minimal implementation**
```python
def function(input):
return expected
```
**Step 4: Run test to verify pass**
Run: `pytest tests/path/test.py::test_specific_behavior -v`
Expected: PASS
**Step 5: Commit**
```bash
git add tests/path/test.py src/path/file.py
git commit -m "feat: add specific feature"
```
Процесс написания плана
Шаг 1: Разберись в требованиях
Прочитай и осмысли:
- Требования к фиче
- Проектные документы или описание от пользователя
- Критерии приёмки
- Ограничения
Шаг 2: Изучи кодовую базу
Используй инструменты Hermes, чтобы понять проект:
# Понять структуру проекта
search_files("*.py", target="files", path="src/")
# Посмотреть на похожие фичи
search_files("similar_pattern", path="src/", file_glob="*.py")
# Проверить существующие тесты
search_files("*.py", target="files", path="tests/")
# Прочитать ключевые файлы
read_file("src/app.py")
Шаг 3: Сформируй подход
Определи:
- Архитектурный паттерн
- Организацию файлов
- Нужные зависимости
- Стратегию тестирования
Шаг 4: Напиши задачи
Создавай задачи по порядку:
- Настройка и инфраструктура
- Основная функциональность (TDD для каждой части)
- Граничные случаи
- Интеграция
- Очистка и документация
Шаг 5: Добавь полные детали
Для каждой задачи укажи:
- Точные пути к файлам — не «конфиг-файл», а
src/config/settings.py - Полные примеры кода — не «добавь валидацию», а конкретный код
- Точные команды с ожидаемым выводом
- Шаги верификации, доказывающие, что задача выполнена
Шаг 6: Проверь план
Убедись:
- Задачи идут последовательно и логично
- Каждая задача мелкая (2–5 мин)
- Пути к файлам точные
- Примеры кода полные (можно скопировать и вставить)
- Команды точные с ожидаемым выводом
- Нет пропущенного контекста
- Применены принципы DRY, YAGNI, TDD
Принципы
DRY (Don’t Repeat Yourself)
Плохо: копипаст валидации в трёх местах Хорошо: вынести валидацию в функцию, использовать везде
YAGNI (You Aren’t Gonna Need It)
Плохо: добавить «гибкость» под будущие требования Хорошо: реализовать только то, что нужно сейчас
# Bad — YAGNI violation
class User:
def __init__(self, name, email):
self.name = name
self.email = email
self.preferences = {} # Not needed yet!
self.metadata = {} # Not needed yet!
# Good — YAGNI
class User:
def __init__(self, name, email):
self.name = name
self.email = email
TDD (Test-Driven Development)
Каждая задача, порождающая код, должна включать полный цикл TDD:
- Написать падающий тест
- Запустить и убедиться, что тест падает
- Написать минимальный код
- Запустить и убедиться, что тест проходит
Подробности — в навыке test-driven-development.
Частые коммиты
Коммит после каждой задачи:
git add [files]
git commit -m "type: description"
Типичные ошибки
Размытые задачи
Плохо: «Добавить аутентификацию» Хорошо: «Создать модель User с полями email и password_hash»
Неполный код
Плохо: «Шаг 1: добавить функцию валидации» Хорошо: «Шаг 1: добавить функцию валидации» — и сразу полный код функции
Отсутствие верификации
Плохо: «Шаг 3: проверить, что работает»
Хорошо: «Шаг 3: запустить pytest tests/test_auth.py -v, ожидаемо: 3 passed»
Отсутствующие пути к файлам
Плохо: «Создать файл модели»
Хорошо: «Create: src/models/user.py»
Передача на исполнение
После сохранения плана предложи подход к выполнению:
«План готов и сохранён. Готов к выполнению через subagent-driven-development — буду запускать свежий субагент на каждую задачу с двухэтапной проверкой (соответствие спецификации, затем качество кода). Продолжаем?»
При выполнении используй навык subagent-driven-development:
- Свежий
delegate_taskна каждую задачу с полным контекстом - Проверка соответствия спецификации после каждой задачи
- Проверка качества кода после прохождения первой проверки
- Переход к следующей задаче только при одобрении обеих проверок
Запомни
Bite-sized tasks (2-5 min each)
Exact file paths
Complete code (copy-pasteable)
Exact commands with expected output
Verification steps
DRY, YAGNI, TDD
Frequent commits
Хороший план делает реализацию очевидной.