mcpField
H
hyva-create-module

hyva-create-module

github.com/hyva-themesDevelopment851.3k installsUpdated 13w ago
Repository

About hyva-create-module

hyva-create-module is a skill for scaffolding Magento 2 modules in app/code. It validates inputs and creates the registration, Composer, and module configuration files from templates, with optional setup execution.

Key features

  1. 01Validates vendor and module names
  2. 02Checks for existing module directories
  3. 03Generates three module files from templates
  4. 04Supports dependencies and Composer requirements
  5. 05Optional setup:upgrade execution

Use cases

  1. 01Create a new Magento 2 module scaffold
  2. 02Set up a module with dependencies and package requirements

Install

Copy the command and run it in a terminal.

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

After installing, type/hyva-create-modulein Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

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

Details

From the project README

Create Magento 2 Module

This utility skill creates new Magento 2 modules in app/code/. It is designed to be called by other skills that need module scaffolding.

Command execution: For commands that need to run inside the development environment (e.g., bin/magento), use the hyva-exec-shell-cmd skill to detect the environment and determine the appropriate command wrapper.

Parameters

When invoking this skill, the calling skill should provide:

ParameterRequiredDescription
vendorYesVendor name in PascalCase (e.g., Acme)
moduleYesModule name in PascalCase (e.g., CustomFeature)
descriptionNoModule description for composer.json (default: "[Vendor] [Module] module")
dependenciesNoArray of module dependencies for <sequence> in module.xml
composer_requireNoObject of composer requirements (package: version)

Workflow

Step 1: Validate Input
  • Verify vendor name is PascalCase (starts with uppercase, alphanumeric only)
  • Verify module name is PascalCase
  • Check that app/code/{Vendor}/{Module} does not already exist
Step 2: Create Directory Structure
app/code/{Vendor}/{Module}/
├── registration.php
├── composer.json
└── etc/
    └── module.xml
Step 3: Generate Files
registration.php

Use template assets/templates/registration.php.tpl:

  • Replace {{VENDOR}} with vendor name
  • Replace {{MODULE}} with module name
composer.json

Use template assets/templates/composer.json.tpl:

  • Replace {{VENDOR}} with vendor name (PascalCase)
  • Replace {{MODULE}} with module name (PascalCase)
  • Replace {{vendor_kebabcase}} with kebab-case, hyphenated vendor name
  • Replace {{module_kebabcase}} with kebab-case, hyphenated module name
  • Replace {{DESCRIPTION}} with description
  • Add entries from composer_require parameter to the require section
module.xml

Use template assets/templates/module.xml.tpl:

  • Replace {{VENDOR}} with PascalCase vendor name
  • Replace {{MODULE}} with PascalCase module name
  • Replace {{SEQUENCE}} with <sequence> block containing dependencies, or empty string if none
Step 4: Run Setup (Optional)

If the calling skill requests it, run bin/magento setup:upgrade using the hyva-exec-shell-cmd skill for the appropriate wrapper.

Error Handling

Abort module creation and report the error to the calling skill when:

ConditionAction
Vendor name not PascalCaseReport: "Invalid vendor name '{name}': must start with uppercase letter and contain only alphanumeric characters"
Module name not PascalCaseReport: "Invalid module name '{name}': must start with uppercase letter and contain only alphanumeric characters"
Directory already existsReport: "Module already exists at app/code/{Vendor}/{Module}"
Cannot create directoryReport: "Failed to create directory app/code/{Vendor}/{Module}: {error}"
Cannot write fileReport: "Failed to write {filename}: {error}"

If hyva-exec-shell-cmd skill is unavailable when Step 4 is requested, skip the setup:upgrade step and report: "Skipped setup:upgrade - hyva-exec-shell-cmd skill not available. Run manually: bin/magento setup:upgrade"

Template Placeholders

PlaceholderDescriptionExample
{{VENDOR}}Vendor name (PascalCase)Acme
{{MODULE}}Module name (PascalCase)CustomFeature
{{vendor_kebabcase}}Vendor name (kebab-case, split on capitals)acme
{{module_kebabcase}}Module name (kebab-case, split on capitals)custom-feature
{{DESCRIPTION}}Module descriptionAcme CustomFeature module
{{SEQUENCE}}Module sequence XML or empty<sequence><module name="Magento_Catalog"/></sequence>
PascalCase to kebab-case Conversion

Convert module names by inserting a hyphen before each capital letter and lowercasing:

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

Usage by Other Skills

Skills should reference this skill for module creation:

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": "*"}

Example Output

For vendor Acme, module CmsComponents, with Hyva_CmsBase dependency:

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>

Comments

Markdown supported