[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MWYY0WN16EMPFN5GBGSJ2Z":3,"skill-same:01M6MWYY0WN16EMPFN5GBGSJ2Z":53},{"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":26,"linkOnly":27,"markdownContent":28,"markdownBody":29,"frontMatter":30,"refName":32,"commitSha":33,"skillDirectory":34,"forksCount":35,"repositoryHtmlUrl":36,"repositoryHomepageUrl":6,"ownerHtmlUrl":37,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":38,"install":39,"resources":52},"01M6MWYY0WN16EMPFN5GBGSJ2Z","commit-msg",null,"Commit message — краткое сообщение коммита на английском из git diff. Используй перед `git commit`, после \u002Fsolve, или при явной просьбе 'сгенерируй commit message'.","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\u002Fcommit-msg\u002FSKILL.md",[],[18,19,20,21,22,23,24,25],"commit","commit msg","git commit","git","commit message","diff","solve","message","2026-11-10 10:12:30",false,"---\nname: commit-msg\ndescription: \"Commit message — краткое сообщение коммита на английском из git diff. Используй перед `git commit`, после \u002Fsolve, или при явной просьбе 'сгенерируй commit message'.\"\neffort: low\n---\n\nGenerate a concise commit message in English from all current changes: staged, unstaged, and new files.\n\n0. Format and lint first, only when the project supports it: if `make -n fmt lint >\u002Fdev\u002Fnull 2>&1` succeeds (a Makefile with both targets exists), run `make fmt lint` — formatting can change files, so read the diff after it. No Makefile or no such targets — skip with one line saying so. Skip it too if fmt and lint already passed after the last code change (for example, \u002Fsolve just ran them). If lint fails, don't fix the code in this step and don't stop: write the message anyway and list the lint errors after it.\n1. Run `git diff --cached`, `git diff` and `git status --short`. Untracked files don't appear in diffs — read new files that will be committed. If only part of the changes is staged, say which files are not staged.\n2. Subject line: the ticket ID from the branch name (if present), a space, then the summary: `PLF-852 Add ...`. The summary is at most 50 characters, not counting the ticket prefix; the whole line never exceeds 72. Capitalized, no period at the end, imperative mood (\"Add\", \"Fix\", \"Remove\" — not \"Added\", \"Fixed\").\n3. If the summary doesn't fit, keep the main change in the subject and move the rest to the body.\n4. Separate subject from body with a blank line.\n5. Body: bullet points on what changed and why (not how), wrapped at 72 chars. Group related changes, mention bug fixes with \"Fix\".\n6. Output only the commit message, plus the lint errors from step 0 if there were any.\n\nStyle follows https:\u002F\u002Fcbea.ms\u002Fgit-commit\u002F.\n\nExample:\n```\nPLF-819 Add user validation for order creation\n\n- Add email format and phone length validation in pkg\u002Fvt\u002Forder.go\n- Fix missing nil check for optional DeliveryAddress field\n- Update OrderSearch with new CreatedAtFrom\u002FCreatedAtTo filters\n- Regenerate zenrpc and mfd-model after schema changes\n```\n","Generate a concise commit message in English from all current changes: staged, unstaged, and new files.\n\n0. Format and lint first, only when the project supports it: if `make -n fmt lint >\u002Fdev\u002Fnull 2>&1` succeeds (a Makefile with both targets exists), run `make fmt lint` — formatting can change files, so read the diff after it. No Makefile or no such targets — skip with one line saying so. Skip it too if fmt and lint already passed after the last code change (for example, \u002Fsolve just ran them). If lint fails, don't fix the code in this step and don't stop: write the message anyway and list the lint errors after it.\n1. Run `git diff --cached`, `git diff` and `git status --short`. Untracked files don't appear in diffs — read new files that will be committed. If only part of the changes is staged, say which files are not staged.\n2. Subject line: the ticket ID from the branch name (if present), a space, then the summary: `PLF-852 Add ...`. The summary is at most 50 characters, not counting the ticket prefix; the whole line never exceeds 72. Capitalized, no period at the end, imperative mood (\"Add\", \"Fix\", \"Remove\" — not \"Added\", \"Fixed\").\n3. If the summary doesn't fit, keep the main change in the subject and move the rest to the body.\n4. Separate subject from body with a blank line.\n5. Body: bullet points on what changed and why (not how), wrapped at 72 chars. Group related changes, mention bug fixes with \"Fix\".\n6. Output only the commit message, plus the lint errors from step 0 if there were any.\n\nStyle follows https:\u002F\u002Fcbea.ms\u002Fgit-commit\u002F.\n\nExample:\n```\nPLF-819 Add user validation for order creation\n\n- Add email format and phone length validation in pkg\u002Fvt\u002Forder.go\n- Fix missing nil check for optional DeliveryAddress field\n- Update OrderSearch with new CreatedAtFrom\u002FCreatedAtTo filters\n- Regenerate zenrpc and mfd-model after schema changes\n```\n",{"name":5,"effort":31,"description":7},"low","master","8f3147ce24a1a470d9aaa02aa775d7797d621d95","plugins\u002Fdeveloper\u002Fskills\u002Fcommit-msg",1,"https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins","https:\u002F\u002Fgithub.com\u002Fvmkteam","2026-11-05 00:26:25",{"source":8,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add vmkteam\u002Fclaude-plugins --skill commit-msg",{"tool":45,"command":46},"bunx","bunx skills add vmkteam\u002Fclaude-plugins --skill commit-msg",{"tool":48,"command":49},"pnpm","pnpm dlx skills add vmkteam\u002Fclaude-plugins --skill commit-msg","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins\u002Fblob\u002Fmaster\u002Fplugins\u002Fdeveloper\u002Fskills\u002Fcommit-msg\u002FSKILL.md",true,[],[54,65,77,93,110,121],{"skillNo":55,"name":56,"nameZh":6,"description":57,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":60,"publishedAt":26},"01M6MX3A8MZJBTMMK6WMY35FYH","zenrpc","Zenrpc — справочник по JSON-RPC 2.0 серверу для Go. Используй при создании и редактировании RPC-сервисов.","https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins\u002Fblob\u002Fmaster\u002Fplugins\u002Fdeveloper\u002Fskills\u002Fzenrpc\u002FSKILL.md",[],[56,61,62,63,64],"go","json-rpc","json","rpc",{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":26},"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",[],[67,72,73,74,75,76],"issues","REST","api","stage","rest api",{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":26},"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",[],[79,84,85,64,86,87,74,88,63,89,90,91,62,92],"CPU","postgresql","cve","nginx","Bash","ip","app","io","http",{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":104,"publishedAt":26},"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",[99],{"categoryNo":100,"categoryName":101,"taxonomyType":102,"taxonomyTypeDesc":103},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[95,105,106,61,107,108,109],"gate","spec","test","short","db",{"skillNo":111,"name":24,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":26},"01M6MX2P8RFYPV4EXRMVW6KAN7","Solve — полный цикл решения задачи из YouTrack: preflight → анализ → план → реализация → ревью → коммит. Используй при любой YouTrack-задаче (`\u002Fsolve PLF-819`); флаг `--fast` сокращает HITL для тривиальных багфиксов.","https:\u002F\u002Fgithub.com\u002Fvmkteam\u002Fclaude-plugins\u002Fblob\u002Fmaster\u002Fplugins\u002Fdeveloper\u002Fskills\u002Fsolve\u002FSKILL.md",[],[24,116,117,118,119,120,67],"fast","preflight","task","hitl","id",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":127,"publishedAt":26},"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",[],[128,129,130,88,131,132,133,134,135,136,137,138,139,140],"skills check","check","data","smoke","probe","project","false","URL","data-source","true","source","fork","index"]