このファイルは、Claude Code (claude.ai/code) がこのリポジトリのコードを操作する際のガイダンスを提供します。
Connect-CMSは、Webサイトを簡単に作成するためのコンテンツ管理システムです。Laravel 8フレームワークをベースに構築されており、プラグインベースのアーキテクチャを採用しています。
# PHP Code Sniffer(コードスタイルチェック)
composer run phpcs
# PHP Code Beautifier and Fixer(コードスタイル自動修正)
composer run phpcbf
# 特定のファイルやディレクトリのみをチェック
composer run phpcs-any -- path/to/file
composer run phpcbf-any -- path/to/file# テストの実行(推奨)
php artisan test
# 特定のテストファイルの実行例
php artisan test tests/Unit/Database/Seeders/DefaultConfigsTableSeederTest.php
# PHPUnit による直接実行
composer run phpunit
# または
./vendor/bin/phpunit
# PHPUnit で特定のテストファイルの実行
./vendor/bin/phpunit tests/Feature/SomeTest.php重要: テストは php artisan test コマンドを使用すること。PHPUnitの直接実行よりもLaravelの機能を活用できます。
# 開発環境向けビルド
npm run dev
# 本番環境向けビルド
npm run prod
# ファイル監視(開発中)
npm run watchこのシステムの核心は app/Plugins/ にあるプラグインアーキテクチャです:
- User プラグイン: フロントエンド機能(Blog、Database、Forms、Reservations等)
- Manage プラグイン: 管理機能(UserManage、PageManage、SystemManage等)
- Api プラグイン: API機能
- Mypage プラグイン: マイページ機能
各プラグインは PluginBase クラスを継承し、独自の機能を実装します。
pages: ページ階層構造(Nested Set Pattern)frames: ページ内のフレーム(プラグインの配置エリア)buckets: 各プラグインのデータコンテナplugins: プラグインの設定情報
users_roles: ユーザーと権限の関連buckets_roles: バケット(プラグインデータ)レベルの権限page_roles: ページレベルの権限
- phpcs.xml に従った PSR-12 準拠のコーディングスタイル
- プライベートフィールドには
_プレフィックスを使用 - 変数名はスネークケース(例:
$existing_config_names、$first_count)を使用
app/Plugins/: プラグイン本体app/Enums/: 列挙型定義app/Models/: Eloquentモデルdatabase/migrations/: データベースマイグレーションresources/views/plugins/: プラグインのビューファイルpublic/: 公開ファイル(CSS、JS、画像等)
新しいプラグインを作成する場合は、既存のプラグインを参考にして以下の構造に従ってください:
- プラグインクラス(UserPluginBase継承)
- モデル(必要に応じて)
- ビューファイル
- マイグレーションファイル
- データベースの変更は必ずマイグレーションファイルを作成
created_id、updated_idフィールドを適切に設定- 論理削除(
deleted_at)を適切に使用
- 新機能には対応するテストを作成
- Feature テストとUnit テストを適切に使い分け
- テストデータベースは
db-testingデータベースを使用 - テストの実行は
php artisan testコマンドを使用 - 変数名はスネークケース(例:
$first_count、$config_name)を使用
このプロジェクトではGitHub Flowを採用しています:
- mainブランチ: 常にデプロイ可能な状態を保つ
- featureブランチ: 新機能や修正は
feature/プレフィックスで分岐 - ワークフロー:
masterからfeature/task-nameブランチを作成- 開発・テスト・コミット
- Pull Requestを作成(
feature/task-name→master) - レビュー・承認後にマージ
- featureブランチを削除
PRを作成する際は以下のルールに必ず従ってください:
タイトル形式: [Plugin/Area] 具体的な変更内容の説明
- 例:
[キャビネット] ZIPファイルを解凍してアップロードする機能を追加しました - プラグイン名やエリア名を角括弧で明記
- ですます調で記述
- リリースノートに使用されるため、ユーザーが理解しやすい説明にする
PRテンプレート: .github/PULL_REQUEST_TEMPLATE.md に従って作成
- 概要: 変更の背景・目的・内容
- レビュー完了希望日
- 関連PR/Issues
- 参考情報
- DB変更の有無
- チェックリスト
詳細: https://github.com/opensource-workshop/connect-cms/wiki/Pull-requests-Rule
重要: PRの本文には、Claude産とわかるようなメッセージ(例: "🤖 Generated with Claude Code")を含めないこと
- 現在のプロジェクトの状態や、今後の開発で注意すべき点を随時メモする
- 特に、複雑な実装や重要な設計判断の背景を記録する
- プラグイン固有の知識: 各プラグインの実装パターンや特殊な仕様は積極的に記録し、今後の開発効率化に活用する
- 複数回にわたる検索が必要な場合は、Taskツールを使用してトークン消費を削減
- 複数ファイルの同時読み込みには、並行してReadツールを実行
- 特定のファイルパスが分かっている場合は、GrepやGlobよりもReadツールを直接使用
- 重複するコードパターンを発見した場合は、DRY原則に従って共通テンプレートやヘルパー関数を作成
- 特にビューファイルでは、includeを活用した部分テンプレート化を推奨
- フォームモードは
form(通常)とquestionnaire(アンケート)の2種類 - アンケートモードでは
index_tandem.blade.phpとforms_confirm_tandem.blade.phpを使用 - Captcha機能は
mews/captchaライブラリを使用、APIエンドポイント:/captcha/api/flat - 共通エラー表示は
@include('plugins.common.errors_inline', ['name' => 'field_name'])を使用
- git commentにはprefixを付ける
- masterブランチへのcommitは禁止です。featureブランチを作ること。