hyva-themes/hyva-ai-tools

hyva-create-module

Create a new Magento 2 module in app/code/.

Trending #8625 Hot #1549 First seen Jan 27, 2026

Installation

$ npx skills add hyva-themes/hyva-ai-tools --skill hyva-create-module

Summary

  • 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".

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from hyva-themes/hyva-ai-tools · top by installs.

npx skills add hyva-themes/hyva-ai-tools

Browse all from hyva-themes/hyva-ai-tools

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Also listed on

Alternate registries and mirrors of this skill.

Repository health

Stars 83
License LICENSE.txt
Default branch main
Open issues 1
Status Active

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 6,249 B
  • docs SUMMARY.md 402 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1,000 installs

SKILL.md

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.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:

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 -->