/ ディレクトリ / プレイグラウンド / craftcms-claude-skills
● コミュニティ michtio ⚡ 即起動

craftcms-claude-skills

作者 michtio · michtio/craftcms-claude-skills

Craft CMS 5を熟知したClaude Codeスキルバンドル — モジュール、Twigテンプレート、マイグレーション、GraphQLクエリをCraft流で生成します。

Claude CodeにCraft CMS 5の実践的な使い方を教える、本番対応のスキル、エージェント、プロジェクトテンプレート集です。汎用的なPHPの提案ではなく、Craft特有のパターン — 適切なエレメントクエリ、フィールドハンドル、モジュール構成、Pixel & Tonicの規約に沿ったコードを生成します。

なぜ使うのか

主な機能

ライブデモ

実際の動作

craftcms-claude-skill.replay ▶ 準備完了
0/0

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "craftcms-claude-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/michtio/craftcms-claude-skills",
        "~/.claude/skills/craftcms-claude-skills"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config を開く。保存後、アプリを再起動。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "craftcms-claude-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/michtio/craftcms-claude-skills",
        "~/.claude/skills/craftcms-claude-skills"
      ],
      "_inferred": true
    }
  }
}

Cursor は Claude Desktop と同じ mcpServers スキーマを使用。プロジェクト設定はグローバルより優先。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "craftcms-claude-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/michtio/craftcms-claude-skills",
        "~/.claude/skills/craftcms-claude-skills"
      ],
      "_inferred": true
    }
  }
}

Cline サイドバーの MCP Servers アイコンをクリックし、"Edit Configuration" を選択。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "craftcms-claude-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/michtio/craftcms-claude-skills",
        "~/.claude/skills/craftcms-claude-skills"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop と同じ形式。Windsurf を再起動して反映。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "craftcms-claude-skill",
      "command": "git",
      "args": [
        "clone",
        "https://github.com/michtio/craftcms-claude-skills",
        "~/.claude/skills/craftcms-claude-skills"
      ]
    }
  ]
}

Continue はマップではなくサーバーオブジェクトの配列を使用。

~/.config/zed/settings.json
{
  "context_servers": {
    "craftcms-claude-skill": {
      "command": {
        "path": "git",
        "args": [
          "clone",
          "https://github.com/michtio/craftcms-claude-skills",
          "~/.claude/skills/craftcms-claude-skills"
        ]
      }
    }
  }
}

context_servers に追加。保存時に Zed がホットリロード。

claude mcp add craftcms-claude-skill -- git clone https://github.com/michtio/craftcms-claude-skills ~/.claude/skills/craftcms-claude-skills

ワンライナー。claude mcp list で確認、claude mcp remove で削除。

ユースケース

実用的な使い方: craftcms-claude-skills

Claude Codeから離れずにCraft CMSカスタムモジュールをスキャフォールドする

👤 サイト固有のモジュールを構築するCraft CMS開発者 ⏱ ~30 min intermediate

使うタイミング: 新しいモジュールが必要だが、既存のモジュールを手作業でコピーしてテンプレートにしたくない場合。

前提条件
  • Craft CMS 5プロジェクトがローカルにセットアップ済み — composer create-project craftcms/craft my-project
  • スキルをクローン済み — git clone https://github.com/michtio/craftcms-claude-skills ~/.claude/skills/craftcms-claude-skills
フロー
  1. モジュールの役割を説明する
    Use craftcms-claude-skills. Create a new module called 'Inventory' that registers a custom element type for warehouse items.✓ コピーしました
    → Claudeが modules/inventory/ 以下に src/Inventory.php、elements/WarehouseItem.php、およびコンフィグエントリをスキャフォールドする
  2. モジュールを接続する
    Register the module in config/app.php and add the bootstrap entry.✓ コピーしました
    → コンフィグの差分が表示される。craft setup/checkでモジュールがエラーなく読み込まれる
  3. エレメントクエリを追加する
    Add a WarehouseItemQuery class with a custom 'sku' parameter that filters on the content table.✓ コピーしました
    → 適切なWHERE句を持つクエリクラス。生SQLの羅列ではない

結果: Pixel & Tonicの規約に準拠した動作するCraftモジュール — 最初のマイグレーションに進める状態です。

注意点
  • ClaudeがCraft 3/4スタイルのコードを生成する — プロンプトで毎回必ずCraft CMS 5と明示する — APIが変更されています
組み合わせ: filesystem · mysql

乱雑なTwigテンプレートをCraftの慣用的な書き方にリファクタリングする

