Help us improve
Share bugs, ideas, or general feedback.
From enonic-skills
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 content modeling, GraphQL queries, JavaScript/TypeScript controllers, or generic XML editing unrelated to Enonic schemas.
npx claudepluginhub webmaxru/ai-native-dev --plugin enonic-skillsHow this skill is triggered — by the user, by Claude, or both
Slash command
/enonic-skills:enonic-content-type-generatorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Step 1: Detect Enonic XP Project**
Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Structures git workflow practices for committing, branching, resolving conflicts, and organizing work across parallel streams. Use when making any code change.
Share bugs, ideas, or general feedback.
Step 1: Detect Enonic XP Project
node scripts/find-enonic-targets.mjs [workspaceRoot] to locate Enonic XP project roots.Step 2: Gather Requirements
blog-post).Blog Post).base:structured unless the request specifies a folder (base:folder) or another built-in type.references/content-type-reference.md to map natural-language field descriptions to the correct Enonic XP input type and configuration.Step 3: Generate the Content Type XML
assets/content-type.template.xml to obtain the starter template.DISPLAY_NAME with the display name from Step 2.DESCRIPTION with a short description or remove the element if none was provided.<super-type> element to the value determined in Step 2.<form> element with the identified inputs, item sets, option sets, field sets, and mixin references.name attribute using camelCase.type attribute to the exact Enonic XP input type name (case-sensitive).<label>, <occurrences>, <help-text>, <default>, and <config> as required.<config>.<config> with allowContentType, allowPath, treeMode, and hideToggleIcon as specified.<config> with max-length, show-counter, or regexp if validation constraints are requested.<config> with min and max if range constraints are requested.<config> with <timezone>true</timezone> if timezone-aware storage is requested.references/examples.md.Step 4: Write the File
[projectRoot]/src/main/resources/site/content-types/[name]/[name].xml[projectRoot]/src/main/resources/site/mixins/[name]/[name].xml[projectRoot]/src/main/resources/site/x-data/[name]/[name].xmlsite.xml, add <x-data> entries with allowContentTypes and optional attributes as specified.Step 5: Validate Output
<input> has a valid type attribute by cross-referencing references/content-type-reference.md.name attributes are unique within their nesting level.<occurrences> values are logically consistent (minimum <= maximum, or maximum = 0 for unlimited).references/content-type-reference.md without creating files.scripts/find-enonic-targets.mjs exits with a non-zero code, report the stderr message and ask for the project root path manually.references/content-type-reference.md and suggest the closest match. Do not invent input type names.references/troubleshooting.md to diagnose and correct the error, then regenerate the file.