fchek 1.0.0

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 (66) hide show
  1. package/README.md +64 -0
  2. package/bin/fchek.js +107 -0
  3. package/lib/api.js +110 -0
  4. package/lib/audit.js +211 -0
  5. package/lib/bench.js +248 -0
  6. package/lib/config.js +191 -0
  7. package/lib/context.js +356 -0
  8. package/lib/convention.js +526 -0
  9. package/lib/coverage.js +604 -0
  10. package/lib/db.js +135 -0
  11. package/lib/deps-check.js +264 -0
  12. package/lib/deps.js +374 -0
  13. package/lib/docker.js +84 -0
  14. package/lib/doctor.js +149 -0
  15. package/lib/dom.js +226 -0
  16. package/lib/fuzz.js +470 -0
  17. package/lib/git.js +290 -0
  18. package/lib/goto.js +544 -0
  19. package/lib/launch.js +182 -0
  20. package/lib/lint.js +624 -0
  21. package/lib/new_features.test.js +181 -0
  22. package/lib/output.js +46 -0
  23. package/lib/port.js +173 -0
  24. package/lib/process.js +228 -0
  25. package/lib/profile.js +453 -0
  26. package/lib/python.js +41 -0
  27. package/lib/race.js +186 -0
  28. package/lib/registry.js +179 -0
  29. package/lib/repl.js +135 -0
  30. package/lib/run.js +403 -0
  31. package/lib/screenshot.js +152 -0
  32. package/lib/secrets.js +257 -0
  33. package/lib/state.js +219 -0
  34. package/lib/test.js +471 -0
  35. package/lib/vuln.js +253 -0
  36. package/lib/watch.js +240 -0
  37. package/lib/winlog.js +123 -0
  38. package/package.json +27 -0
  39. package/skills/ACTIVATE.md +274 -0
  40. package/skills/README.md +163 -0
  41. package/skills/agent.md +444 -0
  42. package/skills/api.md +47 -0
  43. package/skills/bench.md +117 -0
  44. package/skills/context.md +116 -0
  45. package/skills/convention.md +143 -0
  46. package/skills/coverage.md +99 -0
  47. package/skills/csharp.md +97 -0
  48. package/skills/db.md +66 -0
  49. package/skills/deps-check.md +135 -0
  50. package/skills/deps.md +143 -0
  51. package/skills/docker.md +61 -0
  52. package/skills/dom.md +56 -0
  53. package/skills/fuzz.md +167 -0
  54. package/skills/goto.md +111 -0
  55. package/skills/lint.md +123 -0
  56. package/skills/port.md +57 -0
  57. package/skills/profile.md +91 -0
  58. package/skills/race.md +117 -0
  59. package/skills/repl.md +81 -0
  60. package/skills/rules.md +318 -0
  61. package/skills/run.md +135 -0
  62. package/skills/secrets.md +170 -0
  63. package/skills/security.md +360 -0
  64. package/skills/state.md +261 -0
  65. package/skills/vuln.md +57 -0
  66. package/skills/windows.md +320 -0
@@ -0,0 +1,274 @@
1
+ # ACTIVATE — Инструкция автономного агента
2
+
3
+ Ты автономный AI-агент. Твоя задача — получить задачу и вернуть готовый продукт без участия человека.
4
+
5
+ Ты не спрашиваешь разрешения. Ты не останавливаешься на каждом шаге. Ты работаешь до тех пор, пока все критерии не выполнены, а затем докладываешь результат.
6
+
7
+ ---
8
+
9
+ ## АВТОНОМНЫЙ ЦИКЛ
10
+
11
+ Выполняй шаги строго по порядку. Не пропускай ни одного.
12
+
13
+ **1. Прочитай задачу полностью**
14
+ Убедись что понял: что нужно создать, изменить, исправить. Если задача неоднозначна — прими наиболее разумную интерпретацию и зафиксируй её:
15
+ ```bash
16
+ fchek state set task "<точная формулировка задачи>"
17
+ fchek state set status "in_progress"
18
+ ```
19
+
20
+ **2. Войди в проект**
21
+ ```bash
22
+ fchek audit .
23
+ ```
24
+ Читай `verdict`. Если `"needs_attention"` — сначала исправь `critical_issues[]`, потом приступай к задаче.
25
+
26
+ **3. Прочитай правила проекта**
27
+ ```bash
28
+ fchek convention .
29
+ fchek config show
30
+ ```
31
+ Читай `framework`, `naming_style`, `error_handling`, `logging_style`. Пиши в том же стиле что уже есть в проекте.
32
+
33
+ **4. Проверь что уже существует**
34
+ ```bash
35
+ fchek context src/ --names-only
36
+ ```
37
+ Читай `name_index`. Если символ с нужным именем уже есть — используй существующий или выбери другое имя.
38
+
39
+ **5. Проверь зависимости**
40
+ Если задача требует библиотеку которую ты собираешься использовать:
41
+ ```bash
42
+ fchek deps-check <lib> --lang=<python|js|rust|go>
43
+ ```
44
+ Читай `installed_version`, `latest_version`, `deprecation_notices`. Используй актуальный API.
45
+
46
+ **6. Напиши код**
47
+ Сохрани список изменённых файлов:
48
+ ```bash
49
+ fchek state set files "src/auth.py tests/test_auth.py"
50
+ ```
51
+
52
+ **7. Запусти и проверь**
53
+ ```bash
54
+ fchek run <main_file>
55
+ ```
56
+ Получи `exit_code: 0` и `success: true`. Если нет — исправь и запусти снова. Не переходи к следующему шагу пока не получишь `exit_code: 0`.
57
+
58
+ **8. Прогони тесты**
59
+ ```bash
60
+ fchek test .
61
+ ```
62
+ Получи `verdict: "all_passed"`. Если `failures_found` — читай `failures[].reason`, исправь, запусти снова.
63
+
64
+ **9. Проверь безопасность и стиль**
65
+ ```bash
66
+ fchek secrets .
67
+ fchek lint .
68
+ ```
69
+ Получи `verdict: "clean"` от secrets. Получи `issues_count: 0` от lint (или примени `fchek lint . --fix` если `auto_fix` доступен).
70
+
71
+ **10. Зафиксируй и доложи**
72
+ ```bash
73
+ fchek git stage <files>
74
+ fchek git commit "feat: <описание изменения>"
75
+ fchek state set status "done"
76
+ ```
77
+ Доложи результат: что сделано, какие файлы изменены, вывод `fchek run`, вывод `fchek test`.
78
+
79
+ ---
80
+
81
+ ## КРИТЕРИИ «ЗАДАЧА ВЫПОЛНЕНА»
82
+
83
+ Задача выполнена только если ВСЕ пункты чеклиста выполнены:
84
+
85
+ - [ ] **Сборка/запуск:**
86
+ ```bash
87
+ fchek run <main_file>
88
+ # Ожидаемый результат:
89
+ # {"status":"ok","data":{"exit_code":0,"success":true,"stdout":"...","stderr":""}}
90
+ ```
91
+
92
+ - [ ] **Тесты:**
93
+ ```bash
94
+ fchek test .
95
+ # Ожидаемый результат:
96
+ # {"status":"ok","data":{"verdict":"all_passed","passed":N,"failed":0}}
97
+ ```
98
+
99
+ - [ ] **Секреты:**
100
+ ```bash
101
+ fchek secrets .
102
+ # Ожидаемый результат:
103
+ # {"status":"ok","data":{"verdict":"clean","total_findings":0}}
104
+ ```
105
+
106
+ - [ ] **Линт:**
107
+ ```bash
108
+ fchek lint .
109
+ # Ожидаемый результат:
110
+ # {"status":"ok","data":{"issues_count":0}}
111
+ ```
112
+
113
+ - [ ] **Коммит:**
114
+ ```bash
115
+ fchek git commit "feat: ..."
116
+ # Ожидаемый результат:
117
+ # {"status":"ok","data":{"committed":true,"message":"feat: ..."}}
118
+ ```
119
+
120
+ Если хоть один пункт не выполнен — задача не готова. Возвращайся к исправлению.
121
+
122
+ ---
123
+
124
+ ## КАК ОБРАБАТЫВАТЬ ОШИБКИ
125
+
126
+ ### `exit_code ≠ 0` (код не запускается)
127
+ ```
128
+ 1. Читай data.stderr — там точная причина
129
+ 2. Найди строку и файл из traceback
130
+ 3. Исправь конкретную ошибку (не переписывай всё)
131
+ 4. Запусти: fchek run <file>
132
+ 5. Повторяй пока exit_code = 0
133
+ ```
134
+
135
+ ### `verdict: "failures_found"` (тесты падают)
136
+ ```
137
+ 1. Читай data.failures[].test — имя теста
138
+ 2. Читай data.failures[].reason — причина падения
139
+ 3. Используй: fchek goto <file:line> — найди тест и код
140
+ 4. Реши: баг в коде или неправильный тест?
141
+ 5. Исправь, запусти: fchek test .
142
+ 6. Повторяй пока verdict = "all_passed"
143
+ ```
144
+
145
+ ### `verdict: "critical"` или `"issues_found"` (секреты в коде)
146
+ ```
147
+ 1. Читай findings[].file и findings[].line
148
+ 2. СТОП — не коммить и не показывай этот код
149
+ 3. Замени захардкоженное значение на переменную окружения
150
+ Python: os.environ.get("KEY_NAME")
151
+ JS: process.env.KEY_NAME
152
+ Rust: std::env::var("KEY_NAME").expect("KEY_NAME not set")
153
+ C#: Environment.GetEnvironmentVariable("KEY_NAME")
154
+ 4. Запусти: fchek secrets .
155
+ 5. Повторяй пока verdict = "clean"
156
+ ```
157
+ Подробнее: **[security.md](./security.md)**
158
+
159
+ ### `issues_count > 0` (lint ошибки)
160
+ ```
161
+ 1. Попробуй автофикс: fchek lint . --fix
162
+ 2. Читай data.remaining_issues[] — что осталось
163
+ 3. Исправь вручную только severity: "error"
164
+ 4. severity: "warning" — исправь если быстро, иначе пропусти
165
+ 5. Запусти: fchek lint . --no-fix
166
+ 6. Повторяй пока issues_count = 0 (или ≤ config.lint_threshold)
167
+ ```
168
+
169
+ ### `compiled: false` (ошибка компиляции — C/C++/Rust/C#)
170
+ ```
171
+ 1. Читай data.stderr — там сообщение компилятора с номером строки
172
+ 2. Перейди к строке: fchek goto <file:line>
173
+ 3. Исправь синтаксическую или типовую ошибку
174
+ 4. Запусти: fchek run <file>
175
+ 5. Повторяй пока compiled = true и exit_code = 0
176
+ ```
177
+
178
+ ### `timed_out: true` (бесконечный цикл)
179
+ ```
180
+ 1. Ищи: while True без break, бесконечную рекурсию, deadlock
181
+ 2. Проверь условия выхода из циклов
182
+ 3. Для многопоточного кода: fchek race <file> --tsan
183
+ 4. Исправь, запусти с уменьшенным timeout: fchek run <file> --timeout=5000
184
+ ```
185
+
186
+ ### `"Runtime not found"` (рантайм не установлен)
187
+ ```
188
+ 1. Запусти: fchek doctor
189
+ 2. Читай data.tools[] — что отсутствует
190
+ 3. Установи по инструкции из fchek doctor
191
+ 4. Повторяй: fchek run <file>
192
+ ```
193
+
194
+ ### Блокер которого не можешь решить
195
+ ```
196
+ 1. Зафиксируй: fchek state set blocker "<описание проблемы>"
197
+ 2. Зафиксируй: fchek state set next_step "<что нужно сделать>"
198
+ 3. Доложи пользователю: что сделано, что заблокировано, что нужно
199
+ ```
200
+
201
+ ---
202
+
203
+ ## ЗАПРЕЩЕНО
204
+
205
+ Это список действий которые нельзя делать никогда, при любых условиях:
206
+
207
+ - **ЗАПРЕЩЕНО** говорить «готово», «работает», «исправил» без показа вывода `fchek run` с `exit_code: 0`
208
+ - **ЗАПРЕЩЕНО** говорить «тесты проходят» без показа вывода `fchek test` с `verdict: "all_passed"`
209
+ - **ЗАПРЕЩЕНО** создавать символ (функцию, класс, переменную) без предварительной проверки `fchek context`
210
+ - **ЗАПРЕЩЕНО** использовать библиотеку без предварительной проверки `fchek deps-check`
211
+ - **ЗАПРЕЩЕНО** коммитить код с секретами — обязательно `verdict: "clean"` перед коммитом
212
+ - **ЗАПРЕЩЕНО** коммитить код с падающими тестами — обязательно `verdict: "all_passed"` перед коммитом
213
+ - **ЗАПРЕЩЕНО** делать `git push` — это решение принимает только человек
214
+ - **ЗАПРЕЩЕНО** удалять файлы без явного указания в задаче
215
+ - **ЗАПРЕЩЕНО** изменять `.env` файлы и конфиги с секретами
216
+ - **ЗАПРЕЩЕНО** писать SQL через f-strings / конкатенацию строк — только параметризованные запросы
217
+ - **ЗАПРЕЩЕНО** логировать токены, пароли, ключи API
218
+
219
+ ---
220
+
221
+ ## Навигация по навыкам
222
+
223
+ | Ситуация | Файл |
224
+ |---|---|
225
+ | Полный цикл автономной работы | **[agent.md](./agent.md)** |
226
+ | Жёсткие правила (что можно, что нельзя) | **[rules.md](./rules.md)** |
227
+ | Безопасность, секреты, SQL injection | **[security.md](./security.md)** |
228
+ | C# / .NET специфика | **[csharp.md](./csharp.md)** |
229
+ | Windows / WPF / UI проверка | **[windows.md](./windows.md)** |
230
+ | Обзор всех команд | **[README.md](./README.md)** |
231
+ | State vs REPL (память) | **[state.md](./state.md)** |
232
+
233
+
234
+ ---
235
+
236
+ ## WORKFLOW: Windows / WPF
237
+
238
+ Для любого Windows GUI приложения (WPF, WinForms, MAUI):
239
+
240
+ ```bash
241
+ # 1. Понять проект
242
+ fchek convention . # framework: WPF? → читай windows.md
243
+ fchek context src/
244
+
245
+ # 2. Проверить/убить старый экземпляр
246
+ fchek process exists <AppName>
247
+ fchek process kill <AppName> # если exists: true
248
+
249
+ # 3. Собрать
250
+ fchek run src/App.cs # dotnet build
251
+
252
+ # 4. Запустить и дождаться окна
253
+ fchek launch bin/Debug/net8.0-windows/App.exe --title=<AppName> --wait=8000
254
+ # → window_appeared: true → хорошо
255
+ # → window_appeared: false → fchek winlog --level=Error --since=2
256
+
257
+ # 5. Проверить UI
258
+ fchek screenshot --window=<AppName>
259
+ # Прочитай изображение → правильно ли выглядит интерфейс?
260
+
261
+ # 6. Проверить логи
262
+ fchek winlog --source=Application --filter=<AppName> --level=Error --since=5
263
+
264
+ # 7. Проверить реестр (если нужно)
265
+ fchek registry get HKCU\Software\<AppName>
266
+ ```
267
+
268
+ **ОБЯЗАТЕЛЬНО для WPF:**
269
+ - `window_appeared: true` перед тем как говорить "запустилось"
270
+ - `fchek screenshot` перед тем как говорить "UI выглядит правильно"
271
+ - `fchek winlog` если `window_appeared: false`
272
+
273
+ Подробно → **[windows.md](./windows.md)**
274
+
@@ -0,0 +1,163 @@
1
+ # fchek skills — Справочник агента
2
+
3
+ Команды в порядке использования в автономном цикле.
4
+ Файлы навыков — это инструкции агенту, не документация.
5
+
6
+ ---
7
+
8
+ ## Таблица: фаза → команда → что проверяй → файл навыка
9
+
10
+ | Фаза | Команда | Что проверяй в выводе | Файл навыка |
11
+ |---|---|---|---|
12
+ | **ПОНЯЛ: проект** | `fchek audit .` | `verdict: "healthy"`, `critical_issues: []` | — |
13
+ | **ПОНЯЛ: конвенции** | `fchek convention .` | `naming_style`, `error_handling`, `logging_style[0]` | [convention.md](./convention.md) |
14
+ | **ПОНЯЛ: конфиг** | `fchek config show` | `lang`, `test_command`, `coverage_threshold` | — |
15
+ | **ПОНЯЛ: git** | `fchek git status` | `branch`, `is_clean`, `unstaged[]` | — |
16
+ | **СПЛАНИРОВАЛ: символы** | `fchek context <dir>` | `name_index` — нет дублей | [context.md](./context.md) |
17
+ | **СПЛАНИРОВАЛ: зависимости** | `fchek deps-check <lib> --lang=X` | `installed_deprecated`, `deprecation_notices` | [deps-check.md](./deps-check.md) |
18
+ | **ПРОВЕРИЛ: запуск** | `fchek run <file>` | `exit_code: 0`, `success: true` | [run.md](./run.md) |
19
+ | **ПРОВЕРИЛ: тесты** | `fchek test .` | `verdict: "all_passed"`, `failed: 0` | — |
20
+ | **ПРОВЕРИЛ: секреты** | `fchek secrets .` | `verdict: "clean"`, `total_findings: 0` | [secrets.md](./secrets.md) |
21
+ | **ПРОВЕРИЛ: уязвимости** | `fchek vuln [dir]` | `typosquatting_warnings: [], vulnerabilities: []` | [vuln.md](./vuln.md) |
22
+ | **ПРОВЕРИЛ: линт** | `fchek lint .` | `issues_count: 0` | [lint.md](./lint.md) |
23
+ | **ПРОВЕРИЛ: покрытие** | `fchek coverage .` | `line_rate ≥ threshold` | [coverage.md](./coverage.md) |
24
+ | **ПРОВЕРИЛ: гонки** | `fchek race <file>` | `verdict: "clean"` | [race.md](./race.md) |
25
+ | **ПРОВЕРИЛ: DOM** | `fchek dom <src> <sel>` | `count > 0`, `matches[]` | [dom.md](./dom.md) |
26
+ | **ЗАФИКСИРОВАЛ** | `fchek git stage <files>` | `staged[]` содержит файлы | — |
27
+ | **ЗАФИКСИРОВАЛ** | `fchek git commit "type: msg"` | `committed: true` | — |
28
+ | **АНАЛИЗ: производительность** | `fchek profile <file>` | `hot_functions[]`, `total_time` | [profile.md](./profile.md) |
29
+ | **АНАЛИЗ: сеть/порты** | `fchek port <port>` | `in_use: true/false`, `connections[]` | [port.md](./port.md) |
30
+ | **АНАЛИЗ: API/сеть** | `fchek api <url>` | `status_code: 200`, `time_ms` | [api.md](./api.md) |
31
+ | **АНАЛИЗ: БД** | `fchek db schema/query <db>` | `tables[]`, `rows[]` | [db.md](./db.md) |
32
+ | **АНАЛИЗ: контейнеры** | `fchek docker list/logs` | `containers[]`, `logs` | [docker.md](./docker.md) |
33
+ | **АНАЛИЗ: зависимости** | `fchek deps .` | `dead_code[]`, `outdated[]` | [deps.md](./deps.md) |
34
+ | **АНАЛИЗ: бенчмарк** | `fchek bench . --before=A --after=B` | `delta_ms`, `regression: false` | [bench.md](./bench.md) |
35
+ | **АНАЛИЗ: фаззинг** | `fchek fuzz <file>` | `crashes: 0` | [fuzz.md](./fuzz.md) |
36
+ | **НАВИГАЦИЯ** | `fchek goto <file:line>` | `definition`, `references[]` | [goto.md](./goto.md) |
37
+ | **ПАМЯТЬ: диск** | `fchek state set/get/list` | `key: value` | [state.md](./state.md) |
38
+ | **ПАМЯТЬ: RAM** | `fchek repl` | интерактивный режим | [repl.md](./repl.md) |
39
+ | **ОКРУЖЕНИЕ** | `fchek doctor` | `tools[].status: "ok"` | — |
40
+
41
+ ---
42
+
43
+ ## Матрица языков — поддержка команд
44
+
45
+ | Команда | Python | JS/TS | Rust | C/C++ | C# | Go |
46
+ |---|---|---|---|---|---|---|
47
+ | `run` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
48
+ | `test` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
49
+ | `secrets` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
50
+ | `lint` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
51
+ | `coverage` | ✓ | ✓ | ✓ | — | ✓ | ✓ |
52
+ | `context` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
53
+ | `convention` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
54
+ | `deps-check` | ✓ | ✓ | ✓ | — | ✓ | ✓ |
55
+ | `deps` | ✓ | ✓ | ✓ | — | ✓ | ✓ |
56
+ | `race` | — | — | ✓ | ✓ | — | ✓ |
57
+ | `fuzz` | ✓ | — | ✓ | ✓ | — | ✓ |
58
+ | `profile` | ✓ | ✓ | ✓ | ✓ | — | ✓ |
59
+ | `bench` | ✓ | ✓ | ✓ | ✓ | — | ✓ |
60
+ | `goto` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
61
+
62
+ **C# ограничение:** `race`, `fuzz`, `profile`, `bench` не поддерживаются. Используй dotnet-trace / VS Profiler.
63
+ Подробнее: [csharp.md](./csharp.md)
64
+
65
+ ---
66
+
67
+ ## Формат JSON вывода
68
+
69
+ Все команды fchek возвращают единообразный JSON:
70
+
71
+ ```json
72
+ {
73
+ "status": "ok",
74
+ "command": "<имя команды>",
75
+ "data": {
76
+ "<специфичные поля команды>"
77
+ }
78
+ }
79
+ ```
80
+
81
+ При ошибке:
82
+ ```json
83
+ {
84
+ "status": "error",
85
+ "command": "<имя команды>",
86
+ "error": "<описание ошибки>",
87
+ "data": null
88
+ }
89
+ ```
90
+
91
+ ### Ключевые поля по командам:
92
+
93
+ ```
94
+ fchek run → data.exit_code, data.success, data.stdout, data.stderr
95
+ fchek test → data.verdict, data.passed, data.failed, data.failures[]
96
+ fchek secrets → data.verdict, data.total_findings, data.findings[]
97
+ fchek lint → data.issues_count, data.fixed, data.remaining_issues[]
98
+ fchek coverage → data.line_rate, data.branches_covered, data.uncovered_lines[]
99
+ fchek context → data.name_index, data.duplicates, data.symbols[]
100
+ fchek convention→ data.conventions[].framework, .naming_style, .error_handling
101
+ fchek deps-check→ data.installed_version, data.latest_version, data.deprecation_notices[]
102
+ fchek race → data.verdict, data.issues[], data.summary
103
+ fchek profile → data.hot_functions[], data.total_time_ms
104
+ fchek bench → data.delta_ms, data.regression, data.before, data.after
105
+ fchek audit → data.verdict, data.critical_issues[], data.next_actions[]
106
+ fchek git status→ data.branch, data.staged[], data.unstaged[], data.is_clean
107
+ fchek state list→ data.state{task, status, files, next_step, blocker}
108
+ ```
109
+
110
+ ---
111
+
112
+ ## Ключевые файлы инструкций
113
+
114
+ | Файл | Когда читать |
115
+ |---|---|
116
+ | **ACTIVATE.md** | Старт. Автономный цикл, критерии готовности, запрещённые действия |
117
+ | **agent.md** | Детали каждой фазы, примеры диалогов, петля исправления |
118
+ | **rules.md** | Жёсткие правила с примерами запрещённого и обязательного |
119
+ | **security.md** | Секреты, SQL injection, что не логировать, примеры по языкам |
120
+ | **state.md** | Что хранить на диске vs RAM, сценарий автономной сессии |
121
+ | **csharp.md** | C# / .NET специфика, workflow, ограничения fchek |
122
+ | **run.md** | Синтаксис run, поддерживаемые языки, интерпретация вывода |
123
+ | **secrets.md** | Подробно про fchek secrets, паттерны, инструменты |
124
+ | **context.md** | fchek context — навигация по символам |
125
+ | **convention.md** | fchek convention — стиль проекта |
126
+ | **lint.md** | fchek lint — автоматическое исправление |
127
+ | **coverage.md** | fchek coverage — покрытие тестами |
128
+ | **deps-check.md** | fchek deps-check — проверка актуальности зависимостей |
129
+ | **race.md** | fchek race — гонки данных, memory safety |
130
+ | **fuzz.md** | fchek fuzz — fuzzing, поиск крашей |
131
+ | **profile.md** | fchek profile — горячие функции |
132
+ | **bench.md** | fchek bench — сравнение производительности |
133
+ | **goto.md** | fchek goto — LSP навигация |
134
+ | **repl.md** | fchek repl — интерактивная сессия |
135
+ | **port.md** | fchek port — сетевые порты |
136
+ | **api.md** | fchek api — HTTP/API запросы |
137
+ | **db.md** | fchek db — SQLite схемы и запросы |
138
+ | **docker.md** | fchek docker — Docker list/logs |
139
+ | **vuln.md** | fchek vuln — уязвимости и тайпосквоттинг |
140
+ | **dom.md** | fchek dom — Web парсинг HTML |
141
+
142
+ ---
143
+
144
+ ## Быстрый старт (минимальный цикл)
145
+
146
+ ```bash
147
+ # Войти в проект
148
+ fchek audit .
149
+ fchek convention .
150
+ fchek context src/ --names-only
151
+
152
+ # [написать код]
153
+
154
+ # Обязательные проверки
155
+ fchek run <main_file>
156
+ fchek test .
157
+ fchek secrets .
158
+ fchek lint .
159
+
160
+ # Зафиксировать
161
+ fchek git stage <files>
162
+ fchek git commit "feat: <описание>"
163
+ ```