dsh-desktop-kit 0.0.0-stage → 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 (177) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +87 -2
  3. package/client.js +3349 -0
  4. package/cordis.patch.yml +5 -0
  5. package/index.js +80 -0
  6. package/package.json +60 -4
  7. package/plugins/dsh-gkb-ru-ui/cordis.patch.yml +6 -0
  8. package/plugins/dsh-gkb-ru-ui/lib/client.js +1083 -0
  9. package/plugins/dsh-gkb-ru-ui/lib/index.js +142 -0
  10. package/plugins/dsh-gkb-ru-ui/lib/skills.js +376 -0
  11. package/plugins/dsh-gkb-ru-ui/package.json +28 -0
  12. package/plugins/dsh-peak-guard/README.md +70 -0
  13. package/plugins/dsh-peak-guard/client.js +741 -0
  14. package/plugins/dsh-peak-guard/cordis.patch.yml +5 -0
  15. package/plugins/dsh-peak-guard/icon.svg +12 -0
  16. package/plugins/dsh-peak-guard/index.js +2 -0
  17. package/plugins/dsh-peak-guard/locale/en.json +6 -0
  18. package/plugins/dsh-peak-guard/locale/ru.json +6 -0
  19. package/plugins/dsh-peak-guard/locale/zh.json +6 -0
  20. package/plugins/dsh-peak-guard/package.json +33 -0
  21. package/plugins/dsh-profile-transfer/README.md +62 -0
  22. package/plugins/dsh-profile-transfer/bootstrap/01-INSTALL.cmd +7 -0
  23. package/plugins/dsh-profile-transfer/bootstrap/README-ARCHIVE.md +54 -0
  24. package/plugins/dsh-profile-transfer/bootstrap/README-/320/243/320/241/320/242/320/220/320/235/320/236/320/222/320/232/320/220.md +42 -0
  25. package/plugins/dsh-profile-transfer/bootstrap/install-on-clean-machine.ps1 +119 -0
  26. package/plugins/dsh-profile-transfer/bootstrap//320/243/320/241/320/242/320/220/320/235/320/236/320/222/320/230/320/242/320/254.cmd +5 -0
  27. package/plugins/dsh-profile-transfer/client.js +806 -0
  28. package/plugins/dsh-profile-transfer/cordis.patch.yml +3 -0
  29. package/plugins/dsh-profile-transfer/icon.svg +13 -0
  30. package/plugins/dsh-profile-transfer/index.js +375 -0
  31. package/plugins/dsh-profile-transfer/locale/en.json +6 -0
  32. package/plugins/dsh-profile-transfer/locale/ru.json +6 -0
  33. package/plugins/dsh-profile-transfer/locale/zh.json +6 -0
  34. package/plugins/dsh-profile-transfer/package.json +36 -0
  35. package/plugins/dsh-profile-transfer/transfer.js +1004 -0
  36. package/plugins/dsh-project-memory/README.md +71 -0
  37. package/plugins/dsh-project-memory/cordis.patch.yml +4 -0
  38. package/plugins/dsh-project-memory/icon.svg +12 -0
  39. package/plugins/dsh-project-memory/index.js +1240 -0
  40. package/plugins/dsh-project-memory/locale/en.json +6 -0
  41. package/plugins/dsh-project-memory/locale/ru.json +6 -0
  42. package/plugins/dsh-project-memory/locale/zh.json +6 -0
  43. package/plugins/dsh-project-memory/package.json +26 -0
  44. package/plugins/dsh-session-move/README.md +67 -0
  45. package/plugins/dsh-session-move/client.js +719 -0
  46. package/plugins/dsh-session-move/cordis.patch.yml +5 -0
  47. package/plugins/dsh-session-move/icon.svg +14 -0
  48. package/plugins/dsh-session-move/index.js +497 -0
  49. package/plugins/dsh-session-move/locale/en.json +6 -0
  50. package/plugins/dsh-session-move/locale/ru.json +6 -0
  51. package/plugins/dsh-session-move/locale/zh.json +6 -0
  52. package/plugins/dsh-session-move/package.json +31 -0
  53. package/skills/code-review-checklist/SKILL.md +37 -0
  54. package/skills/content-writing/README.md +87 -0
  55. package/skills/content-writing/SKILL.md +348 -0
  56. package/skills/content-writing/assets/checklists/fact-check.md +53 -0
  57. package/skills/content-writing/assets/checklists/publish.md +65 -0
  58. package/skills/content-writing/assets/checklists/social.md +40 -0
  59. package/skills/content-writing/assets/templates/article.md +47 -0
  60. package/skills/content-writing/assets/templates/brief.md +44 -0
  61. package/skills/content-writing/assets/templates/doctor-card.md +41 -0
  62. package/skills/content-writing/assets/templates/image-prompts.md +128 -0
  63. package/skills/content-writing/assets/templates/post-telegram.md +36 -0
  64. package/skills/content-writing/assets/templates/post-vk.md +42 -0
  65. package/skills/content-writing/assets/templates/press-release.md +56 -0
  66. package/skills/content-writing/assets/templates/science-pop-note.md +55 -0
  67. package/skills/content-writing/assets/templates/service-card.md +46 -0
  68. package/skills/content-writing/references/anti-ai-style.md +248 -0
  69. package/skills/content-writing/references/editing.md +185 -0
  70. package/skills/content-writing/references/fact-checking.md +205 -0
  71. package/skills/content-writing/references/government-medical.md +246 -0
  72. package/skills/content-writing/references/images.md +212 -0
  73. package/skills/content-writing/references/journalism.md +252 -0
  74. package/skills/content-writing/references/science-popular.md +218 -0
  75. package/skills/content-writing/references/seo-content.md +172 -0
  76. package/skills/content-writing/references/social-media.md +253 -0
  77. package/skills/content-writing/references/templates.md +291 -0
  78. package/skills/database-safety/SKILL.md +31 -0
  79. package/skills/debugging-playbook/SKILL.md +39 -0
  80. package/skills/design-critique/SKILL.md +118 -0
  81. package/skills/dev-workflow/SKILL.md +41 -0
  82. package/skills/git-and-ci/SKILL.md +40 -0
  83. package/skills/pg-upgrade-verify/SKILL.md +48 -0
  84. package/skills/project-deep-dive/SKILL.md +170 -0
  85. package/skills/project-deep-dive/references/recon-commands.md +78 -0
  86. package/skills/project-deep-dive/references/section-templates.md +102 -0
  87. package/skills/project-memory-maintenance/SKILL.md +170 -0
  88. package/skills/project-memory-maintenance/references/journal-template.md +48 -0
  89. package/skills/project-memory-maintenance/references/section-rules.md +57 -0
  90. package/skills/release-and-deploy/SKILL.md +39 -0
  91. package/skills/requirements-and-planning/SKILL.md +115 -0
  92. package/skills/security-review/SKILL.md +36 -0
  93. package/skills/seo/README.md +60 -0
  94. package/skills/seo/SKILL.md +329 -0
  95. package/skills/seo/assets/README.md +66 -0
  96. package/skills/seo/assets/scripts/LICENSE-playwright-core.txt +202 -0
  97. package/skills/seo/assets/scripts/README.md +179 -0
  98. package/skills/seo/assets/scripts/lib/args.mjs +105 -0
  99. package/skills/seo/assets/scripts/lib/browser.mjs +620 -0
  100. package/skills/seo/assets/scripts/lib/zip.mjs +191 -0
  101. package/skills/seo/assets/scripts/seo-audit.mjs +1675 -0
  102. package/skills/seo/assets/snippets/jsonld-breadcrumb.json +30 -0
  103. package/skills/seo/assets/snippets/jsonld-faq.json +39 -0
  104. package/skills/seo/assets/snippets/jsonld-medical-clinic.json +49 -0
  105. package/skills/seo/assets/snippets/jsonld-medical-webpage.json +33 -0
  106. package/skills/seo/assets/snippets/jsonld-organization.json +74 -0
  107. package/skills/seo/assets/snippets/jsonld-physician.json +46 -0
  108. package/skills/seo/assets/snippets/meta.blade.php +61 -0
  109. package/skills/seo/assets/snippets/robots.txt +61 -0
  110. package/skills/seo/assets/snippets/sitemap-urlset-example.xml +72 -0
  111. package/skills/seo/assets/snippets/sitemap.xml +36 -0
  112. package/skills/seo/references/audit-checklist.md +305 -0
  113. package/skills/seo/references/content-seo.md +198 -0
  114. package/skills/seo/references/eeat-medical.md +217 -0
  115. package/skills/seo/references/measurement.md +223 -0
  116. package/skills/seo/references/on-page.md +209 -0
  117. package/skills/seo/references/stack-recipes.md +693 -0
  118. package/skills/seo/references/structured-data.md +485 -0
  119. package/skills/seo/references/technical-seo.md +294 -0
  120. package/skills/service-desk-conventions/SKILL.md +40 -0
  121. package/skills/service-desk-db-safety/SKILL.md +52 -0
  122. package/skills/service-desk-release/SKILL.md +43 -0
  123. package/skills/service-desk-testing/SKILL.md +47 -0
  124. package/skills/service-desk-ui/SKILL.md +33 -0
  125. package/skills/skills-router/SKILL.md +91 -0
  126. package/skills/testing-strategy/SKILL.md +37 -0
  127. package/skills/ui-design-system/SKILL.md +45 -0
  128. package/skills/web-research/SKILL.md +40 -0
  129. package/skills/wow-design/SKILL.md +168 -0
  130. package/skills/wow-design/assets/kit/README.md +195 -0
  131. package/skills/wow-design/assets/kit/assets/css/base.css +158 -0
  132. package/skills/wow-design/assets/kit/assets/css/components.css +1001 -0
  133. package/skills/wow-design/assets/kit/assets/css/fonts.css +73 -0
  134. package/skills/wow-design/assets/kit/assets/css/pages.css +737 -0
  135. package/skills/wow-design/assets/kit/assets/css/tokens.css +218 -0
  136. package/skills/wow-design/assets/kit/assets/fonts/LICENSE-golos-text.txt +93 -0
  137. package/skills/wow-design/assets/kit/assets/fonts/LICENSE-lora.txt +93 -0
  138. package/skills/wow-design/assets/kit/assets/fonts/LICENSE-unbounded.txt +93 -0
  139. package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-400-normal.woff2 +0 -0
  140. package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-500-normal.woff2 +0 -0
  141. package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-600-normal.woff2 +0 -0
  142. package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-700-normal.woff2 +0 -0
  143. package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-400-normal.woff2 +0 -0
  144. package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-500-normal.woff2 +0 -0
  145. package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-600-normal.woff2 +0 -0
  146. package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-700-normal.woff2 +0 -0
  147. package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-400-italic.woff2 +0 -0
  148. package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-400-normal.woff2 +0 -0
  149. package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-500-normal.woff2 +0 -0
  150. package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-600-normal.woff2 +0 -0
  151. package/skills/wow-design/assets/kit/assets/fonts/lora-latin-400-normal.woff2 +0 -0
  152. package/skills/wow-design/assets/kit/assets/fonts/lora-latin-500-normal.woff2 +0 -0
  153. package/skills/wow-design/assets/kit/assets/fonts/lora-latin-600-normal.woff2 +0 -0
  154. package/skills/wow-design/assets/kit/assets/fonts/unbounded-cyrillic-400-normal.woff2 +0 -0
  155. package/skills/wow-design/assets/kit/assets/fonts/unbounded-cyrillic-500-normal.woff2 +0 -0
  156. package/skills/wow-design/assets/kit/assets/fonts/unbounded-cyrillic-600-normal.woff2 +0 -0
  157. package/skills/wow-design/assets/kit/assets/fonts/unbounded-latin-400-normal.woff2 +0 -0
  158. package/skills/wow-design/assets/kit/assets/fonts/unbounded-latin-500-normal.woff2 +0 -0
  159. package/skills/wow-design/assets/kit/assets/fonts/unbounded-latin-600-normal.woff2 +0 -0
  160. package/skills/wow-design/assets/kit/assets/js/kit.js +550 -0
  161. package/skills/wow-design/assets/kit/pages/dashboard.html +539 -0
  162. package/skills/wow-design/assets/kit/pages/hospital.html +430 -0
  163. package/skills/wow-design/assets/kit/showcase.html +1164 -0
  164. package/skills/wow-design/assets/scripts/LICENSE-axe-core.txt +362 -0
  165. package/skills/wow-design/assets/scripts/LICENSE-playwright-core.txt +202 -0
  166. package/skills/wow-design/assets/scripts/README.md +312 -0
  167. package/skills/wow-design/assets/scripts/audit.mjs +1200 -0
  168. package/skills/wow-design/assets/scripts/capture.mjs +337 -0
  169. package/skills/wow-design/assets/scripts/package.json +30 -0
  170. package/skills/wow-design/references/anti-patterns.md +249 -0
  171. package/skills/wow-design/references/critique-rubric.md +259 -0
  172. package/skills/wow-design/references/design-brief-template.md +46 -0
  173. package/skills/wow-design/references/inspiration.md +200 -0
  174. package/skills/wow-design/references/presets.md +96 -0
  175. package/skills/wow-design/references/principles.md +368 -0
  176. package/skills/wow-design/references/stack-recipes.md +93 -0
  177. package/skills/wow-design/references/visual-qa.md +79 -0
