mcpField
C
component-scaffolder

component-scaffolder

github.com/datex开发92 次安装
代码仓库

关于 component-scaffolder

为 Datex Studio 新组件提供脚手架路由,依据类型选择文件后缀、configurationTypeId、规范骨架及后续 creator skill。它负责分派与创建最小有效组件,不负责组件主体编写。

主要功能

  1. 01按组件类型分派创建器
  2. 02查找后缀与 configurationTypeId
  3. 03使用规范骨架创建组件
  4. 04检查分支冲突并验证后写入
  5. 05将后续编写交给对应 skill

适用场景

  1. 01在 Datex Studio 分支启动新组件
  2. 02确认组件类型对应的文件与配置 ID
  3. 03创建空白有效组件后继续完善

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/datex/skills --skill component-scaffolder

安装后在 Claude Code 中输入/component-scaffolder确认已加载。

详细介绍

组件脚手架

根据有文档记录的骨架,为 Datex Studio 搭建新组件。此技能是“我需要开始创建一个新的 组件”的路由层。它会将请求的组件类型映射到:

  1. 文件后缀(附加在 referenceName 上)。
  2. configurationTypeId 数字 ID。
  3. 规范的最小有效骨架(来源于匹配的创建器技能中的 references/<type>.md)。
  4. 用于接手实际主体编写工作的匹配创建器技能。

创建器技能(action-creator、function-creator、grid-creator 等)负责编写各自组件类型的内容。此技能负责分发决策——选择哪个后缀、哪个 cti、哪个骨架文档、哪个创建器技能——这样就不会在每个创建器技能中重复路由逻辑。分支是事实来源;脚手架工具绝不会写入本地 src/ 树。

参考资料

  • ../datex-studio-conventions/file-format.md — 规范的 configurationTypeId 表、文件后缀规则,以及 cti 错误导致的故障模式。
  • 每个创建器技能的 references/<type>.md — 对应组件类型的规范最小有效骨架。切勿凭记忆编造 JSON 结构;务必查阅匹配的参考文档。

工作流程

  1. 收集三个必需的输入:

    • 类型 — 以下之一:action、function、interface、enum、grid、hub、form、editor、embed、selector、storage、backendTest、datasource(OData 或 flow 查询类型,平台变体)、footprintDatasource(OData 或 flow 查询类型,Footprint 变体)。如果调用方只说了“datasource”,没有说明变体,请询问他们需要哪种变体(平台 -datasource 还是 Footprint -footprintDatasource)——它们对应不同的 configurationTypeId,也是不同的组件变体。完整分类请参阅 datasource-creator/references/datasources.md。
    • 名称 — 组件引用名称(不含文件后缀)。根据 ../datex-studio-conventions/naming-conventions.md,在名称本身上附加类型标识:_storage、_hub、_form、_editor、_embed、_grid、选择器用 _dd、_action、函数用 _flow、接口使用 i_ 前缀、枚举使用 e_ 前缀。
    • 描述 — 非 null、非空,且不超过 100 个字符。这是 Footprint 端 SQL 列的硬性上限——超过限制时,导入会因 SQL 截断错误而失败。如果调用方未提供描述,请向其索取;没有描述不得继续。
  2. 在下表中查找分发对应行,了解该类型的后缀、configurationTypeId、包含规范骨架的参考文档,以及下一步要委派任务的创建器技能。

  3. 从指定文档中读取规范骨架。不要猜测 JSON 结构。参考文档是骨架结构的权威来源(也包含各类型的特定细节,例如选择器和数据源的组件变体规则、后端测试的钩子流布局)。

  4. 应用骨架:

    • referenceName → 组件名称。(例外:actions — referenceName 以 _action 结尾,而文件后缀为 -footprintFlow.json。创建者与名称的配对是有意为之;请参阅 action-creator/references/actions.md。)
    • title → 对于后端类型(function、action、datasource、footprintDatasource、interface、enum、storage、backendTest),标题不会显示在屏幕上,因此将其设为与 referenceName 相同。对于面向用户的类型(form、editor、hub、grid、embed 和独立选择器),title 会显示为页眉 / 对话框标题 / 标签,因此必须是不同的句式大小写显示名称 — 根据名称推导一个(例如,custom_example_map_embed → Example map),或询问调用者。若 title 与 referenceName 的字节内容完全相同,则根据 ../datex-studio-conventions/naming-conventions.md → 面向用户组件的显示名称,属于命名违规。
    • description → 调用者提供的描述(≤100 个字符)。
    • accessModifier → 询问调用者;如果对方没有偏好,则默认为 "public"。
    • configurationTypeId → 调度表中的数字 ID。如有任何疑问,请从同类型的可用组件中复制;错误的 cti 会导致 Validate 成功但 Preview 失败(请参阅 ../datex-studio-conventions/file-format.md)。
    • 所有其他字段 → 骨架默认值(空数组、null 等)。除最小有效骨架所需内容外,不要预填占位属性、筛选器或代码。
  5. 检查分支上的冲突。 分支(而不是本地工作树)是判断现有内容的准则。使用 dxs configuration get <type> <referenceName> -b <branchId> 探查分支。404(DXS-404-001)表示名称可用;任何命中都表示组件已存在 → 停止并报告,不要覆盖。调用者可能想换一个名称,也可能想修改现有组件(这是创建器技能的工作,而不是脚手架工具的工作)。

  6. 将骨架写入临时 body.json。 此本地文件仅用于临时存储;系统记录以分支为准,而不是文件。调用者保留的任何本地工作副本都只是便捷镜像,绝不能作为事实来源。

  7. 先验证,再通过 dxs 在分支上创建 — 两个步骤,且第一步是第二步的前置条件:

    dxs configuration validate <type> -b <branchId> -D body.json   # exit 1 = errors found
    dxs configuration upsert   <type> -b <branchId> -D body.json
    

    validate 在发现错误时会以 1 退出 — 这表示验证报告了问题,并非 CLI 故障。读取 validation_errors 负载,修复骨架并重新验证;未通过验证关卡时,不要运行 upsert。请参阅 ../datex-studio-shared/configuration-roundtrip.md。

    upsert 会根据 referenceName 确定执行创建还是更新;分支上没有对应内容(步骤 5 已确认)时,它会走创建流程。此时,最小有效组件已位于分支上。

  8. 交接给对应的创建器技能。 骨架已位于分支上,因此创建器将在编辑模式下工作(获取 → 提取内部 .json → 编写 → upsert)。告诉调用者后续负责此组件类型的创建器技能,以及显而易见的下一步(例如:“grid 已在分支上搭建好;调用 grid-creator 添加列并连接数据源”,“storage 已搭建好;调用 storage-creator 定义 objectTypeDef 列”)。