👤 既存のCraftサイトを引き継いだフロントエンド開発者 ⏱ ~45 min intermediate

使うタイミング: 引き継いだCraftプロジェクトのテンプレートが生SQL、インラインPHP、機能しないキャッシュタグだらけの場合。

フロー
  1. 最も問題のあるテンプレートをClaudeに指示する
    Using craftcms-claude-skills, review templates/_entries/blog.twig and rewrite it using proper element queries and {% cache %} tags.✓ コピーしました
    craft.entries、セクションハンドル、正しいキャッシュスコープを使ったリファクタリング済みテンプレート
  2. 再利用可能なマクロを抽出する
    Pull the card markup into a macro in _macros/cards.twig and include it properly.✓ コピーしました
    → マクロファイルが作成される。インクルードに {% from %} 構文を使用

結果: 読み込みが速く、後任の開発者が実際に読めるテンプレートになります。

注意点
  • キャッシュタグが動的なユーザーデータを囲んでしまい、誤ったコンテンツが表示される{% cache %}にはグローバルキーによるバリエーションを使用し、認証済みユーザーデータの周囲には絶対に使わない
組み合わせ: filesystem

コンテンツモデル変更のための安全なCraftマイグレーションを作成する

👤 スキーマ変更を本番環境にデプロイするCraft開発者 ⏱ ~30 min advanced

使うタイミング: 新しいフィールドを追加したり既存のフィールドを再構成する必要があり、データを壊さないマイグレーションが必要な場合。

フロー
  1. 変更内容を説明する
    Use craftcms-claude-skills. Write a Craft migration that adds a 'featuredAt' datetime field to the News section, with a safe backfill from postDate.✓ コピーしました
    → safeUp / safeDown を持つマイグレーションファイル。CraftのFieldsサービスを使用し、生スキーマのハックではない
  2. 開発環境でドライランする
    Walk me through testing this with ./craft migrate/up --interactive=0 on a staging copy first.✓ コピーしました
    → DBバックアップを含むステップバイステップのチェックリスト

結果: 金曜日でも慌てずにデプロイできるマイグレーションです。

注意点
  • プロジェクトコンフィグにフィールドタイプを登録し忘れる — マイグレーション後に必ず craft project-config/write を実行し、YAMLをコミットする
組み合わせ: mysql · git

組み合わせ

他のMCPと組み合わせて10倍の力を

craftcms-claude-skill + filesystem

スキルがCraftパターンを提供し、filesystemがClaudeにプロジェクト内で実際に適用させます

Apply the craftcms-claude-skills module scaffold to my current project directory.✓ コピーしました
craftcms-claude-skill + mysql

マイグレーション作成時にCraftのコンテンツテーブルを確認する

Show me the current schema of the elements_sites table before I write this migration.✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
module_scaffold module name, element types 新しいモジュールを作成する時 0
field_generator field name, type, handle カスタムフィールドタイプを追加する時 0
twig_refactor template path レガシーテンプレートを整理する時 0

コストと制限

運用コスト

APIクォータ
なし
呼び出しあたりのトークン
中程度 — リファレンスファイルはオンデマンドで読み込まれます
金額
無料
ヒント
Craftのコード作業時のみスキル名を指定してください。無関係なタスクにコンテキストのオーバーヘッドが加わります。

セキュリティ

権限、シークレット、影響範囲

認証情報の保管: 認証情報なし
データ送信先: なし — ローカルのプロンプトとファイルのみ

トラブルシューティング

よくあるエラーと対処法

ClaudeがCraft 3時代のコード(`craft()->elements`)を生成する

「Craft CMS 5」と明示的に記載してください。5.xではAPIの名前空間が craft\elements です

確認: grep -r 'craft()->' src/ should return nothing in Craft 5 code
マイグレーションは実行されたがフィールドがCPに表示されない

./craft project-config/write./craft project-config/apply を実行してください — プロジェクトコンフィグのずれが一般的な原因です

確認: ./craft project-config/diff
Craftのプロンプトでスキルが起動しない

名前で明示的に呼び出してください:「use craftcms-claude-skills」。SKILL.mdが存在するか確認してください。

確認: ls ~/.claude/skills/craftcms-claude-skills/SKILL.md

代替案

craftcms-claude-skills 他との比較

代替案代わりに使う場面トレードオフ
Raw Claude CodeCraft固有のイディオムが不要なシンプルなTwigのみの修正汎用的なPHPの提案で、Craftでは不正確なことが多い
symfony-hexagonal-skillCraftではなくSymfonyを使っている場合フレームワークの規約が異なる

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る