mirror of
https://github.com/affaan-m/ECC.git
synced 2026-09-29 13:05:18 +02:00
107 lines
5.2 KiB
JSON
107 lines
5.2 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"title": "ECC read-only skill carrier proposal",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["schemaVersion", "status", "active", "disposition", "nativeSupport", "target", "profileId", "selectionMode", "registryDigest", "profileDigest", "compilerDigest", "planDigest", "adapterDigest", "carrierDigest", "layout", "selectedIds", "routedIds", "excludedIds", "entries", "files", "limitations"],
|
|
"properties": {
|
|
"schemaVersion": { "const": "ecc.context-carrier.v1" },
|
|
"status": { "enum": ["planned", "unsupported"] },
|
|
"active": { "const": false },
|
|
"disposition": { "const": "proposed" },
|
|
"nativeSupport": { "const": "unobserved" },
|
|
"target": { "enum": ["adal", "antigravity", "claude", "claude-project", "codebuddy", "codex", "cursor", "gemini", "hermes", "joycode", "kimi", "openclaw", "opencode", "pi", "qwen", "zed"] },
|
|
"profileId": { "enum": ["lean@1", "full@1"] },
|
|
"selectionMode": { "enum": ["manual", "suggest", "auto"] },
|
|
"registryDigest": { "$ref": "#/definitions/digest" },
|
|
"profileDigest": { "$ref": "#/definitions/digest" },
|
|
"compilerDigest": { "$ref": "#/definitions/digest" },
|
|
"planDigest": { "$ref": "#/definitions/digest" },
|
|
"adapterDigest": { "$ref": "#/definitions/digest" },
|
|
"carrierDigest": { "$ref": "#/definitions/digest" },
|
|
"layout": {
|
|
"oneOf": [
|
|
{ "type": "null" },
|
|
{
|
|
"type": "object", "additionalProperties": false,
|
|
"required": ["id", "skillRoot", "manifestPath"],
|
|
"properties": {
|
|
"id": { "enum": ["claude-plugin@1", "codex-plugin@1", "pi-package@1", "opencode-project@1", "cursor-project@1"] },
|
|
"skillRoot": { "enum": ["skills", ".opencode/skills", ".cursor/skills"] },
|
|
"manifestPath": { "enum": [null, ".claude-plugin/plugin.json", ".codex-plugin/plugin.json", "package.json"] }
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"selectedIds": { "$ref": "#/definitions/skillIds" },
|
|
"routedIds": { "$ref": "#/definitions/skillIds" },
|
|
"excludedIds": { "$ref": "#/definitions/skillIds" },
|
|
"entries": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object", "additionalProperties": false,
|
|
"required": ["id", "name", "sourcePath", "contentDigest", "requiredResources", "installSupport"],
|
|
"properties": {
|
|
"id": { "$ref": "#/definitions/skillId" },
|
|
"name": { "type": "string", "minLength": 1, "maxLength": 64, "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$" },
|
|
"sourcePath": { "$ref": "#/definitions/path" },
|
|
"contentDigest": { "$ref": "#/definitions/digest" },
|
|
"requiredResources": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/definitions/path" } },
|
|
"installSupport": { "enum": ["declared", "not-declared"] }
|
|
}
|
|
}
|
|
},
|
|
"files": {
|
|
"type": "array",
|
|
"items": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object", "additionalProperties": false,
|
|
"required": ["kind", "skillId", "sourcePath", "destinationPath", "digest", "bytes"],
|
|
"properties": {
|
|
"kind": { "const": "copy" },
|
|
"skillId": { "$ref": "#/definitions/skillId" },
|
|
"sourcePath": { "$ref": "#/definitions/path" },
|
|
"destinationPath": { "$ref": "#/definitions/path" },
|
|
"digest": { "$ref": "#/definitions/digest" },
|
|
"bytes": { "$ref": "#/definitions/bytes" }
|
|
}
|
|
},
|
|
{
|
|
"type": "object", "additionalProperties": false,
|
|
"required": ["kind", "destinationPath", "content", "encoding", "digest", "bytes"],
|
|
"properties": {
|
|
"kind": { "const": "generated" },
|
|
"destinationPath": { "enum": [".claude-plugin/plugin.json", ".codex-plugin/plugin.json", "package.json"] },
|
|
"content": { "type": "string", "minLength": 1, "maxLength": 4096 },
|
|
"encoding": { "const": "utf8" },
|
|
"digest": { "$ref": "#/definitions/digest" },
|
|
"bytes": { "$ref": "#/definitions/bytes" }
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"limitations": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 } }
|
|
},
|
|
"allOf": [
|
|
{
|
|
"if": { "properties": { "status": { "const": "unsupported" } } },
|
|
"then": { "properties": { "layout": { "type": "null" }, "files": { "type": "array", "maxItems": 0 } } },
|
|
"else": { "properties": { "layout": { "type": "object" } } }
|
|
},
|
|
{
|
|
"if": { "properties": { "target": { "enum": ["claude", "codex", "pi", "opencode", "cursor"] } } },
|
|
"then": { "properties": { "status": { "const": "planned" } } },
|
|
"else": { "properties": { "status": { "const": "unsupported" } } }
|
|
}
|
|
],
|
|
"definitions": {
|
|
"digest": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
"bytes": { "type": "integer", "minimum": 0, "maximum": 4194304 },
|
|
"skillId": { "type": "string", "pattern": "^skill:[a-z0-9]+(?:-[a-z0-9]+)*$" },
|
|
"skillIds": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/definitions/skillId" } },
|
|
"path": { "type": "string", "minLength": 1, "maxLength": 4096, "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.?(?:/|$))(?!.*[\\\\<>:\"|?*\\u0000-\\u001f\\u007f-\\u009f])[^/]+(?:/[^/]+)*$" }
|
|
}
|
|
}
|