makedsl について
makedslは、Makeプラットフォーム向けのYAML DSLを設計・生成するエージェントスキルです。App、エンティティ、フィールド、リレーションのモデリングを扱い、Schema設計と実行時の読み込みやデータ操作を区別します。
主な機能
- 01Appとエンティティのモデリング
- 02フィールドとリレーションの定義
- 03Make DSLのYAML生成
- 04Meta APIとData APIの参照指針
活用シーン
- 01Make AppのSchema設計
- 02エンティティと関連のモデリング
- 03makecli提出用DSLの準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ qfeius/ make-platform-skills --skill makedslインストール後、Claude Code で/makedslを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/DataAPIDesign.mdDepartmentFieldDesign.mdEntityDataFilterUsage.mdFieldDesign.mdFileFieldDesign.mdMetaAPIDesign.mdRelationDesign.mdUserFieldDesign.md詳細
makedsl の使い方
make platform または make 开发平台向けの DSL を設計または生成する場合に、このスキルを使用します。
make platform は Kubernetes と Ansible から設計の考え方を取り入れており、ビジネスモデルを DSL で定義し、
その後、DataAPI を通じてデータに対する CRUD-LS を実行します。
生成した DSL(yaml)ファイルは、makecli を使用して make platform(make 开发者平台)に送信してください。
CanvasTable の表示、列、レンダラー、セル編集には canvas-table-integration を使用してください。スキーマモデリングのセマンティクスは makedsl の担当です。
ランタイムの境界
方針を確認した後、アプリの承認入口、承認の新規作成フィールド、ステータス表示を生成するには、make-app-approval を使用してください。bpmDefinitionKey はランタイムの Meta から返されます。qfei_process_instance_status と qfei_is_locked はプラットフォームのシステムフィールドです。DSL で同名のビジネスフィールドを新規作成したり、「保存済み」のために新しい承認ステータスを追加したりしないでください。既存のビジネスライフサイクルフィールドはそのまま維持してください。
- DSL YAML は設計およびデプロイ時の入力であり、公開済みの App Service に必須のランタイムファイルではありません。
/dsl/00-app.yamlなどのコンテナーパスをハードコードする Service 起動ロジックを生成しないでください。- 公開済みの Service は、Make のリモートスキーマ API または環境から提供される設定を読み込む必要があります。ローカルの DSL ファイルは、開発、フィクスチャ、テスト、
makecli applyで使用できますが、k8s の起動に必要な唯一のソースにしてはいけません。 - Service がオフライン開発用のローカルスキーマをフォールバックとして必要とする場合は、その用途を明示し、リモートスキーマのパスとフォールバックのパスの両方をテストしてください。
- フロントエンドのビルドまたは公開済み App のランタイムでリモートスキーマが必要な場合は、ローカルの DSL ファイルを読み込むのではなく、@references/MetaAPIDesign.md にある Meta Service API を使用してください。
参照マップ
| トピック | 参照先 |
|---|---|
| Make Meta API のスキーマアクセス | references/MetaAPIDesign.md |
| Make Data API とリレーションのペイロード | references/DataAPIDesign.md |
| リレーションの宣言 | references/RelationDesign.md |
| 基本フィールド DSL と LookupField | references/FieldDesign.md |
| ユーザーフィールドの設計 | references/UserFieldDesign.md |
| 部門フィールドの設計 | references/DepartmentFieldDesign.md |
| ファイルフィールドの設計 | references/FileFieldDesign.md |
| Entity データフィルターの使用方法 | references/EntityDataFilterUsage.md |
DSL 定義
APP
論理的には、データベースの 1 つのデータベースに対応します。
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?
制約条件
- すべての App の
keyは、作成後に更新できず、1 つの org 内で一意です。 - すべての App の
keyは、アンダースコア(_)で始めることはできません。アンダースコアで始まる名前は予約キーワードです。 - すべての App の
nameは、ユーザーに表示される名前です。
App の例
key: MatrixProject
name: 烽火项目管理
type: Make.App
meta:
version: 1.0.0
properties:
description: 烽火项目管理演示项目
Entity
論理的には、データベースの table に対応するテーブルです。基盤の実装では、${App}.${Entity} が 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
- ...
制約条件
- すべての Entity の
keyは、作成後に更新できず、1 つの App 内で一意です。 - すべての Entity の
keyは、アンダースコア(_)で始めることはできません。アンダースコアで始まる名前は予約キーワードです。 - すべての Entity の
nameは、ユーザーに表示される名前です。
Entity の例
プロジェクト 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
タスク 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 | リレーション
- Relation は、Entity 間の関係、つまりどの Entity 同士が何対何で関連するかを記述する純粋な構造宣言です。表示ロジックは含みません。(詳しくは @references/RelationDesign.md を参照してください)
- 関連データの表示には LookupField を使用します(詳しくは @references/FieldDesign.md を参照してください)。
- 関連データを書き込む際は、Data API の
data.qfei_relationに関連オブジェクトを明示的に渡す必要があります。(詳しくは @references/DataAPIDesign.md を参照してください)
Field | フィールド
論理的には、データベースの table の 1 つの column に対応し、1 つの Entity に複数の Field が含まれます。 詳しくは @references/FieldDesign.md を参照してください。
Record | レコード
論理的には、データベースの table の 1 つの row に対応し、1 つの Entity に複数の Record が含まれます。
DataAPI | データ CRUD-LS
データ操作については、@references/DataAPIDesign.md を参照してください。
MetaAPI | メタデータとスキーマ
フロントエンドのビルド、ランタイムでのスキーマ読み込み、Entity/Field/Relation のメタデータ取得については、@references/MetaAPIDesign.md を参照してください。