@nitra/cursor 1.13.65 → 1.13.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -334,7 +334,19 @@ jq -c '.operations[]' "$RESPONSE_CLEAN_FILE" | while IFS= read -r op_json; do
|
|
|
334
334
|
continue
|
|
335
335
|
;;
|
|
336
336
|
esac
|
|
337
|
-
|
|
337
|
+
# Keep the draft's `YYYYMMDD-HHMMSS-` prefix on the clean file: the name
|
|
338
|
+
# stays anchored to capture time, only the slug part changes between draft
|
|
339
|
+
# and clean, and docs/adr/ keeps sorting chronologically. Drafts without a
|
|
340
|
+
# timestamp prefix fall back to a bare `<slug>.md`.
|
|
341
|
+
case "$FILE" in
|
|
342
|
+
[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9]-*)
|
|
343
|
+
DEST_SLUG="$(printf '%s' "$FILE" | cut -c1-15)-$SLUG"
|
|
344
|
+
;;
|
|
345
|
+
*)
|
|
346
|
+
DEST_SLUG="$SLUG"
|
|
347
|
+
;;
|
|
348
|
+
esac
|
|
349
|
+
DEST_PATH=$(resolve_unique_slug_path "$DEST_SLUG")
|
|
338
350
|
printf '%s\n' "$CONTENT" > "$DEST_PATH"
|
|
339
351
|
rm -- "$SRC_PATH"
|
|
340
352
|
log "rewrite: $FILE → $(basename "$DEST_PATH")"
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
Формат — [Keep a Changelog](https://keepachangelog.com/uk/1.1.0/), нумерація — [SemVer](https://semver.org/lang/uk/).
|
|
6
6
|
|
|
7
|
+
## [1.13.66] - 2026-05-20
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- `adr`: `normalize-decisions.sh` тепер зберігає `YYYYMMDD-HHMMSS-`-префікс чернетки в імені clean-файлу — операція `rewrite` пише результат у `<timestamp>-<slug>.md` замість bare `<slug>.md`. Причина: під час нормалізації LLM генерує `slug` заново, тож раніше чернетка `20260518-092807-foo.md` ставала clean-файлом з абсолютно іншим іменем `bar.md` — назва «стрибала» цілком. Тепер timestamp-префікс лишається стабільним якорем: між draft і clean змінюється лише slug-частина, а `docs/adr/` сортується хронологічно (capture-час). Чернетки без `YYYYMMDD-HHMMSS-`-префікса лишаються на fallback bare `<slug>.md`. Колізії resolve'яться як і раніше — детермінований суфікс `-2`, `-3`, тепер на повному імені `<timestamp>-<slug>-N.md`. Зачеплено: [normalize-decisions.sh](.claude-template/hooks/normalize-decisions.sh) (нова `case`-гілка у rewrite-операції обчислює `DEST_SLUG` з timestamp-префіксом перед `resolve_unique_slug_path`), [adr.mdc](rules/adr/adr.mdc) (опис clean-формату, рядок таблиці `rewrite`, дерево каталогу `docs/adr/` й абзац про `slug`), [SKILL.md](skills/adr-normalize/SKILL.md) (опис rewrite-результату й дублів імен). Bump `adr.mdc` `2.0` → `2.1`.
|
|
12
|
+
|
|
7
13
|
## [1.13.65] - 2026-05-20
|
|
8
14
|
|
|
9
15
|
### Changed
|
package/package.json
CHANGED
package/rules/adr/adr.mdc
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Автоматичний збір ADR/Runbook/Knowledge-чернеток і батч-нормалізація у `docs/adr/` через Stop-хуки Claude Code та Cursor Agent
|
|
3
3
|
alwaysApply: true
|
|
4
|
-
version: '2.
|
|
4
|
+
version: '2.1'
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
## MADR v4 і дві фази
|
|
@@ -19,7 +19,7 @@ ADR живуть у єдиному каталозі **`docs/adr/`**. Clean ADR-
|
|
|
19
19
|
Є два стани файлу, які відрізняються YAML frontmatter:
|
|
20
20
|
|
|
21
21
|
- **Draft** — файл з frontmatter `session: …`, `captured: …`, `transcript: …` та timestamp-іменем `YYYYMMDD-HHMMSS-<sid>.md`. Пише `capture-decisions.sh` після кожної сесії.
|
|
22
|
-
- **Clean** — файл без frontmatter, з kebab-case
|
|
22
|
+
- **Clean** — файл без frontmatter, з kebab-case-іменем. `normalize-decisions.sh` зберігає timestamp-префікс чернетки → `YYYYMMDD-HHMMSS-<slug>.md` (наприклад `20260518-092807-ланцюжок-запуску-abie.md`); створений руками clean-файл може мати просто `<slug>.md`.
|
|
23
23
|
|
|
24
24
|
`normalize-decisions.sh` ніколи не чіпає clean-файли — крім випадку `merge-into`, коли дописує `## Update YYYY-MM-DD` в кінець наявного clean-файлу.
|
|
25
25
|
|
|
@@ -44,10 +44,10 @@ LLM повертає масив операцій:
|
|
|
44
44
|
| `op` | Семантика | Поля |
|
|
45
45
|
| --- | --- | --- |
|
|
46
46
|
| `delete` | Чернетка тривіальна / повністю покрита іншим clean-ADR-ом. | `file`, `reason` |
|
|
47
|
-
| `rewrite` | Чернетка стає окремим clean-файлом MADR v4 minimal: frontmatter знімається, ім'я → `<slug>.md
|
|
47
|
+
| `rewrite` | Чернетка стає окремим clean-файлом MADR v4 minimal: frontmatter знімається, ім'я → `<timestamp>-<slug>.md` (timestamp-префікс чернетки збережено), додаються `**Status:** Accepted`, `**Date:**` з `captured` і canonical MADR headings. | `file`, `slug`, `content` |
|
|
48
48
|
| `merge-into` | Чернетка повторює тему вже існуючого clean-файлу; дописуємо `## Update YYYY-MM-DD` у кінець `target`. | `file`, `target`, `additions` |
|
|
49
49
|
|
|
50
|
-
`slug` — kebab-case українською (`ланцюжок-запуску-abie`, `npm-publish-flow`); англійські технічні терміни лишаються англійською без транслітерації. Колізія
|
|
50
|
+
`slug` — kebab-case українською (`ланцюжок-запуску-abie`, `npm-publish-flow`); англійські технічні терміни лишаються англійською без транслітерації. До імені clean-файлу скрипт додає `YYYYMMDD-HHMMSS-` чернетки, тож запис лишається прив'язаним до часу capture, а `docs/adr/` сортується хронологічно. Колізія імен обробляється детермінованим суфіксом `-2`, `-3`.
|
|
51
51
|
|
|
52
52
|
### Жодних git-операцій
|
|
53
53
|
|
|
@@ -82,8 +82,8 @@ LLM повертає масив операцій:
|
|
|
82
82
|
|
|
83
83
|
```text
|
|
84
84
|
docs/adr/
|
|
85
|
-
├── YYYYMMDD-HHMMSS-<sid>.md
|
|
86
|
-
└──
|
|
85
|
+
├── YYYYMMDD-HHMMSS-<sid>.md # drafts (frontmatter session:/captured:/transcript:)
|
|
86
|
+
└── YYYYMMDD-HHMMSS-<slug>.md # clean ADR-и (без frontmatter, timestamp-префікс чернетки збережено)
|
|
87
87
|
.claude/hooks/
|
|
88
88
|
├── capture-decisions.sh # auto-synced з пакета
|
|
89
89
|
├── normalize-decisions.sh # auto-synced з пакета
|
|
@@ -48,7 +48,7 @@ description: >-
|
|
|
48
48
|
git diff docs/adr/
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
Видалені файли — `delete`-операція. Нові файли `<slug>.md` — `rewrite`. Модифіковані clean-файли — `merge-into`.
|
|
51
|
+
Видалені файли — `delete`-операція. Нові файли `<timestamp>-<slug>.md` (timestamp-префікс чернетки збережено) — `rewrite`. Модифіковані clean-файли — `merge-into`.
|
|
52
52
|
|
|
53
53
|
4. **Прийняти / відкотити:**
|
|
54
54
|
- Прийняти все: `git add docs/adr/ && git commit -m "adr: normalize batch"`.
|
|
@@ -67,4 +67,4 @@ description: >-
|
|
|
67
67
|
|
|
68
68
|
- LLM повернув криву JSON → у логу буде `invalid JSON response (first 200 chars): …`. Запусти ще раз — нерідко це разовий збій.
|
|
69
69
|
- Скрипт виходить миттєво без логу → перевір `ADR_NORMALIZE_RUNNING` у env (recursion guard) і чи репо не у стані merge/rebase.
|
|
70
|
-
- Перейменування зробило
|
|
70
|
+
- Перейменування зробило дублі імен (`<timestamp>-<slug>-2.md`) → це нормально, скрипт детермінований; під час review можна обʼєднати руками й видалити `-2`.
|