[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MX09FT1TP79FQJ3GD1BBK6":3,"skill-same:01M6MX09FT1TP79FQJ3GD1BBK6":55},{"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":27,"linkOnly":28,"markdownContent":29,"markdownBody":30,"frontMatter":31,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":37,"repositoryHtmlUrl":38,"repositoryHomepageUrl":6,"ownerHtmlUrl":39,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":40,"install":41,"resources":54},"01M6MX09FT1TP79FQJ3GD1BBK6","investigate",null,"Investigate — расследование проблемы по всем data sources (Sentry, Prometheus, Loki, Kibana, Nomad). Используй когда есть симптом (ошибка, деградация, аномалия), но причина неизвестна, а полноценный \u002Fincident избыточен.","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\u002Finvestigate\u002FSKILL.md",[],[5,18,19,20,21,22,23,24,25,26],"sentry","prometheus","data","kibana","Bash","incident","loki","sources","nomad","2026-11-10 10:12:30",false,"---\nname: investigate\ndescription: \"Investigate — расследование проблемы по всем data sources (Sentry, Prometheus, Loki, Kibana, Nomad). Используй когда есть симптом (ошибка, деградация, аномалия), но причина неизвестна, а полноценный \u002Fincident избыточен.\"\nargument-hint: \"[описание проблемы, период, сервис]\"\nallowed-tools: \"Bash(pcurl:*)\"\n---\n\n# \u002Finvestigate — расследование проблемы\n\nНайти причину симптома и подтвердить её данными из всех доступных источников. Какие источники есть — зависит от стадии проекта; подключения — из `project-index.md` в auto-memory проекта и `~\u002F.claude\u002Fmemory\u002Finfra-{group}.md`.\n\nПримеры запросов: «API тормозит», «500 ошибки на \u002Frpc\u002F», «у пользователя не работает X», «что-то сломалось после деплоя».\n\n> Для полного workflow production-инцидента с HITL, mitigation и post-mortem — `\u002Fincident`.\n\n## Входные данные\n\n- Описание проблемы (свободный текст)\n- Период — по умолчанию последний час\n- Сервис — по умолчанию все из project-index\n\n## Как расследовать\n\nЦель — гипотеза о root cause, подтверждённая данными, либо честный вывод, что данных не хватает. Остановись, когда причина подтверждена двумя независимыми источниками (например, всплеск в Sentry и рост error rate в Prometheus в то же время) или когда все доступные источники проверены.\n\n1. **Scope.** Из описания извлеки время начала, сервис, конкретный RPC-метод или URL и ключевые слова для поиска.\n2. **Жив ли сервис** (\u002Fapi-health) — первым делом:\n   ```bash\n   pcurl @{api_prod_profile} https:\u002F\u002F{api_prod_host}\u002F{rpc_endpoint} -s -L -X POST \\\n     -H 'Content-Type: application\u002Fjson' \\\n     -d '{\"jsonrpc\":\"2.0\",\"method\":\"{known_method}\",\"params\":{},\"id\":1}' \\\n     -w '\\nHTTP %{http_code} | Total: %{time_total}s | TTFB: %{time_starttransfer}s\\n'\n   ```\n   Не отвечает — сразу к Nomad.\n3. **Источники — параллельно.** Начни с одного-двух обзорных запросов к каждому и углубляйся туда, где есть сигнал. Источник без аномалий в отчёте — одной строкой.\n4. **Деплои.** Сопоставь начало проблемы с деплоями (Sentry releases, Grafana annotations). Недавний деплой — посмотри, что в нём изменилось.\n5. **Код.** Есть гипотеза (stacktrace, подозрительный метод) — найди код локально и сверяй с задеплоенной версией (commit из Sentry release), а не с HEAD: `git diff {release_commit}..HEAD --stat`.\n6. **Отчёт** — сохрани в `docs\u002Fllm\u002Fincidents\u002F{YYYY-MM-DD}-{slug}\u002Freport.md` и покажи. Если запись файлов недоступна (plan mode — например, вызов из ANALYZE в \u002Fsolve), верни отчёт целиком текстом: его сохранит вызывающий скилл.\n\n## Источники\n\n**Sentry** (\u002Fsentry): unresolved issues за период по частоте; новые issues (firstSeen в периоде); поиск по ключевым словам. Для top-3 — latest event (stacktrace, breadcrumbs).\n\n**Prometheus** (\u002Fprometheus): RPC error rate и HTTP 5xx; latency по методам (средняя, top медленных); RPS в сравнении с обычным уровнем; saturation — goroutines, память, DB connections.\n\n**Loki** (\u002Floki): ошибки сервиса (`| json | level=\"ERROR\"`), логи конкретного метода, медленные запросы (`durationMS > 500`), записи с ошибкой (`err!=\"\u003Cnil>\"`).\n\n**Nomad** (\u002Fnomad): инфраструктурные причины — OOM kills (`increase(nomad_client_allocs_oom_killed[{period}])`), рестарты (`increase(nomad_client_allocs_restart[{period}])`), blocked allocations, ресурсы нод.\n\n**Kibana \u002F OpenSearch** (\u002Fkibana, если есть): 5xx и медленные запросы (`requestTime > 1`) в nginx-access, записи nginx-error.\n\n**Grafana** (\u002Fgrafana): annotations за период (деплои, инциденты) и ссылки на дашборды:\n```bash\npcurl @{grafana_profile} 'https:\u002F\u002F{grafana_host}\u002Fapi\u002Fannotations?from='$(date -v-{period} +%s)000'&to='$(date +%s)000'&limit=20' -s\n```\n\n**Зависимые сервисы** — из секции «Связанные сервисы» project-index: есть ли в тот же период ошибки в Sentry и рост error rate у них.\n\n**YouTrack** (\u002Fyoutrack): возможно, проблема уже известна:\n```bash\npcurl @{yt_profile} 'https:\u002F\u002F{yt_host}\u002Fapi\u002Fissues?query=project:{PROJECT}+{keywords}&fields=idReadable,summary&$top=5' -s\n```\n\n## Формат отчёта\n\nСекции для недоступных источников и источников без аномалий не раздувай — одна строка «проверено, аномалий нет» или «нет доступа».\n\n```markdown\n## Incident Report\n\n**Время:** {start} — {end}\n**Severity:** Critical \u002F High \u002F Medium \u002F Low\n**Affected:** {services}, {endpoints}\n\n### Root Cause\n{гипотеза и данные, которые её подтверждают; что осталось неподтверждённым}\n\n### Timeline\n- HH:MM — Release {version} deployed\n- HH:MM — Error rate started growing\n- HH:MM — First user reports\n\n### Здоровье\n- API: {alive\u002Fdown}, latency: {time}s\n- Nomad: OOM={count}, restarts={count}, blocked={count}\n\n### Ошибки (Sentry)\n| # | Issue | Events | Users | Trend |\n|---|-------|--------|-------|-------|\n\n### Метрики (Prometheus)\n- Error rate: {current}% (обычно {baseline}%)\n- Latency: {current}ms (обычно {baseline}ms)\n- Throughput: {current} RPS (обычно {baseline} RPS)\n- Goroutines: {current} | Memory: {current} | DB conns: {current}\n\n### Логи (Loki, Kibana)\n- {количество ошибок, top сообщений, 5xx и медленные запросы в nginx}\n\n### Зависимые сервисы\n| Сервис | Sentry errors | Error rate |\n|--------|---------------|------------|\n\n### Деплои\n- Последний деплой: {version} в {time}\n\n### Ссылки\n- [Sentry issues]({url})\n- [Grafana dashboard]({url})\n- [YouTrack]({url}) — если найден существующий тикет\n\n### Рекомендации\n- {action items}\n- Тикет в YouTrack: {нужен \u002F уже есть {ID}}\n```\n\n## Правила\n\n- Используй только системы, доступные на стадии проекта (из project-index)\n- Данных мало — так и скажи, не додумывай\n- В отчёте — прямые ссылки на дашборды и issues\n- Проблема подтверждена, а тикета нет — предложи создать его в YouTrack\n","# \u002Finvestigate — расследование проблемы\n\nНайти причину симптома и подтвердить её данными из всех доступных источников. Какие источники есть — зависит от стадии проекта; подключения — из `project-index.md` в auto-memory проекта и `~\u002F.claude\u002Fmemory\u002Finfra-{group}.md`.\n\nПримеры запросов: «API тормозит», «500 ошибки на \u002Frpc\u002F», «у пользователя не работает X», «что-то сломалось после деплоя».\n\n> Для полного workflow production-инцидента с HITL, mitigation и post-mortem — `\u002Fincident`.\n\n## Входные данные\n\n- Описание проблемы (свободный текст)\n- Период — по умолчанию последний час\n- Сервис — по умолчанию все из project-index\n\n## Как расследовать\n\nЦель — гипотеза о root cause, подтверждённая данными, либо честный вывод, что данных не хватает. Остановись, когда причина подтверждена двумя независимыми источниками (например, всплеск в Sentry и рост error rate в Prometheus в то же время) или когда все доступные источники проверены.\n\n1. **Scope.** Из описания извлеки время начала, сервис, конкретный RPC-метод или URL и ключевые слова для поиска.\n2. **Жив ли сервис** (\u002Fapi-health) — первым делом:\n   ```bash\n   pcurl @{api_prod_profile} https:\u002F\u002F{api_prod_host}\u002F{rpc_endpoint} -s -L -X POST \\\n     -H 'Content-Type: application\u002Fjson' \\\n     -d '{\"jsonrpc\":\"2.0\",\"method\":\"{known_method}\",\"params\":{},\"id\":1}' \\\n     -w '\\nHTTP %{http_code} | Total: %{time_total}s | TTFB: %{time_starttransfer}s\\n'\n   ```\n   Не отвечает — сразу к Nomad.\n3. **Источники — параллельно.** Начни с одного-двух обзорных запросов к каждому и углубляйся туда, где есть сигнал. Источник без аномалий в отчёте — одной строкой.\n4. **Деплои.** Сопоставь начало проблемы с деплоями (Sentry releases, Grafana annotations). Недавний деплой — посмотри, что в нём изменилось.\n5. **Код.** Есть гипотеза (stacktrace, подозрительный метод) — найди код локально и сверяй с задеплоенной версией (commit из Sentry release), а не с HEAD: `git diff {release_commit}..HEAD --stat`.\n6. **Отчёт** — сохрани в `docs\u002Fllm\u002Fincidents\u002F{YYYY-MM-DD}-{slug}\u002Freport.md` и покажи. Если запись файлов недоступна (plan mode — например, вызов из ANALYZE в \u002Fsolve), верни отчёт целиком текстом: его сохранит вызывающий скилл.\n\n## Источники\n\n**Sentry** (\u002Fsentry): unresolved issues за период по частоте; новые issues (firstSeen в периоде); поиск по ключевым словам. Для top-3 — latest event (stacktrace, breadcrumbs).\n\n**Prometheus** (\u002Fprometheus): RPC error rate и HTTP 5xx; latency по методам (средняя, top медленных); RPS в сравнении с обычным уровнем; saturation — goroutines, память, DB connections.\n\n**Loki** (\u002Floki): ошибки сервиса (`| json | level=\"ERROR\"`), логи конкретного метода, медленные запросы (`durationMS > 500`), записи с ошибкой (`err!=\"\u003Cnil>\"`).\n\n**Nomad** (\u002Fnomad): инфраструктурные причины — OOM kills (`increase(nomad_client_allocs_oom_killed[{period}])`), рестарты (`increase(nomad_client_allocs_restart[{period}])`), blocked allocations, ресурсы нод.\n\n**Kibana \u002F OpenSearch** (\u002Fkibana, если есть): 5xx и медленные запросы (`requestTime > 1`) в nginx-access, записи nginx-error.\n\n**Grafana** (\u002Fgrafana): annotations за период (деплои, инциденты) и ссылки на дашборды:\n```bash\npcurl @{grafana_profile} 'https:\u002F\u002F{grafana_host}\u002Fapi\u002Fannotations?from='$(date -v-{period} +%s)000'&to='$(date +%s)000'&limit=20' -s\n```\n\n**Зависимые сервисы** — из секции «Связанные сервисы» project-index: есть ли в тот же период ошибки в Sentry и рост error rate у них.\n\n**YouTrack** (\u002Fyoutrack): возможно, проблема уже известна:\n```bash\npcurl @{yt_profile} 'https:\u002F\u002F{yt_host}\u002Fapi\u002Fissues?query=project:{PROJECT}+{keywords}&fields=idReadable,summary&$top=5' -s\n```\n\n## Формат отчёта\n\nСекции для недоступных источников и источников без аномалий не раздувай — одна строка «проверено, аномалий нет» или «нет доступа».\n\n```markdown\n## Incident Report\n\n**Время:** {start} — {end}\n**Severity:** Critical \u002F High \u002F Medium \u002F Low\n**Affected:** {services}, {endpoints}\n\n### Root Cause\n{гипотеза и данные, которые её подтверждают; что осталось неподтверждённым}\n\n### Timeline\n- HH:MM — Release {version} deployed\n- HH:MM — Error rate started growing\n- HH:MM — First user reports\n\n### Здоровье\n- API: {alive\u002Fdown}, latency: {time}s\n- Nomad: OOM={count}, restarts={count}, blocked={count}\n\n### Ошибки (Sentry)\n| # | Issue | Events | Users | Trend |\n|---|-------|--------|-------|-------|\n\n### Метрики (Prometheus)\n- Error rate: {current}% (обычно {baseline}%)\n- Latency: {current}ms (обычно {baseline}ms)\n- Throughput: {current} RPS (обычно {baseline} RPS)\n- Goroutines: {current} | Memory: {current} | DB conns: {current}\n\n### Логи (Loki, Kibana)\n- {количество ошибок, top сообщений, 5xx и медленные запросы в nginx}\n\n### Зависимые сервисы\n| Сервис | Sentry errors | Error rate |\n|--------|---------------|------------|\n\n### Деплои\n- Последний деплой: {version} в {time}\n\n### Ссылки\n- [Sentry issues]({url})\n- [Grafana dashboard]({url})\n- [YouTrack]({url}) — если найден существующий тикет\n\n### Рекомендации\n- {action items}\n- Тикет в YouTrack: {нужен \u002F уже есть {ID}}\n```\n\n## Правила\n\n- Используй только системы, доступные на стадии проекта (из project-index)\n- Данных мало — так и скажи, не додумывай\n- В отчёте — прямые ссылки на дашборды и issues\n- Проблема подтверждена, а тикета нет — предложи создать его в YouTrack\n",{"name":5,"description":7,"allowed-tools":32,"argument-hint":33},"Bash(pcurl:*)","[описание проблемы, период, сервис]","master","8f3147ce24a1a470d9aaa02aa775d7797d621d95","plugins\u002Fdeveloper\u002Fskills\u002Finvestigate",1,"https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins","https:\u002F\u002Fgithub.com\u002Fvmkteam","2026-11-05 00:26:25",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add vmkteam\u002Fclaude-plugins --skill investigate",{"tool":47,"command":48},"bunx","bunx skills add vmkteam\u002Fclaude-plugins --skill investigate",{"tool":50,"command":51},"pnpm","pnpm dlx skills add vmkteam\u002Fclaude-plugins --skill investigate","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins\u002Fblob\u002Fmaster\u002Fplugins\u002Fdeveloper\u002Fskills\u002Finvestigate\u002FSKILL.md",true,[],[56,67,79,94,111,123],{"skillNo":57,"name":58,"nameZh":6,"description":59,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":60,"categories":61,"keywords":62,"publishedAt":27},"01M6MX3A8MZJBTMMK6WMY35FYH","zenrpc","Zenrpc — справочник по JSON-RPC 2.0 серверу для Go. Используй при создании и редактировании RPC-сервисов.","https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins\u002Fblob\u002Fmaster\u002Fplugins\u002Fdeveloper\u002Fskills\u002Fzenrpc\u002FSKILL.md",[],[58,63,64,65,66],"go","json-rpc","json","rpc",{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":27},"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",[],[69,74,75,76,77,78],"issues","REST","api","stage","rest api",{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":27},"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",[],[81,86,87,66,88,89,76,22,65,90,91,92,64,93],"CPU","postgresql","cve","nginx","ip","app","io","http",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":105,"publishedAt":27},"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",[100],{"categoryNo":101,"categoryName":102,"taxonomyType":103,"taxonomyTypeDesc":104},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[96,106,107,63,108,109,110],"gate","spec","test","short","db",{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":117,"publishedAt":27},"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",[],[113,118,119,120,121,122,69],"fast","preflight","task","hitl","id",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":27},"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",[],[130,131,20,22,132,133,134,135,136,137,138,139,140,141],"skills check","check","smoke","probe","project","false","URL","data-source","true","source","fork","index"]