From 4a367c9ff4e1d23d79be6ebb2df4e92467bf97c1 Mon Sep 17 00:00:00 2001 From: jinjunnn Date: Mon, 6 Jul 2026 18:49:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(ui-mac):=20S27=20=E6=89=B9=E5=89=8D?= =?UTF-8?q?=E7=BD=AE=20=E2=80=94=E2=80=94=20catalog=20=E5=BF=AB=E7=85=A7?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E8=87=B3=202026-07-06.3=20+=20REQ-044=20?= =?UTF-8?q?=E5=AE=88=E5=8D=AB=E6=96=AD=E8=A8=80=E9=9A=8F=20REQ-045=20?= =?UTF-8?q?=E8=A1=A5=E8=B4=A7=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 快照:sync-catalog-snapshot.mjs 从 prod 端点拉取+验签+字节原样收录(28 entries:REQ-045 三条远程 skill + bundle:design 回归 + S27 首条远程 agent bug-triage);meta 同步 - 守卫更新:REQ-044「三条目不得回流」断言语义升级 ——「不得存在」→「只允许 source:remote + 无 builtinAssetKey + 必带 remoteAsset」(builtin 复活=恒失败老路,仍禁;远程补货=REQ-045 正道,放行); bundle:design 成员断言(验收④) - S27 sprint 契约(真机批 vNext-3) Co-Authored-By: Claude Fable 5 --- .../sprint.md | 27 + .../renderer/extensions/alpha-catalog.json | 758 +++++++++++++++++- .../extensions/alpha-catalog.snapshot.json | 8 +- .../renderer/extensions/alpha-catalog.test.ts | 20 +- 4 files changed, 782 insertions(+), 31 deletions(-) create mode 100644 docs/sprints/2026-07-06-s27-realmachine-vnext3/sprint.md diff --git a/docs/sprints/2026-07-06-s27-realmachine-vnext3/sprint.md b/docs/sprints/2026-07-06-s27-realmachine-vnext3/sprint.md new file mode 100644 index 000000000000..190ce81ae446 --- /dev/null +++ b/docs/sprints/2026-07-06-s27-realmachine-vnext3/sprint.md @@ -0,0 +1,27 @@ +# Sprint 2026-07-06 S27 —— 真机批 vNext-3(S22–S26 递延全量) + +> **抽取(2026-07-06,用户「继续推下一个 sprint」)**:按 S26 攒单 [qa/2026-07-06-realmachine-vnext3-plan.md](../../qa/2026-07-06-realmachine-vnext3-plan.md) 开批。上批 S26 已收尾(PR #124),WIP=1 满足。 +> **性质**:验证批(同 S16/S20/S21 形态)——逐项证据落 `docs/audits/2026-07-06-realmachine-vnext3/verify.md`,BACKLOG 状态随证据翻 verified;真机发现的新 bug 只登记不内联修(S21 裁决沿用),P0 阻断项例外(快车道)。 +> **纪律**:零改上游;[[visual-verify-required]](CDP 截图,不 grep 断言 UI);证据链齐才翻状态。 + +## Task 表(批前置 + 四组矩阵) + +| # | 项 | 验收 | 状态 | +|---|---|---|---| +| T0 | 批前置③:C 侧上架远程 agent `bug-triage`(alpha 自写,只读档,单 .md 约定)→ build → deploy → prod 验签 | REQ-046 演练有对象;catalog 2026-07-06.3 | ⬜ | +| T1 | 批前置②:A 快照刷新 `sync-catalog-snapshot.mjs`(收录 2026-07-06.3)+ 守卫测试绿 | `alpha-catalog.json` 字节原样 + meta;`alpha-catalog.test.ts` 绿 | ⬜ | +| T2 | 批前置①:签名+公证 prod 包重 ship(含 PR #119/#120/#122/#123 全部 A 侧新码)→ install-local | 公证通过;/Applications 装载新版 | ⬜ | +| T3 | M1 定制中心:REQ-045③(三条目刷新可见→安装→账本 origin→会话可用;bundle:design 远程扇出)· REQ-046(远程 agent 安装→会话可用)· REQ-044 迁移开门(自建同名在场排除)· E2/E6 安装+首调用 · REQ-016 残余四小项 | 逐项截图/日志入 verify.md | ⬜ | +| T4 | M2 数据/凭证:C16 两级清除 · B14/C17 对话框演练 · B2 短TTL · B21 改键 | 同上 | ⬜ | +| T5 | M3 云线:B16 同意门 · B3 dispatch 冒烟+回流 · REQ-024/025 e2e | 同上 | ⬜ | +| T6 | M4 稳定性顺带:B22 复现 · B11 实拍 · B20 弱网 · B4 冷启动 · C3 轮转 · B7 release-time 三项 | 同上 | ⬜ | +| T7 | 收尾回写:verify.md 汇总 + BACKLOG 逐项翻 verified + retro 决定 | 四件套 | ⬜ | + +## Gates +- T0–T2 是 T3+ 的硬前置(顺序执行); +- ship gate:公证失败/守卫红 = 停批修复; +- 真机新发现:登记 BACKLOG(REQ-047+),不内联修(P0 阻断除外)。 + +## 明确不做 +- 不在本批修 B22(复现成功即达标,修复另立); +- 不做 B12 长时内存观测(单列)、C15 CPU 对比(性能专项)、REQ-005(独立方向)。 diff --git a/packages/ui-mac/src/renderer/extensions/alpha-catalog.json b/packages/ui-mac/src/renderer/extensions/alpha-catalog.json index b236d300b28c..5e83d318fc2f 100644 --- a/packages/ui-mac/src/renderer/extensions/alpha-catalog.json +++ b/packages/ui-mac/src/renderer/extensions/alpha-catalog.json @@ -1,5 +1,5 @@ { - "version": "2026-07-06.1", + "version": "2026-07-06.3", "_note": "alpha-code 扩展目录 —— 远程分发真源(REQ-032:alphacodeone.com/catalog/v1,ed25519 签名,ETag 缓存;A 侧回退链 远端→缓存→内置)。schema 同 A 侧 alpha-catalog.json + 条目级 version + remoteAsset(下载清单,sha256 钉死)。编辑本文件后跑 scripts/build-catalog.mjs 再 git commit + deploy。", "_disclaimers": [ "标 _verify 的条目:包名/协议/可用性需落地前手工核实,不得当作已确认事实。", @@ -39,7 +39,7 @@ "description": "把文件 / URL(PDF/Word/PPT/Excel/图片/HTML)转成 Markdown" } ], - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "mcp:filesystem", @@ -88,7 +88,7 @@ "description": "按名称递归检索文件" } ], - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "mcp:fetch", @@ -118,7 +118,7 @@ "description": "抓取 URL 并转 Markdown(可分段续读)" } ], - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "mcp:playwright", @@ -170,7 +170,7 @@ "description": "在页面内执行 JS" } ], - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "mcp:git", @@ -219,7 +219,7 @@ "description": "提交" } ], - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "mcp:github", @@ -269,7 +269,7 @@ "description": "列出 issue" } ], - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "mcp:dbhub", @@ -316,7 +316,7 @@ "description": "执行 SQL(--readonly 档:仅查询类语句)" } ], - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "mcp:feishu", @@ -366,7 +366,7 @@ "description": "查询多维表格记录" } ], - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "mcp:yuque", @@ -415,7 +415,7 @@ "description": "新建文档" } ], - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "mcp:dingtalk", @@ -465,7 +465,7 @@ "description": "发送 DING 消息(默认启用,2 个工具)" } ], - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "skill:skill-creator", @@ -484,7 +484,7 @@ "targetDir": "alpha-skills", "_verify": "Apache-2.0 可内置;打包前放入 ui-mac 资源并附 NOTICE。" }, - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "skill:alpha-upstream-sync", @@ -502,7 +502,7 @@ "builtinAssetKey": "skills/alpha-upstream-sync", "targetDir": "global" }, - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "skill:safe-refactor", @@ -520,7 +520,689 @@ "builtinAssetKey": "skills/safe-refactor", "targetDir": "global" }, - "version": "2026-07-06.1" + "version": "2026-07-06.3" + }, + { + "id": "skill:mcp-builder", + "type": "skill", + "name": "mcp-builder", + "displayName": "MCP 构建指南", + "description": "编写高质量 MCP server 的指南(Anthropic example-skills)。", + "source": "official", + "category": "dev", + "license": "Apache-2.0", + "redistributable": true, + "version": "1.0.0", + "installSpec": { + "kind": "skill", + "source": "remote" + }, + "_provenance": "REQ-045 补货:再分发自 anthropics/skills@9d2f1ae(Apache-2.0,LICENSE.txt+NOTICE.md 随资产,内容与上游逐字节一致);S22 关闭内置通道后经远程资产管线上架。", + "remoteAsset": { + "version": "1.0.0", + "files": [ + { + "path": "LICENSE.txt", + "sha256": "bc6b3af2f331cbc7fb0da1344efb2cbe5877a31498b4d70dbc7000f3405a1362", + "bytes": 11345, + "url": "https://alphacodeone.com/catalog/assets/skill.mcp-builder/1.0.0/LICENSE.txt" + }, + { + "path": "NOTICE.md", + "sha256": "49055ac997aff245a6d604a455ba20803e82c5a48b4f87d84838cbaaf546bc3c", + "bytes": 402, + "url": "https://alphacodeone.com/catalog/assets/skill.mcp-builder/1.0.0/NOTICE.md" + }, + { + "path": "SKILL.md", + "sha256": "0f4592dcb53cf2b5d6b7febee6b4152018b565551a1c29e3c612f57b218ab295", + "bytes": 9092, + "url": "https://alphacodeone.com/catalog/assets/skill.mcp-builder/1.0.0/SKILL.md" + }, + { + "path": "reference/evaluation.md", + "sha256": "8c99479f8a2d22a636c38e274537aac3610879e26f34e0709825077c4576f427", + "bytes": 21663, + "url": "https://alphacodeone.com/catalog/assets/skill.mcp-builder/1.0.0/reference/evaluation.md" + }, + { + "path": "reference/mcp_best_practices.md", + "sha256": "80fb4369a349447cf18ecdd7494fe7938b6065377e9f08c077cec411093a3007", + "bytes": 7330, + "url": "https://alphacodeone.com/catalog/assets/skill.mcp-builder/1.0.0/reference/mcp_best_practices.md" + }, + { + "path": "reference/node_mcp_server.md", + "sha256": "c3ba35a4f599dd53be9c6555ae72c19a7bf412cd5426576c2c08d42755482c66", + "bytes": 28550, + "url": "https://alphacodeone.com/catalog/assets/skill.mcp-builder/1.0.0/reference/node_mcp_server.md" + }, + { + "path": "reference/python_mcp_server.md", + "sha256": "2da52f77e675191014ca2e146a4b95aa04d0ca7dd7e2b100322df15ade685e80", + "bytes": 25099, + "url": "https://alphacodeone.com/catalog/assets/skill.mcp-builder/1.0.0/reference/python_mcp_server.md" + }, + { + "path": "scripts/connections.py", + "sha256": "9403668a2041568772082a8b334122c1f88daf0541fb393af4522d0094a47a6e", + "bytes": 4875, + "url": "https://alphacodeone.com/catalog/assets/skill.mcp-builder/1.0.0/scripts/connections.py" + }, + { + "path": "scripts/evaluation.py", + "sha256": "49ed1d17cdce5da101b210197740713f49b935c29d4f339542a14b132658e6f7", + "bytes": 12579, + "url": "https://alphacodeone.com/catalog/assets/skill.mcp-builder/1.0.0/scripts/evaluation.py" + }, + { + "path": "scripts/example_evaluation.xml", + "sha256": "9272b348ddcc4b06ba562367ccd0770e018158c0068ac5116d5e34aaeff8777a", + "bytes": 1194, + "url": "https://alphacodeone.com/catalog/assets/skill.mcp-builder/1.0.0/scripts/example_evaluation.xml" + }, + { + "path": "scripts/requirements.txt", + "sha256": "d5d7558b2368ecea9dfeed7d1fbc71ee9e0750bebd1282faa527d528a344c3c7", + "bytes": 29, + "url": "https://alphacodeone.com/catalog/assets/skill.mcp-builder/1.0.0/scripts/requirements.txt" + } + ] + } + }, + { + "id": "skill:canvas-design", + "type": "skill", + "name": "canvas-design", + "displayName": "视觉/海报设计", + "description": "用设计哲学产出 .png/.pdf 视觉作品(Anthropic example-skills;含 OFL 字体约 5.4MB,安装时下载)。", + "source": "official", + "category": "design", + "license": "Apache-2.0", + "redistributable": true, + "version": "1.0.0", + "installSpec": { + "kind": "skill", + "source": "remote" + }, + "_provenance": "REQ-045 补货:再分发自 anthropics/skills@9d2f1ae(Apache-2.0;canvas-fonts/ 字体为 SIL OFL 1.1,许可文本随资产);S22 关闭内置通道后经远程资产管线上架。", + "remoteAsset": { + "version": "1.0.0", + "files": [ + { + "path": "LICENSE.txt", + "sha256": "bc6b3af2f331cbc7fb0da1344efb2cbe5877a31498b4d70dbc7000f3405a1362", + "bytes": 11345, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/LICENSE.txt" + }, + { + "path": "NOTICE.md", + "sha256": "450908a9b26b499a22d976cc4937fbc82427e9d57d4e18f06b8e36f4167e3511", + "bytes": 570, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/NOTICE.md" + }, + { + "path": "SKILL.md", + "sha256": "a1f288079624402f30682753c1d43920b6664785698d21d3e7aa197450a6448b", + "bytes": 11939, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/SKILL.md" + }, + { + "path": "canvas-fonts/ArsenalSC-OFL.txt", + "sha256": "8ddd61b18ba2c0d0dbe4a691cf5f1a0673f473d02fa0546e67ee88c006aeff6e", + "bytes": 4373, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/ArsenalSC-OFL.txt" + }, + { + "path": "canvas-fonts/ArsenalSC-Regular.ttf", + "sha256": "65e6f89df58f68fd905b3add34a79dd6106aa3b3044df0dad9676fff53d504b9", + "bytes": 165848, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/ArsenalSC-Regular.ttf" + }, + { + "path": "canvas-fonts/BigShoulders-Bold.ttf", + "sha256": "b43bcd198b9fdf717dd42aa61a34dba32e01aceaeae659d689afd0ca52c37ea2", + "bytes": 94528, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/BigShoulders-Bold.ttf" + }, + { + "path": "canvas-fonts/BigShoulders-OFL.txt", + "sha256": "fbc746aabf0eb1847dfd92e2efc4596d79fa897d60b8e64062a22f585508fb3f", + "bytes": 4397, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/BigShoulders-OFL.txt" + }, + { + "path": "canvas-fonts/BigShoulders-Regular.ttf", + "sha256": "18a879fc71978a4447150705caf880a9da3860083c259fd29e6dc03057b6842a", + "bytes": 94396, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/BigShoulders-Regular.ttf" + }, + { + "path": "canvas-fonts/Boldonse-OFL.txt", + "sha256": "45cc82ab4032273c0924025ffcf8f0665a68e1a5955e3f7247e5daf1deeb1326", + "bytes": 4390, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Boldonse-OFL.txt" + }, + { + "path": "canvas-fonts/Boldonse-Regular.ttf", + "sha256": "cc2e540604565c0f90a7d8d46194a2f42fc9c45512cd2e39bf03b50eb68c35a4", + "bytes": 77168, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Boldonse-Regular.ttf" + }, + { + "path": "canvas-fonts/BricolageGrotesque-Bold.ttf", + "sha256": "a737b146fe0d77ffe8a86e3cd16700dd431d3b1e420d4fd80e142cd68a1cb50d", + "bytes": 90952, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/BricolageGrotesque-Bold.ttf" + }, + { + "path": "canvas-fonts/BricolageGrotesque-OFL.txt", + "sha256": "0e4f4eb8534bc66a76aca13dd19c1f9731b2008866b29ccff182b764649df9b4", + "bytes": 4403, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/BricolageGrotesque-OFL.txt" + }, + { + "path": "canvas-fonts/BricolageGrotesque-Regular.ttf", + "sha256": "972a6d098c9867ae131d0ea99e221e63976b11a19d4b931c2c7ace525674e4f6", + "bytes": 90920, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/BricolageGrotesque-Regular.ttf" + }, + { + "path": "canvas-fonts/CrimsonPro-Bold.ttf", + "sha256": "48f191e38355c8db100eb3ce157c20f9302a3b9a37b44a660f77ecfce3986609", + "bytes": 107352, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/CrimsonPro-Bold.ttf" + }, + { + "path": "canvas-fonts/CrimsonPro-Italic.ttf", + "sha256": "52318db3526b644e6efa60be0b3ca5a50e40fbe8bd026c261e0aa206f0772267", + "bytes": 108828, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/CrimsonPro-Italic.ttf" + }, + { + "path": "canvas-fonts/CrimsonPro-OFL.txt", + "sha256": "35680d14547b6748b6f362a052a46d22764ce5eccf96e18b74f567bb2ee58114", + "bytes": 4394, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/CrimsonPro-OFL.txt" + }, + { + "path": "canvas-fonts/CrimsonPro-Regular.ttf", + "sha256": "48fad08cb1917a7b2f2c6fe5135d6c07743a6663cf7631ec4481108aaf081422", + "bytes": 106696, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/CrimsonPro-Regular.ttf" + }, + { + "path": "canvas-fonts/DMMono-OFL.txt", + "sha256": "bfe7842fcb88323e2981e24710c25202677385a8c75fb6a87217b275a0247ae3", + "bytes": 4392, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/DMMono-OFL.txt" + }, + { + "path": "canvas-fonts/DMMono-Regular.ttf", + "sha256": "f98ada968dc3b6b2c08d3f5caaf266977df0bfe0929372b93df5a06cf2ace450", + "bytes": 48852, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/DMMono-Regular.ttf" + }, + { + "path": "canvas-fonts/EricaOne-OFL.txt", + "sha256": "e0de629968b52255548d5fafcf30b24ff9edae0eda362380755a75816404d0fa", + "bytes": 4410, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/EricaOne-OFL.txt" + }, + { + "path": "canvas-fonts/EricaOne-Regular.ttf", + "sha256": "db1d89e80e33a8a01beaaac7a85df582857d24a43f1e181461aa7ff5d701476a", + "bytes": 24872, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/EricaOne-Regular.ttf" + }, + { + "path": "canvas-fonts/GeistMono-Bold.ttf", + "sha256": "75c0828d5c1ee44b9ef9f4df577bf41595ec362e2ea3f1e558590c9e92c7949d", + "bytes": 78304, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/GeistMono-Bold.ttf" + }, + { + "path": "canvas-fonts/GeistMono-OFL.txt", + "sha256": "6a873c900f584109b13ae0aaf81d6e3cf0a68751a216b03f7b6c68d547057bb4", + "bytes": 4388, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/GeistMono-OFL.txt" + }, + { + "path": "canvas-fonts/GeistMono-Regular.ttf", + "sha256": "a55c1b51cda4afeab9e471e7947b85a20f7c8831d7e6b1470c1b7fbdc0f0f15e", + "bytes": 78232, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/GeistMono-Regular.ttf" + }, + { + "path": "canvas-fonts/Gloock-OFL.txt", + "sha256": "c0a3f3125ac491ef3d1f09f401be4834c646562f647e44f2bcbc49f0466c656d", + "bytes": 4381, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Gloock-OFL.txt" + }, + { + "path": "canvas-fonts/Gloock-Regular.ttf", + "sha256": "e86b4ce66dbd3f1f83eee8db99ec96e0da1128c3f53df0e9b3b7472025dfe960", + "bytes": 95156, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Gloock-Regular.ttf" + }, + { + "path": "canvas-fonts/IBMPlexMono-Bold.ttf", + "sha256": "dbd2a2fb024579438d6400a84e57579bfd2dbe67c306c8fd9fde92a61e4f2eea", + "bytes": 136008, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/IBMPlexMono-Bold.ttf" + }, + { + "path": "canvas-fonts/IBMPlexMono-OFL.txt", + "sha256": "5294ce778857e1eb02e830b6ab06435537d38f43055327e73d03a2d4d57d5123", + "bytes": 4363, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/IBMPlexMono-OFL.txt" + }, + { + "path": "canvas-fonts/IBMPlexMono-Regular.ttf", + "sha256": "ab08018ccd276b79fb2c636bb95b9c543598f9d50505fe92506fcb4dae7810cd", + "bytes": 133796, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/IBMPlexMono-Regular.ttf" + }, + { + "path": "canvas-fonts/IBMPlexSerif-Bold.ttf", + "sha256": "b8d294e9b5c5a0940f167c3ced0f7ef2e3f57082ca3ff096ef30e86e26c1c159", + "bytes": 161000, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/IBMPlexSerif-Bold.ttf" + }, + { + "path": "canvas-fonts/IBMPlexSerif-BoldItalic.ttf", + "sha256": "da64b75f4284f53e7b5c71fa190a35b8bf3494fe19f1804c81c3a53340bca570", + "bytes": 169840, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/IBMPlexSerif-BoldItalic.ttf" + }, + { + "path": "canvas-fonts/IBMPlexSerif-Italic.ttf", + "sha256": "b11f1048745e715a55c9d837b3f10226ca3d78867b7db7251ddad8f98dcf0f38", + "bytes": 170004, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/IBMPlexSerif-Italic.ttf" + }, + { + "path": "canvas-fonts/IBMPlexSerif-Regular.ttf", + "sha256": "77cd233a2af8dc6b1022faea3bb3b01f3c75af68bcf530cb6aeb15982ff3dbb7", + "bytes": 160380, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/IBMPlexSerif-Regular.ttf" + }, + { + "path": "canvas-fonts/InstrumentSans-Bold.ttf", + "sha256": "444f85bf1c4b0e1ce1ca624f6be54bcd832207714ccaf4ea99ee531341683bdf", + "bytes": 68084, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/InstrumentSans-Bold.ttf" + }, + { + "path": "canvas-fonts/InstrumentSans-BoldItalic.ttf", + "sha256": "3762f6cef95d6039489ad5ba5787d4c30f17a1ad01e9ac3c816ed69692722a68", + "bytes": 70004, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/InstrumentSans-BoldItalic.ttf" + }, + { + "path": "canvas-fonts/InstrumentSans-Italic.ttf", + "sha256": "78e85858e371b2cb4e18f617c10f0f937c0e12a0887ffee98555b24ed305b3a7", + "bytes": 69900, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/InstrumentSans-Italic.ttf" + }, + { + "path": "canvas-fonts/InstrumentSans-OFL.txt", + "sha256": "bf4dc6d13a8cccd4807133c77a1ee9619a16b92cb23322258725ab6731c2f6e5", + "bytes": 4403, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/InstrumentSans-OFL.txt" + }, + { + "path": "canvas-fonts/InstrumentSans-Regular.ttf", + "sha256": "a22cb26e48fd79bcb01bf2fc92d36785474dce36d9c544ab0a8868c2657c4a87", + "bytes": 68028, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/InstrumentSans-Regular.ttf" + }, + { + "path": "canvas-fonts/InstrumentSerif-Italic.ttf", + "sha256": "9c86e4d5a47b50224a2463a9eca8535835257c8e85c470c2c6b454b1af6f046e", + "bytes": 70868, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/InstrumentSerif-Italic.ttf" + }, + { + "path": "canvas-fonts/InstrumentSerif-Regular.ttf", + "sha256": "56ac3be03ac3ba283196b3e77850ab2ffcf56cfb6fd3212c5620109a972f8c99", + "bytes": 69312, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/InstrumentSerif-Regular.ttf" + }, + { + "path": "canvas-fonts/Italiana-OFL.txt", + "sha256": "8373b11312ace78c4cec2e8f9f6aa9f2330601107dac7bcf899c6f2dbd40c5a5", + "bytes": 4394, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Italiana-OFL.txt" + }, + { + "path": "canvas-fonts/Italiana-Regular.ttf", + "sha256": "15c4dd6ab8cf4a29ba8826f65edcbe2f6c266c557d34d081f25072dfd5605fd2", + "bytes": 27184, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Italiana-Regular.ttf" + }, + { + "path": "canvas-fonts/JetBrainsMono-Bold.ttf", + "sha256": "a2349098b9e45419e7bf0e2958d6c4937a049dded37387b08be725be4c7615f3", + "bytes": 114828, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/JetBrainsMono-Bold.ttf" + }, + { + "path": "canvas-fonts/JetBrainsMono-OFL.txt", + "sha256": "a76abf002c49097d146e86740a3105a5d00450b1592e820a1109a8c5680cd697", + "bytes": 4399, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/JetBrainsMono-OFL.txt" + }, + { + "path": "canvas-fonts/JetBrainsMono-Regular.ttf", + "sha256": "b6b1ff4ddefe36d7f2a6174e1d001cab374e594519ee9049af028d577b64c5f5", + "bytes": 114904, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/JetBrainsMono-Regular.ttf" + }, + { + "path": "canvas-fonts/Jura-Light.ttf", + "sha256": "c891a381df056b2c4dfe85841e911bf45da0890fa21a7b2692cbe5ea1f505e1e", + "bytes": 154308, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Jura-Light.ttf" + }, + { + "path": "canvas-fonts/Jura-Medium.ttf", + "sha256": "c72965cb732a92872643819fd1734128238583cc36b116313859137a51d3368a", + "bytes": 154488, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Jura-Medium.ttf" + }, + { + "path": "canvas-fonts/Jura-OFL.txt", + "sha256": "eaf9bdb675f6d87e5feb88199ab3ea581d3bd2082f426e384fa9c394576d7260", + "bytes": 4380, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Jura-OFL.txt" + }, + { + "path": "canvas-fonts/LibreBaskerville-OFL.txt", + "sha256": "55959eef5b0c3b2e3c1c7631b8ff0f9447d75de20f29cfa7db5bcfb026763343", + "bytes": 4449, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/LibreBaskerville-OFL.txt" + }, + { + "path": "canvas-fonts/LibreBaskerville-Regular.ttf", + "sha256": "2101302538d9e88adb679031c04623e4578b5745e89566284fd2c508d79acae0", + "bytes": 147584, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/LibreBaskerville-Regular.ttf" + }, + { + "path": "canvas-fonts/Lora-Bold.ttf", + "sha256": "7d74015e950c2fb66519c7295b8155621d22200ae2ca2a4c6b43ce3c490cac87", + "bytes": 133828, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Lora-Bold.ttf" + }, + { + "path": "canvas-fonts/Lora-BoldItalic.ttf", + "sha256": "152f87e71f5ddb60d5c57ecd9132807c947e65c42977193c9164e7c5a6690081", + "bytes": 140332, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Lora-BoldItalic.ttf" + }, + { + "path": "canvas-fonts/Lora-Italic.ttf", + "sha256": "be627e595184e8afe521f08da0607eee613f1997d423bc8dadc5798995581377", + "bytes": 139328, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Lora-Italic.ttf" + }, + { + "path": "canvas-fonts/Lora-OFL.txt", + "sha256": "62e37a82d3f1ef2a70712885fa8b3144b65fd144d8e748d6196b690a354d792c", + "bytes": 4423, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Lora-OFL.txt" + }, + { + "path": "canvas-fonts/Lora-Regular.ttf", + "sha256": "7ed00e7c9cdf16ab7e2fd2361fe45d4f0b61263cd60aae398b27b7ee08108827", + "bytes": 133888, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Lora-Regular.ttf" + }, + { + "path": "canvas-fonts/NationalPark-Bold.ttf", + "sha256": "69ac4c301c4a7233c6e602d12a92c54d7967b575f4449951c45ce773f7acff53", + "bytes": 79208, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/NationalPark-Bold.ttf" + }, + { + "path": "canvas-fonts/NationalPark-OFL.txt", + "sha256": "81c6c71d83b5b45d7344f96df12bb4a2477a5b092a9144757ee1d0f50f855175", + "bytes": 4399, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/NationalPark-OFL.txt" + }, + { + "path": "canvas-fonts/NationalPark-Regular.ttf", + "sha256": "a477338b7e18308d476650dfe31235ef86a883572665e56ffb5fb80f82009b58", + "bytes": 76424, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/NationalPark-Regular.ttf" + }, + { + "path": "canvas-fonts/NothingYouCouldDo-OFL.txt", + "sha256": "7c2a6970584ddad04919816163746f83b378078015899b18468b40f05e9ce128", + "bytes": 4363, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/NothingYouCouldDo-OFL.txt" + }, + { + "path": "canvas-fonts/NothingYouCouldDo-Regular.ttf", + "sha256": "d866f985896d3280f4fce72db7e17302c24a0c1fdb0699b6b5ed3af14f944d57", + "bytes": 32020, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/NothingYouCouldDo-Regular.ttf" + }, + { + "path": "canvas-fonts/Outfit-Bold.ttf", + "sha256": "6654b93d21301ec61887d3cedd6c11d9df1b1dfb63f9cf45ac7995f6e2235ab1", + "bytes": 55392, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Outfit-Bold.ttf" + }, + { + "path": "canvas-fonts/Outfit-OFL.txt", + "sha256": "1945b62cd76da9a3051a1660dde72afaa64ffc2666d30e7a78356d651653ba2f", + "bytes": 4389, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Outfit-OFL.txt" + }, + { + "path": "canvas-fonts/Outfit-Regular.ttf", + "sha256": "f24945365147c9e783e91d8649959b59be6b00c9ee4ecd2f6b33afbb2dd871fe", + "bytes": 54912, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Outfit-Regular.ttf" + }, + { + "path": "canvas-fonts/PixelifySans-Medium.ttf", + "sha256": "38397504f71c122b03d234ea6f55118e3d5bdbddffd82bedddbd7755d3b3be82", + "bytes": 51072, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/PixelifySans-Medium.ttf" + }, + { + "path": "canvas-fonts/PixelifySans-OFL.txt", + "sha256": "7f54d1d9f1ae1ba9f2722f978145f90324fea34ca3c2304b3a29cfa96ac6037e", + "bytes": 4395, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/PixelifySans-OFL.txt" + }, + { + "path": "canvas-fonts/PoiretOne-OFL.txt", + "sha256": "2eaf541f7eb8b512e4c757a5212060abf5b6edfef230e9d7640bf736b315c33a", + "bytes": 4366, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/PoiretOne-OFL.txt" + }, + { + "path": "canvas-fonts/PoiretOne-Regular.ttf", + "sha256": "9cf265b139648b36b6c0afdfeb0bf27f7e66db9a16094bc40f644d8da05bc318", + "bytes": 45244, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/PoiretOne-Regular.ttf" + }, + { + "path": "canvas-fonts/RedHatMono-Bold.ttf", + "sha256": "7ef48353f4be5ddb90f000f6fad48f2b62b3e8c27d9818d8d45ff46c201065e0", + "bytes": 34420, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/RedHatMono-Bold.ttf" + }, + { + "path": "canvas-fonts/RedHatMono-OFL.txt", + "sha256": "435fbfb7e66988b2a06686a4cb966faec733f35d8fe100a1601573c27f3e0bb8", + "bytes": 4394, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/RedHatMono-OFL.txt" + }, + { + "path": "canvas-fonts/RedHatMono-Regular.ttf", + "sha256": "452fe826871b37539f5212b20c87cf30f82f58dd2741f1c96edd1dcbdc0db6b4", + "bytes": 34488, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/RedHatMono-Regular.ttf" + }, + { + "path": "canvas-fonts/Silkscreen-OFL.txt", + "sha256": "6b849745119bbe85ec01fd080c9cd50234da9f52ac6e48b55d1a424a0c4d7ca9", + "bytes": 4394, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Silkscreen-OFL.txt" + }, + { + "path": "canvas-fonts/Silkscreen-Regular.ttf", + "sha256": "49567408600809e25147e9225ac4f37f410e2df45a750696c45027531fb65f1b", + "bytes": 31960, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Silkscreen-Regular.ttf" + }, + { + "path": "canvas-fonts/SmoochSans-Medium.ttf", + "sha256": "dd76e6e77cce82f827a8654cd906e9ce58f3aaf78adda63c4a7f655b8ecb41f0", + "bytes": 59704, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/SmoochSans-Medium.ttf" + }, + { + "path": "canvas-fonts/SmoochSans-OFL.txt", + "sha256": "74c9c4eb88e891483e1b7bc54780b452cbf4f4df66d4e71881d7569aa2130749", + "bytes": 4396, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/SmoochSans-OFL.txt" + }, + { + "path": "canvas-fonts/Tektur-Medium.ttf", + "sha256": "52bbe8c9b057b3d2da4eeace31a524b1ea26a1375ae34319cf6900ccc57a4c82", + "bytes": 76248, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Tektur-Medium.ttf" + }, + { + "path": "canvas-fonts/Tektur-OFL.txt", + "sha256": "3f1466cb5438f31782eeb6e895f3a655bc4d090e24263e331f555357d1cb734e", + "bytes": 4385, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Tektur-OFL.txt" + }, + { + "path": "canvas-fonts/Tektur-Regular.ttf", + "sha256": "162e1b36c4718c5b051b36c971ad7e50d341944f35618f480422ebbe72988f98", + "bytes": 75604, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/Tektur-Regular.ttf" + }, + { + "path": "canvas-fonts/WorkSans-Bold.ttf", + "sha256": "240d125fc9f8561363dc1ea3f513501253bd70942f41468f48f0b0cafb0c82e2", + "bytes": 191304, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/WorkSans-Bold.ttf" + }, + { + "path": "canvas-fonts/WorkSans-BoldItalic.ttf", + "sha256": "a5b2cad813df0aaa7d16621f2e93b5117c25e9bc788bc9a3ad218e9d6348ce34", + "bytes": 175772, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/WorkSans-BoldItalic.ttf" + }, + { + "path": "canvas-fonts/WorkSans-Italic.ttf", + "sha256": "6b7f7002e0b0c8b261fe878658ef5551e3e59d9f6b609b04efb90dde1e2c1ada", + "bytes": 174280, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/WorkSans-Italic.ttf" + }, + { + "path": "canvas-fonts/WorkSans-OFL.txt", + "sha256": "ace8c22a3326318b54e67c3691857929634205533f454a70ef5a3473ddb2e2ba", + "bytes": 4397, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/WorkSans-OFL.txt" + }, + { + "path": "canvas-fonts/WorkSans-Regular.ttf", + "sha256": "e67985a843df0d3cdee51a3d0f329eb1774a344ad9ff0c9ab923751f1577e2a4", + "bytes": 188916, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/WorkSans-Regular.ttf" + }, + { + "path": "canvas-fonts/YoungSerif-OFL.txt", + "sha256": "cdcb8039606b40a027a6d24586ec62d5fe29c701343d82a048c829cb28a3dd28", + "bytes": 4398, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/YoungSerif-OFL.txt" + }, + { + "path": "canvas-fonts/YoungSerif-Regular.ttf", + "sha256": "f8dc08f77abad753a00670af70756a8ace938e5c3f0b770f4f4c2071c4bd8fc6", + "bytes": 105136, + "url": "https://alphacodeone.com/catalog/assets/skill.canvas-design/1.0.0/canvas-fonts/YoungSerif-Regular.ttf" + } + ] + } + }, + { + "id": "skill:brand-guidelines", + "type": "skill", + "name": "brand-guidelines", + "displayName": "品牌规范应用", + "description": "把品牌色彩/字体规范应用到各类产物(Anthropic example-skills)。", + "source": "official", + "category": "design", + "license": "Apache-2.0", + "redistributable": true, + "version": "1.0.0", + "installSpec": { + "kind": "skill", + "source": "remote" + }, + "_provenance": "REQ-045 补货:再分发自 anthropics/skills@9d2f1ae(Apache-2.0,LICENSE.txt+NOTICE.md 随资产,内容与上游逐字节一致);S22 关闭内置通道后经远程资产管线上架。", + "remoteAsset": { + "version": "1.0.0", + "files": [ + { + "path": "LICENSE.txt", + "sha256": "bc6b3af2f331cbc7fb0da1344efb2cbe5877a31498b4d70dbc7000f3405a1362", + "bytes": 11345, + "url": "https://alphacodeone.com/catalog/assets/skill.brand-guidelines/1.0.0/LICENSE.txt" + }, + { + "path": "NOTICE.md", + "sha256": "4616b6c35782eabaf142f3df5457ae74496713c2758bf51661e94244c1684280", + "bytes": 407, + "url": "https://alphacodeone.com/catalog/assets/skill.brand-guidelines/1.0.0/NOTICE.md" + }, + { + "path": "SKILL.md", + "sha256": "1120b3769e2985cefb3d25be981b1f914abeba57ae079b83c20c666c164fa9fe", + "bytes": 2235, + "url": "https://alphacodeone.com/catalog/assets/skill.brand-guidelines/1.0.0/SKILL.md" + } + ] + } + }, + { + "id": "agent:bug-triage", + "type": "agent", + "name": "bug-triage", + "displayName": "问题定位(只读)", + "description": "只读问题定位 Agent:按报错/现象收敛疑源,产出复现步骤 + 根因假设(附代码证据)+ 修复建议;edit 拒绝、bash 逐次确认(与 code-reviewer 同款只读档)。alpha 自写。", + "source": "alpha", + "category": "dev", + "license": "MIT", + "redistributable": true, + "version": "1.0.0", + "installSpec": { + "kind": "agent", + "source": "remote" + }, + "_provenance": "S27 上架(2026-07-06):首条远程 agent 条目(REQ-046 通道首用);资产 = 单顶层 bug-triage.md(装约定:单文件/.md/256KB 帽)。", + "remoteAsset": { + "version": "1.0.0", + "files": [ + { + "path": "bug-triage.md", + "sha256": "645c1a629e10d739881e7301549963a430e5f8ca3d730dc0ebecffe7cabc0542", + "bytes": 1084, + "url": "https://alphacodeone.com/catalog/assets/agent.bug-triage/1.0.0/bug-triage.md" + } + ] + } }, { "id": "agent:code-reviewer", @@ -537,7 +1219,7 @@ "source": "builtin", "builtinAssetKey": "agents/code-reviewer.md" }, - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "plugin:opencode-notify", @@ -563,7 +1245,7 @@ "description": "会话空闲 / 任务完成时发 macOS 系统通知" } ], - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "bundle:office", @@ -588,7 +1270,7 @@ } ], "_verify": "再补一个 openpyxl 系 Excel-MCP(写 xlsx)+ 一页自写「办公」引导技能后加入。", - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "bundle:research", @@ -612,7 +1294,7 @@ "installOrder": 2 } ], - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "bundle:dev", @@ -635,13 +1317,43 @@ "optional": true, "installOrder": 2 }, + { + "catalogEntryId": "skill:mcp-builder", + "optional": true, + "installOrder": 3 + }, { "catalogEntryId": "skill:skill-creator", "optional": true, "installOrder": 4 } ], - "version": "2026-07-06.1" + "version": "2026-07-06.3" + }, + { + "id": "bundle:design", + "type": "bundle", + "name": "design-suite", + "displayName": "设计套件", + "description": "视觉/品牌设计技能组合(Apache-2.0,远程资产)。", + "source": "alpha", + "category": "design", + "license": "Apache-2.0", + "redistributable": true, + "bundleItems": [ + { + "catalogEntryId": "skill:canvas-design", + "optional": false, + "installOrder": 1 + }, + { + "catalogEntryId": "skill:brand-guidelines", + "optional": false, + "installOrder": 2 + } + ], + "_provenance": "REQ-045:S22 撤空壳后随成员补货回归(验收④,成员齐才复活)。", + "version": "2026-07-06.3" }, { "id": "bundle:china-office", @@ -670,7 +1382,7 @@ "installOrder": 3 } ], - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "cloud:code-review", @@ -707,7 +1419,7 @@ "派发信封元数据(预算/约束;denied_paths 缺省注入)" ] }, - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "cloud:research", @@ -743,7 +1455,7 @@ "派发信封元数据(预算/约束;denied_paths 缺省注入)" ] }, - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "cloud:docs", @@ -783,7 +1495,7 @@ "派发信封元数据(预算/约束;denied_paths 缺省注入)" ] }, - "version": "2026-07-06.1" + "version": "2026-07-06.3" }, { "id": "skill:conventional-commits", diff --git a/packages/ui-mac/src/renderer/extensions/alpha-catalog.snapshot.json b/packages/ui-mac/src/renderer/extensions/alpha-catalog.snapshot.json index 825c60e298cb..8b06398e87e8 100644 --- a/packages/ui-mac/src/renderer/extensions/alpha-catalog.snapshot.json +++ b/packages/ui-mac/src/renderer/extensions/alpha-catalog.snapshot.json @@ -1,9 +1,9 @@ { "v": 1, - "version": "2026-07-06.1", - "entries": 23, - "sha256": "ee1b25a9a5e02d7efe5a2cd7aa6914f7e542761aba1e6299aca8501daac775e4", + "version": "2026-07-06.3", + "entries": 28, + "sha256": "324c853eba293838af375ef5419df2912ad3a85915cdb9631fcdef90925171a9", "source": "https://alphacodeone.com/catalog/v1/catalog.json", - "fetchedAt": "2026-07-06T09:35:03.784Z", + "fetchedAt": "2026-07-06T10:48:37.872Z", "_note": "由 scripts/sync-catalog-snapshot.mjs 生成;alpha-catalog.json 禁手编(REQ-046),上架/撤架唯一动作在 alpha-web catalog-src。" } diff --git a/packages/ui-mac/src/renderer/extensions/alpha-catalog.test.ts b/packages/ui-mac/src/renderer/extensions/alpha-catalog.test.ts index 6e6690a70bf2..ba5fe2afa52e 100644 --- a/packages/ui-mac/src/renderer/extensions/alpha-catalog.test.ts +++ b/packages/ui-mac/src/renderer/extensions/alpha-catalog.test.ts @@ -64,10 +64,22 @@ describe("alpha-catalog 完整性", () => { } }) - test("REQ-044 撤下的三无资产条目不得回流(补货唯一通道=远程 catalog,REQ-045)", () => { - const banned = ["skill:mcp-builder", "skill:canvas-design", "skill:brand-guidelines", "bundle:design"] - const ids = new Set(catalog.entries.map((e) => e.id)) - for (const id of banned) expect(ids.has(id), `${id} 不应内置回流`).toBe(false) + test("REQ-044 撤下的三条目只允许经远程通道回流(REQ-045 补货,禁 builtin 复活)", () => { + // S26 补货后条目合法在场,但必须是 source:"remote"(资产经 C 端点下载 + sha256 钉死); + // builtinAssetKey 形态 = 资产未随包的恒失败老路,永不回流。bundle:design 成员必须全为远程技能。 + const restocked = ["skill:mcp-builder", "skill:canvas-design", "skill:brand-guidelines"] + for (const id of restocked) { + const e = catalog.entries.find((x) => x.id === id) + expect(e, `${id} 应随 REQ-045 补货在场`).toBeTruthy() + const spec = e!.installSpec as { source?: string; builtinAssetKey?: string } + expect(spec.source, `${id} 只允许远程通道`).toBe("remote") + expect(spec.builtinAssetKey, `${id} 不得携带 builtinAssetKey(builtin 复活即回归恒失败)`).toBeUndefined() + expect(e!.remoteAsset?.files?.length ?? 0, `${id} 必须带 remoteAsset 清单`).toBeGreaterThan(0) + } + const design = catalog.entries.find((x) => x.id === "bundle:design") + expect(design, "bundle:design 成员齐后回归(REQ-045 验收④)").toBeTruthy() + const memberIds = (design!.bundleItems ?? []).map((i) => i.catalogEntryId) + expect(memberIds.sort()).toEqual(["skill:brand-guidelines", "skill:canvas-design"]) }) test("S23 新条目在场:mcp:dingtalk / mcp:dbhub(E2/E6),钉钉入中国办公套件", () => {