@@ -0,0 +1,118 @@
1
+ ---
2
+ name: design-critique
3
+ description: "Дизайн-критик: аудит существующего интерфейса по 12 критериям, скриншоты, axe, приоритетные правки «до/после». Использовать для оценки и апгрейда готового UI."
4
+ whenToUse: "Нужно оценить, «почему выглядит дёшево», провести дизайн-ревью страницы/дашборда/формы, сравнить варианты, поднять существующий UI до WOW-уровня."
5
+ user-invocable: true
6
+ ---
7
+
8
+ # DESIGN-CRITIQUE — дизайн-критик
9
+
10
+ > Ты — строгий, но справедливый арт-директор. Твоя задача — увидеть проблемы, которые не видит автор,
11
+ > и превратить «нормально» в «дорого». Критика всегда конкретная: что вижу → почему плохо → как исправить.
12
+
13
+ ## Когда использовать
14
+ - Пользователь просит: «оцени дизайн», «почему выглядит дёшево», «сделай ревью», «докрути до WOW».
15
+ - Перед сдачей любой UI-работы (второй взгляд на свой же результат).
16
+ - Для сравнения 2–3 вариантов дизайна.
17
+
18
+ ## Процесс (не пропускай шаги)
19
+
20
+ ### 1. Зафиксируй контекст
21
+ Кто пользователь, какая задача экрана, что важнее (скорость / доверие / конверсия / плотность данных)? Без этого
22
+ «красиво» не существует. Запиши 1–2 строки.
23
+
24
+ ### 2. Собери «до»
25
+ Скриншоты текущего состояния:
26
+ ```
27
+ node ~/.dsh/skills/wow-design/assets/scripts/capture.mjs <file|url> --name before --out <outdir>
28
+ node ~/.dsh/skills/wow-design/assets/scripts/audit.mjs <file|url> --out <outdir>
29
+ ```
30
+ Нужны: desktop 1440 (light), mobile 390, тёмная тема (если есть). Для живого сайта — URL; для локального файла — путь.
31
+ Смотри PNG глазами через `read_image`.
32
+
33
+ ### 3. Быстрые тесты (10 минут)
34
+ | Тест | Как | Что ловит |
35
+ |---|---|---|
36
+ | 5 секунд | Открыл, отвернулся, посмотрел | Непонятно, что это и куда нажать |
37
+ | Squint test | Прищуриться / блюр 8px | Провалы иерархии, «серую кашу» |
38
+ | Grayscale | Убрать цвет (DevTools) | Всё держится только на цвете, нет структуры |
39
+ | 200% zoom | Увеличить | Мелкий текст, поломки сетки |
40
+ | 390px | Мобильный вьюпорт | Горизонтальный скролл, обрезанные таблицы, мелкие тапы |
41
+ | Tab | Пройти клавиатурой | Нет фокуса, ловушки, неработающие кнопки |
42
+ | Dark | Тёмная тема | Инверсия вместо палитры, нечитаемый контраст |
43
+
44
+ ### 4. Оценка по рубрике
45
+ 12 критериев, шкала 1–5, веса; порог 4.4/5 и ни один критерий < 4. Полная рубрика с дескрипторами:
46
+ `~/.dsh/skills/wow-design/references/critique-rubric.md`.
47
+
48
+ | # | Критерий | Вес |
49
+ |---|---|---|
50
+ | 1 | Первое впечатление / концепция | 15% |
51
+ | 2 | Визуальная иерархия и маршрут взгляда | 12% |
52
+ | 3 | Типографика | 12% |
53
+ | 4 | Цвет и контраст | 10% |
54
+ | 5 | Сетка, выравнивание, ритм | 10% |
55
+ | 6 | Воздух и плотность | 8% |
56
+ | 7 | Компоненты и состояния | 8% |
57
+ | 8 | Консистентность | 7% |
58
+ | 9 | Детали и полировка | 6% |
59
+ | 10 | Адаптив и мобильный | 5% |
60
+ | 11 | Доступность | 4% |
61
+ | 12 | Оригинальность vs польза | 3% |
62
+
63
+ Считай средневзвешенное. 5 — уровень Linear/Stripe/Apple, 4 — крепкий профессиональный, 3 — «нормально, но без
64
+ характера», 2 — заметно дёшево, 1 — сломано.
65
+
66
+ ### 5. Приоритизируй правки
67
+ - **P0 (блокеры):** нечитаемый контраст, сломанный мобильный, нет иерархии, «AI-slop»-маркеры, нерабочие состояния,
68
+ критичные axe-нарушения. Без них нельзя сдавать.
69
+ - **P1 (важное):** типографика, воздух, ритм, тени/радиусы, неконсистентные отступы, слабый первый экран.
70
+ - **P2 (полировка):** микродетали, motion, selection/scrollbar/focus, редакционные штрихи.
71
+
72
+ Каждый пункт: **что вижу (со скриншотом/координатой) → почему проблема → конкретное исправление (значения в px/rem/токенах) → приоритет.**
73
+ Не пиши «сделать современнее». Пиши «H1 48→72px, tracking −0.02em; убрать 3 карточки с иконками, заменить
74
+ редакционным нумерованным списком; радиус карточек 24→14px; добавить 48px воздуха до секции».
75
+
76
+ ### 6. Правки и «после»
77
+ Внеси P0+P1, пересними скриншоты, сравни «до/после», проверь рубрику снова. Если правит другой исполнитель —
78
+ отдай ему список P0/P1 с точными значениями и критериями приёмки.
79
+
80
+ ## Частые диагнозы и лекарства
81
+
82
+ | Симптом | Диагноз | Лечение |
83
+ |---|---|---|
84
+ | «Выглядит как шаблон» | Нет характера: дефолтные радиусы/цвета/шрифт | 1 signature-деталь, serif display, свой акцент, асимметрия |
85
+ | «Дёшево» | Мало воздуха, всё в рамках, мелкие заголовки | ×1.5–2 к отступам секций, H1 больше на 30–60%, контрастнее иерархия |
86
+ | «Каша» | Нет маршрута взгляда, всего поровну | 1 главный акцент на экран, приглушить второстепенное (muted), убрать лишние рамки |
87
+ | «Серо и скучно» | Только нейтрали, нет тёплого/акцента | 1 акцент + тёплый полутон (медь/терракота), тонкие линии, зерно 2% |
88
+ | «Пёстро» | Много акцентов и цветов | 60-30-10: нейтрали 60%, вторичный 30%, акцент 10% |
89
+ | «Тяжело читать» | Длинная строка, мелкий текст, низкий контраст | 60–72ch, 16–18px body, 1.6 line-height, контраст ≥ 4.5 |
90
+ | «Дёргается» | Анимации ради анимаций, разные easing | Только hover/reveal, 160–260ms, один easing, reduced-motion |
91
+ | «Неудобно» | Нет состояний, мелкие тапы, таблица ломается | states, 44px тапы, `.table-wrap`, явные CTA |
92
+ | «Мобильный ужас» | Десктопный layout сжат | Мобильная композиция: стек, порядок, скрыть декор, sticky CTA |
93
+
94
+ ## Чек-лист доступности (обязательный)
95
+ - [ ] Контраст текста ≥ 4.5:1, крупного ≥ 3:1, иконок/границ ≥ 3:1.
96
+ - [ ] Все интерактивные элементы доступны с клавиатуры, `focus-visible` видим, порядок логичен.
97
+ - [ ] У изображений alt, у иконок-кнопок aria-label, у модалок — focus trap и Escape.
98
+ - [ ] Нет информации только цветом (статусы дублируются текстом/иконкой).
99
+ - [ ] `prefers-reduced-motion` уважается.
100
+ - [ ] axe: 0 critical/serious (если есть — блокер).
101
+
102
+ ## Формат отчёта
103
+
104
+ ```
105
+ # Дизайн-ревью: <объект>
106
+ Контекст: <аудитория, задача>
107
+ Вердикт: SHIP / NEEDS WORK / REDESIGN
108
+ Оценка: <средний балл>/5 (ниже 4: <критерии>)
109
+ Первое впечатление (5 сек): <что понятно/непонятно>
110
+ ## P0 — блокеры
111
+ 1. <что вижу> → <почему> → <фикс> (скрин: path)
112
+ ## P1 — важное
113
+ ...
114
+ ## P2 — полировка
115
+ ...
116
+ Что уже хорошо: <3–5 пунктов — обязательно>
117
+ После правок: <новые скриншоты, повторная оценка>
118
+ ```
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: dev-workflow
3
+ description: "Универсальный процесс разработки для любого проекта — этапы, качество, Definition of Done, работа с памятью и командой."
4
+ whenToUse: "Начало любой задачи по коду в любом проекте; чтобы выбрать правильный порядок действий и не забыть проверки."
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Универсальный процесс разработки
9
+
10
+ ## Шаг 0 — триаж навыков (обязательно)
11
+ В начале задачи открой `skills-router`, определи тип работы и загрузи **все** применимые скиллы
12
+ (`requirements-and-planning`, `wow-design`, `seo`, `php-laravel`, `database-safety`, `testing-strategy`,
13
+ `security-review`, `release-and-deploy`, проектные и т.д.). Без этого не начинай разведку и правки.
14
+
15
+ ## Этапы (всегда в этом порядке)
16
+ 1. **Разведка:** прочитать память проекта, найти затронутые файлы/маршруты/модели, выявить риски.
17
+ 2. **План:** короткий список шагов + критерии приёмки; для крупного — todo/план и команда.
18
+ 3. **Бэкап/безопасность:** копия затрагиваемых файлов или git; для БД — дамп; план отката.
19
+ 4. **Реализация:** минимальные локальные правки; не менять чужие зоны без причины; соблюдать инварианты.
20
+ 5. **Проверки:** линтер + статанализ + тесты (unit/feature) + E2E/UI (если затронут интерфейс) + визуально.
21
+ 6. **Ревью:** пройтись по чек-листу (данные, безопасность, тесты, стиль) — см. скилл `code-review-checklist`.
22
+ 7. **Документация/версия:** обновить документацию/CHANGELOG, поднять версию по правилам проекта.
23
+ 8. **Релиз:** по скиллу `release-and-deploy` (артефакт → проверка → выкатка → smoke → откат при проблеме).
24
+ 9. **Память:** записать итог (что сделано, как проверено, риски) в файлы памяти проекта.
25
+
26
+ ## Definition of Done
27
+ - [ ] Применимые скиллы загружены на старте и реально использованы; гейты пройдены (в отчёте перечислены).
28
+ - [ ] Задача решена по критериям; поведение проверено вживую (не только тестами).
29
+ - [ ] Автотесты: существующие зелёные, новые добавлены и падают без правки.
30
+ - [ ] Линтер/статанализ без новых ошибок.
31
+ - [ ] Интерфейс: скриншоты «до/после», светлая/тёмная тема, mobile (если UI).
32
+ - [ ] Нет секретов, отладочного кода и случайных файлов в диффе.
33
+ - [ ] Данные защищены (бэкап/аддитивные миграции), план отката есть.
34
+ - [ ] Документация/версия/память обновлены.
35
+
36
+ ## Принципы
37
+ - Сначала понять — потом менять. Одна задача — один связный дифф.
38
+ - Не ломать чужие зоны; при необходимости — договариваться о границах.
39
+ - Необратимые действия (удаление данных, деплой, публикация) — только с явного разрешения.
40
+ - Если застрял: сузить проблему, собрать факты, написать минимальный репро; см. `debugging-playbook`.
41
+ - Контекст не терять: ключевые факты — в память, длинные сессии — компактить.
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: git-and-ci
3
+ description: "Работа с git и CI — ветки, коммиты, теги, гигиена репозитория, pre-commit проверки и пайплайн."
4
+ whenToUse: "При инициализации репозитория, коммитах, ветках, тегах релизов и настройке CI для любого проекта."
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Git и CI (универсально)
9
+
10
+ ## Репозиторий
11
+ - `.gitignore` до начала работы: зависимости, сборки, секреты (`.env*`), runtime-данные, IDE.
12
+ - Проверять `git status` перед коммитом: не должно быть мусора/секретов/сгенерированных файлов.
13
+ - Не коммитить `vendor/`, `node_modules/`, `public/build`, `storage/`-рантайм, дампы БД, PII.
14
+
15
+ ## Ветки и коммиты
16
+ - `main` — стабильная; работа — в `feature/<кратко>` / `fix/<кратко>`.
17
+ - Коммиты небольшие и атомарные; сообщение — «что и зачем» (например, `feat: ...`, `fix: ...`, `chore: ...`).
18
+ - Не смешивать форматирование и функциональные изменения в одном коммите.
19
+ - Тег релиза: `vX.Y.Z` на проверенном коммите; тег не двигать после публикации.
20
+
21
+ ## Перед коммитом (pre-commit)
22
+ 1. Линтер по изменённым файлам.
23
+ 2. Статанализ (без новых ошибок).
24
+ 3. Тесты (unit/feature; E2E — если UI).
25
+ 4. Просмотр диффа целиком: секреты, отладка, случайные файлы.
26
+
27
+ ## CI-пайплайн (этапы)
28
+ 1. Checkout + кэш зависимостей.
29
+ 2. Установка зависимостей (lock-файл, без интерактива).
30
+ 3. Линтер + статанализ.
31
+ 4. Тесты на реальной СУБД (сервис-контейнер), с baseline.
32
+ 5. Сборка ассетов/compile.
33
+ 6. E2E (стенд поднимается в CI) + артефакты при падении (скриншоты/логи).
34
+ 7. Сборка релизного артефакта/checksums (по тегу).
35
+
36
+ ## Гигиена истории
37
+ - `git log --oneline`, `git diff main...HEAD` перед ревью.
38
+ - Откат: `git revert` для опубликованного, `git reset` — только для локального.
39
+ - Большие бинарники/дампы — не в git (артефакты/хранилище).
40
+ - Секрет, попавший в историю, считается скомпрометированным — ротировать.
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: pg-upgrade-verify
3
+ description: "Универсальная проверка обновления на копии живой PostgreSQL-базы — до/после без риска для прода."
4
+ whenToUse: "Перед выкаткой любого обновления, которое трогает схему БД, сиды или данные; для доказательства, что данные не потеряны."
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Проверка обновления на копии живой БД (PostgreSQL)
9
+
10
+ Цель: доказать, что после обновления данные существующей базы не изменились и приложение работает.
11
+
12
+ ## 1. Подготовка
13
+ 1. Отдельная БД: `servicedesk_upgrade_test` (никогда не боевая!).
14
+ 2. Развернуть **старую** версию кода в отдельную папку (распаковать архив старой версии).
15
+ 3. Скопировать `vendor` из рабочей копии (если `composer.lock` совпадает) — так быстрее и без сети.
16
+ 4. `.env`: указать `DB_DATABASE=servicedesk_upgrade_test`, `APP_URL=http://localhost`, `APP_KEY` через `php artisan key:generate`.
17
+ 5. `php artisan migrate --force` + `db:seed --force` + при наличии `DemoDataSeeder`.
18
+ 6. Добавить «живые» данные: по 1–3 строки в ключевые таблицы (tickets, comments, attachments, assets, consumables, stock_moves, kb_articles, activity_logs, ticket_reads).
19
+
20
+ ## 2. Зафиксировать «до»
21
+ ```sql
22
+ SELECT 'tickets' t, count(*) FROM tickets UNION ALL SELECT 'users', count(*) FROM users /* ... */;
23
+ SELECT 'tickets_max', max(id)||'/'||max(number) FROM tickets;
24
+ SELECT 'tickets_checksum', md5(string_agg(t::text,'|' ORDER BY id)) FROM tickets t;
25
+ SELECT 'comments_checksum', md5(coalesce(string_agg(c::text,'|' ORDER BY id),'')) FROM ticket_comments c;
26
+ ```
27
+ Сохранить в файл (например `_upgrade-before.txt`).
28
+
29
+ ## 3. Имитация обновления
30
+ 1. Наложить новый код поверх папки старой версии (`tar -xzf new.tgz -C <папка>`).
31
+ 2. `php artisan backup:run` (если используется) — проверить, что копия создалась.
32
+ 3. `php artisan migrate --force` (ожидаемо «Nothing to migrate», если миграций нет).
33
+ 4. `php artisan db:seed --force`.
34
+ 5. Обновить `APP_VERSION` в `.env` (как делает `deploy/update.sh`).
35
+
36
+ ## 4. Зафиксировать «после» и сравнить
37
+ - Повторить SQL из п.2 → сравнить количества и md5 (должны совпасть; допустимый рост — только журналы от самих команд backup/seed).
38
+ - Smoke: `/login` 200, вход, `/tickets` 200 со старыми номерами, `/tickets/{id}/edit` — старые комментарии/вложения видны.
39
+ - `php artisan migrate:status | grep -c Ran` — все миграции Ran.
40
+
41
+ ## 5. Убрать за собой
42
+ - Удалить тестовую БД (`DROP DATABASE servicedesk_upgrade_test`) и папку теста.
43
+ - Артефакты «до/после» — в память/отчёт: `...\memory\projects\<проект>\tests\`.
44
+ - Записать вывод в `SESSIONS.md`.
45
+
46
+ ## Важно
47
+ - Не запускать на боевой БД; не использовать `migrate:fresh`.
48
+ - Если контрольные суммы разошлись — остановиться, не выкатывать, искать причину в миграциях/сидерах.
@@ -0,0 +1,170 @@
1
+ ---
2
+ name: project-deep-dive
3
+ description: "Глубокий анализ проекта с запоминанием в локальное досье через project_memory: разведка, архитектура, карта кода, инварианты, ловушки, runbook, теги достоверности и честный отчёт."
4
+ whenToUse: "Пользователь просит «глубоко проанализируй / разберись и запомни <проект>», вызвана команда /remember, досье отсутствует или устарело (старый lastAnalyzedAt или другой git HEAD), либо предстоит крупная работа в незнакомом проекте."
5
+ user-invocable: true
6
+ ---
7
+
8
+ # PROJECT-DEEP-DIVE — анализ проекта и запоминание
9
+
10
+ > Цель: понять проект настолько, чтобы дальше работать в нём без повторной разведки.
11
+ > Результат — досье в `%USERPROFILE%\.dsh\projects-memory\<slug>\` и отчёт: что записано,
12
+ > что проверено, что осталось неясным. Досье хранит выводы и ссылки, а не копии кода.
13
+
14
+ ## 0. Контракт (нарушать нельзя)
15
+
16
+ 1. **Первый вызов — `project_memory(action="status")`**, до чтения файлов проекта: он определяет проект, наличие и свежесть досье.
17
+ 2. **Никогда не отправляй содержимое проекта в сеть.** Ни `web_fetch`, ни `web_search`, ни внешние API не получают код, конфиги, пути, имена серверов, фрагменты БД и журналы. Анализ только локальный.
18
+ 3. **Никогда не сохраняй секреты и PII.** Пароли, токены, ключи, строки подключения, e-mail, телефоны, ФИО, адреса не попадают ни в досье, ни в журнал. Допустимо указать только имя переменной или файла: «секрет в `.env`, `DB_PASSWORD`».
19
+ 4. **Секции пишутся только через `update_section`.** Файлы досье и `INDEX.json` вручную не редактируй — иначе рассинхронизируются индекс и свежесть.
20
+ 5. **Финальный ответ обязан перечислить:** какие секции записаны, какие факты проверены, что осталось неясным. Отчёт без пункта «неясно» — признак поверхностного анализа.
21
+
22
+ ## 1. Когда применять
23
+
24
+ - Просьба «глубоко проанализируй / разберись и запомни <проект>», «составь досье», «введи в курс».
25
+ - Команда `/remember`: объём средний — `PROJECT`, `ARCHITECTURE`, `CODE-MAP`, `RUNBOOK`.
26
+ - Перед крупной работой в незнакомом проекте: сначала досье, потом правки (см. `dev-workflow`, `requirements-and-planning`).
27
+ - Досье устарело: `lastAnalyzedAt` старше ~30 дней, `git.head` в INDEX.json не равен текущему `git rev-parse HEAD`, сменилась ветка.
28
+ - Не применять: точечный вопрос по одному файлу; разовая правка при актуальном досье.
29
+
30
+ ## 2. Инструмент project_memory
31
+
32
+ Сигнатура: `project_memory(action, project?, file?, content?, query?, root?, name?, mode?, maxChars?)`.
33
+ В текущей сборке инструмента у `register` есть также необязательный `stack` — короткое описание стека.
34
+ Хранилище: `%USERPROFILE%\.dsh\projects-memory\<slug>\` — `PROJECT.md`, `ARCHITECTURE.md`, `CODE-MAP.md`, `INVARIANTS.md`, `GOTCHAS.md`, `RUNBOOK.md`, `JOURNAL/YYYY-MM.md`, `INDEX.json`.
35
+
36
+ | action | Что делает | Обязательные аргументы | Пример |
37
+ |---|---|---|---|
38
+ | `status` | состояние хранилища, досье и свежести | — | `project_memory(action="status")` |
39
+ | `register` | регистрирует проект | `name`, `root` (+ `stack`) | `project_memory(action="register", name="my-app", root="C:\work\my-app", stack="Laravel 13 / PostgreSQL")` |
40
+ | `list` | список проектов | — | `project_memory(action="list")` |
41
+ | `read` | читает файл досье | `project`, `file` | `project_memory(action="read", project="my-app", file="ARCHITECTURE", maxChars=8000)` |
42
+ | `search` | ищет по досье перед записью | `query` | `project_memory(action="search", project="my-app", query="очереди")` |
43
+ | `append_journal` | дописывает сессию в `JOURNAL/YYYY-MM.md` | `project`, `content` | `project_memory(action="append_journal", project="my-app", content="...")` |
44
+ | `update_section` | записывает секцию досье | `project`, `file`, `content`, `mode` | `project_memory(action="update_section", project="my-app", file="ARCHITECTURE", content="...", mode="replace")` |
45
+
46
+ - `file` — только `PROJECT`, `ARCHITECTURE`, `CODE-MAP`, `INVARIANTS`, `GOTCHAS`, `RUNBOOK`, `JOURNAL`.
47
+ - `mode` — `replace` (секция перезаписывается целиком, по умолчанию) или `append` (дописать в конец).
48
+ - `maxChars` — ограничение вывода `read` (500–30000, по умолчанию 12000); целиком досье не выкачивай.
49
+ - `root` — абсолютный путь к корню проекта; `name` — slug в kebab-case (`service-desk`); `stack` — короткое описание стека при `register`.
50
+ - `project` по умолчанию — проект текущей сессии; чужой проект указывай явно.
51
+ - `content` — markdown секции по каркасам из §4.
52
+
53
+ ## 3. Процесс (8 шагов)
54
+
55
+ ### Шаг 1. Статус и проект
56
+ `project_memory(action="status")`.
57
+ - Проект найден — запомни slug и переходи к Шагу 2.
58
+ - Нет проекта — `project_memory(action="register", name="<slug>", root="<абсолютный путь>")`.
59
+ - Несколько кандидатов или непонятно, о каком проекте речь, — **спроси пользователя**, не угадывай.
60
+ - Досье устарело — предупреди сразу; устаревшие факты в новых секциях помечай `[устарело]`.
61
+
62
+ ### Шаг 2. Что уже известно
63
+ Прочитай существующие секции (`read` с `maxChars=6000–8000`). Цель — не дублировать и не противоречить.
64
+ Новый факт спорит со старым — перепроверь по коду: победивший запиши, проигравший пометь `[устарело]`.
65
+
66
+ ### Шаг 3. Разведка (только чтение)
67
+ Источники по порядку: `AGENTS.md` → `README*` → манифесты → структура каталогов → git.
68
+ ```powershell
69
+ $root = "C:\path\to\project"
70
+ git -C $root rev-parse --abbrev-ref HEAD; git -C $root rev-parse --short HEAD
71
+ git -C $root log -5 --oneline; git -C $root status --short
72
+ rg --files $root -g '!node_modules' -g '!vendor' -g '!dist' -g '!build' -g '!.git' | Select-Object -First 300
73
+ Get-ChildItem $root -Name
74
+ ```
75
+ Манифесты и конфиги: `composer.json`, `package.json`, `pnpm-workspace.yaml`, `pyproject.toml`, `requirements.txt`, `go.mod`, `Cargo.toml`, `pom.xml`, `docker-compose.yml`, `Dockerfile`, `Makefile`, `.env.example`, `phpunit.xml`, `vite.config.*`, `tsconfig.json`.
76
+ Дальше — `references/recon-commands.md` (рецепты для Laravel/PHP, JS/TS, Bitrix, generic).
77
+
78
+ ### Шаг 4. Трассировка потоков
79
+ Веди цепочку «точка входа → маршрут → обработчик → домен → данные → тесты». Команды:
80
+ ```powershell
81
+ rg -n "Route::|router\.|app\.(get|post)|urlpatterns" $root -g '!node_modules' -g '!vendor'
82
+ rg --files $root | rg "migrations|schema|models|entities"
83
+ rg -n "class \w+(Service|Controller|Handler|Repository)\b" $root -g '!vendor' -g '!node_modules'
84
+ rg -n "process\.env|config\(|ENV\[|getenv\(" $root -g '!node_modules' -g '!vendor'
85
+ rg --files $root | rg "(^|/)(tests?|spec|__tests__|phpunit|playwright)/"
86
+ ```
87
+ Фиксируй не всё подряд, а то, что объясняет: как запустить, где бизнес-логика, где данные, что легко сломать.
88
+
89
+ ### Шаг 5. Сборка секций
90
+ Порядок записи: `PROJECT` → `ARCHITECTURE` → `CODE-MAP` → `INVARIANTS` → `GOTCHAS` → `RUNBOOK`.
91
+ Каждая секция — отдельный `update_section`; после записи прочитай её обратно (`read`).
92
+
93
+ | Секция | Минимум | Обязательные блоки |
94
+ |---|---|---|
95
+ | `PROJECT` | 8–15 строк | назначение; стек и версии; где лежит (копия, прод); запуск; статус |
96
+ | `ARCHITECTURE` | 15+ строк | компоненты и границы; точки входа; поток данных; внешние зависимости; ключевые решения |
97
+ | `CODE-MAP` | 10+ записей | область → путь → зачем; сервисы; конфиги; тесты |
98
+ | `INVARIANTS` | 5+ правил | правило → почему → как проверить → ссылка `path:line` |
99
+ | `GOTCHAS` | 3+ ловушки | симптом → причина → обход |
100
+ | `RUNBOOK` | 5+ команд | запуск; тесты; сборка; деплой и откат; бэкап; диагностика |
101
+
102
+ Малый проект (один скрипт/сервис) — минимумы пропорционально ниже, но блоки те же. Подробные каркасы — `references/section-templates.md`.
103
+
104
+ ### Шаг 6. Метки достоверности и ссылки
105
+ - `[проверено]` — прочитано в файле или подтверждено выводом команды; рядом ссылка `path:line`.
106
+ - `[выведено]` — логический вывод (соглашение фреймворка, косвенная связь); прямого источника в коде нет.
107
+ - `[устарело]` — было верно в прошлой версии/ветке; требует перепроверки.
108
+ - Ссылка — всегда `относительный/путь:строка`; копировать код, логи и дампы в досье нельзя.
109
+
110
+ ### Шаг 7. Журнал
111
+ Значимую сессию зафиксируй `append_journal` (сжато, по шаблону из `project-memory-maintenance`): что анализировали, что выяснили, какие решения, что осталось.
112
+
113
+ ### Шаг 8. Отчёт пользователю
114
+ ```markdown
115
+ ## Записано в досье
116
+ - PROJECT — ...
117
+ - ARCHITECTURE — ...
118
+
119
+ ## Проверено
120
+ - [проверено] ... (path:line)
121
+
122
+ ## Неясно / требует проверки
123
+ 1. ...
124
+ 2. ...
125
+
126
+ ## Дальше
127
+ - ...
128
+ ```
129
+ Перечисли **каждую** записанную секцию и **каждый** неясный пункт. Не замалчивай сомнения.
130
+
131
+ ## 4. Каркасы секций (сжато)
132
+
133
+ - `PROJECT`: что делает; стек и версии; репозиторий и прод; как поднять; статус и владелец.
134
+ - `ARCHITECTURE`: слои и модули; поток данных текстом; очереди/крон; внешние сервисы; ключевые решения.
135
+ - `CODE-MAP`: таблица «область | путь | зачем»; точки входа; модели/схема; тесты; конфиги.
136
+ - `INVARIANTS`: нумерованные «нельзя», каждое с причиной и способом проверки.
137
+ - `GOTCHAS`: симптом → причина → обход; отдельная ловушка — отдельный пункт.
138
+ - `RUNBOOK`: окружение; установка; запуск; тесты; сборка; деплой; откат; бэкап; где логи.
139
+
140
+ Полные шаблоны с примерами — `references/section-templates.md`.
141
+
142
+ ## 5. Гейт качества (перед сдачей)
143
+
144
+ - [ ] `status` вызван первым, проект определён (slug зафиксирован).
145
+ - [ ] Существующие секции прочитаны, дублей нет.
146
+ - [ ] Каждая записанная секция отправлена отдельным `update_section` и прочитана обратно.
147
+ - [ ] Секретов и PII нет: перечитанный текст не содержит значений паролей/токенов/персональных данных.
148
+ - [ ] У ключевых утверждений есть метка достоверности и ссылка `path:line`.
149
+ - [ ] Код и логи не скопированы в досье.
150
+ - [ ] Минимумы по объёму соблюдены; каждая секция ≤ 40 KB.
151
+ - [ ] Противоречия разобраны; устаревшее помечено `[устарело]`.
152
+ - [ ] Отчёт содержит «Записано» и «Неясно».
153
+ - [ ] В сеть ничего из проекта не уходило.
154
+
155
+ ## 6. Антипаттерны
156
+
157
+ - Копировать целые файлы, конфиги, миграции и логи «чтобы было».
158
+ - Сохранять `.env`, дампы, токены, персональные данные.
159
+ - Отправлять код/конфиги в веб-поиск или внешние API «для уточнения».
160
+ - Писать «очевидно», «скорее всего» без метки `[выведено]`.
161
+ - Заполнять шаблон пунктами без доказательств.
162
+ - Править файлы досье и `INDEX.json` руками.
163
+ - Начинать анализ без `status`.
164
+ - Оставлять старые факты без пометки и заявлять о свежести досье.
165
+ - Складывать всё в одну гигантскую секцию вместо ссылок на файлы.
166
+
167
+ ## 7. Связанное
168
+
169
+ - Постоянное ведение памяти — `project-memory-maintenance` (журнал, дедупликация, свежесть).
170
+ - Процесс разработки — `dev-workflow`; планирование — `requirements-and-planning`; финальное ревью — `code-review-checklist`.
@@ -0,0 +1,78 @@
1
+ # Разведка проекта: команды и источники
2
+
3
+ > Только чтение. Ничего не запускай на изменение (миграции, seed, деплой, install) ради досье.
4
+ > Если `rg` нет — используй инструменты `glob`/`grep` или `Get-ChildItem -Recurse`.
5
+ > Значения `.env` не читай: имена переменных бери из `.env.example` или из кода.
6
+
7
+ ## 0. Подготовка
8
+ ```powershell
9
+ $root = "C:\path\to\project" # абсолютный путь, проверить Test-Path
10
+ Test-Path (Join-Path $root "AGENTS.md")
11
+ Test-Path (Join-Path $root ".git")
12
+ ```
13
+
14
+ ## 1. Универсальный минимум (любой стек)
15
+ ```powershell
16
+ Get-ChildItem $root -Name
17
+ git -C $root rev-parse --abbrev-ref HEAD
18
+ git -C $root rev-parse --short HEAD
19
+ git -C $root log -5 --oneline
20
+ git -C $root status --short
21
+ rg --files $root -g '!node_modules' -g '!vendor' -g '!dist' -g '!build' -g '!.git' | Select-Object -First 300
22
+ ```
23
+ - `AGENTS.md` — правила работы в проекте (читать первым).
24
+ - `README*`, `docs/`, `CONTRIBUTING*` — заявленный процесс; проверяй кодом, а не верь на слово.
25
+ - Манифесты: `composer.json`, `package.json`, `pnpm-lock.yaml`, `yarn.lock`, `pyproject.toml`, `requirements.txt`, `go.mod`, `Cargo.toml`, `pom.xml`, `Dockerfile`, `docker-compose.yml`, `Makefile`, `.env.example`.
26
+ - CI: `.github/workflows/`, `.gitlab-ci.yml`, `Jenkinsfile` — какие проверки реально гоняются.
27
+
28
+ ## 2. Laravel / PHP
29
+ ```powershell
30
+ rg -n "Route::|->group\(|middleware\(" routes app -g '*.php'
31
+ rg -n "class \w+Controller|class \w+Service|class \w+Repository|function handle" app -g '*.php'
32
+ php artisan about # безопасно: версии и окружение
33
+ php artisan route:list --except-vendor
34
+ php artisan migrate:status
35
+ rg --files database/migrations
36
+ rg -n "validate\(|Validator::|FormRequest|authorize\(" app -g '*.php'
37
+ rg -n "DB::transaction|lockForUpdate|queue|dispatch\(" app -g '*.php'
38
+ rg --files tests; rg -n "class \w+Test" tests -g '*.php'
39
+ ```
40
+ - Модули/провайдеры: `config/`, `app/Providers/`, `bootstrap/app.php` (Laravel 11+).
41
+ - Тесты: `php artisan test`, `php scripts/test.php`, `make test` — фиксируй команду из README/AGENTS, но не запускай полный прогон ради анализа.
42
+ - Не выполняй `migrate:fresh`, `db:wipe`, `db:seed`, `config:cache` и прочие изменяющие команды.
43
+
44
+ ## 3. JS / TS (Node, React, Vite, Next)
45
+ ```powershell
46
+ Get-Content (Join-Path $root "package.json") -Raw | ConvertFrom-Json | Select-Object -ExpandProperty scripts
47
+ rg -n "process\.env\.|import\.meta\.env\." $root -g '!node_modules' -g '*.{ts,tsx,js,jsx}'
48
+ rg --files $root -g '!node_modules' | rg "(^|/)(src|app|pages|routes|components|store|lib|services)/"
49
+ rg -n "createRoot|Router|createBrowserRouter|NextPage|defineConfig" $root -g '!node_modules' -g '!dist'
50
+ rg --files $root -g '!node_modules' | rg "\.(test|spec)\.(ts|tsx|js|jsx)$"
51
+ ```
52
+ - Точки входа: `src/main.*`, `src/index.*`, `app/layout.*`, `pages/api/`.
53
+ - Сборка/проверки: скрипты `build`, `lint`, `typecheck`, `test` из `package.json`.
54
+
55
+ ## 4. Bitrix / Aspro
56
+ - Файлы сайта обычно только на сервере: фиксируй, что локально есть (`local/`, `bitrix/templates/aspro-*`), а что нет.
57
+ - `local/php_interface/init.php`, `local/templates/<шаблон>/`, `bitrix/templates`, компоненты `local/components`, инфоблоки — по названиям и вызовам.
58
+ - Не трогай ядро `bitrix/`; не запускай агенты, кеш-сбросы, обновления без разрешения.
59
+
60
+ ## 5. Python / Go / прочее
61
+ - Python: `pyproject.toml`, `manage.py` (Django), `main.py`, роуты Flask/FastAPI (`@app.get`, `APIRouter`), `alembic/versions`.
62
+ - Go: `go.mod`, `main.go`, `internal/`, `cmd/`, `*_test.go`.
63
+
64
+ ## 6. Свежесть и git
65
+ ```powershell
66
+ git -C $root rev-parse --abbrev-ref HEAD
67
+ git -C $root rev-parse HEAD
68
+ git -C $root log -1 --format="%h %ad %s" --date=short
69
+ git -C $root tag --sort=-v:refname | Select-Object -First 5
70
+ ```
71
+ - Сравни с `INDEX.json` досье (`status`): другой `git.head`/ветка — досье устарело.
72
+ - `lastAnalyzedAt` старше ~30 дней — предупреди пользователя.
73
+
74
+ ## 7. Что считать `[проверено]`
75
+ - Прочитал файл и увидел реализацию — да, со ссылкой `path:line`.
76
+ - Запустил безопасную read-only команду (`git`, `route:list`, `--version`) и увидел вывод — да.
77
+ - Вывел из соглашений фреймворка без прямого источника — только `[выведено]`.
78
+ - Изменил проект ради проверки — так делать нельзя: досье не повод править код.
@@ -0,0 +1,102 @@
1
+ # Шаблоны секций досье
2
+
3
+ > Правило: ссылки `path:line` вместо кода; метка достоверности у ключевых утверждений;
4
+ > объём секции ≤ 40 KB; содержимое — выводы, а не дампы.
5
+ > Примеры ниже — образец формы, а не текст для копирования.
6
+
7
+ ## PROJECT
8
+ ```markdown
9
+ ## Назначение
10
+ - ... [проверено] (README.md:3)
11
+ ## Стек и версии
12
+ - PHP 8.5, Laravel 13, PostgreSQL 18 (composer.json:8, .env.example:1)
13
+ ## Где лежит
14
+ - Рабочая копия: C:\... ; прод: <сервер>, <путь> [выведено]
15
+ ## Запуск
16
+ - ... (README.md:15)
17
+ ## Статус и владелец
18
+ - ... [проверено]/[устарело]
19
+ ```
20
+ Минимум 8–15 строк: назначение, стек, расположение, запуск, статус.
21
+
22
+ ## ARCHITECTURE
23
+ ```markdown
24
+ ## Компоненты и границы
25
+ - <модуль> — отвечает за ..., границы: ... (modules/X/..., app/...)
26
+ ## Точки входа
27
+ - HTTP: routes/... ; CLI: ... ; крон: ...
28
+ ## Поток данных
29
+ 1. запрос -> middleware -> контроллер (path:line) -> сервис (path:line) -> БД
30
+ ## Внешние зависимости
31
+ - ... [проверено] (config/services.php:12)
32
+ ## Ключевые решения
33
+ - Почему так: ... [выведено] / подтверждено тестом (tests/...:40)
34
+ ```
35
+ 15+ строк; если схема сложная — текстом или mermaid-блоком, без копий кода.
36
+
37
+ ## CODE-MAP
38
+ ```markdown
39
+ | Область | Путь | Зачем |
40
+ |---|---|---|
41
+ | HTTP-маршруты | routes/web.php:1 | публичные и админ-маршруты |
42
+ | Бизнес-логика | app/Services/...:1 | ... |
43
+ | Модели/схема | app/Models, database/migrations | ... |
44
+ | UI | resources/views, themes/... | ... |
45
+ | Тесты | tests/Feature/... | ... |
46
+ | Конфиги | config/... | ... |
47
+ ```
48
+ 10+ записей; для каждого пути — назначение, а не пересказ кода.
49
+
50
+ ## INVARIANTS
51
+ ```markdown
52
+ 1. Миграции только аддитивные; старые не редактировать.
53
+ - Почему: прод обновляется поверх живой БД.
54
+ - Проверка: git diff database/migrations в релизе.
55
+ - Источник: AGENTS.md:42 [проверено]
56
+ ```
57
+ 5+ пунктов; одно правило — один номер; обязательно «почему» и «как проверить».
58
+
59
+ ## GOTCHAS
60
+ ```markdown
61
+ ### <симптом одной строкой>
62
+ - Симптом: ... [проверено] (path:line)
63
+ - Причина: ...
64
+ - Обход: ...
65
+ - Риск, если игнорировать: ...
66
+ ```
67
+ 3+ ловушки; никаких «на всякий случай» — только реально встреченные или доказанные кодом.
68
+
69
+ ## RUNBOOK
70
+ Разделы: `## Окружение`, `## Установка`, `## Запуск`, `## Тесты`, `## Сборка`, `## Деплой и откат`, `## Бэкап`, `## Диагностика`.
71
+ Команды — отдельными блоками PowerShell по разделу, например:
72
+
73
+ # установка
74
+ ...
75
+ # тесты
76
+ ...
77
+
78
+ 5+ команд; команды копируй из README/AGENTS/CI, а не сочиняй; для опасных — пометка «не запускать на проде».
79
+
80
+ ## Отчёт пользователю (обязательная форма)
81
+ ```markdown
82
+ ## Записано в досье
83
+ - PROJECT — <сколько фактов/строк, что главное>
84
+ - ARCHITECTURE — ...
85
+ - CODE-MAP — ...
86
+ - INVARIANTS — ...
87
+ - GOTCHAS — ...
88
+ - RUNBOOK — ...
89
+
90
+ ## Уверенность
91
+ - [проверено]: ключевые факты — <перечислить>
92
+ - [выведено]: <что выведено и почему>
93
+ - [устарело]: <что требует перепроверки>
94
+
95
+ ## Неясно / требует проверки
96
+ 1. <вопрос> — как проверить
97
+ 2. ...
98
+
99
+ ## Дальше
100
+ - <следующий шаг>
101
+ ```
102
+ Не сокращай «Неясно» до одной фразы и не прячь её в конце.