code-ai-installer 1.0.1 → 1.1.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.
Files changed (76) hide show
  1. package/.agents/a11y_baseline/SKILL.md +41 -0
  2. package/.agents/adr_log/SKILL.md +69 -0
  3. package/.agents/api_contract_compliance_review/SKILL.md +18 -0
  4. package/.agents/api_contracts/SKILL.md +42 -0
  5. package/.agents/architecture_compliance_review/SKILL.md +17 -0
  6. package/.agents/architecture_doc/SKILL.md +92 -0
  7. package/.agents/board/SKILL.md +43 -0
  8. package/.agents/cloud_infrastructure_security/SKILL.md +68 -0
  9. package/.agents/code_review_checklist/SKILL.md +47 -0
  10. package/.agents/current_state_analysis/SKILL.md +44 -0
  11. package/.agents/data_model/SKILL.md +40 -0
  12. package/.agents/dependency_supply_chain_review/SKILL.md +20 -0
  13. package/.agents/deployment_ci_plan/SKILL.md +51 -0
  14. package/.agents/design_intake/SKILL.md +71 -0
  15. package/.agents/design_parity_review/SKILL.md +73 -0
  16. package/.agents/design_systems/SKILL.md +15 -0
  17. package/.agents/dev_reference_snippets/SKILL.md +397 -0
  18. package/.agents/docker_kubernetes_architecture/SKILL.md +145 -0
  19. package/.agents/es2025_beast_practices/SKILL.md +15 -0
  20. package/.agents/gates/SKILL.md +35 -0
  21. package/.agents/go_beast_practices/SKILL.md +23 -0
  22. package/.agents/handoff/SKILL.md +52 -0
  23. package/.agents/k8s_manifests_conventions/SKILL.md +176 -0
  24. package/.agents/memory/SKILL.md +29 -0
  25. package/.agents/mongodb_mongoose_best_practices/SKILL.md +236 -0
  26. package/.agents/node_express_beast_practices/SKILL.md +30 -0
  27. package/.agents/observability_logging/SKILL.md +16 -0
  28. package/.agents/observability_plan/SKILL.md +38 -0
  29. package/.agents/observability_review/SKILL.md +20 -0
  30. package/.agents/performance_review_baseline/SKILL.md +17 -0
  31. package/.agents/pm_backlog/SKILL.md +32 -0
  32. package/.agents/pm_interview/SKILL.md +56 -0
  33. package/.agents/pm_prd/SKILL.md +56 -0
  34. package/.agents/qa_api_contract_tests/SKILL.md +16 -0
  35. package/.agents/qa_e2e_playwright/SKILL.md +0 -0
  36. package/.agents/qa_manual_run/SKILL.md +16 -0
  37. package/.agents/qa_security_smoke_tests/SKILL.md +14 -0
  38. package/.agents/qa_test_plan/SKILL.md +20 -0
  39. package/.agents/qa_ui_a11y_smoke/SKILL.md +12 -0
  40. package/.agents/react_15_3_wix_iframe/SKILL.md +20 -0
  41. package/.agents/react_beast_practices/SKILL.md +29 -0
  42. package/.agents/release_gate/SKILL.md +77 -0
  43. package/.agents/release_gate_checklist_template/SKILL.md +68 -0
  44. package/.agents/review_reference_snippets/SKILL.md +437 -0
  45. package/.agents/security_baseline_dev/SKILL.md +16 -0
  46. package/.agents/security_review/SKILL.md +55 -0
  47. package/.agents/security_review_baseline/SKILL.md +25 -0
  48. package/.agents/state_rtk_beast_practices/SKILL.md +15 -0
  49. package/.agents/state_zustand_beast_practices/SKILL.md +11 -0
  50. package/.agents/styling_css_stack/SKILL.md +12 -0
  51. package/.agents/system_design_checklist/SKILL.md +48 -0
  52. package/.agents/tanstack_beast_practices/SKILL.md +19 -0
  53. package/.agents/tdd_workflow/SKILL.md +34 -0
  54. package/.agents/testing_strategy_js/SKILL.md +30 -0
  55. package/.agents/tests_quality_review/SKILL.md +18 -0
  56. package/.agents/threat_model_baseline/SKILL.md +57 -0
  57. package/.agents/tooling_bun_biome/SKILL.md +17 -0
  58. package/.agents/typescript_beast_practices/SKILL.md +15 -0
  59. package/.agents/ui_a11y_smoke_review/SKILL.md +15 -0
  60. package/.agents/ui_inventory/SKILL.md +50 -0
  61. package/.agents/ux_discovery/SKILL.md +48 -0
  62. package/.agents/ux_spec/SKILL.md +56 -0
  63. package/.agents/wix_self_hosted_embedded_script/SKILL.md +88 -0
  64. package/AGENTS.md +120 -0
  65. package/README.md +6 -1
  66. package/agents/architect.md +242 -0
  67. package/agents/conductor.md +207 -0
  68. package/agents/product_manager.md +121 -0
  69. package/agents/reviewer.md +201 -0
  70. package/agents/senior_full_stack.md +218 -0
  71. package/agents/tester.md +187 -0
  72. package/agents/ux_ui_designer.md +145 -0
  73. package/dist/index.js +62 -23
  74. package/dist/sourceResolver.d.ts +10 -0
  75. package/dist/sourceResolver.js +36 -0
  76. package/package.json +5 -2
