Skip to content

Compatibilidade com Claude Code: Suporte Completo para Commands, Skills, Agents, MCPs e Hooks

O Que Você Vai Aprender

  • Usar configurações e plugins existentes do Claude Code no OpenCode
  • Entender as regras de prioridade de diferentes fontes de configuração
  • Controlar o carregamento de recursos de compatibilidade do Claude Code através de opções de configuração
  • Migrar suavemente do Claude Code para o OpenCode

Seu Desafio Atual

Se você está migrando do Claude Code para o OpenCode, provavelmente já configurou muitos Commands personalizados, Skills e servidores MCP no diretório ~/.claude/. Reconfigurar tudo isso é trabalhoso, e você gostaria de reutilizar essas configurações diretamente no OpenCode.

O Oh My OpenCode oferece uma camada de compatibilidade completa com o Claude Code, permitindo usar suas configurações e plugins existentes sem nenhuma modificação.

Conceito Principal

O Oh My OpenCode é compatível com o formato de configuração do Claude Code através de um mecanismo de carregamento automático. O sistema escaneia automaticamente os diretórios de configuração padrão do Claude Code na inicialização, converte esses recursos para um formato reconhecível pelo OpenCode e os registra no sistema.

A compatibilidade abrange os seguintes recursos:

RecursoStatus de CompatibilidadeDescrição
Commands✅ Suporte completoCarrega comandos slash de ~/.claude/commands/ e .claude/commands/
Skills✅ Suporte completoCarrega habilidades especializadas de ~/.claude/skills/ e .claude/skills/
Agents⚠️ ReservadoInterface reservada, atualmente suporta apenas Agents integrados
MCPs✅ Suporte completoCarrega configurações de servidor MCP de .mcp.json e ~/.claude/.mcp.json
Hooks✅ Suporte completoCarrega hooks de ciclo de vida personalizados de settings.json
Plugins✅ Suporte completoCarrega plugins do Marketplace de installed_plugins.json

Prioridade de Carregamento de Configurações

O Oh My OpenCode suporta o carregamento de configurações de múltiplas localizações, mesclando-as em uma ordem de prioridade fixa. Configurações de maior prioridade sobrescrevem as de menor prioridade.

Prioridade de Carregamento de Commands

Os Commands são carregados na seguinte ordem (da maior para a menor prioridade):

  1. .opencode/command/ (nível de projeto, maior prioridade)
  2. ~/.config/opencode/command/ (nível de usuário)
  3. .claude/commands/ (compatibilidade Claude Code nível de projeto)
  4. ~/.claude/commands/ (compatibilidade Claude Code nível de usuário)

Localização no código-fonte: src/features/claude-code-command-loader/loader.ts:136-144

typescript
// Carrega Commands de 4 diretórios, mesclando por prioridade
return {
  ...projectOpencode,   // 1. .opencode/command/
  ...global,             // 2. ~/.config/opencode/command/
  ...project,            // 3. .claude/commands/
  ...user                // 4. ~/.claude/commands/
}

Exemplo: Se existir um comando com o mesmo nome em .opencode/command/refactor.md e ~/.claude/commands/refactor.md, o comando em .opencode/ terá precedência.

Prioridade de Carregamento de Skills

As Skills são carregadas na seguinte ordem (da maior para a menor prioridade):

  1. .opencode/skills/*/SKILL.md (nível de projeto, maior prioridade)
  2. ~/.config/opencode/skills/*/SKILL.md (nível de usuário)
  3. .claude/skills/*/SKILL.md (compatibilidade Claude Code nível de projeto)
  4. ~/.claude/skills/*/SKILL.md (compatibilidade Claude Code nível de usuário)

Localização no código-fonte: src/features/opencode-skill-loader/loader.ts:206-215

Exemplo: Skills de nível de projeto sobrescrevem Skills de nível de usuário, garantindo que as necessidades específicas de cada projeto tenham prioridade.

Prioridade de Carregamento de MCPs

