Tick in-body checkboxes from a domain script #11
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Скрипт в
/tea:issue, который перечисляет чекбоксы- [ ]в теле issue ипереключает их по номеру или по подстроке, плюс разбор чекбоксов в
skills/issue/scripts/issue.pyи колонка прогресса вINDEX.md.Spec
skills/issue/references/format.mdMotivation
Чекбокс — единственная часть тела, которая является состоянием, а не
прозой. Всё остальное пишут один раз; галочки меняются по ходу работы, и менять
их сейчас может только человек руками или агент, переписывающий тело целиком.
Второе хуже первого: модель перегенерирует блок, съезжают переносы строк и
формулировки, и diff issue распухает там, где по смыслу изменился один символ.
Прогресс при этом не виден нигде.
issue_index.py:29собираетINDEX.mdизметаданных и о содержимом тела не знает, так что «сделано 3 из 7» нельзя
получить иначе, чем открыв файл.
Чекбоксы стоят не только в
## Acceptance criteria. Шаблонtype/featureдержит список дочерних issues как чекбоксы в
## Issues(
skills/issue/references/format.md:275-277), аformat.md:163-164описывает- [ ]как разметку пункта, а не как свойство одной секции. Привязка парсера кзаголовку молча потеряла бы половину галочек, поэтому строки ищутся по всему
телу.
Место — доменный слой: чекбокс это синтаксис тела issue, то есть часть ответа
на вопрос «что такое issue». Разбор кладём в
issue.py, чтобы им могпользоваться и слой sync, не переопределяя формат у себя.
Acceptance criteria
skills/issue/scripts/issue.pyесть функция разбора чекбоксов тела:возвращает пункты с номером строки, состоянием и текстом
многострочного пункта отдельным пунктом не считается
skills/issue/scripts/issue_ac.py, печатающий пронумерованныйсписок пунктов issue с их состоянием
--checkи--uncheckпринимают номер или подстроку; неоднозначнаяподстрока — ошибка со списком подошедших пунктов, а не выбор наугад
байт-в-байт, что проверяется diff'ом до и после
issue_index.pyпоказывает вINDEX.mdпрогресс вида3/7для issue счекбоксами и ничего для issue без них; значение считается на лету и
нигде не хранится
issue_check.pyне считает незакрытый чекбокс ошибкой илипредупреждением
skills/issue/SKILL.mdgrep -rh '^import \|^from ' skills/issue/scripts/по-прежнему даёттолько stdlib и не содержит
subprocessConstraints
push.py --updateв/tea:sync.живёт в теле и только там; вынос его в
depends:-подобное поле сломается напервой же правке списка.
references/format.mdправим только если разборвскроет неоднозначность в самой разметке.
feat/issue-cache-scriptsto feat/issue-cache-scripts