用途
该技能用于修改 Umbraco 17+ 站点上已经存在的某一个类型:页面、组合、元素或数据项。它不创建新类型,只处理“改已有类型”的场景,例如增加、删除或重排属性,把某个属性改为必填,以及调整类型的结构。
主要能力
- 完整检查目标类型的定义、它由哪些组合构成、被哪些类型使用,以及是否已有内容。
- 对变更进行分类:安全、需要确认,或会丢失内容,并为每类给出相应替代方案。
- 确定变更细节,包括新属性的位置与排序、新增子项、新文件夹等。
- 生成该类型的 Update 页面、需要的新数据类型和变更集(changeset),并做 lint 检查。
- 在应用前暂停,让用户在了解会丢失哪些内容后批准变更集。
- 以“读取—修改—整体写回”的方式应用变更,然后回读校验、比对属性数量并输出状态与报告。
使用方式
流程分为七步:检查、分类变更、确定细节、编写并 lint、批准、应用、校验。执行机制有两种:连接了 Umbraco Developer MCP 时通过 MCP 操作;否则使用由同一份需求文档生成的手动操作流程。该技能本身不附带代码和资源,其产出的需求文档由 umbraco-content-requirements-documentation 中的 linter 检查。
适用场景
适用于已在 Umbraco 17+ 站点上运行、需要对现有文档类型或组合做结构调整,并且希望变更前先评估内容影响、变更后再校验的项目。
重要限制与规则
- 写操作前必须先完整读取;update-document-type 会替换整个类型,写回内容若遗漏某属性,会删除该属性及其所有已存值,因此不能直接根据需求文档拼写请求体,必须从回读结果出发只改页面所指部分。
- 别名(alias)不可就地重命名:模板、Models Builder 类和查询都会读取它,Umbraco 也仍以旧别名存储值;如需改别名,应提出新增属性并做迁移。
- 删除属性即删除数据:该属性在所有使用该类型及组合它的类型的所有节点上的值都会丢失,需说明受影响节点数量、指明迁移方案,并在批准环节获得用户明确同意。
- 新增字段应遵循类型既有约定,例如加入现有标签页、排序按百位递增、沿用别名前缀、在合适时复用已有数据类型。
- 必填是追溯性的:字段为空的现有节点在填写前无法保存,需提前说明,并在数据类型支持时建议默认值。
- “直接加个字段”只是变更请求,不等于用户已批准尚未看过的需求文档,批准环节不可跳过。
版本与验证
目标版本为 Umbraco 17+;MCP 工具名称以实际连接的工具列表为准。技能附有 evals/evals.json 中的客观断言,可通过 umbraco-skill-evaluator 运行,覆盖等级为 Documented。据资料说明,相关指导经过评估,但未在真实站点上运行过。