mcpField
B
bitrix-framework

bitrix-framework

github.com/bxmaximum開発4789 回インストール2 週間前に更新
リポジトリ

bitrix-framework について

Bitrix Framework プロジェクト向けに、各タスクスキルが共通して従う開発規範です。バージョン要件、コード構成、依存性注入の境界、セキュリティ規則と、完了前の確認項目をまとめています。

主な機能

  1. 01Bitrix のバージョンと機能要件を記載
  2. 02独自コードとルートの配置場所を規定
  3. 03レイヤー構成と依存性注入の境界を定義
  4. 04入力処理と出力エスケープの規則
  5. 05完了前チェックリストを提供

活用シーン

  1. 01Bitrix のバージョンに合う API を選定
  2. 02サービス・コントローラー・データアクセスの役割を設計
  3. 03コード変更がセキュリティ規則に沿うか確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/bxmaximum/bitrix-framework-skills --skill bitrix-framework

インストール後、Claude Code で/bitrix-frameworkを入力して読み込まれたか確認します。

詳細

Bitrix Framework の標準規約

ベースライン:main 23.0+ · 検証済み:main 26.800.0

タスクに応じたスキルは説明を見て選択してください。このファイルには、すべてのスキルで前提となるルールを記載しています。

バージョンポリシー

  • まずプロジェクトを確認します:bitrix/modules/main/classes/general/version.php → SM_VERSION。
  • **Since main X.Y** — この機能にはそのバージョンが必要です。各スキルにフォールバックが記載されています。
  • **Since main X.Y\*** — 正確なバージョンは不明ですが、X.Y で存在が確認されており、main 25.100.500 には存在しません。少し前のバージョンから存在する可能性があります。モジュールも同様です(**Since rest 26.200\***):main 25.100.500 に同梱されたモジュールバージョンには存在しません。
  • カーネルのソース:bitrix/modules/<module>/lib/。main 26.600 以降、多くの lib/ ディレクトリ名は PascalCase(lib/Data)です。古いものは小文字です。大文字と小文字を区別せずに検索してください。
機能main での開始バージョン
ルーティング(/local/routes)21.400
/local/.settings.php24.100
バリデーション(Bitrix\Main\Validation)24.300
コントローラーのレンダリングヘルパー25.700
新しい make:*(サービス、エンティティ、イベント、メッセージ、エージェントなど)25.900
永続ストレージ25.1100
コントローラーのフィルター属性、アクションパラメーターのルール、LoggerFactory26.250*
モジュールインストーラーの install/migrations(UpdateSystem\Migration)26.600*
#[ActionAccess]26.600*
機能フラグ Config\Feature26.700

厳守すべき規約

  • カスタムコードはすべて /local/ に配置し、/bitrix/ は編集しないでください。/local/ のファイルは、/bitrix/ の同じパスにあるファイルより優先されます。
  • まず D7 を使います。D7 API が存在しない場合に限り、レガシー(CIBlock*、CUser、$DB)を使い、その旨をコメントに記載してください。
  • コントローラー、ルート、コンポーネント、イベントハンドラーは薄く保ち、ロジックはサービスに、データは ORM テーブルに配置してください。
  • モジュールのクラスを使う前に、Loader::includeModule()/requireModule() を呼び出してください。
  • declare(strict_types=1)、型付きシグネチャを使用し、モジュール間では例外やマジック配列ではなく Result/Error を使ってください。
  • /local/.settings.php は /bitrix/.settings.php 全体を置き換えます。変更したセクションだけでなく、すべてのセクションをコピーしてください。
  • ルートは /local/routes/*.php にのみ追加してください(モジュールのルートはそこから require します)。urlrewrite.php に新しいルートを追加しないでください。
  • マイグレーション:モジュール独自のテーブル/イベント/エージェントは、そのモジュールのインストーラー(install/migrations、bitrix-modules)に配置します。プロジェクトデータと設定は sprint.migration に配置します。インストールされていない場合は、インストールを提案してください。マイグレーションフレームワークをでっち上げないでください。

DI の境界

コンテキストコンストラクター DI方法
アプリケーションサービスはいServiceLocator::get(FQCN) による自動注入。インターフェースまたはスカラー引数の場合に限り、services に登録します
コントローラーアクションはい、パラメーター具象クラスを型指定します。アクションパラメーターのインターフェースは解決されません
コントローラーコンストラクターいいえエンジンから渡されるのは Request のみです
コンソールコマンドいいえexecute() 内で ServiceLocator::getInstance()->get() を使います
イベントハンドラーいいえハンドラー内で解決します
Messenger レシーバーはい自動注入されます。インターフェースまたはスカラー引数の場合に限り登録します

具象クラスに対して className のみを指定した services エントリーは、自動注入を無効にします(引数なしで new $class() が呼び出されます)。constructor クロージャーまたは constructorParams を使用するか、登録しないでください。詳細:bitrix-service-locator。

セキュリティのデフォルト設定

  • $_GET/$_POST/$_SESSION/$_COOKIE は読み取らず、Context のリクエストと Application::getSession() を使ってください。
  • AJAX アクションではデフォルトのプリフィルター(Authentication、HttpMethod、Csrf)を維持し、各アクションで権限をチェックしてください。
  • 出力をエスケープし(htmlspecialcharsbx、Json::encode)、入力をキャストし、ORM の select/order/runtime/ExpressionField に渡される値はすべてホワイトリストで制限してください。
  • シークレットは環境変数または .settings.php から取得し、コード、オプション、マイグレーションには記載しないでください。

完了前の確認事項

  • コードは /local/ にあり、モジュールが読み込まれ、厳密な型指定がされていること。
  • すべてのカーネルクラス、メソッド、名前付き引数がプロジェクトのメインバージョンに存在すること(Since を確認)。
  • コントローラー/コンポーネント/テンプレートで DB にアクセスせず、エラーは Result を介して返されること。
  • 読み取りが繰り返される場合はタグ付きキャッシュを使用し、ORM キャッシュは cleanCache() でクリアすること。
  • イベントとエージェントはインストール時に登録し、アンインストール時に削除すること。
  • 本番環境では exception_handling.debug が false であること。

コメント