How to use
- Copy the installation command and review the source package before installing it in your own agent environment.
- Check the source document for required tools, credentials and supported hosts.
- Describe your input and desired deliverable; review the output against the source material.
npx skills add https://github.com/hyva-themes/hyva-ai-tools --skill hyva-create-moduleBefore you start
- Installation does not include a model subscription, API allowance or permission to access your files.
- Repository stars and installation counts describe activity, not an independent quality or security test.
Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.
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:
| Parameter | Required | Description |
|---|---|---|
vendor | Yes | Vendor name in PascalCase (e.g., Acme) |
module | Yes | Module name in PascalCase (e.g., CustomFeature) |
description | No | Module description for composer.json (default: "[Vendor] [Module] module") |
dependencies | No | Array of module dependencies for <sequence> in module.xml |
composer_require | 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
app/code/{Vendor}/{Module}does not already exist
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
{{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_requireparameter to therequiresection
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:
| 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 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
| Placeholder | Description | Example |
|---|---|---|
{{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 description | Acme 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:
| PascalCase | kebab-case |
|---|---|
CustomFeature | custom-feature |
ShoppingCartGraphQl | shopping-cart-graph-ql |
CmsComponents | cms-components |
MyModule | my-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><!-- Copyright © Hyvä Themes https://hyva.io. All rights reserved. Licensed under OSL 3.0 -->


