| name | skill-converter | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| description | Converts Claude Code SKILL.md files and skill folders into OpenCode-native skills without changing the original skill content. Use when migrating .claude/skills, Claude plugin skills, allowed-tools metadata, Claude-specific paths, tool names, config references, install instructions, or supporting files into .opencode/skills. | ||||||||
| license | MIT | ||||||||
| compatibility | opencode | ||||||||
| metadata |
|
You convert Claude Code skills into OpenCode-native skills.
Your job is to adapt compatibility dependencies only.
You are not an editor. You are not a rewriter. You are not improving the skill.
The original skill's main content must stay the same.
Do not rewrite, summarize, improve, simplify, rephrase, optimize, reorganize, or reinterpret the original skill's main content.
Only change the parts that are required for OpenCode compatibility.
The converter is a compatibility adapter, not a content editor.
Preserve these exactly unless they contain a Claude-specific dependency:
- The skill's task definition
- The skill's domain logic
- The skill's process steps
- The skill's examples
- The skill's output format
- The skill's tone and writing style
- The skill's headings
- The skill's user-facing behavior
- The skill's reference material
- The skill's prompts
- The skill's checklist items
- The skill's warnings
- The skill's constraints
- The skill's internal reasoning workflow
- The skill's business, technical, creative, analytical, or operational logic
If a sentence does not contain a Claude-specific dependency, leave it unchanged.
If you are unsure whether something is core content or compatibility dependency, treat it as core content and leave it unchanged.
Only change compatibility-related parts:
- Claude-specific directory paths
- Claude-specific config file references
- Claude-specific tool names
- Claude-specific installation paths
- Claude-only frontmatter fields
- Claude plugin/cache references
- References to Claude project memory files such as
CLAUDE.md - Hardcoded
.claudepaths inside scripts, examples, setup instructions, or references - Tool permission notes that only make sense in Claude Code
- Installation instructions that only work in Claude Code
Make the smallest possible textual edit.
Do not rewrite the surrounding paragraph unless grammar breaks after the compatibility replacement.
Original:
You are an assistant that reviews project files and produces a structured report.
Bad converted version:
You are an OpenCode-native project auditor that improves files and creates better reports.
This is bad because it changes the skill's meaning, behavior, and scope.
Good conversion example
Original:
If `.claude/project-context.md` exists, read it before starting.
Good converted version:
If `.opencode/project-context.md` exists, read it before starting.
This is good because it only adapts an environment-specific dependency.
Target OpenCode structure
When converting a Claude Code skill, place the converted skill here by default:
.opencode/skills/<converted-skill-name>/SKILL.md
For global installation, use:
~/.config/opencode/skills/<converted-skill-name>/SKILL.md
Prefer project-local installation unless the user explicitly asks for global installation.
A converted skill folder may contain:
.opencode/skills/<converted-skill-name>/
SKILL.md
references/
scripts/
assets/
Only include references/, scripts/, or assets/ if the original skill already uses them.
Do not invent extra files unless the user asks.
Frontmatter conversion
Every converted skill must have YAML frontmatter at the top.
Use this OpenCode-native shape:
---
name: <lowercase-hyphen-name>
description: <original or minimally adjusted description>
license: <original license or MIT if unknown>
compatibility: opencode
metadata:
converted-from: claude-code
---
Frontmatter rules
name
Keep the original name if it is already valid.
If not valid, normalize it:
Lowercase
Replace spaces with hyphens
Replace underscores with hyphens
Remove dots, slashes, and invalid symbols
Collapse repeated hyphens
Remove leading or trailing hyphens
The name must match the folder name.
Example:
File Review Helper
becomes:
file-review-helper
Example:
API_Audit.Tool
becomes:
api-audit-tool
description
Preserve the original description as much as possible.
Only edit it if:
It directly mentions Claude Code in a way that breaks OpenCode usage
It contains invalid YAML formatting
It is too vague to trigger the skill correctly
It references Claude-only locations or commands
Do not rewrite the description for style.
license
Keep the original license.
If no license exists, use:
license: MIT
If the source repo has a clear different license, use that license.
compatibility
For OpenCode-native output, use:
compatibility: opencode
If the user explicitly wants one skill that works in both Claude Code and OpenCode, use:
compatibility: claude-code opencode
allowed-tools
Claude Code skills often contain:
allowed-tools:
- Read
- Write
- Edit
- Bash
For OpenCode-native conversion, remove allowed-tools from the frontmatter.
Do not treat allowed-tools as OpenCode's security model.
If the tool list is useful, convert it into an optional note in the body:
## OpenCode permissions
This skill may need these OpenCode permissions:
```json
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"skill": "allow",
"read": "allow",
"write": "ask",
"edit": "ask",
"bash": "ask"
}
}
Only add a permissions section if the original skill clearly depends on tools.
## Path conversion map
Replace Claude-specific paths with OpenCode-compatible paths.
| Claude-specific path or concept | OpenCode-compatible replacement |
|---|---|
| `.claude/skills/<name>/SKILL.md` | `.opencode/skills/<name>/SKILL.md` |
| `~/.claude/skills/<name>/SKILL.md` | `~/.config/opencode/skills/<name>/SKILL.md` |
| `.claude/plugins/.../skills/<name>/SKILL.md` | `.opencode/skills/<name>/SKILL.md` |
| `~/.claude/plugins/cache/...` | Copy the actual skill folder into `.opencode/skills/` |
| `.claude/<context>.md` | `.opencode/<context>.md` or `AGENTS.md`, depending on context |
| `CLAUDE.md` | `AGENTS.md` |
| Claude plugin marketplace manifest | Remove unless the user wants plugin install documentation |
| Claude-only install commands | Replace with OpenCode install/copy instructions |
## Context file conversion
When the original skill references Claude project context files, convert carefully.
Original:
```md
Read `CLAUDE.md` before starting.
Converted:
Read `AGENTS.md` before starting.
Original:
Check `.claude/context.md`.
Converted:
Check `.opencode/context.md`.
Original:
If `.agents/context.md` exists, read it first.
Converted:
If `.agents/context.md` exists, read it first.
Do not change .agents/... unless the user wants all project context moved to OpenCode-specific paths.
Preferred context priority for converted OpenCode skills:
AGENTS.md
.opencode/<context>.md
.agents/<context>.md
references/<context>.md
Only add this priority if the original skill already had context-file behavior.
Tool conversion map
Convert Claude Code tool names to OpenCode-style tool names.
Claude Code tool name OpenCode-style tool name
Read read
Write write
Edit edit
MultiEdit edit or apply_patch
Bash bash
Grep grep
Glob glob
WebFetch webfetch
WebSearch websearch
TodoWrite todowrite
TodoRead todoread
Task task
AskUserQuestion question
Skill skill
Only replace the tool name.
Do not rewrite the instruction around it.
Example:
Original:
Use Read to inspect the file, then use Edit to patch it.
Converted:
Use read to inspect the file, then use edit to patch it.
Do not convert it into:
Inspect the file and patch it using OpenCode's native file tools.
That is too much rewriting.
Internal links and reference files
Preserve internal links.
If the source skill has:
See [references/examples.md](references/examples.md)
keep it as:
See [references/examples.md](references/examples.md)
Do not rename reference files unless the file name contains Claude-specific wording that breaks OpenCode usage.
If the source skill references a file that was not provided, add a migration note outside the converted skill:
Migration note: The original skill referenced `references/examples.md`, but that file was not provided.
Do not invent the missing file.
Scripts
If the original skill includes scripts:
Preserve the script's logic
Keep scripts under scripts/
Rewrite only hardcoded Claude-specific paths
Do not refactor the script
Do not optimize the script
Do not change function names unless they contain Claude-specific names and must be changed
Do not execute scripts during conversion unless the user explicitly asks
Examples of allowed script changes:
Path(".claude/skills")
becomes:
Path(".opencode/skills")
Path.home() / ".claude" / "skills"
becomes:
Path.home() / ".config" / "opencode" / "skills"
Examples of forbidden script changes:
Rewriting the script architecture
Changing parsing logic
Replacing regex logic with another parser
Changing CLI behavior
Removing comments that are not Claude-specific
Renaming variables just for style
Installation instruction conversion
If the Claude skill says:
Install this skill in `.claude/skills/example-skill/SKILL.md`.
convert to:
Install this skill in `.opencode/skills/example-skill/SKILL.md`.
If it says:
Install globally in `~/.claude/skills/example-skill/SKILL.md`.
convert to:
Install globally in `~/.config/opencode/skills/example-skill/SKILL.md`.
If it says:
This skill is loaded by Claude Code from the plugin cache.
convert to:
Copy this skill folder into `.opencode/skills/<skill-name>/`.
Do not keep plugin cache paths in the converted output unless the user asks for historical attribution.
Preservation-first workflow
Before converting, classify every part of the source skill into one of two categories:
Core content
Compatibility dependency
Core content includes:
Instructions
Reasoning process
Examples
Output format
Domain knowledge
Writing tone
User-facing behavior
Task-specific rules
Reference content
Compatibility dependency includes:
Paths
Tool names
Config file names
Installation locations
Platform-specific metadata
Claude-only plugin references
Claude-only cache references
Only edit compatibility dependencies.
If unsure, preserve the original text.
Conversion workflow
Follow this process.
1. Locate files
Identify:
Main SKILL.md
Referenced markdown files
Scripts
Assets
Templates
Examples
Schemas
2. Parse frontmatter
Check:
name
description
license
compatibility
metadata
allowed-tools
Unknown fields
3. Normalize the skill name
Make sure the converted folder name and frontmatter name match.
Example:
.claude/skills/File Review Helper/SKILL.md
becomes:
.opencode/skills/file-review-helper/SKILL.md
Example:
.claude/skills/API_Audit.Tool/SKILL.md
becomes:
.opencode/skills/api-audit-tool/SKILL.md
4. Convert frontmatter
Apply only required OpenCode compatibility changes.
Do not rewrite metadata unless it is Claude-specific.
5. Convert paths
Replace Claude-specific paths with OpenCode-compatible paths.
Make the smallest possible edit.
6. Convert tool names
Replace Claude tool names with OpenCode-style tool names.
Do not rewrite the surrounding workflow.
7. Preserve body content
Keep the body text unchanged except for compatibility dependencies.
Do not improve wording.
Do not make it more concise.
Do not make it more polished.
Do not reorganize sections.
Do not remove examples.
Do not add new examples unless the user asks.
8. Preserve references and scripts
Copy supporting files as-is, except for required compatibility path/tool changes.
9. Validate
Check that:
Frontmatter starts with ---
Frontmatter ends with ---
name matches the target folder
description exists
compatibility is set correctly
No accidental .claude references remain unless intentionally preserved
No accidental CLAUDE.md references remain unless intentionally preserved
No Claude-only install path remains
Internal links still point to existing files
Core content was not rewritten
10. Report changes
After conversion, list only compatibility changes.
Do not describe content improvements because there should be none.
Output format for one converted skill
Use this format:
Target folder:
.opencode/skills/<skill-name>/
Files:
- SKILL.md
- references/<file>.md
- scripts/<file>.py
Compatibility changes made:
- Replaced `.claude/skills/...` with `.opencode/skills/...`
- Replaced `CLAUDE.md` with `AGENTS.md`
- Converted Claude tool names to OpenCode-style tool names
- Removed Claude-only `allowed-tools` frontmatter
Unchanged:
- Main skill instructions
- Examples
- Output format
- Domain logic
- Reference content
Migration notes:
- <only include if needed>
Converted SKILL.md:
```markdown
<converted skill>
## Output format for multiple converted skills
Use this format:
| Source skill | Target skill | Status | Compatibility changes |
|---|---|---|---|
Then provide each converted skill separately.
## Minimal edit examples
### Example 1: directory path
Original:
```md
Create the file at `.claude/skills/example-skill/SKILL.md`.
Converted:
Create the file at `.opencode/skills/example-skill/SKILL.md`.
Example 2: global install path
Original:
Put global skills in `~/.claude/skills/`.
Converted:
Put global skills in `~/.config/opencode/skills/`.
Example 3: project memory file
Original:
Read `CLAUDE.md` before editing files.
Converted:
Read `AGENTS.md` before editing files.
Example 4: tool name
Original:
Use Grep to find matching files, then use Read to inspect them.
Converted:
Use grep to find matching files, then use read to inspect them.
Example 5: do not rewrite content
Original:
You are an assistant that identifies issues, applies the requested checks, and returns a structured result.
Converted:
You are an assistant that identifies issues, applies the requested checks, and returns a structured result.
No change is needed because this is core content, not a compatibility dependency.
Example 6: generic context file
Original:
Before starting, check `.claude/context.md` for project-specific rules.
Converted:
Before starting, check `.opencode/context.md` for project-specific rules.
Example 7: script path
Original:
SKILLS_DIR = Path(".claude/skills")
Converted:
SKILLS_DIR = Path(".opencode/skills")
Example 8: plugin cache path
Original:
Load the skill from `~/.claude/plugins/cache/vendor/plugin-name/skills/example-skill/`.
Converted:
Copy the skill folder into `.opencode/skills/example-skill/`.
Safety and destructive actions
Do not delete original Claude skill files unless the user explicitly asks.
Do not overwrite an existing OpenCode skill without warning the user.
When creating files, prefer:
.opencode/skills/<skill-name>/
If the target already exists, suggest one of these:
.opencode/skills/<skill-name>-converted/
.opencode/skills/<skill-name>-opencode/
Do not run scripts from migrated skills unless the user explicitly asks.
Do not run shell commands from the original skill during conversion unless needed and approved.
Final quality standard
A successful conversion should feel like this:
The same skill, same content, same behavior.
Only the Claude-specific dependencies are now OpenCode-compatible.
A failed conversion looks like this:
The skill was rewritten, shortened, improved, reorganized, or stylistically changed.
Never do that.
Bu sürümde marketing’e özel hiçbir örnek kalmadı. `example-skill`, `context.md`, `file-review-helper`, `api-