Ir para o conteúdo
Ir para o conteúdo

Adaptadores

Um adaptador publica o core compartilhado no layout de instalação de um agente. adapters/registry.json nomeia o agente. O módulo em adapters/<id>/ faz a publicação. Esta página é esse mapa. Os passos de instalação estão em Começar.

Registro

Arquivo: adapters/registry.json.

Campo Significado
id Id da CLI / -Agent
displayName Rótulo humano
module Caminho relativo a adapters/
capabilities Booleanos skills, rules, hooks, router, plugin, agents, mais a string subagents (native ou none)
publishSurface Alvos opcionais de roteador de arquivo inteiro. Antigravity usa blocos de markdown gerido. Copilot dobra o roteador em copilot-instructions.md via Publish-Policy. O sync registra sha256 em .toolkit-managed-publish.json. Uninstall remove um roteador de arquivo inteiro só quando o hash do inventário bate

Os dez agentes

Todo agente listado tem um módulo concreto com publicação e um smoke no repositório. O assistente de Sync ao vivo [1] resolve Get-InstallRoots → OfficialUserRootPath (Enter é o home ao vivo). CI e padrões não interativos usam fixtures, salvo -AllowUserHome.

Agente InstallRoot ao vivo Skills, regras, hooks Invocação
cursor ~/.cursor skills/, rules/*.mdc, hooks.json, AGENTS.md /id
antigravity ~/.gemini config/skills, config/skills.json, config/AGENTS.md, GUARDRAILS, config/hooks PreToolUse use skill id ou /id
claude ~/.claude skills/, rules/, CLAUDE.md, hooks em settings.json /id
codex ~/.codex Raiz dupla: config e hooks sob ~/.codex; plugin sob InstallRoot/plugin; $ via ~/.codex/skills; -UserScope opcional em ~/.agents/skills; regras sob InstallRoot/rules $id
copilot ~/.copilot ou .github -Mode user ou repo. skills/, instructions/, copilot-instructions.md, hooks/ /id, depois /skills reload
opencode ~/.config/opencode skills/, AGENTS.md, plugins/ JS skill({ name: "…" })
grok ~/.grok skills/, rules/, hooks/, AGENTS.md /id
zcode ~/.zcode skills/, AGENTS.md, cli/config.json, hooks/hooks.json $id
hermes $HERMES_HOME (Windows %LOCALAPPDATA%\hermes; POSIX ~/.hermes) skills/, AGENTS.md (política dobrada). Semeia memories/MEMORY.md se faltar /id
openhands Árvore do projeto. Skills de usuário em ~/.agents Projeto: AGENTS.md, .agents/skills/, .agents/agents/, hooks .openhands/, .plugin/plugin.json Mencione o id da skill

Capacidades

Flag Intenção
skills Publicar Agent Skills de core/skills/
rules Publicar política de core/policy/
hooks Publicar hooks
router Publicar material de roteador de core/router/
plugin Empacotamento de plugin ou extensão
agents Publicar markdown de roster de core/agents/
subagents native ou none. Padrões de stub nunca inventam native

subagents abaixo é a string declarada em adapters/registry.json. O valor efetivo do Antigravity pode diferir (sonda mais adiante nesta página).

Agente skills rules hooks router plugin agents subagents Notas
cursor true true true true false true native Publish-Agents → InstallRoot/agents/
antigravity true true true true true false native Declarado native. Publish-Agents é no-op. O valor efetivo pode ser none
claude true true true true false true native O smoke de hooks é só arquivos. A UI de confiança fica fora de escopo
codex true true true true true true native Raiz dupla. Publish-Agents → agents/*.toml. A confiança /hooks é manual
copilot true true true false false true native Publish-Router é no-op. O modo repo publica agents
opencode true false true true true true native HooksSemantics=plugin-only; o marcador de compatibilidade não instala hook de autorização
grok true true true true false true native Nativo sob ~/.grok
zcode true false true true false true native Publish-Policy é no-op
hermes true true true true true false native Política dobrada em AGENTS.md. Nunca SOUL.md
openhands true true true true true true none O único none declarado. O roster não é spawn nativo

Limite de autorização

Hooks do Toolkit não decidem se um provider pode executar uma ferramenta. ACLs, sandbox, configurações de confiança e confirmações nativas continuam sob controle do provider e do operador. O avaliador compartilhado GuardCommon.ps1 existe por compatibilidade e sempre permite; não classifica caminhos/ferramentas, aplica allowlists nem examina segredos. Cursor e Claude removem entradas geridas antigas de hooks de autorização durante o sync. Quatro adaptadores (Grok, OpenHands, ZCode e Antigravity) mantêm um shim PreToolUse que nega apenas entrada vazia, malformada ou fora do schema; o veredito de caminho e de segredos sempre permite. Codex e Copilot não registram mais um guard, então eventos malformados ou sem identidade deixam de ser negados por um hook do Toolkit. Essa é uma mudança de comportamento registrada em docs/ENFORCEMENT.md. O wrapper POSIX do OpenHands também permite quando o pwsh opcional não está disponível.

Cada resultado de Publish-Hooks informa um estado de ativação de hook (manual, automatic, unavailable ou blocked) ao fim do sync. Falha de hook não interrompe o sync; os hooks que falharam são listados no final. Veja adapters/provider-authorization-conformance.md e adapters/_shared/guard-rules.md.

A maioria dos adaptadores declara subagents: native. OpenHands declara none (SPAWN fica no pai). A capacidade efetiva do Antigravity é fail-closed em Get-Capabilities. Ordem da sonda em core/skills/_shared/agents/SPAWN.md: override ADT_ANTIGRAVITY_SUBAGENTS → versão de produto >= 2.0.0 quando conhecida → agy --version analisável >= 1.0.0 como proxy do harness 2.0 (a CLI permanece 1.x; não exija major da CLI ≥ 2) → senão none. Antes de 2.0, ou quando a sonda não consegue dizer, o valor efetivo é none.

A publicação pode emitir só honestidade de profundidade e threads alinhada ao SPAWN, e herança de modelo (ou omitir o modelo). Tetos: developer ≤ 2, orchestrate ≤ 4. A publicação não fixa um modelo de filho diferente do pai. Ela não emite delegation.max_spawn_depth do host nem knobs de config.toml para Hermes, Antigravity (agents: false) ou OpenCode.

Honestidade do emissor TRACE:

Alegação Hosts
emit-trace.ps1 ligado, fail-open Cursor (hooks.json postToolUse / subagentStop). Claude (PostToolUse / SubagentStop)
Só SubagentStop registrado, sem fio PostToolUse Codex (SubagentStop → emit-trace.ps1; sem guard PreToolUse)
Não alegado OpenHands, OpenCode, Hermes, Grok, Copilot, Antigravity, ZCode

Assert: Assert-TraceEmitterFailOpen.ps1. O arquivo da trilha é features/NNN-slug/TRACE.jsonl.

Comandos públicos

Stub do módulo: adapters/_contract/AdapterContract.ps1. Módulos concretos ficam em adapters/<id>/.

Comando Intenção
Get-Capabilities Reportar flags. O stub devolve toda flag false e Implemented = false
Get-InstallRoots Resolver raízes oficiais. O stub não escreve caminho
Publish-Skills Publicar skills. O stub não escreve
Publish-Policy Publicar política. O stub não escreve
Publish-Router Publicar o roteador. O stub não escreve
Publish-Agents Publicar markdown de roster de core/agents/
Publish-Hooks Publicar hooks. O stub não escreve
Get-SddRoot Resolver ou preparar <InstallRoot>/sdd
Invoke-SmokeValidate Smoke de um InstallRoot de fixture. Não deve exigir um perfil ao vivo
Uninstall-Toolkit Remoção chaveada. Mantém sdd/sessions e sdd/manifest.json

Um resultado não implementado é Success = false, Implemented = false, ExitCode = 1, com uma mensagem acionável. Stubs não devem escrever sob o perfil do usuário.

Raiz SDD

Contratos canônicos: core/skills/_shared/sdd-artifacts/ (PIPELINE.md, STORAGE.md, SESSION.md, MEMORY-BANK.md). Arquivo público de estado: manifest.json. Ajudante: scripts/_lib/Initialize-SddRootLayout.ps1.

Item Valor
Get-SddRoot Devolve <InstallRoot>/sdd (SddRoot, SessionsPath, ManifestPath)
Get-SddRoot -Prepare Cria sdd/sessions/ se faltar. Semeia manifest.json (schema_version: 2, repositories vazio) só quando o arquivo está ausente
Sync scripts/sync-agent.ps1 sempre chama Get-SddRoot -Prepare depois de Publish
Uninstall Precisa manter sdd/sessions/ e sdd/manifest.json
Guarda Prepare respeita Resolve-InstallRoot (-AllowUserHome sob o perfil do usuário)

Os placeholders {{TOOLKIT_ROOT}}, {{SDD_ROOT}} e {{GUARDRAILS_PATH}} permanecem em core/ no disco. Cada adaptador os substitui no destino. Agulhas: scripts/validation/contracts/must-not-contain-ide.json.

Scripts que carregam um módulo

Esses três scripts resolvem um agente no registro e chamam o módulo. O passo a passo de instalação, inclusive exemplos de -Action, permanece em Começar.

Script Comportamento
scripts/toolkit.ps1 Menu ou -Action / -Agent. Lista os agentes do registro. Sync, Validate e Uninstall exigem um agente. Encaminha Sync e Validate. Uninstall chama Uninstall-Toolkit. Backup (-Action Backup) é um stub fail-closed e não chama um adaptador
scripts/sync-agent.ps1 -Agent <id> Carrega a entrada do registro e o módulo, chama Publish-* e depois sempre Get-SddRoot -Prepare. Adaptadores desconhecidos ou incompletos saem com código diferente de zero e not implemented (TE04). O InstallRoot padrão é o fixture no repositório. Um caminho no perfil do usuário sem -AllowUserHome é recusado
scripts/validate-agent.ps1 -Agent <id> Sempre roda validate-core e depois Invoke-SmokeValidate contra o InstallRoot de fixture. Um smoke documentado como no-op não falha a execução. Um -Agent ausente ou desconhecido ainda aborta (TE01 / TE02)

Cursor

Item Valor
Módulo adapters/cursor/CursorAdapter.ps1
Raiz oficial ~/.cursor
Fixture scripts/validation/fixtures/cursor-install-root
Capacidades skills, rules, hooks, router, agents true. plugin false
Artefatos skills/, rules/*.mdc, AGENTS.md, agents/*.md, hooks/*.ps1, hooks.json, sdd/
$cursorFixture = Join-Path $PWD 'scripts\validation\fixtures\cursor-install-root'
pwsh -NoProfile -File .\scripts\sync-agent.ps1 -Agent cursor -InstallRoot $cursorFixture
pwsh -NoProfile -File .\scripts\validate-agent.ps1 -Agent cursor -InstallRoot $cursorFixture
pwsh -NoProfile -File .\scripts\validation\Invoke-AdapterCiSmoke.ps1 -Adapter cursor

Uninstall remove skills, regras, hooks e AGENTS.md do toolkit, e desfaz o merge dos handlers geridos em hooks.json. Verificado por Assert-AdapterPublish.ps1.

Antigravity

Item Valor
Módulo adapters/antigravity/AntigravityAdapter.ps1
Raiz oficial ~/.gemini
Layout config/skills, config/plugins, config/hooks, config/skills.json, config/AGENTS.md, config/GEMINI.md
Capacidades skills, rules, hooks, router, plugin true. agents false
Publish-Agents No-op. O spawn do host é invoke_subagent
Publish-Hooks config/hooks/hooks.json mais guard-pre-tool.ps1

A ponte legada antigravity-ide/plugins não é um gate de CI nem de smoke padrão. Knowledge Items ao vivo e a UI de confiança da IDE ficam fora de escopo. Fixture: scripts/validation/fixtures/antigravity-install-root. Smoke: Invoke-AdapterCiSmoke.ps1 -Adapter antigravity.

pwsh -NoProfile -File .\scripts\sync-agent.ps1 -Agent antigravity
pwsh -NoProfile -File .\scripts\validate-agent.ps1 -Agent antigravity

Claude Code

Item Valor
Módulo adapters/claude/ClaudeAdapter.ps1
Raiz oficial ~/.claude. Escopo de projeto: .claude/ do repo
Fixture scripts/validation/fixtures/claude/
Capacidades skills, rules, hooks, router, agents true. plugin false
Artefatos skills/, rules/*.md, hooks/*.ps1, CLAUDE.md, agents/*.md, settings.json mesclado

Merge de settings.json: escreve settings.json.bak primeiro; upsert chaveado para eventos geridos não relacionados à autorização; entradas antigas geridas de autorização PreToolUse são removidas. permissions.allow recebe entradas estreitas aditivas para hooks geridos. O re-sync remove Bash(pwsh *) / Bash(powershell *) largos e legados, salvo -AllowBroadShellPermissions. As outras chaves ficam. A codificação é UTF-8 sem BOM. JSON inválido aborta (TE01). Falha de backup aborta (TE02).

Os assets de hook publicados são material de compatibilidade; o matcher gerido de autorização PreToolUse é removido. A UI de confiança de hooks fica fora do smoke.

$claudeFixture = Join-Path $PWD 'scripts\validation\fixtures\claude'
pwsh -NoProfile -File .\scripts\sync-agent.ps1 -Agent claude -InstallRoot $claudeFixture
pwsh -NoProfile -File .\scripts\validate-agent.ps1 -Agent claude -InstallRoot $claudeFixture
pwsh -NoProfile -File .\scripts\validation\Invoke-AdapterCiSmoke.ps1 -Adapter claude

Codex

Item Valor
Módulo adapters/codex/CodexAdapter.ps1
Home de produto ~/.codex
Espelho $ InstallRoot/skills (~/.codex/skills ao vivo). O caminho do plugin sozinho não alimenta $
Skills USER opcionais ~/.agents/skills via -UserScope e, em home ao vivo, -AllowUserHome
Fixture scripts/validation/fixtures/codex
Capacidades skills, rules, hooks, router, plugin, agents todos true

O sync padrão é só plugin. Publish-Agents escreve agents/*.toml. AGENTS.md usa caminhos absolutos de raiz dupla e não guarda placeholders {{…}}. /hooks do Codex é manual. O smoke define RequiresHooksTrust=false. Não existe a flag $skill --menu.

$codexFixture = Join-Path $PWD 'scripts\validation\fixtures\codex'
pwsh -NoProfile -File .\scripts\sync-agent.ps1 -Agent codex -InstallRoot $codexFixture
pwsh -NoProfile -File .\scripts\validate-agent.ps1 -Agent codex -InstallRoot $codexFixture

GitHub Copilot

Item Valor
Módulo adapters/copilot/CopilotAdapter.ps1
Flag obrigatória -Mode user ou -Mode repo. Modo ausente ou inválido é TE02
Modo user Modela ~/.copilot. Fixture scripts/validation/fixtures/copilot/user
Modo repo Modela .github. Fixture scripts/validation/fixtures/copilot/repo
Capacidades skills, rules, hooks, agents true. router e plugin false

O layout relativo é o mesmo nos dois modos: skills/, instructions/*.instructions.md, copilot-instructions.md, hooks/. Publish-Router é no-op. O texto do roteador é dobrado em copilot-instructions.md. agents/*.md publica só no modo repo. Layouts JetBrains e Eclipse ficam fora de escopo.

$copilotUser = Join-Path $PWD 'scripts\validation\fixtures\copilot\user'
$copilotRepo = Join-Path $PWD 'scripts\validation\fixtures\copilot\repo'
pwsh -NoProfile -File .\scripts\sync-agent.ps1 -Agent copilot -Mode user -InstallRoot $copilotUser
pwsh -NoProfile -File .\scripts\validate-agent.ps1 -Agent copilot -Mode user -InstallRoot $copilotUser
pwsh -NoProfile -File .\scripts\sync-agent.ps1 -Agent copilot -Mode repo -InstallRoot $copilotRepo
pwsh -NoProfile -File .\scripts\validation\Invoke-AdapterCiSmoke.ps1 -Adapter copilot

OpenCode

Item Valor
Módulo adapters/opencode/OpenCodeAdapter.ps1
Raiz oficial ~/.config/opencode
Fixture scripts/validation/fixtures/opencode/
Capacidades skills, hooks, router, plugin, agents true. rules false
Hooks HooksSemantics=plugin-only. plugins/agent-dev-toolkit-marker.js
Publish-Policy No-op
$opencodeFixture = Join-Path $PWD 'scripts\validation\fixtures\opencode'
pwsh -NoProfile -File .\scripts\sync-agent.ps1 -Agent opencode -InstallRoot $opencodeFixture
pwsh -NoProfile -File .\scripts\validate-agent.ps1 -Agent opencode -InstallRoot $opencodeFixture

ZCode

Item Valor
Módulo adapters/zcode/ZCodeAdapter.ps1
Raiz oficial ~/.zcode
Fixture scripts/validation/fixtures/zcode-install-root
Capacidades skills, hooks, router, agents true. rules e plugin false
Publish-Policy No-op

Só filesystem ADE. GLM Coding Plan (endpoint, base URL, MCP) fica fora de escopo. Não use o id de agente zcode para esse setup. Uninstall desfaz o merge de cli/config.json e hooks/hooks.json. CI: Assert-AdapterPublish.ps1 e Invoke-AdapterCiSmoke.ps1 -Adapter zcode.

$zcodeFixture = Join-Path $PWD 'scripts\validation\fixtures\zcode-install-root'
pwsh -NoProfile -File .\scripts\sync-agent.ps1 -Agent zcode -InstallRoot $zcodeFixture
pwsh -NoProfile -File .\scripts\validate-agent.ps1 -Agent zcode -InstallRoot $zcodeFixture

Grok Build

Item Valor
Módulo adapters/grok/GrokAdapter.ps1
Raiz oficial ~/.grok (o InstallRoot é esse diretório)
Fixture scripts/validation/fixtures/grok
Capacidades skills, rules, hooks, router, agents true. plugin false
Invocação /id

Publique direto sob o InstallRoot. Não aninhe .grok/skills quando o InstallRoot já é ~/.grok. /hooks-trust é manual. O smoke não escreve trusted_folders.toml.

$grokFixture = Join-Path $PWD 'scripts\validation\fixtures\grok'
pwsh -NoProfile -File .\scripts\sync-agent.ps1 -Agent grok -InstallRoot $grokFixture
pwsh -NoProfile -File .\scripts\validate-agent.ps1 -Agent grok -InstallRoot $grokFixture

Hermes

Item Valor
Módulo adapters/hermes/HermesAdapter.ps1
Raiz oficial HERMES_HOME, senão Windows %LOCALAPPDATA%\hermes, senão ~/.hermes
Fixture scripts/validation/fixtures/hermes
Capacidades skills, rules, hooks, router, plugin true. agents false. subagents native
Invocação /id, com delegate_task para subagentes

Publish-Policy dobra a política em AGENTS.md e acrescenta adapters/hermes/assets/spawn-bridge.md. Não escreve uma árvore rules/. GUARDRAILS_PATH é InstallRoot/AGENTS.md. memories/MEMORY.md é semeado uma vez se faltar. SOUL.md nunca é escrito. Skills do home oficial de usuário não precisam de confiança. Uma cópia de projeto pode chamar hermes skills trust. Uma CLI hermes ausente pula a confiança e a publicação ainda sucede. Uninstall mantém segredos, memories/MEMORY.md, SOUL.md e sdd/*.

Publish-Hooks não registra hook: o plugin é um pacote de compatibilidade. Antes de qualquer mudança, ele faz uma checagem estrutural do config.yaml. Formato não suportado ou inválido é reportado como blocked; o arquivo fica byte a byte intacto. Isso é uma checagem estrutural, não um parser de YAML.

Fora de escopo: tokens de gateway, cron, Kanban, voz e YAML delegation.*.

pwsh -NoProfile -File .\scripts\toolkit.ps1 -Action Sync -Agent hermes
pwsh -NoProfile -File .\scripts\toolkit.ps1 -Action Sync -Agent hermes `
  -InstallRoot "$env:LOCALAPPDATA\hermes" -AllowUserHome
pwsh -NoProfile -File .\scripts\validation\Invoke-AdapterCiSmoke.ps1 -Adapter hermes

OpenHands

Item Valor
Módulo adapters/openhands/OpenHandsAdapter.ps1
Raiz de projeto AGENTS.md, .agents/skills/, .agents/agents/, .openhands/, .plugin/
Skills de usuário ~/.agents/skills via -InstallRoot "$env:USERPROFILE\.agents" -AllowUserHome
Fixture scripts/validation/fixtures/openhands
Capacidades skills, rules, hooks, router, plugin, agents true. subagents none

Hooks são shell, não .ps1: guard_pre_tool.sh para pre_tool_use. As skills funcionam sem o plugin. Canvas e ACP não são spawn de pai para filho. Placeholders resolvem com TOOLKIT_ROOT = InstallRoot/.agents numa árvore de projeto, e com esse diretório home quando o InstallRoot é ~/.agents ao vivo (skills em skills/, sem um .agents aninhado).

Fora de escopo: Automation Server, cron, webhooks do GitHub, YAML de sandbox, segredos de LLM e .openhands/microagents/ legado.

pwsh -NoProfile -File .\scripts\toolkit.ps1 -Action Sync -Agent openhands
$openhandsFixture = Join-Path $PWD 'scripts\validation\fixtures\openhands'
pwsh -NoProfile -File .\scripts\sync-agent.ps1 -Agent openhands -InstallRoot $openhandsFixture
pwsh -NoProfile -File .\scripts\toolkit.ps1 -Action Sync -Agent openhands `
  -InstallRoot "$env:USERPROFILE\.agents" -AllowUserHome
pwsh -NoProfile -File .\scripts\validation\Invoke-AdapterCiSmoke.ps1 -Adapter openhands

Restrições

  • O smoke usa um fixture no repositório. Uma CI verde não exige sync de perfil ao vivo.
  • O conteúdo publicado nos agentes vem de core/.
  • Uma escrita em home ao vivo precisa de -AllowUserHome e fica fora da CI.