94 lines
3.4 KiB
JSON
94 lines
3.4 KiB
JSON
{
|
||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||
"$id": "https://openclaw.local/skill-template/skill-grid-presentation.schema.json",
|
||
"title": "SkillGridPresentationDocument",
|
||
"description": "匠厂数据管理「Grid Presentation」文档(schemaVersion 1)。技能按业务规则为 rows×columns 声明语义 tone(整行、整列、区域或单格);禁止 all×all。非任意 CSS。与 skill-cell-presentation.schema.json(v1 cells[])并存,同一 cellPresentation.enabled。详见 references/CELL_PRESENTATION.md。",
|
||
"type": "object",
|
||
"required": ["schemaVersion", "skill", "table", "rowKey", "rules"],
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"schemaVersion": {
|
||
"type": "integer",
|
||
"const": 1
|
||
},
|
||
"skill": {
|
||
"type": "string",
|
||
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
|
||
"minLength": 1,
|
||
"description": "与 SKILL.md metadata.openclaw.slug / actions.json skill 一致"
|
||
},
|
||
"table": {
|
||
"type": "string",
|
||
"minLength": 1,
|
||
"pattern": "^[a-z][a-z0-9_]*$",
|
||
"description": "业务表物理名(snake_case)"
|
||
},
|
||
"rowKey": {
|
||
"type": "string",
|
||
"minLength": 1,
|
||
"pattern": "^[a-z][a-z0-9_]*$",
|
||
"description": "用于匹配行的业务表列名(如 id);rules[].rows 的 id 取自该列"
|
||
},
|
||
"generatedAt": {
|
||
"type": "string",
|
||
"minLength": 1,
|
||
"description": "可选。ISO-8601 或技能约定的生成时间,便于排障"
|
||
},
|
||
"rules": {
|
||
"type": "array",
|
||
"description": "当前应对该表生效的 grid 规则;空数组 = 该表无 grid 呈现(清除旧行/列/区域样式)。同 ruleKey 由 UNIQUE 约束覆盖。",
|
||
"items": { "$ref": "#/$defs/ruleItem" }
|
||
}
|
||
},
|
||
"$defs": {
|
||
"tone": {
|
||
"type": "string",
|
||
"enum": ["danger", "warning", "info", "success", "muted"],
|
||
"description": "语义色板(闭集)。宿主映射到底色/字色/左边线等;禁止技能下发原始 CSS 或任意 hex。"
|
||
},
|
||
"axisTarget": {
|
||
"description": "\"all\" = 该轴全部;非空字符串数组 = 有限集合(行 id 或列名)",
|
||
"oneOf": [
|
||
{ "type": "string", "const": "all" },
|
||
{
|
||
"type": "array",
|
||
"minItems": 1,
|
||
"items": { "type": "string", "minLength": 1 }
|
||
}
|
||
]
|
||
},
|
||
"ruleItem": {
|
||
"type": "object",
|
||
"required": ["ruleKey", "rows", "columns", "tone"],
|
||
"additionalProperties": false,
|
||
"not": {
|
||
"properties": {
|
||
"rows": { "const": "all" },
|
||
"columns": { "const": "all" }
|
||
},
|
||
"required": ["rows", "columns"]
|
||
},
|
||
"properties": {
|
||
"ruleKey": {
|
||
"type": "string",
|
||
"minLength": 1,
|
||
"maxLength": 200,
|
||
"description": "本表内唯一。建议稳定业务键(重算时覆盖同一条)"
|
||
},
|
||
"rows": { "$ref": "#/$defs/axisTarget" },
|
||
"columns": { "$ref": "#/$defs/axisTarget" },
|
||
"tone": { "$ref": "#/$defs/tone" },
|
||
"message": {
|
||
"type": "string",
|
||
"maxLength": 500,
|
||
"description": "可选。悬停/无障碍说明(短文案);不要塞长报告"
|
||
},
|
||
"alert": {
|
||
"type": "boolean",
|
||
"description": "可选,默认 false。true = 按本条规则计入进页/同步提醒(不按命中格子数)"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|