Разработка и код-ревью на PHP под 1С-Битрикс (сайт/интернет-магазин, «Управление сайтом») с проверкой по РЕАЛЬНОМУ коду ядра через инструменты, а не по памяти. Используй всякий раз, когда пишешь/правишь/ревьюишь PHP-код под Битрикс: компоненты, шаблоны, инфоблоки, D7 ORM (Bitrix\Main\*), события, агенты, обработчики, корзину/каталог/заказы (модули sale/catalog/iblock), REST-интеграции; реализуешь задачу по ЧТЗ; ищешь, как устроено ядро или что уже есть в /local. Срабатывай даже без слов «PHP/...
Scanned 9/3/2026
Install to Claude Code
npx -y skills add vgtitov/bitrix-ai-toolkit --skill bitrix-dev --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Bitrix Dev?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vgtitov-bitrix-dev-bitrix-ai-toolkit)More formats (shields.io, HTML) on the badges page.
---
name: bitrix-dev
description: >
Разработка и код-ревью на PHP под 1С-Битрикс (сайт/интернет-магазин, «Управление сайтом») с проверкой по
РЕАЛЬНОМУ коду ядра через инструменты, а не по памяти. Используй всякий раз, когда пишешь/правишь/ревьюишь
PHP-код под Битрикс: компоненты, шаблоны, инфоблоки, D7 ORM (Bitrix\Main\*), события, агенты, обработчики,
корзину/каталог/заказы (модули sale/catalog/iblock), REST-интеграции; реализуешь задачу по ЧТЗ; ищешь, как
устроено ядро или что уже есть в /local. Срабатывай даже без слов «PHP/код/ревью», если речь о реализации в
Битрикс. Железное правило: НЕ выдумывай API Битрикса и сигнатуры — проверяй по реальному коду ядра (Grep/Serena/
bitrix-ci в vendor) и справке dev.1c-bitrix.ru, после правки прогоняй PHPStan и PHP-CS-Fixer. Правки — только в
/local, структуру инфоблоков меняй миграциями. Анализ/архитектура — скилл bitrix-analyst.
---
# Разработка под 1С-Битрикс (PHP) — корректный, производительный и безопасный код по реальному коду
## Читать ПЕРЕД написанием кода (обязательно)
- **`references/quality-standards.md`** — свод качественного Битрикс-кода. Пиши сразу так, **даже если проверки
выключены** (режим `off`/`warn`): линтер лишь подтверждает, а не заменяет знание. Там же мини-чек-лист самопроверки.
- **`references/php-version-matrix.md`** — что доступно в таргет-версии PHP проекта. **Синтаксис новее таргета не
предлагать вообще** (8.4 property hooks на 8.3 = белый экран). Плюс оговорка по `strict_types` в компонентах.
- **`references/architecture.md`** — слои, Anti-Corruption Layer над легаси-ядром, DI (ServiceLocator только в
composition root), паттерны/анти-паттерны, **критерии глубины: когда НЕ усложнять**.
- **`references/custom-framework.md`** — если в `version-stack.toml` есть `[[custom_layers]]` (**свой фреймворк
подрядчика поверх Битрикс**, нередко 30-40% функционала): искать в ТРЁХ слоях — кастомный слой → ядро → `/local`.
Документация Битрикс про их код ничего не знает; источник правды — их код.
- **`references/custom-core.md`** — если в проекте **правлено само ядро** (`core_modified = true`): сигнатуры и
поведение брать по ФАКТИЧЕСКОМУ коду ядра, а не по докам вендора; такие места помечать `[правлено ядро]`.
## По ситуации
- **`references/errors-and-results.md`** — исключения в домене vs `Main\Result` на границе; PSR-3 логирование;
ловушка `abortResultCache()` при исключении внутри кэша компонента.
- **`references/testability.md`** — как класть код, чтобы он был тестируем; unit без ядра vs интеграционные.
- **`references/legacy-refactoring.md`** — Strangler Fig, характеризационные тесты, резка God-класса, Rector.
- **`references/performance*`** и скилл `bitrix-performance` — если задача про скорость/объёмы.
## Локализация (сначала, если есть)
Если в скилле есть `references/local/` — прочитай ПЕРЕД работой: версии платформы/редакции, раскладка проекта,
конвенции компании. Локальное побеждает generic.
## Опциональность проверок
Проверки настраиваются (`config/checks.toml`, env `BITRIX_AI_CHECKS`): `off` / `warn` (по умолчанию — показать, не
блокировать) / `block`. **Качество кода не зависит от режима** — стандарты соблюдай всегда (см. quality-standards.md).
## Главное правило: спроси инструмент, не угадывай
Нейросеть врёт в деталях Битрикса (два ядра, много legacy, неполная api_d7). Источник истины — реальный код и справка:
- **Перед написанием** — найди, как уже сделано: Grep/ripgrep по `/local` и по ядру, `find_symbol` (Serena) по
классам D7. Сигнатуры классов ядра — по реальному коду в `vendor/bitrix-toolkit/bitrix-ci` или стабам
`matiaspub/bxApiDocs`, справка — dev.1c-bitrix.ru. НЕ по памяти.
- **После правки** — прогони **PHPStan** (`analyse --error-format=json`) и **PHP-CS-Fixer** (детерминированно —
через `PostToolUse`-хук). До 3 циклов автоисправления.
- Нет поведения ни в коде, ни в справке — так и скажи. Механизм без сверки помечай **[проверить]**, не «верно».
## Два ядра — различай явно
- **Старое ядро (процедурное):** `$APPLICATION`, `$USER`, `$DB`; `CIBlockElement::GetList`, `CModule`, `CFile`,
`CCatalogProduct`. Живёт и активно используется. Справка: dev.1c-bitrix.ru/api_help/
- **D7 (ООП):** `Bitrix\Main\*`, ORM (`Bitrix\Main\ORM\Query`, `EntityObject`), `EventManager`, `Application`,
сервис-локатор, `Bitrix\Main\Data\Cache`/`TaggedCache`. **Новый код — на D7**, интеропись со старым. Справка:
dev.1c-bitrix.ru/api_d7/ (неполна → смотри исходники ядра / курс «Разработчик Bitrix Framework»).
## Гейт: правки только в /local, ядро read-only
- **Не трогай `/bitrix/modules`** — при обновлении продукта перезаписывается, правки теряются и ломают систему.
- Кастомизация типового компонента — **копированием в `/local/components`**, не правкой ядра. Приоритет поиска у
системы: `/local/*` → `/bitrix/*` (components, templates, modules, php_interface, activities).
- **Структуру инфоблоков/HL-блоков/свойств/прав** меняй миграциями (`sprint.migration`: `php migrate.php add/up`),
не руками в БД/админке без версионирования.
- События/обработчики регистрируй в `/local/php_interface/init.php` (`AddEventHandler`/`EventManager::addEventHandler`).
## Reuse-first, производительность (prod-ready)
- Прежде чем писать своё — ищи готовое в ядре (модули main/iblock/sale/catalog) и marketplace.
- **Кэширование:** компоненты кэшируй (`$arParams['CACHE_TIME']`, `$this->StartResultCache()`); произвольные данные —
`Bitrix\Main\Data\Cache` / `TaggedCache` (сброс по тегам инфоблока). Не делай тяжёлых запросов без кэша.
- **Запросы:** ORM D7 или `CIBlockElement::GetList` с явным `select`/`filter`; НЕ выбирай лишние поля; НЕ делай
запрос в цикле (аналог 1С-грабли) — собирай `filter` по массиву ID.
## Безопасность (чек-лист ревью — Битрикс-специфика)
- **SQL-инъекции:** только ORM или `$DB->ForSql()`/подготовленные фильтры; никакой конкатенации ввода в запрос.
- **XSS:** вывод экранируй `htmlspecialcharsbx()` (не голый echo пользовательских данных).
- **Path traversal:** проверяй/нормализуй пути в файловых операциях (`CFile`, работа с `upload/`).
- **Права:** проверяй `$USER->CanDoOperation()` / права доступа перед действием; не доверяй `$_REQUEST`.
- **CSRF:** формы — с `bitrix_sessid()`/`check_bitrix_sessid()`.
## Стандарт кода
PSR-12 (у Битрикс нет своего codesniffer-ruleset). Прогон: `php-cs-fixer fix` (форматтер) + `phpcs --standard=PSR12`
(доп. проверки). Держи единый `.editorconfig`/ruleset с PhpStorm, чтобы не «воевать» стилем с IDE-ассистентом.
## Инструменты (каналы)
- **Хуки** (`.claude/settings.json`): после правки `*.php` → `php-cs-fixer fix` + `phpstan analyse --error-format=json`.
- **LSP**: `php-lsp` (Intelephense) для навигации; нужен `composer dump-autoload -o` и стабы ядра в includePaths.
- **MCP**: Serena (find_symbol/find_references по коду), `bitrix24/mcp-rest-doc` (справка REST), JetBrains MCP
(диагностики/рефакторинги PhpStorm на рабочей станции).
## Что НЕ делает AI без человека
Правки структуры БД вне миграций; изменения в ядре `/bitrix`; деструктивные операции с данными магазина; передачу
персональных данных клиентов в модель. Любую правку человек принимает после проверки (в т.ч. в PhpStorm).
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!