[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MX18NN13WTCKA4E6F2E935":3,"skill-same:01M6MX18NN13WTCKA4E6F2E935":49},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":23,"linkOnly":24,"markdownContent":25,"markdownBody":26,"frontMatter":27,"refName":29,"commitSha":30,"skillDirectory":31,"forksCount":32,"repositoryHtmlUrl":33,"repositoryHomepageUrl":6,"ownerHtmlUrl":34,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":35,"install":36,"resources":48},"01M6MX18NN13WTCKA4E6F2E935","onboard",null,"Onboard — интерактивный онбординг: discovery структуры и внешних систем, создание индекса знаний (project-index.md + infra). Используй при первой работе с новым проектом или когда project-index.md отсутствует\u002Fустарел.","vmkteam\u002Fclaude-plugins","vmkteam","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F55537877?v=4","01M6MWYAFDCD63N1M8MBJA6T0S","01M6MWYAKHK0QCPR0Y7AW5SH0R",7,"MIT","https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins\u002Fblob\u002Fmaster\u002Fplugins\u002Fdeveloper\u002Fskills\u002Fonboard\u002FSKILL.md",[],[5,18,19,20,21,22],"index","discovery","infra","project","true","2026-11-10 10:12:30",false,"---\nname: onboard\ndescription: \"Onboard — интерактивный онбординг: discovery структуры и внешних систем, создание индекса знаний (project-index.md + infra). Используй при первой работе с новым проектом или когда project-index.md отсутствует\u002Fустарел.\"\ndisable-model-invocation: true\n---\n\n# Onboard — интерактивный онбординг в проект\n\nИнтерактивный процесс изучения проекта. Сканирует структуру, обнаруживает системы, создаёт индексный файл знаний для всех скиллов плагина vmkteam-developer.\n\n## Процесс\n\n### Шаг 1. Сканирование проекта\n\nИзучи локальную структуру:\n- `go.mod` — модуль, зависимости, Go-версия, vmkteam-зависимости\n- `Makefile` \u002F `Makefile.mk` — доступные команды, генераторы\n- `docs\u002Fmodel\u002F*.mfd` — MFD-схема, namespace'ы, таблицы\n- `docs\u002F*.pgd` \u002F `docs\u002F*.pdd` — схема БД (определяет: \u002Fpgd или \u002Fpgmdd)\n- `pkg\u002F` — структура пакетов (db, rpc, vt, domain)\n- `cmd\u002F` — точки входа, бинарники\n- `.gitlab-ci.yml` — CI\u002FCD pipeline\n- `deployments\u002F` — Nomad\u002FDocker конфиги\n- `cfg\u002F` — конфигурация (TOML)\n- `migrations\u002F` — SQL миграции\n- `CLAUDE.md` \u002F `.claude\u002F` — существующие инструкции\n\nАвтоопределение vmkteam-инструментов из go.mod:\n- `vmkteam\u002Fzenrpc` → скилл \u002Fzenrpc\n- `vmkteam\u002Fmfd-generator` (или Makefile mfd-*) → скилл \u002Fmfd\n- `vmkteam\u002Fcolgen` (или `\u002F\u002Fgo:generate colgen`) → скилл \u002Fcolgen\n- `vmkteam\u002Frpcgen` (или Makefile *-client) → скилл \u002Frpcgen\n- `vmkteam\u002Fappkit` → скилл \u002Fappkit\n- `vmkteam\u002Fcron` → скилл \u002Fcron\n- `vmkteam\u002Fzenrpc-middleware` → скилл \u002Fzenrpc\n- `.pgd` файлы → скилл \u002Fpgd\n- `.pdd` файлы → скилл \u002Fpgmdd\n\nОпредели тип сервиса: API, worker, cron, hybrid.\n\n### Шаг 2. Определить стадию и infra-группу\n\nСпроси у пользователя:\n\n1. **На какой стадии проект?**\n\n| Стадия | Описание | Доступные системы |\n|--------|----------|-------------------|\n| **Идея** | Только код, нет деплоя | YouTrack, Git |\n| **Dev** | Задеплоен на dev\u002Fstaging | + Sentry (dev), API dev, возможно Grafana |\n| **Production** | Задеплоен на prod | + Sentry (prod), API prod, Grafana, Prometheus, Loki, Nomad, topsrv |\n\nСтадия определяет какие системы спрашивать — не задавай вопросы про Grafana\u002FPrometheus если проект на стадии \"Идея\".\n\n2. **К какой infra-группе относится проект?** (например: acme, platform, storefront)\n\nПроверить наличие shared infra-файла: `~\u002F.claude\u002Fmemory\u002Finfra-{group}.md`\n- **Если существует** — показать содержимое, спросить актуально ли. Перейти к шагу 3b (только специфика сервиса).\n- **Если не существует** — перейти к шагу 3a (полный опрос), создать infra-файл.\n\n### Шаг 3a. Полный опрос (новая infra-группа)\n\nСпрашивай только системы, релевантные стадии.\n\n#### Infra-level (общие для всех сервисов группы):\n1. **GitLab**: Какой GitLab-инстанс? pcurl-профиль? Username?\n2. **YouTrack**: Какой YouTrack-инстанс? pcurl-профиль?\n3. **Sentry** (Dev+): pcurl-профиль, org? Sentry общий для dev и prod или раздельный?\n4. **Grafana** (Production): pcurl-профиль?\n5. **Prometheus** (Dev+): pcurl-профиль (dev)? pcurl-профиль (prod, если отличается)?\n6. **Loki** (Production): через Grafana? loki datasource UID?\n7. **Kibana** (Production): pcurl-профиль? Тип (opensearch\u002Fkibana)?\n8. **Nomad** (Production): pcurl-профиль?\n9. **topsrv** (Production): проект в app.topsrv.io и pcurl-профиль (`@topsrv-{slug}`, второй токен — `@topsrv-{slug}-2`; искать в `pcurl show`)?\n10. **Ветвление**: общая модель (devel→staging, master→production)?\n\n#### Service-level (специфика этого сервиса):\n11. **YouTrack проект**: shortName, project_id, state_field и значения?\n12. **GitLab project**: Project ID, path?\n13. **Sentry project**: slug?\n14. **Prometheus job**: имя job для этого сервиса?\n15. **Loki service_name**: имя в Loki?\n16. **Grafana dashboard**: UID дашборда?\n17. **API endpoints**: URL dev\u002Fprod, pcurl-профили, rpc_endpoint?\n18. **Nomad job**: имя job?\n19. **Специфика**: особые правила, code style?\n20. **Базовая ветка** (`base_branch`): от какой ветки ответвляются feature-ветки и куда идут MR? (по умолчанию `devel`; иногда `master`, `main`)\n21. **Артефакты \u002Fsolve** (`artifacts_target`): куда публиковать артефакты как коммент со спойлерами? Варианты:\n    - `gitlab` — коммент в MR (по умолчанию)\n    - `youtrack` — коммент в задаче\n    - `ask` — спрашивать каждый раз\n\n    > `docs\u002Fllm\u002Ftasks\u002F` не коммитится — остаётся локально, поэтому `.gitignore` должен содержать `docs\u002Fllm\u002Ftasks\u002F`. Весь `docs\u002Fllm\u002F` не игнорируй: в некоторых проектах там закоммиченная документация.\n\n### Шаг 3b. Краткий опрос (infra-группа уже есть)\n\nСпрашивать только service-level (пп. 11-21 из шага 3a). Infra-level берётся из `~\u002F.claude\u002Fmemory\u002Finfra-{group}.md`.\n\n### Шаг 4. Проверка подключений\n\nЕсли infra-файл уже существует — проверять только service-specific endpoints (API dev\u002Fprod, Sentry project, Prometheus job). Infra-level проверки (GitLab, YouTrack, Grafana) уже пройдены.\n\nДля новой infra-группы — проверить все, параллельно:\n\n```bash\n# YouTrack — проекты и кастомные поля (state может называться иначе: Stage, Status и т.д.)\npcurl @{yt_profile} 'https:\u002F\u002F{yt_host}\u002Fapi\u002Fadmin\u002Fprojects?fields=id,shortName,name&$top=50' -s -o \u002Fdev\u002Fnull -w '%{http_code}'\n\n# GitLab — проект и доступ\npcurl @{gl_profile} 'https:\u002F\u002F{gl_host}\u002Fapi\u002Fv4\u002Fprojects\u002F{gl_project_id}?simple=true' -s -o \u002Fdev\u002Fnull -w '%{http_code}'\n\n# Sentry\npcurl @{sentry_profile} 'https:\u002F\u002F{sentry_host}\u002Fapi\u002F0\u002Forganizations\u002F{org}\u002Fprojects\u002F' -s -o \u002Fdev\u002Fnull -w '%{http_code}'\n\n# Grafana\npcurl @{grafana_profile} 'https:\u002F\u002F{grafana_host}\u002Fapi\u002Fhealth' -s -o \u002Fdev\u002Fnull -w '%{http_code}'\n\n# Prometheus\npcurl @{prom_profile} 'https:\u002F\u002F{prom_host}\u002Fapi\u002Fv1\u002Fquery?query=up' -s -o \u002Fdev\u002Fnull -w '%{http_code}'\n\n# Loki (через Grafana)\npcurl @{grafana_profile} 'https:\u002F\u002F{grafana_host}\u002Fapi\u002Fdatasources\u002Fuid\u002F{loki_uid}\u002Fresources\u002Flabels' -s -o \u002Fdev\u002Fnull -w '%{http_code}'\n\n# topsrv — 200 и в теле project, scopes, expiresAt; 401 — токен истёк или отозван\npcurl @{topsrv_profile} -sS https:\u002F\u002Fapp.topsrv.io\u002Fapi\u002Fv1\u002Frpc\u002F -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"meta.whoami\"}' -w ' %{http_code}'\n\n# API prod (\u002Fstatus скрыт за firewall — проверяем RPC endpoint)\npcurl @{api_prod_profile} 'https:\u002F\u002F{api_prod_host}\u002F{rpc_endpoint}?smd' -s -o \u002Fdev\u002Fnull -w '%{http_code}'\n\n# API dev\npcurl @{api_dev_profile} 'https:\u002F\u002F{api_dev_host}\u002F{rpc_endpoint}?smd' -s -o \u002Fdev\u002Fnull -w '%{http_code}'\n```\n\n### Шаг 5. Discovery (если проверки прошли)\n\nПараллельно собрать:\n```bash\n# Sentry: проекты (полная карта сервисов организации)\npcurl @{sentry_profile} 'https:\u002F\u002F{sentry_host}\u002Fapi\u002F0\u002Forganizations\u002F{org}\u002Fprojects\u002F' -s\n\n# Grafana: дашборды и datasources\npcurl @{grafana_profile} 'https:\u002F\u002F{grafana_host}\u002Fapi\u002Fsearch?type=dash-db&query={service}' -s\npcurl @{grafana_profile} 'https:\u002F\u002F{grafana_host}\u002Fapi\u002Fdatasources' -s\n\n# Prometheus: jobs и межсервисная топология\npcurl @{prom_profile} 'https:\u002F\u002F{prom_host}\u002Fapi\u002Fv1\u002Flabel\u002Fjob\u002Fvalues' -s\npcurl @{prom_profile} 'https:\u002F\u002F{prom_host}\u002Fapi\u002Fv1\u002Fquery' -s -G --data-urlencode 'query=app_metadata_services'\npcurl @{prom_profile} 'https:\u002F\u002F{prom_host}\u002Fapi\u002Fv1\u002Fquery' -s -G --data-urlencode 'query=app_metadata_db_connections_total'\n\n# Loki: сервисы (UID-based путь — \u002Fresources\u002F без \u002Floki\u002Fapi\u002Fv1\u002F)\npcurl @{grafana_profile} 'https:\u002F\u002F{grafana_host}\u002Fapi\u002Fdatasources\u002Fuid\u002F{loki_uid}\u002Fresources\u002Flabel\u002Fservice_name\u002Fvalues' -s\n\n# YouTrack: кастомные поля и значения state (может быть Stage, Status etc.)\npcurl @{yt_profile} 'https:\u002F\u002F{yt_host}\u002Fapi\u002Fissues?query=project:{PROJECT}&fields=idReadable,customFields(name,value(name))&$top=5' -s\n\n# API: SMD (список RPC namespace'ов и методов) — через ?smd\npcurl @{api_prod_profile} 'https:\u002F\u002F{api_prod_host}\u002F{rpc_endpoint}?smd' -s -L\n```\n\n### Шаг 5b. Multi-repo и Architecture discovery\n\nОпределить связанные сервисы из нескольких источников:\n\n```bash\n# Из pkg\u002Fclient\u002F — rpcgen-клиенты\nls pkg\u002Fclient\u002F 2>\u002Fdev\u002Fnull\n\n# Из конфигов — URL других сервисов\ngrep -r 'http:\u002F\u002F' cfg\u002Flocal.toml.dist 2>\u002Fdev\u002Fnull\n```\n\nИз Prometheus (Dev и выше) — построить топологию через метрики appkit:\n\n```bash\n# Какие сервисы существуют\npcurl @{prom_profile} 'https:\u002F\u002F{prom_host}\u002Fapi\u002Fv1\u002Fquery' -s -G --data-urlencode 'query=app_metadata_service'\n\n# Межсервисные связи (sync\u002Fasync\u002Fexternal)\npcurl @{prom_profile} 'https:\u002F\u002F{prom_host}\u002Fapi\u002Fv1\u002Fquery' -s -G --data-urlencode 'query=app_metadata_services'\n\n# Подключения к БД\npcurl @{prom_profile} 'https:\u002F\u002F{prom_host}\u002Fapi\u002Fv1\u002Fquery' -s -G --data-urlencode 'query=app_metadata_db_connections_total'\n```\n\nИз этих метрик собрать полную карту: какой сервис с кем общается (sync\u002Fasync), какие БД использует.\n\nДля каждого связанного сервиса проверить наличие локальных исходников.\n\n### Шаг 6. Генерация файлов\n\nОнбординг создаёт два файла в **РАЗНЫХ** директориях:\n\n| Файл | Абсолютный путь | Scope | Инструмент |\n|------|-----------------|-------|------------|\n| **Shared infra** | `~\u002F.claude\u002Fmemory\u002Finfra-{group}.md` | Глобальный (все проекты группы) | Write (абсолютный путь, mkdir -p если нет) |\n| **Project index** | `{project-auto-memory-dir}\u002Fproject-index.md` | Только этот проект | Write (в auto-memory директорию проекта) |\n\nЭто разные директории, и их легко перепутать:\n- `~\u002F.claude\u002Fmemory\u002F` — глобальная директория, общая для всех проектов группы; infra-файл должен быть доступен из любого из них. Если директории нет — `mkdir -p ~\u002F.claude\u002Fmemory\u002F`.\n- `{project-auto-memory-dir}` — auto-memory директория текущего проекта (например `~\u002F.claude\u002Fprojects\u002F-Users-username-Projects-Go-foo\u002Fmemory\u002F`). Пиши через Write с абсолютным путём.\n- Скиллы читают оба файла: infra-level значения — из `infra-{group}.md`, service-level — из `project-index.md`, и подставляют их вместо `{placeholders}`.\n\n#### 6a. Shared infra: `~\u002F.claude\u002Fmemory\u002Finfra-{group}.md`\n\nСоздаётся один раз для infra-группы. При повторном онбординге — обновляется только если что-то изменилось. Путь всегда абсолютный: `~\u002F.claude\u002Fmemory\u002Finfra-{group}.md`.\n\n```markdown\n# infra-{group} — shared infrastructure\n\n## GitLab\n- profile: @{gl_profile}\n- host: {gl_host}\n- username: {gl_username}\n\n## YouTrack\n- profile: @{yt_profile}\n- host: {yt_host}\n\n## Sentry\n- profile: @{sentry_profile}\n- host: {sentry_host}\n- org: {org}\n\n## Grafana\n- profile: @{grafana_profile}\n- host: {grafana_host}\n- prometheus_datasource_uid: {uid}\n- loki_datasource_uid: {uid}\n\n## Prometheus\n- profile_dev: @{prom_dev_profile}\n- host_dev: {prom_dev_host}\n- profile_prod: @{prom_prod_profile}\n- host_prod: {prom_prod_host}\n\n## Loki\n- via grafana proxy (UID-based: \u002Fresources\u002Fquery_range, НЕ \u002Floki\u002Fapi\u002Fv1\u002F)\n- loki_uid: {uid}\n\n## Kibana \u002F OpenSearch Dashboards (если есть)\n- profile: @{kibana_profile}\n- host: {kibana_host}\n- type: {opensearch \u002F kibana}\n\n## Nomad (если есть)\n- profile: @{nomad_profile}\n- host: {nomad_host}\n\n## topsrv (если есть)\n- profile: @{topsrv_profile}\n- project: {topsrv_slug}\n- scopes: {scopes из meta.whoami}\n\n## Ветвление\n- devel → staging (auto deploy)\n- master → production (auto deploy)\n```\n\n#### 6b. Project index: `{project-auto-memory-dir}\u002Fproject-index.md`\n\nПуть: auto-memory директория текущего проекта (абсолютный). Строка `infra:` в начале файла указывает на shared infra-файл.\n\nДобавь в `MEMORY.md` той же директории строку-указатель, если её нет, — так Claude видит индекс в каждой сессии проекта и находит его для скиллов:\n\n```markdown\n- [Project index](project-index.md) — подключения к системам и специфика сервиса для скиллов vmkteam-developer\n```\n\n```markdown\n# {Project} — индекс знаний\n\ninfra: ~\u002F.claude\u002Fmemory\u002Finfra-{group}.md\n\n## Общая информация\n- Модуль: {module}\n- Go: {version}\n- Тип: {API\u002Fworker\u002Fhybrid}\n- Стадия: {Идея\u002FDev\u002FProduction}\n- Деплой: {Nomad\u002FDocker\u002FK8s \u002F нет}\n\n## Структура\n- DB: pkg\u002Fdb\u002F ({N} сущностей, {namespaces})\n- Domain: pkg\u002F{name}\u002F (есть\u002Fнет)\n- RPC: pkg\u002Frpc\u002F ({N} сервисов, namespace: {ns}, endpoint: \u002Frpc\u002F)\n- VT: pkg\u002Fvt\u002F ({N} сервисов, endpoint: \u002Fvt\u002F)\n- Migrations: docs\u002Fpatches\u002F ({N} файлов)\n\n## Инструменты vmkteam\n- zenrpc {version}\n- mfd-generator {version} (MFD: docs\u002Fmodel\u002F{name}.mfd)\n- colgen (\u002F\u002Fgo:generate colgen в pkg\u002Frpc\u002F, pkg\u002Fvt\u002F)\n- rpcgen {version}\n- appkit {version}\n- cron (есть\u002Fнет)\n\n## Релевантные скиллы\n- \u002Fgold-arch — архитектура (трёхслойная)\n- \u002Fzenrpc — RPC-методы, middleware, аннотации\n- \u002Fmfd — генерация из БД (namespaces: {list})\n- \u002Fcolgen — коллекции и конвертеры\n- \u002Fpgd или \u002Fpgmdd — схема БД ({file})\n- \u002Frpcgen — генерация клиентов\n- \u002Fappkit — метрики, pprof, embedlog\n- \u002Fpgmigrator — SQL миграции\n- \u002Ftesting — тесты (pkg\u002Fdb\u002Ftest\u002F)\n- \u002Fcommit-msg — коммиты\n- \u002Fgo-review — code review (свой код)\n- \u002Fmr-review — ревью чужих MR\n- \u002Fgitlab — MR, pipelines, discussions\n- \u002Fincident — реакция на production инциденты\n\n## Service systems\n\n### GitLab project\n- project_id: {gl_project_id}\n- project_path: {group\u002Fproject}\n- url: https:\u002F\u002F{gl_host}\u002F{group\u002Fproject}\u002F-\u002Fmerge_requests\n\n### YouTrack project\n- project: {SHORT}\n- project_id: {id}\n- state_field: {State\u002FStage\u002FStatus}\n- state_open: {Open\u002FBacklog\u002F...}\n- state_done: {Done\u002FClosed\u002F...}\n- url: https:\u002F\u002F{yt_host}\u002Fissues?q=project:{SHORT}\n\n### Sentry project\n- project_slug: {slug}\n- url: https:\u002F\u002F{sentry_host}\u002Forganizations\u002F{org}\u002Fissues\u002F?project={project_id}\n\n### Prometheus\n- job: {service_job_name}\n\n### Loki\n- service_name: {service_name_in_loki}\n\n### Grafana dashboard\n- dashboard_uid: {uid}\n- dashboard_url: https:\u002F\u002F{grafana_host}\u002Fd\u002F{uid}\n\n### Kibana (если есть)\n- index_patterns: {nginx-access-*, nginx-error-*, ...}\n\n### Nomad (если есть)\n- job: {nomad_job_name}\n\n### API Production\n- profile: @{api_prod_profile}\n- host: {api_prod_host}\n- rpc_endpoint: \u002Frpc\u002F\n- vt_endpoint: \u002Fvt\u002F\n\n### API Dev\u002FStaging\n- profile: @{api_dev_profile}\n- host: {api_dev_host}\n- rpc_endpoint: \u002Frpc\u002F\n\n## Solve settings\n- base_branch: {devel} — базовая ветка, от которой ответвляются feature-ветки и против которой делается MR\u002Freview\n- artifacts_target: {gitlab\u002Fyoutrack\u002Fask} — куда публиковать артефакты \u002Fsolve как коммент со спойлерами\n- Артефакты `docs\u002Fllm\u002Ftasks\u002F` не коммитятся (`docs\u002Fllm\u002Ftasks\u002F` в `.gitignore`)\n\n## Makefile-команды\n{список ключевых make targets с кратким описанием}\n\n## Связанные сервисы\n| Сервис | Тип связи | Локальный путь | Sentry slug | Prometheus job |\n|--------|-----------|----------------|-------------|----------------|\n| {service} | {sync\u002Fasync\u002Fdb} | {path} | {slug} | {job} |\n\n## Локальные пути\n- Исходники: {path}\n- Связанные проекты: {list}\n\n## Уроки\n{пусто при онбординге; \u002Fsolve дописывает сюда по строке после задач с провальными раундами: «что пошло не так → как избежать (TASK_ID)»}\n```\n\n### Шаг 7. Валидация\n\nПокажи пользователю сгенерированный индекс и попроси подтвердить\u002Fуточнить.\n\n## Результат\n\nПосле онбординга:\n- `~\u002F.claude\u002Fmemory\u002Finfra-{group}.md` содержит общие подключения (GitLab, YouTrack, Sentry, Grafana, Prometheus, Loki, Kibana, Nomad, topsrv)\n- `{project-auto-memory-dir}\u002Fproject-index.md` содержит специфику сервиса и ссылку на infra-файл, а `MEMORY.md` — указатель на него\n- Скиллы читают оба файла: infra-level из `infra-{group}.md`, service-level из `project-index.md`\n- Повторный онбординг сервиса той же группы — только service-level вопросы\n","# Onboard — интерактивный онбординг в проект\n\nИнтерактивный процесс изучения проекта. Сканирует структуру, обнаруживает системы, создаёт индексный файл знаний для всех скиллов плагина vmkteam-developer.\n\n## Процесс\n\n### Шаг 1. Сканирование проекта\n\nИзучи локальную структуру:\n- `go.mod` — модуль, зависимости, Go-версия, vmkteam-зависимости\n- `Makefile` \u002F `Makefile.mk` — доступные команды, генераторы\n- `docs\u002Fmodel\u002F*.mfd` — MFD-схема, namespace'ы, таблицы\n- `docs\u002F*.pgd` \u002F `docs\u002F*.pdd` — схема БД (определяет: \u002Fpgd или \u002Fpgmdd)\n- `pkg\u002F` — структура пакетов (db, rpc, vt, domain)\n- `cmd\u002F` — точки входа, бинарники\n- `.gitlab-ci.yml` — CI\u002FCD pipeline\n- `deployments\u002F` — Nomad\u002FDocker конфиги\n- `cfg\u002F` — конфигурация (TOML)\n- `migrations\u002F` — SQL миграции\n- `CLAUDE.md` \u002F `.claude\u002F` — существующие инструкции\n\nАвтоопределение vmkteam-инструментов из go.mod:\n- `vmkteam\u002Fzenrpc` → скилл \u002Fzenrpc\n- `vmkteam\u002Fmfd-generator` (или Makefile mfd-*) → скилл \u002Fmfd\n- `vmkteam\u002Fcolgen` (или `\u002F\u002Fgo:generate colgen`) → скилл \u002Fcolgen\n- `vmkteam\u002Frpcgen` (или Makefile *-client) → скилл \u002Frpcgen\n- `vmkteam\u002Fappkit` → скилл \u002Fappkit\n- `vmkteam\u002Fcron` → скилл \u002Fcron\n- `vmkteam\u002Fzenrpc-middleware` → скилл \u002Fzenrpc\n- `.pgd` файлы → скилл \u002Fpgd\n- `.pdd` файлы → скилл \u002Fpgmdd\n\nОпредели тип сервиса: API, worker, cron, hybrid.\n\n### Шаг 2. Определить стадию и infra-группу\n\nСпроси у пользователя:\n\n1. **На какой стадии проект?**\n\n| Стадия | Описание | Доступные системы |\n|--------|----------|-------------------|\n| **Идея** | Только код, нет деплоя | YouTrack, Git |\n| **Dev** | Задеплоен на dev\u002Fstaging | + Sentry (dev), API dev, возможно Grafana |\n| **Production** | Задеплоен на prod | + Sentry (prod), API prod, Grafana, Prometheus, Loki, Nomad, topsrv |\n\nСтадия определяет какие системы спрашивать — не задавай вопросы про Grafana\u002FPrometheus если проект на стадии \"Идея\".\n\n2. **К какой infra-группе относится проект?** (например: acme, platform, storefront)\n\nПроверить наличие shared infra-файла: `~\u002F.claude\u002Fmemory\u002Finfra-{group}.md`\n- **Если существует** — показать содержимое, спросить актуально ли. Перейти к шагу 3b (только специфика сервиса).\n- **Если не существует** — перейти к шагу 3a (полный опрос), создать infra-файл.\n\n### Шаг 3a. Полный опрос (новая infra-группа)\n\nСпрашивай только системы, релевантные стадии.\n\n#### Infra-level (общие для всех сервисов группы):\n1. **GitLab**: Какой GitLab-инстанс? pcurl-профиль? Username?\n2. **YouTrack**: Какой YouTrack-инстанс? pcurl-профиль?\n3. **Sentry** (Dev+): pcurl-профиль, org? Sentry общий для dev и prod или раздельный?\n4. **Grafana** (Production): pcurl-профиль?\n5. **Prometheus** (Dev+): pcurl-профиль (dev)? pcurl-профиль (prod, если отличается)?\n6. **Loki** (Production): через Grafana? loki datasource UID?\n7. **Kibana** (Production): pcurl-профиль? Тип (opensearch\u002Fkibana)?\n8. **Nomad** (Production): pcurl-профиль?\n9. **topsrv** (Production): проект в app.topsrv.io и pcurl-профиль (`@topsrv-{slug}`, второй токен — `@topsrv-{slug}-2`; искать в `pcurl show`)?\n10. **Ветвление**: общая модель (devel→staging, master→production)?\n\n#### Service-level (специфика этого сервиса):\n11. **YouTrack проект**: shortName, project_id, state_field и значения?\n12. **GitLab project**: Project ID, path?\n13. **Sentry project**: slug?\n14. **Prometheus job**: имя job для этого сервиса?\n15. **Loki service_name**: имя в Loki?\n16. **Grafana dashboard**: UID дашборда?\n17. **API endpoints**: URL dev\u002Fprod, pcurl-профили, rpc_endpoint?\n18. **Nomad job**: имя job?\n19. **Специфика**: особые правила, code style?\n20. **Базовая ветка** (`base_branch`): от какой ветки ответвляются feature-ветки и куда идут MR? (по умолчанию `devel`; иногда `master`, `main`)\n21. **Артефакты \u002Fsolve** (`artifacts_target`): куда публиковать артефакты как коммент со спойлерами? Варианты:\n    - `gitlab` — коммент в MR (по умолчанию)\n    - `youtrack` — коммент в задаче\n    - `ask` — спрашивать каждый раз\n\n    > `docs\u002Fllm\u002Ftasks\u002F` не коммитится — остаётся локально, поэтому `.gitignore` должен содержать `docs\u002Fllm\u002Ftasks\u002F`. Весь `docs\u002Fllm\u002F` не игнорируй: в некоторых проектах там закоммиченная документация.\n\n### Шаг 3b. Краткий опрос (infra-группа уже есть)\n\nСпрашивать только service-level (пп. 11-21 из шага 3a). Infra-level берётся из `~\u002F.claude\u002Fmemory\u002Finfra-{group}.md`.\n\n### Шаг 4. Проверка подключений\n\nЕсли infra-файл уже существует — проверять только service-specific endpoints (API dev\u002Fprod, Sentry project, Prometheus job). Infra-level проверки (GitLab, YouTrack, Grafana) уже пройдены.\n\nДля новой infra-группы — проверить все, параллельно:\n\n```bash\n# YouTrack — проекты и кастомные поля (state может называться иначе: Stage, Status и т.д.)\npcurl @{yt_profile} 'https:\u002F\u002F{yt_host}\u002Fapi\u002Fadmin\u002Fprojects?fields=id,shortName,name&$top=50' -s -o \u002Fdev\u002Fnull -w '%{http_code}'\n\n# GitLab — проект и доступ\npcurl @{gl_profile} 'https:\u002F\u002F{gl_host}\u002Fapi\u002Fv4\u002Fprojects\u002F{gl_project_id}?simple=true' -s -o \u002Fdev\u002Fnull -w '%{http_code}'\n\n# Sentry\npcurl @{sentry_profile} 'https:\u002F\u002F{sentry_host}\u002Fapi\u002F0\u002Forganizations\u002F{org}\u002Fprojects\u002F' -s -o \u002Fdev\u002Fnull -w '%{http_code}'\n\n# Grafana\npcurl @{grafana_profile} 'https:\u002F\u002F{grafana_host}\u002Fapi\u002Fhealth' -s -o \u002Fdev\u002Fnull -w '%{http_code}'\n\n# Prometheus\npcurl @{prom_profile} 'https:\u002F\u002F{prom_host}\u002Fapi\u002Fv1\u002Fquery?query=up' -s -o \u002Fdev\u002Fnull -w '%{http_code}'\n\n# Loki (через Grafana)\npcurl @{grafana_profile} 'https:\u002F\u002F{grafana_host}\u002Fapi\u002Fdatasources\u002Fuid\u002F{loki_uid}\u002Fresources\u002Flabels' -s -o \u002Fdev\u002Fnull -w '%{http_code}'\n\n# topsrv — 200 и в теле project, scopes, expiresAt; 401 — токен истёк или отозван\npcurl @{topsrv_profile} -sS https:\u002F\u002Fapp.topsrv.io\u002Fapi\u002Fv1\u002Frpc\u002F -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"meta.whoami\"}' -w ' %{http_code}'\n\n# API prod (\u002Fstatus скрыт за firewall — проверяем RPC endpoint)\npcurl @{api_prod_profile} 'https:\u002F\u002F{api_prod_host}\u002F{rpc_endpoint}?smd' -s -o \u002Fdev\u002Fnull -w '%{http_code}'\n\n# API dev\npcurl @{api_dev_profile} 'https:\u002F\u002F{api_dev_host}\u002F{rpc_endpoint}?smd' -s -o \u002Fdev\u002Fnull -w '%{http_code}'\n```\n\n### Шаг 5. Discovery (если проверки прошли)\n\nПараллельно собрать:\n```bash\n# Sentry: проекты (полная карта сервисов организации)\npcurl @{sentry_profile} 'https:\u002F\u002F{sentry_host}\u002Fapi\u002F0\u002Forganizations\u002F{org}\u002Fprojects\u002F' -s\n\n# Grafana: дашборды и datasources\npcurl @{grafana_profile} 'https:\u002F\u002F{grafana_host}\u002Fapi\u002Fsearch?type=dash-db&query={service}' -s\npcurl @{grafana_profile} 'https:\u002F\u002F{grafana_host}\u002Fapi\u002Fdatasources' -s\n\n# Prometheus: jobs и межсервисная топология\npcurl @{prom_profile} 'https:\u002F\u002F{prom_host}\u002Fapi\u002Fv1\u002Flabel\u002Fjob\u002Fvalues' -s\npcurl @{prom_profile} 'https:\u002F\u002F{prom_host}\u002Fapi\u002Fv1\u002Fquery' -s -G --data-urlencode 'query=app_metadata_services'\npcurl @{prom_profile} 'https:\u002F\u002F{prom_host}\u002Fapi\u002Fv1\u002Fquery' -s -G --data-urlencode 'query=app_metadata_db_connections_total'\n\n# Loki: сервисы (UID-based путь — \u002Fresources\u002F без \u002Floki\u002Fapi\u002Fv1\u002F)\npcurl @{grafana_profile} 'https:\u002F\u002F{grafana_host}\u002Fapi\u002Fdatasources\u002Fuid\u002F{loki_uid}\u002Fresources\u002Flabel\u002Fservice_name\u002Fvalues' -s\n\n# YouTrack: кастомные поля и значения state (может быть Stage, Status etc.)\npcurl @{yt_profile} 'https:\u002F\u002F{yt_host}\u002Fapi\u002Fissues?query=project:{PROJECT}&fields=idReadable,customFields(name,value(name))&$top=5' -s\n\n# API: SMD (список RPC namespace'ов и методов) — через ?smd\npcurl @{api_prod_profile} 'https:\u002F\u002F{api_prod_host}\u002F{rpc_endpoint}?smd' -s -L\n```\n\n### Шаг 5b. Multi-repo и Architecture discovery\n\nОпределить связанные сервисы из нескольких источников:\n\n```bash\n# Из pkg\u002Fclient\u002F — rpcgen-клиенты\nls pkg\u002Fclient\u002F 2>\u002Fdev\u002Fnull\n\n# Из конфигов — URL других сервисов\ngrep -r 'http:\u002F\u002F' cfg\u002Flocal.toml.dist 2>\u002Fdev\u002Fnull\n```\n\nИз Prometheus (Dev и выше) — построить топологию через метрики appkit:\n\n```bash\n# Какие сервисы существуют\npcurl @{prom_profile} 'https:\u002F\u002F{prom_host}\u002Fapi\u002Fv1\u002Fquery' -s -G --data-urlencode 'query=app_metadata_service'\n\n# Межсервисные связи (sync\u002Fasync\u002Fexternal)\npcurl @{prom_profile} 'https:\u002F\u002F{prom_host}\u002Fapi\u002Fv1\u002Fquery' -s -G --data-urlencode 'query=app_metadata_services'\n\n# Подключения к БД\npcurl @{prom_profile} 'https:\u002F\u002F{prom_host}\u002Fapi\u002Fv1\u002Fquery' -s -G --data-urlencode 'query=app_metadata_db_connections_total'\n```\n\nИз этих метрик собрать полную карту: какой сервис с кем общается (sync\u002Fasync), какие БД использует.\n\nДля каждого связанного сервиса проверить наличие локальных исходников.\n\n### Шаг 6. Генерация файлов\n\nОнбординг создаёт два файла в **РАЗНЫХ** директориях:\n\n| Файл | Абсолютный путь | Scope | Инструмент |\n|------|-----------------|-------|------------|\n| **Shared infra** | `~\u002F.claude\u002Fmemory\u002Finfra-{group}.md` | Глобальный (все проекты группы) | Write (абсолютный путь, mkdir -p если нет) |\n| **Project index** | `{project-auto-memory-dir}\u002Fproject-index.md` | Только этот проект | Write (в auto-memory директорию проекта) |\n\nЭто разные директории, и их легко перепутать:\n- `~\u002F.claude\u002Fmemory\u002F` — глобальная директория, общая для всех проектов группы; infra-файл должен быть доступен из любого из них. Если директории нет — `mkdir -p ~\u002F.claude\u002Fmemory\u002F`.\n- `{project-auto-memory-dir}` — auto-memory директория текущего проекта (например `~\u002F.claude\u002Fprojects\u002F-Users-username-Projects-Go-foo\u002Fmemory\u002F`). Пиши через Write с абсолютным путём.\n- Скиллы читают оба файла: infra-level значения — из `infra-{group}.md`, service-level — из `project-index.md`, и подставляют их вместо `{placeholders}`.\n\n#### 6a. Shared infra: `~\u002F.claude\u002Fmemory\u002Finfra-{group}.md`\n\nСоздаётся один раз для infra-группы. При повторном онбординге — обновляется только если что-то изменилось. Путь всегда абсолютный: `~\u002F.claude\u002Fmemory\u002Finfra-{group}.md`.\n\n```markdown\n# infra-{group} — shared infrastructure\n\n## GitLab\n- profile: @{gl_profile}\n- host: {gl_host}\n- username: {gl_username}\n\n## YouTrack\n- profile: @{yt_profile}\n- host: {yt_host}\n\n## Sentry\n- profile: @{sentry_profile}\n- host: {sentry_host}\n- org: {org}\n\n## Grafana\n- profile: @{grafana_profile}\n- host: {grafana_host}\n- prometheus_datasource_uid: {uid}\n- loki_datasource_uid: {uid}\n\n## Prometheus\n- profile_dev: @{prom_dev_profile}\n- host_dev: {prom_dev_host}\n- profile_prod: @{prom_prod_profile}\n- host_prod: {prom_prod_host}\n\n## Loki\n- via grafana proxy (UID-based: \u002Fresources\u002Fquery_range, НЕ \u002Floki\u002Fapi\u002Fv1\u002F)\n- loki_uid: {uid}\n\n## Kibana \u002F OpenSearch Dashboards (если есть)\n- profile: @{kibana_profile}\n- host: {kibana_host}\n- type: {opensearch \u002F kibana}\n\n## Nomad (если есть)\n- profile: @{nomad_profile}\n- host: {nomad_host}\n\n## topsrv (если есть)\n- profile: @{topsrv_profile}\n- project: {topsrv_slug}\n- scopes: {scopes из meta.whoami}\n\n## Ветвление\n- devel → staging (auto deploy)\n- master → production (auto deploy)\n```\n\n#### 6b. Project index: `{project-auto-memory-dir}\u002Fproject-index.md`\n\nПуть: auto-memory директория текущего проекта (абсолютный). Строка `infra:` в начале файла указывает на shared infra-файл.\n\nДобавь в `MEMORY.md` той же директории строку-указатель, если её нет, — так Claude видит индекс в каждой сессии проекта и находит его для скиллов:\n\n```markdown\n- [Project index](project-index.md) — подключения к системам и специфика сервиса для скиллов vmkteam-developer\n```\n\n```markdown\n# {Project} — индекс знаний\n\ninfra: ~\u002F.claude\u002Fmemory\u002Finfra-{group}.md\n\n## Общая информация\n- Модуль: {module}\n- Go: {version}\n- Тип: {API\u002Fworker\u002Fhybrid}\n- Стадия: {Идея\u002FDev\u002FProduction}\n- Деплой: {Nomad\u002FDocker\u002FK8s \u002F нет}\n\n## Структура\n- DB: pkg\u002Fdb\u002F ({N} сущностей, {namespaces})\n- Domain: pkg\u002F{name}\u002F (есть\u002Fнет)\n- RPC: pkg\u002Frpc\u002F ({N} сервисов, namespace: {ns}, endpoint: \u002Frpc\u002F)\n- VT: pkg\u002Fvt\u002F ({N} сервисов, endpoint: \u002Fvt\u002F)\n- Migrations: docs\u002Fpatches\u002F ({N} файлов)\n\n## Инструменты vmkteam\n- zenrpc {version}\n- mfd-generator {version} (MFD: docs\u002Fmodel\u002F{name}.mfd)\n- colgen (\u002F\u002Fgo:generate colgen в pkg\u002Frpc\u002F, pkg\u002Fvt\u002F)\n- rpcgen {version}\n- appkit {version}\n- cron (есть\u002Fнет)\n\n## Релевантные скиллы\n- \u002Fgold-arch — архитектура (трёхслойная)\n- \u002Fzenrpc — RPC-методы, middleware, аннотации\n- \u002Fmfd — генерация из БД (namespaces: {list})\n- \u002Fcolgen — коллекции и конвертеры\n- \u002Fpgd или \u002Fpgmdd — схема БД ({file})\n- \u002Frpcgen — генерация клиентов\n- \u002Fappkit — метрики, pprof, embedlog\n- \u002Fpgmigrator — SQL миграции\n- \u002Ftesting — тесты (pkg\u002Fdb\u002Ftest\u002F)\n- \u002Fcommit-msg — коммиты\n- \u002Fgo-review — code review (свой код)\n- \u002Fmr-review — ревью чужих MR\n- \u002Fgitlab — MR, pipelines, discussions\n- \u002Fincident — реакция на production инциденты\n\n## Service systems\n\n### GitLab project\n- project_id: {gl_project_id}\n- project_path: {group\u002Fproject}\n- url: https:\u002F\u002F{gl_host}\u002F{group\u002Fproject}\u002F-\u002Fmerge_requests\n\n### YouTrack project\n- project: {SHORT}\n- project_id: {id}\n- state_field: {State\u002FStage\u002FStatus}\n- state_open: {Open\u002FBacklog\u002F...}\n- state_done: {Done\u002FClosed\u002F...}\n- url: https:\u002F\u002F{yt_host}\u002Fissues?q=project:{SHORT}\n\n### Sentry project\n- project_slug: {slug}\n- url: https:\u002F\u002F{sentry_host}\u002Forganizations\u002F{org}\u002Fissues\u002F?project={project_id}\n\n### Prometheus\n- job: {service_job_name}\n\n### Loki\n- service_name: {service_name_in_loki}\n\n### Grafana dashboard\n- dashboard_uid: {uid}\n- dashboard_url: https:\u002F\u002F{grafana_host}\u002Fd\u002F{uid}\n\n### Kibana (если есть)\n- index_patterns: {nginx-access-*, nginx-error-*, ...}\n\n### Nomad (если есть)\n- job: {nomad_job_name}\n\n### API Production\n- profile: @{api_prod_profile}\n- host: {api_prod_host}\n- rpc_endpoint: \u002Frpc\u002F\n- vt_endpoint: \u002Fvt\u002F\n\n### API Dev\u002FStaging\n- profile: @{api_dev_profile}\n- host: {api_dev_host}\n- rpc_endpoint: \u002Frpc\u002F\n\n## Solve settings\n- base_branch: {devel} — базовая ветка, от которой ответвляются feature-ветки и против которой делается MR\u002Freview\n- artifacts_target: {gitlab\u002Fyoutrack\u002Fask} — куда публиковать артефакты \u002Fsolve как коммент со спойлерами\n- Артефакты `docs\u002Fllm\u002Ftasks\u002F` не коммитятся (`docs\u002Fllm\u002Ftasks\u002F` в `.gitignore`)\n\n## Makefile-команды\n{список ключевых make targets с кратким описанием}\n\n## Связанные сервисы\n| Сервис | Тип связи | Локальный путь | Sentry slug | Prometheus job |\n|--------|-----------|----------------|-------------|----------------|\n| {service} | {sync\u002Fasync\u002Fdb} | {path} | {slug} | {job} |\n\n## Локальные пути\n- Исходники: {path}\n- Связанные проекты: {list}\n\n## Уроки\n{пусто при онбординге; \u002Fsolve дописывает сюда по строке после задач с провальными раундами: «что пошло не так → как избежать (TASK_ID)»}\n```\n\n### Шаг 7. Валидация\n\nПокажи пользователю сгенерированный индекс и попроси подтвердить\u002Fуточнить.\n\n## Результат\n\nПосле онбординга:\n- `~\u002F.claude\u002Fmemory\u002Finfra-{group}.md` содержит общие подключения (GitLab, YouTrack, Sentry, Grafana, Prometheus, Loki, Kibana, Nomad, topsrv)\n- `{project-auto-memory-dir}\u002Fproject-index.md` содержит специфику сервиса и ссылку на infra-файл, а `MEMORY.md` — указатель на него\n- Скиллы читают оба файла: infra-level из `infra-{group}.md`, service-level из `project-index.md`\n- Повторный онбординг сервиса той же группы — только service-level вопросы\n",{"name":5,"description":7,"disable-model-invocation":28},true,"master","8f3147ce24a1a470d9aaa02aa775d7797d621d95","plugins\u002Fdeveloper\u002Fskills\u002Fonboard",1,"https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins","https:\u002F\u002Fgithub.com\u002Fvmkteam","2026-11-05 00:26:25",{"source":8,"skillName":5,"commands":37,"prompt":47,"zipAvailable":28},[38,41,44],{"tool":39,"command":40},"npx","npx skills add vmkteam\u002Fclaude-plugins --skill onboard",{"tool":42,"command":43},"bunx","bunx skills add vmkteam\u002Fclaude-plugins --skill onboard",{"tool":45,"command":46},"pnpm","pnpm dlx skills add vmkteam\u002Fclaude-plugins --skill onboard","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins\u002Fblob\u002Fmaster\u002Fplugins\u002Fdeveloper\u002Fskills\u002Fonboard\u002FSKILL.md",[],[50,61,73,89,106,118],{"skillNo":51,"name":52,"nameZh":6,"description":53,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":54,"categories":55,"keywords":56,"publishedAt":23},"01M6MX3A8MZJBTMMK6WMY35FYH","zenrpc","Zenrpc — справочник по JSON-RPC 2.0 серверу для Go. Используй при создании и редактировании RPC-сервисов.","https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins\u002Fblob\u002Fmaster\u002Fplugins\u002Fdeveloper\u002Fskills\u002Fzenrpc\u002FSKILL.md",[],[52,57,58,59,60],"go","json-rpc","json","rpc",{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":23},"01M6MX36PEA0NSHCCRF5GGVVTZ","youtrack","YouTrack — задачи через REST API и pcurl. Используй для поиска issues, создания, обновления описаний, смены assignee\u002Fstage\u002Fприоритета, логирования времени и работы с комментариями.","https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins\u002Fblob\u002Fmaster\u002Fplugins\u002Fdeveloper\u002Fskills\u002Fyoutrack\u002FSKILL.md",[],[63,68,69,70,71,72],"issues","REST","api","stage","rest api",{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":23},"01M6MX322TD9HQPCYSNTFB4HBA","topsrv","topsrv — метрики, алерты, CVE и HTTP-логи серверов проекта через публичный JSON-RPC API app.topsrv.io. Используй, когда нужна загрузка CPU, памяти или диска хоста, метрики PostgreSQL\u002Fnginx\u002Fangie агента topsrv (`topsrv_*`), какие алерты горят, уязвимые пакеты на серверах или кто (боты, сети, IP) нагружает сайт.","https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins\u002Fblob\u002Fmaster\u002Fplugins\u002Fdeveloper\u002Fskills\u002Ftopsrv\u002FSKILL.md",[],[75,80,81,60,82,83,70,84,59,85,86,87,58,88],"CPU","postgresql","cve","nginx","Bash","ip","app","io","http",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":100,"publishedAt":23},"01M6MX2XFXCHNRPPW6WYZ15BXN","testing","Testing — используй всегда, когда пишешь или правишь Go-тесты (*_test.go), в том числе по сценариям Given\u002FWhen\u002FThen из spec: фреймворк как в соседних файлах, префикс TestDB, фабрики pkg\u002Fdb\u002Ftest, реальная БД без моков. Также при настройке TestMain\u002Ftest-short и когда тесты падают в gate, но проходят локально.","https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins\u002Fblob\u002Fmaster\u002Fplugins\u002Fdeveloper\u002Fskills\u002Ftesting\u002FSKILL.md",[95],{"categoryNo":96,"categoryName":97,"taxonomyType":98,"taxonomyTypeDesc":99},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[91,101,102,57,103,104,105],"gate","spec","test","short","db",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":23},"01M6MX2P8RFYPV4EXRMVW6KAN7","solve","Solve — полный цикл решения задачи из YouTrack: preflight → анализ → план → реализация → ревью → коммит. Используй при любой YouTrack-задаче (`\u002Fsolve PLF-819`); флаг `--fast` сокращает HITL для тривиальных багфиксов.","https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins\u002Fblob\u002Fmaster\u002Fplugins\u002Fdeveloper\u002Fskills\u002Fsolve\u002FSKILL.md",[],[108,113,114,115,116,117,63],"fast","preflight","task","hitl","id",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":23},"01M6MX2H6TF2VW75PCPGWR2SKZ","skills-check","Skills Check — smoke-тесты интеграций из project-index.md. Используй для проверки что pcurl-профили и URL всех data-source скиллов ещё живы.","https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins\u002Fblob\u002Fmaster\u002Fplugins\u002Fdeveloper\u002Fskills\u002Fskills-check\u002FSKILL.md",[],[125,126,127,84,128,129,21,130,131,132,22,133,134,18],"skills check","check","data","smoke","probe","false","URL","data-source","source","fork"]