{"id":481591,"date":"2026-05-29T12:30:39","date_gmt":"2026-05-29T12:30:39","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=481591"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=481591","title":{"rendered":"\u042f \u0437\u0430\u043b\u0435\u0437 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 Claude Code. \u0424\u0438\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0442 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/07e\/856\/aa8\/07e856aa831792669116af3f4625972e.png\" width=\"1920\" height=\"1035\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/07e\/856\/aa8\/07e856aa831792669116af3f4625972e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/07e\/856\/aa8\/07e856aa831792669116af3f4625972e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<details class=\"spoiler\">\n<summary>\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043e\u0442 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0430 \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440\u0430 \u0428\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0430<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 Claude Code. \u041d\u043e \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0437\u0430\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0444\u0438\u0447\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0430 \u0437\u0430\u0432\u0442\u0440\u0430 \u0443\u0436\u0435 \u043d\u0435\u0442. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441 \u043a\u043b\u043e\u0434\u043e\u043c \u043e\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435 \u0437\u0430\u0441\u0442\u0440\u0430\u0445\u043e\u0432\u0430\u043d \u043d\u0438\u043a\u0442\u043e, \u0432\u0435\u0434\u044c \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u043f\u043e \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u0438\u044e Anthropic, \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u0438\u043c Claude Code.<\/p>\n<\/div>\n<\/details>\n<p><em>\u041f\u043e\u043b\u044f hooks, \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430 \u043b\u0435\u0442\u0443, \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u043e\u0432, \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0430\u0432\u0442\u043e-\u0440\u0435\u0436\u0438\u043c\u0430 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c, \u0441\u0430\u043c\u043e\u0443\u043b\u0443\u0447\u0448\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0446\u0438\u043a\u043b\u044b \u00ab\u0441\u043d\u043e\u0432\u00bb \u2014 \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0433\u043e\u0442\u043e\u0432 \u043a \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e.<\/em><\/p>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0430\u0432\u0442\u043e-\u0440\u0435\u0436\u0438\u043c\u0430 Claude Code \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u00abYOLO Classifier\u00bb. \u042d\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432 <em>yoloClassifier.ts<\/em>. \u0418 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u043c\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u2014 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0432\u0440\u043e\u0434\u0435 \u00ab\u044d\u0442\u043e staging-\u0441\u0435\u0440\u0432\u0435\u0440, \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u00bb, \u2014 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0447\u0438\u0442\u0430\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c, \u0447\u0442\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u043e\u0434\u043e\u0431\u0440\u044f\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u042d\u0442\u043e\u0433\u043e \u043d\u0435\u0442 \u043d\u0438 \u0432 \u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.<\/p>\n<p>\u042d\u0442\u043e \u043b\u0438\u0448\u044c \u043e\u0434\u043d\u0430 \u0438\u0437 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043d\u0435\u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u0437\u0430\u0440\u044b\u0442\u044b\u0445 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 Claude Code, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u0435\u0436\u0438\u0442 \u043f\u0440\u044f\u043c\u043e \u0443 \u0432\u0430\u0441 \u0432 <em>node_modules<\/em> \u043a\u0430\u043a \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c\u044b\u0439 npm-\u043f\u0430\u043a\u0435\u0442. \u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u044b. \u041d\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u044f, \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0434\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0442 \u0442\u043e, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c. \u0412\u0441\u0451, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043a\u0430\u043a \u0435\u0441\u0442\u044c.<\/p>\n<p>\u0417\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043e \u0432\u0435\u0440\u0441\u0438\u044f\u0445: \u0432\u0441\u0435 \u043d\u0430\u0445\u043e\u0434\u043a\u0438 \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u043d\u0430 <code>@anthropic-ai\/claude-code@2.1.87<\/code>. \u041d\u0435\u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0438\u0447\u0438 \u043c\u043e\u0433\u0443\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043e\u0442 \u0440\u0435\u043b\u0438\u0437\u0430 \u043a \u0440\u0435\u043b\u0438\u0437\u0443, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u0441\u044c \u043a \u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u043a \u043a \u0441\u043d\u0438\u043c\u043a\u0443 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f. \u041f\u043e\u043b\u044f \u0441\u043e \u0441\u043b\u043e\u0432\u043e\u043c \u00abEXPERIMENTAL\u00bb \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u044f\u0432\u043d\u043e \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c\u0438 Anthropic \u043a\u0430\u043a \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0435, \u0438 \u044f \u0431\u0443\u0434\u0443 \u043e\u0442\u043c\u0435\u0447\u0430\u0442\u044c \u0438\u0445 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e.<\/p>\n<h3>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u0430\u0442\u044c<\/h3>\n<p>\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u0448\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u0430, \u0433\u0434\u0435 \u0447\u0442\u043e \u043b\u0435\u0436\u0438\u0442:<\/p>\n<ul>\n<li>\n<p><strong>\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438:<\/strong> <em>~\/.claude\/settings.json<\/em> (\u043b\u0438\u0447\u043d\u044b\u0435) \u0438\u043b\u0438 <em>.claude\/settings.json<\/em> (\u043f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0435, \u0440\u0430\u0441\u0448\u0430\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 git)<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u043a\u0438\u043b\u043b\u044b:<\/strong> <em>~\/.claude\/skills\/&lt;name&gt;\/SKILL.md<\/em> (\u043b\u0438\u0447\u043d\u044b\u0435) \u0438\u043b\u0438 <em>.claude\/skills\/&lt;name&gt;\/SKILL.md<\/em> (\u043f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0435)<\/p>\n<\/li>\n<li>\n<p><strong>\u0410\u0433\u0435\u043d\u0442\u044b:<\/strong> <em>~\/.claude\/agents\/&lt;name&gt;.md<\/em> (\u043b\u0438\u0447\u043d\u044b\u0435) \u0438\u043b\u0438 <em>.claude\/agents\/&lt;name&gt;.md<\/em> (\u043f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0435)<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u043a\u0440\u0438\u043f\u0442\u044b hooks:<\/strong> <em>~\/.claude\/hooks\/<\/em> \u2014 \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u043a\u043e\u043d\u0432\u0435\u043d\u0446\u0438\u044f. \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c chmod +x \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 <em>.claude\/<\/em> \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u0438\u0442\u044c \u0432 git \u0438 \u0440\u0430\u0441\u0448\u0430\u0440\u0438\u0432\u0430\u0442\u044c \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439. \u041b\u0438\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 <em>~\/.claude\/<\/em> \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0448\u0438.<\/p>\n<h3>\u0412\u0430\u0448\u0438 hooks \u0443\u043c\u0435\u044e\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c, \u0430 \u0432\u0430\u043c \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435 \u0441\u043a\u0430\u0437\u0430\u043b\u0438<\/h3>\n<p>\u042d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u043e\u0431\u0435\u043b \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e hooks \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 JSON \u043d\u0430 <em>stdin<\/em> \u0438 \u0447\u0442\u043e \u043a\u043e\u0434 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 2 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e. \u0427\u0435\u0433\u043e \u043e\u043d\u0430 \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u2014 \u0442\u0430\u043a \u044d\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e hooks \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c JSON \u043d\u0430 <em>stdout<\/em> \u0441 \u043f\u043e\u043b\u044f\u043c\u0438, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0435\u043d\u044f\u044e\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 Claude Code \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0438\u043f \u0441\u043e\u0431\u044b\u0442\u0438\u044f.<\/p>\n<p>Hooks PreToolUse \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c:<\/p>\n<ul>\n<li>\n<p><code>updatedInput<\/code> \u2014 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043e \u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430 \u043b\u0435\u0442\u0443.<\/p>\n<\/li>\n<li>\n<p><code>permissionDecision<\/code> \u2014 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u00aballow\u00bb \u0438\u043b\u0438 \u00abdeny\u00bb \u0431\u0435\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e.<\/p>\n<\/li>\n<li>\n<p><code>permissionDecisionReason<\/code> \u2014 \u043f\u043e\u044f\u0441\u043d\u0438\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 (\u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 UI).<\/p>\n<\/li>\n<li>\n<p><code>additionalContext<\/code> \u2014 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>Hooks <code>SessionStart<\/code> \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c:<\/p>\n<ul>\n<li>\n<p><code>watchPaths<\/code> \u2014 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0438\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u044f FileChanged.<\/p>\n<\/li>\n<li>\n<p><code>initialUserMessage<\/code> \u2014 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u0441\u0435\u0441\u0441\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p><code>additionalContext<\/code> \u2014 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432\u0441\u044e \u0441\u0435\u0441\u0441\u0438\u044e.<\/p>\n<\/li>\n<\/ul>\n<p>Hooks <code>PostToolUse<\/code> \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c:<\/p>\n<ul>\n<li>\n<p><code>updatedMCPToolOutput<\/code> \u2014 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u043e, \u0447\u0442\u043e Claude \u0432\u0438\u0434\u0438\u0442 \u0438\u0437 \u043e\u0442\u0432\u0435\u0442\u0430 MCP-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430.<\/p>\n<\/li>\n<li>\n<p><code>additionalContext<\/code> \u2014 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>Hooks <code>PermissionRequest<\/code> \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c:<\/p>\n<ul>\n<li>\n<p><code>decision<\/code> \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0441 <code>updatedInput<\/code> \u0438\u043b\u0438 <code>updatedPermissions<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u043c\u043e\u0449\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430. \u0412\u043e\u0442 hook <code>PreToolUse<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 <code>--dry-run<\/code> \u043a \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 git push \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a Claude \u0435\u0451 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442.<\/p>\n<p>\u0412 \u0432\u0430\u0448\u0435\u043c settings.json:<\/p>\n<pre><code class=\"json\">{\u00a0 \"hooks\": {\u00a0 \u00a0 \"PreToolUse\": [{\u00a0 \u00a0 \u00a0 \"matcher\": \"Bash\",\u00a0 \u00a0 \u00a0 \"hooks\": [{\u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"command\",\u00a0 \u00a0 \u00a0 \u00a0 \"command\": \"~\/.claude\/hooks\/dry-run-pushes.sh\"\u00a0 \u00a0 \u00a0 }]\u00a0 \u00a0 }]\u00a0 }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0418 \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e \u043f\u0443\u0442\u0438 ~\/.claude\/hooks\/dry-run-pushes.sh:<\/p>\n<pre><code class=\"bash\">#!\/bin\/bashINPUT=$(jq -r '.tool_input.command' &lt; \/dev\/stdin)if echo \"$INPUT\" | grep -q 'git push'; then\u00a0 jq -n --arg cmd \"$INPUT --dry-run\" '{\"updatedInput\": {\"command\": $cmd}}'fi<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>Claude \u0434\u0443\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 <code>git push origin main<\/code>, \u043d\u043e \u0432\u0430\u0448 hook \u0442\u0438\u0445\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u043e \u0432 <code>git push origin main --dry-run<\/code> \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c. \u041f\u043e\u043b\u044f <code>updatedInput<\/code> \u043d\u0435\u0442 \u043d\u0438 \u0432 \u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0412\u043e\u0442 hook <code>SessionStart<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u0432\u0430\u0448\u0438\u043c\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 git-\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0432 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0435\u0441\u0441\u0438\u044e.<\/p>\n<p><em>settings.json:<\/em><\/p>\n<pre><code class=\"json\">{\u00a0 \"hooks\": {\u00a0 \u00a0 \"SessionStart\": [{\u00a0 \u00a0 \u00a0 \"hooks\": [{\u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"command\",\u00a0 \u00a0 \u00a0 \u00a0 \"command\": \"~\/.claude\/hooks\/session-context.sh\",\u00a0 \u00a0 \u00a0 \u00a0 \"statusMessage\": \"Loading project context...\"\u00a0 \u00a0 \u00a0 }]\u00a0 \u00a0 }]\u00a0 }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><em>~\/.claude\/hooks\/session-context.sh:<\/em><\/p>\n<pre><code class=\"bash\">#!\/bin\/bashBRANCH=$(git branch --show-current 2&gt;\/dev\/null)CHANGES=$(git status --porcelain 2&gt;\/dev\/null | wc -l | tr -d ' ')jq -n \\\u00a0 --arg branch \"$BRANCH\" \\\u00a0 --arg changes \"$CHANGES\" \\\u00a0 '{\u00a0 \u00a0 \"watchPaths\": [\"package.json\", \".env\", \"tsconfig.json\"],\u00a0 \u00a0 \"additionalContext\": \"Current branch: \\($branch). Uncommitted changes: \\($changes) files.\"\u00a0 }'<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c Claude Code \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u0432\u0430\u0448\u0438\u043c\u0438 <code>package.json<\/code>, <code>.env<\/code> \u0438 <code>tsconfig<\/code> \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0438 \u0437\u043d\u0430\u0435\u0442, \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u0432\u044b \u0432\u0435\u0442\u043a\u0435 \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443 \u0432\u0430\u0441 \u043d\u0435\u0437\u0430\u043a\u043e\u043c\u043c\u0438\u0447\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0435\u0449\u0451 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b \u0447\u0442\u043e-\u043b\u0438\u0431\u043e \u043d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442\u0435.<\/p>\n<p>\u0410 \u0432\u043e\u0442 \u0442\u043e\u0442, \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0434\u043e\u0431\u0440\u044f\u0435\u0442 read-only bash-\u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0431\u0435\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430.<\/p>\n<p><em>settings.json<\/em>:<\/p>\n<pre><code class=\"json\">{\u00a0 \"hooks\": {\u00a0 \u00a0 \"PreToolUse\": [{\u00a0 \u00a0 \u00a0 \"matcher\": \"Bash\",\u00a0 \u00a0 \u00a0 \"hooks\": [{\u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"command\",\u00a0 \u00a0 \u00a0 \u00a0 \"command\": \"~\/.claude\/hooks\/auto-approve-readonly.sh\"\u00a0 \u00a0 \u00a0 }]\u00a0 \u00a0 }]\u00a0 }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><em>~\/.claude\/hooks\/auto-approve-readonly.sh<\/em>:<\/p>\n<pre><code class=\"bash\">#!\/bin\/bashCMD=$(jq -r '.tool_input.command' &lt; \/dev\/stdin)if echo \"$CMD\" | grep -qE '^(ls|cat|echo|pwd|whoami|date|git status|git log|git diff)'; then\u00a0 echo '{\"permissionDecision\": \"allow\", \"permissionDecisionReason\": \"Safe read-only command\"}'fi<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e \u0441\u0443\u0442\u0438, \u0432\u044b \u0441\u0442\u0440\u043e\u0438\u0442\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0430 shell-\u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445. \u041f\u043e\u043b\u044f <code>permissionDecision<\/code> \u043d\u0435\u0442 \u043d\u0438 \u0432 \u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.<\/p>\n<h3>\u0422\u0440\u0438 \u043f\u043e\u043b\u044f hooks, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0437\u0430\u0431\u044b\u043b\u0430 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c<\/h3>\n<p>\u0417\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044f <code>hooks<\/code> \u2014 \u044d\u0442\u043e <code>type<\/code>, <code>command<\/code>, <code>matcher<\/code>, <code>timeout<\/code>, <code>if<\/code> \u0438 <code>statusMessage<\/code>. \u041f\u0430\u0440\u0441\u0435\u0440 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0435\u0449\u0451 \u0442\u0440\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u044f\u044e\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 hooks.<\/p>\n<p>once: <code>true<\/code> \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 hook \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0435\u0433\u043e \u0443\u0434\u0430\u043b\u044f\u0435\u0442. \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438:<\/p>\n<pre><code class=\"json\">{\u00a0 \"hooks\": {\u00a0 \u00a0 \"SessionStart\": [{\u00a0 \u00a0 \u00a0 \"hooks\": [{\u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"command\",\u00a0 \u00a0 \u00a0 \u00a0 \"command\": \"[ -f .env ] || cp .env.example .env &amp;&amp; echo 'Created .env from template'\",\u00a0 \u00a0 \u00a0 \u00a0 \"once\": true,\u00a0 \u00a0 \u00a0 \u00a0 \"statusMessage\": \"First-time setup...\"\u00a0 \u00a0 \u00a0 }]\u00a0 \u00a0 }]\u00a0 }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c inline. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 <em>.env<\/em>, \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442, \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>async: true \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 hook \u0432 \u0444\u043e\u043d\u0435, \u043d\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044f Claude. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0438 \u0437\u0430\u0431\u044b\u043b:<\/p>\n<pre><code class=\"json\">{\u00a0 \"hooks\": {\u00a0 \u00a0 \"PostToolUse\": [{\u00a0 \u00a0 \u00a0 \"matcher\": \"Bash\",\u00a0 \u00a0 \u00a0 \"hooks\": [{\u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"command\",\u00a0 \u00a0 \u00a0 \u00a0 \"command\": \"jq '{timestamp: now, command: .tool_input.command, session: .session_id}' &lt; \/dev\/stdin &gt;&gt; ~\/.claude\/audit.jsonl\",\u00a0 \u00a0 \u00a0 \u00a0 \"async\": true\u00a0 \u00a0 \u00a0 }]\u00a0 \u00a0 }]\u00a0 }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u043b\u043e\u0433\u0438\u0440\u0443\u0435\u0442 \u043a\u0430\u0436\u0434\u0443\u044e bash-\u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432 \u0444\u0430\u0439\u043b \u0430\u0443\u0434\u0438\u0442\u0430, \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0441\u0435\u0441\u0441\u0438\u0438 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438.<\/p>\n<p><code>asyncRewake<\/code>: true \u2014 \u0441\u0430\u043c\u043e\u0435 \u0445\u0438\u0442\u0440\u043e\u0435. \u041e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0444\u043e\u043d\u0435 \u043a\u0430\u043a async, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 \u00ab\u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u043e\u043c \u043f\u0443\u0442\u0438\u00bb. \u041d\u043e \u0435\u0441\u043b\u0438 \u043e\u043d \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u0441 \u043a\u043e\u0434\u043e\u043c 2, \u043e\u043d \u0431\u0443\u0434\u0438\u0442 \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e. \u041d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0439, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e, \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0439, \u043a\u043e\u0433\u0434\u0430 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0442\u0430\u043a:<\/p>\n<p><em>settings.json:<\/em><\/p>\n<pre><code class=\"json\">{\u00a0 \"hooks\": {\u00a0 \u00a0 \"PostToolUse\": [{\u00a0 \u00a0 \u00a0 \"matcher\": \"Write|Edit\",\u00a0 \u00a0 \u00a0 \"hooks\": [{\u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"command\",\u00a0 \u00a0 \u00a0 \u00a0 \"command\": \"~\/.claude\/hooks\/scan-secrets.sh\",\u00a0 \u00a0 \u00a0 \u00a0 \"asyncRewake\": true,\u00a0 \u00a0 \u00a0 \u00a0 \"statusMessage\": \"Scanning for secrets...\"\u00a0 \u00a0 \u00a0 }]\u00a0 \u00a0 }]\u00a0 }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><em>~\/.claude\/hooks\/scan-secrets.sh:<\/em><\/p>\n<pre><code class=\"bash\">#!\/bin\/bashFILE=$(jq -r '.tool_input.file_path \/\/ .tool_response.filePath' &lt; \/dev\/stdin)if grep -qE '(password|secret|api_key)\\s*=' \"$FILE\" 2&gt;\/dev\/null; then\u00a0 exit 2\u00a0 # \u0411\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u043c: \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0441\u0435\u043a\u0440\u0435\u0442\u044bfiexit 0\u00a0 \u00a0 # \u0427\u0438\u0441\u0442\u043e: \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0438\u0448\u0435\u0442 Claude, \u043d\u0430 \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u044b. \u0415\u0441\u043b\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u2014 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 Claude. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u2014 \u0432\u044b \u0434\u0430\u0436\u0435 \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u043e\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f.<\/p>\n<h3>\u041f\u043e\u043b\u044f frontmatter \u0441\u043a\u0438\u043b\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0442 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/h3>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 <code>name<\/code>, <code>description<\/code>, <code>allowed-tools<\/code>, <code>argument-hint<\/code>, <code>when_to_use<\/code> \u0438 <code>context<\/code>. \u0420\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0441\u0435\u0440 frontmatter \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0435\u0449\u0451 \u0448\u0435\u0441\u0442\u044c.<\/p>\n<p>model \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0430\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u043a\u0438\u043b\u043b. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 haiku \u0434\u043b\u044f \u0434\u0435\u0448\u0451\u0432\u044b\u0445 \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0438 opus \u0434\u043b\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430:<\/p>\n<pre><code class=\"bash\">---name: quick-lintdescription: Fast lint check using the cheapest modelmodel: haikueffort: lowallowed-tools: Bash, Readargument-hint: \"[file]\"---Run the project linter on: $ARGUMENTSDetect the linter from config (eslint, ruff, clippy) and run it. Report only errors, not warnings.<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430 Haiku \u0441 \u043d\u0438\u0437\u043a\u0438\u043c effort, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0434\u0451\u0448\u0435\u0432\u043e. \u0414\u043b\u044f \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f model: opus \u0438 effort: max.<\/p>\n<p>effort \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0435\u043c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0434\u0443\u043c\u0430\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u044c. <code>low<\/code>, <code>medium<\/code>, <code>high<\/code> \u0438\u043b\u0438 <code>max<\/code>. \u042d\u0442\u043e \u043c\u0430\u043f\u043f\u0438\u0442\u0441\u044f \u043d\u0430 \u0442\u0443 \u0436\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 <code>effort<\/code>, \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0433\u043b\u0443\u0431\u0438\u043d\u043e\u0439 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0432\u0435\u0442.<\/p>\n<p>hooks \u0437\u0430\u0434\u0430\u0451\u0442 hooks, \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043a \u043f\u0435\u0440\u0438\u043e\u0434\u0443, \u043f\u043e\u043a\u0430 \u0441\u043a\u0438\u043b\u043b \u0430\u043a\u0442\u0438\u0432\u0435\u043d. \u041e\u043d\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0441\u043a\u0438\u043b\u043b \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442, \u0438 \u0441\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"bash\">---name: strict-typescriptdescription: Write TypeScript with type checking on every saveallowed-tools: Bash, Read, Write, Edit, Grep, Globhooks:\u00a0 PostToolUse:\u00a0 \u00a0 - matcher: \"Write|Edit\"\u00a0 \u00a0 \u00a0 hooks:\u00a0 \u00a0 \u00a0 \u00a0 - type: command\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 command: \"~\/.claude\/hooks\/typecheck-on-save.sh\"\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 statusMessage: \"Type checking...\"\u00a0 \u00a0 \u00a0 \u00a0 - type: command\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 command: \"~\/.claude\/hooks\/lint-on-save.sh\"\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 async: true---Write TypeScript with strict enforcement. Every file you touch gets type-checked and linted automatically.$ARGUMENTS<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><em>~\/.claude\/hooks\/typecheck-on-save.sh:<\/em><\/p>\n<pre><code class=\"bash\">#!\/bin\/bashFILE=$(jq -r '.tool_input.file_path \/\/ .tool_response.filePath' &lt; \/dev\/stdin)[[ \"$FILE\" == *.ts ]] &amp;&amp; npx tsc --noEmit 2&gt;&amp;1 || true<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><em>~\/.claude\/hooks\/lint-on-save.sh:<\/em><\/p>\n<pre><code class=\"bash\">#!\/bin\/bashFILE=$(jq -r '.tool_input.file_path \/\/ .tool_response.filePath' &lt; \/dev\/stdin)[[ \"$FILE\" == *.ts ]] &amp;&amp; npx eslint --fix \"$FILE\" 2&gt;&amp;1 || true<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u043a\u0430 \u044d\u0442\u043e\u0442 \u0441\u043a\u0438\u043b\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043a\u0430\u0436\u0434\u044b\u0439 TypeScript-\u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0438\u0448\u0435\u0442 Claude, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0442\u0438\u043f\u0430\u043c\u0438 \u0438 \u043b\u0438\u043d\u0442\u0438\u0442\u0441\u044f \u0432 \u0444\u043e\u043d\u0435. \u041a\u043e\u0433\u0434\u0430 \u0441\u043a\u0438\u043b\u043b \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f, \u044d\u0442\u0438 hooks \u0438\u0441\u0447\u0435\u0437\u0430\u044e\u0442. \u0421\u043a\u043e\u0443\u043f\u0438\u043d\u0433 \u0447\u0438\u0441\u0442\u044b\u0439.<\/p>\n<p>agent \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u0443\u0435\u0442 \u0441\u043a\u0438\u043b\u043b \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u043c\u0443 \u0430\u0433\u0435\u043d\u0442\u0443:<\/p>\n<pre><code class=\"bash\">---name: deep-reviewdescription: Thorough security review delegated to the review agentagent: security-review---Review the following: $ARGUMENTS<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>disable-model-invocation<\/code>: true \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u044b\u0437\u043e\u0432. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u044f\u0432\u043d\u044b\u0439 <em>\/skill-name<\/em>. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u044d\u0442\u043e \u0434\u043b\u044f \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0441\u043a\u0438\u043b\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e.<\/p>\n<p>shell: bash \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a\u043e\u0439 shell \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<h3>\u041f\u043e\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b \u043d\u0435 \u043d\u0430\u0439\u0434\u0451\u0442\u0435 \u043d\u0438 \u0432 \u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/h3>\n<p>\u041a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u0430\u0433\u0435\u043d\u0442\u044b \u0432 <em>.claude\/agents\/<\/em> \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u043f\u043e\u043b\u044f <code>frontmatter<\/code>, \u043d\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0435 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.<\/p>\n<p>color \u0437\u0430\u0434\u0430\u0451\u0442 \u0446\u0432\u0435\u0442 \u0432 UI: <em>red, orange, yellow, green, blue, purple, pink<\/em> \u0438\u043b\u0438 <em>gray<\/em>. \u041f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0433\u0434\u0430 \u0438\u0445 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e.<\/p>\n<p><code>memory<\/code> \u2014 \u0441\u0430\u043c\u043e\u0435 \u0432\u0430\u0436\u043d\u043e\u0435. \u041e\u043d\u043e \u0434\u0430\u0451\u0442 \u0430\u0433\u0435\u043d\u0442\u0443 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p><code>user<\/code> \u2014 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f, \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445<\/p>\n<\/li>\n<li>\n<p><code>project<\/code> \u2014 \u043f\u0435\u0440\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/p>\n<\/li>\n<li>\n<p><code>local<\/code> \u2014 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u0430\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u0432 gitignore)<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0447\u0438\u0442\u0441\u044f. \u0420\u0435\u0432\u044c\u044e\u0435\u0440\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0448\u043b\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u043a\u0438. \u041a\u043e\u0434-\u0440\u0435\u0432\u044c\u044e\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0432\u0430\u0448\u0438 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u043c\u0435\u0436\u0434\u0443 \u0441\u0435\u0441\u0441\u0438\u044f\u043c\u0438. \u041f\u0430\u043c\u044f\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u043e\u0442 \u0436\u0435 \u0444\u043e\u0440\u043c\u0430\u0442 frontmatter, \u0447\u0442\u043e \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0430\u0432\u0442\u043e-\u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<pre><code class=\"bash\">---name: codebase-guidedescription: Answer questions about the codebase, learning more with each sessiontools: [Read, Grep, Glob, Bash]color: greenmemory: project---You are a codebase guide with persistent memory. Check your memory first before exploring the code.After answering a question, save useful context to memory:- Architecture decisions (type: project)- Code locations for common tasks (type: reference)- Patterns and conventions (type: feedback)Over time, you should answer faster because you remember where things are.<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0441\u0441\u0438\u0439 \u044d\u0442\u043e\u0442 \u0430\u0433\u0435\u043d\u0442 \u0441\u0442\u0440\u043e\u0438\u0442 \u0431\u0430\u0437\u0443 \u0437\u043d\u0430\u043d\u0438\u0439 \u043e \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u0435 \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u0435\u0449\u0451 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043b\u0435\u0437\u0442\u044c \u0432 grep.<\/p>\n<p><code>omitClaudeMd<\/code>: true \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 CLAUDE.md. \u041f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0440\u0435\u0432\u044c\u044e\u0435\u0440\u0430 \u00ab\u0441\u0432\u0435\u0436\u0438\u043c \u0432\u0437\u0433\u043b\u044f\u0434\u043e\u043c\u00bb, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u043e\u0442\u0440\u0430\u0441\u043b\u0435\u0432\u044b\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b, \u0430 \u043d\u0435 \u043a\u043e\u043d\u0432\u0435\u043d\u0446\u0438\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430:<\/p>\n<pre><code class=\"bash\">---name: fresh-eyesdescription: Review code without project-specific biasestools: [Read, Grep, Glob]omitClaudeMd: trueeffort: highcolor: blue---Review this code purely from first principles. You have no project context. Focus on correctness, security, performance, and readability by industry standards.<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>criticalSystemReminder_EXPERIMENTAL<\/code> \u2014 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0435\u0440\u0435\u0438\u043d\u044a\u0435\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0445\u043e\u0434\u0443 \u043a\u0430\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0435 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435. \u0414\u0430\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0441\u0436\u0430\u0442\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 (compaction) \u043e\u043d\u043e \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435:<\/p>\n<pre><code class=\"bash\">---name: prod-deployerdescription: Manages production deployments with strict safety checkstools: [Bash, Read, Grep]color: redcriticalSystemReminder_EXPERIMENTAL: \"Always run migrations with --dry-run first. Never skip the staging verification step.\"---<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong><em>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435<\/em><\/strong>: \u0443 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u0435\u0441\u0442\u044c \u00ab<code>EXPERIMENTAL<\/code>\u00bb. \u0418\u043d\u0436\u0435\u043d\u0435\u0440\u044b Anthropic \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u0435\u0433\u043e \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c. \u041e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u043e \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043e \u0432 \u043b\u044e\u0431\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0435\u0433\u043e \u0434\u043b\u044f \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0445, \u043d\u043e \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0439 \u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043d\u0435 \u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u043d\u0430 \u043d\u0451\u043c \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0443\u044e \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443.<\/p>\n<p><code>requiredMcpServers<\/code> \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0438\u043c\u0451\u043d MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b. \u0415\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b, \u0430\u0433\u0435\u043d\u0442 \u043d\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f. \u041d\u0435 \u0434\u0430\u0451\u0442 \u0430\u0433\u0435\u043d\u0442\u0430\u043c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b.<\/p>\n<h3>\u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0430\u0432\u0442\u043e-\u0440\u0435\u0436\u0438\u043c\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439<\/h3>\n<p>\u041f\u043e\u043b\u0435 <code>autoMode<\/code> \u0432 <em>settings.json<\/em> \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e Anthropic \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u00abYOLO Classifier\u00bb. \u041e\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0435\u043c, \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0434\u043e\u0431\u0440\u044f\u0435\u0442\u0441\u044f \u0432 \u0430\u0432\u0442\u043e-\u0440\u0435\u0436\u0438\u043c\u0435:<\/p>\n<pre><code class=\"json\">{\u00a0 \"autoMode\": {\u00a0 \u00a0 \"allow\": [\u00a0 \u00a0 \u00a0 \"Bash(npm test)\",\u00a0 \u00a0 \u00a0 \"Bash(npm run )\",\u00a0 \u00a0 \u00a0 \"Bash(git status)\",\u00a0 \u00a0 \u00a0 \"Bash(git diff )\",\u00a0 \u00a0 \u00a0 \"Bash(git log )\",\u00a0 \u00a0 \u00a0 \"Read\",\u00a0 \u00a0 \u00a0 \"Grep\",\u00a0 \u00a0 \u00a0 \"Glob\"\u00a0 \u00a0 ],\u00a0 \u00a0 \"soft_deny\": [\u00a0 \u00a0 \u00a0 \"Bash(git push )\",\u00a0 \u00a0 \u00a0 \"Bash(rm )\",\u00a0 \u00a0 \u00a0 \"Write(.env)\"\u00a0 \u00a0 ],\u00a0 \u00a0 \"environment\": [\u00a0 \u00a0 \u00a0 \"NODE_ENV=development\",\u00a0 \u00a0 \u00a0 \"This is a local dev machine with no production database access\",\u00a0 \u00a0 \u00a0 \"All Docker containers use isolated networks\",\u00a0 \u00a0 \u00a0 \"The test suite is safe to run repeatedly, it uses a dedicated test database\"\u00a0 \u00a0 ]\u00a0 }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0428\u0430\u0431\u043b\u043e\u043d\u044b <code>allow<\/code> \u043e\u0434\u043e\u0431\u0440\u044f\u044e\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u0428\u0430\u0431\u043b\u043e\u043d\u044b <code>soft_deny<\/code> \u0432\u0441\u0435\u0433\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f. \u041c\u0430\u0441\u0441\u0438\u0432 <code>environment<\/code> \u2014 \u0441\u0430\u043c\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439, \u044d\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b. \u042d\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0447\u0438\u0442\u0430\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0432\u0430\u0448\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e. \u041c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u00ab<em>This project uses Docker, all commands run in containers<\/em>\u00bb, \u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0443\u0447\u0442\u0451\u0442 \u044d\u0442\u043e \u0432 \u0441\u0432\u043e\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445 \u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434.<\/p>\n<p>\u0414\u0443\u043c\u0430\u0439\u0442\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u043a\u0430\u043a \u043e \u0431\u0440\u0438\u0444\u0438\u043d\u0433\u0435 \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u043e \u0432\u0430\u0448\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435. \u0427\u0435\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0435\u0435 \u0432\u044b, \u0442\u0435\u043c \u043b\u0443\u0447\u0448\u0435 \u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u00ab<em>No production access<\/em>\u00bb \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0435\u043c\u0443 \u0431\u044b\u0442\u044c \u043c\u0435\u043d\u0435\u0435 \u043f\u0430\u0440\u0430\u043d\u043e\u0438\u0434\u0430\u043b\u044c\u043d\u044b\u043c \u043d\u0430\u0441\u0447\u0451\u0442 \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439. \u00ab<em>Test database is isolated<\/em>\u00bb \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u043e\u043d \u0442\u0435\u0441\u0442\u043e\u0432 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u0435\u043d.<\/p>\n<h3>\u0422\u0443\u043c\u0431\u043b\u0435\u0440\u044b \u0446\u0438\u043a\u043b\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b<\/h3>\n<p>\u0414\u0432\u0430 \u043f\u043e\u043b\u044f \u0432 <em>settings.json<\/em> \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u044e\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0441\u0430\u043c\u043e\u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f Claude Code:<\/p>\n<pre><code class=\"json\">{\u00a0 \"autoMemoryEnabled\": true,\u00a0 \"autoDreamEnabled\": true}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>autoMemoryEnabled<\/code> \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 Claude Code \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0434\u043e\u043b\u0433\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u0438\u0437 \u0432\u0430\u0448\u0438\u0445 \u0441\u0435\u0441\u0441\u0438\u0439. \u041f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430 \u0444\u043e\u043d\u043e\u0432\u044b\u0439 \u0430\u0433\u0435\u043d\u0442 \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u2014 \u0432\u0430\u0448\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u044f, \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b, \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0435 \u0432\u0430\u043c\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u2014 \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u043e \u0432 <em>~\/.claude\/projects\/&lt;path&gt;\/memory\/<\/em>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 <code>frontmatter<\/code> \u0434\u043b\u044f \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p><code>autoDreamEnabled<\/code> \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442 \u0444\u043e\u043d\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0441\u043e\u043b\u0438\u0434\u0430\u0446\u0438\u044e \u00ab\u0441\u043d\u043e\u0432\u00bb. \u041a\u0430\u0436\u0434\u044b\u0435 24 \u0447\u0430\u0441\u0430, \u0435\u0441\u043b\u0438 \u043d\u0430\u043a\u043e\u043f\u0438\u043b\u043e\u0441\u044c 5 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u0435\u0441\u0441\u0438\u0439, \u0444\u043e\u043d\u043e\u0432\u044b\u0439 \u0430\u0433\u0435\u043d\u0442 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0442\u0440\u0430\u043d\u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0441\u0435\u0441\u0441\u0438\u0439 \u0438 \u043a\u043e\u043d\u0441\u043e\u043b\u0438\u0434\u0438\u0440\u0443\u0435\u0442 \u043f\u0430\u043c\u044f\u0442\u044c. \u041e\u043d \u0441\u043b\u0438\u0432\u0430\u0435\u0442 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b, \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u044f, \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u0442\u044b \u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0435 \u0438 \u0432\u044b\u0447\u0438\u0449\u0430\u0435\u0442 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438.<\/p>\n<p>\u0412\u043c\u0435\u0441\u0442\u0435 \u043e\u043d\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f: \u0441\u0435\u0441\u0441\u0438\u0438 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u044e\u0442 \u0432\u043e\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f, \u00ab\u0441\u043d\u044b\u00bb \u043a\u043e\u043d\u0441\u043e\u043b\u0438\u0434\u0438\u0440\u0443\u044e\u0442 \u0432\u043e\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f, \u043a\u043e\u043d\u0441\u043e\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u043e\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u043f\u0438\u0442\u0430\u044e\u0442 \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0438. \u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043e\u0431\u0430, \u0438 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0434\u0435\u043b\u044c \u0432\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u0435, \u0447\u0442\u043e Claude Code \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0432\u0430\u0448\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u044f, \u043a\u043e\u043d\u0432\u0435\u043d\u0446\u0438\u0438 \u0438 \u0447\u0430\u0441\u0442\u044b\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b, \u0445\u043e\u0442\u044f \u0432\u044b \u0435\u043c\u0443 \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438. \u042d\u0442\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u043f\u044b\u0442\u0435 \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<h3>Magic Docs: \u0442\u043e\u0447\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442<\/h3>\n<p>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0443: <code>\/^#\\s*MAGIC\\s+DOC:\\s*(.+)$\/im<\/code>. \u042d\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a H1, \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043d\u0435 \u0432\u0430\u0436\u0435\u043d, \u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 (\u043e\u0431\u0451\u0440\u043d\u0443\u0442\u044b\u043c\u0438 \u0432 <em>\u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f<\/em> \u0438\u043b\u0438 <em>\u0437\u0432\u0451\u0437\u0434\u043e\u0447\u043a\u0438<\/em>), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0434\u0430\u044e\u0442, \u043d\u0430 \u0447\u0451\u043c \u0444\u043e\u043a\u0443\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0430\u0433\u0435\u043d\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"bash\"># MAGIC DOC: API Endpoint Reference_Only document public REST endpoints. Include method, path, request body, response schema, and auth requirements._## Endpoints(content auto-maintained by Claude Code)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0411\u0435\u0437 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 \u0430\u0433\u0435\u043d\u0442 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0432\u0441\u0451. \u0421 \u043d\u0435\u0439 \u0432\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0435 \u0435\u043c\u0443 \u00ab<code>\u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b<\/code>\u00bb \u0438\u043b\u0438 \u00ab<code>\u0444\u043e\u043a\u0443\u0441\u0438\u0440\u0443\u0439\u0441\u044f \u043d\u0430 \u043b\u043e\u043c\u0430\u044e\u0449\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0445<\/code>\u00bb, \u0438 \u043e\u043d \u044d\u0442\u043e \u0443\u0432\u0430\u0436\u0430\u0435\u0442. \u0410\u0433\u0435\u043d\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0444\u043e\u043d\u0435 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d \u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435.<\/p>\n<h3>\u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043f\u0440\u0430\u0432\u0438\u043b \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439<\/h3>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0432\u0440\u043e\u0434\u0435 Bash(git *). \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432:<\/p>\n<pre><code class=\"bash\">Bash(npm )\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 # wildcard \u043f\u043e\u0441\u043b\u0435 \"npm \"Bash(git commit ) \u00a0 \u00a0 \u00a0 # \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u043f\u043e\u0434\u043a\u043e\u043c\u0430\u043d\u0434\u0430Read(*.ts) \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 # \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430Read(src\/**\/*.ts)\u00a0 \u00a0 \u00a0 \u00a0 # \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u043f\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043cWrite(src\/**)\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 # \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e, \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044bmcp__slack \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 # \u0432\u0441\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 slackmcp__slack__*\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 # \u044f\u0432\u043d\u044b\u0439 wildcard (\u0442\u043e\u0442 \u0436\u0435 \u044d\u0444\u0444\u0435\u043a\u0442)mcp__slack__post_message # \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442Bash(npm:*)\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 # legacy-\u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0441 \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u0435\u043c (\u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u043b\u043e\u0432\u0430)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><em>* \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0433\u0440\u0430\u043d\u0438\u0446, \u043a\u0430\u043a shell-globbing. <\/em>* \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u043f\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u043c. \u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f MCP-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0434\u0432\u043e\u0439\u043d\u044b\u0435 \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f: <code>mcp__&lt;server&gt;__&lt;tool&gt;<\/code>. \u041f\u043e\u043b\u0435 if \u0432 hooks \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0440\u043e\u0432\u043d\u043e \u0442\u043e\u0442 \u0436\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043e\u043a, \u0442\u043e\u043b\u044c\u043a\u043e globs.<\/p>\n<pre><code class=\"json\">{\u00a0 \"permissions\": {\u00a0 \u00a0 \"allow\": [\u00a0 \u00a0 \u00a0 \"Bash(npm )\", \"Bash(git status)\", \"Bash(git diff )\",\u00a0 \u00a0 \u00a0 \"Read(src\/**)\", \"Read(tests\/**)\", \"Grep\", \"Glob\",\u00a0 \u00a0 \u00a0 \"mcp__database__query\"\u00a0 \u00a0 ],\u00a0 \u00a0 \"deny\": [\u00a0 \u00a0 \u00a0 \"Bash(rm -rf )\", \"Write(\/etc\/*)\", \"Write(.env*)\",\u00a0 \u00a0 \u00a0 \"mcp__slack__delete_*\"\u00a0 \u00a0 ],\u00a0 \u00a0 \"ask\": [\u00a0 \u00a0 \u00a0 \"Bash(git push )\", \"Write(.json)\", \"Write(*.lock)\",\u00a0 \u00a0 \u00a0 \"mcp__slack__post_message\"\u00a0 \u00a0 ]\u00a0 }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h3>context: fork \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u044b\u0431\u043e\u0440 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432\u0430\u0436\u0435\u043d<\/h3>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0441\u0442\u0430\u0432\u0438\u0442\u0435 <code>context<\/code>: <code>fork<\/code> \u043d\u0430 \u0441\u043a\u0438\u043b\u043b, \u043e\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0444\u043e\u043d\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043a-\u0441\u0443\u0431\u0430\u0433\u0435\u043d\u0442. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0444\u043e\u0440\u043a\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u044e\u0442 \u043a\u044d\u0448 \u043f\u0440\u043e\u043c\u043f\u0442\u043e\u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0447\u0435\u0440\u0435\u0437 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <code>CacheSafeParams<\/code>. \u0412\u0441\u0435 \u0444\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442 \u0431\u0430\u0439\u0442-\u0432-\u0431\u0430\u0439\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u044b API-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043c\u0430\u043a\u0441\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u043a\u044d\u0448.<\/p>\n<p>\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435: \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u0434\u0440\u0443\u0433\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430 \u0444\u043e\u0440\u043a-\u0441\u043a\u0438\u043b\u043b, \u0432\u044b \u0441\u043b\u043e\u043c\u0430\u0435\u0442\u0435 \u043a\u044d\u0448. \u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440 \u043d\u0430 Opus, \u0444\u043e\u0440\u043a \u043d\u0430 Haiku \u2014 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u044b \u0440\u0430\u0441\u0445\u043e\u0434\u044f\u0442\u0441\u044f, \u043f\u0440\u043e\u043c\u0430\u0445 \u043a\u044d\u0448\u0430, \u0432\u044b \u043f\u043b\u0430\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u043d\u0443\u044e \u0446\u0435\u043d\u0443. \u041b\u0438\u0431\u043e \u043e\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u043f\u043e\u043b\u0435 model, \u043b\u0438\u0431\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 model: inherit \u043d\u0430 \u0444\u043e\u0440\u043a-\u0441\u043a\u0438\u043b\u043b\u0430\u0445, \u0447\u0442\u043e\u0431\u044b \u043a\u044d\u0448 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 <code>context<\/code>: <code>fork<\/code> \u0434\u043b\u044f \u0442\u044f\u0436\u0451\u043b\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b: \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430. \u0424\u043e\u0440\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0444\u043e\u043d\u0435 \u0438 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u044f\u0435\u0442 \u0432\u0430\u0441 \u043f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0432\u0430\u0448 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440 \u043e\u0442\u0437\u044b\u0432\u0447\u0438\u0432\u044b\u043c.<\/p>\n<pre><code class=\"bash\">---name: full-auditdescription: Comprehensive codebase audit running in the backgroundcontext: forkallowed-tools: Bash, Read, Grep, Glob, WebSearcheffort: high---Run a comprehensive audit:- Security scan (grep for dangerous patterns, check dependencies for CVEs)- Code quality (duplicated logic, dead code, missing error handling)- Test coverage (untested critical paths)- Dependency health (outdated packages, unused deps, license issues)Write a detailed report to \/tmp\/audit-report.md when complete.<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h3>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0441\u0451 \u0432\u043c\u0435\u0441\u0442\u0435<\/h3>\n<p>\u0421\u0430\u043c\u043e\u0443\u043b\u0443\u0447\u0448\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043a\u043e\u0434-\u0440\u0435\u0432\u044c\u044e\u0435\u0440 \u0441 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c\u0438 hooks:<\/p>\n<p><em>.claude\/agents\/reviewer.md:<\/em><\/p>\n<pre><code class=\"bash\">---name: reviewerdescription: Code reviewer that learns your codebase patterns over timetools: [Read, Grep, Glob, Bash]effort: highcolor: yellowmemory: projecthooks:\u00a0 PostToolUse:\u00a0 \u00a0 - matcher: \"Bash\"\u00a0 \u00a0 \u00a0 hooks:\u00a0 \u00a0 \u00a0 \u00a0 - type: command\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 command: \"~\/.claude\/hooks\/log-review.sh\"\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 async: true---Before reviewing, read your memory for past findings on this codebase.Review git diff HEAD~1 for:- Patterns you've flagged before (check memory)- New issues worth flagging- Resolved issues from past reviewsAfter review, save to memory:- New patterns found (type: feedback)- Recurring issues (type: project)End with VERDICT: PASS, FAIL, or NEEDS_REVIEW.<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u0430\u0433\u0435\u043d\u0442 \u043f\u043e\u043c\u043d\u0438\u0442, \u0447\u0442\u043e \u043e\u043d \u043d\u0430\u0448\u0451\u043b \u0432 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0440\u0430\u0437. \u041e\u043d \u0437\u043d\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0442\u0441\u044f. \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0435\u0432\u044c\u044e \u043e\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043b\u043e\u0432\u0438\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0440\u0435\u0432\u044c\u044e\u0435\u0440 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b \u0431\u044b.<\/p>\n<p>Hook <code>SessionStart<\/code> \u0441\u043e \u0441\u043b\u0435\u0436\u0435\u043d\u0438\u0435\u043c \u0437\u0430 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043f\u043b\u044e\u0441 \u0441\u0442\u0440\u0430\u0445\u043e\u0432\u043a\u0430 \u043d\u0430 asyncRewake:<\/p>\n<p><em>settings.json:<\/em><\/p>\n<pre><code class=\"json\">{\u00a0 \"hooks\": {\u00a0 \u00a0 \"SessionStart\": [{\u00a0 \u00a0 \u00a0 \"hooks\": [{\u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"command\",\u00a0 \u00a0 \u00a0 \u00a0 \"command\": \"~\/.claude\/hooks\/session-context.sh\",\u00a0 \u00a0 \u00a0 \u00a0 \"statusMessage\": \"Loading project context...\"\u00a0 \u00a0 \u00a0 }]\u00a0 \u00a0 }],\u00a0 \u00a0 \"PreToolUse\": [{\u00a0 \u00a0 \u00a0 \"matcher\": \"Bash\",\u00a0 \u00a0 \u00a0 \"hooks\": [{\u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"command\",\u00a0 \u00a0 \u00a0 \u00a0 \"command\": \"~\/.claude\/hooks\/auto-approve-readonly.sh\"\u00a0 \u00a0 \u00a0 }, {\u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"command\",\u00a0 \u00a0 \u00a0 \u00a0 \"command\": \"~\/.claude\/hooks\/block-dangerous.sh\",\u00a0 \u00a0 \u00a0 \u00a0 \"asyncRewake\": true,\u00a0 \u00a0 \u00a0 \u00a0 \"statusMessage\": \"Safety check...\"\u00a0 \u00a0 \u00a0 }]\u00a0 \u00a0 }]\u00a0 }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><em>~\/.claude\/hooks\/block-dangerous.sh:<\/em><\/p>\n<pre><code class=\"bash\">#!\/bin\/bashCMD=$(jq -r '.tool_input.command' &lt; \/dev\/stdin)echo \"$CMD\" | grep -qE '(rm -rf \/|sudo rm|chmod 777|&gt; \/dev\/)' &amp;&amp; exit 2 || exit 0<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>Read-only \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043e\u0434\u043e\u0431\u0440\u044f\u044e\u0442\u0441\u044f \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e. \u041e\u043f\u0430\u0441\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u0412\u0441\u0451, \u0447\u0442\u043e \u043c\u0435\u0436\u0434\u0443, \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u0421\u043a\u0430\u043d\u0435\u0440 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442 \u043d\u0430 \u00ab\u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u043e\u043c \u043f\u0443\u0442\u0438\u00bb.<\/p>\n<p>\u0421\u043a\u0438\u043b\u043b \u0441 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u0438, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c effort \u0438 \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0430\u0433\u0435\u043d\u0442\u0443:<\/p>\n<pre><code class=\"bash\">---name: architecture-reviewdescription: Deep architecture review using max effort, delegated to fresh-eyes agentagent: fresh-eyeseffort: max---Review the architecture of this project. Ignore existing conventions (the agent has omitClaudeMd: true).Focus on: $ARGUMENTSEvaluate structural decisions, dependency graph health, separation of concerns, and scalability characteristics.<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u0440\u0438 \u043d\u0435\u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0438\u0447\u0438: effort: max \u0434\u043b\u044f \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0445 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439, \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 \u0430\u0433\u0435\u043d\u0442\u0443 \u0438 \u0441\u0430\u043c \u044d\u0442\u043e\u0442 \u0430\u0433\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 omitClaudeMd: true \u0434\u043b\u044f \u043d\u0435\u043f\u0440\u0435\u0434\u0432\u0437\u044f\u0442\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430.<\/p>\n<p>\u042d\u0442\u0438 \u043d\u0435\u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0438\u0447\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0440\u0430\u0437\u0440\u044b\u0432 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043c, \u0447\u0435\u043c Claude Code \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0435\u0433\u043e\u0434\u043d\u044f, \u0438 \u0442\u0435\u043c, \u0447\u0435\u043c Anthropic \u0435\u0433\u043e \u0441\u0442\u0440\u043e\u0438\u0442. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 hooks \u0441 \u043f\u043e\u043b\u044f\u043c\u0438 \u043e\u0442\u0432\u0435\u0442\u043e\u0432, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 (middleware) \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f AI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0431\u043e\u043b\u0435\u0435 \u0433\u0438\u0431\u043a\u0438\u0439, \u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e CI\/CD-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u043e\u0432. <\/p>\n<p>\u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 AI-\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u044e\u0442 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0438\u0437\u0443 \u043c\u0435\u0436\u0434\u0443 \u0441\u0435\u0441\u0441\u0438\u044f\u043c\u0438. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u00ab\u0441\u043d\u043e\u0432\u00bb \u2014 \u044d\u0442\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u043f\u044b\u0442\u0435 \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438. \u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0430\u0432\u0442\u043e-\u0440\u0435\u0436\u0438\u043c\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u042d\u0442\u043e \u043d\u0435 \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 \u043d\u0435 \u043f\u0430\u0441\u0445\u0430\u043b\u043a\u0438. \u042d\u0442\u043e \u043a\u0430\u0440\u043a\u0430\u0441 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445, \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f, \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0445 \u0441\u0440\u0435\u0434 AI-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0438 \u043e\u043d\u0438 \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 npm-\u043f\u0430\u043a\u0435\u0442\u0435 \u043d\u0430 \u0432\u0430\u0448\u0435\u0439 \u043c\u0430\u0448\u0438\u043d\u0435. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0434\u043e\u0433\u043e\u043d\u0438\u0442, \u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u043e\u0441\u0442\u0440\u0438\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e Claude Code \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0443\u043c\u0435\u0435\u0442, \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0436\u0438\u0432\u0451\u0442 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/258\/484\/92d\/25848492d4cd2dcd1df595e475569a9a.png\" width=\"1560\" height=\"334\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/258\/484\/92d\/25848492d4cd2dcd1df595e475569a9a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/258\/484\/92d\/25848492d4cd2dcd1df595e475569a9a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p><a href=\"https:\/\/t.me\/+acrI2N6q080wZjM6\">\u041f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0439\u0442\u0435\u0441\u044c<\/a>\u00a0\u043a\u00a0\u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u043c\u0443 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043d\u0430\u00a0Spring Boot \u0432\u00a0\u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c\u00a0\u2014\u00a0<a href=\"https:\/\/t.me\/+acrI2N6q080wZjM6\">Spring \u0410\u0439\u041e<\/a>, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0442\u044c \u0432 \u043a\u0443\u0440\u0441\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 \u0438\u0437 \u043c\u0438\u0440\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430 Spring Boot \u0438 \u0432\u0441\u0435\u0433\u043e, \u0447\u0442\u043e \u0441 \u043d\u0438\u043c \u0441\u0432\u044f\u0437\u0430\u043d\u043e.<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1041156\/\">https:\/\/habr.com\/ru\/articles\/1041156\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043e\u0442 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0430 \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440\u0430 \u0428\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0430\u041e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 Claude Code. \u041d\u043e \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0437\u0430\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0444\u0438\u0447\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0430 \u0437\u0430\u0432\u0442\u0440\u0430 \u0443\u0436\u0435 \u043d\u0435\u0442. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441 \u043a\u043b\u043e\u0434\u043e\u043c \u043e\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435 \u0437\u0430\u0441\u0442\u0440\u0430\u0445\u043e\u0432\u0430\u043d \u043d\u0438\u043a\u0442\u043e, \u0432\u0435\u0434\u044c \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u043f\u043e \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u0438\u044e Anthropic, \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u0438\u043c Claude Code.\u041f\u043e\u043b\u044f hooks, \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430 \u043b\u0435\u0442\u0443, \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u043e\u0432, \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0430\u0432\u0442\u043e-\u0440\u0435\u0436\u0438\u043c\u0430 \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c, \u0441\u0430\u043c\u043e\u0443\u043b\u0443\u0447\u0448\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0446\u0438\u043a\u043b\u044b \u00ab\u0441\u043d\u043e\u0432\u00bb \u2014 \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0433\u043e\u0442\u043e\u0432 \u043a \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e.\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0430\u0432\u0442\u043e-\u0440\u0435\u0436\u0438\u043c\u0430 Claude Code \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u00abYOLO Classifier\u00bb. \u042d\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432 yoloClassifier.ts. \u0418 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u043c\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u2014 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0432\u0440\u043e\u0434\u0435 \u00ab\u044d\u0442\u043e staging-\u0441\u0435\u0440\u0432\u0435\u0440, \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u00bb, \u2014 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0447\u0438\u0442\u0430\u0435\u0442, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c, \u0447\u0442\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u043e\u0434\u043e\u0431\u0440\u044f\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u042d\u0442\u043e\u0433\u043e \u043d\u0435\u0442 \u043d\u0438 \u0432 \u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.\u042d\u0442\u043e \u043b\u0438\u0448\u044c \u043e\u0434\u043d\u0430 \u0438\u0437 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043d\u0435\u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u0437\u0430\u0440\u044b\u0442\u044b\u0445 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 Claude Code, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u0435\u0436\u0438\u0442 \u043f\u0440\u044f\u043c\u043e \u0443 \u0432\u0430\u0441 \u0432 node_modules \u043a\u0430\u043a \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c\u044b\u0439 npm-\u043f\u0430\u043a\u0435\u0442. \u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u044b. \u041d\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u044f, \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0434\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0442 \u0442\u043e, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c. \u0412\u0441\u0451, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u043e, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043a\u0430\u043a \u0435\u0441\u0442\u044c.\u0417\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043e \u0432\u0435\u0440\u0441\u0438\u044f\u0445: \u0432\u0441\u0435 \u043d\u0430\u0445\u043e\u0434\u043a\u0438 \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u043d\u0430 @anthropic-ai\/claude-code@2.1.87. \u041d\u0435\u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0438\u0447\u0438 \u043c\u043e\u0433\u0443\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043e\u0442 \u0440\u0435\u043b\u0438\u0437\u0430 \u043a \u0440\u0435\u043b\u0438\u0437\u0443, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u0441\u044c \u043a \u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u043a \u043a \u0441\u043d\u0438\u043c\u043a\u0443 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0441\u0435\u0433\u043e\u0434\u043d\u044f. \u041f\u043e\u043b\u044f \u0441\u043e \u0441\u043b\u043e\u0432\u043e\u043c \u00abEXPERIMENTAL\u00bb \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u044f\u0432\u043d\u043e \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c\u0438 Anthropic \u043a\u0430\u043a \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0435, \u0438 \u044f \u0431\u0443\u0434\u0443 \u043e\u0442\u043c\u0435\u0447\u0430\u0442\u044c \u0438\u0445 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e.\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u0430\u0442\u044c\u0411\u044b\u0441\u0442\u0440\u0430\u044f \u0448\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u0430, \u0433\u0434\u0435 \u0447\u0442\u043e \u043b\u0435\u0436\u0438\u0442:\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438: ~\/.claude\/settings.json (\u043b\u0438\u0447\u043d\u044b\u0435) \u0438\u043b\u0438 .claude\/settings.json (\u043f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0435, \u0440\u0430\u0441\u0448\u0430\u0440\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 git)\u0421\u043a\u0438\u043b\u043b\u044b: ~\/.claude\/skills\/&lt;name&gt;\/SKILL.md (\u043b\u0438\u0447\u043d\u044b\u0435) \u0438\u043b\u0438 .claude\/skills\/&lt;name&gt;\/SKILL.md (\u043f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0435)\u0410\u0433\u0435\u043d\u0442\u044b: ~\/.claude\/agents\/&lt;name&gt;.md (\u043b\u0438\u0447\u043d\u044b\u0435) \u0438\u043b\u0438 .claude\/agents\/&lt;name&gt;.md (\u043f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0435)\u0421\u043a\u0440\u0438\u043f\u0442\u044b hooks: ~\/.claude\/hooks\/ \u2014 \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u043a\u043e\u043d\u0432\u0435\u043d\u0446\u0438\u044f. \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c chmod +x \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432.\u041f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 .claude\/ \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u0438\u0442\u044c \u0432 git \u0438 \u0440\u0430\u0441\u0448\u0430\u0440\u0438\u0432\u0430\u0442\u044c \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439. \u041b\u0438\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 ~\/.claude\/ \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0448\u0438.\u0412\u0430\u0448\u0438 hooks \u0443\u043c\u0435\u044e\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c, \u0430 \u0432\u0430\u043c \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435 \u0441\u043a\u0430\u0437\u0430\u043b\u0438\u042d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u043e\u0431\u0435\u043b \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e hooks \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 JSON \u043d\u0430 stdin \u0438 \u0447\u0442\u043e \u043a\u043e\u0434 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 2 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e. \u0427\u0435\u0433\u043e \u043e\u043d\u0430 \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u2014 \u0442\u0430\u043a \u044d\u0442\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e hooks \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c JSON \u043d\u0430 stdout \u0441 \u043f\u043e\u043b\u044f\u043c\u0438, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0435\u043d\u044f\u044e\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 Claude Code \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0438\u043f \u0441\u043e\u0431\u044b\u0442\u0438\u044f.Hooks PreToolUse \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c:updatedInput \u2014 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043e \u0435\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0430 \u043b\u0435\u0442\u0443.permissionDecision \u2014 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u00aballow\u00bb \u0438\u043b\u0438 \u00abdeny\u00bb \u0431\u0435\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e.permissionDecisionReason \u2014 \u043f\u043e\u044f\u0441\u043d\u0438\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 (\u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 UI).additionalContext \u2014 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430.Hooks SessionStart \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c:watchPaths \u2014 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0438\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u044f FileChanged.initialUserMessage \u2014 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u0441\u0435\u0441\u0441\u0438\u0438.additionalContext \u2014 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432\u0441\u044e \u0441\u0435\u0441\u0441\u0438\u044e.Hooks PostToolUse \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c:updatedMCPToolOutput \u2014 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u043e, \u0447\u0442\u043e Claude \u0432\u0438\u0434\u0438\u0442 \u0438\u0437 \u043e\u0442\u0432\u0435\u0442\u0430 MCP-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430.additionalContext \u2014 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430.Hooks PermissionRequest \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c:decision \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0441 updatedInput \u0438\u043b\u0438 updatedPermissions.\u042d\u0442\u043e \u043c\u043e\u0449\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430. \u0412\u043e\u0442 hook PreToolUse, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 &#8212;dry-run \u043a \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 git push \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a Claude \u0435\u0451 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442.\u0412 \u0432\u0430\u0448\u0435\u043c settings.json:{\u00a0 &#171;hooks&#187;: {\u00a0 \u00a0 &#171;PreToolUse&#187;: [{\u00a0 \u00a0 \u00a0 &#171;matcher&#187;: &#171;Bash&#187;,\u00a0 \u00a0 \u00a0 &#171;hooks&#187;: [{\u00a0 \u00a0 \u00a0 \u00a0 &#171;type&#187;: &#171;command&#187;,\u00a0 \u00a0 \u00a0 \u00a0 &#171;command&#187;: &#171;~\/.claude\/hooks\/dry-run-pushes.sh&#187;\u00a0 \u00a0 \u00a0 }]\u00a0 \u00a0 }]\u00a0 }}\u0418 \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e \u043f\u0443\u0442\u0438 ~\/.claude\/hooks\/dry-run-pushes.sh:#!\/bin\/bashINPUT=$(jq -r &#8216;.tool_input.command&#8217; &lt; \/dev\/stdin)if echo &#171;$INPUT&#187; | grep -q &#8216;git push&#8217;; then\u00a0 jq -n &#8212;arg cmd &#171;$INPUT &#8212;dry-run&#187; &#8216;{&#171;updatedInput&#187;: {&#171;command&#187;: $cmd}}&#8217;fiClaude \u0434\u0443\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 git push origin main, \u043d\u043e \u0432\u0430\u0448 hook \u0442\u0438\u0445\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u043e \u0432 git push origin main &#8212;dry-run \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c. \u041f\u043e\u043b\u044f updatedInput \u043d\u0435\u0442 \u043d\u0438 \u0432 \u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.\u0412\u043e\u0442 hook SessionStart, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u0432\u0430\u0448\u0438\u043c\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 git-\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0432 \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0435\u0441\u0441\u0438\u044e.settings.json:{\u00a0 &#171;hooks&#187;: {\u00a0 \u00a0 &#171;SessionStart&#187;: [{\u00a0 \u00a0 \u00a0 &#171;hooks&#187;: [{\u00a0 \u00a0 \u00a0 \u00a0 &#171;type&#187;: &#171;command&#187;,\u00a0 \u00a0 \u00a0 \u00a0 &#171;command&#187;: &#171;~\/.claude\/hooks\/session-context.sh&#187;,\u00a0 \u00a0 \u00a0 \u00a0 &#171;statusMessage&#187;: &#171;Loading project context&#8230;&#187;\u00a0 \u00a0 \u00a0 }]\u00a0 \u00a0 }]\u00a0 }}~\/.claude\/hooks\/session-context.sh:#!\/bin\/bashBRANCH=$(git branch &#8212;show-current 2&gt;\/dev\/null)CHANGES=$(git status &#8212;porcelain 2&gt;\/dev\/null | wc -l | tr -d &#8216; &#8216;)jq -n \\\u00a0 &#8212;arg branch &#171;$BRANCH&#187; \\\u00a0 &#8212;arg changes &#171;$CHANGES&#187; \\\u00a0 &#8216;{\u00a0 \u00a0 &#171;watchPaths&#187;: [&#171;package.json&#187;, &#171;.env&#187;, &#171;tsconfig.json&#187;],\u00a0 \u00a0 &#171;additionalContext&#187;: &#171;Current branch: \\($branch). Uncommitted changes: \\($changes) files.&#187;\u00a0 }&#8217;\u0422\u0435\u043f\u0435\u0440\u044c Claude Code \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u0432\u0430\u0448\u0438\u043c\u0438 package.json, .env \u0438 tsconfig \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0438 \u0437\u043d\u0430\u0435\u0442, \u043d\u0430 \u043a\u0430\u043a\u043e\u0439 \u0432\u044b \u0432\u0435\u0442\u043a\u0435 \u0438 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443 \u0432\u0430\u0441 \u043d\u0435\u0437\u0430\u043a\u043e\u043c\u043c\u0438\u0447\u0435\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0435\u0449\u0451 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b \u0447\u0442\u043e-\u043b\u0438\u0431\u043e \u043d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442\u0435.\u0410 \u0432\u043e\u0442 \u0442\u043e\u0442, \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0434\u043e\u0431\u0440\u044f\u0435\u0442 read-only bash-\u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0431\u0435\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430.settings.json:{\u00a0 &#171;hooks&#187;: {\u00a0 \u00a0 &#171;PreToolUse&#187;: [{\u00a0 \u00a0 \u00a0 &#171;matcher&#187;: &#171;Bash&#187;,\u00a0 \u00a0 \u00a0 &#171;hooks&#187;: [{\u00a0 \u00a0 \u00a0 \u00a0 &#171;type&#187;: &#171;command&#187;,\u00a0 \u00a0 \u00a0 \u00a0 &#171;command&#187;: &#171;~\/.claude\/hooks\/auto-approve-readonly.sh&#187;\u00a0 \u00a0 \u00a0 }]\u00a0 \u00a0 }]\u00a0 }}~\/.claude\/hooks\/auto-approve-readonly.sh:#!\/bin\/bashCMD=$(jq -r &#8216;.tool_input.command&#8217; &lt; \/dev\/stdin)if echo &#171;$CMD&#187; | grep -qE &#8216;^(ls|cat|echo|pwd|whoami|date|git status|git log|git diff)&#8217;; then\u00a0 echo &#8216;{&#171;permissionDecision&#187;: &#171;allow&#187;, &#171;permissionDecisionReason&#187;: &#171;Safe read-only command&#187;}&#8217;fi\u041f\u043e \u0441\u0443\u0442\u0438, \u0432\u044b \u0441\u0442\u0440\u043e\u0438\u0442\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043d\u0430 shell-\u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445. \u041f\u043e\u043b\u044f permissionDecision \u043d\u0435\u0442 \u043d\u0438 \u0432 \u043a\u0430\u043a\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438.\u0422\u0440\u0438 \u043f\u043e\u043b\u044f hooks, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0437\u0430\u0431\u044b\u043b\u0430 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c\u0417\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044f hooks \u2014 \u044d\u0442\u043e type, command, matcher, timeout, if \u0438 statusMessage. \u041f\u0430\u0440\u0441\u0435\u0440 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0435\u0449\u0451 \u0442\u0440\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u044f\u044e\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 hooks.once: true \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 hook \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0435\u0433\u043e \u0443\u0434\u0430\u043b\u044f\u0435\u0442. \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438:{\u00a0 &#171;hooks&#187;: {\u00a0 \u00a0 &#171;SessionStart&#187;: [{\u00a0 \u00a0 \u00a0 &#171;hooks&#187;: [{\u00a0 \u00a0 \u00a0 \u00a0 &#171;type&#187;: &#171;command&#187;,\u00a0 \u00a0 \u00a0 \u00a0 &#171;command&#187;: &#171;[ -f .env ] || cp .env.example .env &amp;&amp; echo &#8216;Created .env from template'&#187;,\u00a0 \u00a0 \u00a0 \u00a0 &#171;once&#187;: true,\u00a0 \u00a0 \u00a0 \u00a0 &#171;statusMessage&#187;: &#171;First-time setup&#8230;&#187;\u00a0 \u00a0 \u00a0 }]\u00a0 \u00a0 }]\u00a0 }}\u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c inline. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 .env, \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0448\u0430\u0431\u043b\u043e\u043d, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442, \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f.async: true \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 hook \u0432 \u0444\u043e\u043d\u0435, \u043d\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044f Claude. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0438 \u0437\u0430\u0431\u044b\u043b:{\u00a0 &#171;hooks&#187;: {\u00a0 \u00a0 &#171;PostToolUse&#187;: [{\u00a0 \u00a0 \u00a0 &#171;matcher&#187;: &#171;Bash&#187;,\u00a0 \u00a0 \u00a0 &#171;hooks&#187;: [{\u00a0 \u00a0 \u00a0 \u00a0 &#171;type&#187;: &#171;command&#187;,\u00a0 \u00a0 \u00a0 \u00a0 &#171;command&#187;: &#171;jq &#8216;{timestamp: now, command: .tool_input.command, session: .session_id}&#8217; &lt; \/dev\/stdin &gt;&gt; ~\/.claude\/audit.jsonl&#187;,\u00a0 \u00a0 \u00a0 \u00a0 &#171;async&#187;: true\u00a0 \u00a0 \u00a0 }]\u00a0 \u00a0 }]\u00a0 }}\u042d\u0442\u043e \u043b\u043e\u0433\u0438\u0440\u0443\u0435\u0442 \u043a\u0430\u0436\u0434\u0443\u044e bash-\u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0432 \u0444\u0430\u0439\u043b \u0430\u0443\u0434\u0438\u0442\u0430, \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0441\u0435\u0441\u0441\u0438\u0438 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438.asyncRewake: true \u2014 \u0441\u0430\u043c\u043e\u0435 \u0445\u0438\u0442\u0440\u043e\u0435. \u041e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0444\u043e\u043d\u0435 \u043a\u0430\u043a async, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 \u00ab\u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u043e\u043c \u043f\u0443\u0442\u0438\u00bb. \u041d\u043e \u0435\u0441\u043b\u0438 \u043e\u043d \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u0441 \u043a\u043e\u0434\u043e\u043c 2, \u043e\u043d \u0431\u0443\u0434\u0438\u0442 \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e. \u041d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0439, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0451 \u0445\u043e\u0440\u043e\u0448\u043e, \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0439, \u043a\u043e\u0433\u0434\u0430 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0442\u0430\u043a:settings.json:{\u00a0 &#171;hooks&#187;: {\u00a0 \u00a0 &#171;PostToolUse&#187;: [{\u00a0 \u00a0 \u00a0 &#171;matcher&#187;: &#171;Write|Edit&#187;,\u00a0 \u00a0 \u00a0 &#171;hooks&#187;: [{\u00a0 \u00a0 \u00a0 \u00a0 &#171;type&#187;: &#171;command&#187;,\u00a0 \u00a0 \u00a0 \u00a0 &#171;command&#187;: &#171;~\/.claude\/hooks\/scan-secrets.sh&#187;,\u00a0 \u00a0 \u00a0 \u00a0 &#171;asyncRewake&#187;: true,\u00a0 \u00a0 \u00a0 \u00a0 &#171;statusMessage&#187;: &#171;Scanning for secrets&#8230;&#187;\u00a0 \u00a0 \u00a0 }]\u00a0 \u00a0 }]\u00a0 }}~\/.claude\/hooks\/scan-secrets.sh:#!\/bin\/bashFILE=$(jq -r &#8216;.tool_input.file_path \/\/ .tool_response.filePath&#8217; &lt; \/dev\/stdin)if grep -qE &#8216;(password|secret|api_key)\\s*=&#8217; &#171;$FILE&#187; 2&gt;\/dev\/null; then\u00a0 exit 2\u00a0 # \u0411\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u043c: \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0441\u0435\u043a\u0440\u0435\u0442\u044bfiexit 0\u00a0 \u00a0 # \u0427\u0438\u0441\u0442\u043e: \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c\u042d\u0442\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0438\u0448\u0435\u0442 Claude, \u043d\u0430 \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u044b. \u0415\u0441\u043b\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u2014 \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 Claude. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u2014 \u0432\u044b \u0434\u0430\u0436\u0435 \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u043e\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f.\u041f\u043e\u043b\u044f frontmatter \u0441\u043a\u0438\u043b\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0442 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 name, description, allowed-tools, argument-hint, when_to_use \u0438 context. \u0420\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0441\u0435\u0440 frontmatter \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0435\u0449\u0451 \u0448\u0435\u0441\u0442\u044c.model \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0430\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u043a\u0438\u043b\u043b. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 haiku \u0434\u043b\u044f \u0434\u0435\u0448\u0451\u0432\u044b\u0445 \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0438 opus \u0434\u043b\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430:&#8212;name: quick-lintdescription: Fast lint check using the cheapest modelmodel: haikueffort: lowallowed-tools: Bash, Readargument-hint: &#171;[file]&#187;&#8212;Run the project linter on: $ARGUMENTSDetect the linter from config (eslint, ruff, clippy) and run it. Report only errors, not warnings.\u042d\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430 Haiku \u0441 \u043d\u0438\u0437\u043a\u0438\u043c effort, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0434\u0451\u0448\u0435\u0432\u043e. \u0414\u043b\u044f \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f model: opus \u0438 effort: max.effort \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0435\u043c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0434\u0443\u043c\u0430\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u044c. low, medium, high \u0438\u043b\u0438 max. \u042d\u0442\u043e \u043c\u0430\u043f\u043f\u0438\u0442\u0441\u044f \u043d\u0430 \u0442\u0443 \u0436\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 effort, \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0433\u043b\u0443\u0431\u0438\u043d\u043e\u0439 \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0439 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0432\u0435\u0442.hooks \u0437\u0430\u0434\u0430\u0451\u0442 hooks, \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043a \u043f\u0435\u0440\u0438\u043e\u0434\u0443, \u043f\u043e\u043a\u0430 \u0441\u043a\u0438\u043b\u043b \u0430\u043a\u0442\u0438\u0432\u0435\u043d. \u041e\u043d\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0441\u043a\u0438\u043b\u043b \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442, \u0438 \u0441\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f:&#8212;name: strict-typescriptdescription: Write TypeScript with type checking on every saveallowed-tools: Bash, Read, Write, Edit, Grep, Globhooks:\u00a0 PostToolUse:\u00a0 \u00a0 &#8212; matcher: &#171;Write|Edit&#187;\u00a0 \u00a0 \u00a0 hooks:\u00a0 \u00a0 \u00a0 \u00a0 &#8212; type: command\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 command: &#171;~\/.claude\/hooks\/typecheck-on-save.sh&#187;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 statusMessage: &#171;Type checking&#8230;&#187;\u00a0 \u00a0 \u00a0 \u00a0 &#8212; type: command\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 command: &#171;~\/.claude\/hooks\/lint-on-save.sh&#187;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 async: true&#8212;Write TypeScript with strict enforcement. Every file you touch gets type-checked and linted automatically.$ARGUMENTS~\/.claude\/hooks\/typecheck-on-save.sh:#!\/bin\/bashFILE=$(jq -r &#8216;.tool_input.file_path \/\/ .tool_response.filePath&#8217; &lt;&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-481591","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/481591","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=481591"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/481591\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=481591"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=481591"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=481591"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}