Основы
Генератор релиз-нотов
Генерация отформатированных релиз-нотов из git-тегов с деталями PR, связанными задачами и указанием контрибьюторов.
Используйте навык Dagu для создания рабочего процесса генерации релиз-нотов. Обратитесь к справочникам по схеме, coding agent и известным подводным камням для правильного синтаксиса. Спросите у пользователя: - Какой репозиторий? (по умолчанию: текущий репозиторий, определяется через gh repo view --json nameWithOwner) - Какие теги сравнивать? (по умолчанию: последний тег с предыдущим, определяются автоматически) Предварительные требования: авторизованный gh CLI (gh auth login), как минимум один установленный AI coding agent CLI. Рабочий процесс должен: 1. Определить два git-тега для сравнения. Если не указаны, автоматически определить последний и предыдущий теги через GitHub API. Вывести их в формате JSON, чтобы последующие шаги могли ссылаться на отдельные поля через JSON path (например, ${TAGS.to}). 2. Извлечь все номера PR из коммитов между двумя тегами с помощью GitHub compare API с --jq (НЕ используйте jq CLI). Выводить по одному номеру PR на строку. 3. Для каждого PR получить детали через gh api graphql: номер, заголовок, логин автора, краткое описание тела (первые ~300 символов), метки и closingIssuesReferences (номер, заголовок, логин автора). Собрать JSON-массив из результатов. - КРИТИЧНО: При итерации по выводу предыдущего шага НЕ используйте "for X in $VAR" — Dagu захватывает многострочный вывод в одну строковую переменную, поэтому разделение по словам не работает. Вместо этого читайте файл stdout предыдущего шага построчно: `while IFS= read -r line; do ... done < "${prev_step.stdout}"`. Удаляйте нечисловые символы из каждой строки с помощью `tr -dc '0-9'` перед передачей в GraphQL-запрос. - Строка запроса gh GraphQL использует переменные с префиксом $ ($owner, $name, $num). Это безопасно в скриптах Dagu, потому что Dagu раскрывает только ${переменные_в_фигурных_скобках} и шаблоны $имя_переменной, совпадающие с определёнными переменными Dagu — неопределённые $имена сохраняются как есть для оболочки. Однако передавайте целочисленные переменные в -F без кавычек (например, -F num=$NUM, а не -F num="$NUM"), чтобы gh отправлял их как целые числа, а не строки. 4. Использовать один шаг AI-агента (автоопределение доступного CLI, использовать самую дешёвую модель) для категоризации каждого PR и форматирования итоговых релиз-нотов. Передать ему JSON с деталями PR, шаблон changelog и контекст (репозиторий, теги, дата, владелец репозитория для исключения из списка контрибьюторов). 5. Сохранить результат в DAG_DOCS_DIR. 6. Использовать defaults.retry_policy и timeout_sec: 300 на шаге AI-агента. Шаблон формата changelog ДОЛЖЕН быть определён как переменная окружения верхнего уровня с использованием YAML multiline (|), чтобы пользователи могли настраивать вывод без редактирования логики шагов.
Начало работы
1. Установить Dagu
curl -L https://raw.githubusercontent.com/dagu-org/dagu/main/scripts/installer.sh | bash2. Установить навык Dagu
claude mcp add dagu -- dagu mcp3. Запустить Dagu
dagu start-allПодробнее смотрите в руководстве по быстрому старту