Use this skill when you need to design or generate DSL for make platform or make 开发平台.
make platform draws on design ideas from kubernetes and ansible; the business model is defined through DSL modeling,
and then data is CRUD-LS'd through DataAPI.
The generated DSL (yaml) file should be makecli submitted to make platform (make developer platform)
Use canvas-table-integration for CanvasTable display, columns, renderers, or cell editing. makedsl only owns schema modeling semantics.
Runtime Boundary
- DSL YAML is a design and deployment input, not a required runtime file for a published App Service.
- Do not generate Service startup logic that hard-codes container paths such as
/dsl/00-app.yaml. - Published Service should load schema from Make remote schema APIs or environment-provided config. Local DSL files are acceptable for development, fixtures, tests, and
makecli apply, but must not be the only source required for k8s startup. - If a Service needs a fallback local schema for offline development, make it explicit and test both the remote-schema path and the fallback path.
- When frontend build or published App runtime needs remote schema, use Meta Service APIs from @references/MetaAPIDesign.md instead of reading local DSL files.
Reference map
| Topic | Read |
|---|---|
| Make Meta API schema access | references/MetaAPIDesign.md |
| Make Data API and relation payloads | references/DataAPIDesign.md |
| Relation declarations | references/RelationDesign.md |
| Base field DSL and lookup fields | references/FieldDesign.md |
| User field design | references/UserFieldDesign.md |
| Department field design | references/DepartmentFieldDesign.md |
| File field design | references/FileFieldDesign.md |
| Entity data filter usage | references/EntityDataFilterUsage.md |
APP
logically corresponds to a database in a database
APP DSL
key: <KEY> # 创建后不可更新, 只允许英文字符、数字、下划线, 长度 2-20
name: String # 必填, 用户可见的展示名称, 允许中英文数字下划线, 长度 2-20
type: Make.App
meta:
version: SemanticVersion
properties:
timezone: String? # 可选,如 "Asia/Shanghai"、"UTC";若未指定,使用系统默认"Asia/Shanghai"
description: String?
Constraints
- All Apps'
keycannot be updated after creation, and is unique under an org. - All Apps'
keycannot start with an underscore (_), as a leading underscore is a reserved keyword. - All Apps'
nameis the user-visible display name.
App Example
key: MatrixProject
name: 烽火项目管理
type: Make.App
meta:
version: 1.0.0
properties:
description: 烽火项目管理演示项目
Entity
logically corresponds to a Table in a database table; at the underlying implementation, ${App}.${Entity} serves as a TiDB Table
Entity DSL
key: <KEY> # 仅英文字符、数字、下划线, 长度 2-20, 创建后不可更新
name: String # 必填, 用户可见的展示名称, 允许中英文数字下划线, 长度 2-20
type: Make.Entity
appKey: <Make.App>
meta:
version: SemanticVersion
properties:
fields:
- Make.Field
- Make.Field
- ...
Constraints
- All Entities'
keycannot be updated after creation, and is unique under an App. - All Entities'
keycannot start with an underscore (_), as a leading underscore is a reserved keyword. - All Entities'
nameis the user-visible display name.
Entity Example
Project Entity
key: project
name: 项目
type: Make.Entity
appKey: <Make.App>
meta:
version: 1.0.0
properties:
fields:
- key: project_name
name: 项目名称
type: Make.Field.Text
meta:
version: 1.0.0
properties: null
- key: project_description
name: 项目描述
type: Make.Field.TextArea
meta:
version: 1.0.0
properties: null
Task Entity
key: task
name: 任务
type: Make.Entity
appKey: <Make.App>
meta:
version: 1.0.0
properties:
fields:
- key: task_name
name: 任务名称
type: Make.Field.Text
meta:
version: 1.0.0
properties: null
- key: task_description
name: 任务描述
type: Make.Field.TextArea
meta:
version: 1.0.0
properties: null
- key: task_status
name: 任务状态
type: Make.Field.SingleSelect
meta:
version: 1.0.0
properties:
options:
- label: "待处理"
value: "todo"
- label: "进行中"
value: "doing"
- label: "已完成"
value: "done"
Relation | Association
- Relation is a pure structural declaration describing relationships between Entities—who is related to whom, and with what cardinality. It does not involve any display logic. (See @references/RelationDesign.md for details)
- The display of associated data is implemented through LookupField (see @references/FieldDesign.md for details).
- When writing associated data, the associated object must be explicitly passed in the Data API's
data.qfei_relation. (See: @references/DataAPIDesign.md for details)
Field | Field
logically corresponds to a column in a database table, and an Entity will contain multiple Fields For details, see @references/FieldDesign.md
Record | Record
logically corresponds to a row in a database table, and an Entity will contain multiple Records
DataAPI | Data CRUD-LSFor operations on data, refer to @references/DataAPIDesign.md
MetaAPI | Metadata and SchemaFor frontend construction, runtime schema loading, and reading entity/field/relation metadata, refer to @references/MetaAPIDesign.md