As configurações MCP são carregadas na seguinte ordem (da maior para a menor prioridade):

  1. .claude/.mcp.json (nível de projeto, maior prioridade)
  2. .mcp.json (nível de projeto)
  3. ~/.claude/.mcp.json (nível de usuário)

Localização no código-fonte: src/features/claude-code-mcp-loader/loader.ts:18-27

Característica: As configurações MCP suportam expansão de variáveis de ambiente (como ${OPENAI_API_KEY}), resolvidas automaticamente através de env-expander.ts.

Localização no código-fonte: src/features/claude-code-mcp-loader/env-expander.ts

Prioridade de Carregamento de Hooks

Os Hooks são carregados do campo hooks em settings.json, suportando os seguintes caminhos (por prioridade):

  1. .claude/settings.local.json (configuração local, maior prioridade)
  2. .claude/settings.json (nível de projeto)
  3. ~/.claude/settings.json (nível de usuário)

Localização no código-fonte: src/hooks/claude-code-hooks/config.ts:46-59

Característica: Os Hooks de múltiplos arquivos de configuração são mesclados automaticamente, em vez de se sobrescreverem.


Opções de Desativação de Configuração

Se você não quiser carregar certas configurações do Claude Code, pode controlá-las de forma granular através do campo claude_code em oh-my-opencode.json.

Desativar Completamente a Compatibilidade

jsonc
{
  "$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json",

  "claude_code": {
    "mcp": false,
    "commands": false,
    "skills": false,
    "agents": false,
    "hooks": false,
    "plugins": false
  }
}

Desativação Parcial

Você também pode desativar apenas recursos específicos:

jsonc
{
  "claude_code": {
    "mcp": false,         // Desativa arquivos .mcp.json (mas mantém MCPs integrados)
    "commands": false,     // Desativa ~/.claude/commands/ e .claude/commands/
    "skills": false,       // Desativa ~/.claude/skills/ e .claude/skills/
    "agents": false,       // Desativa ~/.claude/agents/ (mantém Agents integrados)
    "hooks": false,        // Desativa hooks do settings.json
    "plugins": false       // Desativa plugins do Marketplace do Claude Code
  }
}

Descrição das opções:

OpçãoO Que é DesativadoO Que é Mantido
mcpArquivos .mcp.jsonMCPs integrados (websearch, context7, grep_app)
commands~/.claude/commands/, .claude/commands/Commands nativos do OpenCode
skills~/.claude/skills/, .claude/skills/Skills nativas do OpenCode
agents~/.claude/agents/Agents integrados (Sisyphus, Oracle, Librarian, etc.)
hooksHooks do settings.jsonHooks integrados do Oh My OpenCode
pluginsPlugins do Marketplace do Claude CodeFuncionalidades de plugins integrados

Desativar Plugins Específicos

Use plugins_override para desativar plugins específicos do Marketplace do Claude Code:

jsonc
{
  "claude_code": {
    "plugins_override": {
      "claude-mem@thedotmack": false  // Desativa o plugin claude-mem
    }
  }
}

Localização no código-fonte: src/config/schema.ts:143


Compatibilidade de Armazenamento de Dados

O Oh My OpenCode é compatível com o formato de armazenamento de dados do Claude Code, garantindo a persistência e migração de dados de sessão e tarefas.

Armazenamento de Todos

  • Localização: ~/.claude/todos/
  • Formato: Formato JSON compatível com Claude Code
  • Uso: Armazena listas de tarefas e itens pendentes

Localização no código-fonte: src/features/claude-code-session-state/index.ts

Armazenamento de Transcrições

  • Localização: ~/.claude/transcripts/
  • Formato: JSONL (um objeto JSON por linha)
  • Uso: Armazena histórico de sessões e registros de mensagens

Localização no código-fonte: src/features/claude-code-session-state/index.ts

Vantagem: Compartilha o mesmo diretório de dados com o Claude Code, permitindo migração direta do histórico de sessões.


Integração de Hooks do Claude Code

O campo hooks no settings.json do Claude Code define scripts personalizados executados em pontos específicos de eventos. O Oh My OpenCode suporta completamente esses Hooks.

