{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "required": [ "id", "name", "stewardship", "license", "redistribution", "source" ], "properties": { "id": { "type": "string", "description": "团队条目唯一标识符,采用与 team.json#id 相同的团队 slug 规则(不允许首尾连字符),保证市场 ID 天然是一个合法团队目录名。", "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?$" }, "name": { "type": "string", "description": "默认显示名称(源 locale),本地化变体见 i18n" }, "category": { "type": "string", "minLength": 1, "pattern": "^[a-z0-9-]+$", "description": "市场项目分类(slug 格式),由仓库 categories.json 定义" }, "tags": { "type": "array", "items": { "type": "string" }, "description": "标签列表,用于搜索和分类" }, "icon": { "type": "string", "description": "市场列表展示的内联 SVG 图标。**只有 Skill 卡片渲染它**——marketAgentSchema 与 marketTeamSchema 都没有 icon 字段,Agent 与团队卡片一律走 avatar,条目声明了 icon 也不会显示。Pointer 技能将其随离线元数据返回。" }, "latestVersion": { "type": "string", "description": "市场登记的最新版本(semver)", "pattern": "^\\d+\\.\\d+\\.\\d+$" }, "i18n": { "type": "object", "description": "按 locale 提供的本地化展示元数据(仅 name/shortDesc,轻量)", "additionalProperties": { "type": "object", "properties": { "name": { "type": "string", "description": "该 locale 下的显示名称" }, "shortDesc": { "type": "string", "description": "该 locale 下的简短描述" } }, "additionalProperties": false } }, "maintainer": { "type": "object", "required": [ "name", "verified" ], "properties": { "name": { "type": "string", "description": "维护者名称,如 \"DesireCore Official\"" }, "verified": { "type": "boolean", "description": "是否官方认证维护者,认证后显示蓝色勾选标记" }, "account": { "type": "string", "description": "维护方账号标识,如 GitHub 组织/用户名 \"desirecore\"" }, "url": { "type": "string", "description": "维护方主页或仓库 URL" } }, "additionalProperties": false }, "stewardship": { "type": "string", "enum": [ "official", "partner", "community", "pointer" ], "description": "维护方分类:official(官方)/ partner(合作伙伴官方)/ community(社区已收录)/ pointer(仅指针,不分发内容)" }, "license": { "type": "string", "minLength": 1, "description": "许可证:SPDX id(MIT/Apache-2.0/MIT-0…)或特殊值 not-declared / source-available / packaged-distribution" }, "redistribution": { "type": "string", "enum": [ "allowed", "source-pointer-only", "verify-package-terms" ], "description": "再分发策略:allowed(可分发)/ source-pointer-only(仅指针,安装时拉取)/ verify-package-terms(需核验条款)" }, "source": { "type": "object", "required": [ "kind", "repoUrl" ], "properties": { "kind": { "type": "string", "enum": [ "git" ], "description": "团队只支持 git 源:安装是 fork 团队仓库、更新是 git pull,zip / web 无法表达这两个动作。" }, "repoUrl": { "type": "string", "minLength": 1, "description": "团队 git 仓库的 HTTPS 克隆地址,如 https://github.com/desirecore/team-contract-review.git" }, "repoBranch": { "type": "string", "description": "团队仓库分支名称,默认 main。安装时会真的按这个分支克隆;必须是合法分支名(不带 refs/ 前缀、不以 - 开头),否则安装失败关闭而不是静默改装默认分支。", "default": "main" }, "ref": { "type": "string", "description": "锁定的 commit SHA / tag,用于可复现安装;为空表示取分支 HEAD。只接受**完整 40 位 SHA-1** 或标签名:缩写 oid 会随仓库增长变歧义、也远比完整 SHA 容易被构造碰撞,而降级 git 后端根本不解析它。安装时会按该 ref 克隆并读回真实 HEAD 逐字复核,不一致就中止整个安装——一个不被兑现的锁比没有锁更危险,因为它会被信任。" } }, "additionalProperties": false, "description": "团队 fork 源。**这是团队条目的核心**:安装端点用 repoUrl + repoBranch 调用 forkTeam,更新用同一仓库 git pull。" }, "requiredClientVersion": { "type": "string", "description": "此条目要求的最低客户端版本(semver),低于此版本时提示升级", "pattern": "^\\d+\\.\\d+\\.\\d+$" }, "avatar": { "type": "object", "required": [ "t", "bg" ], "properties": { "t": { "type": "string", "description": "头像显示的文字(通常为一个汉字)", "maxLength": 2 }, "bg": { "type": "string", "description": "头像背景 CSS 渐变值,如 linear-gradient(135deg, #007AFF, #005ECB)" }, "image": { "type": "object", "description": "图片头像:市场仓库中该条目目录内的位图(如 \"assets/avatar.webp\")。存在且文件可读时优先于 t + bg 渲染,否则自动回落——所以 t 与 bg 仍为必填,它们是确定的回落形态。仅支持 PNG / JPEG / WebP。注意:这是**市场展示**元数据,与安装后 agent.json 的 avatar.image 是两套,安装时不迁移。", "required": [ "path" ], "properties": { "path": { "type": "string", "description": "相对于该市场条目目录的图片路径。禁止绝对路径和 .. 路径穿越", "minLength": 5, "maxLength": 240, "pattern": "^(?![\\\\/])(?![A-Za-z]:)(?!.*(?:^|[\\\\/])\\.\\.(?:[\\\\/]|$)).+\\.(?:png|jpe?g|webp)$" } }, "additionalProperties": false } }, "additionalProperties": false }, "supervisorName": { "type": "string", "description": "组长(supervisor)Agent 的显示名称,仅用于卡片与详情页展示;真实组长以团队仓库 team.json#supervisor 为准。" }, "supervisorAgentId": { "type": "string", "description": "组长 Agent ID(展示与去重用)。只是发布者声明,不作为安装期白名单依据。", "pattern": "^[A-Za-z0-9_-]+$" }, "memberCount": { "type": "integer", "minimum": 1, "description": "团队成员总数(**含组长**),用于卡片上\"N 名成员\"的展示;不参与任何安装校验。" }, "memberNames": { "type": "array", "items": { "type": "string" }, "maxItems": 32, "description": "成员显示名预览列表(不含组长),用于卡片上的成员缩略展示;不保证与仓库成员完全一致。" }, "requiredSkills": { "type": "array", "items": { "type": "string" }, "maxItems": 128, "uniqueItems": true, "description": "团队声明的必需 Skill ID,用于安装前向用户提示前置条件;真实校验由安装后的团队 capability audit 执行。" } }, "additionalProperties": false, "$comment": "Generated from desirecore/desirecore packages/schemas/src/market.ts#marketTeamEntrySchema at commit 947d9f32c6c81ebe5ece78f6295155814c888a22, source blob d6b361d149773e7384babe3011d86d25ded4e493. Keep the complete client contract; regenerate from that export instead of editing fields manually." }