Prompt file imported from cion-suite/cion-overtime (
.claude/commands/notes.md). Fill in{{arguments}},{{arg2}}before use. Copyright stays with the author.
/notes — Changelog Entry Generator
Release notes в двух аудиториях: end-users + git commit. Детерминирован по scope и записи.
Input
{{arguments}} — опционально git-range (0.5.5..0.5.6). Пусто → UNCOMMITTED mode.
Scope
RANGE mode ({{arguments}} непустой)
git log --oneline {{arguments}} + git diff {{arguments}}. Опционально Read ключевых файлов.
UNCOMMITTED mode
Запрещено: git log, git show, git reflog, git cherry, git rev-list (любые формы). Тему бери из diff'а.
Граница scope. Прошлый /notes мог записать entry в changelog.txt без коммита — повторный вызов не должен дублировать. Граница = mtime changelog.txt.
-
Проверка границы:
test -s changelog.txt && echo BOUNDED || echo UNBOUNDED -
Файлы scope:
# BOUNDED — только новее changelog.txt: for f in $(git diff HEAD --name-only); do [ "$f" -nt changelog.txt ] && echo "$f"; done git status --short | awk '/^\?\?/ {print {{arg2}}}' | while read f; do [ "$f" -nt changelog.txt ] && echo "$f"; done # UNBOUNDED — всё: git diff HEAD --name-only git status --short | awk '/^\?\?/ {print {{arg2}}}' -
Diff по этим файлам:
git diff HEAD -- <files>. Untracked →Read. -
Scope пустой:
BOUNDEDпустой → «Нет изменений новее последнего entry в changelog.txt.»UNBOUNDEDпустой → «Нет uncommitted-изменений. Передай range:/notes 0.6.3..HEAD.»- Выйти. НЕ расширять scope. НЕ fallback на
git log.
Version + theme
- Version — поле
versionизpackage.jsonкак есть. - Theme — короткое русское слово (≤ 15 символов). Предпочтительно:
фиксы · профили · рефакторинг · документация · перформанс · UI · установка · обновление · Lua · AD · DB · external · безопасность.
[USERS] section
End-users desktop-приложения:
- Русский, прошедшее время, безличное (Оптимизирована, Исправлена…).
- Только user-visible. Внутренние правки пропускать.
- Весь релиз внутренний → одна строка:
Оптимизирована внутренняя архитектура приложения. - Без жаргона, без имён классов/путей.
- 1–5 bullet'ов. ASCII + кириллица.
[GIT] section
Commit-сообщение:
- Русский, прошедшее время, безличное. Императив (Упрощена, Удалён, Исправлена…).
- ~80 символов на bullet. ЧТО изменилось, не КАК.
- Без имён классов/сигнатур/путей.
- 3–8 bullet'ов. Близкие сливать. Порядок: фичи → улучшения → фиксы.
- ASCII + кириллица.
Format
<version> - <theme>
[USERS]
- ...
[GIT]
- ...
Append to changelog.txt
Только Bash heredoc cat >> changelog.txt <<'EOF' … EOF. Никогда Write / Edit / sed -i / > / Read-modify-Write.
# Непустой файл — лидирующий разделитель:
cat >> changelog.txt <<'EOF'
---
<version> - <theme>
[USERS]
- ...
[GIT]
- ...
EOF
# Пустой/отсутствует — без разделителя:
cat >> changelog.txt <<'EOF'
<version> - <theme>
[USERS]
- ...
[GIT]
- ...
EOF
Разделитель — строго \n\n---\n\n. Не выдумывать ===, ***, даты.
Heredoc сломался → не переключаться на Edit/Write. Сообщить пользователю, остановиться.
Verify
tail -n 30 changelog.txt
Новый entry в конце, отделён \n\n---\n\n (если был непуст), предыдущий нетронут. Не так → не чинить руками, показать tail пользователю.
Output
Вывести финальный блок в чат ровно по формату. Без префиксов/пояснений.
Example
0.5.4 - фиксы
[USERS]
- Исправлены проблемы с кодировкой при редактировании профилей.
- Исправлена загрузка статусов у компьютеров пользователей.
[GIT]
- Исправлена кодировка UTF-8 при записи атрибутов через PowerShell.
- Исправлена загрузка статусов компьютеров из кеша.
- Добавлена обработка таймаута при проверке доступности DC.
