关于 enonic-content-type-generator
这项 Skill 根据项目需求生成 Enonic XP 内容类型 XML。它会识别项目、将字段映射到 Enonic XP 输入类型,并验证生成的结构。
主要功能
- 01检测 Enonic XP 项目根目录
- 02将字段映射到输入类型
- 03生成内容类型 XML
- 04创建 mixin 和 x-data 文件
- 05验证 XML 与结构值
适用场景
- 01为 Enonic XP 项目添加内容类型
- 02定义字段、选项集或项目集
- 03生成 mixin 或 x-data 文件
- 04检查生成的 XML 结构问题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ webmaxru/ enonic-agent-skills --skill enonic-content-type-generator安装后在 Claude Code 中输入/enonic-content-type-generator确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/content-type.template.xmlreferences/content-type-reference.mdexamples.mdtroubleshooting.mdscripts/find-enonic-targets.mjs详细介绍
Enonic XP 内容类型生成器
操作步骤
步骤 1:检测 Enonic XP 项目
- 执行
node scripts/find-enonic-targets.mjs [workspaceRoot],查找 Enonic XP 项目根目录。 - 如果脚本返回空数组,提示未找到 Enonic XP 项目标记,并询问目标目录。
- 保存检测到的项目根目录,供后续步骤使用。
步骤 2:收集需求
- 从请求中确定内容类型名称。名称必须采用小写字母和连字符格式(例如,
blog-post)。 - 确定显示名称,即便于阅读的标签(例如,
Blog Post)。 - 确定超类型。除非请求指定文件夹(
base:folder)或其他内置类型,否则默认为base:structured。 - 列出所有请求的字段及其输入类型。阅读
references/content-type-reference.md,将自然语言字段描述映射为正确的 Enonic XP 输入类型和配置。 - 确定是否有项目集(可重复的分组字段)、选项集(单选或多选)或 mixin 引用。
- 如果请求提及 mixin,确定是生成 mixin 文件,还是引用现有文件。
- 如果请求提及 x-data,确定是生成 x-data 文件,还是引用现有文件。
步骤 3:生成内容类型 XML
- 阅读
assets/content-type.template.xml,获取起始模板。 - 将
DISPLAY_NAME替换为步骤 2 中的显示名称。 - 将
DESCRIPTION替换为简短描述;如果未提供描述,则移除该元素。 - 将
<super-type>元素设置为步骤 2 中确定的值。 - 在
<form>元素中填入已确定的输入项、项目集、选项集、字段集和 mixin 引用。 - 对于每个输入项:
- 使用 camelCase 设置
name属性。 - 将
type属性设置为准确的 Enonic XP 输入类型名称(区分大小写)。 - 根据需要添加
<label>、<occurrences>、<help-text>、<default>和<config>。
- 使用 camelCase 设置
- 对于 ComboBox 和 RadioButton 输入项,在
<config>中包含所有选项。 - 对于 ContentSelector、ImageSelector 和 MediaSelector 输入项,根据指定内容,在
<config>中包含allowContentType、allowPath、treeMode和hideToggleIcon。 - 对于 TextLine 和 TextArea,如果请求了验证约束,则添加包含
max-length、show-counter或regexp的<config>。 - 对于 Long 和 Double,如果请求了范围约束,则添加包含
min和max的<config>。 - 对于 DateTime,如果请求存储时包含时区信息,则添加
<config>和<timezone>true</timezone>。 - 如果需要参考示例,请阅读
references/examples.md。
步骤 4:写入文件
- 构造目标路径:
[projectRoot]/src/main/resources/site/content-types/[name]/[name].xml - 如果目录不存在,则创建该目录。
- 将生成的 XML 写入文件。
- 如果生成了 mixin,则将其写入:
[projectRoot]/src/main/resources/site/mixins/[name]/[name].xml - 如果生成了 x-data,则将其写入:
[projectRoot]/src/main/resources/site/x-data/[name]/[name].xml - 如果
site.xml中需要引用 x-data,则根据指定内容添加带有allowContentTypes和optional属性的<x-data>条目。
步骤 5:验证输出
- 验证生成的 XML 格式正确。
- 通过参照
references/content-type-reference.md,确认每个<input>都具有有效的type属性。 - 确认同一嵌套层级中的所有
name属性均唯一。 - 确认
<occurrences>的值逻辑一致(最小值 <= 最大值,或最大值 = 0 表示无限制)。 - 如果请求询问超类型、输入类型或架构结构,但未要求生成文件,则使用
references/content-type-reference.md回答问题,不创建文件。
错误处理
- 如果
scripts/find-enonic-targets.mjs以非零代码退出,请报告 stderr 消息,并要求用户手动提供项目根目录路径。 - 如果请求的输入类型与任何已知的 Enonic XP 输入类型都不匹配,请阅读
references/content-type-reference.md并建议最接近的匹配项。不要自行编造输入类型名称。 - 如果 XML 验证失败,请阅读
references/troubleshooting.md以诊断并修正错误,然后重新生成文件。 - 如果无法解析 mixin 引用,请在编写内容类型之前确认 mixin 文件路径存在。
评论
支持 Markdown