mcpField
H
hyva-create-module

hyva-create-module

github.com/hyva-themes開発851.3k 回インストール13 週間前に更新
リポジトリ

hyva-create-module について

hyva-create-module は、app/code に Magento 2 モジュールのひな形を作成するスキルです。入力を検証し、テンプレートから登録、Composer、モジュール設定ファイルを生成します。セットアップの実行も選択できます。

主な機能

  1. 01vendor 名とモジュール名の検証
  2. 02既存モジュールディレクトリの確認
  3. 03テンプレートから3種類のファイルを生成
  4. 04依存関係と Composer 要件に対応
  5. 05setup:upgrade の任意実行

活用シーン

  1. 01Magento 2 モジュールのひな形作成
  2. 02依存関係やパッケージ要件を含むモジュールの作成

インストール

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

$npx skills add https://github.com/hyva-themes/hyva-ai-tools --skill hyva-create-module

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/templates/
composer.json.tpl
module.xml.tpl
registration.php.tpl

詳細

Magento 2 モジュールの作成

このユーティリティスキルは、app/code/ に新しい Magento 2 モジュールを作成します。モジュールのひな形が必要な他のスキルから呼び出されるように設計されています。

コマンドの実行: 開発環境内で実行する必要があるコマンド(例:bin/magento)には、hyva-exec-shell-cmd スキルを使用して環境を検出し、適切なコマンドラッパーを判断してください。

パラメーター

このスキルを呼び出す際、呼び出し元のスキルは次の値を指定してください。

パラメーター必須説明
vendorはいPascalCase のベンダー名(例:Acme)
moduleはいPascalCase のモジュール名(例:CustomFeature)
descriptionいいえcomposer.json に記載するモジュールの説明(デフォルト:「[Vendor] [Module] module」)
dependenciesいいえmodule.xml の <sequence> に指定するモジュール依存関係の配列
composer_requireいいえcomposer の依存要件のオブジェクト(パッケージ:バージョン)

ワークフロー

Step 1:入力を検証する
  • ベンダー名が PascalCase であることを確認します(大文字で始まり、英数字のみで構成されていること)
  • モジュール名が PascalCase であることを確認します
  • app/code/{Vendor}/{Module} がすでに存在していないことを確認します
Step 2:ディレクトリー構造を作成する
app/code/{Vendor}/{Module}/
├── registration.php
├── composer.json
└── etc/
    └── module.xml
Step 3:ファイルを生成する
registration.php

テンプレート assets/templates/registration.php.tpl を使用します。

  • {{VENDOR}} をベンダー名に置き換えます
  • {{MODULE}} をモジュール名に置き換えます
composer.json

テンプレート assets/templates/composer.json.tpl を使用します。

  • {{VENDOR}} をベンダー名(PascalCase)に置き換えます
  • {{MODULE}} をモジュール名(PascalCase)に置き換えます
  • {{vendor_kebabcase}} をケバブケース(ハイフン区切り)のベンダー名に置き換えます
  • {{module_kebabcase}} をケバブケース(ハイフン区切り)のモジュール名に置き換えます
  • {{DESCRIPTION}} を説明に置き換えます
  • composer_require パラメーターの項目を require セクションに追加します
module.xml

テンプレート assets/templates/module.xml.tpl を使用します。

  • {{VENDOR}} を PascalCase のベンダー名に置き換えます
  • {{MODULE}} を PascalCase のモジュール名に置き換えます
  • {{SEQUENCE}} を、依存関係を含む <sequence> ブロックに置き換えます。依存関係がない場合は空文字列にします
Step 4:セットアップを実行する(任意)

呼び出し元のスキルから要求された場合は、hyva-exec-shell-cmd スキルを使用して適切なラッパーで bin/magento setup:upgrade を実行します。

エラー処理

次の場合はモジュールの作成を中止し、呼び出し元のスキルにエラーを報告してください。

条件対処
ベンダー名が PascalCase ではない報告:「Invalid vendor name '{name}': must start with uppercase letter and contain only alphanumeric characters」
モジュール名が PascalCase ではない報告:「Invalid module name '{name}': must start with uppercase letter and contain only alphanumeric characters」
ディレクトリーがすでに存在する報告:「Module already exists at app/code/{Vendor}/{Module}」
ディレクトリーを作成できない報告:「Failed to create directory app/code/{Vendor}/{Module}: {error}」
ファイルに書き込めない報告:「Failed to write {filename}: {error}」

Step 4 の実行が要求された際に hyva-exec-shell-cmd スキルを利用できない場合は、setup:upgrade の手順をスキップし、「Skipped setup:upgrade - hyva-exec-shell-cmd skill not available. Run manually: bin/magento setup:upgrade」と報告してください。

テンプレートのプレースホルダー

プレースホルダー説明例
{{VENDOR}}ベンダー名(PascalCase)Acme
{{MODULE}}モジュール名(PascalCase)CustomFeature
{{vendor_kebabcase}}ベンダー名(ケバブケース、大文字で分割)acme
{{module_kebabcase}}モジュール名(ケバブケース、大文字で分割)custom-feature
{{DESCRIPTION}}モジュールの説明Acme CustomFeature module
{{SEQUENCE}}モジュールのシーケンス XML、または空<sequence><module name="Magento_Catalog"/></sequence>
PascalCase から kebab-case への変換

各大文字の前にハイフンを挿入し、小文字に変換してモジュール名を変換します。

PascalCasekebab-case
CustomFeaturecustom-feature
ShoppingCartGraphQlshopping-cart-graph-ql
CmsComponentscms-components
MyModulemy-module

他のスキルからの使用

スキルからモジュールを作成する際は、このスキルを参照してください。

To create the module, use the `hyva-create-module` skill with:
- vendor: "Acme"
- module: "CmsComponents"
- dependencies: ["Hyva_CmsBase"]
- composer_require: {"hyva-themes/commerce-module-cms": "*"}

出力例

ベンダーが Acme、モジュールが CmsComponents、依存関係が Hyva_CmsBase の場合:

app/code/Acme/CmsComponents/registration.php:

<?php
declare(strict_types=1);

use Magento\Framework\Component\ComponentRegistrar;

ComponentRegistrar::register(ComponentRegistrar::MODULE, 'Acme_CmsComponents', __DIR__);

app/code/Acme/CmsComponents/composer.json:

{
    "name": "acme/module-cms-components",
    "description": "Acme CmsComponents module",
    "type": "magento2-module",
    "require": {
        "php": ">=8.1",
        "hyva-themes/commerce-module-cms": "*"
    },
    "autoload": {
        "files": ["registration.php"],
        "psr-4": {
            "Acme\\CmsComponents\\": ""
        }
    }
}

app/code/Acme/CmsComponents/etc/module.xml:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Acme_CmsComponents">
        <sequence>
            <module name="Hyva_CmsBase"/>
        </sequence>
    </module>
</config>

コメント