hyva-create-module
Original:🇺🇸 English
Translated
Create a new Magento 2 module in app/code/. This skill should be used when the user wants to create a module, scaffold a new module, generate module boilerplate, or set up a custom module. It handles registration.php, composer.json, module.xml generation with configurable dependencies. Trigger phrases include "create module", "new module", "scaffold module", "generate module".
3installs
Added on
NPX Install
npx skill4agent add hyva-themes/hyva-ai-tools hyva-create-moduleTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Create Magento 2 Module
This utility skill creates new Magento 2 modules in . It is designed to be called by other skills that need module scaffolding.
app/code/Command execution: For commands that need to run inside the development environment (e.g., ), use the skill to detect the environment and determine the appropriate command wrapper.
bin/magentohyva-exec-shell-cmdParameters
When invoking this skill, the calling skill should provide:
| Parameter | Required | Description |
|---|---|---|
| Yes | Vendor name in PascalCase (e.g., |
| Yes | Module name in PascalCase (e.g., |
| No | Module description for composer.json (default: "[Vendor] [Module] module") |
| No | Array of module dependencies for |
| No | Object 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 does not already exist
app/code/{Vendor}/{Module}
Step 2: Create Directory Structure
app/code/{Vendor}/{Module}/
├── registration.php
├── composer.json
└── etc/
└── module.xmlStep 3: Generate Files
registration.php
Use template :
assets/templates/registration.php.tpl- Replace with vendor name
{{VENDOR}} - Replace with module name
{{MODULE}}
composer.json
Use template :
assets/templates/composer.json.tpl- Replace with vendor name (PascalCase)
{{VENDOR}} - Replace with module name (PascalCase)
{{MODULE}} - Replace with kebab-case, hyphenated vendor name
{{vendor_kebabcase}} - Replace with kebab-case, hyphenated module name
{{module_kebabcase}} - Replace with description
{{DESCRIPTION}} - Add entries from parameter to the
composer_requiresectionrequire
module.xml
Use template :
assets/templates/module.xml.tpl- Replace with PascalCase vendor name
{{VENDOR}} - Replace with PascalCase module name
{{MODULE}} - Replace with
{{SEQUENCE}}block containing dependencies, or empty string if none<sequence>
Step 4: Run Setup (Optional)
If the calling skill requests it, run using the skill for the appropriate wrapper.
bin/magento setup:upgradehyva-exec-shell-cmdError Handling
Abort module creation and report the error to the calling skill when:
| Condition | Action |
|---|---|
| Vendor name not PascalCase | Report: "Invalid vendor name '{name}': must start with uppercase letter and contain only alphanumeric characters" |
| Module name not PascalCase | Report: "Invalid module name '{name}': must start with uppercase letter and contain only alphanumeric characters" |
| Directory already exists | Report: "Module already exists at app/code/{Vendor}/{Module}" |
| Cannot create directory | Report: "Failed to create directory app/code/{Vendor}/{Module}: {error}" |
| Cannot write file | Report: "Failed to write {filename}: {error}" |
If 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"
hyva-exec-shell-cmdTemplate Placeholders
| Placeholder | Description | Example |
|---|---|---|
| Vendor name (PascalCase) | |
| Module name (PascalCase) | |
| Vendor name (kebab-case, split on capitals) | |
| Module name (kebab-case, split on capitals) | |
| Module description | |
| Module sequence XML or empty | |
PascalCase to kebab-case Conversion
Convert module names by inserting a hyphen before each capital letter and lowercasing:
| PascalCase | kebab-case |
|---|---|
| |
| |
| |
| |
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 , module , with dependency:
AcmeCmsComponentsHyva_CmsBaseapp/code/Acme/CmsComponents/registration.php:
php
<?php
declare(strict_types=1);
use Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(ComponentRegistrar::MODULE, 'Acme_CmsComponents', __DIR__);app/code/Acme/CmsComponents/composer.json:
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
<?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>