Align marketplace categories with Codex taxonomy

Constraint: Keep one EAPIL marketplace while using official Codex category metadata and stable plugin IDs.

Rejected: One marketplace per category | Codex groups the UI by marketplace source, which would require users to add multiple markets and change install selectors.

Confidence: high

Scope-risk: moderate

Directive: Keep localized plugins in the same functional category and distinguish them with a language suffix such as -zh.

Tested: Marketplace validation, all manifest/category consistency checks, KeyInfo market tests, frontend lint and production build.
This commit is contained in:
KeyInfo Bot
2026-07-14 10:48:25 +08:00
parent 59c6b9f6cb
commit 93eeb27a5c
37 changed files with 647 additions and 557 deletions
+245 -245
View File
@@ -14,91 +14,7 @@
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "文档处理" "category": "Productivity"
},
{
"name": "pdf",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/pdf"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "文档处理"
},
{
"name": "pptx",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/pptx"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "文档处理"
},
{
"name": "xlsx",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/xlsx"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "文档处理"
},
{
"name": "postgres",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/postgres"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "数据分析"
},
{
"name": "threejs",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/threejs"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "设计"
},
{
"name": "literature-review",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/literature-review"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "文档处理"
},
{
"name": "paper2code",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/paper2code"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "文档处理"
}, },
{ {
"name": "find-skills", "name": "find-skills",
@@ -110,127 +26,7 @@
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "工具" "category": "Productivity"
},
{
"name": "karpathy-guidelines",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/karpathy-guidelines"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "开发工具"
},
{
"name": "eapil-gpt2-image",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/eapil-gpt2-image"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "设计"
},
{
"name": "ppt-translator",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/ppt-translator"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "文档处理"
},
{
"name": "patent-application-drafting-skill",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/patent-application-drafting-skill"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "文档处理"
},
{
"name": "eapil-llmapi-structured",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/eapil-llmapi-structured"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "开发工具"
},
{
"name": "generate-agents-md",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/generate-agents-md"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "知识库与检索"
},
{
"name": "eapil-voice",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/eapil-voice"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "多媒体与生成"
},
{
"name": "design-md",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/design-md"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "知识库与检索"
},
{
"name": "superpowers",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/superpowers"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "开发工具"
},
{
"name": "caveman",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/caveman"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "开发工具"
}, },
{ {
"name": "frontend-slides", "name": "frontend-slides",
@@ -242,7 +38,7 @@
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "文档处理" "category": "Productivity"
}, },
{ {
"name": "guizang-ppt-skill", "name": "guizang-ppt-skill",
@@ -254,7 +50,7 @@
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "文档处理" "category": "Productivity"
}, },
{ {
"name": "html-ppt", "name": "html-ppt",
@@ -266,55 +62,31 @@
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "文档处理" "category": "Productivity"
}, },
{ {
"name": "taste-skill", "name": "patent-application-drafting-skill",
"source": { "source": {
"source": "local", "source": "local",
"path": "./plugins/codex/plugins/taste-skill" "path": "./plugins/codex/plugins/patent-application-drafting-skill"
}, },
"policy": { "policy": {
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "设计" "category": "Productivity"
}, },
{ {
"name": "oh-my-codex", "name": "pdf",
"source": { "source": {
"source": "local", "source": "local",
"path": "./plugins/codex/plugins/oh-my-codex" "path": "./plugins/codex/plugins/pdf"
}, },
"policy": { "policy": {
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "开发工具" "category": "Productivity"
},
{
"name": "ui-ux-pro-max",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/ui-ux-pro-max"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "设计"
},
{
"name": "shadcn",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/shadcn"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "开发工具"
}, },
{ {
"name": "ppt-master", "name": "ppt-master",
@@ -326,19 +98,91 @@
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "文档处理" "category": "Productivity"
}, },
{ {
"name": "next-skills", "name": "ppt-translator",
"source": { "source": {
"source": "local", "source": "local",
"path": "./plugins/codex/plugins/next-skills" "path": "./plugins/codex/plugins/ppt-translator"
}, },
"policy": { "policy": {
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "开发工具" "category": "Productivity"
},
{
"name": "pptx",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/pptx"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
},
{
"name": "xlsx",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/xlsx"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
},
{
"name": "caveman",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/caveman"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
},
{
"name": "eapil-llmapi-structured",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/eapil-llmapi-structured"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
},
{
"name": "generate-agents-md",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/generate-agents-md"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
},
{
"name": "karpathy-guidelines",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/karpathy-guidelines"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
}, },
{ {
"name": "mcp-playwright", "name": "mcp-playwright",
@@ -350,7 +194,55 @@
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "MCP" "category": "Developer Tools"
},
{
"name": "next-skills",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/next-skills"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
},
{
"name": "oh-my-codex",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/oh-my-codex"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
},
{
"name": "shadcn",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/shadcn"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
},
{
"name": "superpowers",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/superpowers"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
}, },
{ {
"name": "superpowers-zh", "name": "superpowers-zh",
@@ -362,7 +254,115 @@
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "开发工具" "category": "Developer Tools"
},
{
"name": "design-md",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/design-md"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Creativity"
},
{
"name": "eapil-gpt2-image",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/eapil-gpt2-image"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Creativity"
},
{
"name": "eapil-voice",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/eapil-voice"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Creativity"
},
{
"name": "taste-skill",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/taste-skill"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Creativity"
},
{
"name": "threejs",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/threejs"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Creativity"
},
{
"name": "ui-ux-pro-max",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/ui-ux-pro-max"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Creativity"
},
{
"name": "postgres",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/postgres"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Data & Analytics"
},
{
"name": "literature-review",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/literature-review"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Education & Research"
},
{
"name": "paper2code",
"source": {
"source": "local",
"path": "./plugins/codex/plugins/paper2code"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Education & Research"
} }
] ]
} }
+2
View File
@@ -7,6 +7,8 @@
- 插件是分发单位,skill 是插件内部的能力单位。一个插件可以包含多个 skill。 - 插件是分发单位,skill 是插件内部的能力单位。一个插件可以包含多个 skill。
- 市场中的插件默认使用 `policy.installation: "AVAILABLE"`,不要改成 `INSTALLED_BY_DEFAULT`,除非明确要求所有用户默认安装。 - 市场中的插件默认使用 `policy.installation: "AVAILABLE"`,不要改成 `INSTALLED_BY_DEFAULT`,除非明确要求所有用户默认安装。
- 面向用户展示的名称、说明、分类可以使用中文。插件 ID、skill `name`、目录名保持英文 kebab-case,避免破坏安装标识和脚本路径。 - 面向用户展示的名称、说明、分类可以使用中文。插件 ID、skill `name`、目录名保持英文 kebab-case,避免破坏安装标识和脚本路径。
- 插件分类必须使用 Codex 官方英文分类值,例如 `Productivity``Developer Tools``Creativity``Data & Analytics``Education & Research`;不要再写“文档处理”“开发工具”“设计”或 `MCP` 等旧分类。
- 本地化插件与原版使用同一功能分类,通过 `-zh` 等插件 ID 后缀及 description 区分,不要为语言版本创建单独 marketplace。
- Codex 对同名 skill 不做合并;用户目录、仓库目录、插件目录里如果出现同名 skill,它们可能同时出现在选择器里。维护时尽量使用清晰、稳定的 skill 名称,避免让用户看到多个无法区分的同名入口。 - Codex 对同名 skill 不做合并;用户目录、仓库目录、插件目录里如果出现同名 skill,它们可能同时出现在选择器里。维护时尽量使用清晰、稳定的 skill 名称,避免让用户看到多个无法区分的同名入口。
- 第三方插件生成目录是同步产物。不要为了本地化直接手改 `plugins/codex/plugins/superpowers``plugins/codex/plugins/ui-ux-pro-max` 里的生成内容;应改 `config/external-sources.json` 的覆盖配置,再重新同步。 - 第三方插件生成目录是同步产物。不要为了本地化直接手改 `plugins/codex/plugins/superpowers``plugins/codex/plugins/ui-ux-pro-max` 里的生成内容;应改 `config/external-sources.json` 的覆盖配置,再重新同步。
+2
View File
@@ -17,6 +17,8 @@ codex plugin add <plugin-id>@eapil-skill-market
同一插件的原版与本地化版本可能同时存在。它们的展示名可以相近,但 `plugin-id` 必须不同;安装前应通过列表确认语言版本和精确 ID。 同一插件的原版与本地化版本可能同时存在。它们的展示名可以相近,但 `plugin-id` 必须不同;安装前应通过列表确认语言版本和精确 ID。
Codex 插件页的大标题按 marketplace 来源分组,不是按插件 `category` 分组。本市场统一使用 Codex 官方分类值;本地化版本与原版放在同一功能分类,并通过 `-zh` 等 ID 后缀和说明文字区分。
安装公共 skill 或第三方 Codex plugin 时也使用同一套命令;具体可安装项以 `codex plugin list --marketplace eapil-skill-market` 的实时输出为准。 安装公共 skill 或第三方 Codex plugin 时也使用同一套命令;具体可安装项以 `codex plugin list --marketplace eapil-skill-market` 的实时输出为准。
有些插件是 skill 集合,安装一个 `plugin-id` 后会同时提供多个 `$skill-name`。可安装项和安装后可用的 skills 均以 Codex 的实际输出为准。 有些插件是 skill 集合,安装一个 `plugin-id` 后会同时提供多个 `$skill-name`。可安装项和安装后可用的 skills 均以 Codex 的实际输出为准。
+28 -24
View File
@@ -6,7 +6,7 @@
"ref": "main", "ref": "main",
"adapter": "codex-plugin", "adapter": "codex-plugin",
"pluginName": "superpowers", "pluginName": "superpowers",
"category": "开发工具", "category": "Developer Tools",
"sourcePath": ".", "sourcePath": ".",
"include": [ "include": [
".codex-plugin", ".codex-plugin",
@@ -22,7 +22,7 @@
"displayName": "Superpowers", "displayName": "Superpowers",
"shortDescription": "规划、TDD、调试、代码评审和交付工作流。", "shortDescription": "规划、TDD、调试、代码评审和交付工作流。",
"longDescription": "Superpowers 提供面向编码 Agent 的结构化工作流,覆盖需求澄清、计划编写、测试驱动开发、系统化调试、并行执行、代码评审和交付收尾。", "longDescription": "Superpowers 提供面向编码 Agent 的结构化工作流,覆盖需求澄清、计划编写、测试驱动开发、系统化调试、并行执行、代码评审和交付收尾。",
"category": "开发工具", "category": "Developer Tools",
"defaultPrompt": [ "defaultPrompt": [
"使用 Superpowers 帮我规划这个开发任务。", "使用 Superpowers 帮我规划这个开发任务。",
"使用 Superpowers 帮我系统调试这个问题。" "使用 Superpowers 帮我系统调试这个问题。"
@@ -52,7 +52,7 @@
"ref": "main", "ref": "main",
"adapter": "codex-plugin", "adapter": "codex-plugin",
"pluginName": "superpowers-zh", "pluginName": "superpowers-zh",
"category": "开发工具", "category": "Developer Tools",
"sourcePath": ".", "sourcePath": ".",
"include": [ "include": [
".codex-plugin", ".codex-plugin",
@@ -64,9 +64,13 @@
], ],
"manifestOverrides": { "manifestOverrides": {
"name": "superpowers-zh", "name": "superpowers-zh",
"description": "Superpowers 的简体中文本地化版本,提供规划、TDD、系统化调试、代码评审和交付工作流。",
"interface": { "interface": {
"displayName": "Superpowers-zh",
"shortDescription": "Superpowers 简体中文本地化版本。",
"longDescription": "Superpowers-zh 是官方 Superpowers 的简体中文本地化版本,保留规划、测试驱动开发、系统化调试、并行执行、代码评审和分支收尾工作流。",
"developerName": "AreChen / Jesse Vincent", "developerName": "AreChen / Jesse Vincent",
"category": "开发工具" "category": "Developer Tools"
} }
} }
}, },
@@ -76,7 +80,7 @@
"ref": "main", "ref": "main",
"adapter": "codex-plugin", "adapter": "codex-plugin",
"pluginName": "oh-my-codex", "pluginName": "oh-my-codex",
"category": "开发工具", "category": "Developer Tools",
"sourcePath": "plugins/oh-my-codex", "sourcePath": "plugins/oh-my-codex",
"sparseCheckout": [ "sparseCheckout": [
"plugins/oh-my-codex" "plugins/oh-my-codex"
@@ -95,7 +99,7 @@
"shortDescription": "为 Codex CLI 提供 OMX 工作流、hooks、MCP 和多 Agent 编排。", "shortDescription": "为 Codex CLI 提供 OMX 工作流、hooks、MCP 和多 Agent 编排。",
"longDescription": "oh-my-codex 将 OMX 的规划、调试、代码评审、多 Agent 协作、目标执行、质量验证、wiki 和 HUD 工作流打包为 Codex 插件。插件包含官方支持的 plugin-scoped hooks、MCP 配置和多个 workflow skills;完整运行需要用户已安装 oh-my-codex CLI 并完成 omx setup。", "longDescription": "oh-my-codex 将 OMX 的规划、调试、代码评审、多 Agent 协作、目标执行、质量验证、wiki 和 HUD 工作流打包为 Codex 插件。插件包含官方支持的 plugin-scoped hooks、MCP 配置和多个 workflow skills;完整运行需要用户已安装 oh-my-codex CLI 并完成 omx setup。",
"developerName": "Yeachan Heo", "developerName": "Yeachan Heo",
"category": "开发工具", "category": "Developer Tools",
"capabilities": [ "capabilities": [
"Interactive", "Interactive",
"Read", "Read",
@@ -118,7 +122,7 @@
"ref": "main", "ref": "main",
"adapter": "claude-skill", "adapter": "claude-skill",
"pluginName": "ui-ux-pro-max", "pluginName": "ui-ux-pro-max",
"category": "设计", "category": "Creativity",
"skillPath": ".claude/skills/ui-ux-pro-max", "skillPath": ".claude/skills/ui-ux-pro-max",
"metadataPath": "skill.json", "metadataPath": "skill.json",
"brandColor": "#7C3AED", "brandColor": "#7C3AED",
@@ -128,7 +132,7 @@
"displayName": "UI/UX Pro Max", "displayName": "UI/UX Pro Max",
"shortDescription": "UI/UX 设计智能库,覆盖风格、配色、字体、可访问性、图表和前端技术栈。", "shortDescription": "UI/UX 设计智能库,覆盖风格、配色、字体、可访问性、图表和前端技术栈。",
"longDescription": "UI/UX Pro Max 提供可搜索的设计知识库,覆盖 UI 风格、配色、字体搭配、UX 指南、图表类型和多种前端技术栈,用于辅助中文用户完成产品界面设计和前端实现决策。", "longDescription": "UI/UX Pro Max 提供可搜索的设计知识库,覆盖 UI 风格、配色、字体搭配、UX 指南、图表类型和多种前端技术栈,用于辅助中文用户完成产品界面设计和前端实现决策。",
"category": "设计", "category": "Creativity",
"defaultPrompt": [ "defaultPrompt": [
"使用 UI/UX Pro Max 帮我设计这个界面。", "使用 UI/UX Pro Max 帮我设计这个界面。",
"使用 UI/UX Pro Max 帮我优化这个产品体验。" "使用 UI/UX Pro Max 帮我优化这个产品体验。"
@@ -159,7 +163,7 @@
"ref": "main", "ref": "main",
"adapter": "codex-plugin", "adapter": "codex-plugin",
"pluginName": "caveman", "pluginName": "caveman",
"category": "开发工具", "category": "Developer Tools",
"sourcePath": "plugins/caveman", "sourcePath": "plugins/caveman",
"sparseCheckout": [ "sparseCheckout": [
"plugins/caveman" "plugins/caveman"
@@ -181,7 +185,7 @@
"shortDescription": "让 Codex 输出更短,同时保留技术准确性。", "shortDescription": "让 Codex 输出更短,同时保留技术准确性。",
"longDescription": "Caveman 提供极简输出风格和压缩式子 Agent 协作指引。此公共市场版本只发布 Codex plugin 内可直接使用的 skills;不包含上游一键安装器、Claude Code hooks/statusline、MCP shrink、根目录 slash commands,以及依赖 Anthropic API 或 Claude CLI 的压缩脚本 skill。", "longDescription": "Caveman 提供极简输出风格和压缩式子 Agent 协作指引。此公共市场版本只发布 Codex plugin 内可直接使用的 skills;不包含上游一键安装器、Claude Code hooks/statusline、MCP shrink、根目录 slash commands,以及依赖 Anthropic API 或 Claude CLI 的压缩脚本 skill。",
"developerName": "Julius Brussee", "developerName": "Julius Brussee",
"category": "开发工具", "category": "Developer Tools",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -207,7 +211,7 @@
"ref": "main", "ref": "main",
"adapter": "skill-collection", "adapter": "skill-collection",
"pluginName": "taste-skill", "pluginName": "taste-skill",
"category": "设计", "category": "Creativity",
"skillsPath": "skills", "skillsPath": "skills",
"sparseCheckout": [ "sparseCheckout": [
"skills", "skills",
@@ -236,7 +240,7 @@
"shortDescription": "反模板化前端设计、重设计和图像参考生成 skill 集合。", "shortDescription": "反模板化前端设计、重设计和图像参考生成 skill 集合。",
"longDescription": "Taste Skill 提供 design-taste-frontend、gpt-taste、image-to-code、redesign、minimalist、brutalist、soft、stitch、output enforcement,以及 Web、移动端和 brandkit 图像生成等多个 skills,用于让 AI Agent 产出更有设计判断、更少模板感的前端界面和视觉参考。", "longDescription": "Taste Skill 提供 design-taste-frontend、gpt-taste、image-to-code、redesign、minimalist、brutalist、soft、stitch、output enforcement,以及 Web、移动端和 brandkit 图像生成等多个 skills,用于让 AI Agent 产出更有设计判断、更少模板感的前端界面和视觉参考。",
"developerName": "Leonxlnx", "developerName": "Leonxlnx",
"category": "设计", "category": "Creativity",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -273,7 +277,7 @@
"ref": "main", "ref": "main",
"adapter": "claude-skill", "adapter": "claude-skill",
"pluginName": "shadcn", "pluginName": "shadcn",
"category": "开发工具", "category": "Developer Tools",
"skillPath": "skills/shadcn", "skillPath": "skills/shadcn",
"brandColor": "#09090B", "brandColor": "#09090B",
"manifestOverrides": { "manifestOverrides": {
@@ -299,7 +303,7 @@
"shortDescription": "shadcn/ui 项目、组件、注册表和预设的开发工作流。", "shortDescription": "shadcn/ui 项目、组件、注册表和预设的开发工作流。",
"longDescription": "shadcn/ui skill 提供项目上下文读取、组件搜索、组件文档检索、CLI 操作约束、注册表组件接入、预设处理以及常见组件实现规范,适合在 React、Next.js、Tailwind 和 shadcn/ui 项目中使用。", "longDescription": "shadcn/ui skill 提供项目上下文读取、组件搜索、组件文档检索、CLI 操作约束、注册表组件接入、预设处理以及常见组件实现规范,适合在 React、Next.js、Tailwind 和 shadcn/ui 项目中使用。",
"developerName": "shadcn", "developerName": "shadcn",
"category": "开发工具", "category": "Developer Tools",
"defaultPrompt": [ "defaultPrompt": [
"使用 shadcn/ui 帮我添加或修复组件。", "使用 shadcn/ui 帮我添加或修复组件。",
"使用 shadcn/ui 帮我检查这个项目的组件实现规范。" "使用 shadcn/ui 帮我检查这个项目的组件实现规范。"
@@ -325,7 +329,7 @@
"ref": "main", "ref": "main",
"adapter": "claude-skill", "adapter": "claude-skill",
"pluginName": "frontend-slides", "pluginName": "frontend-slides",
"category": "文档处理", "category": "Productivity",
"skillPath": "plugins/frontend-slides/skills/frontend-slides", "skillPath": "plugins/frontend-slides/skills/frontend-slides",
"brandColor": "#2563EB", "brandColor": "#2563EB",
"manifestOverrides": { "manifestOverrides": {
@@ -350,7 +354,7 @@
"shortDescription": "创建动画丰富、固定 16:9 舞台的 HTML 演示文稿。", "shortDescription": "创建动画丰富、固定 16:9 舞台的 HTML 演示文稿。",
"longDescription": "Frontend Slides 用于从零创建零依赖 HTML slides,或将 PowerPoint 文件转换为网页演示文稿。它强调固定 1920×1080 舞台、鲜明视觉风格、动画表现和模板化审美探索,适合演讲、路演、分享和网页化展示。", "longDescription": "Frontend Slides 用于从零创建零依赖 HTML slides,或将 PowerPoint 文件转换为网页演示文稿。它强调固定 1920×1080 舞台、鲜明视觉风格、动画表现和模板化审美探索,适合演讲、路演、分享和网页化展示。",
"developerName": "zarazhangrui", "developerName": "zarazhangrui",
"category": "文档处理", "category": "Productivity",
"defaultPrompt": [ "defaultPrompt": [
"使用 Frontend Slides 帮我制作一份网页演示文稿。", "使用 Frontend Slides 帮我制作一份网页演示文稿。",
"使用 Frontend Slides 帮我把 PPT/PPTX 转成 HTML slides。" "使用 Frontend Slides 帮我把 PPT/PPTX 转成 HTML slides。"
@@ -375,7 +379,7 @@
"ref": "main", "ref": "main",
"adapter": "claude-skill", "adapter": "claude-skill",
"pluginName": "guizang-ppt-skill", "pluginName": "guizang-ppt-skill",
"category": "文档处理", "category": "Productivity",
"skillPath": ".", "skillPath": ".",
"brandColor": "#F97316", "brandColor": "#F97316",
"manifestOverrides": { "manifestOverrides": {
@@ -400,7 +404,7 @@
"shortDescription": "生成杂志风或瑞士风的横向翻页网页 PPT。", "shortDescription": "生成杂志风或瑞士风的横向翻页网页 PPT。",
"longDescription": "Guizang PPT Skill 用于生成单文件 HTML 横向翻页演示文稿,内置电子杂志风和瑞士国际主义两套视觉路线,适合分享、发布会、Demo Day、行业观察和需要强视觉风格的网页 PPT。", "longDescription": "Guizang PPT Skill 用于生成单文件 HTML 横向翻页演示文稿,内置电子杂志风和瑞士国际主义两套视觉路线,适合分享、发布会、Demo Day、行业观察和需要强视觉风格的网页 PPT。",
"developerName": "歸藏", "developerName": "歸藏",
"category": "文档处理", "category": "Productivity",
"defaultPrompt": [ "defaultPrompt": [
"使用 Guizang PPT Skill 帮我制作一份网页 PPT。", "使用 Guizang PPT Skill 帮我制作一份网页 PPT。",
"使用 Guizang PPT Skill 帮我做一份瑞士风演示文稿。" "使用 Guizang PPT Skill 帮我做一份瑞士风演示文稿。"
@@ -426,7 +430,7 @@
"ref": "main", "ref": "main",
"adapter": "claude-skill", "adapter": "claude-skill",
"pluginName": "html-ppt", "pluginName": "html-ppt",
"category": "文档处理", "category": "Productivity",
"skillPath": ".", "skillPath": ".",
"brandColor": "#0F766E", "brandColor": "#0F766E",
"manifestOverrides": { "manifestOverrides": {
@@ -451,7 +455,7 @@
"shortDescription": "用主题、布局和动画模板创作专业 HTML 演示文稿。", "shortDescription": "用主题、布局和动画模板创作专业 HTML 演示文稿。",
"longDescription": "HTML PPT Studio 提供多套主题、完整 deck 模板、单页布局、CSS/Canvas 动画、演讲者模式和导出脚本,用于生成演示文稿、技术分享、路演稿、小红书图文和静态 HTML slides。", "longDescription": "HTML PPT Studio 提供多套主题、完整 deck 模板、单页布局、CSS/Canvas 动画、演讲者模式和导出脚本,用于生成演示文稿、技术分享、路演稿、小红书图文和静态 HTML slides。",
"developerName": "lewislulu", "developerName": "lewislulu",
"category": "文档处理", "category": "Productivity",
"defaultPrompt": [ "defaultPrompt": [
"使用 HTML PPT Studio 帮我制作一份演示文稿。", "使用 HTML PPT Studio 帮我制作一份演示文稿。",
"使用 HTML PPT Studio 帮我生成带演讲者备注的 HTML slides。" "使用 HTML PPT Studio 帮我生成带演讲者备注的 HTML slides。"
@@ -490,7 +494,7 @@
"ref": "main", "ref": "main",
"adapter": "claude-skill", "adapter": "claude-skill",
"pluginName": "ppt-master", "pluginName": "ppt-master",
"category": "文档处理", "category": "Productivity",
"skillPath": "skills/ppt-master", "skillPath": "skills/ppt-master",
"sparseCheckout": [ "sparseCheckout": [
"skills/ppt-master", "skills/ppt-master",
@@ -520,7 +524,7 @@
"shortDescription": "从文档生成 SVG 页面并导出 PPTX 的多阶段工作流。", "shortDescription": "从文档生成 SVG 页面并导出 PPTX 的多阶段工作流。",
"longDescription": "PPT Master 将 PDF、DOCX、URL、Markdown 等源材料转换为高质量 SVG 页面,并通过策略、模板、执行、质量检查和后处理流程导出 PPTX,适合需要结构化长流程和高质量页面控制的演示文稿制作。", "longDescription": "PPT Master 将 PDF、DOCX、URL、Markdown 等源材料转换为高质量 SVG 页面,并通过策略、模板、执行、质量检查和后处理流程导出 PPTX,适合需要结构化长流程和高质量页面控制的演示文稿制作。",
"developerName": "hugohe3", "developerName": "hugohe3",
"category": "文档处理", "category": "Productivity",
"defaultPrompt": [ "defaultPrompt": [
"使用 PPT Master 帮我基于资料生成一份 PPT。", "使用 PPT Master 帮我基于资料生成一份 PPT。",
"使用 PPT Master 帮我把源文档转换成高质量演示文稿。" "使用 PPT Master 帮我把源文档转换成高质量演示文稿。"
@@ -551,7 +555,7 @@
"ref": "canary", "ref": "canary",
"adapter": "skill-collection", "adapter": "skill-collection",
"pluginName": "next-skills", "pluginName": "next-skills",
"category": "开发工具", "category": "Developer Tools",
"skillsPath": "skills", "skillsPath": "skills",
"sparseCheckout": [ "sparseCheckout": [
"skills" "skills"
@@ -580,7 +584,7 @@
"shortDescription": "Next.js Cache Components 迁移、优化和 dev loop 验证工作流。", "shortDescription": "Next.js Cache Components 迁移、优化和 dev loop 验证工作流。",
"longDescription": "Next.js Agent Skills 现在跟随 Next.js 仓库 canary/skills 版本,包含 next-cache-components-adoption、next-cache-components-optimizer 和 next-dev-loop 三个技能,覆盖 Cache Components 启用迁移、静态壳/即时导航优化,以及通过 Next.js dev MCP 与真实浏览器验证运行时行为。", "longDescription": "Next.js Agent Skills 现在跟随 Next.js 仓库 canary/skills 版本,包含 next-cache-components-adoption、next-cache-components-optimizer 和 next-dev-loop 三个技能,覆盖 Cache Components 启用迁移、静态壳/即时导航优化,以及通过 Next.js dev MCP 与真实浏览器验证运行时行为。",
"developerName": "Vercel", "developerName": "Vercel",
"category": "开发工具", "category": "Developer Tools",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
+245 -245
View File
@@ -14,91 +14,7 @@
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "文档处理" "category": "Productivity"
},
{
"name": "pdf",
"source": {
"source": "local",
"path": "./plugins/pdf"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "文档处理"
},
{
"name": "pptx",
"source": {
"source": "local",
"path": "./plugins/pptx"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "文档处理"
},
{
"name": "xlsx",
"source": {
"source": "local",
"path": "./plugins/xlsx"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "文档处理"
},
{
"name": "postgres",
"source": {
"source": "local",
"path": "./plugins/postgres"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "数据分析"
},
{
"name": "threejs",
"source": {
"source": "local",
"path": "./plugins/threejs"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "设计"
},
{
"name": "literature-review",
"source": {
"source": "local",
"path": "./plugins/literature-review"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "文档处理"
},
{
"name": "paper2code",
"source": {
"source": "local",
"path": "./plugins/paper2code"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "文档处理"
}, },
{ {
"name": "find-skills", "name": "find-skills",
@@ -110,127 +26,7 @@
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "工具" "category": "Productivity"
},
{
"name": "karpathy-guidelines",
"source": {
"source": "local",
"path": "./plugins/karpathy-guidelines"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "开发工具"
},
{
"name": "eapil-gpt2-image",
"source": {
"source": "local",
"path": "./plugins/eapil-gpt2-image"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "设计"
},
{
"name": "ppt-translator",
"source": {
"source": "local",
"path": "./plugins/ppt-translator"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "文档处理"
},
{
"name": "patent-application-drafting-skill",
"source": {
"source": "local",
"path": "./plugins/patent-application-drafting-skill"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "文档处理"
},
{
"name": "eapil-llmapi-structured",
"source": {
"source": "local",
"path": "./plugins/eapil-llmapi-structured"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "开发工具"
},
{
"name": "generate-agents-md",
"source": {
"source": "local",
"path": "./plugins/generate-agents-md"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "知识库与检索"
},
{
"name": "eapil-voice",
"source": {
"source": "local",
"path": "./plugins/eapil-voice"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "多媒体与生成"
},
{
"name": "design-md",
"source": {
"source": "local",
"path": "./plugins/design-md"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "知识库与检索"
},
{
"name": "superpowers",
"source": {
"source": "local",
"path": "./plugins/superpowers"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "开发工具"
},
{
"name": "caveman",
"source": {
"source": "local",
"path": "./plugins/caveman"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "开发工具"
}, },
{ {
"name": "frontend-slides", "name": "frontend-slides",
@@ -242,7 +38,7 @@
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "文档处理" "category": "Productivity"
}, },
{ {
"name": "guizang-ppt-skill", "name": "guizang-ppt-skill",
@@ -254,7 +50,7 @@
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "文档处理" "category": "Productivity"
}, },
{ {
"name": "html-ppt", "name": "html-ppt",
@@ -266,55 +62,31 @@
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "文档处理" "category": "Productivity"
}, },
{ {
"name": "taste-skill", "name": "patent-application-drafting-skill",
"source": { "source": {
"source": "local", "source": "local",
"path": "./plugins/taste-skill" "path": "./plugins/patent-application-drafting-skill"
}, },
"policy": { "policy": {
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "设计" "category": "Productivity"
}, },
{ {
"name": "oh-my-codex", "name": "pdf",
"source": { "source": {
"source": "local", "source": "local",
"path": "./plugins/oh-my-codex" "path": "./plugins/pdf"
}, },
"policy": { "policy": {
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "开发工具" "category": "Productivity"
},
{
"name": "ui-ux-pro-max",
"source": {
"source": "local",
"path": "./plugins/ui-ux-pro-max"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "设计"
},
{
"name": "shadcn",
"source": {
"source": "local",
"path": "./plugins/shadcn"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "开发工具"
}, },
{ {
"name": "ppt-master", "name": "ppt-master",
@@ -326,19 +98,91 @@
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "文档处理" "category": "Productivity"
}, },
{ {
"name": "next-skills", "name": "ppt-translator",
"source": { "source": {
"source": "local", "source": "local",
"path": "./plugins/next-skills" "path": "./plugins/ppt-translator"
}, },
"policy": { "policy": {
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "开发工具" "category": "Productivity"
},
{
"name": "pptx",
"source": {
"source": "local",
"path": "./plugins/pptx"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
},
{
"name": "xlsx",
"source": {
"source": "local",
"path": "./plugins/xlsx"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
},
{
"name": "caveman",
"source": {
"source": "local",
"path": "./plugins/caveman"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
},
{
"name": "eapil-llmapi-structured",
"source": {
"source": "local",
"path": "./plugins/eapil-llmapi-structured"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
},
{
"name": "generate-agents-md",
"source": {
"source": "local",
"path": "./plugins/generate-agents-md"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
},
{
"name": "karpathy-guidelines",
"source": {
"source": "local",
"path": "./plugins/karpathy-guidelines"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
}, },
{ {
"name": "mcp-playwright", "name": "mcp-playwright",
@@ -350,7 +194,55 @@
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "MCP" "category": "Developer Tools"
},
{
"name": "next-skills",
"source": {
"source": "local",
"path": "./plugins/next-skills"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
},
{
"name": "oh-my-codex",
"source": {
"source": "local",
"path": "./plugins/oh-my-codex"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
},
{
"name": "shadcn",
"source": {
"source": "local",
"path": "./plugins/shadcn"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
},
{
"name": "superpowers",
"source": {
"source": "local",
"path": "./plugins/superpowers"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
}, },
{ {
"name": "superpowers-zh", "name": "superpowers-zh",
@@ -362,7 +254,115 @@
"installation": "AVAILABLE", "installation": "AVAILABLE",
"authentication": "ON_INSTALL" "authentication": "ON_INSTALL"
}, },
"category": "开发工具" "category": "Developer Tools"
},
{
"name": "design-md",
"source": {
"source": "local",
"path": "./plugins/design-md"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Creativity"
},
{
"name": "eapil-gpt2-image",
"source": {
"source": "local",
"path": "./plugins/eapil-gpt2-image"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Creativity"
},
{
"name": "eapil-voice",
"source": {
"source": "local",
"path": "./plugins/eapil-voice"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Creativity"
},
{
"name": "taste-skill",
"source": {
"source": "local",
"path": "./plugins/taste-skill"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Creativity"
},
{
"name": "threejs",
"source": {
"source": "local",
"path": "./plugins/threejs"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Creativity"
},
{
"name": "ui-ux-pro-max",
"source": {
"source": "local",
"path": "./plugins/ui-ux-pro-max"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Creativity"
},
{
"name": "postgres",
"source": {
"source": "local",
"path": "./plugins/postgres"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Data & Analytics"
},
{
"name": "literature-review",
"source": {
"source": "local",
"path": "./plugins/literature-review"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Education & Research"
},
{
"name": "paper2code",
"source": {
"source": "local",
"path": "./plugins/paper2code"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Education & Research"
} }
] ]
} }
@@ -21,7 +21,7 @@
"shortDescription": "让 Codex 输出更短,同时保留技术准确性。", "shortDescription": "让 Codex 输出更短,同时保留技术准确性。",
"longDescription": "Caveman 提供极简输出风格和压缩式子 Agent 协作指引。此公共市场版本只发布 Codex plugin 内可直接使用的 skills;不包含上游一键安装器、Claude Code hooks/statusline、MCP shrink、根目录 slash commands,以及依赖 Anthropic API 或 Claude CLI 的压缩脚本 skill。", "longDescription": "Caveman 提供极简输出风格和压缩式子 Agent 协作指引。此公共市场版本只发布 Codex plugin 内可直接使用的 skills;不包含上游一键安装器、Claude Code hooks/statusline、MCP shrink、根目录 slash commands,以及依赖 Anthropic API 或 Claude CLI 的压缩脚本 skill。",
"developerName": "Julius Brussee", "developerName": "Julius Brussee",
"category": "开发工具", "category": "Developer Tools",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -20,7 +20,7 @@
"shortDescription": "创建、编辑、验证、比较、导出及应用 Google Labs DESIGN.md 文件,从而构建可供人工智能读取的规范化设计系统。", "shortDescription": "创建、编辑、验证、比较、导出及应用 Google Labs DESIGN.md 文件,从而构建可供人工智能读取的规范化设计系统。",
"longDescription": "创建、编辑、验证、比较、导出及应用 Google Labs DESIGN.md 文件,从而构建可供人工智能读取的规范化设计系统。", "longDescription": "创建、编辑、验证、比较、导出及应用 Google Labs DESIGN.md 文件,从而构建可供人工智能读取的规范化设计系统。",
"developerName": "EAPIL", "developerName": "EAPIL",
"category": "知识库与检索", "category": "Creativity",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -20,7 +20,7 @@
"shortDescription": "可以创建、编辑和分析Word文档,同时支持跟踪修改、添加注释、保持格式不变以及提取文本内容。", "shortDescription": "可以创建、编辑和分析Word文档,同时支持跟踪修改、添加注释、保持格式不变以及提取文本内容。",
"longDescription": "可以创建、编辑和分析Word文档,同时支持跟踪修改、添加注释、保持格式不变以及提取文本内容。", "longDescription": "可以创建、编辑和分析Word文档,同时支持跟踪修改、添加注释、保持格式不变以及提取文本内容。",
"developerName": "EAPIL", "developerName": "EAPIL",
"category": "文档处理", "category": "Productivity",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -20,7 +20,7 @@
"shortDescription": "通过 公司提供的 OpenAI 兼容的图像 API 生成或编辑图像时使用,这包括针对 gpt-image-2、/v1/images/generations、/v1/images/edits 的请求,以及使用 Python 图像 API 进行的相关操作,还包括图像提示、掩码的处理、多部分图像的上传、图像文件的保存,以及解码 b64_json 格式的图像响应等内容。", "shortDescription": "通过 公司提供的 OpenAI 兼容的图像 API 生成或编辑图像时使用,这包括针对 gpt-image-2、/v1/images/generations、/v1/images/edits 的请求,以及使用 Python 图像 API 进行的相关操作,还包括图像提示、掩码的处理、多部分图像的上传、图像文件的保存,以及解码 b64_json 格式的图像响应等内容。",
"longDescription": "通过 公司提供的 OpenAI 兼容的图像 API 生成或编辑图像时使用,这包括针对 gpt-image-2、/v1/images/generations、/v1/images/edits 的请求,以及使用 Python 图像 API 进行的相关操作,还包括图像提示、掩码的处理、多部分图像的上传、图像文件的保存,以及解码 b64_json 格式的图像响应等内容。", "longDescription": "通过 公司提供的 OpenAI 兼容的图像 API 生成或编辑图像时使用,这包括针对 gpt-image-2、/v1/images/generations、/v1/images/edits 的请求,以及使用 Python 图像 API 进行的相关操作,还包括图像提示、掩码的处理、多部分图像的上传、图像文件的保存,以及解码 b64_json 格式的图像响应等内容。",
"developerName": "EAPIL", "developerName": "EAPIL",
"category": "设计", "category": "Creativity",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -20,7 +20,7 @@
"shortDescription": "指导AI以生成结构化 JSON 输出的指南,内容涵盖视觉标注、严格的 JSON 架构要求、推理耗时分析、令牌/延迟诊断以及网关故障排除等主题。适用于在构建、调试等类似兼容 OpenAI 的结构化输出请求时使用。", "shortDescription": "指导AI以生成结构化 JSON 输出的指南,内容涵盖视觉标注、严格的 JSON 架构要求、推理耗时分析、令牌/延迟诊断以及网关故障排除等主题。适用于在构建、调试等类似兼容 OpenAI 的结构化输出请求时使用。",
"longDescription": "指导AI以生成结构化 JSON 输出的指南,内容涵盖视觉标注、严格的 JSON 架构要求、推理耗时分析、令牌/延迟诊断以及网关故障排除等主题。适用于在构建、调试等类似兼容 OpenAI 的结构化输出请求时使用。", "longDescription": "指导AI以生成结构化 JSON 输出的指南,内容涵盖视觉标注、严格的 JSON 架构要求、推理耗时分析、令牌/延迟诊断以及网关故障排除等主题。适用于在构建、调试等类似兼容 OpenAI 的结构化输出请求时使用。",
"developerName": "EAPIL", "developerName": "EAPIL",
"category": "开发工具", "category": "Developer Tools",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -20,7 +20,7 @@
"shortDescription": "当任务需要合成语音、根据指令设计语音、从参考音频克隆语音、使用 VoxCPM2 或 Qwen 提供商的服务、对音频进行增强或去噪、通过该服务转录音频、批量进行 ASR/警报音克隆、将生成的语音导出为 WAV/MP3 格式、检查模型状态,或生成用于 Eapil-Voice API 的 curl/Python 调用时,应使用此服务。", "shortDescription": "当任务需要合成语音、根据指令设计语音、从参考音频克隆语音、使用 VoxCPM2 或 Qwen 提供商的服务、对音频进行增强或去噪、通过该服务转录音频、批量进行 ASR/警报音克隆、将生成的语音导出为 WAV/MP3 格式、检查模型状态,或生成用于 Eapil-Voice API 的 curl/Python 调用时,应使用此服务。",
"longDescription": "当任务需要合成语音、根据指令设计语音、从参考音频克隆语音、使用 VoxCPM2 或 Qwen 提供商的服务、对音频进行增强或去噪、通过该服务转录音频、批量进行 ASR/警报音克隆、将生成的语音导出为 WAV/MP3 格式、检查模型状态,或生成用于 Eapil-Voice API 的 curl/Python 调用时,应使用此服务。", "longDescription": "当任务需要合成语音、根据指令设计语音、从参考音频克隆语音、使用 VoxCPM2 或 Qwen 提供商的服务、对音频进行增强或去噪、通过该服务转录音频、批量进行 ASR/警报音克隆、将生成的语音导出为 WAV/MP3 格式、检查模型状态,或生成用于 Eapil-Voice API 的 curl/Python 调用时,应使用此服务。",
"developerName": "EAPIL", "developerName": "EAPIL",
"category": "多媒体与生成", "category": "Creativity",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -20,7 +20,7 @@
"shortDescription": "当用户提出“如何执行X操作”、“寻找适用于X的技能”、“是否有可以完成……的技能”之类的问题,或表示希望扩展功能时,该技能可帮助用户发现并安装相应的智能体技能。当用户正在寻找可能以可安装技能形式存在的功能时,应使用此技能。", "shortDescription": "当用户提出“如何执行X操作”、“寻找适用于X的技能”、“是否有可以完成……的技能”之类的问题,或表示希望扩展功能时,该技能可帮助用户发现并安装相应的智能体技能。当用户正在寻找可能以可安装技能形式存在的功能时,应使用此技能。",
"longDescription": "当用户提出“如何执行X操作”、“寻找适用于X的技能”、“是否有可以完成……的技能”之类的问题,或表示希望扩展功能时,该技能可帮助用户发现并安装相应的智能体技能。当用户正在寻找可能以可安装技能形式存在的功能时,应使用此技能。", "longDescription": "当用户提出“如何执行X操作”、“寻找适用于X的技能”、“是否有可以完成……的技能”之类的问题,或表示希望扩展功能时,该技能可帮助用户发现并安装相应的智能体技能。当用户正在寻找可能以可安装技能形式存在的功能时,应使用此技能。",
"developerName": "EAPIL", "developerName": "EAPIL",
"category": "工具", "category": "Productivity",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -22,7 +22,7 @@
"shortDescription": "创建动画丰富、固定 16:9 舞台的 HTML 演示文稿。", "shortDescription": "创建动画丰富、固定 16:9 舞台的 HTML 演示文稿。",
"longDescription": "Frontend Slides 用于从零创建零依赖 HTML slides,或将 PowerPoint 文件转换为网页演示文稿。它强调固定 1920×1080 舞台、鲜明视觉风格、动画表现和模板化审美探索,适合演讲、路演、分享和网页化展示。", "longDescription": "Frontend Slides 用于从零创建零依赖 HTML slides,或将 PowerPoint 文件转换为网页演示文稿。它强调固定 1920×1080 舞台、鲜明视觉风格、动画表现和模板化审美探索,适合演讲、路演、分享和网页化展示。",
"developerName": "zarazhangrui", "developerName": "zarazhangrui",
"category": "文档处理", "category": "Productivity",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -20,7 +20,7 @@
"shortDescription": "当需要创建、更新、标准化、审核或迁移 AGENTS.md 文件以及仓库级的 AI 智能体配置时使用,这些配置包括顶层指南或嵌套指南、项目入门相关内容、与 Claude/Copilot/Cursor 的兼容性设置,以及冗余上下文的清理工作。", "shortDescription": "当需要创建、更新、标准化、审核或迁移 AGENTS.md 文件以及仓库级的 AI 智能体配置时使用,这些配置包括顶层指南或嵌套指南、项目入门相关内容、与 Claude/Copilot/Cursor 的兼容性设置,以及冗余上下文的清理工作。",
"longDescription": "当需要创建、更新、标准化、审核或迁移 AGENTS.md 文件以及仓库级的 AI 智能体配置时使用,这些配置包括顶层指南或嵌套指南、项目入门相关内容、与 Claude/Copilot/Cursor 的兼容性设置,以及冗余上下文的清理工作。", "longDescription": "当需要创建、更新、标准化、审核或迁移 AGENTS.md 文件以及仓库级的 AI 智能体配置时使用,这些配置包括顶层指南或嵌套指南、项目入门相关内容、与 Claude/Copilot/Cursor 的兼容性设置,以及冗余上下文的清理工作。",
"developerName": "EAPIL", "developerName": "EAPIL",
"category": "知识库与检索", "category": "Developer Tools",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -22,7 +22,7 @@
"shortDescription": "生成杂志风或瑞士风的横向翻页网页 PPT。", "shortDescription": "生成杂志风或瑞士风的横向翻页网页 PPT。",
"longDescription": "Guizang PPT Skill 用于生成单文件 HTML 横向翻页演示文稿,内置电子杂志风和瑞士国际主义两套视觉路线,适合分享、发布会、Demo Day、行业观察和需要强视觉风格的网页 PPT。", "longDescription": "Guizang PPT Skill 用于生成单文件 HTML 横向翻页演示文稿,内置电子杂志风和瑞士国际主义两套视觉路线,适合分享、发布会、Demo Day、行业观察和需要强视觉风格的网页 PPT。",
"developerName": "歸藏", "developerName": "歸藏",
"category": "文档处理", "category": "Productivity",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -22,7 +22,7 @@
"shortDescription": "用主题、布局和动画模板创作专业 HTML 演示文稿。", "shortDescription": "用主题、布局和动画模板创作专业 HTML 演示文稿。",
"longDescription": "HTML PPT Studio 提供多套主题、完整 deck 模板、单页布局、CSS/Canvas 动画、演讲者模式和导出脚本,用于生成演示文稿、技术分享、路演稿、小红书图文和静态 HTML slides。", "longDescription": "HTML PPT Studio 提供多套主题、完整 deck 模板、单页布局、CSS/Canvas 动画、演讲者模式和导出脚本,用于生成演示文稿、技术分享、路演稿、小红书图文和静态 HTML slides。",
"developerName": "lewislulu", "developerName": "lewislulu",
"category": "文档处理", "category": "Productivity",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -20,7 +20,7 @@
"shortDescription": "andrej-karpathy-skills 是一个由社区开发者 forrestchang 整理的 Claude Code 最佳实践配置集,灵感来源于AI领域顶级大牛 Andrej Karpathy(前特斯拉AI总监、OpenAI联合创始人)在使用 AI 编程助手过程中分享的经验和技巧。", "shortDescription": "andrej-karpathy-skills 是一个由社区开发者 forrestchang 整理的 Claude Code 最佳实践配置集,灵感来源于AI领域顶级大牛 Andrej Karpathy(前特斯拉AI总监、OpenAI联合创始人)在使用 AI 编程助手过程中分享的经验和技巧。",
"longDescription": "andrej-karpathy-skills 是一个由社区开发者 forrestchang 整理的 Claude Code 最佳实践配置集,灵感来源于AI领域顶级大牛 Andrej Karpathy(前特斯拉AI总监、OpenAI联合创始人)在使用 AI 编程助手过程中分享的经验和技巧。", "longDescription": "andrej-karpathy-skills 是一个由社区开发者 forrestchang 整理的 Claude Code 最佳实践配置集,灵感来源于AI领域顶级大牛 Andrej Karpathy(前特斯拉AI总监、OpenAI联合创始人)在使用 AI 编程助手过程中分享的经验和技巧。",
"developerName": "EAPIL", "developerName": "EAPIL",
"category": "开发工具", "category": "Developer Tools",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -20,7 +20,7 @@
"shortDescription": "nature论文模版排版", "shortDescription": "nature论文模版排版",
"longDescription": "nature论文模版排版", "longDescription": "nature论文模版排版",
"developerName": "EAPIL", "developerName": "EAPIL",
"category": "文档处理", "category": "Education & Research",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -21,7 +21,7 @@
"shortDescription": "Playwright 是由 Microsoft 开发并维护的开源浏览器自动化框架,专为现代 Web 应用设计。它提供了一套统一的 API,支持 Chromium、Firefox 和 WebKit 三大主流浏览器引擎,适用于端到端测试、网页数据采集及自动化操作等场景。", "shortDescription": "Playwright 是由 Microsoft 开发并维护的开源浏览器自动化框架,专为现代 Web 应用设计。它提供了一套统一的 API,支持 Chromium、Firefox 和 WebKit 三大主流浏览器引擎,适用于端到端测试、网页数据采集及自动化操作等场景。",
"longDescription": "Playwright 是由 Microsoft 开发并维护的开源浏览器自动化框架,专为现代 Web 应用设计。它提供了一套统一的 API,支持 Chromium、Firefox 和 WebKit 三大主流浏览器引擎,适用于端到端测试、网页数据采集及自动化操作等场景。", "longDescription": "Playwright 是由 Microsoft 开发并维护的开源浏览器自动化框架,专为现代 Web 应用设计。它提供了一套统一的 API,支持 Chromium、Firefox 和 WebKit 三大主流浏览器引擎,适用于端到端测试、网页数据采集及自动化操作等场景。",
"developerName": "EAPIL", "developerName": "EAPIL",
"category": "MCP", "category": "Developer Tools",
"capabilities": [ "capabilities": [
"Interactive", "Interactive",
"Read" "Read"
@@ -23,7 +23,7 @@
"shortDescription": "Next.js Cache Components 迁移、优化和 dev loop 验证工作流。", "shortDescription": "Next.js Cache Components 迁移、优化和 dev loop 验证工作流。",
"longDescription": "Next.js Agent Skills 现在跟随 Next.js 仓库 canary/skills 版本,包含 next-cache-components-adoption、next-cache-components-optimizer 和 next-dev-loop 三个技能,覆盖 Cache Components 启用迁移、静态壳/即时导航优化,以及通过 Next.js dev MCP 与真实浏览器验证运行时行为。", "longDescription": "Next.js Agent Skills 现在跟随 Next.js 仓库 canary/skills 版本,包含 next-cache-components-adoption、next-cache-components-optimizer 和 next-dev-loop 三个技能,覆盖 Cache Components 启用迁移、静态壳/即时导航优化,以及通过 Next.js dev MCP 与真实浏览器验证运行时行为。",
"developerName": "Vercel", "developerName": "Vercel",
"category": "开发工具", "category": "Developer Tools",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -25,7 +25,7 @@
"shortDescription": "为 Codex CLI 提供 OMX 工作流、hooks、MCP 和多 Agent 编排。", "shortDescription": "为 Codex CLI 提供 OMX 工作流、hooks、MCP 和多 Agent 编排。",
"longDescription": "oh-my-codex 将 OMX 的规划、调试、代码评审、多 Agent 协作、目标执行、质量验证、wiki 和 HUD 工作流打包为 Codex 插件。插件包含官方支持的 plugin-scoped hooks、MCP 配置和多个 workflow skills;完整运行需要用户已安装 oh-my-codex CLI 并完成 omx setup。", "longDescription": "oh-my-codex 将 OMX 的规划、调试、代码评审、多 Agent 协作、目标执行、质量验证、wiki 和 HUD 工作流打包为 Codex 插件。插件包含官方支持的 plugin-scoped hooks、MCP 配置和多个 workflow skills;完整运行需要用户已安装 oh-my-codex CLI 并完成 omx setup。",
"developerName": "Yeachan Heo", "developerName": "Yeachan Heo",
"category": "开发工具", "category": "Developer Tools",
"capabilities": [ "capabilities": [
"Interactive", "Interactive",
"Read", "Read",
@@ -20,7 +20,7 @@
"shortDescription": "将Arxiv论文转换为简洁的、基于引用的Python实现代码。当用户使用`/paper2code`命令并提供Arxiv链接或论文ID时,该系统会提示“实现这篇论文”;或者当用户粘贴Arxiv链接请求代码实现时,系统也会作出相应响应。系统会如实指出所有可能存在歧义的地方,绝不会添加论文中未提及的实现细节。", "shortDescription": "将Arxiv论文转换为简洁的、基于引用的Python实现代码。当用户使用`/paper2code`命令并提供Arxiv链接或论文ID时,该系统会提示“实现这篇论文”;或者当用户粘贴Arxiv链接请求代码实现时,系统也会作出相应响应。系统会如实指出所有可能存在歧义的地方,绝不会添加论文中未提及的实现细节。",
"longDescription": "将Arxiv论文转换为简洁的、基于引用的Python实现代码。当用户使用`/paper2code`命令并提供Arxiv链接或论文ID时,该系统会提示“实现这篇论文”;或者当用户粘贴Arxiv链接请求代码实现时,系统也会作出相应响应。系统会如实指出所有可能存在歧义的地方,绝不会添加论文中未提及的实现细节。", "longDescription": "将Arxiv论文转换为简洁的、基于引用的Python实现代码。当用户使用`/paper2code`命令并提供Arxiv链接或论文ID时,该系统会提示“实现这篇论文”;或者当用户粘贴Arxiv链接请求代码实现时,系统也会作出相应响应。系统会如实指出所有可能存在歧义的地方,绝不会添加论文中未提及的实现细节。",
"developerName": "EAPIL", "developerName": "EAPIL",
"category": "文档处理", "category": "Education & Research",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -20,7 +20,7 @@
"shortDescription": "在根据发明人访谈内容撰写中文专利技术交底书或专利申请文件时使用,尤其适用于软件、人工智能、系统、设备、方法、模型训练、数据处理、视觉监控或工程类发明。也可用于用户收集发明思路、确认技术内容的完整性、准备专利交底书、起草权利要求书/说明书/摘要/附图、将其转换为Word格式,以及评估发明的新颖性、创造性和实用性。", "shortDescription": "在根据发明人访谈内容撰写中文专利技术交底书或专利申请文件时使用,尤其适用于软件、人工智能、系统、设备、方法、模型训练、数据处理、视觉监控或工程类发明。也可用于用户收集发明思路、确认技术内容的完整性、准备专利交底书、起草权利要求书/说明书/摘要/附图、将其转换为Word格式,以及评估发明的新颖性、创造性和实用性。",
"longDescription": "在根据发明人访谈内容撰写中文专利技术交底书或专利申请文件时使用,尤其适用于软件、人工智能、系统、设备、方法、模型训练、数据处理、视觉监控或工程类发明。也可用于用户收集发明思路、确认技术内容的完整性、准备专利交底书、起草权利要求书/说明书/摘要/附图、将其转换为Word格式,以及评估发明的新颖性、创造性和实用性。", "longDescription": "在根据发明人访谈内容撰写中文专利技术交底书或专利申请文件时使用,尤其适用于软件、人工智能、系统、设备、方法、模型训练、数据处理、视觉监控或工程类发明。也可用于用户收集发明思路、确认技术内容的完整性、准备专利交底书、起草权利要求书/说明书/摘要/附图、将其转换为Word格式,以及评估发明的新颖性、创造性和实用性。",
"developerName": "EAPIL", "developerName": "EAPIL",
"category": "文档处理", "category": "Productivity",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -20,7 +20,7 @@
"shortDescription": "这是一个功能全面的PDF处理工具包,可用于提取文本和表格、创建新的PDF文件、合并/拆分文档,以及处理表单。当AI需要填写PDF表单,或需要以编程方式大规模处理、生成或分析PDF文件时,这个工具包就能派上用场了。", "shortDescription": "这是一个功能全面的PDF处理工具包,可用于提取文本和表格、创建新的PDF文件、合并/拆分文档,以及处理表单。当AI需要填写PDF表单,或需要以编程方式大规模处理、生成或分析PDF文件时,这个工具包就能派上用场了。",
"longDescription": "这是一个功能全面的PDF处理工具包,可用于提取文本和表格、创建新的PDF文件、合并/拆分文档,以及处理表单。当AI需要填写PDF表单,或需要以编程方式大规模处理、生成或分析PDF文件时,这个工具包就能派上用场了。", "longDescription": "这是一个功能全面的PDF处理工具包,可用于提取文本和表格、创建新的PDF文件、合并/拆分文档,以及处理表单。当AI需要填写PDF表单,或需要以编程方式大规模处理、生成或分析PDF文件时,这个工具包就能派上用场了。",
"developerName": "EAPIL", "developerName": "EAPIL",
"category": "文档处理", "category": "Productivity",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -20,7 +20,7 @@
"shortDescription": "针对多个PostgreSQL数据库执行 只读 SQL查询。适用于以下场景:(1) 查询PostgreSQL数据库中的数据;(2) 查看数据库架构及表结构;(3) 运行SELECT语句进行数据分析;(4) 检查数据库内容。该工具支持同时连接多个数据库,并提供相应的描述信息以便用户智能选择目标数据库。为确保数据安全,该工具会阻止所有写操作(如INSERT、UPDATE、DELETE、DROP等)。", "shortDescription": "针对多个PostgreSQL数据库执行 只读 SQL查询。适用于以下场景:(1) 查询PostgreSQL数据库中的数据;(2) 查看数据库架构及表结构;(3) 运行SELECT语句进行数据分析;(4) 检查数据库内容。该工具支持同时连接多个数据库,并提供相应的描述信息以便用户智能选择目标数据库。为确保数据安全,该工具会阻止所有写操作(如INSERT、UPDATE、DELETE、DROP等)。",
"longDescription": "针对多个PostgreSQL数据库执行 只读 SQL查询。适用于以下场景:(1) 查询PostgreSQL数据库中的数据;(2) 查看数据库架构及表结构;(3) 运行SELECT语句进行数据分析;(4) 检查数据库内容。该工具支持同时连接多个数据库,并提供相应的描述信息以便用户智能选择目标数据库。为确保数据安全,该工具会阻止所有写操作(如INSERT、UPDATE、DELETE、DROP等)。", "longDescription": "针对多个PostgreSQL数据库执行 只读 SQL查询。适用于以下场景:(1) 查询PostgreSQL数据库中的数据;(2) 查看数据库架构及表结构;(3) 运行SELECT语句进行数据分析;(4) 检查数据库内容。该工具支持同时连接多个数据库,并提供相应的描述信息以便用户智能选择目标数据库。为确保数据安全,该工具会阻止所有写操作(如INSERT、UPDATE、DELETE、DROP等)。",
"developerName": "EAPIL", "developerName": "EAPIL",
"category": "数据分析", "category": "Data & Analytics",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -22,7 +22,7 @@
"shortDescription": "从文档生成 SVG 页面并导出 PPTX 的多阶段工作流。", "shortDescription": "从文档生成 SVG 页面并导出 PPTX 的多阶段工作流。",
"longDescription": "PPT Master 将 PDF、DOCX、URL、Markdown 等源材料转换为高质量 SVG 页面,并通过策略、模板、执行、质量检查和后处理流程导出 PPTX,适合需要结构化长流程和高质量页面控制的演示文稿制作。", "longDescription": "PPT Master 将 PDF、DOCX、URL、Markdown 等源材料转换为高质量 SVG 页面,并通过策略、模板、执行、质量检查和后处理流程导出 PPTX,适合需要结构化长流程和高质量页面控制的演示文稿制作。",
"developerName": "hugohe3", "developerName": "hugohe3",
"category": "文档处理", "category": "Productivity",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -20,7 +20,7 @@
"shortDescription": "易瞳-牟新麒 提供,可以将 PowerPoint 文件翻译成任何语言,同时保持原有的布局格式。该系统采用“渲染-验证”循环机制(LibreOffice + Vision),从而确保文本不会溢出显示。用户只需在需要翻译 PPT/PPTX 文件时激活该功能即可。", "shortDescription": "易瞳-牟新麒 提供,可以将 PowerPoint 文件翻译成任何语言,同时保持原有的布局格式。该系统采用“渲染-验证”循环机制(LibreOffice + Vision),从而确保文本不会溢出显示。用户只需在需要翻译 PPT/PPTX 文件时激活该功能即可。",
"longDescription": "易瞳-牟新麒 提供,可以将 PowerPoint 文件翻译成任何语言,同时保持原有的布局格式。该系统采用“渲染-验证”循环机制(LibreOffice + Vision),从而确保文本不会溢出显示。用户只需在需要翻译 PPT/PPTX 文件时激活该功能即可。", "longDescription": "易瞳-牟新麒 提供,可以将 PowerPoint 文件翻译成任何语言,同时保持原有的布局格式。该系统采用“渲染-验证”循环机制(LibreOffice + Vision),从而确保文本不会溢出显示。用户只需在需要翻译 PPT/PPTX 文件时激活该功能即可。",
"developerName": "EAPIL", "developerName": "EAPIL",
"category": "文档处理", "category": "Productivity",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -20,7 +20,7 @@
"shortDescription": "(需要安装node环境)演示文稿的创建、编辑与分析。当AI需要处理.pptx格式的演示文稿时,他可以执行以下操作:(1) 创建新的演示文稿;(2) 修改或编辑内容;(3) 调整布局;(4) 添加注释或演讲者备注;以及完成其他与演示文稿相关的任务。", "shortDescription": "(需要安装node环境)演示文稿的创建、编辑与分析。当AI需要处理.pptx格式的演示文稿时,他可以执行以下操作:(1) 创建新的演示文稿;(2) 修改或编辑内容;(3) 调整布局;(4) 添加注释或演讲者备注;以及完成其他与演示文稿相关的任务。",
"longDescription": "(需要安装node环境)演示文稿的创建、编辑与分析。当AI需要处理.pptx格式的演示文稿时,他可以执行以下操作:(1) 创建新的演示文稿;(2) 修改或编辑内容;(3) 调整布局;(4) 添加注释或演讲者备注;以及完成其他与演示文稿相关的任务。", "longDescription": "(需要安装node环境)演示文稿的创建、编辑与分析。当AI需要处理.pptx格式的演示文稿时,他可以执行以下操作:(1) 创建新的演示文稿;(2) 修改或编辑内容;(3) 调整布局;(4) 添加注释或演讲者备注;以及完成其他与演示文稿相关的任务。",
"developerName": "EAPIL", "developerName": "EAPIL",
"category": "文档处理", "category": "Productivity",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -23,7 +23,7 @@
"shortDescription": "shadcn/ui 项目、组件、注册表和预设的开发工作流。", "shortDescription": "shadcn/ui 项目、组件、注册表和预设的开发工作流。",
"longDescription": "shadcn/ui skill 提供项目上下文读取、组件搜索、组件文档检索、CLI 操作约束、注册表组件接入、预设处理以及常见组件实现规范,适合在 React、Next.js、Tailwind 和 shadcn/ui 项目中使用。", "longDescription": "shadcn/ui skill 提供项目上下文读取、组件搜索、组件文档检索、CLI 操作约束、注册表组件接入、预设处理以及常见组件实现规范,适合在 React、Next.js、Tailwind 和 shadcn/ui 项目中使用。",
"developerName": "shadcn", "developerName": "shadcn",
"category": "开发工具", "category": "Developer Tools",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -1,7 +1,7 @@
{ {
"name": "superpowers-zh", "name": "superpowers-zh",
"version": "6.1.1-zh.1", "version": "6.1.1-zh.1",
"description": "面向 Agent 的中文技能框架与软件开发方法论:规划、TDD、系统化调试和协作工作流。", "description": "Superpowers 的简体中文本地化版本,提供规划、TDD、系统化调试、代码评审和交付工作流。",
"author": { "author": {
"name": "Jesse Vincent", "name": "Jesse Vincent",
"email": "jesse@fsck.com", "email": "jesse@fsck.com",
@@ -23,11 +23,11 @@
"skills": "./skills/", "skills": "./skills/",
"hooks": {}, "hooks": {},
"interface": { "interface": {
"displayName": "Superpowers 中文版", "displayName": "Superpowers-zh",
"shortDescription": "面向编程 Agent 的规划、TDD、调试与交付工作流", "shortDescription": "Superpowers 简体中文本地化版本。",
"longDescription": "使用 Superpowers 中文版引导 Agent 完成头脑风暴、实施规划、测试驱动开发、系统化调试、并行执行、代码审和分支收尾工作流。", "longDescription": "Superpowers-zh 是官方 Superpowers 的简体中文本地化版本,保留规划、测试驱动开发、系统化调试、并行执行、代码审和分支收尾工作流。",
"developerName": "AreChen / Jesse Vincent", "developerName": "AreChen / Jesse Vincent",
"category": "开发工具", "category": "Developer Tools",
"capabilities": [ "capabilities": [
"Interactive", "Interactive",
"Read", "Read",
@@ -27,7 +27,7 @@
"shortDescription": "规划、TDD、调试、代码评审和交付工作流。", "shortDescription": "规划、TDD、调试、代码评审和交付工作流。",
"longDescription": "Superpowers 提供面向编码 Agent 的结构化工作流,覆盖需求澄清、计划编写、测试驱动开发、系统化调试、并行执行、代码评审和交付收尾。", "longDescription": "Superpowers 提供面向编码 Agent 的结构化工作流,覆盖需求澄清、计划编写、测试驱动开发、系统化调试、并行执行、代码评审和交付收尾。",
"developerName": "Jesse Vincent", "developerName": "Jesse Vincent",
"category": "开发工具", "category": "Developer Tools",
"capabilities": [ "capabilities": [
"Interactive", "Interactive",
"Read", "Read",
@@ -23,7 +23,7 @@
"shortDescription": "反模板化前端设计、重设计和图像参考生成 skill 集合。", "shortDescription": "反模板化前端设计、重设计和图像参考生成 skill 集合。",
"longDescription": "Taste Skill 提供 design-taste-frontend、gpt-taste、image-to-code、redesign、minimalist、brutalist、soft、stitch、output enforcement,以及 Web、移动端和 brandkit 图像生成等多个 skills,用于让 AI Agent 产出更有设计判断、更少模板感的前端界面和视觉参考。", "longDescription": "Taste Skill 提供 design-taste-frontend、gpt-taste、image-to-code、redesign、minimalist、brutalist、soft、stitch、output enforcement,以及 Web、移动端和 brandkit 图像生成等多个 skills,用于让 AI Agent 产出更有设计判断、更少模板感的前端界面和视觉参考。",
"developerName": "Leonxlnx", "developerName": "Leonxlnx",
"category": "设计", "category": "Creativity",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -20,7 +20,7 @@
"shortDescription": "一套覆盖 Three.js 完整开发流程的 10 个专业技能,从基础场景搭建到高级视觉效果,助你快速构建专业级 3D 应用:\r\n核心基础\r\n- threejs-fundamentals - 场景、相机、渲染器配置\r\n- threejs-geometry - 几何体创建与自定义网格\r\n- threejs-materials - PBR 材质、ShaderMaterial 与材质优化\r\n视觉表现\r\n- threejs-lighting - 灯光类型、阴影配置与环境光照\r\n- threejs-textures - UV 映射、环境贴图与纹理优化\r\n- threejs-postprocessing - 后期处理、特效与画面调色\r\n交互与动画\r\n- threejs-animation - 关键帧动画、骨骼动画与动画混合\r\n- threejs-interaction - 射线检测、鼠标/触摸交互与相机控制\r\n高级特性\r\n- threejs-shaders - GLSL 着色器、自定义特效与顶点操作\r\n- threejs-loaders - GLTF/GLB 模型加载、资源管理与异步模式\r\n适合人群: WebGL 开发者、3D 可视化工程师、创意技术开发者\r\n使用方式: 在开发过程中按需调用对应技能,获得专业的 Three.js 开发指导与代码建议。", "shortDescription": "一套覆盖 Three.js 完整开发流程的 10 个专业技能,从基础场景搭建到高级视觉效果,助你快速构建专业级 3D 应用:\r\n核心基础\r\n- threejs-fundamentals - 场景、相机、渲染器配置\r\n- threejs-geometry - 几何体创建与自定义网格\r\n- threejs-materials - PBR 材质、ShaderMaterial 与材质优化\r\n视觉表现\r\n- threejs-lighting - 灯光类型、阴影配置与环境光照\r\n- threejs-textures - UV 映射、环境贴图与纹理优化\r\n- threejs-postprocessing - 后期处理、特效与画面调色\r\n交互与动画\r\n- threejs-animation - 关键帧动画、骨骼动画与动画混合\r\n- threejs-interaction - 射线检测、鼠标/触摸交互与相机控制\r\n高级特性\r\n- threejs-shaders - GLSL 着色器、自定义特效与顶点操作\r\n- threejs-loaders - GLTF/GLB 模型加载、资源管理与异步模式\r\n适合人群: WebGL 开发者、3D 可视化工程师、创意技术开发者\r\n使用方式: 在开发过程中按需调用对应技能,获得专业的 Three.js 开发指导与代码建议。",
"longDescription": "一套覆盖 Three.js 完整开发流程的 10 个专业技能,从基础场景搭建到高级视觉效果,助你快速构建专业级 3D 应用:\r\n核心基础\r\n- threejs-fundamentals - 场景、相机、渲染器配置\r\n- threejs-geometry - 几何体创建与自定义网格\r\n- threejs-materials - PBR 材质、ShaderMaterial 与材质优化\r\n视觉表现\r\n- threejs-lighting - 灯光类型、阴影配置与环境光照\r\n- threejs-textures - UV 映射、环境贴图与纹理优化\r\n- threejs-postprocessing - 后期处理、特效与画面调色\r\n交互与动画\r\n- threejs-animation - 关键帧动画、骨骼动画与动画混合\r\n- threejs-interaction - 射线检测、鼠标/触摸交互与相机控制\r\n高级特性\r\n- threejs-shaders - GLSL 着色器、自定义特效与顶点操作\r\n- threejs-loaders - GLTF/GLB 模型加载、资源管理与异步模式\r\n适合人群: WebGL 开发者、3D 可视化工程师、创意技术开发者\r\n使用方式: 在开发过程中按需调用对应技能,获得专业的 Three.js 开发指导与代码建议。", "longDescription": "一套覆盖 Three.js 完整开发流程的 10 个专业技能,从基础场景搭建到高级视觉效果,助你快速构建专业级 3D 应用:\r\n核心基础\r\n- threejs-fundamentals - 场景、相机、渲染器配置\r\n- threejs-geometry - 几何体创建与自定义网格\r\n- threejs-materials - PBR 材质、ShaderMaterial 与材质优化\r\n视觉表现\r\n- threejs-lighting - 灯光类型、阴影配置与环境光照\r\n- threejs-textures - UV 映射、环境贴图与纹理优化\r\n- threejs-postprocessing - 后期处理、特效与画面调色\r\n交互与动画\r\n- threejs-animation - 关键帧动画、骨骼动画与动画混合\r\n- threejs-interaction - 射线检测、鼠标/触摸交互与相机控制\r\n高级特性\r\n- threejs-shaders - GLSL 着色器、自定义特效与顶点操作\r\n- threejs-loaders - GLTF/GLB 模型加载、资源管理与异步模式\r\n适合人群: WebGL 开发者、3D 可视化工程师、创意技术开发者\r\n使用方式: 在开发过程中按需调用对应技能,获得专业的 Three.js 开发指导与代码建议。",
"developerName": "EAPIL", "developerName": "EAPIL",
"category": "设计", "category": "Creativity",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -24,7 +24,7 @@
"shortDescription": "UI/UX 设计智能库,覆盖风格、配色、字体、可访问性、图表和前端技术栈。", "shortDescription": "UI/UX 设计智能库,覆盖风格、配色、字体、可访问性、图表和前端技术栈。",
"longDescription": "UI/UX Pro Max 提供可搜索的设计知识库,覆盖 UI 风格、配色、字体搭配、UX 指南、图表类型和多种前端技术栈,用于辅助中文用户完成产品界面设计和前端实现决策。", "longDescription": "UI/UX Pro Max 提供可搜索的设计知识库,覆盖 UI 风格、配色、字体搭配、UX 指南、图表类型和多种前端技术栈,用于辅助中文用户完成产品界面设计和前端实现决策。",
"developerName": "NextLevelBuilder", "developerName": "NextLevelBuilder",
"category": "设计", "category": "Creativity",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
@@ -20,7 +20,7 @@
"shortDescription": "一款功能完备的电子表格制作、编辑与分析工具,支持公式应用、格式设置、数据分析及数据可视化。当Claude需要使用.xlsx、.xlsm、.csv、.tsv等格式的电子表格时,该工具能够满足以下需求:(1) 创建包含公式和格式设置的新的电子表格;(2) 读取或分析数据;(3) 在保留公式的基础上修改现有电子表格;(4) 对电子表格中的数据进行分析并生成可视化结果;(5) 重新计算各类公式。", "shortDescription": "一款功能完备的电子表格制作、编辑与分析工具,支持公式应用、格式设置、数据分析及数据可视化。当Claude需要使用.xlsx、.xlsm、.csv、.tsv等格式的电子表格时,该工具能够满足以下需求:(1) 创建包含公式和格式设置的新的电子表格;(2) 读取或分析数据;(3) 在保留公式的基础上修改现有电子表格;(4) 对电子表格中的数据进行分析并生成可视化结果;(5) 重新计算各类公式。",
"longDescription": "一款功能完备的电子表格制作、编辑与分析工具,支持公式应用、格式设置、数据分析及数据可视化。当Claude需要使用.xlsx、.xlsm、.csv、.tsv等格式的电子表格时,该工具能够满足以下需求:(1) 创建包含公式和格式设置的新的电子表格;(2) 读取或分析数据;(3) 在保留公式的基础上修改现有电子表格;(4) 对电子表格中的数据进行分析并生成可视化结果;(5) 重新计算各类公式。", "longDescription": "一款功能完备的电子表格制作、编辑与分析工具,支持公式应用、格式设置、数据分析及数据可视化。当Claude需要使用.xlsx、.xlsm、.csv、.tsv等格式的电子表格时,该工具能够满足以下需求:(1) 创建包含公式和格式设置的新的电子表格;(2) 读取或分析数据;(3) 在保留公式的基础上修改现有电子表格;(4) 对电子表格中的数据进行分析并生成可视化结果;(5) 重新计算各类公式。",
"developerName": "EAPIL", "developerName": "EAPIL",
"category": "文档处理", "category": "Productivity",
"capabilities": [ "capabilities": [
"Read", "Read",
"Write" "Write"
+50 -5
View File
@@ -503,9 +503,34 @@ function Merge-Hashtable {
function Get-SourceCategory { function Get-SourceCategory {
param([object]$Source) param([object]$Source)
if ($Source.PSObject.Properties.Name -contains "marketplace" -and $Source.marketplace -and $Source.marketplace.category) { if ($Source.PSObject.Properties.Name -contains "marketplace" -and $Source.marketplace -and $Source.marketplace.category) {
return $Source.marketplace.category return ConvertTo-OfficialCategory $Source.marketplace.category
} }
return $Source.category return ConvertTo-OfficialCategory $Source.category
}
function ConvertTo-OfficialCategory {
param([string]$Category)
$aliases = @{
"文档处理" = "Productivity"
"工具" = "Productivity"
"翻译与本地化" = "Productivity"
"开发工具" = "Developer Tools"
"测试与质量" = "Developer Tools"
"MCP" = "Developer Tools"
"设计" = "Creativity"
"多媒体与生成" = "Creativity"
"数据分析" = "Data & Analytics"
"知识库与检索" = "Education & Research"
}
$official = @(
"Productivity", "Developer Tools", "Engineering", "Creativity",
"Data & Analytics", "Education & Research", "Communication", "Finance",
"Business & Operations", "Travel", "Security", "Other"
)
if ($official -contains $Category) { return $Category }
if ($aliases.ContainsKey($Category)) { return $aliases[$Category] }
if ([string]::IsNullOrWhiteSpace($Category)) { return "" }
return "Other"
} }
function ConvertTo-YamlDoubleQuoted { function ConvertTo-YamlDoubleQuoted {
@@ -566,12 +591,15 @@ function Apply-LocalOverrides {
[object]$Source [object]$Source
) )
if ($Source.PSObject.Properties.Name -contains "manifestOverrides" -and $Source.manifestOverrides) {
$manifestPath = Join-Path $PluginDir ".codex-plugin\plugin.json" $manifestPath = Join-Path $PluginDir ".codex-plugin\plugin.json"
$manifest = ConvertTo-Hashtable (Read-JsonFile $manifestPath) $manifest = ConvertTo-Hashtable (Read-JsonFile $manifestPath)
if ($Source.PSObject.Properties.Name -contains "manifestOverrides" -and $Source.manifestOverrides) {
$manifest = Merge-Hashtable -Base $manifest -Override $Source.manifestOverrides $manifest = Merge-Hashtable -Base $manifest -Override $Source.manifestOverrides
Write-JsonFile -Path $manifestPath -Value $manifest
} }
if ($manifest.interface -and $manifest.interface.category) {
$manifest.interface.category = ConvertTo-OfficialCategory ([string]$manifest.interface.category)
}
Write-JsonFile -Path $manifestPath -Value $manifest
if ($Source.PSObject.Properties.Name -contains "skillDescriptions" -and $Source.skillDescriptions) { if ($Source.PSObject.Properties.Name -contains "skillDescriptions" -and $Source.skillDescriptions) {
$skillsRoot = Join-Path $PluginDir "skills" $skillsRoot = Join-Path $PluginDir "skills"
@@ -923,6 +951,7 @@ function Update-Marketplace {
$plugins = @() $plugins = @()
foreach ($plugin in $marketplace.plugins) { foreach ($plugin in $marketplace.plugins) {
if ($sourceNames -notcontains $plugin.name) { if ($sourceNames -notcontains $plugin.name) {
$plugin.category = ConvertTo-OfficialCategory ([string]$plugin.category)
$plugins += $plugin $plugins += $plugin
} }
} }
@@ -940,7 +969,23 @@ function Update-Marketplace {
category = (Get-SourceCategory $source) category = (Get-SourceCategory $source)
} }
} }
$marketplace.plugins = $plugins $categoryOrder = @{
"Productivity" = 0
"Developer Tools" = 1
"Engineering" = 2
"Creativity" = 3
"Data & Analytics" = 4
"Education & Research" = 5
"Communication" = 6
"Finance" = 7
"Business & Operations" = 8
"Travel" = 9
"Security" = 10
"Other" = 11
}
$marketplace.plugins = @($plugins | Sort-Object `
@{ Expression = { if ($categoryOrder.ContainsKey([string]$_.category)) { $categoryOrder[[string]$_.category] } else { 99 } } }, `
@{ Expression = { [string]$_.name } })
Write-JsonFile -Path $MarketplacePath -Value $marketplace Write-JsonFile -Path $MarketplacePath -Value $marketplace
} }
+40 -3
View File
@@ -22,6 +22,35 @@ MARKETPLACES = [
] ]
SEMVER_RE = re.compile(r"^\d+\.\d+\.\d+([-.+][0-9A-Za-z.-]+)?$") SEMVER_RE = re.compile(r"^\d+\.\d+\.\d+([-.+][0-9A-Za-z.-]+)?$")
PLUGIN_NAME_RE = re.compile(r"^[a-z0-9][a-z0-9-]*$") PLUGIN_NAME_RE = re.compile(r"^[a-z0-9][a-z0-9-]*$")
OFFICIAL_CATEGORIES = {
"Productivity",
"Developer Tools",
"Engineering",
"Creativity",
"Data & Analytics",
"Education & Research",
"Communication",
"Finance",
"Business & Operations",
"Travel",
"Security",
"Other",
}
CATEGORY_ORDER = [
"Productivity",
"Developer Tools",
"Engineering",
"Creativity",
"Data & Analytics",
"Education & Research",
"Communication",
"Finance",
"Business & Operations",
"Travel",
"Security",
"Other",
]
CATEGORY_INDEX = {category: index for index, category in enumerate(CATEGORY_ORDER)}
def load_json(path: Path) -> object: def load_json(path: Path) -> object:
@@ -132,7 +161,7 @@ def validate_interface_asset(plugin_dir: Path, manifest_path: Path, value: objec
validate_manifest_path(plugin_dir, manifest_path, value, f"interface.{field}") validate_manifest_path(plugin_dir, manifest_path, value, f"interface.{field}")
def validate_manifest(plugin_dir: Path, expected_name: str) -> None: def validate_manifest(plugin_dir: Path, expected_name: str, expected_category: str) -> None:
manifest_path = plugin_dir / ".codex-plugin" / "plugin.json" manifest_path = plugin_dir / ".codex-plugin" / "plugin.json"
require(manifest_path.exists(), f"Missing manifest: {manifest_path}") require(manifest_path.exists(), f"Missing manifest: {manifest_path}")
manifest = load_json(manifest_path) manifest = load_json(manifest_path)
@@ -160,6 +189,8 @@ def validate_manifest(plugin_dir: Path, expected_name: str) -> None:
require(isinstance(interface, dict), f"{manifest_path} missing interface object") require(isinstance(interface, dict), f"{manifest_path} missing interface object")
for key in ["displayName", "shortDescription", "longDescription", "developerName", "category"]: for key in ["displayName", "shortDescription", "longDescription", "developerName", "category"]:
require(bool(interface.get(key)), f"{manifest_path} missing interface.{key}") require(bool(interface.get(key)), f"{manifest_path} missing interface.{key}")
require(interface.get("category") in OFFICIAL_CATEGORIES, f"{manifest_path} uses unsupported category")
require(interface.get("category") == expected_category, f"{manifest_path} category must match marketplace entry")
capabilities = interface.get("capabilities") capabilities = interface.get("capabilities")
require(isinstance(capabilities, list), f"{manifest_path} interface.capabilities must be a list") require(isinstance(capabilities, list), f"{manifest_path} interface.capabilities must be a list")
validate_interface_asset(plugin_dir, manifest_path, interface.get("logo"), "logo") validate_interface_asset(plugin_dir, manifest_path, interface.get("logo"), "logo")
@@ -182,6 +213,11 @@ def validate_marketplace(marketplace_path: Path) -> None:
require(isinstance(marketplace, dict), f"Marketplace must be an object: {marketplace_path}") require(isinstance(marketplace, dict), f"Marketplace must be an object: {marketplace_path}")
require(bool(marketplace.get("name")), f"{marketplace_path} missing name") require(bool(marketplace.get("name")), f"{marketplace_path} missing name")
require(isinstance(marketplace.get("plugins"), list), f"{marketplace_path} plugins must be a list") require(isinstance(marketplace.get("plugins"), list), f"{marketplace_path} plugins must be a list")
expected_order = sorted(
marketplace["plugins"],
key=lambda entry: (CATEGORY_INDEX.get(str(entry.get("category") or ""), len(CATEGORY_INDEX)), str(entry.get("name") or "")),
)
require(marketplace["plugins"] == expected_order, f"{marketplace_path} plugins must be sorted by category and name")
seen: set[str] = set() seen: set[str] = set()
for entry in marketplace["plugins"]: for entry in marketplace["plugins"]:
@@ -202,9 +238,10 @@ def validate_marketplace(marketplace_path: Path) -> None:
require(isinstance(policy, dict), f"{marketplace_path} {name} missing policy") require(isinstance(policy, dict), f"{marketplace_path} {name} missing policy")
require(policy.get("installation") in {"AVAILABLE", "INSTALLED_BY_DEFAULT", "NOT_AVAILABLE"}, f"{marketplace_path} {name} invalid installation policy") require(policy.get("installation") in {"AVAILABLE", "INSTALLED_BY_DEFAULT", "NOT_AVAILABLE"}, f"{marketplace_path} {name} invalid installation policy")
require(policy.get("authentication") in {"ON_INSTALL", "ON_USE"}, f"{marketplace_path} {name} invalid authentication policy") require(policy.get("authentication") in {"ON_INSTALL", "ON_USE"}, f"{marketplace_path} {name} invalid authentication policy")
require(bool(entry.get("category")), f"{marketplace_path} {name} missing category") category = entry.get("category")
require(category in OFFICIAL_CATEGORIES, f"{marketplace_path} {name} uses unsupported category: {category}")
validate_manifest(plugin_dir, name) validate_manifest(plugin_dir, name, str(category))
def main() -> int: def main() -> int: