mcpField
E
enonic-content-type-generator

enonic-content-type-generator

github.com/webmaxru開発0464 回インストール21 週間前に更新
リポジトリ

enonic-content-type-generator について

プロジェクトの要件をもとに Enonic XP のコンテンツタイプ XML を生成するスキルです。プロジェクトを検出し、フィールドを入力タイプに対応付け、生成した構造を検証します。

主な機能

  1. 01Enonic XP のプロジェクトルートを検出
  2. 02フィールドを入力タイプに対応付け
  3. 03コンテンツタイプ XML を生成
  4. 04mixin と x-data ファイルを作成
  5. 05XML と構造値を検証

活用シーン

  1. 01Enonic XP プロジェクトにコンテンツタイプを追加
  2. 02フィールド、オプションセット、アイテムセットを定義
  3. 03mixin または x-data ファイルを生成
  4. 04生成 XML の構造上の問題を確認

インストール

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

$npx skills add https://github.com/webmaxru/enonic-agent-skills --skill enonic-content-type-generator

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

同梱ファイル

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

assets/
content-type.template.xml
references/
content-type-reference.md
examples.md
troubleshooting.md
scripts/
find-enonic-targets.mjs

詳細

Enonic XP コンテンツタイプジェネレーター

手順

ステップ 1:Enonic XP プロジェクトを検出する

  1. node scripts/find-enonic-targets.mjs [workspaceRoot] を実行して、Enonic XP プロジェクトのルートを探します。
  2. スクリプトが空の配列を返した場合、Enonic XP プロジェクトの目印が見つからなかったことを伝え、対象ディレクトリを尋ねます。
  3. 検出したプロジェクトのルートを、後続のステップで使用するために保存します。

ステップ 2:要件を収集する

  1. リクエストからコンテンツタイプ名を特定します。名前は小文字とハイフンで構成する必要があります(例:blog-post)。
  2. 表示名(例:Blog Post)を特定します。
  3. スーパータイプを決定します。リクエストでフォルダー(base:folder)または別の組み込みタイプが指定されていない限り、base:structured を既定値にします。
  4. 要求されたすべてのフィールドとその入力タイプを列挙します。references/content-type-reference.md を読み、自然言語で記述されたフィールドの説明を、適切な Enonic XP 入力タイプと設定に対応付けます。
  5. アイテムセット(繰り返し可能なグループ化フィールド)、オプションセット(単一選択または複数選択の選択肢)、ミックスイン参照の有無を特定します。
  6. リクエストでミックスインについて言及されている場合は、ミックスインファイルを生成するのか、既存のものを参照するのかを判断します。
  7. リクエストで x-data について言及されている場合は、x-data ファイルを生成するのか、既存のものを参照するのかを判断します。

ステップ 3:コンテンツタイプ XML を生成する

  1. assets/content-type.template.xml を読み、ひな型を取得します。
  2. DISPLAY_NAME をステップ 2 の表示名に置き換えます。
  3. DESCRIPTION を短い説明に置き換えます。説明がない場合は、この要素を削除します。
  4. <super-type> 要素をステップ 2 で決定した値に設定します。
  5. 特定した入力、アイテムセット、オプションセット、フィールドセット、ミックスイン参照を <form> 要素に追加します。
  6. 各入力について、次のように設定します。
    • name 属性に camelCase を使用します。
    • type 属性を、正確な Enonic XP 入力タイプ名(大文字と小文字を区別)に設定します。
    • 必要に応じて、<label>、<occurrences>、<help-text>、<default>、<config> を追加します。
  7. ComboBox 入力と RadioButton 入力では、すべての選択肢を <config> 内に含めます。
  8. ContentSelector、ImageSelector、MediaSelector 入力では、指定に応じて allowContentType、allowPath、treeMode、hideToggleIcon を含む <config> を追加します。
  9. TextLine と TextArea では、入力制約が指定されている場合、max-length、show-counter、または regexp を含む <config> を追加します。
  10. Long と Double では、範囲制約が指定されている場合、min と max を含む <config> を追加します。
  11. タイムゾーンを考慮した保存が求められている場合、DateTime に <timezone>true</timezone> を含む <config> を追加します。
  12. 参考例が必要な場合は、references/examples.md を読みます。

ステップ 4:ファイルを書き込む

  1. 出力先のパスを構成します:[projectRoot]/src/main/resources/site/content-types/[name]/[name].xml
  2. ディレクトリが存在しない場合は作成します。
  3. 生成した XML をファイルに書き込みます。
  4. ミックスインを生成した場合は、次の場所に書き込みます:[projectRoot]/src/main/resources/site/mixins/[name]/[name].xml
  5. x-data を生成した場合は、次の場所に書き込みます:[projectRoot]/src/main/resources/site/x-data/[name]/[name].xml
  6. site.xml で x-data の参照が必要な場合は、指定に応じて allowContentTypes 属性と optional 属性を含む <x-data> エントリーを追加します。

ステップ 5:出力を検証する

  1. 生成した XML の形式が正しいことを確認します。
  2. references/content-type-reference.md と照合し、すべての <input> に有効な type 属性があることを確認します。
  3. 各階層内で name 属性が重複していないことを確認します。
  4. <occurrences> の値に論理的な矛盾がないことを確認します(最小値 <= 最大値、または無制限の場合は最大値 = 0)。
  5. ファイル生成を求めずにスーパータイプ、入力タイプ、スキーマ構造について質問された場合は、ファイルを作成せず、references/content-type-reference.md を使って質問に回答します。

エラー処理

  • scripts/find-enonic-targets.mjs がゼロ以外のコードで終了した場合は、stderr メッセージを報告し、プロジェクトルートのパスを手動で尋ねます。
  • 要求された入力タイプが既知の Enonic XP 入力タイプに一致しない場合は、references/content-type-reference.md を読み、最も近い候補を提案します。入力タイプ名を創作してはいけません。
  • XML の検証に失敗した場合は、references/troubleshooting.md を読んでエラーを診断・修正し、その後ファイルを再生成します。
  • ミックスイン参照を解決できない場合は、コンテンツタイプを書き込む前に、ミックスインのファイルパスが存在することを確認します。

コメント