converter by boshu2/agentops
npx skills add https://github.com/boshu2/agentops --skill converter将 AgentOps 技能解析为通用的 SkillBundle 格式,然后转换为目标智能体平台格式。
/converter skills/council codex # 将 council 技能转换为 Codex 格式
/converter skills/vibe cursor # 将 vibe 技能转换为 Cursor 格式
/converter --all codex # 将所有技能转换为 Codex 格式
转换器运行一个三阶段处理流程:
parse --> convert --> write
读取源技能目录并生成一个 SkillBundle:
--- 标记之间)--- 之后的所有内容)references/ 和 scripts/ 目录中的所有文件references/skill-bundle-schema.md)广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
将 SkillBundle 转换为目标平台的格式:
| 目标平台 | 输出格式 | 状态 |
|---|---|---|
codex | Codex SKILL.md + prompt.md | 已实现 |
cursor | Cursor .mdc 规则文件 + 可选的 mcp.json | 已实现 |
Codex 适配器会生成一个包含 YAML 前置元数据(name、description)以及重写后正文内容的 SKILL.md 文件,以及一个 prompt.md 文件(引用该技能的 Codex 提示)。默认模式是模块化:参考文档、脚本和资源作为文件被复制,SKILL.md 包含一个本地资源索引,而不是将所有内容内联。可选的内联模式通过追加内联的参考文档和脚本代码块来保留旧版行为。Codex 输出会将已知的斜杠技能引用(例如 /plan)重写为美元符号技能语法($plan),替换 Claude 特定的路径/标签(包括 ~/.claude/、$HOME/.claude/ 和 /.claude/ 等路径变体),将常见的混合运行时术语(例如 Claude Native Teams、claude-native-teams 和 Claude session/runtime)规范化为 Codex 原生措辞,并将 Claude 独有的原始标签重写为运行时中性的措辞。它会保留源技能中当前扁平的 ao CLI 命令,而不是重新引入已弃用的命名空间形式。它还会在重写后去重重复的 "In Codex" 运行时标题,同时保留章节内容。它会保留源技能中的非生成资源文件/目录(例如 templates/、assets/、schemas/、examples/、agents/)并强制执行直通对等性(缺少复制的资源会导致转换失败)。描述在需要时会在单词边界处截断为 1024 个字符。
Cursor 适配器会生成一个包含 YAML 前置元数据(description、globs、alwaysApply: false)和正文内容的 <name>.mdc 规则文件。参考文档被内联到正文中,脚本作为代码块包含。输出大小限制在最大 100KB 以内——如果总大小超过限制,则会从最大的参考文档开始省略。如果技能引用了 MCP 服务器,还会生成一个 mcp.json 存根文件。
将转换后的输出写入磁盘。
.agents/converter/<target>/<skill-name>/# 转换单个技能
bash skills/converter/scripts/convert.sh <skill-dir> <target> [output-dir]
bash skills/converter/scripts/convert.sh --codex-layout inline <skill-dir> codex [output-dir]
# 转换所有技能
bash skills/converter/scripts/convert.sh --all <target> [output-dir]
| 参数 | 是否必需 | 描述 |
|---|---|---|
skill-dir | 是(或使用 --all) | 技能目录的路径(例如 skills/council) |
target | 是 | 目标平台:codex、cursor 或 test |
output-dir | 否 | 覆盖输出位置。默认:.agents/converter/<target>/<skill-name>/ |
--all | 否 | 转换 skills/ 目录中的所有技能 |
--codex-layout | 否 | 仅限 Codex 的布局模式:modular(默认)或 inline(旧版内联参考文档/脚本) |
SKILL.md + prompt.md),并进行 Codex 原生重写(斜杠技能转美元符号技能、.claude 路径变体转 .codex、混合运行时术语规范化为 Codex 措辞、Claude 原始标签中性化、重复运行时标题清理,以及扁平 ao CLI 保留)。默认是带有复制资源和 SKILL.md 本地资源索引的模块化输出;传递 --codex-layout inline 以使用旧版内联参考文档/脚本。转换器强制执行直通对等性,因此缺少复制的资源会快速失败。输出:<dir>/SKILL.md、<dir>/prompt.md 以及复制的资源。.mdc 规则文件 + 可选的 mcp.json)。输出:<dir>/<name>.mdc 以及可选的 <dir>/mcp.json。要添加新的目标平台:
scripts/convert.sh 中添加一个转换函数(模式:convert_<target>)references/ 目录用户输入: /converter skills/council codex
执行过程:
skills/council/SKILL.md 的前置元数据、Markdown 正文以及任何 references/ 和 scripts/ 文件解析成一个 SkillBundle。SKILL.md(正文 + 内联参考文档 + 作为代码块的脚本)和一个 prompt.md(引用该技能的 Codex 提示)。.agents/converter/codex/council/。结果: 一个与 Codex 兼容的技能包,可与 OpenAI Codex CLI 一起使用。
用户输入: /converter --all cursor
执行过程:
skills/ 下的每个目录,并将每个目录解析成一个 SkillBundle。.mdc 规则文件,大小限制在最大 100KB 以内。引用 MCP 服务器的技能还会得到一个 mcp.json 存根文件。.agents/converter/cursor/<skill-name>/。结果: 所有技能都作为 Cursor 规则可用,可以直接放入 .cursor/rules/ 目录。
| 问题 | 原因 | 解决方案 |
|---|---|---|
parse error: no frontmatter found | SKILL.md 缺少 --- 分隔的 YAML 前置元数据块 | 添加至少包含 name: 和 description: 字段的前置元数据,或者先在该技能上运行 /heal-skill --fix |
Cursor .mdc 输出缺少参考文档 | 总 Bundle 大小超过了 100KB 的限制 | 转换器会从最大的参考文档开始省略以符合限制。拆分大型参考文件或将非必要内容移至外部文档 |
| 输出目录已存在旧文件 | 之前转换的残留文件仍然存在 | 这是预期的——转换器通过删除目标目录然后写入来进行清理写入。如果旧文件仍然存在,请手动删除 .agents/converter/<target>/<skill>/ |
--all 跳过了某个技能目录 | 该目录没有 SKILL.md 文件 | 确保每个技能目录都包含一个有效的 SKILL.md。运行 /heal-skill 来检测空目录 |
Codex prompt.md 描述被截断 | 技能描述超过 1024 个字符 | 这是设计如此。转换器会在单词边界处截断以适应 Codex 限制。如果截断点不合适,请缩短 SKILL.md 前置元数据中的描述 |
| 转换因直通对等性检查而失败 | 源技能中的某个资源条目未被复制到输出 | 确保源条目是可读且可复制的(包括嵌套文件)。重新运行转换;失败是故意的,以防止 skills/ 和转换输出之间出现差异 |
references/skill-bundle-schema.md -- SkillBundle 交换格式规范每周安装数
156
代码仓库
GitHub 星标数
197
首次出现
2026年2月17日
安全审计
安装于
opencode155
codex152
github-copilot151
kimi-cli151
gemini-cli151
amp151
Parse AgentOps skills into a universal SkillBundle format, then convert to target agent platforms.
/converter skills/council codex # Convert council skill to Codex format
/converter skills/vibe cursor # Convert vibe skill to Cursor format
/converter --all codex # Convert all skills to Codex
The converter runs a three-stage pipeline:
parse --> convert --> write
Read the source skill directory and produce a SkillBundle:
--- markers)---)references/ and scripts/references/skill-bundle-schema.md)Transform the SkillBundle into the target platform's format:
| Target | Output Format | Status |
|---|---|---|
codex | Codex SKILL.md + prompt.md | Implemented |
cursor | Cursor .mdc rule + optional mcp.json | Implemented |
The Codex adapter produces a SKILL.md with YAML frontmatter (name, description) plus rewritten body content and a prompt.md (Codex prompt referencing the skill). Default mode is modular : reference docs, scripts, and resources are copied as files and SKILL.md includes a local resource index instead of inlining everything. Optional inline mode preserves the older behavior by appending inlined references and script code blocks. Codex output rewrites known slash-skill references (for example /plan) to dollar-skill syntax ($plan), replaces Claude-specific paths/labels (including ~/.claude/, $HOME/.claude/, and /.claude/ path variants), normalizes common mixed-runtime terms (for example , , and ) to Codex-native phrasing, and rewrites Claude-only primitive labels to runtime-neutral wording. It preserves current flat CLI commands from the source skill rather than reintroducing deprecated namespace forms. It also deduplicates repeated "In Codex" runtime headings after rewrite while preserving section content. It preserves non-generated resource files/directories from the source skill (for example , , , , ) and enforces passthrough parity (missing copied resources fail conversion). Descriptions are truncated to 1024 chars at a word boundary if needed.
The Cursor adapter produces a <name>.mdc rule file with YAML frontmatter (description, globs, alwaysApply: false) and body content. References are inlined into the body, scripts are included as code blocks. Output is budget-fitted to 100KB max -- references are omitted largest-first if the total exceeds the limit. If the skill references MCP servers, a mcp.json stub is also generated.
Write the converted output to disk.
.agents/converter/<target>/<skill-name>/# Convert a single skill
bash skills/converter/scripts/convert.sh <skill-dir> <target> [output-dir]
bash skills/converter/scripts/convert.sh --codex-layout inline <skill-dir> codex [output-dir]
# Convert all skills
bash skills/converter/scripts/convert.sh --all <target> [output-dir]
| Argument | Required | Description |
|---|---|---|
skill-dir | Yes (or --all) | Path to skill directory (e.g. skills/council) |
target | Yes | Target platform: codex, cursor, or test |
output-dir |
SKILL.md + prompt.md) with codex-native rewrites (slash-to-dollar skills, .claude path variants to .codex, mixed-runtime term normalization to Codex phrasing, Claude primitive label neutralization, duplicate runtime-heading cleanup, and flat ao CLI preservation). Default is modular output with copied resources and a SKILL.md local-resource index; pass --codex-layout inline for legacy inlined refs/scripts. Converter enforces passthrough parity so missing copied resources fail fast. Output: <dir>/SKILL.md, <dir>/prompt.md, and copied resources.To add a new target platform:
scripts/convert.sh (pattern: convert_<target>)references/ if the target format needs documentationUser says: /converter skills/council codex
What happens:
skills/council/SKILL.md frontmatter, markdown body, and any references/ and scripts/ files into a SkillBundle.SKILL.md (body + inlined references + scripts as code blocks) and a prompt.md (Codex prompt referencing the skill)..agents/converter/codex/council/.Result: A Codex-compatible skill package ready to use with OpenAI Codex CLI.
User says: /converter --all cursor
What happens:
skills/ and parses each into a SkillBundle..mdc rule file with YAML frontmatter and body content, budget-fitted to 100KB max. Skills referencing MCP servers also get a mcp.json stub..agents/converter/cursor/<skill-name>/.Result: All skills are available as Cursor rules, ready to drop into a .cursor/rules/ directory.
| Problem | Cause | Solution |
|---|---|---|
parse error: no frontmatter found | SKILL.md is missing the --- delimited YAML frontmatter block | Add frontmatter with at least name: and description: fields, or run /heal-skill --fix on the skill first |
Cursor .mdc output is missing references | Total bundle size exceeded the 100KB budget limit | The converter omits references largest-first to fit the budget. Split large reference files or move non-essential content to external docs |
| Output directory already has old files | Previous conversion artifacts remain |
references/skill-bundle-schema.md -- SkillBundle interchange format specificationWeekly Installs
156
Repository
GitHub Stars
197
First Seen
Feb 17, 2026
Security Audits
Gen Agent Trust HubWarnSocketFailSnykFail
Installed on
opencode155
codex152
github-copilot151
kimi-cli151
gemini-cli151
amp151
agent-browser 浏览器自动化工具 - Vercel Labs 命令行网页操作与测试
147,400 周安装
Claude Native Teamsclaude-native-teamsClaude session/runtimeaotemplates/assets/schemas/examples/agents/| No |
Override output location. Default: .agents/converter/<target>/<skill-name>/ |
--all | No | Convert all skills in skills/ directory |
--codex-layout | No | Codex-only layout mode: modular (default) or inline (legacy inlined refs/scripts) |
.mdcmcp.json<dir>/<name>.mdc<dir>/mcp.jsonThis is expected -- the converter clean-writes by deleting the target directory before writing. If old files persist, manually delete .agents/converter/<target>/<skill>/ |
--all skips a skill directory | The directory has no SKILL.md file | Ensure each skill directory contains a valid SKILL.md. Run /heal-skill to detect empty directories |
Codex prompt.md description is truncated | The skill description exceeds 1024 characters | This is by design. The converter truncates at a word boundary to fit Codex limits. Shorten the description in SKILL.md frontmatter if the truncation point is awkward |
| Conversion fails with passthrough parity check | A resource entry from source skill wasn't copied to output | Ensure source entries are readable and copyable (including nested files). Re-run conversion; failure is intentional to prevent drift between skills/ and converted output |