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.
- package/README.md +64 -0
- package/bin/fchek.js +107 -0
- package/lib/api.js +110 -0
- package/lib/audit.js +211 -0
- package/lib/bench.js +248 -0
- package/lib/config.js +191 -0
- package/lib/context.js +356 -0
- package/lib/convention.js +526 -0
- package/lib/coverage.js +604 -0
- package/lib/db.js +135 -0
- package/lib/deps-check.js +264 -0
- package/lib/deps.js +374 -0
- package/lib/docker.js +84 -0
- package/lib/doctor.js +149 -0
- package/lib/dom.js +226 -0
- package/lib/fuzz.js +470 -0
- package/lib/git.js +290 -0
- package/lib/goto.js +544 -0
- package/lib/launch.js +182 -0
- package/lib/lint.js +624 -0
- package/lib/new_features.test.js +181 -0
- package/lib/output.js +46 -0
- package/lib/port.js +173 -0
- package/lib/process.js +228 -0
- package/lib/profile.js +453 -0
- package/lib/python.js +41 -0
- package/lib/race.js +186 -0
- package/lib/registry.js +179 -0
- package/lib/repl.js +135 -0
- package/lib/run.js +403 -0
- package/lib/screenshot.js +152 -0
- package/lib/secrets.js +257 -0
- package/lib/state.js +219 -0
- package/lib/test.js +471 -0
- package/lib/vuln.js +253 -0
- package/lib/watch.js +240 -0
- package/lib/winlog.js +123 -0
- package/package.json +27 -0
- package/skills/ACTIVATE.md +274 -0
- package/skills/README.md +163 -0
- package/skills/agent.md +444 -0
- package/skills/api.md +47 -0
- package/skills/bench.md +117 -0
- package/skills/context.md +116 -0
- package/skills/convention.md +143 -0
- package/skills/coverage.md +99 -0
- package/skills/csharp.md +97 -0
- package/skills/db.md +66 -0
- package/skills/deps-check.md +135 -0
- package/skills/deps.md +143 -0
- package/skills/docker.md +61 -0
- package/skills/dom.md +56 -0
- package/skills/fuzz.md +167 -0
- package/skills/goto.md +111 -0
- package/skills/lint.md +123 -0
- package/skills/port.md +57 -0
- package/skills/profile.md +91 -0
- package/skills/race.md +117 -0
- package/skills/repl.md +81 -0
- package/skills/rules.md +318 -0
- package/skills/run.md +135 -0
- package/skills/secrets.md +170 -0
- package/skills/security.md +360 -0
- package/skills/state.md +261 -0
- package/skills/vuln.md +57 -0
- 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
|
+
|
package/skills/README.md
ADDED
|
@@ -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
|
+
```
|