dsh-desktop-kit 0.0.0-stage → 2.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/LICENSE +21 -0
- package/README.md +152 -2
- package/client.js +4101 -0
- package/cordis.patch.yml +5 -0
- package/docs/ARCHITECTURE.md +114 -0
- package/docs/COMPATIBILITY.md +61 -0
- package/docs/INSTALL.md +84 -0
- package/docs/PRIVACY.md +50 -0
- package/docs/ROADMAP.md +57 -0
- package/docs/TOKENS.md +118 -0
- package/docs/TROUBLESHOOTING.md +68 -0
- package/docs/images/hero.png +0 -0
- package/index.js +84 -0
- package/package.json +70 -4
- package/plugins/dsh-gkb-ru-ui/cordis.patch.yml +6 -0
- package/plugins/dsh-gkb-ru-ui/lib/client.js +1331 -0
- package/plugins/dsh-gkb-ru-ui/lib/index.js +186 -0
- package/plugins/dsh-gkb-ru-ui/lib/skills.js +570 -0
- package/plugins/dsh-gkb-ru-ui/package.json +28 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/01-home-tiles-1440-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/02-skills-1440-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/03-skills-editor-1440-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/04-skills-1440-dark.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/05-skills-390-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/06-home-tiles-1440-dark.png +0 -0
- package/plugins/dsh-peak-guard/README.md +70 -0
- package/plugins/dsh-peak-guard/client.js +741 -0
- package/plugins/dsh-peak-guard/cordis.patch.yml +5 -0
- package/plugins/dsh-peak-guard/icon.svg +12 -0
- package/plugins/dsh-peak-guard/index.js +2 -0
- package/plugins/dsh-peak-guard/locale/en.json +6 -0
- package/plugins/dsh-peak-guard/locale/ru.json +6 -0
- package/plugins/dsh-peak-guard/locale/zh.json +6 -0
- package/plugins/dsh-peak-guard/package.json +33 -0
- package/plugins/dsh-peak-guard/screenshots/01-real-time-peak-start.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/02-real-time-peak-end.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/03-peak-card-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/04-peak-card-1440-dark.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/05-peak-card-390-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/05-peak-card-768-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/06-peak-card-390-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/07-live-preview-check.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/07-pre-peak-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/08-peak-start-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/09-peak-end-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/10-pre-peak-card-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/11-pre-peak-card-1440-dark.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/12-pre-peak-card-390-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/qa-report.json +74 -0
- package/plugins/dsh-profile-transfer/README.md +62 -0
- package/plugins/dsh-profile-transfer/bootstrap/01-INSTALL.cmd +7 -0
- package/plugins/dsh-profile-transfer/bootstrap/README-ARCHIVE.md +54 -0
- 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
- package/plugins/dsh-profile-transfer/bootstrap/install-on-clean-machine.ps1 +119 -0
- 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
- package/plugins/dsh-profile-transfer/client.js +806 -0
- package/plugins/dsh-profile-transfer/cordis.patch.yml +3 -0
- package/plugins/dsh-profile-transfer/icon.svg +13 -0
- package/plugins/dsh-profile-transfer/index.js +375 -0
- package/plugins/dsh-profile-transfer/locale/en.json +6 -0
- package/plugins/dsh-profile-transfer/locale/ru.json +6 -0
- package/plugins/dsh-profile-transfer/locale/zh.json +6 -0
- package/plugins/dsh-profile-transfer/package.json +36 -0
- package/plugins/dsh-profile-transfer/screenshots/01-settings-transfer-1440-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/02-settings-transfer-preview-1440-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/03-settings-transfer-1440-dark.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/04-settings-transfer-390-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/05-settings-transfer-768-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/06-settings-transfer-390-dark.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/07-settings-transfer-export-result.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/08-settings-transfer-workspaces-1440-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/09-settings-transfer-workspaces-1440-dark.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/10-settings-transfer-workspaces-390-light.png +0 -0
- package/plugins/dsh-profile-transfer/transfer.js +1004 -0
- package/plugins/dsh-project-memory/README.md +71 -0
- package/plugins/dsh-project-memory/cordis.patch.yml +4 -0
- package/plugins/dsh-project-memory/icon.svg +12 -0
- package/plugins/dsh-project-memory/index.js +1240 -0
- package/plugins/dsh-project-memory/locale/en.json +6 -0
- package/plugins/dsh-project-memory/locale/ru.json +6 -0
- package/plugins/dsh-project-memory/locale/zh.json +6 -0
- package/plugins/dsh-project-memory/package.json +26 -0
- package/plugins/dsh-session-move/README.md +67 -0
- package/plugins/dsh-session-move/client.js +719 -0
- package/plugins/dsh-session-move/cordis.patch.yml +5 -0
- package/plugins/dsh-session-move/icon.svg +14 -0
- package/plugins/dsh-session-move/index.js +497 -0
- package/plugins/dsh-session-move/locale/en.json +6 -0
- package/plugins/dsh-session-move/locale/ru.json +6 -0
- package/plugins/dsh-session-move/locale/zh.json +6 -0
- package/plugins/dsh-session-move/package.json +31 -0
- package/plugins/dsh-session-move/screenshots/01-row-menu-1440-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/02-dialog-1440-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/03-dialog-390-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/04-dialog-1440-dark.png +0 -0
- package/plugins/dsh-session-move/screenshots/05-drag-highlight-1440-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/06-drop-ungrouped-highlight.png +0 -0
- package/plugins/dsh-session-move/screenshots/07-after-drop-ungrouped.png +0 -0
- package/plugins/dsh-session-move/screenshots/08-move-dialog.png +0 -0
- package/plugins/dsh-session-move/screenshots/09-moved-to-second-workspace.png +0 -0
- package/plugins/dsh-session-move/screenshots/qa-report.json +62 -0
- package/plugins/dsh-skill-autopilot/cordis.patch.yml +3 -0
- package/plugins/dsh-skill-autopilot/index.js +444 -0
- package/plugins/dsh-skill-autopilot/package.json +19 -0
- package/plugins/dsh-token-lab/cordis.patch.yml +3 -0
- package/plugins/dsh-token-lab/lib/client.js +504 -0
- package/plugins/dsh-token-lab/lib/index.js +275 -0
- package/plugins/dsh-token-lab/package.json +26 -0
- package/plugins/dsh-token-lab/screenshots/01-token-lab-1440-light.png +0 -0
- package/plugins/dsh-token-lab/screenshots/02-token-lab-1440-dark.png +0 -0
- package/skills/code-review-checklist/SKILL.md +55 -0
- package/skills/content-writing/README.md +87 -0
- package/skills/content-writing/SKILL.md +85 -0
- package/skills/content-writing/assets/checklists/fact-check.md +53 -0
- package/skills/content-writing/assets/checklists/publish.md +65 -0
- package/skills/content-writing/assets/checklists/social.md +40 -0
- package/skills/content-writing/assets/templates/article.md +47 -0
- package/skills/content-writing/assets/templates/brief.md +44 -0
- package/skills/content-writing/assets/templates/doctor-card.md +41 -0
- package/skills/content-writing/assets/templates/image-prompts.md +128 -0
- package/skills/content-writing/assets/templates/post-telegram.md +36 -0
- package/skills/content-writing/assets/templates/post-vk.md +42 -0
- package/skills/content-writing/assets/templates/press-release.md +56 -0
- package/skills/content-writing/assets/templates/science-pop-note.md +55 -0
- package/skills/content-writing/assets/templates/service-card.md +46 -0
- package/skills/content-writing/references/anti-ai-style.md +248 -0
- package/skills/content-writing/references/editing.md +185 -0
- package/skills/content-writing/references/fact-checking.md +205 -0
- package/skills/content-writing/references/government-medical.md +246 -0
- package/skills/content-writing/references/images.md +212 -0
- package/skills/content-writing/references/journalism.md +252 -0
- package/skills/content-writing/references/process.md +123 -0
- package/skills/content-writing/references/quick-recipes.md +99 -0
- package/skills/content-writing/references/rules.md +85 -0
- package/skills/content-writing/references/science-popular.md +218 -0
- package/skills/content-writing/references/seo-content.md +172 -0
- package/skills/content-writing/references/social-media.md +253 -0
- package/skills/content-writing/references/sources.md +49 -0
- package/skills/content-writing/references/templates.md +291 -0
- package/skills/context-economy/SKILL.md +60 -0
- package/skills/context-economy/references/long-session.md +35 -0
- package/skills/context-economy/references/token-math.md +42 -0
- package/skills/context-economy/references/tool-recipes.md +34 -0
- package/skills/database-safety/SKILL.md +47 -0
- package/skills/debugging-playbook/SKILL.md +42 -0
- package/skills/design-critique/SKILL.md +65 -0
- package/skills/design-critique/references/a11y.md +25 -0
- package/skills/design-critique/references/diagnoses.md +33 -0
- package/skills/design-critique/references/quick-tests.md +30 -0
- package/skills/design-critique/references/report-template.md +63 -0
- package/skills/design-critique/references/rubric-fast.md +73 -0
- package/skills/dev-workflow/SKILL.md +48 -0
- package/skills/dev-workflow/references/definition-of-done.md +44 -0
- package/skills/dev-workflow/references/memory-and-boundaries.md +31 -0
- package/skills/dev-workflow/references/stages.md +67 -0
- package/skills/git-and-ci/SKILL.md +60 -0
- package/skills/pg-upgrade-verify/SKILL.md +67 -0
- package/skills/project-deep-dive/SKILL.md +45 -0
- package/skills/project-deep-dive/references/recon-commands.md +90 -0
- package/skills/project-deep-dive/references/section-templates.md +104 -0
- package/skills/project-deep-dive/references/tool-and-process.md +86 -0
- package/skills/project-memory-maintenance/SKILL.md +55 -0
- package/skills/project-memory-maintenance/references/api-and-checklist.md +99 -0
- package/skills/project-memory-maintenance/references/journal-template.md +50 -0
- package/skills/project-memory-maintenance/references/section-rules.md +59 -0
- package/skills/release-and-deploy/SKILL.md +53 -0
- package/skills/requirements-and-planning/SKILL.md +49 -0
- package/skills/requirements-and-planning/references/antipatterns-and-checklist.md +20 -0
- package/skills/requirements-and-planning/references/process-steps.md +52 -0
- package/skills/requirements-and-planning/references/templates-and-estimates.md +29 -0
- package/skills/security-review/SKILL.md +40 -0
- package/skills/seo/README.md +60 -0
- package/skills/seo/SKILL.md +77 -0
- package/skills/seo/assets/README.md +66 -0
- package/skills/seo/assets/scripts/LICENSE-playwright-core.txt +202 -0
- package/skills/seo/assets/scripts/README.md +179 -0
- package/skills/seo/assets/scripts/lib/args.mjs +105 -0
- package/skills/seo/assets/scripts/lib/browser.mjs +620 -0
- package/skills/seo/assets/scripts/lib/zip.mjs +191 -0
- package/skills/seo/assets/scripts/seo-audit.mjs +1675 -0
- package/skills/seo/assets/snippets/jsonld-breadcrumb.json +30 -0
- package/skills/seo/assets/snippets/jsonld-faq.json +39 -0
- package/skills/seo/assets/snippets/jsonld-medical-clinic.json +49 -0
- package/skills/seo/assets/snippets/jsonld-medical-webpage.json +33 -0
- package/skills/seo/assets/snippets/jsonld-organization.json +74 -0
- package/skills/seo/assets/snippets/jsonld-physician.json +46 -0
- package/skills/seo/assets/snippets/meta.blade.php +61 -0
- package/skills/seo/assets/snippets/robots.txt +61 -0
- package/skills/seo/assets/snippets/sitemap-urlset-example.xml +72 -0
- package/skills/seo/assets/snippets/sitemap.xml +36 -0
- package/skills/seo/references/antipatterns.md +66 -0
- package/skills/seo/references/audit-checklist.md +319 -0
- package/skills/seo/references/content-seo.md +204 -0
- package/skills/seo/references/eeat-medical.md +219 -0
- package/skills/seo/references/measurement.md +250 -0
- package/skills/seo/references/on-page.md +214 -0
- package/skills/seo/references/page-templates.md +56 -0
- package/skills/seo/references/stack-recipes.md +695 -0
- package/skills/seo/references/structured-data.md +487 -0
- package/skills/seo/references/technical-seo.md +296 -0
- package/skills/service-desk-conventions/SKILL.md +52 -0
- package/skills/service-desk-db-safety/SKILL.md +63 -0
- package/skills/service-desk-release/SKILL.md +61 -0
- package/skills/service-desk-testing/SKILL.md +61 -0
- package/skills/service-desk-ui/SKILL.md +52 -0
- package/skills/skills-router/SKILL.md +53 -0
- package/skills/skills-router/references/applying-skills.md +25 -0
- package/skills/skills-router/references/routing-matrix.md +52 -0
- package/skills/testing-strategy/SKILL.md +52 -0
- package/skills/ui-design-system/SKILL.md +50 -0
- package/skills/ui-design-system/references/accessibility-and-responsive.md +50 -0
- package/skills/ui-design-system/references/tokens-and-components.md +67 -0
- package/skills/ui-design-system/references/visual-qa.md +44 -0
- package/skills/web-research/SKILL.md +47 -0
- package/skills/web-research/references/answer-and-citations.md +60 -0
- package/skills/web-research/references/query-recipes.md +44 -0
- package/skills/wow-design/SKILL.md +89 -0
- package/skills/wow-design/assets/kit/README.md +195 -0
- package/skills/wow-design/assets/kit/assets/css/base.css +158 -0
- package/skills/wow-design/assets/kit/assets/css/components.css +1001 -0
- package/skills/wow-design/assets/kit/assets/css/fonts.css +73 -0
- package/skills/wow-design/assets/kit/assets/css/pages.css +737 -0
- package/skills/wow-design/assets/kit/assets/css/tokens.css +218 -0
- package/skills/wow-design/assets/kit/assets/fonts/LICENSE-golos-text.txt +93 -0
- package/skills/wow-design/assets/kit/assets/fonts/LICENSE-lora.txt +93 -0
- package/skills/wow-design/assets/kit/assets/fonts/LICENSE-unbounded.txt +93 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-700-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-700-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-400-italic.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-latin-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-latin-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-latin-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-cyrillic-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-cyrillic-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-cyrillic-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-latin-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-latin-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-latin-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/js/kit.js +550 -0
- package/skills/wow-design/assets/kit/pages/dashboard.html +539 -0
- package/skills/wow-design/assets/kit/pages/hospital.html +430 -0
- package/skills/wow-design/assets/kit/showcase.html +1164 -0
- package/skills/wow-design/assets/scripts/LICENSE-axe-core.txt +362 -0
- package/skills/wow-design/assets/scripts/LICENSE-playwright-core.txt +202 -0
- package/skills/wow-design/assets/scripts/README.md +312 -0
- package/skills/wow-design/assets/scripts/audit.mjs +1200 -0
- package/skills/wow-design/assets/scripts/capture.mjs +337 -0
- package/skills/wow-design/assets/scripts/package.json +30 -0
- package/skills/wow-design/references/anti-patterns.md +252 -0
- package/skills/wow-design/references/critique-rubric.md +262 -0
- package/skills/wow-design/references/design-brief-template.md +48 -0
- package/skills/wow-design/references/inspiration.md +203 -0
- package/skills/wow-design/references/presets.md +99 -0
- package/skills/wow-design/references/principles.md +371 -0
- package/skills/wow-design/references/quick-presets.md +50 -0
- package/skills/wow-design/references/report-template.md +21 -0
- package/skills/wow-design/references/stack-recipes.md +96 -0
- package/skills/wow-design/references/visual-qa.md +82 -0
- package/skills/wow-design/references/wow-levers.md +43 -0
- package/tools/skill-cost.mjs +76 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# API project_memory и детали анализа
|
|
2
|
+
|
|
3
|
+
> Часть навыка project-deep-dive. ≈2 950 токенов. Читать, когда: нужны полная таблица действий и аргументов, детали шагов анализа, форма отчёта или антипаттерны.
|
|
4
|
+
|
|
5
|
+
## 1. Хранилище и API
|
|
6
|
+
|
|
7
|
+
Хранилище: `%USERPROFILE%\.dsh\projects-memory\<slug>\` — `PROJECT.md`, `ARCHITECTURE.md`, `CODE-MAP.md`, `INVARIANTS.md`, `GOTCHAS.md`, `RUNBOOK.md`, `JOURNAL/YYYY-MM.md`, `INDEX.json`.
|
|
8
|
+
|
|
9
|
+
Сигнатура: `project_memory(action, project?, file?, content?, query?, root?, name?, mode?, maxChars?)`. В текущей сборке у `register` есть необязательный `stack` — короткое описание стека.
|
|
10
|
+
|
|
11
|
+
| action | Что делает | Обязательные аргументы | Пример |
|
|
12
|
+
|---|---|---|---|
|
|
13
|
+
| `status` | состояние хранилища, досье и свежести | — | `project_memory(action="status")` |
|
|
14
|
+
| `register` | регистрирует проект | `name`, `root` (+ `stack`) | `project_memory(action="register", name="my-app", root="C:\work\my-app", stack="Laravel 13 / PostgreSQL")` |
|
|
15
|
+
| `list` | список проектов | — | `project_memory(action="list")` |
|
|
16
|
+
| `read` | читает файл досье | `project`, `file` | `project_memory(action="read", project="my-app", file="ARCHITECTURE", maxChars=8000)` |
|
|
17
|
+
| `search` | ищет по досье перед записью | `query` | `project_memory(action="search", project="my-app", query="очереди")` |
|
|
18
|
+
| `append_journal` | дописывает сессию в `JOURNAL/YYYY-MM.md` | `project`, `content` | `project_memory(action="append_journal", project="my-app", content="...")` |
|
|
19
|
+
| `update_section` | записывает секцию досье | `project`, `file`, `content`, `mode` | `project_memory(action="update_section", project="my-app", file="ARCHITECTURE", content="...", mode="replace")` |
|
|
20
|
+
|
|
21
|
+
Правила аргументов:
|
|
22
|
+
- `file` — только `PROJECT`, `ARCHITECTURE`, `CODE-MAP`, `INVARIANTS`, `GOTCHAS`, `RUNBOOK`, `JOURNAL`.
|
|
23
|
+
- `mode` — `replace` (секция перезаписывается целиком, по умолчанию) или `append` (дописать в конец).
|
|
24
|
+
- `maxChars` — ограничение вывода `read` (500–30000, по умолчанию 12000); целиком досье не выкачивай.
|
|
25
|
+
- `root` — абсолютный путь к корню проекта; `name` — slug в kebab-case (`service-desk`); `stack` — короткое описание стека при `register`.
|
|
26
|
+
- `project` по умолчанию — проект текущей сессии; чужой проект указывай явно.
|
|
27
|
+
- `content` — markdown секции по каркасам из `section-templates.md`.
|
|
28
|
+
- `append_journal` сам выбирает `JOURNAL/YYYY-MM.md` по текущему месяцу.
|
|
29
|
+
- `update_section` — единственный способ писать секции; `INDEX.json` руками не правь — иначе рассинхронизируются индекс и свежесть.
|
|
30
|
+
|
|
31
|
+
## 2. Детали восьми шагов
|
|
32
|
+
|
|
33
|
+
1. **Статус и проект.** `status` до чтения файлов. Проект найден — запомни slug. Нет проекта — `register`. Несколько кандидатов или непонятно, о каком проекте речь, — **спроси пользователя**, не угадывай. Досье устарело — предупреди сразу; устаревшие факты в новых секциях помечай `[устарело]`.
|
|
34
|
+
2. **Что уже известно.** Прочитай существующие секции (`read`, `maxChars` 6000–8000), чтобы не дублировать и не противоречить. Новый факт спорит со старым — перепроверь по коду: победивший запиши, проигравший пометь `[устарело]`.
|
|
35
|
+
3. **Разведка (только чтение).** Источники по порядку: `AGENTS.md` → `README*` → манифесты → структура каталогов → git. Манифесты и конфиги: `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`. Рецепты — `recon-commands.md`. Не запускай миграции, seed, деплой, install и другие изменяющие команды.
|
|
36
|
+
4. **Трассировка потоков.** Веди цепочку «точка входа → маршрут → обработчик → домен → данные → тесты». Фиксируй не всё подряд, а то, что объясняет: как запустить, где бизнес-логика, где данные, что легко сломать. Команды — `recon-commands.md`.
|
|
37
|
+
5. **Сборка секций.** Порядок: `PROJECT` → `ARCHITECTURE` → `CODE-MAP` → `INVARIANTS` → `GOTCHAS` → `RUNBOOK`. Каждая секция — отдельный `update_section`; после записи прочитай её обратно (`read`). Минимумы: `PROJECT` 8–15 строк, `ARCHITECTURE` 15+, `CODE-MAP` 10+ записей, `INVARIANTS` 5+, `GOTCHAS` 3+, `RUNBOOK` 5+ команд. Малый проект — минимумы пропорционально ниже, блоки те же.
|
|
38
|
+
6. **Метки достоверности.** `[проверено]` — прочитано в файле или подтверждено выводом команды, рядом `path:line`. `[выведено]` — логический вывод (соглашение фреймворка, косвенная связь), прямого источника нет. `[устарело]` — было верно в прошлой версии/ветке, требует перепроверки. Ссылка — `относительный/путь:строка`; копировать код, логи и дампы нельзя.
|
|
39
|
+
7. **Журнал.** Значимую сессию зафиксируй `append_journal` (сжато, по шаблону навыка `project-memory-maintenance`): что анализировали, что выяснили, какие решения, что осталось.
|
|
40
|
+
8. **Отчёт.** Не пропускай «Неясно»: перечисли каждую записанную секцию, каждый проверенный факт со ссылкой и каждый неясный пункт.
|
|
41
|
+
|
|
42
|
+
## 3. Каркасы секций (сжато)
|
|
43
|
+
|
|
44
|
+
- `PROJECT`: что делает; стек и версии; репозиторий и прод; как поднять; статус и владелец.
|
|
45
|
+
- `ARCHITECTURE`: слои и модули; поток данных текстом; очереди/крон; внешние сервисы; ключевые решения.
|
|
46
|
+
- `CODE-MAP`: таблица «область | путь | зачем»; точки входа; модели/схема; тесты; конфиги.
|
|
47
|
+
- `INVARIANTS`: нумерованные «нельзя», каждое с причиной и способом проверки.
|
|
48
|
+
- `GOTCHAS`: симптом → причина → обход; отдельная ловушка — отдельный пункт.
|
|
49
|
+
- `RUNBOOK`: окружение; установка; запуск; тесты; сборка; деплой; откат; бэкап; где логи.
|
|
50
|
+
|
|
51
|
+
Полные шаблоны с примерами — `section-templates.md`.
|
|
52
|
+
|
|
53
|
+
## 4. Форма отчёта
|
|
54
|
+
|
|
55
|
+
```markdown
|
|
56
|
+
## Записано в досье
|
|
57
|
+
- PROJECT — ...
|
|
58
|
+
- ARCHITECTURE — ...
|
|
59
|
+
|
|
60
|
+
## Проверено
|
|
61
|
+
- [проверено] ... (path:line)
|
|
62
|
+
|
|
63
|
+
## Неясно / требует проверки
|
|
64
|
+
1. ...
|
|
65
|
+
2. ...
|
|
66
|
+
|
|
67
|
+
## Дальше
|
|
68
|
+
- ...
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 5. Антипаттерны
|
|
72
|
+
|
|
73
|
+
- Копировать целые файлы, конфиги, миграции и логи «чтобы было».
|
|
74
|
+
- Сохранять `.env`, дампы, токены, персональные данные.
|
|
75
|
+
- Отправлять код/конфиги в веб-поиск или внешние API «для уточнения».
|
|
76
|
+
- Писать «очевидно», «скорее всего» без метки `[выведено]`.
|
|
77
|
+
- Заполнять шаблон пунктами без доказательств.
|
|
78
|
+
- Править файлы досье и `INDEX.json` руками.
|
|
79
|
+
- Начинать анализ без `status`.
|
|
80
|
+
- Оставлять старые факты без пометки и заявлять о свежести досье.
|
|
81
|
+
- Складывать всё в одну гигантскую секцию вместо ссылок на файлы.
|
|
82
|
+
|
|
83
|
+
## 6. Связанное
|
|
84
|
+
|
|
85
|
+
- Постоянное ведение памяти — `project-memory-maintenance` (журнал, дедупликация, свежесть).
|
|
86
|
+
- Процесс разработки — `dev-workflow`; планирование — `requirements-and-planning`; финальное ревью — `code-review-checklist`.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-memory-maintenance
|
|
3
|
+
description: "Ведение памяти проектов через project_memory: журнал сессий, секции досье, дедупликация, лимиты, свежесть INDEX.json."
|
|
4
|
+
whenToUse: "После значимой сессии (до ответа), при изменении архитектуры/инвариантов/команд, найденной ловушке, устаревании досье, просьбе «запомни это»."
|
|
5
|
+
user-invocable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Project-memory-maintenance
|
|
9
|
+
|
|
10
|
+
## 0. Контракт
|
|
11
|
+
1. Журнал — после значимой сессии, до ответа.
|
|
12
|
+
2. В секции — долговечное; ход работы — в журнал.
|
|
13
|
+
3. Перед записью `search`; дубликат — в существующий.
|
|
14
|
+
4. Секреты, PII, код, дампы — не в досье, журнале, `INDEX.json`.
|
|
15
|
+
5. Только `project_memory`; файлы не правь.
|
|
16
|
+
|
|
17
|
+
## 1. Что значимо и API
|
|
18
|
+
- Значимо: код/схема, решение, исправленный баг с проверкой, инвариант/ловушка, деплой, deep-dive; тривиальное — нет (сомневаешься — короткая запись).
|
|
19
|
+
- API: `project_memory(...)`; `file` — секция, `mode` — replace/append, `maxChars` 500–30000.
|
|
20
|
+
|
|
21
|
+
## 2. Конец сессии
|
|
22
|
+
1. `status` — проект/свежесть.
|
|
23
|
+
2. `search` 1–3 темы с синонимами (`maxChars=4000`).
|
|
24
|
+
3. `append_journal` в `JOURNAL/YYYY-MM.md`; связанные шаги — одна запись.
|
|
25
|
+
4. `update_section` — только долговечное, одна секция — один вызов.
|
|
26
|
+
5. `read` 1–2 секции, гейт, отчёт.
|
|
27
|
+
|
|
28
|
+
## 3. Журнал
|
|
29
|
+
`## YYYY-MM-DD — <сессия>` + 5 пунктов: делали, выявили, решения, проверки, осталось; все обязательны (пусто — «нет»), 1–3 строки. Без кода/логов/дампов/чата; «выявили» — факты, «проверки» — запуски и результат, «осталось» — шаги/риски. Секреты: «ошибка с DB_PASSWORD (значение не сохранено)».
|
|
30
|
+
|
|
31
|
+
## 4. Секции
|
|
32
|
+
`PROJECT` — стек/пути/прод/статус (не история); `ARCHITECTURE` — компоненты/потоки (не алгоритмы); `CODE-MAP` — модули/маршруты (не код); `INVARIANTS` — жёсткие правила (не советы); `GOTCHAS` — ловушки с симптомом (не банальности); `RUNBOOK` — команды/деплой (не архитектура); `JOURNAL` — сессии (не дампы/секреты).
|
|
33
|
+
|
|
34
|
+
`append` — добавить, `replace` — перестроить (сначала `read`). Один факт — одно место; в двух секциях — `path:line`.
|
|
35
|
+
|
|
36
|
+
## 5. Дедупликация и лимиты
|
|
37
|
+
1–3 термина (модуль, команда, ошибка, синонимы); `search` каждый; найдено — `read` + дополни, нет — добавь; после — `read`: дубля, секрета, мёртвой ссылки нет.
|
|
38
|
+
Секция ≤ 40 KB; пункт 1–3 строки; детали — `docs`/README, в секции `path:line`. Раздуто — вынеси, оставь ссылки; журнал по месяцам, повторяющиеся выводы — в секции.
|
|
39
|
+
|
|
40
|
+
## 6. Свежесть и INDEX.json
|
|
41
|
+
`INDEX.json` — машинный, руками нельзя. `lastAnalyzedAt` — только полный анализ; `git.branch`/`head` — на чём; `confidence` — высокая/средняя/низкая по `[проверено]`/смеси/`[устарело]`.
|
|
42
|
+
`status` в начале; branch/HEAD разошлись — устарело: перечитай, обнови, старое помечай. Полный анализ — коммит в отчёт; частичная правка не выглядит полной. `confidence` — по тегам. Расхождение `status` — в отчёт, файл не правь.
|
|
43
|
+
|
|
44
|
+
## 7. Куда грузить дальше
|
|
45
|
+
| Нужно | Файл | ≈токенов |
|
|
46
|
+
|---|---|---|
|
|
47
|
+
| API, чек-лист, антипаттерны | `references/api-and-checklist.md` | ≈2 600 |
|
|
48
|
+
| Журнал: шаблон | `references/journal-template.md` | ≈1 100 |
|
|
49
|
+
| Правила секций | `references/section-rules.md` | ≈1 750 |
|
|
50
|
+
|
|
51
|
+
## 8. Гейт перед сдачей
|
|
52
|
+
- [ ] `status`; проект; `search` до записи, дублей нет.
|
|
53
|
+
- [ ] JOURNAL дописан (5 пунктов); досье обновлено; `git.head` сверен; старое помечено.
|
|
54
|
+
- [ ] Нет секретов/PII/кода; теги/`path:line`; ≤ 40 KB.
|
|
55
|
+
- [ ] В отчёт — что записано.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# API, критерии, лимиты и чек-лист памяти
|
|
2
|
+
|
|
3
|
+
> Часть навыка project-memory-maintenance. ≈2 600 токенов. Читать, когда: нужны полная таблица `project_memory`, критерии значимой сессии, лимиты, свежесть `INDEX.json`, финальный чек-лист или антипаттерны.
|
|
4
|
+
|
|
5
|
+
## 1. API
|
|
6
|
+
|
|
7
|
+
Сигнатура: `project_memory(action, project?, file?, content?, query?, root?, name?, mode?, maxChars?)`. В текущей сборке у `register` есть необязательный `stack`.
|
|
8
|
+
|
|
9
|
+
Хранилище: `%USERPROFILE%\.dsh\projects-memory\<slug>\` — `PROJECT.md`, `ARCHITECTURE.md`, `CODE-MAP.md`, `INVARIANTS.md`, `GOTCHAS.md`, `RUNBOOK.md`, `JOURNAL/YYYY-MM.md`, `INDEX.json`.
|
|
10
|
+
|
|
11
|
+
| action | Когда | Аргументы |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| `status` | в начале и в конце сессии | — |
|
|
14
|
+
| `list` | если нужно найти проект | — |
|
|
15
|
+
| `read` | перед правкой секции | `project`, `file`, `maxChars` |
|
|
16
|
+
| `search` | перед любой записью (дедуп) | `project`, `query`, `maxChars` |
|
|
17
|
+
| `append_journal` | после сессии | `project`, `content` |
|
|
18
|
+
| `update_section` | долговечный факт | `project`, `file`, `content`, `mode` |
|
|
19
|
+
| `register` | новый проект | `name`, `root` (+ `stack`) |
|
|
20
|
+
|
|
21
|
+
- `file` — `PROJECT`, `ARCHITECTURE`, `CODE-MAP`, `INVARIANTS`, `GOTCHAS`, `RUNBOOK`, `JOURNAL`.
|
|
22
|
+
- `mode` — `replace` (по умолчанию) или `append`.
|
|
23
|
+
- `project` по умолчанию — проект текущей сессии; при работе с чужим проектом указывай slug явно.
|
|
24
|
+
- `maxChars` ограничивает вывод `read` (500–30000, по умолчанию 12000); не выкачивай досье целиком без нужды.
|
|
25
|
+
- `root` — абсолютный путь, `name` — slug в kebab-case, `stack` — короткое описание стека.
|
|
26
|
+
- `append_journal` пишет в `JOURNAL/YYYY-MM.md` текущего месяца; `update_section` — единственный способ писать секции.
|
|
27
|
+
|
|
28
|
+
## 2. Что считать значимой сессией
|
|
29
|
+
|
|
30
|
+
Да:
|
|
31
|
+
- изменение кода/конфига/схемы данных;
|
|
32
|
+
- архитектурное или продуктовое решение;
|
|
33
|
+
- найденная и исправленная ошибка, подтверждённая проверкой;
|
|
34
|
+
- новый инвариант или ловушка, которые должны пережить сессию;
|
|
35
|
+
- деплой, откат, смена окружения или команд запуска;
|
|
36
|
+
- глубокий анализ проекта (`project-deep-dive`).
|
|
37
|
+
|
|
38
|
+
Нет:
|
|
39
|
+
- тривиальный вопрос, чтение файла без выводов;
|
|
40
|
+
- повторное обсуждение уже записанного;
|
|
41
|
+
- неудачная попытка без нового знания.
|
|
42
|
+
|
|
43
|
+
Сомневаешься — пиши короткую запись в журнал: лишняя строка дешевле потерянного знания.
|
|
44
|
+
|
|
45
|
+
## 3. Дедупликация, лимиты, свежесть
|
|
46
|
+
|
|
47
|
+
Дедупликация:
|
|
48
|
+
1. Сформулируй 1–3 термина по теме (имя модуля, команда, текст ошибки, синонимы: «очереди/jobs/queue»).
|
|
49
|
+
2. По каждому: `project_memory(action="search", project="<slug>", query="<термин>", maxChars=4000)`.
|
|
50
|
+
3. Нашёл — `read` секцию и дополни существующий пункт; не создавай второй.
|
|
51
|
+
4. Не нашёл — добавь новый пункт.
|
|
52
|
+
5. После записи — `read` секцию: дубля нет, секрета нет, ссылка существует.
|
|
53
|
+
|
|
54
|
+
Лимиты:
|
|
55
|
+
- Каждая секция ≤ 40 KB. Приближаешься к лимиту — сокращай до выводов и ссылок.
|
|
56
|
+
- 1 пункт — 1–3 строки; без воды, повторов и пересказа кода.
|
|
57
|
+
- Подробности, таблицы и длинные списки — в reference-файлы проекта (`docs/`, `references/`, README); в секции — ссылка `path:line`.
|
|
58
|
+
- `JOURNAL/` уже разделён по месяцам: не раздувай месяц, повторяющиеся выводы своди в секции.
|
|
59
|
+
- Раздутая секция — признак того, что в досье тащат детали реализации; перенеси их в проект и оставь ссылки.
|
|
60
|
+
|
|
61
|
+
Свежесть и `INDEX.json`:
|
|
62
|
+
- `INDEX.json` — машинный файл хранилища; вручную не редактируется.
|
|
63
|
+
- `lastAnalyzedAt` — когда досье проанализировано целиком (а не косметически поправлено).
|
|
64
|
+
- `git.branch`, `git.head` — ветка и коммит, на которых сделан анализ.
|
|
65
|
+
- `confidence` — сводная уверенность: высокая при ключевых `[проверено]`, средняя при смеси, низкая при заметном `[устарело]`.
|
|
66
|
+
- В начале сессии `status`; сравни `git.head`/ветку с текущими: `git -C <root> rev-parse --abbrev-ref HEAD` и `git -C <root> rev-parse --short HEAD`.
|
|
67
|
+
- Расходятся — досье устарело: перечитай затронутые секции, обнови факты, старые пометь `[устарело]`.
|
|
68
|
+
- Полный анализ (`project-deep-dive`) — в отчёте укажи, на каком коммите он сделан; частичная правка не должна выглядеть как полный анализ.
|
|
69
|
+
- `confidence` повышай только новыми `[проверено]`; понижай при `[устарело]` и большом объёме `[выведено]`.
|
|
70
|
+
- Если после записи `status` показывает неактуальные поля — это расхождение инструмента: зафиксируй в отчёте, но `INDEX.json` руками не правь.
|
|
71
|
+
|
|
72
|
+
## 4. Финальный чек-лист
|
|
73
|
+
|
|
74
|
+
- [ ] `status` вызван, проект определён.
|
|
75
|
+
- [ ] `search` был до записи, дублей нет.
|
|
76
|
+
- [ ] Журнал записан по шаблону, все пять пунктов на месте.
|
|
77
|
+
- [ ] Секции обновлены только долговечными фактами.
|
|
78
|
+
- [ ] Секретов, PII и копий кода нет.
|
|
79
|
+
- [ ] У ключевых утверждений метка `[проверено]`/`[выведено]`/`[устарело]` и ссылка `path:line`.
|
|
80
|
+
- [ ] Секции ≤ 40 KB; детали вынесены в references.
|
|
81
|
+
- [ ] Свежесть в порядке: `git.head` соответствует анализу, устаревшее помечено.
|
|
82
|
+
- [ ] Пользователю перечислено, что записано.
|
|
83
|
+
|
|
84
|
+
## 5. Антипаттерны
|
|
85
|
+
|
|
86
|
+
- Писать в досье после каждого шага: журнал — да, секции — нет.
|
|
87
|
+
- Дублировать один факт в нескольких секциях и журнале.
|
|
88
|
+
- Копировать код, логи, дампы, переписку.
|
|
89
|
+
- Секреты и PII в журнале («пароль ...», «токен ...»).
|
|
90
|
+
- Править файлы досье и `INDEX.json` руками.
|
|
91
|
+
- Превращать `PROJECT.md` в дневник.
|
|
92
|
+
- Заявлять полный анализ после косметической правки.
|
|
93
|
+
- Раздувать секцию до огромного размера вместо ссылок.
|
|
94
|
+
- Записывать одноразовые детали, которые не переживут сессию.
|
|
95
|
+
|
|
96
|
+
## 6. Связанное
|
|
97
|
+
|
|
98
|
+
- Первичный анализ проекта — `project-deep-dive`.
|
|
99
|
+
- Процесс разработки — `dev-workflow`; финальное ревью — `code-review-checklist`.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Шаблон журнала проекта
|
|
2
|
+
|
|
3
|
+
> Часть навыка project-memory-maintenance. ≈1 100 токенов. Читать, когда: нужен точный шаблон записи, требования к пяти пунктам, пример или антипримеры.
|
|
4
|
+
|
|
5
|
+
Журнал — хронология значимых сессий. Файл: `JOURNAL/YYYY-MM.md` (месяц определяется датой записи).
|
|
6
|
+
Пишется действием `append_journal`, не вручную.
|
|
7
|
+
|
|
8
|
+
## Точный шаблон
|
|
9
|
+
|
|
10
|
+
```markdown
|
|
11
|
+
## YYYY-MM-DD — <краткое название сессии>
|
|
12
|
+
- Что делали: ...
|
|
13
|
+
- Что выявили: ...
|
|
14
|
+
- Решения: ...
|
|
15
|
+
- Проверки: ...
|
|
16
|
+
- Осталось: ...
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Требования к записи
|
|
20
|
+
|
|
21
|
+
| Пункт | Что писать | Объём |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| Что делали | конкретные действия и затронутые области | 1–3 строки |
|
|
24
|
+
| Что выявили | факты, меняющие понимание проекта: причины, зависимости, ловушки | 1–3 строки |
|
|
25
|
+
| Решения | что выбрали и почему (альтернативу — одной фразой) | 1–3 строки |
|
|
26
|
+
| Проверки | что запускалось и результат: тесты, линтер, сборка, ручной сценарий | 1–3 строки |
|
|
27
|
+
| Осталось | следующие шаги, риски, открытые вопросы | 1–3 строки, «нет» допустимо |
|
|
28
|
+
|
|
29
|
+
- Все пять пунктов обязательны; пустой пункт не удаляй, пиши «нет».
|
|
30
|
+
- Ссылки на файлы — `path:line`, без копий кода и логов.
|
|
31
|
+
- Секреты и PII вырезаются: «ошибка с `DB_PASSWORD` (значение не сохранено)».
|
|
32
|
+
- Одна сессия — одна запись. Продолжение в тот же день — дополняй последнюю запись или пиши отдельную с пометкой «продолжение».
|
|
33
|
+
|
|
34
|
+
## Пример
|
|
35
|
+
|
|
36
|
+
```markdown
|
|
37
|
+
## 2026-11-04 — разбор очередей и деплоя
|
|
38
|
+
- Что делали: прочитали `config/queue.php`, `app/Jobs/*`, CI-пайплайн; проверили команды запуска.
|
|
39
|
+
- Что выявили: воркер запускается только на проде через systemd, локально очередь работает в sync-режиме; ретраи не настроены.
|
|
40
|
+
- Решения: в досье зафиксировали как ловушку; локальные тесты очередей требуют `QUEUE_CONNECTION=database`.
|
|
41
|
+
- Проверки: `php artisan queue:work --once` на тестовой БД — успешно; PHPUnit — 42 теста зелёные.
|
|
42
|
+
- Осталось: проверить поведение при падении воркера; уточнить таймаут ретраев у владельца.
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Антипримеры
|
|
46
|
+
|
|
47
|
+
- «Сделали задачу» — что именно, где, чем проверено, что осталось.
|
|
48
|
+
- Копия вывода тестов на 100 строк — оставь счётчик и путь к отчёту.
|
|
49
|
+
- «Исправили пароль в .env на SECRET123» — секрет, так нельзя.
|
|
50
|
+
- Шесть записей за один день по одному шагу — одна запись на сессию.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Правила обновления секций досье
|
|
2
|
+
|
|
3
|
+
> Часть навыка project-memory-maintenance. ≈1 750 токенов. Читать, когда: обновляешь конкретную секцию досье и нужны границы «что писать / что не писать», структура и правила устаревания.
|
|
4
|
+
|
|
5
|
+
Общие принципы для всех секций:
|
|
6
|
+
- Только долговечные факты: верны через месяц и вне сегодняшнего контекста.
|
|
7
|
+
- Ссылка `path:line` вместо копии кода; одно утверждение — один источник.
|
|
8
|
+
- Ключевые утверждения с меткой `[проверено]/[выведено]/[устарело]`.
|
|
9
|
+
- Объём секции ≤ 40 KB; детали — в файлах проекта, в секции — ссылка.
|
|
10
|
+
- Перед правкой — `read`, после правки — `read` обратно (проверка дублей и секретов).
|
|
11
|
+
|
|
12
|
+
## PROJECT.md
|
|
13
|
+
- Обновляй: сменился стек или версии, переехал репозиторий/прод, другой способ запуска, изменился владелец или статус.
|
|
14
|
+
- Структура: назначение, стек и версии, расположение (копия/прод), запуск, статус и владелец.
|
|
15
|
+
- Не пиши: историю сессий, подробности реализации, списки файлов (это `CODE-MAP`).
|
|
16
|
+
- Ошибка: «сегодня настроили окружение» — это журнал, а не проект.
|
|
17
|
+
|
|
18
|
+
## ARCHITECTURE.md
|
|
19
|
+
- Обновляй: новый/удалённый компонент, изменение границ, потока данных, очередей/крона, внешних сервисов, ключевое решение.
|
|
20
|
+
- Структура: компоненты и границы, точки входа, поток данных (текстом), внешние зависимости, решения и компромиссы.
|
|
21
|
+
- Не пиши: детали алгоритмов, полный список классов, код.
|
|
22
|
+
- Помечай `[выведено]`, если границы восстановлены по косвенным признакам.
|
|
23
|
+
|
|
24
|
+
## CODE-MAP.md
|
|
25
|
+
- Обновляй: новый модуль/маршрут/точка входа/сервис/конфиг/тест; сдвинулись якоря после рефакторинга.
|
|
26
|
+
- Структура: таблица «область | путь | зачем»; точки входа; модели и схема; тесты; конфиги.
|
|
27
|
+
- Не пиши: код и пересказ методов; записи без назначения.
|
|
28
|
+
- Проверяй актуальность путей перед сохранением: мёртвая ссылка хуже отсутствующей.
|
|
29
|
+
|
|
30
|
+
## INVARIANTS.md
|
|
31
|
+
- Обновляй: появилось жёсткое правило, подтверждённое тестом, пользователем или инцидентом.
|
|
32
|
+
- Структура на пункт: правило → почему → как проверить → источник `path:line`/тест.
|
|
33
|
+
- Не пиши: советы, вкусовые предпочтения, «желательно».
|
|
34
|
+
- Устаревший инвариант не удаляй молча: помечай `[устарело]` и указывай, чем заменён.
|
|
35
|
+
|
|
36
|
+
## GOTCHAS.md
|
|
37
|
+
- Обновляй: встретили неочевидную ловушку с воспроизводимым симптомом и обходом.
|
|
38
|
+
- Структура: симптом → причина → обход → риск, если игнорировать.
|
|
39
|
+
- Не пиши: банальности («проверяй null»), предположения без подтверждения.
|
|
40
|
+
- Ловушка, исправленная навсегда (например, баг закрыт), помечается `[устарело]`.
|
|
41
|
+
|
|
42
|
+
## RUNBOOK.md
|
|
43
|
+
- Обновляй: изменились команды запуска/тестов/сборки, окружение, деплой, откат, бэкап, места логов.
|
|
44
|
+
- Структура: окружение, установка, запуск, тесты, сборка, деплой и откат, бэкап, диагностика.
|
|
45
|
+
- Не пиши: объяснение архитектуры (это `ARCHITECTURE`).
|
|
46
|
+
- Команды копируй из README/AGENTS/CI; не сочиняй «примерно так».
|
|
47
|
+
- Для опасных команд явно: когда нельзя запускать (прод, боевая БД).
|
|
48
|
+
|
|
49
|
+
## JOURNAL/YYYY-MM.md
|
|
50
|
+
- Обновляй: каждая значимая сессия (см. §3 основного файла).
|
|
51
|
+
- Пиши только через `append_journal`.
|
|
52
|
+
- Не пиши: дампы, длинные логи, секреты, пересказ чата.
|
|
53
|
+
- Не смешивай журнал с досье: «что делали» остаётся здесь, «как устроено» — в секциях.
|
|
54
|
+
|
|
55
|
+
## INDEX.json
|
|
56
|
+
- Ручная правка запрещена.
|
|
57
|
+
- Отражает свежесть: `lastAnalyzedAt`, `git.branch`, `git.head`, `confidence`.
|
|
58
|
+
- `lastAnalyzedAt` — только после полного анализа, не после каждой правки секции.
|
|
59
|
+
- Если `status` показывает расхождение с фактическим состоянием — зафиксируй в отчёте, не правь файл.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: release-and-deploy
|
|
3
|
+
description: "Выпуск и выкатка: SemVer, immutable-артефакт, SHA-256 checksums, бэкап, деплой штатным скриптом, smoke и откат."
|
|
4
|
+
whenToUse: "Перед подготовкой релиза, сборкой артефакта, выкаткой на сервер, обновлением с миграциями и когда нужен план отката."
|
|
5
|
+
user-invocable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Релиз и выкатка (универсально)
|
|
9
|
+
|
|
10
|
+
## 0. Когда применять
|
|
11
|
+
- Готовишь релиз: версия, артефакт, checksums, тег, release notes.
|
|
12
|
+
- Просят «задеплой», обновить стенд или прод.
|
|
13
|
+
- В обновлении есть миграции/данные — сначала `pg-upgrade-verify`.
|
|
14
|
+
- После выкатки нужны smoke и решение «оставить или откатить».
|
|
15
|
+
|
|
16
|
+
## 1. Главное
|
|
17
|
+
|
|
18
|
+
**Версия и артефакт**
|
|
19
|
+
- SemVer/правила проекта: feature → minor, fix → patch, breaking → major. Версия — в артефакте, на сервере и в CHANGELOG.
|
|
20
|
+
- Артефакт собирается **один раз** и выкатывается неизменным; пересборка = новая версия и sha256.
|
|
21
|
+
- Без `.env*`, `vendor/`, `node_modules/`, сборок, `storage/`, `.git`, дампов и PII (если проект не требует иного).
|
|
22
|
+
- Проверить состав и отсутствие секретов; SHA-256 — в `checksums.txt` (`sha256sum` / `Get-FileHash -Algorithm SHA256`).
|
|
23
|
+
- CHANGELOG/RELEASE-NOTES: изменения, миграции, риски, план отката.
|
|
24
|
+
|
|
25
|
+
**Перед выкаткой**
|
|
26
|
+
- Зелёные: линтер, статанализ, unit/feature, E2E/UI; baseline не хуже.
|
|
27
|
+
- Бэкап БД, файлов и текущего кода; копия читается (`pg_restore -l`, пробное восстановление) и хранится вне сервера.
|
|
28
|
+
- Свободное место, maintenance-окно и выполнимый план отката.
|
|
29
|
+
- Миграции проверены на копии (`pg-upgrade-verify`) и аддитивны; при риске — maintenance.
|
|
30
|
+
|
|
31
|
+
**Выкатка**
|
|
32
|
+
- Сверить checksums: `sha256sum -c checksums.txt`.
|
|
33
|
+
- Применять штатным скриптом; зависимости, сборку и кэши не делать вразнобой.
|
|
34
|
+
- Перезапустить очереди/воркеры/php-fpm, сбросить и собрать кэши, проверить права на `storage`.
|
|
35
|
+
- Smoke: версия/health, `/login` и вход, ключевой сценарий записи, старые данные, админ и пользователь, логи без ошибок, очередь жива.
|
|
36
|
+
|
|
37
|
+
**Откат**
|
|
38
|
+
- Код: предыдущий артефакт/папка/тег. БД: только если менялись данные/схема — из проверенного дампа и с подтверждением.
|
|
39
|
+
- Снять maintenance, повторить smoke, сообщить пользователям, зафиксировать причину.
|
|
40
|
+
|
|
41
|
+
**После**
|
|
42
|
+
- Наблюдать логи, метрики и фоновые задачи 15–30 минут; старые артефакты хранить до стабильности.
|
|
43
|
+
- Записать версию, sha256, smoke и откат в память/CHANGELOG.
|
|
44
|
+
|
|
45
|
+
## 2. Куда грузить дальше
|
|
46
|
+
`git-and-ci` — ветки/теги/CI; `pg-upgrade-verify` — проверка на копии живой БД; `database-safety` / `service-desk-db-safety` — бэкап; `service-desk-release` — проектный tgz + `deploy/update.sh`.
|
|
47
|
+
|
|
48
|
+
## 3. Гейт перед сдачей
|
|
49
|
+
- [ ] Версия, CHANGELOG и sha256 сверены с артефактом.
|
|
50
|
+
- [ ] Бэкап читается и лежит вне сервера; откат выполним.
|
|
51
|
+
- [ ] Миграции прогнаны на копии; выкатка — штатным скриптом.
|
|
52
|
+
- [ ] Smoke: версия, вход, ключевой сценарий, старые данные, админ + пользователь, логи/очередь.
|
|
53
|
+
- [ ] Факт выкатки записан.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: requirements-and-planning
|
|
3
|
+
description: "Любая новая задача до реализации: требования, критерии приёмки, декомпозиция, риски, варианты решений и проверяемый план — для кода, дизайна, SEO, данных, релизов."
|
|
4
|
+
whenToUse: "Перед началом работы, когда запрос расплывчат, нужен план/ТЗ/оценка, сравнение вариантов или критерии «готово» до правок кода."
|
|
5
|
+
user-invocable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Requirements & Planning — ядро
|
|
9
|
+
> ≈1 600 токенов. Это ядро; детали — по ссылкам и только когда реально нужны.
|
|
10
|
+
|
|
11
|
+
## 0. Когда применять
|
|
12
|
+
- Новая задача: фича, страница, релиз, миграция — до первой правки.
|
|
13
|
+
- Запрос расплывчат: «сделай красиво», «ускорь», «почини», «улучши как-то».
|
|
14
|
+
- Нужны ТЗ, оценка, сравнение вариантов, критерии «готово»; результат — выводы и план, а не осмотр.
|
|
15
|
+
|
|
16
|
+
## 1. Главное (алгоритм)
|
|
17
|
+
|
|
18
|
+
**Контракт:**
|
|
19
|
+
1. **Одно предложение:** переформулируй запрос — что изменится для пользователя.
|
|
20
|
+
2. **Неясное уточняй** одним сообщением (1–3 вопроса), но не блокируйся: некритичное — допущение и дальше; критичное (данные, деньги, права, необратимость) — только после ответа.
|
|
21
|
+
3. **Критерии приёмки — до кода**, проверяемые (Given/When/Then или чек-лист).
|
|
22
|
+
4. **План — до правок:** шаги, файлы, зависимости, проверки, откат.
|
|
23
|
+
5. **Scope guard:** явно «входит / не входит»; не расширяй молча.
|
|
24
|
+
6. **Финал:** отчёт «сделано / как проверено / риски / дальше» по критериям.
|
|
25
|
+
|
|
26
|
+
**8 шагов:**
|
|
27
|
+
1. **Понять запрос:** кто пользователь, что болит, что есть и что должно стать, формат результата.
|
|
28
|
+
2. **Разведка:** память/досье, `AGENTS.md`, затронутые файлы/маршруты/модели/тесты, ограничения (стек, права, бэкапы, SEO, дизайн-система).
|
|
29
|
+
3. **Требования:** цель, сценарий, входит/не входит, критерии, ограничения (шаблон — `references/templates-and-estimates.md`).
|
|
30
|
+
4. **Варианты:** 2–3 с плюсами/минусами/рисками; для рискованного — самый обратимый; крупное — вертикальный срез.
|
|
31
|
+
5. **План:** шаги по 1–2 ч с файлами и проверкой; порядок: бэкап → изменения → проверка → откат.
|
|
32
|
+
6. **Риски:** риск → вероятность/влияние → митигация; перед необратимым — бэкап, dry-run, копия, feature-флаг.
|
|
33
|
+
7. **Исполнение:** чекпоинт после каждого блока; отклонения объясняй; scope creep — в «потом».
|
|
34
|
+
8. **Сдача:** таблица «критерий → проверка → результат», отчёт, память/версия.
|
|
35
|
+
|
|
36
|
+
## 2. Куда грузить дальше
|
|
37
|
+
| Нужно | Файл | ≈токенов |
|
|
38
|
+
|---|---|---|
|
|
39
|
+
| Детали 8 шагов и что проверять на каждом | references/process-steps.md | ≈1 350 |
|
|
40
|
+
| Бриф, критерии приёмки по типам, эвристики оценки | references/templates-and-estimates.md | ≈630 |
|
|
41
|
+
| Антипаттерны и чек-лист перед стартом | references/antipatterns-and-checklist.md | ≈480 |
|
|
42
|
+
|
|
43
|
+
## 3. Гейт перед сдачей
|
|
44
|
+
- [ ] Запрос переформулирован; неясности уточнены или допущения зафиксированы.
|
|
45
|
+
- [ ] Прочитаны память/досье, найдены затронутые файлы.
|
|
46
|
+
- [ ] Критерии приёмки зафиксированы до кода и сверены: критерий → проверка → результат.
|
|
47
|
+
- [ ] План с проверками и откатом выполнен; scope не расширен молча, «потом» вынесено.
|
|
48
|
+
- [ ] Подобраны скиллы (`skills-router`), пройдены их гейты: тесты/скриншоты/SEO/бэкап.
|
|
49
|
+
- [ ] Отчёт «сделано / как проверено / риски / дальше»; память и версия обновлены.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Антипаттерны и чек-лист перед стартом
|
|
2
|
+
|
|
3
|
+
> Часть навыка requirements-and-planning. ≈480 токенов. Читать, когда: проверяешь план на типовые ошибки или начинаешь задачу и нужен стартовый чек-лист.
|
|
4
|
+
|
|
5
|
+
## Антипаттерны
|
|
6
|
+
- Начать с кода, не поняв, что считать «готово».
|
|
7
|
+
- Уточнять «потом», когда уже всё сломано.
|
|
8
|
+
- План из одного пункта «сделать всё».
|
|
9
|
+
- Нет критериев приёмки → бесконечные правки и споры.
|
|
10
|
+
- Нет откат-плана для миграций/релизов/прод-правок.
|
|
11
|
+
- Молча расширить scope («заодно переделал ещё 10 страниц»).
|
|
12
|
+
- Считать «сделал» = «написал код» (без проверки и отчёта).
|
|
13
|
+
|
|
14
|
+
## Чек-лист перед стартом
|
|
15
|
+
- [ ] Запрос переформулирован одним предложением.
|
|
16
|
+
- [ ] Критичные неясности уточнены или зафиксированы допущения.
|
|
17
|
+
- [ ] Прочитана память/досье, найдены затронутые файлы.
|
|
18
|
+
- [ ] Критерии приёмки зафиксированы.
|
|
19
|
+
- [ ] Есть план с проверками и откатом.
|
|
20
|
+
- [ ] Подобраны скиллы (`skills-router`) под типы работ.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Восемь шагов планирования — детально
|
|
2
|
+
|
|
3
|
+
> Часть навыка requirements-and-planning. ≈1 350 токенов. Читать, когда: нужен полный разбор шагов — разведка, варианты, план, риски, чекпоинты, сдача.
|
|
4
|
+
|
|
5
|
+
## Шаг 1. Понять запрос
|
|
6
|
+
- Кто пользователь и в каком контексте? Что болит? Какая цель: сэкономить время, снизить ошибки, продать, найти?
|
|
7
|
+
- Что уже есть (текущее поведение / скриншот / код)? Что должно стать?
|
|
8
|
+
- Формат результата: экран? файл? архив? релиз? отчёт? API?
|
|
9
|
+
|
|
10
|
+
## Шаг 2. Контекст и разведка
|
|
11
|
+
- Прочитай память/досье проекта (`memory/INDEX.md`, `memory/projects/<проект>.md`), `AGENTS.md`.
|
|
12
|
+
- Найди затронутые файлы, маршруты, модели, шаблоны, тесты, конфиги.
|
|
13
|
+
- Проверь ограничения: стек, версии, окружение, права, бэкапы, кэш, SEO, дизайн-система.
|
|
14
|
+
- Не проектируй вслепую: 10 минут разведки экономят часы.
|
|
15
|
+
|
|
16
|
+
## Шаг 3. Требования и критерии приёмки
|
|
17
|
+
Заполни:
|
|
18
|
+
- **Цель:** <одно предложение>
|
|
19
|
+
- **Пользователь и сценарий:** <кто / что делает / зачем>
|
|
20
|
+
- **Входит:** <...>
|
|
21
|
+
- **Не входит:** <...>
|
|
22
|
+
- **Критерии приёмки:** проверяемые пункты, например «заявка создаётся с выбранной срочностью», «на 390px нет overflow», «title/description/canonical на странице», «PHPUnit зелёный, +2 теста».
|
|
23
|
+
- **Ограничения:** <бюджет времени, стек, нельзя ломать…>
|
|
24
|
+
|
|
25
|
+
## Шаг 4. Варианты решения
|
|
26
|
+
- 2–3 варианта (если выбор неочевиден): плюсы, минусы, риски, трудозатраты.
|
|
27
|
+
- Выбери и обоснуй. Для рискованных — предпочти самый обратимый.
|
|
28
|
+
- Для крупных задач — вертикальный срез (тонкая сквозная реализация), а не «сначала весь бэкенд».
|
|
29
|
+
|
|
30
|
+
## Шаг 5. План
|
|
31
|
+
```
|
|
32
|
+
1. <шаг> — файлы: ... — проверка: ...
|
|
33
|
+
2. <шаг> — файлы: ... — проверка: ...
|
|
34
|
+
```
|
|
35
|
+
- Декомпозируй до шагов на 1–2 часа; отметь зависимости и параллелизм.
|
|
36
|
+
- Для каждого шага — как проверить: тест, скриншот, запрос, аудит.
|
|
37
|
+
- Зафиксируй порядок: сначала бэкап/подготовка, потом изменения, потом проверка, потом откат-план.
|
|
38
|
+
|
|
39
|
+
## Шаг 6. Риски и откат
|
|
40
|
+
- Таблица: риск → вероятность/влияние → митигация.
|
|
41
|
+
- Что может сломаться: данные, прод, кэш, SEO, дизайн, интеграции? Как откатим?
|
|
42
|
+
- Перед необратимым: бэкап, dry-run, копия, feature-флаг.
|
|
43
|
+
|
|
44
|
+
## Шаг 7. Исполнение с чекпоинтами
|
|
45
|
+
- Двигайся по плану; после каждого блока — быстрая проверка (тест/линт/скриншот).
|
|
46
|
+
- Отклонение от плана — фиксируй и объясняй; scope creep — в отдельный список «потом».
|
|
47
|
+
- Для UI/SEO/БД используй соответствующие скиллы и их гейты.
|
|
48
|
+
|
|
49
|
+
## Шаг 8. Сдача
|
|
50
|
+
- Сверь результат с критериями приёмки: таблица «критерий → как проверено → результат».
|
|
51
|
+
- Отчёт: что сделано, как проверено, риски/ограничения, что дальше.
|
|
52
|
+
- Обнови память (`SESSIONS.md`, досье) и версию/документацию, если применимо.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Шаблоны брифа и критериев, эвристики оценки
|
|
2
|
+
|
|
3
|
+
> Часть навыка requirements-and-planning. ≈630 токенов. Читать, когда: нужно быстро собрать бриф, сформулировать критерии приёмки по типу работы или оценить трудозатраты.
|
|
4
|
+
|
|
5
|
+
## Шаблон брифа (короткий)
|
|
6
|
+
```
|
|
7
|
+
Задача: <одно предложение>
|
|
8
|
+
Зачем: <польза>
|
|
9
|
+
Пользователь/сценарий: <...>
|
|
10
|
+
Входит / Не входит: <...>
|
|
11
|
+
Критерии приёмки: <3–7 проверяемых пунктов>
|
|
12
|
+
Ограничения: <стек, сроки, нельзя ломать>
|
|
13
|
+
Риски/откат: <...>
|
|
14
|
+
План: <3–7 шагов с проверками>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Шаблон критериев приёмки
|
|
18
|
+
- Given <контекст>, when <действие>, then <результат>.
|
|
19
|
+
- UI: 1440/768/390, light/dark, состояния, контраст AA, нет overflow.
|
|
20
|
+
- SEO: title/description, один H1, canonical, OG, schema, sitemap/robots (если применимо).
|
|
21
|
+
- API/данные: код ответа, валидация, транзакция, права, отсутствие N+1.
|
|
22
|
+
- Тесты: baseline не ухудшен, новые тесты зелёные.
|
|
23
|
+
- Релиз: артефакт собран, checksum, инструкция, откат.
|
|
24
|
+
|
|
25
|
+
## Эвристики оценки
|
|
26
|
+
- Небольшая правка — 0,5–2 ч; компонент — 2–6 ч; экран — 0,5–2 дня; фича с БД/тестами — 1–3 дня.
|
|
27
|
+
- Неизвестный стек / чужая кодовая база — ×1,5–2 к оценке.
|
|
28
|
+
- Всегда добавляй время на проверку (тесты/скриншоты/аудит) и на непредвиденное (+20–30%).
|
|
29
|
+
- Если оценка > 2 дней — дели на этапы с отдельной сдачей.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security-review
|
|
3
|
+
description: "Безопасность кода: OWASP-минимум, доступ и IDOR, ввод/вывод, загрузки, секреты, зависимости, реакция на инцидент."
|
|
4
|
+
whenToUse: "Новые маршруты, формы, API, загрузки, права и роли, работа с секретами; перед релизом, ревью и после инцидента."
|
|
5
|
+
user-invocable: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Безопасность (универсальный чек-лист)
|
|
9
|
+
|
|
10
|
+
## 0. Когда применять
|
|
11
|
+
- Новый маршрут/форма/API/загрузка, права и роли, секреты; перед релизом/ревью; инцидент.
|
|
12
|
+
|
|
13
|
+
## 1. Главное
|
|
14
|
+
|
|
15
|
+
**OWASP-минимум (A01–A10):**
|
|
16
|
+
- **A01 Доступ:** deny-by-default; `auth` + право на каждом маршруте; IDOR — проверка владельца; привилегированные действия — отдельное право; тест admin/user/guest.
|
|
17
|
+
- **A02+A08 Крипто/целостность:** bcrypt/argon2 (не MD5/SHA1), TLS, секреты не в коде; не десериализовать недоверенное, подписи вебхуков, SRI.
|
|
18
|
+
- **A03 Инъекции:** SQL — параметры/ORM, команды — без shell, XML — без внешних сущностей; `fillable`/явные поля.
|
|
19
|
+
- **A04+A05 Дизайн/конфиг:** лимиты, least privilege, модель угроз (деньги/PII/админка); `APP_DEBUG=false`, без дефолтных паролей, CSP/`X-Content-Type-Options`/frame-ancestors, cookie HttpOnly/Secure/SameSite.
|
|
20
|
+
- **A06 Зависимости:** `composer audit`, `npm audit --omit=dev`; критичное — обновить.
|
|
21
|
+
- **A07 Аутентификация:** регенерация сессии при входе, выход инвалидирует, разумный срок; rate limit на вход/чувствительные действия; MFA админам; парольная политика.
|
|
22
|
+
- **A09+A10 Логи/SSRF:** вход/права/админ-действия без секретов и PII, алерты; allowlist исходящих URL, блок private/metadata IP.
|
|
23
|
+
|
|
24
|
+
**Ввод/вывод:** серверная валидация всех полей (тип/длина/диапазон/формат), клиент — только UX; экранирование по контексту; HTML — только санитайзер с whitelist; никаких `{!! !!}`/`innerHTML`/`v-html`; ошибки не отдают стек/секреты; PII — не в логах/URL/скриншотах.
|
|
25
|
+
|
|
26
|
+
**Загрузки:** whitelist расширений и MIME, лимит размера, случайные имена; вне webroot или безопасная отдача; не-изображения — `Content-Disposition: attachment`; изображения перекодировать; запрет path traversal и архивов-бомб.
|
|
27
|
+
|
|
28
|
+
**Секреты:** `.env`/секрет-хранилище; `.env` в `.gitignore` (`git check-ignore -v .env`); не в коде/логах/коммитах/памяти; утечка → ротация; прод — минимум прав.
|
|
29
|
+
|
|
30
|
+
**Инцидент:** зафиксировать, изолировать, сменить секреты, выпустить фикс, уведомить по политике, записать в память.
|
|
31
|
+
|
|
32
|
+
## 2. Куда грузить дальше
|
|
33
|
+
Смежные: `code-review-checklist`, `release-and-deploy`.
|
|
34
|
+
|
|
35
|
+
## 3. Гейт перед сдачей
|
|
36
|
+
- [ ] OWASP-минимум пройден, проверены admin/user/guest и IDOR.
|
|
37
|
+
- [ ] Ввод валидируется на сервере, вывод экранируется, опасного HTML нет.
|
|
38
|
+
- [ ] Загрузки: whitelist, лимит, безопасное хранение/отдача.
|
|
39
|
+
- [ ] Секретов нет в коде/логах/гите; `.env` игнорируется; аудит зависимостей.
|
|
40
|
+
- [ ] Прод: debug off, cookies/headers, rate limit; PII не в логах/URL/скриншотах.
|