分派表

类型后缀(用于 referenceName)configurationTypeId骨架参考创建器技能
action-footprintFlow18action-creator/references/actions.mdaction-creator
function-flow9function-creator/references/functions.mdfunction-creator
interface-customType22type-definition-creator/references/type-definitions.mdtype-definition-creator
enum-customType22type-definition-creator/references/type-definitions.mdtype-definition-creator
grid-grid3grid-creator/references/grids.mdgrid-creator
hub-hub2hub-creator/references/hubs.mdhub-creator
form-form5form-creator/references/forms.mdform-creator
editor-editor4editor-creator/references/editors.mdeditor-creator
embed-embed20embed-creator/references/embeds.mdembed-creator
selector-selector7selector-creator/references/selectors.mdselector-creator
storage-storage17storage-creator/references/storage.mdstorage-creator
backendTest-backendTest24backend-test-creator/references/backend-tests.mdbackend-test-creator
datasource(平台变体)-datasource6datasource-creator/references/datasources.mddatasource-creator
footprintDatasource(Footprint 变体)-footprintDatasource19datasource-creator/references/datasources.mddatasource-creator

表格说明:

  • 数据源有两种组件变体(-datasource 和 -footprintDatasource),它们对应不同的 configurationTypeId。每种变体都可以携带任一查询类型(OData 或 flow)——变体决定运行时层级,查询类型决定数据的获取方式。可选性矩阵(例如,selectors 只能指向 -datasource.json)由 datasource-creator/references/datasources.md 维护——请参考该文档,不要在此重新推导。
  • interface 和 enum 共用 -customType.json 组件类型(cti=22)。其内部主体差异很大——两种结构请参阅 type-definition-creator/references/type-definitions.md。
  • 对于定制变体(例如,通过 baseConfiguration 覆盖定制现有的核心库 grid),不要从这些骨架搭建——定制覆盖结构不同,由 tailoring-overlay 技能负责。请直接调用该技能,而不是通过此脚手架分派。
  • 修改现有组件时,不要搭建新文件——请直接调用匹配的创建器技能。此技能仅搭建新组件。

规则

  • 骨架来自参考文档。 构建正文前,务必先阅读对应的 references/<type>.md。不要凭记忆编造 JSON 结构。参考文档是骨架结构和默认值的权威依据。
  • 分支是唯一可信来源。 骨架通过 dxs configuration upsert 写入分支;任何本地 body.json 都只是临时草稿,不能作为记录的依据。使用 dxs configuration get 检查是否存在,不要检查本地文件路径。
  • referenceName 必须与文件名主体完全一致。 唯一例外是 actions:其 referenceName 以 _action 结尾,而文件后缀为 -footprintFlow.json——这是文档规定的约定,并非笔误。后端类型的 title 与 referenceName 相同;但面向用户的类型(form、editor、hub、grid、embed、standalone selector)必须使用不同的、采用句首字母大写格式的展示 title——参见步骤 4 和 ../datex-studio-conventions/naming-conventions.md。
  • 必须填写 Description,且长度不得超过 100 个字符。 这是 SQL 列的长度上限。没有 Description 就不要继续。不要擅自截断——请与调用方确认。
  • configurationTypeId 会影响代码生成,即使 Studio 的 Validate 不会验证它。 cti 错误会导致 Preview 级联失败,且问题源自从未修改过的文件。务必从同类型的正常组件或上方的分派表复制。有关失败模式的讨论,请参见 ../datex-studio-conventions/file-format.md。
  • 仅保留最低限度的有效内容。 除了让 Validate 通过所需的骨架内容,不要添加占位属性、过滤器、列或代码。正文编写由 creator skill 负责;本 skill 只会在分支上创建一个空但有效的组件,然后交接。
  • 遇到冲突时停止。 如果 dxs configuration get 发现分支上已存在该 referenceName,不要覆盖。报告冲突,让调用方决定是重命名、通过 creator skill 修改现有组件,还是删除。
  • 每次调用只搭建一个组件。 如果调用方想搭建多个组件(例如 hub、其标签页 grid 以及过滤器 datasource),请逐个搭建,并按自然顺序交接——通常先搭建 datasource,再搭建使用它们的 UI 组件。

评论

支持 Markdown