[{"data":1,"prerenderedAt":560},["ShallowReactive",2],{"navigation_docs":3,"-methodology":238,"-methodology-surround":558},[4,45,60],{"title":5,"description":6,"icon":7,"path":8,"stem":9,"children":10},"Методология",null,"ruler","\u002Fmethodology","1.methodology",[11,15,20,25,30,35,40],{"title":12,"path":8,"stem":13,"description":14},"bxshef: методология и проверка навыков","1.methodology\u002Findex","Как писать навыки ИИ-агентов для Битрикса и как проверять, что им можно верить",{"title":16,"path":17,"stem":18,"description":19},"Стандарт навыка","\u002Fmethodology\u002Fstandard","1.methodology\u002F1.standard","11 правил, каждое из провала на стенде",{"title":21,"path":22,"stem":23,"description":24},"Методология проверки","\u002Fmethodology\u002Fmethod","1.methodology\u002F2.method","lint → eval → стенд; что измерено",{"title":26,"path":27,"stem":28,"description":29},"bxshef — CLI","\u002Fmethodology\u002Fbxshef","1.methodology\u002F3.bxshef","lint, eval, feedback",{"title":31,"path":32,"stem":33,"description":34},"GitHub Action","\u002Fmethodology\u002Faction","1.methodology\u002F4.action","тот же lint + eval в любом репозитории навыков",{"title":36,"path":37,"stem":38,"description":39},"Заготовка репозитория","\u002Fmethodology\u002Ftemplate","1.methodology\u002F5.template","с чего начать автору модуля",{"title":41,"path":42,"stem":43,"description":44},"Приёмник отзывов","\u002Fmethodology\u002Ffeedback","1.methodology\u002F6.feedback","куда уходят отзывы ИИ-агентов",{"title":46,"description":6,"icon":47,"path":48,"stem":49,"children":50},"Навыки","sparkles","\u002Fskills","2.skills",[51,55],{"title":52,"path":48,"stem":53,"description":54},"Навыки shef.*","2.skills\u002Findex","npx skills add bx-shef\u002Fskills",{"title":56,"path":57,"stem":58,"description":59},"shef-feedback","\u002Fskills\u002Fshef-feedback","2.skills\u002F1.shef-feedback","Отправить отзыв о навыке shef-* или навыке команды. Брать ВСЕГДА, когда просят оставить или отправить отзыв о навыке — даже если сам навык в диалоге не виден, —",{"title":61,"description":6,"icon":62,"path":63,"stem":64,"children":65},"Модули shef.*","package","\u002Fmodules","3.modules",[66,69,131,179],{"title":61,"path":63,"stem":67,"description":68},"3.modules\u002Findex","Что за чем ставить",{"title":70,"description":6,"path":71,"stem":72,"children":73},"shef.options","\u002Fmodules\u002Foptions","3.modules\u002F1.options\u002Findex",[74,76,81,86,91,96,101,106,110,114,119,123,127],{"title":70,"path":71,"stem":72,"description":75},"фундамент: настройки, трейты, компоненты",{"title":77,"path":78,"stem":79,"description":80},"[`\\Shef\\Options\\Installator`] Installer","\u002Fmodules\u002Foptions\u002Finstaller","3.modules\u002F1.options\u002F1.installer","Для облегчения установок.",{"title":82,"path":83,"stem":84,"description":85},"Сборка, CI и релиз","\u002Fmodules\u002Foptions\u002Fbuild-and-install","3.modules\u002F1.options\u002F10.build-and-install","Раскладка репозитория — в module-structure.md, процесс —\nв CONTRIBUTING.md, установка глазами пользователя —\nв README.md.",{"title":87,"path":88,"stem":89,"description":90},"Раскладка репозитория","\u002Fmodules\u002Foptions\u002Fmodule-structure","3.modules\u002F1.options\u002F11.module-structure","Файл про устройство репозитория. Опорные точки модуля — в CLAUDE.md,\nпроцесс — в CONTRIBUTING.md, сборка — в\nbuild-and-install.md.",{"title":92,"path":93,"stem":94,"description":95},"Проверка на портале","\u002Fmodules\u002Foptions\u002Fportal-check","3.modules\u002F1.options\u002F12.portal-check","Всё, что ниже рантайма Битрикса, тестами не закрыть: установка, права, кеш,\nраскладка файлов, поведение при обновлении. Проверять это приходится руками —\nи лучше по списку, потому что забытый шаг находит не разработчик, а клиент.",{"title":97,"path":98,"stem":99,"description":100},"[`\\Shef\\Options\\Main\\Options`] Опции настроек модуля","\u002Fmodules\u002Foptions\u002Foptions","3.modules\u002F1.options\u002F2.options","Поддерживает следующие типы:",{"title":102,"path":103,"stem":104,"description":105},"Работа с пользователями","\u002Fmodules\u002Foptions\u002Fsecurity","3.modules\u002F1.options\u002F3.security","",{"title":107,"path":108,"stem":109,"description":105},"[`\\Shef\\Options\\Main\\Utils`] Утилиты","\u002Fmodules\u002Foptions\u002Futils","3.modules\u002F1.options\u002F4.utils",{"title":111,"path":112,"stem":113,"description":105},"[`\\Shef\\Options\\Components`] Работа с компонентами","\u002Fmodules\u002Foptions\u002Fcomponents","3.modules\u002F1.options\u002F5.components",{"title":115,"path":116,"stem":117,"description":118},"[`\\Shef\\Options\\Options`] Паттерны","\u002Fmodules\u002Foptions\u002Fpattern","3.modules\u002F1.options\u002F6.pattern","Запускаемые примеры: singleton.php,\nconfig.php, smartstd.php —\nкак их гонять, написано в examples\u002FREADME.md.",{"title":120,"path":121,"stem":122,"description":105},"[`\\Shef\\Options\\Tests`] Тестирование","\u002Fmodules\u002Foptions\u002Ftests","3.modules\u002F1.options\u002F7.tests",{"title":124,"path":125,"stem":126,"description":105},"[`\\Shef\\Options\\TraitList`] Набор трейтов","\u002Fmodules\u002Foptions\u002Ftraitlist","3.modules\u002F1.options\u002F8.traitlist",{"title":128,"path":129,"stem":130,"description":105},"Правила для ИИ-агентов в этом репозитории","\u002Fmodules\u002Foptions\u002Fagent-rules","3.modules\u002F1.options\u002F9.agent-rules",{"title":132,"description":6,"path":133,"stem":134,"children":135},"shef.problems","\u002Fmodules\u002Fproblems","3.modules\u002F2.problems\u002Findex",[136,138,143,147,152,157,161,166,169,172,175],{"title":132,"path":133,"stem":134,"description":137},"логи, журнал событий, учёт проблем",{"title":139,"path":140,"stem":141,"description":142},"[`\\Shef\\Problems\\Integration`] События и меню","\u002Fmodules\u002Fproblems\u002Fevents","3.modules\u002F2.problems\u002F1.events","Что модуль регистрирует в ядре при установке. Список — в .settings.php, ключ\ninstallEvents; что каждый обработчик существует, сверяет\ntests\u002Fsettings_test.php.",{"title":144,"path":145,"stem":146,"description":105},"Безопасность логов","\u002Fmodules\u002Fproblems\u002Fsecurity","3.modules\u002F2.problems\u002F10.security",{"title":148,"path":149,"stem":150,"description":151},"Быстрая отладка: `_pr`, `_log`, `_log1`","\u002Fmodules\u002Fproblems\u002Fdeffunctions","3.modules\u002F2.problems\u002F2.deffunctions","Функции объявляет def-functions.php, подключается он из include.php.",{"title":153,"path":154,"stem":155,"description":156},"Уровни логирования","\u002Fmodules\u002Fproblems\u002Floglevel","3.modules\u002F2.problems\u002F3.loglevel","Уровни — стандарт PSR-3, в Monolog это \\Monolog\\Level. Ниже — когда какой брать.",{"title":158,"path":159,"stem":160,"description":105},"[`\\Shef\\Problems\\Integration\\Monolog`] Monolog","\u002Fmodules\u002Fproblems\u002Fmonolog","3.modules\u002F2.problems\u002F4.monolog",{"title":162,"path":163,"stem":164,"description":165},"Ротация логов","\u002Fmodules\u002Fproblems\u002Flogrotate","3.modules\u002F2.problems\u002F5.logrotate","Логи модуля лежат в каталоге логов — по умолчанию на уровень выше корня сайта,\nдля BitrixVM \u002Fhome\u002Fbitrix\u002Fsh_log\u002F*.log, — и сами не чистятся. Ротацию делает\nlogrotate — системная утилита, а не Monolog: Monolog тоже умеет\n(RotatingFileHandler), но тогда за файлами следит каждый PHP-процесс, а не\nодна служба.",{"title":128,"path":167,"stem":168,"description":105},"\u002Fmodules\u002Fproblems\u002Fagent-rules","3.modules\u002F2.problems\u002F6.agent-rules",{"title":82,"path":170,"stem":171,"description":85},"\u002Fmodules\u002Fproblems\u002Fbuild-and-install","3.modules\u002F2.problems\u002F7.build-and-install",{"title":87,"path":173,"stem":174,"description":90},"\u002Fmodules\u002Fproblems\u002Fmodule-structure","3.modules\u002F2.problems\u002F8.module-structure",{"title":92,"path":176,"stem":177,"description":178},"\u002Fmodules\u002Fproblems\u002Fportal-check","3.modules\u002F2.problems\u002F9.portal-check","Всё, что ниже рантайма Битрикса, тестами не закрыть: установка, права, меню,\nраскладка файлов, журнал событий, поведение при обновлении. Проверять это\nприходится руками — и лучше по списку, потому что забытый шаг находит не\nразработчик, а клиент.",{"title":180,"description":6,"path":181,"stem":182,"children":183},"shef.insync","\u002Fmodules\u002Finsync","3.modules\u002F3.insync\u002Findex",[184,186,191,194,198,203,208,213,218,222,227,232,235],{"title":180,"path":181,"stem":182,"description":185},"агенты, импорт, API-клиенты, модели",{"title":187,"path":188,"stem":189,"description":190},"[`\\Shef\\InSync\\Agents`] Агенты","\u002Fmodules\u002Finsync\u002Fagents","3.modules\u002F3.insync\u002F1.agents","Агент импорта — наследник \\Shef\\InSync\\Agents\\AAgent. Описание агента для\nb_agent — \\Shef\\InSync\\Agents\\Entity, установку и управление берёт на себя\n\\Shef\\InSync\\Agents\\Manager.",{"title":87,"path":192,"stem":193,"description":90},"\u002Fmodules\u002Finsync\u002Fmodule-structure","3.modules\u002F3.insync\u002F10.module-structure",{"title":92,"path":195,"stem":196,"description":197},"\u002Fmodules\u002Finsync\u002Fportal-check","3.modules\u002F3.insync\u002F11.portal-check","Всё, что ниже рантайма Битрикса, тестами не закрыть: установка, права, левое\nменю, раскладка компонентов, агенты, таблица импорта, поведение при\nобновлении. Проверять это приходится руками — и лучше по списку, потому что\nзабытый шаг находит не разработчик, а клиент.",{"title":199,"path":200,"stem":201,"description":202},"Безопасность","\u002Fmodules\u002Finsync\u002Fsecurity","3.modules\u002F3.insync\u002F12.security","Модуль даёт другим модулям заготовки для синхронизаций, и самые опасные места\nу него общие с ними: кто может запускать агенты и импорт, что ложится в каталоги\nимпорта, что уходит в SQL и в лог. Ниже — что держит модуль и что остаётся\nпроекту.",{"title":204,"path":205,"stem":206,"description":207},"[`\\Shef\\InSync\\Sync`] Импорт","\u002Fmodules\u002Finsync\u002Fimport","3.modules\u002F3.insync\u002F2.import","Импорт идёт в два шага через таблицу импорта \\Shef\\InSync\\Sync\\Model\\SyncTable\n(shef_insync_model):",{"title":209,"path":210,"stem":211,"description":212},"[`\\Shef\\InSync\\Api`] API","\u002Fmodules\u002Finsync\u002Fapi","3.modules\u002F3.insync\u002F3.api","Обращение к внешнему API по HTTP — наследник \\Shef\\InSync\\Api\\AConnector.",{"title":214,"path":215,"stem":216,"description":217},"[`\\Shef\\InSync\\TraitList\\Xml`] Парсинг XML","\u002Fmodules\u002Finsync\u002Fxml","3.modules\u002F3.insync\u002F4.xml","Разбор XML сделан через SbWereWolf\u002Fxml-navigator\n(статья на Хабре): XMLReader идёт по\nдокументу потоком, а каждый элемент с нужным тегом HierarchyComposer\nпревращает в массив — n имя, v значение, a атрибуты, s вложенные\nэлементы.",{"title":219,"path":220,"stem":221,"description":105},"Компоненты","\u002Fmodules\u002Finsync\u002Fcomponents","3.modules\u002F3.insync\u002F5.components",{"title":223,"path":224,"stem":225,"description":226},"Страницы","\u002Fmodules\u002Finsync\u002Fpage","3.modules\u002F3.insync\u002F6.page","Страницы модуля — в левом меню, штатным разделом intranet\n(Bitrix\\Intranet\\CustomSection): раздел «SH Импорт», код shinsync.\nВерхней панели и shef.uiclear больше нет.",{"title":228,"path":229,"stem":230,"description":231},"[`\\Shef\\InSync\\Main\\Options`] Опции настроек модуля","\u002Fmodules\u002Finsync\u002Foptions","3.modules\u002F3.insync\u002F7.options","Опции для страницы настроек модуля импорта (на ShOptionsConfig из\nshef.options): добавьте их во вкладку своего options_conf.php.",{"title":128,"path":233,"stem":234,"description":105},"\u002Fmodules\u002Finsync\u002Fagent-rules","3.modules\u002F3.insync\u002F8.agent-rules",{"title":82,"path":236,"stem":237,"description":85},"\u002Fmodules\u002Finsync\u002Fbuild-and-install","3.modules\u002F3.insync\u002F9.build-and-install",{"id":239,"title":12,"body":240,"description":14,"extension":553,"meta":554,"navigation":335,"path":8,"rawbody":555,"seo":556,"stem":13,"__hash__":557},"docs\u002F1.methodology\u002Findex.md",{"type":241,"value":242,"toc":546},"minimark",[243,265,274,279,411,424,428,436,443,505,523,527,530,542],[244,245,246,247,251,252,259,260,264],"p",{},"Навык — папка со ",[248,249,250],"code",{},"SKILL.md"," по открытому стандарту\n",[253,254,258],"a",{"href":255,"rel":256},"https:\u002F\u002Fagentskills.io",[257],"nofollow","Agent Skills",": ИИ-агент (Claude Code, Codex, Cursor\nи другие) читает описание, сам берёт нужный навык под задачу и делает по\nканону модуля. Здесь — не навыки, а ",[261,262,263],"strong",{},"как их писать и как проверять, что им\nможно верить",". Правила выведены из трёх прогонов на стенде и записаны с\nпровалами, которые их породили.",[266,267,272],"pre",{"className":268,"code":270,"language":271},[269],"language-text","STANDARD.md   правила навыка — 11 пунктов\nMETHOD.md     методология проверки: lint → eval → стенд; что измерено\nbxshef\u002F       CLI: lint · eval · feedback (npm: bxshef)\naction\u002F       GitHub Action: тот же lint + eval в любом репозитории навыков\ntemplate\u002F     заготовка репозитория навыков для вашего модуля\nstand\u002F        обвязка стенда (bx.php) и образец задач с чек-листами\nfeedback\u002F     приёмник отзывов: node без зависимостей, Docker\n","text",[248,273,270],{"__ignoreMap":105},[275,276,278],"h2",{"id":277},"быстрый-старт-для-автора-модуля","Быстрый старт для автора модуля",[266,280,284],{"className":281,"code":282,"language":283,"meta":105,"style":105},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","# 1. репозиторий навыков из заготовки\ncp -r template\u002F ..\u002Facme-skills && cd ..\u002Facme-skills\n#    переименовать acme-* в свой префикс, написать первый навык по STANDARD.md\n\n# 2. проверить локально\nnpx bxshef lint --dir skills --code ..\u002Facme.module\nBXSHEF_EVAL_KEY=… npx bxshef eval --dir skills --repeat 3\n\n# 3. в CI — уже есть: .github\u002Fworkflows\u002Fskills.yml зовёт bx-shef\u002Fskills-standard\u002Faction@v1\n","bash",[248,285,286,295,324,330,337,343,367,400,405],{"__ignoreMap":105},[287,288,291],"span",{"class":289,"line":290},"line",1,[287,292,294],{"class":293},"sutJx","# 1. репозиторий навыков из заготовки\n",[287,296,298,302,306,310,313,317,321],{"class":289,"line":297},2,[287,299,301],{"class":300},"sbgvK","cp",[287,303,305],{"class":304},"stzsN"," -r",[287,307,309],{"class":308},"s_sjI"," template\u002F",[287,311,312],{"class":308}," ..\u002Facme-skills",[287,314,316],{"class":315},"sP7_E"," &&",[287,318,320],{"class":319},"sptTA"," cd",[287,322,323],{"class":308}," ..\u002Facme-skills\n",[287,325,327],{"class":289,"line":326},3,[287,328,329],{"class":293},"#    переименовать acme-* в свой префикс, написать первый навык по STANDARD.md\n",[287,331,333],{"class":289,"line":332},4,[287,334,336],{"emptyLinePlaceholder":335},true,"\n",[287,338,340],{"class":289,"line":339},5,[287,341,342],{"class":293},"# 2. проверить локально\n",[287,344,346,349,352,355,358,361,364],{"class":289,"line":345},6,[287,347,348],{"class":300},"npx",[287,350,351],{"class":308}," bxshef",[287,353,354],{"class":308}," lint",[287,356,357],{"class":304}," --dir",[287,359,360],{"class":308}," skills",[287,362,363],{"class":304}," --code",[287,365,366],{"class":308}," ..\u002Facme.module\n",[287,368,370,374,378,381,384,386,389,391,393,396],{"class":289,"line":369},7,[287,371,373],{"class":372},"su5hD","BXSHEF_EVAL_KEY",[287,375,377],{"class":376},"smGrS","=",[287,379,380],{"class":308},"…",[287,382,383],{"class":300}," npx",[287,385,351],{"class":308},[287,387,388],{"class":308}," eval",[287,390,357],{"class":304},[287,392,360],{"class":308},[287,394,395],{"class":304}," --repeat",[287,397,399],{"class":398},"srdBf"," 3\n",[287,401,403],{"class":289,"line":402},8,[287,404,336],{"emptyLinePlaceholder":335},[287,406,408],{"class":289,"line":407},9,[287,409,410],{"class":293},"# 3. в CI — уже есть: .github\u002Fworkflows\u002Fskills.yml зовёт bx-shef\u002Fskills-standard\u002Faction@v1\n",[244,412,413,414,417,418,423],{},"Пользователь ставит ваши навыки командой ",[248,415,416],{},"npx skills add \u003Cowner>\u002Facme-skills","\n(",[253,419,422],{"href":420,"rel":421},"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fskills",[257],"skills"," от Vercel) — своего\nустановщика здесь нет и не будет.",[275,425,427],{"id":426},"эталон","Эталон",[244,429,430,435],{},[253,431,434],{"href":432,"rel":433},"https:\u002F\u002Fgithub.com\u002Fbx-shef\u002Fskills",[257],"bx-shef\u002Fskills"," — навыки к модулям\nshef.options, shef.problems, shef.insync, собранные по этому стандарту; переезжают\nтуда из модулей по одному.",[275,437,439,440],{"id":438},"что-проверяет-bxshef","Что проверяет ",[248,441,442],{},"bxshef",[444,445,446,462],"table",{},[447,448,449],"thead",{},[450,451,452,456,459],"tr",{},[453,454,455],"th",{},"команда",[453,457,458],{},"что",[453,460,461],{},"падает",[463,464,465,479,492],"tbody",{},[450,466,467,473,476],{},[468,469,470],"td",{},[248,471,472],{},"bxshef lint [--dir] [--code] [--ignore]",[468,474,475],{},"frontmatter, длина описания, evals у операционных, противоречия в evals, классы из навыка существуют в коде",[468,477,478],{},"есть ошибки",[450,480,481,486,489],{},[468,482,483],{},[248,484,485],{},"bxshef eval [--repeat 3] [--min 0.9] [--only …] [--agent claude]",[468,487,488],{},"по фразе задачи модель или настоящий Claude Code выбирает нужный навык",[468,490,491],{},"доля попаданий ниже порога",[450,493,494,499,502],{},[468,495,496],{},[248,497,498],{},"bxshef feedback send --skill …",[468,500,501],{},"отзыв о навыке из командной строки (агенту не нужен: навык отзыва шлёт его сам, curl-ом)",[468,503,504],{},"отзыв не отправлен",[244,506,507,508,511,512,514,515,518,519,522],{},"Ключ модели для ",[248,509,510],{},"eval"," — только из окружения (",[248,513,373],{},"), в файлы не\nпишется. По умолчанию — BitrixGPT через AI Router Вайбкода\n(",[248,516,517],{},"BXSHEF_EVAL_URL",", ",[248,520,521],{},"BXSHEF_EVAL_MODEL"," переопределяют).",[275,524,526],{"id":525},"лицензия","Лицензия",[244,528,529],{},"MIT. Ограничений на использование методологии нет — цель в том, чтобы её\nвзяли.",[531,532,533],"note",{},[244,534,535,536,541],{},"Источник: ",[253,537,540],{"href":538,"rel":539},"https:\u002F\u002Fgithub.com\u002Fbx-shef\u002Fskills-standard\u002Fblob\u002Fmain\u002FREADME.md",[257],"skills-standard\u002FREADME.md"," — правки туда, сайт пересобирается сам.",[543,544,545],"style",{},"html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":105,"searchDepth":326,"depth":326,"links":547},[548,549,550,552],{"id":277,"depth":297,"text":278},{"id":426,"depth":297,"text":427},{"id":438,"depth":297,"text":551},"Что проверяет bxshef",{"id":525,"depth":297,"text":526},"md",{},"---\ntitle: \"bxshef: методология и проверка навыков\"\ndescription: \"Как писать навыки ИИ-агентов для Битрикса и как проверять, что им можно верить\"\n---\n\nНавык — папка со `SKILL.md` по открытому стандарту\n[Agent Skills](https:\u002F\u002Fagentskills.io): ИИ-агент (Claude Code, Codex, Cursor\nи другие) читает описание, сам берёт нужный навык под задачу и делает по\nканону модуля. Здесь — не навыки, а **как их писать и как проверять, что им\nможно верить**. Правила выведены из трёх прогонов на стенде и записаны с\nпровалами, которые их породили.\n\n```\nSTANDARD.md   правила навыка — 11 пунктов\nMETHOD.md     методология проверки: lint → eval → стенд; что измерено\nbxshef\u002F       CLI: lint · eval · feedback (npm: bxshef)\naction\u002F       GitHub Action: тот же lint + eval в любом репозитории навыков\ntemplate\u002F     заготовка репозитория навыков для вашего модуля\nstand\u002F        обвязка стенда (bx.php) и образец задач с чек-листами\nfeedback\u002F     приёмник отзывов: node без зависимостей, Docker\n```\n\n## Быстрый старт для автора модуля\n\n```bash\n# 1. репозиторий навыков из заготовки\ncp -r template\u002F ..\u002Facme-skills && cd ..\u002Facme-skills\n#    переименовать acme-* в свой префикс, написать первый навык по STANDARD.md\n\n# 2. проверить локально\nnpx bxshef lint --dir skills --code ..\u002Facme.module\nBXSHEF_EVAL_KEY=… npx bxshef eval --dir skills --repeat 3\n\n# 3. в CI — уже есть: .github\u002Fworkflows\u002Fskills.yml зовёт bx-shef\u002Fskills-standard\u002Faction@v1\n```\n\nПользователь ставит ваши навыки командой `npx skills add \u003Cowner>\u002Facme-skills`\n([skills](https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fskills) от Vercel) — своего\nустановщика здесь нет и не будет.\n\n## Эталон\n\n[bx-shef\u002Fskills](https:\u002F\u002Fgithub.com\u002Fbx-shef\u002Fskills) — навыки к модулям\nshef.options, shef.problems, shef.insync, собранные по этому стандарту; переезжают\nтуда из модулей по одному.\n\n## Что проверяет `bxshef`\n\n| команда | что | падает |\n|---|---|---|\n| `bxshef lint [--dir] [--code] [--ignore]` | frontmatter, длина описания, evals у операционных, противоречия в evals, классы из навыка существуют в коде | есть ошибки |\n| `bxshef eval [--repeat 3] [--min 0.9] [--only …] [--agent claude]` | по фразе задачи модель или настоящий Claude Code выбирает нужный навык | доля попаданий ниже порога |\n| `bxshef feedback send --skill …` | отзыв о навыке из командной строки (агенту не нужен: навык отзыва шлёт его сам, curl-ом) | отзыв не отправлен |\n\nКлюч модели для `eval` — только из окружения (`BXSHEF_EVAL_KEY`), в файлы не\nпишется. По умолчанию — BitrixGPT через AI Router Вайбкода\n(`BXSHEF_EVAL_URL`, `BXSHEF_EVAL_MODEL` переопределяют).\n\n## Лицензия\n\nMIT. Ограничений на использование методологии нет — цель в том, чтобы её\nвзяли.\n\n::note\nИсточник: [skills-standard\u002FREADME.md](https:\u002F\u002Fgithub.com\u002Fbx-shef\u002Fskills-standard\u002Fblob\u002Fmain\u002FREADME.md) — правки туда, сайт пересобирается сам.\n::\n\n",{"title":12,"description":14},"VI-xf_S7KPrJaDXH_FO4DU6yvHEGWoSVGlA0PQe5-kc",[6,559],{"title":16,"path":17,"stem":18,"description":19,"children":-1},1790857268554]