agentsclimarketplace

Magento module

Skill staksoft/magento-claude-skills/skills/magento-module

Correct Magento 2 / Mage-OS / Adobe Commerce module development: scaffolding new modules, extending or customizing core behavior (plugin vs observer vs preference decisions), declarative schema and custom tables, product/EAV attributes, dependency injection, checkout/cart/totals and custom order or shipping fee logic, admin configuration (system.xml/ACL), admin grids and ui_components, layout XML and view models, upgrading or migrating custom modules (incl. to Mage-OS) and their composer.json constraints, and debugging playbooks for setup:di:compile failures, layout not applying, and observers/plugins that don't fire. Use this skill whenever the user is writing, modifying, or debugging custom Magento, Mage-OS, or Adobe Commerce code — creating or extending a module/extension, intercepting core behavior, adding database tables or attributes, building admin settings or grids, frontend blocks or templates, or fixing errors from bin/magento commands — even if they don't say "module" explicitly. Strong triggers: "how do I override X in Magento", "my Magento layout/plugin/observer isn't working", "do I use an observer or a plugin", or anything touching app/code, di.xml, events.xml, db_schema.xml, or layout XML. Do NOT trigger for storefront performance/cache audits (use the magento-audit skill), buying or recommending third-party extensions, operational admin tasks (creating coupons, importing product CSVs, session/login settings), Magento hosting/sizing questions, content/SEO copy, or non-Magento platforms like Shopify or WooCommerce.From its SKILL.md

Install
npx -y skills add staksoft/magento-claude-skills --skill magento-module

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 6 commands, including `python scripts/scaffold.py Vendor_Module --path app/code [--description "..."] [--sequence Magento_Catalog,Magento_Checkout]` and 5 more.

SKILL.md

7.8 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it

Magento 2 / Mage-OS Module Development

Expertise for writing Magento 2 modules that compile, pass phpcs --standard=Magento2, and follow current (2.4.x / Mage-OS) conventions. Magento has accumulated a decade of outdated tutorials; this skill exists because the obvious approach found in old blog posts is often wrong today. When in doubt, prefer the conventions here over patterns seen in older code.

Non-negotiable conventions (why they matter)

