{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://git.yumee.top/laily/skills/skills/ack/templates/tasks.schema.json", "title": "ACK task board", "description": "tasks.yaml 的权威结构。跨语言可用;参考校验实现见 scripts/validate_tasks.py。", "type": "object", "required": ["version", "project", "tasks"], "additionalProperties": true, "properties": { "version": { "type": "integer", "minimum": 1 }, "updatedAt": { "type": "string" }, "source": { "type": "string" }, "ackVersion": { "type": "string", "description": "接入时所基于的 ack 版本,便于日后 diff 升级" }, "kitVersion": { "type": "string", "description": "旧版 ACK 版本字段;兼容读取,新项目应使用 ackVersion" }, "project": { "type": "object", "required": ["name"], "additionalProperties": true, "properties": { "name": { "type": "string" }, "repoPath": { "type": "string" }, "baseUrl": { "type": "string" }, "devWorktree": { "type": "string" }, "overlayFile": { "type": "string", "description": "项目覆盖层文件路径,默认 docs/ack/project.md,可自定义" } } }, "summary": { "type": "object", "additionalProperties": true, "properties": { "verified": { "type": "array", "items": { "type": "string" } }, "open": { "type": "array", "items": { "type": "string" } }, "failedRetest": { "type": "array", "items": { "type": "string" } }, "leftovers": { "type": "array", "items": { "type": "string" } } } }, "statusReference": { "type": "object" }, "tasks": { "type": "array", "items": { "$ref": "#/definitions/task" } } }, "definitions": { "status": { "type": "string", "enum": [ "open", "dispatched", "fixed_by_dev", "retesting", "failed_retest", "verified", "blocked", "leftover" ] }, "round": { "type": "object", "required": ["round", "result"], "additionalProperties": true, "properties": { "round": { "type": "integer", "minimum": 1 }, "result": { "type": "string", "enum": ["passed", "failed"] }, "evidence": { "type": "string" } } }, "task": { "type": "object", "required": ["id", "title", "status"], "additionalProperties": true, "properties": { "id": { "type": "string", "minLength": 1 }, "type": { "type": "string" }, "title": { "type": "string", "minLength": 1 }, "priority": { "type": "string" }, "status": { "$ref": "#/definitions/status" }, "assignee": { "type": "string" }, "component": { "type": "string" }, "specRefs": { "type": "array", "items": { "type": "string" } }, "testRefs": { "type": "array", "items": { "type": "string" } }, "description": { "type": "string" }, "stepsToReproduce": { "type": "array", "items": { "type": "string" } }, "expected": { "type": "string" }, "actual": { "type": "string" }, "evidence": { "type": "object" }, "verification": { "type": "object" }, "dispatch": { "type": "object", "additionalProperties": true, "properties": { "taskId": { "type": ["string", "null"] }, "dispatchId": { "type": ["string", "null"] }, "worker": { "type": ["string", "null"] }, "rounds": { "type": "array", "items": { "$ref": "#/definitions/round" } } } }, "resolution": { "type": "object", "additionalProperties": true, "properties": { "fixedBy": { "type": ["string", "null"] }, "verifiedBy": { "type": ["string", "null"] }, "verifiedAt": { "type": ["string", "null"] }, "leftoverReason": { "type": ["string", "null"] }, "evidence": { "type": "object" } } } }, "allOf": [ { "if": { "properties": { "status": { "const": "leftover" } } }, "then": { "properties": { "resolution": { "required": ["leftoverReason"] } }, "required": ["resolution"] } } ] } } }