boshu2/agentops-converter
Convert AgentOps skill formats. Triggers: "converter", "convert agentops skill formats.", "converter skill".
This is a copy. The original lives at boshu2/converter.
npx skills add https://github.com/boshu2/agentops --skill converter
Parse AgentOps skills into a universal SkillBundle format, then convert to target agent platforms.
The intermediate SkillBundle is what keeps conversions honest: every target reads the same parsed contract, so a rendering bug is a target-adapter bug, never a silent reinterpretation of the source. If two targets disagree about a skill's content, the bundle — not either output — arbitrates.
This is not the owner of the shipped skills-codex/ projection: that path is generated and gated by scripts/codex-sync.sh via scripts/regen-all.sh. This converter is an ad-hoc, out-of-tree exporter (Codex, Cursor) that writes under .agents/projections/converter/; it never mutates skills-codex/. When the shipped Codex twin and this exporter disagree, the shipped path wins.
Named failure mode — projection editing: fixing a rendering problem by hand-editing the converted output, which the next conversion clean-writes away.
Anti-pattern: merging new output into an existing target directory to preserve local tweaks. Corrective: fix the source skill or the adapter, then re-run the clean-write conversion.
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. 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 normalizes foreign-runtime invocation syntax and paths, rewrites unsupported primitive labels to runtime-neutral wording, and preserves current flat ao CLI commands. It also deduplicates repeated runtime headings while preserving section content. Non-generated resource files and directories are copied with parity checks. Descriptions are truncated to 1024 characters 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/projections/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 | No | Override output location. Default: .agents/projections/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) |
SKILL.md + prompt.md) with runtime-neutral rewrites and flat ao CLI preservation. Default is modular output with copied resources and a local-resource index; pass --codex-layout inline for legacy inlined refs/scripts. Missing copied resources fail fast..mdc rule file + optional mcp.json). Output: <dir>/<name>.mdc and optionally <dir>/mcp.json.To add a new target platform:
scripts/convert.sh (pattern: convert_<target>)references/ if the target format needs documentationCaller asks: Convert skills/council to Codex format.
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/projections/converter/codex/council/.Result: A Codex-compatible skill package ready to use with OpenAI Codex CLI.
Caller asks: Convert all canonical skills to Cursor format.
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/projections/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 on the source package 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 | This is expected -- the converter clean-writes by deleting the target directory before writing. If old files persist, manually delete .agents/projections/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 |
.agents/projections/converter/<target>/<skill-name>/ by default, or the exact caller-supplied output directory.SKILL.md, prompt.md, and copied resources; Cursor emits <skill-name>.mdc and optional mcp.json; test emits the raw bundle representation.bash skills/converter/scripts/convert.sh <skill-dir> <target> <output-dir> and require zero; treat parse, budget, write, or passthrough-parity failure as nonzero and incomplete.references/skill-bundle-schema.md -- SkillBundle interchange format specificationTake boshu2/agentops-converter from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.