enonic-content-type-generator
Original:🇺🇸 English
Translated
1 scriptsChecked / no sensitive code detected
Generates Enonic XP content type XML schema definitions from natural-language descriptions. Covers structured content modeling including input types, form layout, option sets, item sets, mixins, x-data, and content-type inheritance. Use when creating, scaffolding, or generating Enonic XP content type definitions, adding fields or sets to existing content types, or querying Enonic XP input types and super-types. Do not use for non-Enonic CMS content modeling, GraphQL queries, JavaScript/TypeScript controllers, or generic XML editing unrelated to Enonic schemas.
14installs
Added on
NPX Install
npx skill4agent add webmaxru/enonic-agent-skills enonic-content-type-generatorTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Enonic XP Content Type Generator
Procedures
Step 1: Detect Enonic XP Project
- Execute to locate Enonic XP project roots.
node scripts/find-enonic-targets.mjs [workspaceRoot] - If the script returns an empty array, warn that no Enonic XP project markers were found and ask for the target directory.
- Store the detected project root for use in subsequent steps.
Step 2: Gather Requirements
- Identify the content type name from the request. The name must be lowercase-hyphenated (e.g., ).
blog-post - Identify the display name — a human-readable label (e.g., ).
Blog Post - Determine the super-type. Default to unless the request specifies a folder (
base:structured) or another built-in type.base:folder - List all requested fields with their input types. Read to map natural-language field descriptions to the correct Enonic XP input type and configuration.
references/content-type-reference.md - Identify any item sets (repeatable grouped fields), option sets (single-select or multi-select choices), or mixin references.
- If the request mentions a mixin, determine whether to generate the mixin file or reference an existing one.
- If the request mentions x-data, determine whether to generate the x-data file or reference an existing one.
Step 3: Generate the Content Type XML
- Read to obtain the starter template.
assets/content-type.template.xml - Replace with the display name from Step 2.
DISPLAY_NAME - Replace with a short description or remove the element if none was provided.
DESCRIPTION - Set the element to the value determined in Step 2.
<super-type> - Populate the element with the identified inputs, item sets, option sets, field sets, and mixin references.
<form> - For each input:
- Set the attribute using camelCase.
name - Set the attribute to the exact Enonic XP input type name (case-sensitive).
type - Add ,
<label>,<occurrences>,<help-text>, and<default>as required.<config>
- Set the
- For ComboBox and RadioButton inputs, include all options inside .
<config> - For ContentSelector and ImageSelector inputs, include with
<config>andallowContentTypeif specified.allowPath - If examples are needed for reference, read .
references/examples.md
Step 4: Write the File
- Construct the target path:
[projectRoot]/src/main/resources/site/content-types/[name]/[name].xml - Create the directory if it does not exist.
- Write the generated XML to the file.
- If a mixin was generated, write it to:
[projectRoot]/src/main/resources/site/mixins/[name]/[name].xml - If x-data was generated, write it to:
[projectRoot]/src/main/resources/site/x-data/[name]/[name].xml
Step 5: Validate Output
- Verify the generated XML is well-formed.
- Confirm every has a valid
<input>attribute by cross-referencingtype.references/content-type-reference.md - Confirm all attributes are unique within their nesting level.
name - Confirm values are logically consistent (minimum <= maximum, or maximum = 0 for unlimited).
<occurrences> - If the request asks about super-types, input types, or schema structure without requesting file generation, answer the question using without creating files.
references/content-type-reference.md
Error Handling
- If exits with a non-zero code, report the stderr message and ask for the project root path manually.
scripts/find-enonic-targets.mjs - If the requested input type does not match any known Enonic XP input type, read and suggest the closest match. Do not invent input type names.
references/content-type-reference.md - If XML validation fails, read to diagnose and correct the error, then regenerate the file.
references/troubleshooting.md - If a mixin reference cannot be resolved, confirm the mixin file path exists before writing the content type.