Tipos de Eventos de Hook

EventoMomento de DisparoOperações Possíveis
PreToolUseAntes da execução da ferramentaBloquear chamada de ferramenta, modificar parâmetros de entrada, injetar contexto
PostToolUseApós a execução da ferramentaAdicionar avisos, modificar saída, injetar mensagens
UserPromptSubmitQuando o usuário envia um promptBloquear prompt, injetar mensagens, transformar prompt
StopQuando a sessão fica ociosaInjetar prompts de acompanhamento, executar tarefas automatizadas

Localização no código-fonte: src/hooks/claude-code-hooks/index.ts

Exemplo de Configuração de Hook

Aqui está uma configuração típica de Hooks do Claude Code:

jsonc
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "eslint --fix $FILE"
          }
        ]
      }
    ],
    "UserPromptSubmit": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "inject",
            "content": "Remember to follow the project's coding standards."
          }
        ]
      }
    ]
  }
}

Descrição dos campos:

  • matcher: Padrão de correspondência de nome de ferramenta (suporta curinga *)
  • type: Tipo de Hook (command, inject, etc.)
  • command: Comando shell a ser executado (suporta variáveis como $FILE)
  • content: Conteúdo da mensagem a ser injetada

Mecanismo de Execução de Hooks

O Oh My OpenCode executa automaticamente esses Hooks personalizados através do Hook claude-code-hooks. Este Hook verifica e carrega a configuração do Claude Code em todos os pontos de evento.

Localização no código-fonte: src/hooks/claude-code-hooks/index.ts:36-401

Fluxo de execução:

  1. Carrega o settings.json do Claude Code
  2. Analisa o campo hooks e corresponde ao evento atual
  3. Executa os Hooks correspondentes em sequência
  4. Modifica o comportamento do agente com base no resultado retornado (bloquear, injetar, avisar, etc.)

Exemplo: Se um Hook PreToolUse retornar deny, a chamada da ferramenta será bloqueada e o agente receberá uma mensagem de erro.


Cenários de Uso Comuns

Cenário 1: Migrar Configurações do Claude Code

Se você já configurou Commands e Skills no Claude Code, pode usá-los diretamente no OpenCode:

Passos:

  1. Certifique-se de que o diretório ~/.claude/ existe e contém suas configurações
  2. Inicie o OpenCode, o Oh My OpenCode carregará automaticamente essas configurações
  3. Digite / no chat para ver os Commands carregados
  4. Use Commands ou invoque Skills

Verificação: Verifique a quantidade de configurações carregadas nos logs de inicialização do Oh My OpenCode.

Cenário 2: Sobrescrita de Configuração em Nível de Projeto

Você quer usar Skills diferentes para um projeto específico, sem afetar outros projetos:

Passos:

  1. Crie o diretório .claude/skills/ na raiz do projeto
  2. Adicione a Skill específica do projeto (ex: ./.claude/skills/my-skill/SKILL.md)
  3. Reinicie o OpenCode
  4. A Skill de nível de projeto sobrescreverá automaticamente a Skill de nível de usuário

Vantagem: Cada projeto pode ter configurações independentes, sem interferência mútua.

Cenário 3: Desativar Compatibilidade com Claude Code

Você quer usar apenas configurações nativas do OpenCode, sem carregar configurações antigas do Claude Code:

Passos:

  1. Edite oh-my-opencode.json
  2. Adicione a seguinte configuração:
jsonc
{
  "claude_code": {
    "mcp": false,
    "commands": false,
    "skills": false,
    "hooks": false,
    "plugins": false
  }
}
  1. Reinicie o OpenCode

Resultado: O sistema ignorará todas as configurações do Claude Code, usando apenas configurações nativas do OpenCode.


Armadilhas Comuns

⚠️ Conflitos de Configuração

Problema: Se houver configurações com o mesmo nome em múltiplas localizações (como o mesmo nome de Command aparecendo em .opencode/command/ e ~/.claude/commands/), pode causar comportamento imprevisível.

