Objetivo: ao final, o consultor transforma um .claude/ funcional em plugin publicável e validado, pronto para entrar no marketplace da Wayon.
skills/ e agents/ são copiados sem alteração; o bloco hooks sai do settings.json e vai para hooks/hooks.json, no mesmo formato.claude plugin validate ./plugin valida antes de publicar (--strict trata aviso como erro), e claude --plugin-dir ./plugin carrega para testar sem instalar..claude/agents/ depois de migrar — ele sobrescreve o do plugin com o mesmo nome, e a versão do plugin não pega.Em .claude/ (antes) |
No plugin (depois) |
|---|---|
.claude/skills/revisao-spec/SKILL.md |
wayon-sap/skills/revisao-spec/SKILL.md |
.claude/agents/revisor-abap.md |
wayon-sap/agents/revisor-abap.md |
Bloco hooks em .claude/settings.json |
wayon-sap/hooks/hooks.json |
.mcp.json do projeto |
wayon-sap/.mcp.json |
| — | wayon-sap/.claude-plugin/plugin.json (novo) |
/revisao-spec |
/wayon-sap:revisao-spec |
# 1. casca do plugin
mkdir -p wayon-sap/.claude-plugin
# 2. componentes que vão sem alteração
cp -r .claude/skills wayon-sap/
cp -r .claude/agents wayon-sap/
# 3. hooks mudam de arquivo, não de formato
mkdir wayon-sap/hooks
# recorte o bloco "hooks" de .claude/settings.json para wayon-sap/hooks/hooks.json
# 4. testar sem instalar
claude --plugin-dir ./wayon-sap
# 5. validar antes de publicar
claude plugin validate ./wayon-sap
O manifesto, em wayon-sap/.claude-plugin/plugin.json:
{
"name": "wayon-sap",
"description": "Skills, subagentes e hooks padrão da Wayon para projeto SAP",
"version": "1.0.0",
"author": { "name": "Wayon" }
}
| Componente | Como confirmar |
|---|---|
| Skill | Invocar pelo nome namespaced: /wayon-sap:revisao-spec |
| Subagente | /context → aparece sob Custom Agents; ou @-mencionar pelo nome |
| Hook | Disparar o evento que ele casa de verdade (pedir uma edição, para um PostToolUse) e conferir o efeito |
| Tudo, depois de alterar | /reload-plugins, sem reiniciar a sessão |
Hook é o que mais engana em teste: ele parece configurado e só se prova quando o evento acontece. E se o caminho de bloqueio usar exit 1, ele passa no teste visual e falha na prática — é a aula 3.2.4.
secondsky/sap-skills tem skills voltadas a ABAP e CAP. Vale como ponto de partida a adaptar, com a mesma ressalva da aula 2.8.T3 e todo o peso da aula 3.3.3: ler antes, adaptar ao padrão da Wayon, e nunca instalar direto em máquina com dado de cliente sem passar pelo checklist.
Regra Wayon Nenhum plugin entra no marketplace da Wayon sem:
versiondeclarada,claude plugin validatepassando, revisão de par, e confirmação de que não carrega particularidade de cliente (nome de sistema, transação Z, regra de negócio). O último item é o que impede que o plugin da casa se torne um canal de vazamento entre contas.
📖 Converter configuração em plugin · Distribuir um marketplace
.claude/settings.json para o plugin, o que muda no conteúdo?hooks é recortado e colado em hooks/hooks.jsonCorreto. Muda o arquivo, não a estrutura do JSON.
Não há formato de matcher específico de plugin; a estrutura é a mesma.
plugin identificando a origemO namespacing do plugin não exige declaração dentro de cada hook.
revisor-abap continua se comportando como na versão antiga. Qual é a causa mais provável?/reload-plugins para os subagentes carregaremBoa hipótese, e vale tentar, mas há uma causa mais específica quando o comportamento é o da versão antiga e não ausência de subagente.
.claude/agents/, e definição de projeto sobrescreve subagente de plugin com o mesmo nomeCorreto. É o passo que falta em migração feita pela metade.
name do plugin está errado, então o namespace não se aplica ao subagenteNamespace afeta invocação de skill; o sintoma descrito é de sobrescrita por definição local.
claude --plugin-dir ./wayon-sap, que falha se houver erro de estruturaCarrega o plugin para teste, mas não é o validador — ele não emite relatório de validação.
claude plugin validate ./wayon-sapCorreto, e --strict faz aviso ser tratado como erro.
/reload-plugins, que reporta erros ao recarregarRecarrega os componentes na sessão; não é a validação prévia à publicação.
hooks/hooks.json está bem formado e que o plugin aparece instaladoConfirma que está configurado, não que funciona — hook se prova na execução.
claude plugin validate, que executa os hooks em modo de testeA validação confere estrutura e metadados; ela não dispara os hooks.
exit 2Correto. Hook parece configurado e só se prova no evento real; exit 1 passa em teste visual e falha na prática.