kodu 2.2.0 → 3.0.2
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.
- package/README.md +24 -3
- package/bin/kodu.js +40 -0
- package/package.json +12 -67
- package/scripts/install.js +68 -0
- package/scripts/postinstall.js +22 -0
- package/AGENTS.md +0 -214
- package/__tests__/core/fs/fs.service.test.ts +0 -72
- package/__tests__/core/registry/registry.service.test.ts +0 -82
- package/__tests__/shared/cleaner/cleaner.service.test.ts +0 -102
- package/__tests__/shared/git/git.service.test.ts +0 -84
- package/__tests__/shared/runbook/runbook.service.test.ts +0 -104
- package/__tests__/shared/tokenizer/tokenizer.service.test.ts +0 -45
- package/biome.json +0 -50
- package/dist/package.json +0 -96
- package/dist/src/app.module.d.ts +0 -2
- package/dist/src/app.module.js +0 -42
- package/dist/src/app.module.js.map +0 -1
- package/dist/src/commands/clean/clean.command.d.ts +0 -37
- package/dist/src/commands/clean/clean.command.js +0 -240
- package/dist/src/commands/clean/clean.command.js.map +0 -1
- package/dist/src/commands/clean/clean.module.d.ts +0 -2
- package/dist/src/commands/clean/clean.module.js +0 -26
- package/dist/src/commands/clean/clean.module.js.map +0 -1
- package/dist/src/commands/init/init.command.d.ts +0 -10
- package/dist/src/commands/init/init.command.js +0 -96
- package/dist/src/commands/init/init.command.js.map +0 -1
- package/dist/src/commands/init/init.module.d.ts +0 -2
- package/dist/src/commands/init/init.module.js +0 -22
- package/dist/src/commands/init/init.module.js.map +0 -1
- package/dist/src/commands/ops/ops-add.command.d.ts +0 -18
- package/dist/src/commands/ops/ops-add.command.js +0 -102
- package/dist/src/commands/ops/ops-add.command.js.map +0 -1
- package/dist/src/commands/ops/ops-init.command.d.ts +0 -22
- package/dist/src/commands/ops/ops-init.command.js +0 -130
- package/dist/src/commands/ops/ops-init.command.js.map +0 -1
- package/dist/src/commands/ops/ops-list.command.d.ts +0 -12
- package/dist/src/commands/ops/ops-list.command.js +0 -73
- package/dist/src/commands/ops/ops-list.command.js.map +0 -1
- package/dist/src/commands/ops/ops-path.command.d.ts +0 -9
- package/dist/src/commands/ops/ops-path.command.js +0 -52
- package/dist/src/commands/ops/ops-path.command.js.map +0 -1
- package/dist/src/commands/ops/ops-runbook.command.d.ts +0 -12
- package/dist/src/commands/ops/ops-runbook.command.js +0 -81
- package/dist/src/commands/ops/ops-runbook.command.js.map +0 -1
- package/dist/src/commands/ops/ops-status.command.d.ts +0 -11
- package/dist/src/commands/ops/ops-status.command.js +0 -62
- package/dist/src/commands/ops/ops-status.command.js.map +0 -1
- package/dist/src/commands/ops/ops-use.command.d.ts +0 -12
- package/dist/src/commands/ops/ops-use.command.js +0 -76
- package/dist/src/commands/ops/ops-use.command.js.map +0 -1
- package/dist/src/commands/ops/ops.command.d.ts +0 -7
- package/dist/src/commands/ops/ops.command.js +0 -56
- package/dist/src/commands/ops/ops.command.js.map +0 -1
- package/dist/src/commands/ops/ops.helpers.d.ts +0 -2
- package/dist/src/commands/ops/ops.helpers.js +0 -11
- package/dist/src/commands/ops/ops.helpers.js.map +0 -1
- package/dist/src/commands/ops/ops.module.d.ts +0 -2
- package/dist/src/commands/ops/ops.module.js +0 -36
- package/dist/src/commands/ops/ops.module.js.map +0 -1
- package/dist/src/commands/pack/pack.command.d.ts +0 -51
- package/dist/src/commands/pack/pack.command.js +0 -355
- package/dist/src/commands/pack/pack.command.js.map +0 -1
- package/dist/src/commands/pack/pack.module.d.ts +0 -2
- package/dist/src/commands/pack/pack.module.js +0 -27
- package/dist/src/commands/pack/pack.module.js.map +0 -1
- package/dist/src/core/config/config.module.d.ts +0 -2
- package/dist/src/core/config/config.module.js +0 -23
- package/dist/src/core/config/config.module.js.map +0 -1
- package/dist/src/core/config/config.schema.d.ts +0 -19
- package/dist/src/core/config/config.schema.js +0 -56
- package/dist/src/core/config/config.schema.js.map +0 -1
- package/dist/src/core/config/config.service.d.ts +0 -7
- package/dist/src/core/config/config.service.js +0 -49
- package/dist/src/core/config/config.service.js.map +0 -1
- package/dist/src/core/config/prompt.service.d.ts +0 -10
- package/dist/src/core/config/prompt.service.js +0 -80
- package/dist/src/core/config/prompt.service.js.map +0 -1
- package/dist/src/core/file-system/fs.module.d.ts +0 -2
- package/dist/src/core/file-system/fs.module.js +0 -21
- package/dist/src/core/file-system/fs.module.js.map +0 -1
- package/dist/src/core/file-system/fs.service.d.ts +0 -27
- package/dist/src/core/file-system/fs.service.js +0 -203
- package/dist/src/core/file-system/fs.service.js.map +0 -1
- package/dist/src/core/registry/registry.module.d.ts +0 -2
- package/dist/src/core/registry/registry.module.js +0 -22
- package/dist/src/core/registry/registry.module.js.map +0 -1
- package/dist/src/core/registry/registry.schema.d.ts +0 -24
- package/dist/src/core/registry/registry.schema.js +0 -21
- package/dist/src/core/registry/registry.schema.js.map +0 -1
- package/dist/src/core/registry/registry.service.d.ts +0 -16
- package/dist/src/core/registry/registry.service.js +0 -91
- package/dist/src/core/registry/registry.service.js.map +0 -1
- package/dist/src/core/ui/ui.module.d.ts +0 -2
- package/dist/src/core/ui/ui.module.js +0 -22
- package/dist/src/core/ui/ui.module.js.map +0 -1
- package/dist/src/core/ui/ui.service.d.ts +0 -22
- package/dist/src/core/ui/ui.service.js +0 -43
- package/dist/src/core/ui/ui.service.js.map +0 -1
- package/dist/src/main.d.ts +0 -2
- package/dist/src/main.js +0 -16
- package/dist/src/main.js.map +0 -1
- package/dist/src/shared/cleaner/cleaner.service.d.ts +0 -23
- package/dist/src/shared/cleaner/cleaner.service.js +0 -223
- package/dist/src/shared/cleaner/cleaner.service.js.map +0 -1
- package/dist/src/shared/cleaner/cleaner.types.d.ts +0 -21
- package/dist/src/shared/cleaner/cleaner.types.js +0 -3
- package/dist/src/shared/cleaner/cleaner.types.js.map +0 -1
- package/dist/src/shared/constants.d.ts +0 -4
- package/dist/src/shared/constants.js +0 -113
- package/dist/src/shared/constants.js.map +0 -1
- package/dist/src/shared/deps/deps.module.d.ts +0 -2
- package/dist/src/shared/deps/deps.module.js +0 -21
- package/dist/src/shared/deps/deps.module.js.map +0 -1
- package/dist/src/shared/deps/deps.service.d.ts +0 -15
- package/dist/src/shared/deps/deps.service.js +0 -114
- package/dist/src/shared/deps/deps.service.js.map +0 -1
- package/dist/src/shared/git/git.module.d.ts +0 -2
- package/dist/src/shared/git/git.module.js +0 -21
- package/dist/src/shared/git/git.module.js.map +0 -1
- package/dist/src/shared/git/git.service.d.ts +0 -5
- package/dist/src/shared/git/git.service.js +0 -56
- package/dist/src/shared/git/git.service.js.map +0 -1
- package/dist/src/shared/runbook/runbook.module.d.ts +0 -2
- package/dist/src/shared/runbook/runbook.module.js +0 -22
- package/dist/src/shared/runbook/runbook.module.js.map +0 -1
- package/dist/src/shared/runbook/runbook.service.d.ts +0 -20
- package/dist/src/shared/runbook/runbook.service.js +0 -118
- package/dist/src/shared/runbook/runbook.service.js.map +0 -1
- package/dist/src/shared/runbook/runbook.templates.d.ts +0 -6
- package/dist/src/shared/runbook/runbook.templates.js +0 -49
- package/dist/src/shared/runbook/runbook.templates.js.map +0 -1
- package/dist/src/shared/tokenizer/tokenizer.module.d.ts +0 -2
- package/dist/src/shared/tokenizer/tokenizer.module.js +0 -21
- package/dist/src/shared/tokenizer/tokenizer.module.js.map +0 -1
- package/dist/src/shared/tokenizer/tokenizer.service.d.ts +0 -10
- package/dist/src/shared/tokenizer/tokenizer.service.js +0 -36
- package/dist/src/shared/tokenizer/tokenizer.service.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- package/docs/todo.md +0 -7
- package/knip.json +0 -10
- package/kodu.json +0 -63
- package/kodu.schema.json +0 -100
- package/lefthook.yml +0 -11
- package/nest-cli.json +0 -8
- package/registry.schema.json +0 -39
- package/scripts/generate-json-schema.ts +0 -27
- package/skills/ac/SKILL.md +0 -239
- package/skills/al/SKILL.md +0 -98
- package/skills/audit/SKILL.md +0 -205
- package/skills/audit/audit-baseline-template.yml +0 -188
- package/skills/audit/runtime-detect.md +0 -64
- package/skills/audit/stacks/_generic.md +0 -41
- package/skills/audit/stacks/_registry.md +0 -47
- package/skills/audit/stacks/go.md +0 -66
- package/skills/audit/stacks/java.md +0 -44
- package/skills/audit/stacks/node.md +0 -57
- package/skills/audit/stacks/python.md +0 -45
- package/skills/audit/stacks/rust.md +0 -44
- package/skills/audit-api-contracts/SKILL.md +0 -201
- package/skills/audit-architecture/SKILL.md +0 -200
- package/skills/audit-bugs/SKILL.md +0 -226
- package/skills/audit-concurrency/SKILL.md +0 -197
- package/skills/audit-deployment/SKILL.md +0 -218
- package/skills/audit-docs/SKILL.md +0 -209
- package/skills/audit-errors/SKILL.md +0 -216
- package/skills/audit-logging/SKILL.md +0 -197
- package/skills/audit-matrix/SKILL.md +0 -245
- package/skills/audit-meta/SKILL.md +0 -120
- package/skills/audit-naming/SKILL.md +0 -200
- package/skills/audit-owasp/SKILL.md +0 -223
- package/skills/audit-performance/SKILL.md +0 -199
- package/skills/audit-reinvention/SKILL.md +0 -214
- package/skills/audit-secrets/SKILL.md +0 -198
- package/skills/audit-tests/SKILL.md +0 -210
- package/skills/audit-validation/SKILL.md +0 -206
- package/skills/audit-verify/SKILL.md +0 -139
- package/skills/audit-yagni/SKILL.md +0 -188
- package/skills/doc-gen/SKILL.md +0 -490
- package/skills/doc-gen/scripts/doc_gen.py +0 -911
- package/skills/generate-project-docs/SKILL.md +0 -380
- package/skills/implement-project/SKILL.md +0 -409
- package/skills/liteend-init/SKILL.md +0 -84
- package/skills/litefront-init/SKILL.md +0 -96
- package/skills/litefront-prototype/SKILL.md +0 -484
- package/skills/ops/SKILL.md +0 -94
- package/skills/post-call-task-builder/SKILL.md +0 -419
- package/skills/project-setup-standardizer/SKILL.md +0 -285
- package/skills/skills-best-practices/SKILL.md +0 -415
- package/skills/start/SKILL.md +0 -319
- package/skills/tech-blueprint/SKILL.md +0 -890
- package/skills/tech-blueprint/scripts/blueprint_validator.py +0 -417
- package/src/app.module.ts +0 -29
- package/src/commands/clean/clean.command.ts +0 -235
- package/src/commands/clean/clean.module.ts +0 -13
- package/src/commands/init/init.command.ts +0 -92
- package/src/commands/init/init.module.ts +0 -9
- package/src/commands/ops/ops-add.command.ts +0 -83
- package/src/commands/ops/ops-init.command.ts +0 -125
- package/src/commands/ops/ops-list.command.ts +0 -57
- package/src/commands/ops/ops-path.command.ts +0 -38
- package/src/commands/ops/ops-runbook.command.ts +0 -74
- package/src/commands/ops/ops-status.command.ts +0 -47
- package/src/commands/ops/ops-use.command.ts +0 -76
- package/src/commands/ops/ops.command.ts +0 -42
- package/src/commands/ops/ops.helpers.ts +0 -20
- package/src/commands/ops/ops.module.ts +0 -23
- package/src/commands/pack/pack.command.ts +0 -347
- package/src/commands/pack/pack.module.ts +0 -14
- package/src/core/config/config.module.ts +0 -10
- package/src/core/config/config.schema.ts +0 -58
- package/src/core/config/config.service.ts +0 -43
- package/src/core/config/prompt.service.ts +0 -80
- package/src/core/file-system/fs.module.ts +0 -8
- package/src/core/file-system/fs.service.ts +0 -248
- package/src/core/registry/registry.module.ts +0 -9
- package/src/core/registry/registry.schema.ts +0 -46
- package/src/core/registry/registry.service.ts +0 -128
- package/src/core/ui/ui.module.ts +0 -9
- package/src/core/ui/ui.service.ts +0 -39
- package/src/main.ts +0 -12
- package/src/shared/cleaner/cleaner.service.ts +0 -289
- package/src/shared/cleaner/cleaner.types.ts +0 -23
- package/src/shared/constants.ts +0 -118
- package/src/shared/deps/deps.module.ts +0 -8
- package/src/shared/deps/deps.service.ts +0 -175
- package/src/shared/git/git.module.ts +0 -8
- package/src/shared/git/git.service.ts +0 -47
- package/src/shared/runbook/runbook.module.ts +0 -9
- package/src/shared/runbook/runbook.service.ts +0 -164
- package/src/shared/runbook/runbook.templates.ts +0 -66
- package/src/shared/tokenizer/tokenizer.module.ts +0 -8
- package/src/shared/tokenizer/tokenizer.service.ts +0 -30
- package/tsconfig.build.json +0 -7
- package/tsconfig.json +0 -28
|
@@ -1,380 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: generate-project-docs
|
|
3
|
-
description: Как создавать понятную, многоуровневую и строго структурированную документацию для любого программного проекта. Обязательно используй этот навык всякий раз, когда пользователь просит написать документацию, задокументировать код/проект, создать README, описать архитектуру, бэкенд, фронтенд или скрипты. Даже если пользователь просто кидает папку с кодом и просит "опиши это", применяй этот навык.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Генерация документации проекта
|
|
7
|
-
|
|
8
|
-
Ты — Senior Technical Writer и опытный Архитектор ПО. Твоя задача — анализировать предоставленный код/проект и создавать
|
|
9
|
-
предсказуемую, строго структурированную документацию, которая ведёт читателя за руку: сначала суть и контекст, затем
|
|
10
|
-
постепенно — детали.
|
|
11
|
-
|
|
12
|
-
## 1. Главные принципы (СТРОГО СОБЛЮДАТЬ)
|
|
13
|
-
|
|
14
|
-
* **Простой язык без "воды":** Пиши для Junior-разработчиков и Менеджеров. Каждое предложение должно нести смысл.
|
|
15
|
-
Конкретные запреты:
|
|
16
|
-
* Нельзя использовать термин, если есть более простой синоним: «использует» вместо «имплементирует»,
|
|
17
|
-
«хранит» вместо «персистирует», «проверяет» вместо «валидирует».
|
|
18
|
-
* Нельзя нагромождать: «высокодоступная отказоустойчивая распределённая система» → «сервис, который не падает
|
|
19
|
-
при отказе одного узла».
|
|
20
|
-
* Аббревиатуры расшифровывать при первом упоминании: «JWT (JSON Web Token)».
|
|
21
|
-
* **Правило "ЗАЧЕМ", а не только "ЧТО":** Никогда не описывай функцию ради функции.
|
|
22
|
-
* *Плохо:* "Модуль X отвечает за безопасность."
|
|
23
|
-
* *Хорошо:* "Модуль X: шифрует пароли пользователей, чтобы при взломе базы данных злоумышленники не получили к ним
|
|
24
|
-
доступ."
|
|
25
|
-
* **Принцип "Strict Separation" (Строгое разграничение):** Информацию в файлах не дублировать, а дополнять.
|
|
26
|
-
* `README.md`: Суть, высокоуровневая архитектура (C4), быстрый запуск.
|
|
27
|
-
* `features.md`: Функционал, сценарии использования (User-Journey), права доступа.
|
|
28
|
-
* `technical_reference.md`: Техническая реализация, структура кода, API, наблюдаемость.
|
|
29
|
-
* **Многоуровневость и «ведение за руку»:** Документация должна вести читателя от общего к частному. Читатель не должен
|
|
30
|
-
встречать незнакомый термин или компонент без того, чтобы он был объяснён выше по тексту.
|
|
31
|
-
* **Никакого мусора:** Не описывай каждый геттер/сеттер или стандартные функции языка. Описывай только логические блоки,
|
|
32
|
-
важные классы и их взаимодействие.
|
|
33
|
-
* **Верифицируемость:** Документация считается полной только тогда, когда она отвечает на вопрос: «Как убедиться, что
|
|
34
|
-
система работает правильно, и что делать, если она не работает?»
|
|
35
|
-
* **Терминологическая последовательность:** Каждый термин или сущность, встречающиеся в документации, должны быть
|
|
36
|
-
либо общеизвестными, либо определёнными ранее в том же документе.
|
|
37
|
-
* *Общеизвестные* (не требуют определения): HTTP, JSON, SQL, REST, Docker, Git и аналогичные.
|
|
38
|
-
* *Специфичные для проекта* (требуют определения при первом упоминании): доменные сущности («Транзакция»,
|
|
39
|
-
«Воркспейс»), внутренние аббревиатуры, нестандартные паттерны. Определение — в Глоссарии README или в
|
|
40
|
-
скобках сразу после термина.
|
|
41
|
-
* **Запрещено:** использовать технический термин в секции 3 технического справочника, если он введён только в секции 6.
|
|
42
|
-
* **Честность при неопределённости:** Если какую-то информацию не удалось определить из кода (нет .env-файла,
|
|
43
|
-
конфига логирования, тестовых команд) — написать явно «Не удалось определить из кода. Уточни у команды.»
|
|
44
|
-
вместо того, чтобы выдумывать или молча пропускать секцию.
|
|
45
|
-
**Запрещено выдумывать бизнес-цели или проблемы**, которых нет в коде или предоставленных документах.
|
|
46
|
-
|
|
47
|
-
## 2. Требуемая структура файлов
|
|
48
|
-
|
|
49
|
-
Результат ВСЕГДА должен состоять ровно из 3 файлов Markdown. Все файлы должны ссылаться друг на друга. Создай папку `docs/` и запиши их туда.
|
|
50
|
-
|
|
51
|
-
### Файл 1: `README.md` (Точка входа - "Speed-to-Insight")
|
|
52
|
-
|
|
53
|
-
Этот файл должен давать понимание системы за 30 секунд. Порядок секций СТРОГО фиксирован:
|
|
54
|
-
|
|
55
|
-
**1. Суть проекта** — ровно три предложения:
|
|
56
|
-
* Предложение 1: **Что делает система** — кратко, на основе кода, без абстракций.
|
|
57
|
-
*Пример: «Сервис аутентификации: выдаёт и проверяет JWT-токены для микросервисной платформы.»*
|
|
58
|
-
* Предложение 2: **Кто её использует** — роли или типы пользователей, видимые из кода.
|
|
59
|
-
*Пример: «Используется внутренними сервисами платформы и мобильным клиентом.»*
|
|
60
|
-
* Предложение 3 (ОПЦИОНАЛЬНО): **Зачем это существует/какую проблему решает**. Писать ТОЛЬКО если это явно указано в комментариях, `VISION.md` или `README`. Если подтвержденной инфы нет — пропустить.
|
|
61
|
-
* **Запрещено:** придумывать бизнес-результаты, которых нет в коде.
|
|
62
|
-
|
|
63
|
-
**2. Как работает** — 3-5 предложений обычным языком, описывающих путь от действия пользователя до результата.
|
|
64
|
-
* Только факты из кода, без технических названий модулей — только действия и результаты.
|
|
65
|
-
* Если проект — библиотека/CLI без UI: описать основной поток вызовов.
|
|
66
|
-
* *Пример: «Пользователь описывает идею стратегии в чате → AI-агент генерирует код → стратегия
|
|
67
|
-
публикуется в Арену → система автоматически запускает её на реальных рыночных данных и показывает
|
|
68
|
-
метрики в рейтинге.»*
|
|
69
|
-
|
|
70
|
-
**3. Высокоуровневая архитектура (C4 Context):** Mermaid-блок `graph TD`, показывающий систему в окружении (клиенты, внешние системы, БД).
|
|
71
|
-
* Участники: клиент(ы) → шлюз/API → ключевые сервисы → хранилища / внешние системы.
|
|
72
|
-
* Не более ~10 узлов. Цель: дать карту компонентов ДО того, как читатель увидит поток данных.
|
|
73
|
-
* *Пример:*
|
|
74
|
-
```mermaid
|
|
75
|
-
graph TD
|
|
76
|
-
Client[Web Client]
|
|
77
|
-
Gateway[API Gateway]
|
|
78
|
-
Service[App Service]
|
|
79
|
-
DB[(Database)]
|
|
80
|
-
Client --> Gateway
|
|
81
|
-
Gateway --> Service
|
|
82
|
-
Service --> DB
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
**4. Глоссарий ключевых понятий** — обязательный блок, если в проекте есть доменные сущности.
|
|
86
|
-
* Формат: `**Термин** — одно предложение, что это`.
|
|
87
|
-
* 3-8 терминов: только **доменные/бизнес сущности** проекта («Транзакция», «Слот»).
|
|
88
|
-
* Технические термины (HTTP, SQL, Контроллер, Сервис) — **ЗАПРЕЩЕНЫ**.
|
|
89
|
-
* Размещается здесь, чтобы читатель встретил определения ДО погружения в детали.
|
|
90
|
-
* Если проект не имеет специфических доменных терминов (например, простая утилита) — раздел пропустить.
|
|
91
|
-
|
|
92
|
-
**5. Оглавление:** Ссылки на `features.md` и `technical_reference.md`. Оглавление должно явно указывать ключевые
|
|
93
|
-
технические секции (Архитектура, Структура проекта, Внешние зависимости, Безопасность, API-контракт) через anchor-ссылки вида `technical_reference.md#6-api-контракт` — чтобы читатель с первой страницы
|
|
94
|
-
видел полноту документации и мог перейти к нужной секции в один клик.
|
|
95
|
-
|
|
96
|
-
**6. Быстрый старт (Quick Start):** Пошаговая инструкция (1-2-3 шага), как запустить проект локально.
|
|
97
|
-
* Каждый шаг заканчивается строкой: `✓ Ожидаемый результат: [конкретный лог или ответ сервера]`.
|
|
98
|
-
* *Пример: `✓ Ожидаемый результат: Сервер доступен на http://localhost:4000/graphql`*
|
|
99
|
-
* Добавить **Точку верификации**: одну `curl` команду или CLI-вызов для проверки работоспособности.
|
|
100
|
-
|
|
101
|
-
**7. Конфигурация:** Таблица с переменными окружения (`.env`) и объяснением, ЗАЧЕМ нужна каждая из них.
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
### Файл 2: `features.md` (Функциональный уровень - "Пользовательская ценность")
|
|
106
|
-
|
|
107
|
-
Этот файл описывает функциональность с точки зрения пользователя или системы.
|
|
108
|
-
**Структура файла:**
|
|
109
|
-
|
|
110
|
-
1. **Список возможностей:** Что конкретно делает система.
|
|
111
|
-
|
|
112
|
-
2. **Карта путей пользователя (User-Journey):** Для каждой роли — пошаговая последовательность от входа до результата.
|
|
113
|
-
В отличие от «Как работает» в README (3-5 предложений), здесь полный путь со всеми ответвлениями.
|
|
114
|
-
Если в проекте одна роль и простой линейный сценарий — раздел можно пропустить.
|
|
115
|
-
|
|
116
|
-
3. **Матрица доступа (Actor-Permissions):** Таблица ролей и разрешённых действий. Извлекается из guards, middleware,
|
|
117
|
-
декораторов в коде. Если в проекте нет системы ролей/разграничения доступа — раздел пропустить.
|
|
118
|
-
|
|
119
|
-
4. **Известные ограничения (Known Issues / Limitations):** Опционально. Вычитывается из TODO/FIXME в коде и явных
|
|
120
|
-
fallback-веток в логике. Цель: предупредить читателя о техническом долге и недоделанных фичах заранее.
|
|
121
|
-
|
|
122
|
-
---
|
|
123
|
-
|
|
124
|
-
### Файл 3: `technical_reference.md` (Технический уровень - "Кишки")
|
|
125
|
-
|
|
126
|
-
В этом файле описываются технические детали для разработчиков. Файл состоит из 8 секций.
|
|
127
|
-
Порядок зафиксирован: читатель движется от общего (архитектура + схема) к частному (API, логи, тесты).
|
|
128
|
-
|
|
129
|
-
---
|
|
130
|
-
|
|
131
|
-
**1. Архитектура**
|
|
132
|
-
|
|
133
|
-
*1.1 Диаграмма потока данных* — Mermaid-блок, показывающий динамику одного запроса (happy path).
|
|
134
|
-
* Тип: `sequenceDiagram` для request-response систем, `flowchart TD` для пайплайнов.
|
|
135
|
-
* Не более ~15 узлов — диаграмма должна умещаться на один экран.
|
|
136
|
-
* Участники: клиент → API-слой → бизнес-логика → хранилище/внешний сервис.
|
|
137
|
-
* Если проект — библиотека без сетевого слоя: диаграмма pipeline обработки данных.
|
|
138
|
-
|
|
139
|
-
Пример:
|
|
140
|
-
```mermaid
|
|
141
|
-
sequenceDiagram
|
|
142
|
-
participant Client
|
|
143
|
-
participant API
|
|
144
|
-
participant Service
|
|
145
|
-
participant DB
|
|
146
|
-
Client->>API: POST /resource
|
|
147
|
-
API->>Service: validate & process
|
|
148
|
-
Service->>DB: INSERT
|
|
149
|
-
DB-->>Service: id
|
|
150
|
-
Service-->>API: result
|
|
151
|
-
API-->>Client: 201 Created
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
*1.2 Структура проекта* — дерево директорий с пояснением каждой папки.
|
|
155
|
-
* Формат: текстовая `tree`-диаграмма (без node_modules, dist, .git).
|
|
156
|
-
* После дерева — таблица или список с пояснением каждой директории и ГДЕ искать какой тип кода (например, «Логика БД — в `/prisma`»).
|
|
157
|
-
* Цель: читатель знает, где что искать, не открывая проект.
|
|
158
|
-
* Пример:
|
|
159
|
-
```
|
|
160
|
-
project/
|
|
161
|
-
├── src/ — исходный код
|
|
162
|
-
├── prisma/ — схемы и миграции БД
|
|
163
|
-
├── docker/ — Dockerfile и docker-compose
|
|
164
|
-
└── tests/ — тесты
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
*1.3 Внешние зависимости* — таблица сервисов/систем, от которых зависит проект.
|
|
168
|
-
|
|
169
|
-
| Зависимость | Назначение | Если недоступна |
|
|
170
|
-
|-------------|------------|-----------------|
|
|
171
|
-
| PostgreSQL | Хранение данных | Приложение не работает |
|
|
172
|
-
| Redis | Кэш сессий | Сессии сбрасываются при рестарте |
|
|
173
|
-
|
|
174
|
-
Если внешних зависимостей нет — написать явно: «Внешних зависимостей нет.»
|
|
175
|
-
|
|
176
|
-
---
|
|
177
|
-
|
|
178
|
-
**2. Ключевые модули:** Описание главных частей проекта (с обязательным техническим объяснением "ЗАЧЕМ").
|
|
179
|
-
|
|
180
|
-
---
|
|
181
|
-
|
|
182
|
-
**3. Специфика (ОБЯЗАТЕЛЬНО применять условную логику):**
|
|
183
|
-
|
|
184
|
-
* *Если только Фронтенд:*
|
|
185
|
-
`## 3. Страницы веб-приложения` — таблица главных страниц/экранов с описанием функционала.
|
|
186
|
-
|
|
187
|
-
* *Если только Бэкенд:*
|
|
188
|
-
`## 3. База данных` — основные сущности/таблицы, как они связаны, схема ключевой таблицы.
|
|
189
|
-
|
|
190
|
-
* *Если только скрипт/DevOps:*
|
|
191
|
-
`## 3. Пайплайн выполнения` — последовательность команд или шагов.
|
|
192
|
-
|
|
193
|
-
* *Если Full-Stack (есть и фронтенд, и бэкенд):*
|
|
194
|
-
`## 3. Страницы и база данных`
|
|
195
|
-
`### 3.1 Страницы веб-приложения` — таблица страниц
|
|
196
|
-
`### 3.2 База данных` — схема таблиц
|
|
197
|
-
|
|
198
|
-
Оба подраздела ВНУТРИ одной секции `## 3` — чтобы не конфликтовать с нумерацией секций 4-8.
|
|
199
|
-
|
|
200
|
-
---
|
|
201
|
-
|
|
202
|
-
**4. Безопасность и отказоустойчивость:**
|
|
203
|
-
|
|
204
|
-
*4.1 Механизмы защиты:*
|
|
205
|
-
* Указать конкретные алгоритмы и параметры: например, «JWT / RS256», «Argon2id для хеширования паролей»,
|
|
206
|
-
«AES-256-GCM для данных в покое».
|
|
207
|
-
* CORS-политика (разрешённые origins или правило).
|
|
208
|
-
* Дополнительные меры: rate limiting, HTTPS-only, CSP и т.п.
|
|
209
|
-
* **Запрещено:** общие фразы типа «система защищена» без конкретики. Если стандартно — «Стандартные механизмы [Framework]».
|
|
210
|
-
|
|
211
|
-
*4.2 Поведение при отказах:*
|
|
212
|
-
* Retry-политика (количество попыток, backoff-стратегия).
|
|
213
|
-
* Fallback при недоступности кэша или базы данных.
|
|
214
|
-
* Как ошибка нижнего уровня выходит наружу (propagation).
|
|
215
|
-
* Если внешних зависимостей нет — написать явно: «Внешних зависимостей нет. Отказоустойчивость не применима.»
|
|
216
|
-
|
|
217
|
-
---
|
|
218
|
-
|
|
219
|
-
**5. Ключевые архитектурные решения (ADR Light):**
|
|
220
|
-
|
|
221
|
-
Таблица из 1–3 записей. Только решения, влияющие на стабильность или безопасность. Не история проекта,
|
|
222
|
-
не выбор инструментов разработки. Если всё по шаблону — пропустить.
|
|
223
|
-
|
|
224
|
-
| Решение | Альтернатива | Причина выбора |
|
|
225
|
-
|---------|-------------|----------------|
|
|
226
|
-
| Redis для сессий | Кэш в памяти | Данные не теряются при рестарте контейнера |
|
|
227
|
-
| ... | ... | ... |
|
|
228
|
-
|
|
229
|
-
---
|
|
230
|
-
|
|
231
|
-
**6. API / CLI Контракт:**
|
|
232
|
-
|
|
233
|
-
* *Если есть автодокументация* (`/docs`, `/swagger`, GraphQL playground): вставить ссылку первой строкой, затем
|
|
234
|
-
описать только 2–3 критически важных эндпоинта.
|
|
235
|
-
* *Если REST/GraphQL без автодокументации:* 2–3 критичных эндпоинта с примерами JSON запрос/ответ из реального кода.
|
|
236
|
-
* *Если CLI-инструмент:* сигнатуры 2–3 ключевых команд с описанием.
|
|
237
|
-
* *Если библиотека:* 2–3 публичных метода с сигнатурами и примерами вызова.
|
|
238
|
-
|
|
239
|
-
Пример для REST:
|
|
240
|
-
```
|
|
241
|
-
POST /api/auth/login
|
|
242
|
-
Запрос: { "email": "user@example.com", "password": "secret" }
|
|
243
|
-
Ответ: { "token": "eyJ...", "expiresIn": 3600 }
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
---
|
|
247
|
-
|
|
248
|
-
**7. Наблюдаемость и диагностика:**
|
|
249
|
-
|
|
250
|
-
*7.1 Логи:*
|
|
251
|
-
* Конкретный путь: например, `/var/log/app/app.log` или «stdout, journald unit `app.service`».
|
|
252
|
-
* Для Docker: «Логи пишутся в stdout. Сбор: `docker logs <container>` или через fluentd/loki.»
|
|
253
|
-
* Формат (JSON / plaintext) и уровни логирования.
|
|
254
|
-
* **Запрещено:** «смотрите логи в консоли» без конкретного пути или механизма.
|
|
255
|
-
|
|
256
|
-
*7.2 Ключевые метрики:*
|
|
257
|
-
* Что отслеживать и где смотреть (Grafana dashboard, Prometheus endpoint и т.п.).
|
|
258
|
-
* Если метрик нет — написать явно.
|
|
259
|
-
|
|
260
|
-
*7.3 Коды ошибок:*
|
|
261
|
-
|
|
262
|
-
| Код | Значение | Что делать |
|
|
263
|
-
|-----|----------|------------|
|
|
264
|
-
| 401 | Невалидный / просроченный токен | Обновить токен через /auth/refresh |
|
|
265
|
-
| 403 | Недостаточно прав | Проверить роль пользователя |
|
|
266
|
-
| 500 | ... | Смотреть ERROR-уровень в логах |
|
|
267
|
-
|
|
268
|
-
---
|
|
269
|
-
|
|
270
|
-
**8. Тестирование и верификация:**
|
|
271
|
-
|
|
272
|
-
*8.1 Запуск тестов:* Конкретные команды (не «см. README»).
|
|
273
|
-
|
|
274
|
-
*8.2 Покрытие:*
|
|
275
|
-
* Целевое покрытие: >80% (или явное обоснование иного значения).
|
|
276
|
-
* Что покрыто: ключевые модули и критические пути.
|
|
277
|
-
* Что намеренно не покрыто: boilerplate, конфигурация, сторонние библиотеки.
|
|
278
|
-
|
|
279
|
-
*8.3 Smoke-тест после деплоя:*
|
|
280
|
-
2–5 шагов, выполнимых за 2–3 минуты без знания внутреннего устройства системы — инструмент для дежурного, не для автора.
|
|
281
|
-
|
|
282
|
-
Пример:
|
|
283
|
-
```
|
|
284
|
-
1. GET /health → ожидается 200 OK, { "status": "ok" }
|
|
285
|
-
2. POST /api/auth/login с тестовыми данными → ожидается 200 + token
|
|
286
|
-
3. GET /api/resource с полученным token → ожидается 200 + список
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
---
|
|
290
|
-
|
|
291
|
-
## 3. Процесс выполнения
|
|
292
|
-
|
|
293
|
-
0. **Подготовка перед генерацией (СТРОГО):**
|
|
294
|
-
|
|
295
|
-
*0а. Определи язык вывода:*
|
|
296
|
-
* Если пользователь явно указал язык («документируй на английском», «generate in English») — используй его.
|
|
297
|
-
* Иначе: проверь язык существующего `README.md` или комментариев в коде → используй тот же язык.
|
|
298
|
-
* Если определить невозможно — используй русский по умолчанию.
|
|
299
|
-
* Весь текст всех трёх файлов (заголовки, описания, таблицы) должен быть на выбранном языке.
|
|
300
|
-
Технические термины, имена переменных и примеры кода — не переводить.
|
|
301
|
-
|
|
302
|
-
*0б. Проверь, существует ли папка `docs/`:*
|
|
303
|
-
* **Папки нет** → режим «Создать с нуля»: сгенерировать все три файла полностью.
|
|
304
|
-
* **Папка есть** → режим «Обновить»: прочитать существующие файлы, сравнить с текущим кодом,
|
|
305
|
-
обновить только устаревшие секции. Секции, которые не изменились — оставить без правок.
|
|
306
|
-
В начале каждого изменённого файла добавить строку: `> Обновлено: <дата>`.
|
|
307
|
-
|
|
308
|
-
*0в. Определи размер проекта, чтобы выбрать глубину документации:*
|
|
309
|
-
* Посчитай количество файлов исходного кода, строк кода, количество зависимостей в манифесте.
|
|
310
|
-
* **Маленький проект** (<10 файлов, <1000 строк, 0-1 внешняя зависимость): можно объединить features.md
|
|
311
|
-
со списком возможностей внутри README или technical_reference.md. 3 файла опциональны.
|
|
312
|
-
* **Средний проект** (10-50 файлов, 1-5 зависимостей): стандартные 3 файла.
|
|
313
|
-
* **Большой проект** (>50 файлов или >5 модулей): стандартные 3 файла + при необходимости выносить
|
|
314
|
-
API-контракт, развёртывание или схему БД в отдельные файлы (разрешается >3 файлов).
|
|
315
|
-
|
|
316
|
-
*0г. Тщательно проанализируй проект перед генерацией.* Документация будет настолько полной и точной,
|
|
317
|
-
насколько глубоко ты поняла код. Не читай файлы поверхностно. Пройди по каждому модулю, конфигу,
|
|
318
|
-
middleware, тесту, CI-скрипту, Dockerfile — всё это источники фактов для документации.
|
|
319
|
-
Особое внимание удели неочевидным местам: fallback-ветки, обработка ошибок, TODO/FIXME,
|
|
320
|
-
зависимости, которые не бросаются в глаза (devDependencies, тулчейн). Если после анализа
|
|
321
|
-
остались вопросы к структуре или логике — перечитай файл ещё раз. Цель: ни одна значимая
|
|
322
|
-
деталь проекта не должна остаться незадокументированной из-за того, что ты её пропустила.
|
|
323
|
-
|
|
324
|
-
1. Изучи все предоставленные файлы проекта, структуру директорий и манифесты (`package.json`, `Dockerfile`,
|
|
325
|
-
`requirements.txt`, `Makefile` и т.д.).
|
|
326
|
-
|
|
327
|
-
2. Сформируй в уме общую картину: что это за проект, кто его пользователи, как он запускается.
|
|
328
|
-
Определи тип проекта: фронтенд / бэкенд / full-stack / скрипт / библиотека.
|
|
329
|
-
|
|
330
|
-
3. Сгенерируй `README.md` строго в порядке секций 1-7:
|
|
331
|
-
* Секция 1 (суть): три предложения из кода (предложение 3 — опционально).
|
|
332
|
-
* Секция 2 (как работает): 3-5 предложений главного сценария — без названий модулей, только действия пользователя.
|
|
333
|
-
* Секция 3 (Схема C4): ** Mermaid `graph TD` в README обязательна.**
|
|
334
|
-
* Секция 4 (глоссарий): **найди в коде все доменные сущности** → определи те, что не являются общеизвестными → запиши в глоссарий. Только БИЗНЕС-термины.
|
|
335
|
-
* Секция 5 (оглавление): ссылки на features.md и технические секции через anchor-ссылки.
|
|
336
|
-
* Секция 6 (Quick Start): каждый шаг — конкретная команда + `✓ Ожидаемый результат:`. Добавь **Точку верификации** (curl/CLI).
|
|
337
|
-
* Секция 7 (конфигурация): таблица env-переменных с ЗАЧЕМ.
|
|
338
|
-
|
|
339
|
-
4. Сгенерируй `features.md`.
|
|
340
|
-
|
|
341
|
-
5. Сгенерируй `technical_reference.md` строго в порядке секций 1-8:
|
|
342
|
-
* Секция 1 (архитектура):
|
|
343
|
-
- 1.1: диаграмма потока данных (Mermaid, happy path, ≤15 узлов).
|
|
344
|
-
- 1.2: структура проекта (tree-диаграмма + пояснение "где что искать").
|
|
345
|
-
- 1.3: внешние зависимости (таблица: сервис, назначение, что если упадёт).
|
|
346
|
-
* Секция 2 (модули): таблица с техническим ЗАЧЕМ для каждого модуля. Извлекай из кода.
|
|
347
|
-
* Секция 3 (специфика): Страницы / База данных / Пайплайн.
|
|
348
|
-
* Секция 4 (безопасность): извлеки конкретные алгоритмы. Не угадывай.
|
|
349
|
-
* Секция 5 (ADR): найди в коде и архитектуре нестандартные решения.
|
|
350
|
-
* Секция 6 (API/CLI): проверь наличие автодокументации → ссылка + 2–3 примера из реального кода.
|
|
351
|
-
* Секция 7 (наблюдаемость): найди конкретные пути к логам и коды ошибок.
|
|
352
|
-
* Секция 8 (тестирование): команды запуска + Smoke-тест из реальных команд проекта.
|
|
353
|
-
|
|
354
|
-
6. Убедись, что стиль текста соответствует «Простому языку» и везде объясняется «ЗАЧЕМ». Конкретно проверь:
|
|
355
|
-
* Каждый специфичный термин встречается впервые только ПОСЛЕ его определения в глоссарии README или в скобках.
|
|
356
|
-
* Аббревиатуры расшифрованы при первом упоминании.
|
|
357
|
-
|
|
358
|
-
7. **Финальная верификация (ОБЯЗАТЕЛЬНО):** После генерации или редактирования ПРОВЕРЬ всю документацию (README.md, features.md, technical_reference.md) на:
|
|
359
|
-
* **Ошибки и опечатки:** Текст должен быть чистым и профессиональным.
|
|
360
|
-
* **Противоречия:** Информация в одном файле не должна противоречить другому (например, разные названия портов или алгоритмов).
|
|
361
|
-
* **Согласованность и терминология:** Один и тот же процесс или сущность должны называться одинаково во всех файлах.
|
|
362
|
-
* **Битые ссылки:** Проверь все внутренние anchor-ссылки и перекрестные ссылки между файлами (README -> features и т.д.).
|
|
363
|
-
* **Целостность:** Убедись, что «путь читателя» не прерывается и документация отвечает на вопрос «Как это работает?» без пробелов.
|
|
364
|
-
|
|
365
|
-
8. Пройди самопроверку по чеклисту Раздела 4.
|
|
366
|
-
|
|
367
|
-
## 4. Критерии качества (Чеклист приёмки)
|
|
368
|
-
|
|
369
|
-
- [ ] README дает понимание сути за 30 секунд (секции 1-4).
|
|
370
|
-
- [ ] В README есть высокоуровневая схема C4 архитектуры.
|
|
371
|
-
- [ ] Глоссарий в README содержит ТОЛЬКО бизнес/доменные термины.
|
|
372
|
-
- [ ] В Quick Start есть "Точка верификации" (curl/CLI call) для мгновенной проверки.
|
|
373
|
-
- [ ] Между файлами нет дублирования информации (Strict Separation).
|
|
374
|
-
- [ ] Нет галлюцинаций — бизнес-цели, проблемы и алгоритмы взяты из кода, а не придуманы.
|
|
375
|
-
- [ ] В technical_reference есть дерево проекта с пояснением "где искать какой тип логики".
|
|
376
|
-
- [ ] Все Mermaid диаграммы содержат ≤15 узлов и умещаются на экран.
|
|
377
|
-
- [ ] Инструкции по запуску тестов и Smoke-тест используют реальные команды проекта.
|
|
378
|
-
- [ ] Junior может запустить проект и убедиться в успехе без посторонней помощи.
|
|
379
|
-
- [ ] Нет незаполненных заглушек («TODO», «describe here»).
|
|
380
|
-
- [ ] Язык вывода определён корректно.
|