Solução: Entenda a prioridade de carregamento e coloque a configuração de maior prioridade no diretório de maior prioridade.

⚠️ Diferenças no Formato de Configuração MCP

Problema: O formato de configuração MCP do Claude Code é ligeiramente diferente do OpenCode, copiar diretamente pode não funcionar.

Solução: O Oh My OpenCode converte automaticamente o formato, mas é recomendável consultar a documentação oficial para garantir que a configuração esteja correta.

Localização no código-fonte: src/features/claude-code-mcp-loader/transformer.ts

⚠️ Impacto de Hooks no Desempenho

Problema: Muitos Hooks ou scripts de Hook complexos podem causar degradação de desempenho.

Solução: Limite o número de Hooks, mantendo apenas os necessários. Você pode desativar Hooks específicos através de disabled_hooks.


Resumo da Lição

O Oh My OpenCode oferece uma camada de compatibilidade completa com o Claude Code, permitindo migrar e reutilizar configurações existentes sem problemas:

  • Prioridade de carregamento de configurações: Carrega configurações na ordem nível de projeto > nível de usuário > compatibilidade Claude Code
  • Opções de compatibilidade: Controle precisamente quais recursos carregar através do campo claude_code
  • Compatibilidade de armazenamento de dados: Compartilha o diretório ~/.claude/, suportando migração de dados de sessão e tarefas
  • Integração de Hooks: Suporte completo ao sistema de hooks de ciclo de vida do Claude Code

Se você está migrando do Claude Code, esta camada de compatibilidade permite começar a usar o OpenCode sem nenhuma configuração adicional.


Prévia da Próxima Lição

Na próxima lição, aprenderemos sobre Referência de Configuração.

Você aprenderá:

  • Descrição completa dos campos de configuração do oh-my-opencode.json
  • Tipo, valor padrão e restrições de cada campo
  • Padrões de configuração comuns e melhores práticas

Apêndice: Referência do Código-Fonte

Clique para expandir e ver as localizações no código-fonte

Data de atualização: 2026-01-26

RecursoCaminho do ArquivoLinhas
Entrada principal dos Hooks do Claude Codesrc/hooks/claude-code-hooks/index.ts1-402
Carregamento de configuração de Hookssrc/hooks/claude-code-hooks/config.ts1-104
Carregador de configuração MCPsrc/features/claude-code-mcp-loader/loader.ts1-120
Carregador de Commandssrc/features/claude-code-command-loader/loader.ts1-145
Carregador de Skillssrc/features/opencode-skill-loader/loader.ts1-262
Carregador de Pluginssrc/features/claude-code-plugin-loader/index.tsCompleto
Compatibilidade de armazenamento de dadossrc/features/claude-code-session-state/index.tsCompleto
Transformador de configuração MCPsrc/features/claude-code-mcp-loader/transformer.tsCompleto
Expansão de variáveis de ambientesrc/features/claude-code-mcp-loader/env-expander.tsCompleto

Funções principais:

  • createClaudeCodeHooksHook(): Cria o Hook de integração de Hooks do Claude Code, processando todos os eventos (PreToolUse, PostToolUse, UserPromptSubmit, Stop)
  • loadClaudeHooksConfig(): Carrega a configuração settings.json do Claude Code
  • loadMcpConfigs(): Carrega configurações de servidor MCP, suportando expansão de variáveis de ambiente
  • loadAllCommands(): Carrega Commands de 4 diretórios, mesclando por prioridade
  • discoverSkills(): Carrega Skills de 4 diretórios, suportando caminhos de compatibilidade do Claude Code
  • getClaudeConfigDir(): Obtém o caminho do diretório de configuração do Claude Code (dependente da plataforma)

Constantes principais:

  • Prioridade de carregamento de configuração: .opencode/ > ~/.config/opencode/ > .claude/ > ~/.claude/
  • Tipos de eventos de Hook: PreToolUse, PostToolUse, UserPromptSubmit, Stop, PreCompact