webman-best-practices について
Webman 開発者向けに、DDD アーキテクチャ、依存関係のルール、PER Coding Style の実践指針をまとめたスキルです。よくある設計・コード上の問題ごとに項目が整理されています。
主な機能
- 01DDD アーキテクチャと依存関係の指針
- 02命名規則の確認
- 03PER Coding Style の指針
- 04ドメインパターンの指針
- 05依存性注入の指針
活用シーン
- 01Webman プロジェクトの設計確認
- 02ディレクトリとインターフェースの命名確認
- 03ドメインモデル設計の改善
- 04依存性注入パターンの監査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ kitephp/ webman-design-skills --skill webman-best-practicesインストール後、Claude Code で/webman-best-practicesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/architecture/avoid-static-methods.mdconstructor-injection.mdcontroller-skip-service.mddomain-framework-dependency.mdinfrastructure-without-contract.mdno-service-locator.mdservice-circular-dependency.mdservice-direct-model-access.mdreferences/code-style/complete-type-declarations.mdconstructor-property-promotion.mdprefer-final-classes.mdreadonly-properties.mdstrict-types-declaration.mdreferences/domain/business-logic-in-domain.mddomain-events.mdentity-identity.mdrich-domain-model.mdvalue-object-immutability.mdreferences/naming/directory-lowercase.mdinterface-naming.mdnamespace-directory-mismatch.mdrepository-implementation-naming.mdservice-naming-pattern.md詳細
Webman フレームワークにおける、DDD アーキテクチャ、依存関係のルール、PER Coding Style に準拠したベストプラクティスです。
アーキテクチャと依存関係
- コントローラーがサービス層を省略してモデルに直接依存している → controller-skip-serviceを参照
- ドメイン層がフレームワークのクラス(Request、DB など)に依存している → domain-framework-dependencyを参照
- サービス層が別のサービスと循環依存している → service-circular-dependencyを参照
- インフラストラクチャ層が Contract インターフェースを実装していない → infrastructure-without-contractを参照
- リポジトリではなく、サービス内でモデルを直接使用している → service-direct-model-accessを参照
命名規則
- ディレクトリ名に camelCase または PascalCase を使用している → directory-lowercaseを参照
- インターフェース名に Interface サフィックスがない → interface-namingを参照
- サービス名が VerbNounService パターンに従っていない → service-naming-patternを参照
- リポジトリの実装名に説明的なプレフィックスがない → repository-implementation-namingを参照
- 名前空間がディレクトリ構造と一致していない → namespace-directory-mismatchを参照
コードスタイル(PER Coding Style)
- ファイルの先頭に declare(strict_types=1) がない → strict-types-declarationを参照
- デフォルトで final class を使用していない → prefer-final-classesを参照
- 不変のプロパティに readonly を使用していない → readonly-propertiesを参照
- パラメーターまたは戻り値の型宣言がない → complete-type-declarationsを参照
- コンストラクターのプロパティプロモーションを使用していない → constructor-property-promotionを参照
ドメインパターン
- エンティティに一意の識別子がない → entity-identityを参照
- 値オブジェクトが変更可能である → value-object-immutabilityを参照
- ドメインではなくサービスにビジネスロジックがある → business-logic-in-domainを参照
- 副作用にドメインイベントを使用していない → domain-eventsを参照
- ゲッターとセッターだけの貧血ドメインモデルになっている → rich-domain-modelを参照
依存性注入
- 依存性注入ではなく静的メソッドを使用している → avoid-static-methodsを参照
- コンストラクターインジェクションを使用していない → constructor-injectionを参照
- 依存性注入ではなくサービスロケーターパターンを使用している → no-service-locatorを参照
コメント
Markdown 対応