These are the mistakes that get extensions rejected from the marketplace and break upgrades:

  • Never use ObjectManager::getInstance() in your own code. Constructor injection only. ObjectManager hides dependencies, breaks compilation analysis, and fails code review. (Exceptions: factories/proxies generated by Magento may use it internally — that's fine.)
  • Declarative schema (db_schema.xml), never InstallSchema/UpgradeSchema scripts. Install scripts have been deprecated since 2.3 and make schema state unauditable.
  • Plugins over preferences. A preference (class rewrite) conflicts with every other module that rewrites the same class. A plugin composes. See the decision tree before choosing any extension mechanism.
  • View models, not block classes, for template logic. Custom blocks are legacy; a view model is a plain class injected into a template via layout XML.
  • Escape all template output with $escaper->escapeHtml() / escapeHtmlAttr() / escapeUrl(). Unescaped echo in .phtml is an XSS finding.
  • Service contracts first: depend on Api/ interfaces (e.g. ProductRepositoryInterface), not concrete Model classes, when consuming other modules.
  • Area-scope your di.xml: global etc/di.xml vs etc/frontend/di.xml vs etc/adminhtml/di.xml. A frontend-only plugin registered globally slows down everything.

Workflow

  1. Identify the task type and read the matching reference before writing code:

    TaskRead first
    Change/intercept core behaviorreferences/extension-mechanisms.md
    New module from scratchthis file + run scripts/scaffold.py
    Database tables / columnsreferences/declarative-schema.md
    DI wiring, virtual types, factories, proxiesreferences/di-patterns.md
    Admin settings, grids, menus, ACLreferences/admin-ui.md
    Frontend pages, blocks, templates, layoutreferences/frontend.md
    REST / GraphQL / web APIsreferences/api.md
    CLI commands, cron jobs, message queuesreferences/cli-cron.md
    Writing unit / integration tests (PHPUnit)references/testing.md
    Errors, "not working", compile failuresreferences/debugging.md
  2. For a new module, scaffold the boilerplate with the script — it is deterministic and avoids typos in XML namespaces that cost a compile cycle to discover:

    python scripts/scaffold.py Vendor_Module --path app/code [--description "..."] \
        [--sequence Magento_Catalog,Magento_Checkout]
    

    This emits registration.php, etc/module.xml, and composer.json. Everything else (di.xml, plugins, schema, layout) you write by hand following the references — those parts need judgment, the boilerplate doesn't.

  3. Implement the business logic. Keep each class small; one responsibility per plugin or observer. Name plugins descriptively (<type name="..."><plugin name="acme_add_gift_label" .../></type> — the name is global, so prefix with the vendor).

  4. Verify before declaring done. From the Magento root:

    bin/magento module:enable Vendor_Module
    bin/magento setup:upgrade            # registers module, applies db_schema
    bin/magento setup:di:compile         # catches DI mistakes; must pass
    vendor/bin/phpcs --standard=Magento2 app/code/Vendor/Module   # if installed
    bin/magento cache:flush
    

    If setup:di:compile fails, go to the debugging reference — the error messages are cryptic but mechanical to resolve. Do not hand unverified code back to the user when a Magento installation is available to compile against.

Decision shortcuts

  • "Override what a core method returns/receives" → plugin (after/before).
  • "React to something happening (order placed, product saved)" → observer, or a plugin on the service contract if you need to alter the result.
  • "Replace an entire class implementation" → almost never; re-read references/extension-mechanisms.md — there is usually a plugin- or di-argument-based alternative that composes better.
  • "Add a column to a core table" → don't; use an extension attribute or a satellite table (references/declarative-schema.md).
  • "Template needs data" → view model (references/frontend.md).
  • "Expose data to REST/GraphQL/headless" → service contract (Api/ interface) first, then webapi.xml or schema.graphqls (references/api.md) — never expose a Model.
  • "Run code from CLI / on a schedule / async" → console command, cron job, or message queue (references/cli-cron.md); keep the entry class thin, work in a service.

Final checklist

Before finishing any task, run through references/checklists.md — it covers cache tags, ACL coverage, i18n (__() + i18n/en_US.csv), escaping, and the composer/module.xml consistency checks that reviewers look for.

Mage-OS notes

Mage-OS is a community fork, drop-in compatible with Magento 2.4.x. Code targeting Magento 2.4 works unchanged. In composer.json, depend on magento/framework version ranges (the Mage-OS packages provide/replace them) rather than pinning magento/product-community-edition.

Pairing with live data

If the elgentos magento2-dev-mcp MCP server is connected, prefer it for reading merged configuration (effective di.xml, layout) instead of reasoning from single files — Magento merges XML across modules and the single-file view misleads.

What ships with it: 12 files

64.9 KB alongside SKILL.md, 1 of them executable

evals/

scripts/

Gives 0 of the 12 instructions most project setup skills give in ~1.5k tokens

Counted across 1,553 of the 3,091 authors here whose files we hold, read 2026-09-06

  • Write the configuration filein 36 of 1553
  • Create the directory structurein 35 of 1553, across 33 files
  • Verify the setupin 31 of 1553, across 28 files
  • Run the setup scriptin 30 of 1553, across 29 files
  • Pre-determine the required sample sizein 29 of 1553, across 12 files
  • Check if the configuration already existsin 29 of 1553
  • Document every testin 26 of 1553, across 10 files
  • Start with a hypothesisin 26 of 1553, across 11 files
  • Ask one question at a timein 22 of 1553
  • Test a single variable per testin 21 of 1553, across 9 files
  • Read product marketing context before asking questionsin 19 of 1553, across 8 files
  • Do not peek and stop earlyin 18 of 1553, across 7 files

Said here and by no other author read

  • Escape all PHP output
  • Use constructor injection instead of ObjectManager
  • Use declarative schema instead of install scripts
  • Use plugins instead of class preferences
  • Use view models instead of block classes
  • Depend on API interfaces rather than concrete models

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.