@@ -0,0 +1,77 @@
1
+ ---
2
+ name: release_gate
3
+ description: Финальный релиз-гейт: собрать отчёты Reviewer+Tester+CI, проверить DoD, классифицировать риски, принять решение GO/NO-GO и сформировать план закрытия.
4
+ ---
5
+
6
+ # Skill: Release Gate
7
+
8
+ ## Цель
9
+ Принять решение о релизе (GO/NO-GO) на основе DoD, отчётов ревью/тестирования и состояния CI/CD.
10
+
11
+ ## Обязательное условие
12
+ Перед запуском релиз-гейта дирижёр должен сгенерировать чек-лист через: $release_gate_checklist_template
13
+
14
+ ## Входы
15
+ - Отчёт Reviewer (P0/P1/P2 + suggested fixes)
16
+ - Отчёт Tester (PASS/FAIL/BLOCKED + баги P0/P1/P2 + evidence)
17
+ - CI результаты (unit/integration, lint/format, security/dependency checks если есть)
18
+ - Release notes / список изменений (что релизим)
19
+ - Общий DoD
20
+ - Release Gate Checklist (RG-01…RG-xx) со статусами
21
+
22
+ ## Release Criteria (строго)
23
+ ### NO-GO (релиз запрещён)
24
+ - Есть **P0** от Reviewer или Tester
25
+ - Unit или Integration tests НЕ проходят
26
+ - Есть риск утечки секретов/PII в коде/логах
27
+ - Нет инструкций запуска/проверки (runbook) для изменений
28
+ - Критичный UX flow сломан или заблокирован (BLOCKED без обхода)
29
+ - Несоответствие API контрактам, ломающее клиента (P0)
30
+
31
+ ### GO с условиями (допускается только если заранее согласовано)
32
+ - Есть P1/P2, но:
33
+ - есть workaround/митигирующие меры,
34
+ - есть заведённые задачи с приоритетом и владельцем,
35
+ - риск описан и принят.
36
+
37
+ ## DoD Checklist (обязательный)
38
+ - [ ] Unit tests проходят
39
+ - [ ] Integration tests проходят
40
+ - [ ] Секреты не попадают в код/логи
41
+ - [ ] Есть инструкции запуска/проверки (локально/CI)
42
+ - [ ] Базовая безопасность: валидация ввода, авторизация, гигиена зависимостей
43
+
44
+ ## Процесс (шаги)
45
+ 1) Убедись, что создан RG checklist ($release_gate_checklist_template) и проставлены статусы.
46
+ 2) Собери входные артефакты: Reviewer report, Tester report, CI status.
47
+ 3) Сведи Findings в единый список: P0/P1/P2, owner, task link, status.
48
+ 4) Прогони DoD checklist и отметь PASS/MISSING.
49
+ 5) Прими решение GO/NO-GO (или GO-with-conditions если используется).
50
+ 6) Сформируй Release Report и обнови RG-22 (Decision).
51
+
52
+ ## Выход: Release Report (шаблон)
53
+ ### Release Decision
54
+ - Decision: GO / NO-GO / GO-with-conditions
55
+ - Version/Tag: <если есть>
56
+ - Scope: <кратко что релизим>
57
+
58
+ ### Evidence
59
+ - CI: PASS/FAIL (ссылка/коммит)
60
+ - Reviewer: PASS/MISSING + P0/P1/P2 count
61
+ - Tester: PASS/FAIL/BLOCKED + баги P0/P1/P2 count
62
+
63
+ ### DoD Status
64
+ - Checklist: PASS/MISSING (со списком missing)
65
+
66
+ ### Blocking Issues (если NO-GO)
67
+ - [ ] ID / Описание / Владелец / Как воспроизвести / Fix plan
68
+
69
+ ### Accepted Risks (если GO-with-conditions)
70
+ - Риск → влияние → mitigation → owner → дедлайн
71
+
72
+ ### Next Actions
73
+ - RG-01 ...
74
+ - RG-02 ...
75
+
76
+ ## См. также
77
+ - Шаблон чек-листа: $release_gate_checklist_template
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: release_gate_checklist_template
3
+ description: Генерирует перед релизом видимый чек-лист RG-01…RG-xx (Evidence/DoD/Security/Ops/Post-deploy/Rollback) и правила статусов.
4
+ ---
5
+
6
+ # Skill: Release Gate Checklist Template (RG-01…RG-xx)
7
+
8
+ ## Цель
9
+ Перед каждым релизом создать **одинаковый** релизный чек-лист, чтобы дирижёр мог:
10
+ - собрать доказательства (reports/CI),
11
+ - проверить DoD,
12
+ - зафиксировать риски,
13
+ - выполнить post-deploy smoke,
14
+ - обеспечить rollback plan.
15
+
16
+ ## Когда использовать
17
+ - Каждый раз перед финальным решением о релизе (Release Gate).
18
+
19
+ ## Входы
20
+ - Scope релиза (что релизим)
21
+ - Версия/тег/коммит (если есть)
22
+ - Ссылки на окружения (staging/prod) при наличии
23
+
24
+ ## Выход
25
+ - Видимый checklist **RG-01…RG-xx** со статусами:
26
+ - TODO / IN-PROGRESS / BLOCKED / DONE
27
+ - Краткая секция Evidence (ссылки/коммиты)
28
+ - Мини-итог “Что ещё нужно закрыть до GO”
29
+
30
+ ## Шаблон (создавать как есть)
31
+ ### Release Gate Checklist
32
+ - [ ] RG-01 (Evidence) Указать scope релиза + версия/тег/коммит
33
+ - [ ] RG-02 (Evidence) CI зелёный: unit tests PASS
34
+ - [ ] RG-03 (Evidence) CI зелёный: integration tests PASS
35
+ - [ ] RG-04 (Evidence) Lint/format PASS (если есть в CI)
36
+ - [ ] RG-05 (Evidence) Dependency/SCA audit PASS или риски зафиксированы
37
+ - [ ] RG-06 (Evidence) Reviewer report получен (P0=0) + ссылка на отчёт
38
+ - [ ] RG-07 (Evidence) Tester report получен (P0=0) + PASS/FAIL/BLOCKED + ссылка
39
+
40
+ - [ ] RG-08 (DoD) Секреты не попали в код/логи (проверки/скан/ручная верификация)
41
+ - [ ] RG-09 (DoD) Есть инструкции запуска/проверки (runbook) актуальные
42
+ - [ ] RG-10 (DoD) Базовая безопасность подтверждена: input validation + authz + hygiene
43
+
44
+ - [ ] RG-11 (Contracts) API соответствует контрактам (коды/форматы ошибок/валидация)
45
+ - [ ] RG-12 (Data) Миграции/изменения данных: план применений + обратимость (если есть)
46
+ - [ ] RG-13 (Ops) Observability: request_id/trace_id и безопасные логи (без PII/секретов)
47
+ - [ ] RG-14 (Ops) Rate limiting / WAF / security headers (если применимо и предусмотрено)
48
+
49
+ - [ ] RG-15 (Release) Release notes/изменения подготовлены
50
+ - [ ] RG-16 (Release) Feature flags/rollout стратегия (если используется) определена
51
+ - [ ] RG-17 (Rollback) Rollback plan описан и понятен
52
+ - [ ] RG-18 (Rollback) Backup/restore требования выполнены (если есть БД/критичные данные)
53
+
54
+ - [ ] RG-19 (Post-deploy) Smoke test сценарии определены (минимум P0 flows)
55
+ - [ ] RG-20 (Post-deploy) Smoke test выполнен на целевом окружении (PASS)
56
+ - [ ] RG-21 (Post-deploy) Мониторинг/алерты проверены (ошибки/latency)
57
+
58
+ - [ ] RG-22 (Decision) Итоговое решение: GO / NO-GO (+ причины и условия)
59
+
60
+ ## Правила статусов
61
+ - Если любой пункт RG-02/03/06/07/08/09/10 провален → ставить BLOCKED и релиз = NO-GO.
62
+ - P0 из Reviewer или Tester → BLOCKED и релиз = NO-GO.
63
+ - P1 допускаются только при явном “Accepted Risks” с owner+deadline.
64
+
65
+ ## Формат ответа
66
+ ### Release Gate Checklist (RG-xx) — со статусами
67
+ ### Evidence Links
68
+ ### What’s Missing to GO
@@ -0,0 +1,437 @@
1
+ ---
2
+ name: review_reference_snippets
3
+ description: Единый набор примеров (do/don’t) и шаблонов комментариев ревью: AppSec, Cloud/CI, контракты API, тесты, observability.
4
+ ---
5
+
6
+ # Skill: Review Reference Snippets (Do/Don't)
7
+
8
+ ## Цель
9
+ Дать Reviewer готовые формулировки и эталонные do/don’t примеры, чтобы ревью было конкретным, воспроизводимым и единым по стилю.
10
+
11
+ ---
12
+
13
+ ## A) Secrets (P0)
14
+
15
+ ### ❌ DON'T (P0): хардкод секретов
16
+ ```ts
17
+ const apiKey = "sk-proj-xxxxx";
18
+ const dbPassword = "supersecret";
19
+ ```
20
+
21
+ ### ✅ DO: секреты через env/secret manager + fail-fast проверка наличия
22
+ ```ts
23
+ const apiKey = process.env.OPENAI_API_KEY;
24
+ if (!apiKey) throw new Error("OPENAI_API_KEY not configured");
25
+
26
+ const dbPassword = process.env.DB_PASSWORD;
27
+ if (!dbPassword) throw new Error("DB_PASSWORD not configured");
28
+ ```
29
+
30
+ ### ✅ Шаблон комментария
31
+ - **P0:** Секрет захардкожен/попадает в репо. Вынести в secret manager/env, убрать из логов, проверить историю git и ротацию секретов.
32
+
33
+ ---
34
+
35
+ ## B) Secrets in logs (P0)
36
+
37
+ ### ❌ DON'T: логировать body/headers целиком
38
+ ```ts
39
+ logger.info({ headers: req.headers, body: req.body }, "incoming_request");
40
+ ```
41
+
42
+ ### ✅ DO: логировать только безопасные поля + request_id
43
+ ```ts
44
+ logger.info(
45
+ { request_id: req.requestId, route: req.path, user_id: ctx.user?.id ?? null },
46
+ "incoming_request"
47
+ );
48
+ ```
49
+
50
+ ### ✅ Комментарий
51
+ - **P0:** Возможна утечка PII/токенов в логах. Нужен allowlist полей + редактирование.
52
+
53
+ ---
54
+
55
+ ## C) Input validation на границе (P0/P1)
56
+
57
+ ### ✅ DO: схема на границе (пример Zod)
58
+ ```ts
59
+ import { z } from "zod";
60
+
61
+ const Schema = z.object({
62
+ email: z.string().email(),
63
+ name: z.string().min(1).max(100),
64
+ });
65
+
66
+ const input = Schema.parse(req.body);
67
+ ```
68
+
69
+ ### ❌ DON'T: использовать req.body напрямую
70
+ ```ts
71
+ service.create(req.body);
72
+ ```
73
+
74
+ ### ✅ Комментарий
75
+ - **P0/P1:** Нет валидации входа на границе. Добавить schema validation и вернуть 422/400 по контракту.
76
+
77
+ ---
78
+
79
+ ## D) Safe errors (P0/P1)
80
+
81
+ ### ❌ DON'T: отдавать stack/внутренние детали пользователю
82
+ ```ts
83
+ res.status(500).json({ message: err.message, stack: err.stack });
84
+ ```
85
+
86
+ ### ✅ DO: единый формат ошибок + safe message
87
+ ```ts
88
+ res.status(500).json({
89
+ error_code: "INTERNAL_ERROR",
90
+ message: "Unexpected error",
91
+ });
92
+ ```
93
+
94
+ ### ✅ Комментарий
95
+ - **P0/P1:** Утечка внутренностей. Для 5xx — только safe message; детали — в структурированные логи.
96
+
97
+ ---
98
+
99
+ ## E) SQL Injection (P0)
100
+
101
+ ### ❌ DON'T: конкатенация SQL
102
+ ```ts
103
+ await db.query(`SELECT * FROM users WHERE email='${email}'`);
104
+ ```
105
+
106
+ ### ✅ DO: параметризованные запросы / ORM
107
+ ```ts
108
+ await db.query("SELECT * FROM users WHERE email=$1", [email]);
109
+ ```
110
+
111
+ ### ✅ Комментарий
112
+ - **P0:** SQL injection риск. Только параметризация/ORM, без конкатенации.
113
+
114
+ ---
115
+
116
+ ## F) Command/Path Injection (P0)
117
+
118
+ ### ❌ DON'T: shell exec с пользовательским вводом
119
+ ```ts
120
+ import { exec } from "node:child_process";
121
+ exec(`convert ${userPath} -resize 200x200 out.png`);
122
+ ```
123
+
124
+ ### ✅ DO: избегать shell, использовать безопасные API/библиотеки
125
+ ```ts
126
+ // предпочтительно библиотека с безопасными аргументами, без shell
127
+ await imageLib.resize({ inputPath: safePath, width: 200, height: 200 });
128
+ ```
129
+
130
+ ### ✅ Комментарий
131
+ - **P0:** command/path injection риск. Нельзя exec с пользовательскими аргументами; нужен allowlist/безопасные API.
132
+
133
+ ---
134
+
135
+ ## G) AuthN/AuthZ (P0)
136
+
137
+ ### ❌ DON'T: “UI спрятал кнопку — значит безопасно”
138
+ ```ts
139
+ // server does not check role/ownership
140
+ ```
141
+
142
+ ### ✅ DO: authz до критичных операций + ownership check
143
+ ```ts
144
+ if (!ctx.user) throw new AppError(401, "UNAUTHORIZED", "Auth required");
145
+ if (ctx.user.role !== "admin") throw new AppError(403, "FORBIDDEN", "Not enough permissions");
146
+
147
+ // ownership example
148
+ if (resource.ownerId !== ctx.user.id) throw new AppError(403, "FORBIDDEN", "Not owner");
149
+ ```
150
+
151
+ ### ✅ Комментарий
152
+ - **P0:** Нет server-side authz/ownership. Добавить проверку ролей/владения ресурсом.
153
+
154
+ ---
155
+
156
+ ## H) CSRF (cookie-based sessions) (P1 → P0 если есть риск)
157
+
158
+ ### ❌ DON'T: cookie auth без CSRF защиты
159
+ ```txt
160
+ Cookie session + POST/PUT/DELETE без CSRF защиты
161
+ ```
162
+
163
+ ### ✅ DO: SameSite + CSRF token (если требуется)
164
+ ```txt
165
+ SameSite=Strict/Lax + CSRF token (double-submit или synchronizer token)
166
+ ```
167
+
168
+ ### ✅ Комментарий
169
+ - **P1/P0:** Если auth на cookie — нужна CSRF защита + проверка origin/referer по политике.
170
+
171
+ ---
172
+
173
+ ## I) XSS / пользовательский HTML (P0)
174
+
175
+ ### ❌ DON'T: dangerouslySetInnerHTML с пользовательским вводом
176
+ ```tsx
177
+ <div dangerouslySetInnerHTML={{ __html: userContent }} />
178
+ ```
179
+
180
+ ### ✅ DO: санитизация + CSP (если применимо)
181
+ ```tsx
182
+ const safeHtml = sanitize(userContent); // allowlist tags/attrs
183
+ return <div dangerouslySetInnerHTML={{ __html: safeHtml }} />;
184
+ ```
185
+
186
+ ### ✅ Комментарий
187
+ - **P0:** XSS риск. Нужна санитизация/экранирование и (по возможности) CSP.
188
+
189
+ ---
190
+
191
+ ## J) SSRF (P0 если есть fetch внешних URL)
192
+
193
+ ### ❌ DON'T: принимать URL от пользователя и fetch без ограничений
194
+ ```ts
195
+ await fetch(req.body.url);
196
+ ```
197
+
198
+ ### ✅ DO: allowlist доменов + блок внутренних адресов
199
+ ```ts
200
+ const url = new URL(req.body.url);
201
+ if (!ALLOWED_HOSTS.has(url.hostname)) throw new AppError(400, "BAD_URL", "Host not allowed");
202
+ // + защита от private ranges / metadata endpoints
203
+ ```
204
+
205
+ ### ✅ Комментарий
206
+ - **P0:** SSRF риск. Требуется allowlist + блок внутренних/metadata адресов.
207
+
208
+ ---
209
+
210
+ ## K) Rate limiting (P1 → P0 если публичный/дорогой endpoint)
211
+
212
+ ### ✅ DO: базовый лимит на API + stricter на expensive ops
213
+ ```ts
214
+ app.use("/api", limiter);
215
+ app.use("/api/auth/login", strictLimiter);
216
+ app.use("/api/search", searchLimiter);
217
+ ```
218
+
219
+ ### ✅ Комментарий
220
+ - **P1/P0:** Нет rate limiting. Для публичных/дорогих эндпоинтов — обязательно.
221
+
222
+ ---
223
+
224
+ ## L) Idempotency (P1)
225
+
226
+ ### ❌ DON'T: повторяемый POST приводит к двойным действиям
227
+ ```txt
228
+ Повтор запроса создаёт 2 заказа/2 списания
229
+ ```
230
+
231
+ ### ✅ DO: idempotency key для рискованных операций
232
+ ```txt
233
+ Idempotency-Key header + хранение результата/статуса по ключу на TTL
234
+ ```
235
+
236
+ ### ✅ Комментарий
237
+ - **P1:** Для create/charge операций нужна идемпотентность (особенно при ретраях/сетевых сбоях).
238
+
239
+ ---
240
+
241
+ ## M) API contract mismatches (P1/P0)
242
+
243
+ ### ✅ DO: единый error формат + коды статусов
244
+ ```json
245
+ { "error_code": "VALIDATION_ERROR", "message": "Invalid input", "details": { "field": "email" } }
246
+ ```
247
+
248
+ ### ❌ DON'T: разные форматы ошибок на разных ручках
249
+ ```json
250
+ { "error": "bad" }
251
+ ```
252
+
253
+ ### ✅ Комментарий
254
+ - **P1/P0:** Контракт ошибок должен быть единым по проекту, иначе ломается клиент/тесты.
255
+
256
+ ---
257
+
258
+ ## N) Observability: request_id/trace_id (P1)
259
+
260
+ ### ❌ DON'T: логи без корреляции
261
+ ```ts
262
+ logger.info("created user");
263
+ ```
264
+
265
+ ### ✅ DO: structured logs + request_id + ключевые поля
266
+ ```ts
267
+ logger.info({ request_id: req.requestId, user_id: user.id }, "user_created");
268
+ ```
269
+
270
+ ### ✅ Комментарий
271
+ - **P1:** Нужна корреляция запросов (request_id/trace_id) по Observability Plan.
272
+
273
+ ---
274
+
275
+ ## O) Audit logging для критичных операций (P1 → P0 если комплаенс/финансы)
276
+
277
+ ### ✅ DO: audit события (без PII/секретов)
278
+ ```ts
279
+ logger.info(
280
+ { audit: true, action: "ORDER_REFUND", actor_id: ctx.user.id, order_id: order.id, request_id: req.requestId },
281
+ "audit_event"
282
+ );
283
+ ```
284
+
285
+ ### ✅ Комментарий
286
+ - **P1/P0:** Для критичных действий нужен audit trail (кто/что/когда).
287
+
288
+ ---
289
+
290
+ ## P) Dependency & supply chain (P1)
291
+
292
+ ### ❌ DON'T: добавлять сомнительные/лишние пакеты без обоснования
293
+ ```txt
294
+ Добавлен пакет с низкой репутацией / дублирующий функциональность
295
+ ```
296
+
297
+ ### ✅ DO: минимизация + audit + lockfile
298
+ ```txt
299
+ Обосновать зависимость, проверить аудит, обновить lockfile, включить CI проверки.
300
+ ```
301
+
302
+ ### ✅ Комментарий
303
+ - **P1:** Проверь необходимость зависимости, результаты audit, и отсутствие known vulnerabilities.
304
+
305
+ ---
306
+
307
+ ## Q) CI/CD security (P1)
308
+
309
+ ### ✅ DO: OIDC вместо long-lived tokens + secret scanning + audit
310
+ ```yaml
311
+ permissions:
312
+ contents: read
313
+
314
+ steps:
315
+ - uses: trufflesecurity/trufflehog@main
316
+ - run: npm audit --audit-level=high
317
+ - uses: aws-actions/configure-aws-credentials@v4
318
+ with:
319
+ role-to-assume: arn:aws:iam::123:role/ci
320
+ aws-region: eu-central-1
321
+ ```
322
+
323
+ ### ❌ DON'T: хранить постоянные ключи в CI variables без ротации/ограничений
324
+ ```txt
325
+ AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY долгоживущие и с широкими правами
326
+ ```
327
+
328
+ ### ✅ Комментарий
329
+ - **P1:** Переход на OIDC, минимальные permissions, secret scanning, dependency audit.
330
+
331
+ ---
332
+
333
+ ## R) IAM least privilege (P0)
334
+
335
+ ### ❌ DON'T: wildcard доступ
336
+ ```yaml
337
+ iam_role:
338
+ permissions: ["s3:*"]
339
+ resources: ["*"]
340
+ ```
341
+
342
+ ### ✅ DO: точные actions + ресурсы
343
+ ```yaml
344
+ iam_role:
345
+ permissions:
346
+ - s3:GetObject
347
+ - s3:ListBucket
348
+ resources:
349
+ - arn:aws:s3:::my-bucket
350
+ - arn:aws:s3:::my-bucket/*
351
+ ```
352
+
353
+ ### ✅ Комментарий
354
+ - **P0:** IAM слишком широкие права. Нужен least privilege (конкретные actions + ресурсы).
355
+
356
+ ---
357
+
358
+ ## S) Network security (P0/P1)
359
+
360
+ ### ✅ DO: DB не публичная + ограниченные security groups
361
+ ```txt
362
+ DB private subnet, inbound только от app subnet/SG, no 0.0.0.0/0
363
+ ```
364
+
365
+ ### ❌ DON'T: открывать БД в интернет
366
+ ```txt
367
+ Inbound 0.0.0.0/0 на 5432
368
+ ```
369
+
370
+ ### ✅ Комментарий
371
+ - **P0:** Публичная БД — критическая уязвимость. Закрыть доступ, оставить только приватные сети/SG.
372
+
373
+ ---
374
+
375
+ ## T) CDN/WAF/Security headers (P1)
376
+
377
+ ### ✅ DO: security headers на edge + WAF rules
378
+ ```ts
379
+ headers.set("X-Frame-Options", "DENY");
380
+ headers.set("X-Content-Type-Options", "nosniff");
381
+ headers.set("Referrer-Policy", "strict-origin-when-cross-origin");
382
+ ```
383
+
384
+ ### ✅ Комментарий
385
+ - **P1:** Нет security headers/WAF. Для продакшена — включить managed rules + базовые заголовки.
386
+
387
+ ---
388
+
389
+ ## U) Backup/DR (P1)
390
+
391
+ ### ✅ DO: retention + deletion protection + recovery plan
392
+ ```hcl
393
+ backup_retention_period = 30
394
+ deletion_protection = true
395
+ ```
396
+
397
+ ### ✅ Комментарий
398
+ - **P1:** Нужны бэкапы/retention/rollback. Минимум: retention, (опц.) PITR, тест восстановления, runbook.
399
+
400
+ ---
401
+
402
+ ## V) Тесты безопасности (P1)
403
+
404
+ ### ✅ DO: тесты на auth/authz/валидацию/rate limit
405
+ ```ts
406
+ expect(resp.status).toBe(401);
407
+ expect(resp.status).toBe(403);
408
+ expect(resp.status).toBe(422);
409
+ expect(resp.status).toBe(429);
410
+ ```
411
+
412
+ ### ✅ Комментарий
413
+ - **P1:** Добавить тесты безопасности (auth/authz/validation/rate limiting) для критичных ручек.
414
+
415
+ ---
416
+
417
+ ## W) Шаблон итогового ревью (кратко)
418
+
419
+ ### ✅ Summary Template
420
+ ```txt
421
+ Summary:
422
+ - PASS: <что ок>
423
+ - MISSING: <что нужно добавить>
424
+
425
+ P0 (Blockers):
426
+ - [ ] <что / где / почему блокер / как исправить>
427
+
428
+ P1 (Important):
429
+ - [ ] ...
430
+
431
+ P2 (Nice-to-have):
432
+ - [ ] ...
433
+
434
+ Next Actions:
435
+ - REV-01 ...
436
+ - DEV-02 ...
437
+ ```
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: security_baseline_dev
3
+ description: Базовая безопасность в реализации: валидация на границах, authz, безопасные ошибки, запрет секретов в коде/логах, гигиена зависимостей.
4
+ ---
5
+
6
+ # Skill: Security Baseline (Dev)
7
+
8
+ ## Правила
9
+ - Валидация входных данных на границе (API/forms)
10
+ - Авторизация на сервере (не доверять клиенту)
11
+ - Никаких секретов в репозитории и логах
12
+ - Ошибки без утечки внутренностей
13
+ - Зависимости: обновления и минимизация лишних пакетов
14
+
15
+ ## См. также
16
+ - Примеры: `$dev_reference_snippets`
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: security_review
3
+ description: AppSec ревью для эндпоинтов/авторизации/ввода/секретов/чувствительных фич. Чек-лист + паттерны (OWASP baseline).
4
+ ---
5
+
6
+ # Skill: Security Review (AppSec)
7
+
8
+ ## Когда активировать
9
+ - Новые API endpoints
10
+ - AuthN/AuthZ
11
+ - User input / file uploads
12
+ - Secrets/credentials
13
+ - Payments/PII/sensitive data
14
+ - Third-party integrations
15
+
16
+ ## Checklist (минимум)
17
+ 1) Secrets management
18
+ - Нет хардкода, нет секретов в логах/ошибках
19
+ - Secrets живут в env/secret manager, есть проверка наличия
20
+
21
+ 2) Input validation
22
+ - Схемы на границах (whitelist validation)
23
+ - Ошибки не раскрывают внутренности
24
+
25
+ 3) Injection
26
+ - SQL/NoSQL/command: без конкатенаций, только параметризация/ORM
27
+
28
+ 4) AuthN/AuthZ
29
+ - Токены не в localStorage (если применимо), предпочтительно httpOnly cookies
30
+ - AuthZ проверки до критичных операций
31
+ - RLS/политики данных (если используете Supabase/аналог)
32
+
33
+ 5) XSS / CSP
34
+ - Санитизация пользовательского HTML (если есть)
35
+ - CSP/headers если требуется архитектурой
36
+
37
+ 6) CSRF (если cookie-based sessions)
38
+ - CSRF tokens / SameSite=Strict, double-submit pattern при необходимости
39
+
40
+ 7) Rate limiting
41
+ - Базовые лимиты на API, stricter для expensive endpoints
42
+
43
+ 8) Sensitive data exposure
44
+ - Нет PII/секретов в логах
45
+ - Нет stack trace для пользователя
46
+
47
+ 9) Dependency security
48
+ - audit/lockfile/reproducible install
49
+
50
+ ## Выход
51
+ - Findings P0/P1/P2 + конкретные фиксы
52
+ - Что добавить в тесты безопасности (auth/authz/validation/rate limiting)
53
+
54
+ ## См. также
55
+ - Примеры и анти-примеры: $review_reference_snippets
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: security_review_baseline
3
+ description: Security ревью по baseline: OWASP-риски, authz, валидация, SSRF/XSS/CSRF, секреты, безопасные логи/ошибки, least privilege.
4
+ ---
5
+
6
+ # Skill: Security Review Baseline
7
+
8
+ ## Проверить (минимум)
9
+ - Input validation на границах (API/forms)
10
+ - AuthN/AuthZ: сервер проверяет права, нет доверия клиенту
11
+ - Ошибки: без утечки stacktrace/SQL/конфигов/PII
12
+ - Secrets: нет ключей/токенов в репо и логах
13
+ - SSRF: если есть fetch внешних URL → allowlist/блок внутренних адресов
14
+ - XSS: экранирование/санитизация (если есть пользовательский HTML)
15
+ - CSRF: если cookie-based sessions → защита (tokens/sameSite)
16
+ - Rate limiting / brute force для чувствительных эндпоинтов (если нужно)
17
+ - Audit trail для критичных операций (если требуется threat model)
18
+
19
+ ## Выход
20
+ - P0 security blockers
21
+ - P1 security issues
22
+ - Рекомендованные меры (конкретно)
23
+
24
+ ## См. также
25
+ - Примеры и анти-примеры: $review_reference_snippets