agent-quality-kit 0.2.4 → 0.2.5

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.
Files changed (3) hide show
  1. package/README.md +101 -94
  2. package/README.ru.md +162 -0
  3. package/package.json +2 -1
package/README.md CHANGED
@@ -1,160 +1,167 @@
1
1
  # AQK — Agent Quality Kit
2
2
 
3
+ **English** · [Русский](README.ru.md)
4
+
3
5
  [![npm](https://img.shields.io/npm/v/agent-quality-kit)](https://www.npmjs.com/package/agent-quality-kit)
4
- [![проверки](https://github.com/arsen-ask-lx/Agent_Quality_Kit/actions/workflows/ci.yml/badge.svg)](https://github.com/arsen-ask-lx/Agent_Quality_Kit/actions/workflows/ci.yml)
5
- [![лицензия MIT](https://img.shields.io/npm/l/agent-quality-kit)](LICENSE)
6
+ [![checks](https://github.com/arsen-ask-lx/Agent_Quality_Kit/actions/workflows/ci.yml/badge.svg)](https://github.com/arsen-ask-lx/Agent_Quality_Kit/actions/workflows/ci.yml)
7
+ [![MIT licence](https://img.shields.io/npm/l/agent-quality-kit)](LICENSE)
6
8
 
7
- **Стандарт готовности репозитория к тому, что код в нём пишет агент.** Обещание проекта
8
- становится командой с кодом возврата и его держит машина, а не чья-то добрая воля.
9
+ **A standard for whether a repository is ready to have its code written by agents.** Every
10
+ promise the project makes turns into a command with an exit code held by a machine, not by
11
+ someone's good intentions.
9
12
 
10
- Что вообще должно быть на проекте, чтобы это было возможно, словами, без привязки к языку и
11
- инструменту: [«тёмная фабрика» и обязательный минимум](kit/docs/ai/project-baseline.md).
13
+ What a project needs before that is even possible, in plain words, independent of language and
14
+ tooling: [the dark factory and the minimum that isn't optional](kit/docs/ai/project-baseline.md).
12
15
 
13
16
  ```bash
14
- npx agent-quality-kit start # кода ещё нет: сторожа дня 0 сразу
15
- npx agent-quality-kit doctor # код уже есть: уровень и что поставить
17
+ npx agent-quality-kit start # no code yet: day-zero guards, right away
18
+ npx agent-quality-kit doctor # code already exists: your level and what to install
16
19
  ```
17
20
 
18
- Ставить ничего не нужно, `npx` скачает пакет сам (230 КБ). Свежая версия прямо из репозитория —
19
- `npx github:arsen-ask-lx/Agent_Quality_Kit doctor`, но первый запуск такого вида молчит две-три
20
- минуты: он клонирует репозиторий целиком.
21
+ Nothing to install `npx` fetches the package itself (230 KB). The bleeding edge straight from
22
+ the repository is `npx github:arsen-ask-lx/Agent_Quality_Kit doctor`, but the first run that way
23
+ stays silent for two or three minutes: it clones the whole repository.
21
24
 
22
- **Что нужно.** Node 18+ и оболочка `sh` — она есть в macOS, Linux и WSL; на Windows подойдёт
23
- Git Bash. Переносимые проверки написаны на `sh` намеренно: он есть везде, где собирают код.
25
+ **Requirements.** Node 18+ and an `sh` shell present on macOS, Linux and WSL; Git Bash works on
26
+ Windows. The portable checks are written in `sh` on purpose: it exists everywhere code is built.
24
27
 
25
- **Не зависит от инструмента:** Claude Code, Codex, Cursor — и без ИИ тоже.
28
+ **Tool-agnostic:** Claude Code, Codex, Cursor — and without AI at all.
26
29
 
27
- При первой установке на машине `init`/`start` один раз печатают ссылку на звезду и на «завести
28
- Issue» ничего не постится сама, только текст для человека, и больше не повторяется.
30
+ The first time you run `init`/`start` on a machine, it prints a link to star the repo and to open
31
+ an issue, once. Nothing is posted anywhere it is text for a human, and it never repeats.
29
32
 
30
- **Готовые правила ставятся отдельно и по желанию.** Переносимая проверка работает без них
31
- всегда; если в проекте стоит `ruff`, `eslint` или `vulture`, запись возьмёт готовое правило
32
- оно точнее. Одна запись, `dead-code`, без готового инструмента не работает вовсе и честно
33
- скрывается: граф вызовов поиском по тексту не построить.
33
+ **Off-the-shelf rules are optional and installed separately.** The portable check always works
34
+ without them; if the project already has `ruff`, `eslint` or `vulture`, the entry will use the
35
+ native rule instead it is more precise. One entry, `dead-code`, does not work at all without a
36
+ real tool and honestly hides itself: you cannot build a call graph with a text search.
34
37
 
35
- ## Как устроено
38
+ ## How it works
36
39
 
37
- Весь стандарт файл `.aqk.yml` в корне:
40
+ The whole standard is one `.aqk.yml` file in the repository root:
38
41
 
39
42
  ```yaml
40
43
  aqk: 1
41
- entry: [AGENTS.md] # что агент читает первым
42
- rules: .aqk/rules # где стандарты
43
- gates: # что обязано пройтикомандами, не словами
44
+ entry: [AGENTS.md] # what the agent reads first
45
+ rules: .aqk/rules # where the standards live
46
+ gates: # what must passas commands, not as prose
44
47
  lint: "npm run lint"
45
48
  secrets-not-in-code: "bash gates/secrets-not-in-code/check.sh ."
46
- samples: gates # красный и зелёный образец каждой записи
47
- ratchets: ratchets # реестры долга: список может только укорачиваться
48
- lessons: incidents # где копятся уроки
49
+ samples: gates # a red and a green sample for every entry
50
+ ratchets: ratchets # debt registries: the list may only get shorter
51
+ lessons: incidents # where lessons accumulate
49
52
  ```
50
53
 
51
- Пустое полене заглушка, а честный ответ «ступень не пройдена»: `init` кладёт их пустыми,
52
- а заполняются они по мере того, как появляется чем их заполнить.
54
+ An empty field is not a placeholder it is an honest "this level is not reached". `init` writes
55
+ them empty, and they fill in as there becomes something real to put in them.
53
56
 
54
- **Если утверждение нельзя проверить машиной его в стандарте нет.** Иначе значок означает
55
- доверие к автору, а не факт.
57
+ **If a claim cannot be checked by a machine, it is not in this standard.** Otherwise the badge
58
+ would mean trust in the author rather than a fact.
56
59
 
57
- ## Четыре ступени
60
+ ## Four levels
58
61
 
59
- | Уровень | Требуется | Что доказано |
62
+ | Level | Required | What it proves |
60
63
  |---|---|---|
61
- | **AQK-0** | манифест и точка входа | инструмент знает, что читать |
62
- | **AQK-1** | правила есть, гейты объявлены командами | проверки исполняются |
63
- | **AQK-2** | у гейтов красные и зелёные образцы, долг под храповиком | гейт ловит брак и молчит на исправном коде |
64
- | **AQK-3** | журнал уроков с выводами | шишка не набивается дважды |
64
+ | **AQK-0** | a manifest and an entry point | the tooling knows what to read |
65
+ | **AQK-1** | rules exist, gates declared as commands | the checks are executable |
66
+ | **AQK-2** | gates have red and green samples, debt under a ratchet | the gate catches defects and stays quiet on correct code |
67
+ | **AQK-3** | a lesson journal with conclusions | the same bruise is not collected twice |
65
68
 
66
69
  ```bash
67
- aqk doctor --run --min 1 # в конвейере: ошибка, если ниже AQK-1 ИЛИ упал хоть один гейт
70
+ aqk doctor --run --min 1 # in CI: fails below AQK-1 OR if any gate failed
68
71
  ```
69
72
 
70
- ## Поставить гейт
73
+ ## Installing a gate
71
74
 
72
75
  ```bash
73
- aqk find "печать в проде" # есть ли уже такой гейтсверка по намерению
74
- aqk doctor # что применимо к этому репозиторию и чего нет
75
- aqk add secrets-not-in-code # копирует проверку и образцы в проект, объявляет в манифесте
76
- aqk doctor --run # запускает объявленные гейты и показывает результат
77
- aqk ratchet no-print-in-prod # старое долг, новое не пускать
76
+ aqk find "print statements in production" # is there already such a gate matched by intent
77
+ aqk doctor # what applies to this repository and what is missing
78
+ aqk add secrets-not-in-code # copies the check and its samples in, declares it
79
+ aqk doctor --run # runs the declared gates and shows the result
80
+ aqk ratchet no-print-in-prod # existing violations become debt, new ones are blocked
78
81
  ```
79
82
 
80
- Каждый `doctor --run` перезаписывает `.aqk/last-run.md` — короткий отчёт, что из объявленного
81
- реально сработало и за сколько. Список гейтов в манифесте молчит о том, сколько из них живы
82
- именно сейчас; отчёт нет. Файл эфемерный, в `.gitignore` его стоит держать самому.
83
+ Every `doctor --run` rewrites `.aqk/last-run.md` — a short report of what actually ran and how
84
+ long it took. The list of gates in the manifest says nothing about how many of them are alive
85
+ right now; the report does. The file is ephemeral keep it in your own `.gitignore`.
83
86
 
84
- ## Поймал ошибку, которую не поймал сторож
87
+ ## When a bug slips past the guards
85
88
 
86
89
  ```bash
87
- aqk why "файл вырос до девяти тысяч строк"
90
+ aqk why "a file grew to nine thousand lines"
88
91
  ```
89
92
 
90
- Ответ один из трёх, и выбирает его прогон, а не память: **сторожа не было** · **сторож есть,
91
- но эту поломку не видит** · **сторож есть и ловит значит его обошли**. Разница решает, что
92
- чинить: саму проверку или её место в конвейере. Без прогона эти два случая неразличимы, и
93
- чинят обычно не тот. При неуверенном совпадении команда не выбирает за тебя, а спрашивает.
93
+ The answer is one of three, and it is chosen by an actual run rather than by memory: **there was
94
+ no guard** · **the guard exists but does not see this failure** · **the guard exists and catches
95
+ it so it was bypassed**. The difference decides what to fix: the check itself, or its place in
96
+ the pipeline. Without a run those two are indistinguishable, and people usually fix the wrong
97
+ one. On an uncertain match the command asks instead of choosing for you.
94
98
 
95
- **Храповик** нужен, когда правило вводят в проект, где старый код ему не соответствует.
96
- Список нарушений снимается в реестр, гейт разрешает его **укорачивать** и запрещает удлинять.
97
- Правило действует со дня установки, старый код трогать не надо.
99
+ **The ratchet** is for introducing a rule into a project whose existing code violates it. The
100
+ violations are captured into a registry; the gate lets that list get **shorter** and refuses to
101
+ let it grow. The rule applies from the day it is installed — the old code stays untouched.
98
102
 
99
- `add` **копирует проверку в репозиторий**, а не ссылается на пакет: при установке через `npx`
100
- пакет временный, и завтра команда в манифесте указывала бы в никуда.
103
+ `add` **copies the check into your repository** rather than referencing the package: installed
104
+ via `npx` the package is temporary, and tomorrow the command in your manifest would point at
105
+ nothing.
101
106
 
102
- ## Каталог обещаний
107
+ ## The catalogue of promises
103
108
 
104
- `doctor` смотрит на репозиторийязыки, наличие гейтови показывает **только применимое**:
105
- что уже держит машина, что применимо и не поставлено, что скрыто и почему. Каталог может
106
- вырасти до сотен записей, конкретный проект по-прежнему увидит десяток.
109
+ `doctor` inspects the repositorylanguages, existing gatesand shows **only what applies**:
110
+ what a machine already holds, what applies but is not installed, and what is hidden and why. The
111
+ catalogue may grow to hundreds of entries; a given project still sees about a dozen.
107
112
 
108
- Запись принимается, только если её арбитр краснеет на красном образце, молчит на зелёном и
109
- назван реальный отказ, который она поймала. Проверяет это машина: `bash tool/selfcheck/gates.sh`.
113
+ An entry is accepted only if its arbiter goes red on the red sample, stays quiet on the green
114
+ one, and names a real failure it caught. A machine checks this: `bash tool/selfcheck/gates.sh`.
110
115
 
111
- ## Методички одним файлом
116
+ ## The guides as a single file
112
117
 
113
118
  ```bash
114
- aqk blob # собирает GOD_AI.md из kit/docs — чтобы разом отдать методички в чат
119
+ aqk blob # assembles GOD_AI.md out of kit/docs — to hand the guides to a chat in one go
115
120
  ```
116
121
 
117
- Файл **собирается, а не хранится**: править надо оригиналы. Копия, которую правят руками, через
118
- неделю расходится с источником, и непонятно, какая настоящая.
122
+ The file is **assembled, not stored**: edit the originals. A hand-edited copy drifts from its
123
+ source within a week, and then nobody knows which one is real.
119
124
 
120
- ## Принести свой гейт
125
+ ## Contributing a gate
121
126
 
122
- Каталог живёт чужими шишками. Порядок и порог в [`CONTRIBUTING.md`](CONTRIBUTING.md):
123
- сверься `aqk find`, заведи заготовку `aqk new`, положи два образца, заполни четыре поля,
124
- прогони машиной. Отбор делает `tool/selfcheck/gates.sh`, а не рецензент.
127
+ The catalogue lives on other people's bruises. The procedure and the bar are in
128
+ [`CONTRIBUTING.md`](CONTRIBUTING.md): check for duplicates with `aqk find`, scaffold with
129
+ `aqk new`, add two samples, fill in four fields, run the machine. The filtering is done by
130
+ `tool/selfcheck/gates.sh`, not by a reviewer.
125
131
 
126
- ## Журнал шишек
132
+ ## The bruise journal
127
133
 
128
134
  ```bash
129
- aqk note "гейт краснел на правильном коде" # запись без раздела «Вывод» не принимается
135
+ aqk note "the gate went red on correct code" # an entry without a conclusion is rejected
130
136
  ```
131
137
 
132
- ## Честно о состоянии
133
-
134
- Задача целиком — в [`PROJECT.md`](PROJECT.md): что строим, четыре сценария, критерий успеха, что осталось.
138
+ ## Honestly, where this stands
135
139
 
140
+ The full brief is in [`PROJECT.md`](PROJECT.md) (in Russian): what is being built, the four
141
+ scenarios, the success criterion, and what is left.
136
142
 
137
- Версия 1, один автор. Сам комплект держит **AQK-3**: девятнадцать проверок объявлено и
138
- прогоняется конвейером, два реестра долга под храповиком. Пока комплектом пользуется один
139
- человек, AQK красивое слово в README. Он начнёт работать, когда появится чужой третий проект.
143
+ Version 1, one author. The kit holds **AQK-3** on itself: everything declared is executed by CI
144
+ on every push, two debt registries under a ratchet `node tool/program.mjs doctor --run --min 1`.
145
+ As long as one person uses it, AQK is a nice acronym in a README. It starts being real when a
146
+ third, foreign project appears.
140
147
 
141
- **Стандарт нельзя выпустить первым.** Спецификация раньше практики это тридцать первый
142
- заброшенный репозиторий с манифестом и нулём пользователей. Порядок обратный:
148
+ **A standard cannot be shipped first.** A specification ahead of practice is the thirty-first
149
+ abandoned repository with a manifest and zero users. The order is the other way round:
143
150
 
144
- | # | Шаг | Состояние |
151
+ | # | Step | State |
145
152
  |---|---|---|
146
- | 1 | живём по этому на своих проектах | ⬜ измерено: у трёх своих проектов манифеста нет, уровень не заведён |
147
- | 2 | `doctor` считает уровень | ✅ сделано |
148
- | 3 | сложившееся записано как короткая спецификация | ✅ [`SPEC.md`](SPEC.md) |
149
- | 4 | третий проект**чужой** | ❌ первый честный сигнал, его ещё нет |
150
- | 5 | значок, сайт, разговор с людьми | ❌ только после четвёртого шага |
153
+ | 1 | live by this on our own projects | ⬜ measured: three of our own projects have no manifest |
154
+ | 2 | `doctor` computes the level | ✅ done |
155
+ | 3 | what settled is written up as a short spec | ✅ [`SPEC.md`](SPEC.md) |
156
+ | 4 | a third project **someone else's** | ❌ the first honest signal, still missing |
157
+ | 5 | badge, site, talking to people | ❌ only after step four |
151
158
 
152
- ## Очередь работ
159
+ ## The work queue
153
160
 
154
- Живёт в одном месте — [`PROJECT.md` §9](PROJECT.md). Список здесь не повторяется: два списка через месяц
155
- расходятся, и непонятно, какой настоящий.
161
+ Lives in one place — [`PROJECT.md` §9](PROJECT.md). It is not repeated here: two lists drift
162
+ apart within a month, and then nobody knows which is real.
156
163
 
157
- Чего нет: второго пользователя; покрытия команд, которые пишут на диск (проверены прогоном на
158
- чистой папке, но не по отдельности); третьегочужогопроекта.
164
+ What is missing: a second user; per-command coverage of the commands that write to disk (they are
165
+ exercised by a clean-folder run, but not individually); a third foreignproject.
159
166
 
160
167
  MIT.
package/README.ru.md ADDED
@@ -0,0 +1,162 @@
1
+ # AQK — Agent Quality Kit
2
+
3
+ [English](README.md) · **Русский**
4
+
5
+ [![npm](https://img.shields.io/npm/v/agent-quality-kit)](https://www.npmjs.com/package/agent-quality-kit)
6
+ [![проверки](https://github.com/arsen-ask-lx/Agent_Quality_Kit/actions/workflows/ci.yml/badge.svg)](https://github.com/arsen-ask-lx/Agent_Quality_Kit/actions/workflows/ci.yml)
7
+ [![лицензия MIT](https://img.shields.io/npm/l/agent-quality-kit)](LICENSE)
8
+
9
+ **Стандарт готовности репозитория к тому, что код в нём пишет агент.** Обещание проекта
10
+ становится командой с кодом возврата — и его держит машина, а не чья-то добрая воля.
11
+
12
+ Что вообще должно быть на проекте, чтобы это было возможно, — словами, без привязки к языку и
13
+ инструменту: [«тёмная фабрика» и обязательный минимум](kit/docs/ai/project-baseline.md).
14
+
15
+ ```bash
16
+ npx agent-quality-kit start # кода ещё нет: сторожа дня 0 сразу
17
+ npx agent-quality-kit doctor # код уже есть: уровень и что поставить
18
+ ```
19
+
20
+ Ставить ничего не нужно, `npx` скачает пакет сам (230 КБ). Свежая версия прямо из репозитория —
21
+ `npx github:arsen-ask-lx/Agent_Quality_Kit doctor`, но первый запуск такого вида молчит две-три
22
+ минуты: он клонирует репозиторий целиком.
23
+
24
+ **Что нужно.** Node 18+ и оболочка `sh` — она есть в macOS, Linux и WSL; на Windows подойдёт
25
+ Git Bash. Переносимые проверки написаны на `sh` намеренно: он есть везде, где собирают код.
26
+
27
+ **Не зависит от инструмента:** Claude Code, Codex, Cursor — и без ИИ тоже.
28
+
29
+ При первой установке на машине `init`/`start` один раз печатают ссылку на звезду и на «завести
30
+ Issue» — ничего не постится сама, только текст для человека, и больше не повторяется.
31
+
32
+ **Готовые правила ставятся отдельно и по желанию.** Переносимая проверка работает без них
33
+ всегда; если в проекте стоит `ruff`, `eslint` или `vulture`, запись возьмёт готовое правило —
34
+ оно точнее. Одна запись, `dead-code`, без готового инструмента не работает вовсе и честно
35
+ скрывается: граф вызовов поиском по тексту не построить.
36
+
37
+ ## Как устроено
38
+
39
+ Весь стандарт — файл `.aqk.yml` в корне:
40
+
41
+ ```yaml
42
+ aqk: 1
43
+ entry: [AGENTS.md] # что агент читает первым
44
+ rules: .aqk/rules # где стандарты
45
+ gates: # что обязано пройти — командами, не словами
46
+ lint: "npm run lint"
47
+ secrets-not-in-code: "bash gates/secrets-not-in-code/check.sh ."
48
+ samples: gates # красный и зелёный образец каждой записи
49
+ ratchets: ratchets # реестры долга: список может только укорачиваться
50
+ lessons: incidents # где копятся уроки
51
+ ```
52
+
53
+ Пустое поле — не заглушка, а честный ответ «ступень не пройдена»: `init` кладёт их пустыми,
54
+ а заполняются они по мере того, как появляется чем их заполнить.
55
+
56
+ **Если утверждение нельзя проверить машиной — его в стандарте нет.** Иначе значок означает
57
+ доверие к автору, а не факт.
58
+
59
+ ## Четыре ступени
60
+
61
+ | Уровень | Требуется | Что доказано |
62
+ |---|---|---|
63
+ | **AQK-0** | манифест и точка входа | инструмент знает, что читать |
64
+ | **AQK-1** | правила есть, гейты объявлены командами | проверки исполняются |
65
+ | **AQK-2** | у гейтов красные и зелёные образцы, долг под храповиком | гейт ловит брак и молчит на исправном коде |
66
+ | **AQK-3** | журнал уроков с выводами | шишка не набивается дважды |
67
+
68
+ ```bash
69
+ aqk doctor --run --min 1 # в конвейере: ошибка, если ниже AQK-1 ИЛИ упал хоть один гейт
70
+ ```
71
+
72
+ ## Поставить гейт
73
+
74
+ ```bash
75
+ aqk find "печать в проде" # есть ли уже такой гейт — сверка по намерению
76
+ aqk doctor # что применимо к этому репозиторию и чего нет
77
+ aqk add secrets-not-in-code # копирует проверку и образцы в проект, объявляет в манифесте
78
+ aqk doctor --run # запускает объявленные гейты и показывает результат
79
+ aqk ratchet no-print-in-prod # старое — долг, новое не пускать
80
+ ```
81
+
82
+ Каждый `doctor --run` перезаписывает `.aqk/last-run.md` — короткий отчёт, что из объявленного
83
+ реально сработало и за сколько. Список гейтов в манифесте молчит о том, сколько из них живы
84
+ именно сейчас; отчёт — нет. Файл эфемерный, в `.gitignore` его стоит держать самому.
85
+
86
+ ## Поймал ошибку, которую не поймал сторож
87
+
88
+ ```bash
89
+ aqk why "файл вырос до девяти тысяч строк"
90
+ ```
91
+
92
+ Ответ один из трёх, и выбирает его прогон, а не память: **сторожа не было** · **сторож есть,
93
+ но эту поломку не видит** · **сторож есть и ловит — значит его обошли**. Разница решает, что
94
+ чинить: саму проверку или её место в конвейере. Без прогона эти два случая неразличимы, и
95
+ чинят обычно не тот. При неуверенном совпадении команда не выбирает за тебя, а спрашивает.
96
+
97
+ **Храповик** нужен, когда правило вводят в проект, где старый код ему не соответствует.
98
+ Список нарушений снимается в реестр, гейт разрешает его **укорачивать** и запрещает удлинять.
99
+ Правило действует со дня установки, старый код трогать не надо.
100
+
101
+ `add` **копирует проверку в репозиторий**, а не ссылается на пакет: при установке через `npx`
102
+ пакет временный, и завтра команда в манифесте указывала бы в никуда.
103
+
104
+ ## Каталог обещаний
105
+
106
+ `doctor` смотрит на репозиторий — языки, наличие гейтов — и показывает **только применимое**:
107
+ что уже держит машина, что применимо и не поставлено, что скрыто и почему. Каталог может
108
+ вырасти до сотен записей, конкретный проект по-прежнему увидит десяток.
109
+
110
+ Запись принимается, только если её арбитр краснеет на красном образце, молчит на зелёном и
111
+ назван реальный отказ, который она поймала. Проверяет это машина: `bash tool/selfcheck/gates.sh`.
112
+
113
+ ## Методички одним файлом
114
+
115
+ ```bash
116
+ aqk blob # собирает GOD_AI.md из kit/docs — чтобы разом отдать методички в чат
117
+ ```
118
+
119
+ Файл **собирается, а не хранится**: править надо оригиналы. Копия, которую правят руками, через
120
+ неделю расходится с источником, и непонятно, какая настоящая.
121
+
122
+ ## Принести свой гейт
123
+
124
+ Каталог живёт чужими шишками. Порядок и порог — в [`CONTRIBUTING.md`](CONTRIBUTING.md):
125
+ сверься `aqk find`, заведи заготовку `aqk new`, положи два образца, заполни четыре поля,
126
+ прогони машиной. Отбор делает `tool/selfcheck/gates.sh`, а не рецензент.
127
+
128
+ ## Журнал шишек
129
+
130
+ ```bash
131
+ aqk note "гейт краснел на правильном коде" # запись без вывода не принимается
132
+ ```
133
+
134
+ ## Честно о состоянии
135
+
136
+ Задача целиком — в [`PROJECT.md`](PROJECT.md): что строим, четыре сценария, критерий успеха, что осталось.
137
+
138
+ Версия 1, один автор. Сам комплект держит **AQK-3**: всё объявленное прогоняется конвейером при
139
+ каждом пуше, два реестра долга под храповиком — `node tool/program.mjs doctor --run --min 1`.
140
+ Пока комплектом пользуется один человек, AQK — красивое слово в README. Он начнёт работать,
141
+ когда появится чужой третий проект.
142
+
143
+ **Стандарт нельзя выпустить первым.** Спецификация раньше практики — это тридцать первый
144
+ заброшенный репозиторий с манифестом и нулём пользователей. Порядок обратный:
145
+
146
+ | # | Шаг | Состояние |
147
+ |---|---|---|
148
+ | 1 | живём по этому на своих проектах | ⬜ измерено: у трёх своих проектов манифеста нет, уровень не заведён |
149
+ | 2 | `doctor` считает уровень | ✅ сделано |
150
+ | 3 | сложившееся записано как короткая спецификация | ✅ [`SPEC.md`](SPEC.md) |
151
+ | 4 | третий проект — **чужой** | ❌ первый честный сигнал, его ещё нет |
152
+ | 5 | значок, сайт, разговор с людьми | ❌ только после четвёртого шага |
153
+
154
+ ## Очередь работ
155
+
156
+ Живёт в одном месте — [`PROJECT.md` §9](PROJECT.md). Список здесь не повторяется: два списка через месяц
157
+ расходятся, и непонятно, какой настоящий.
158
+
159
+ Чего нет: второго пользователя; покрытия команд, которые пишут на диск (проверены прогоном на
160
+ чистой папке, но не по отдельности); третьего — чужого — проекта.
161
+
162
+ MIT.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-quality-kit",
3
- "version": "0.2.4",
3
+ "version": "0.2.5",
4
4
  "description": "AQK — Agent Quality Kit: переносимый комплект, приводящий проект в состояние, пригодное для работы агентов. Правила, механические упоры, накопленные уроки. Одна команда, любой инструмент.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -10,6 +10,7 @@
10
10
  "tool",
11
11
  "kit",
12
12
  "README.md",
13
+ "README.ru.md",
13
14
  "LICENSE"
14
15
  ],
15
16
  "engines": {