SuperAPI AI Directory

makedsl

Design & creation

View repository

Updated 10-15 21:40

About this skill

makedsl usage

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
DSL Definition

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' key cannot be updated after creation, and is unique under an org.
  • All Apps' key cannot start with an underscore (_), as a leading underscore is a reserved keyword.
  • All Apps' name is 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' key cannot be updated after creation, and is unique under an App.
  • All Entities' key cannot start with an underscore (_), as a leading underscore is a reserved keyword.
  • All Entities' name is 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-LS

For operations on data, refer to @references/DataAPIDesign.md

MetaAPI | Metadata and Schema

For frontend construction, runtime schema loading, and reading entity/field/relation metadata, refer to @references/MetaAPIDesign.md