[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MWYDDP4SW2T521MNVNEY8G":3,"skill-same:01M6MWYDDP4SW2T521MNVNEY8G":61},{"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":27,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":6,"ownerHtmlUrl":45,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":46,"install":47,"resources":60},"01M6MWYDDP4SW2T521MNVNEY8G","api-health",null,"API Health — проверка здоровья JSON-RPC сервиса через SMD. Используй когда нужно убедиться что RPC-endpoint жив, собрать тайминги методов или диагностировать недоступность API.","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\u002Fapi-health\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[28,29,30,31,32,33,34],"api","health","api health","rpc","endpoint","json","json-rpc","2026-11-10 10:12:30",false,"---\nname: api-health\ndescription: \"API Health — проверка здоровья JSON-RPC сервиса через SMD. Используй когда нужно убедиться что RPC-endpoint жив, собрать тайминги методов или диагностировать недоступность API.\"\n---\n\n# API Health — проверка JSON-RPC сервисов\n\nПроверка здоровья API и тестовые запросы к JSON-RPC (zenrpc) сервисам.\n\n## Подключение\n\n```\nProfile: @{api_prod_profile} (production), @{api_dev_profile} (staging)\nAPI type: JSON-RPC 2.0 (zenrpc)\nRPC endpoint: определяется при онбординге (может быть \u002Frpc\u002F, \u002Fv1\u002Frpc\u002F, \u002Fv3\u002Frpc\u002F и т.д.)\n```\n\n> Особенности:\n> - `\u002Fstatus` и `\u002Fhealthcheck` обычно скрыты за firewall, недоступны снаружи\n> - SMD (GET на RPC endpoint) может не работать через reverse proxy (фронтенд перехватывает GET)\n> - RPC endpoint может быть версионирован: `\u002Fv1\u002Frpc\u002F`, `\u002Fv3\u002Frpc\u002F` — уточнять при онбординге\n\n## Команды pcurl\n\n### JSON-RPC запрос\n```bash\npcurl @{profile} https:\u002F\u002F{host}\u002F{rpc_endpoint} -s -L -X POST \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"{namespace.method}\",\"params\":{params},\"id\":1}'\n```\n\n### С таймингами\n```bash\npcurl @{profile} https:\u002F\u002F{host}\u002F{rpc_endpoint} -s -L -X POST \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"{namespace.method}\",\"params\":{params},\"id\":1}' \\\n  -w '\\n---\\nHTTP %{http_code} | Time: %{time_total}s | TTFB: %{time_starttransfer}s | Size: %{size_download}b\\n'\n```\n\n### Только тайминги\n```bash\npcurl @{profile} https:\u002F\u002F{host}\u002F{rpc_endpoint} -s -o \u002Fdev\u002Fnull -X POST \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"{namespace.method}\",\"params\":{params},\"id\":1}' \\\n  -w 'HTTP %{http_code} | Total: %{time_total}s | TTFB: %{time_starttransfer}s\\n'\n```\n\n### SMD (Service Mapping Description)\n```bash\n# SMD доступен через ?smd query parameter\npcurl @{profile} 'https:\u002F\u002F{host}\u002F{rpc_endpoint}?smd' -s -L\n\n# SMDBox UI (документация в браузере)\n# https:\u002F\u002F{host}\u002F{rpc_endpoint}doc\u002F\n```\n\n## JSON-RPC 2.0 формат\n\nЗапрос:\n```json\n{\"jsonrpc\": \"2.0\", \"method\": \"namespace.method\", \"params\": {\"key\": \"value\"}, \"id\": 1}\n```\n\nУспех:\n```json\n{\"jsonrpc\": \"2.0\", \"result\": {...}, \"id\": 1}\n```\n\nОшибка (HTTP 200, но error в body!):\n```json\n{\"jsonrpc\": \"2.0\", \"error\": {\"code\": -32600, \"message\": \"Invalid Request\"}, \"id\": 1}\n```\n\n### Стандартные коды ошибок zenrpc\n- `-32700` — Parse error\n- `-32600` — Invalid Request\n- `-32601` — Method not found\n- `-32602` — Invalid params\n- `-32603` — Internal error\n- `400` — Bad Request (валидация)\n- `401` — Unauthorized (Invalid token)\n- `403` — Forbidden\n- `404` — Not Found\n- `500` — Internal Error\n","# API Health — проверка JSON-RPC сервисов\n\nПроверка здоровья API и тестовые запросы к JSON-RPC (zenrpc) сервисам.\n\n## Подключение\n\n```\nProfile: @{api_prod_profile} (production), @{api_dev_profile} (staging)\nAPI type: JSON-RPC 2.0 (zenrpc)\nRPC endpoint: определяется при онбординге (может быть \u002Frpc\u002F, \u002Fv1\u002Frpc\u002F, \u002Fv3\u002Frpc\u002F и т.д.)\n```\n\n> Особенности:\n> - `\u002Fstatus` и `\u002Fhealthcheck` обычно скрыты за firewall, недоступны снаружи\n> - SMD (GET на RPC endpoint) может не работать через reverse proxy (фронтенд перехватывает GET)\n> - RPC endpoint может быть версионирован: `\u002Fv1\u002Frpc\u002F`, `\u002Fv3\u002Frpc\u002F` — уточнять при онбординге\n\n## Команды pcurl\n\n### JSON-RPC запрос\n```bash\npcurl @{profile} https:\u002F\u002F{host}\u002F{rpc_endpoint} -s -L -X POST \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"{namespace.method}\",\"params\":{params},\"id\":1}'\n```\n\n### С таймингами\n```bash\npcurl @{profile} https:\u002F\u002F{host}\u002F{rpc_endpoint} -s -L -X POST \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"{namespace.method}\",\"params\":{params},\"id\":1}' \\\n  -w '\\n---\\nHTTP %{http_code} | Time: %{time_total}s | TTFB: %{time_starttransfer}s | Size: %{size_download}b\\n'\n```\n\n### Только тайминги\n```bash\npcurl @{profile} https:\u002F\u002F{host}\u002F{rpc_endpoint} -s -o \u002Fdev\u002Fnull -X POST \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"jsonrpc\":\"2.0\",\"method\":\"{namespace.method}\",\"params\":{params},\"id\":1}' \\\n  -w 'HTTP %{http_code} | Total: %{time_total}s | TTFB: %{time_starttransfer}s\\n'\n```\n\n### SMD (Service Mapping Description)\n```bash\n# SMD доступен через ?smd query parameter\npcurl @{profile} 'https:\u002F\u002F{host}\u002F{rpc_endpoint}?smd' -s -L\n\n# SMDBox UI (документация в браузере)\n# https:\u002F\u002F{host}\u002F{rpc_endpoint}doc\u002F\n```\n\n## JSON-RPC 2.0 формат\n\nЗапрос:\n```json\n{\"jsonrpc\": \"2.0\", \"method\": \"namespace.method\", \"params\": {\"key\": \"value\"}, \"id\": 1}\n```\n\nУспех:\n```json\n{\"jsonrpc\": \"2.0\", \"result\": {...}, \"id\": 1}\n```\n\nОшибка (HTTP 200, но error в body!):\n```json\n{\"jsonrpc\": \"2.0\", \"error\": {\"code\": -32600, \"message\": \"Invalid Request\"}, \"id\": 1}\n```\n\n### Стандартные коды ошибок zenrpc\n- `-32700` — Parse error\n- `-32600` — Invalid Request\n- `-32601` — Method not found\n- `-32602` — Invalid params\n- `-32603` — Internal error\n- `400` — Bad Request (валидация)\n- `401` — Unauthorized (Invalid token)\n- `403` — Forbidden\n- `404` — Not Found\n- `500` — Internal Error\n",{"name":5,"description":7},"master","8f3147ce24a1a470d9aaa02aa775d7797d621d95","plugins\u002Fdeveloper\u002Fskills\u002Fapi-health",1,"https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins","https:\u002F\u002Fgithub.com\u002Fvmkteam","2026-11-05 00:26:25",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add vmkteam\u002Fclaude-plugins --skill api-health",{"tool":53,"command":54},"bunx","bunx skills add vmkteam\u002Fclaude-plugins --skill api-health",{"tool":56,"command":57},"pnpm","pnpm dlx skills add vmkteam\u002Fclaude-plugins --skill api-health","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins\u002Fblob\u002Fmaster\u002Fplugins\u002Fdeveloper\u002Fskills\u002Fapi-health\u002FSKILL.md",true,[],[62,70,81,97,112,124],{"skillNo":63,"name":64,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":68,"publishedAt":35},"01M6MX3A8MZJBTMMK6WMY35FYH","zenrpc","Zenrpc — справочник по JSON-RPC 2.0 серверу для Go. Используй при создании и редактировании RPC-сервисов.","https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins\u002Fblob\u002Fmaster\u002Fplugins\u002Fdeveloper\u002Fskills\u002Fzenrpc\u002FSKILL.md",[],[64,69,34,33,31],"go",{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":35},"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",[],[72,77,78,28,79,80],"issues","REST","stage","rest api",{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":35},"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",[],[83,88,89,31,90,91,28,92,33,93,94,95,34,96],"CPU","postgresql","cve","nginx","Bash","ip","app","io","http",{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":106,"publishedAt":35},"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",[103],{"categoryNo":104,"categoryName":105,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量",[99,107,108,69,109,110,111],"gate","spec","test","short","db",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":35},"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",[],[114,119,120,121,122,123,72],"fast","preflight","task","hitl","id",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":35},"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",[],[131,132,133,92,134,135,136,137,138,139,140,141,142,143],"skills check","check","data","smoke","probe","project","false","URL","data-source","true","source","fork","index"]