Esta skill deve ser usada como recurso complementar quando nenhuma skill Odoo especializada cobre o modelo: "quais campos tem stock.picking?", "campo de CNPJ no res.partner", "mostra todos os campos do registro 12345", ou precisa explorar estrutura de modelo Odoo desconhecido. Nao usar para rastrear documentos (usar rastreando-odoo), criar integracoes (usar integracao-odoo), operar financeiro (usar executando-odoo-financeiro), ou IDs fixos ja documentados (ler IDS_FIXOS.md via Read). NAO USAR QUANDO: - Rastrear fluxo de NF/PO/SO → usar **rastreando-odoo** - Criar pagamento/reconciliar extrato → usar **executando-odoo-financeiro** - Split/consolidar PO → usar **conciliando-odoo-po** - Validar match NF x PO → usar **validacao-nf-po** - Recebimento fisico (lotes/quality check) → usar **recebimento-fisico-odoo** - Exportar razao geral → usar **razao-geral-odoo** - Criar nova integracao → usar **integracao-odoo**
| Situacao | Skill Correta | Por que? |
|---|---|---|
| Rastrear fluxo NF/PO/SO | rastreando-odoo | Rastreamento usa modelos ja mapeados |
| Validar match NF x PO | validacao-nf-po | Fase 2, dominio especifico |
| Split/consolidar PO | conciliando-odoo-po | Fase 3, operacao de PO |
| Recebimento fisico (lotes/quality check) | recebimento-fisico-odoo | Fase 4, armazem |
| Pagamentos/extratos/reconciliacao | executando-odoo-financeiro | Financeiro |
| Exportar razao geral | razao-geral-odoo | Relatorio contabil |
| Criar integracao (service/route) | integracao-odoo | Desenvolvimento |
Skill de ULTIMO RECURSO para descoberta de campos e estrutura de modelos Odoo.
| Se a pergunta menciona... | Operacao | Flag |
|---|---|---|
| Listar campos de modelo | Listar todos os campos | --listar-campos |
| Buscar campo por nome | Buscar em nomes/descricoes | --buscar-campo TERMO |
| Ver valores de registro | Inspecionar registro | --inspecionar ID |
| Consulta com filtro | Consulta generica | --filtro '[JSON]' |
--listar-campos primeiro para mapear estrutura--buscar-campo com termo (ex: "barcode", "cnpj")--inspecionar ID para ver todos os campos de um registro--filtro + --campos + --limit--json 2>/dev/null para capturar output limpo (stderr tem mensagens de diagnostico)l10n_br_cnpj, NAO dizer cnpj ou cnpj_cpfsucesso=false, reportar o erro EXATAMENTE como retornado, NAO inventar dadoscnpj quando o campo e l10n_br_cnpj)source .venv/bin/activate && \
python .claude/skills/descobrindo-odoo-estrutura/scripts/descobrindo.py [opcoes] --json 2>/dev/null
IMPORTANTE: SEMPRE usar
--json 2>/dev/nullpara capturar output parseavel. O stderr contem mensagens de diagnostico do PostgreSQL/Flask que poluem o output.
| Operacao | Flag | Descricao | Exemplo |
|---|---|---|---|
| Listar campos | --listar-campos | Lista todos os campos do modelo | --modelo res.partner --listar-campos |
| Buscar campo | --buscar-campo | Busca campo por nome/descricao | --modelo res.partner --buscar-campo cnpj |
| Inspecionar | --inspecionar | Mostra todos os campos de um registro | --modelo res.partner --inspecionar 123 |
| Consulta generica | --filtro | Consulta com filtro JSON | --modelo res.partner --filtro '[["name","ilike","teste"]]' |
| Parametro | Obrigatorio | Descricao |
|---|---|---|
--modelo | Sim | Nome do modelo Odoo (ex: res.partner, account.move) |
--listar-campos | Nao | Lista todos os campos do modelo |
--buscar-campo | Nao | Termo para buscar nos nomes/descricoes dos campos |
--inspecionar | Nao | ID do registro para inspecionar |
--filtro | Nao | Filtro em formato JSON |
--campos | Nao | Campos a retornar (JSON array, ex: '["id","name"]'), usado com --filtro. NAO usar CSV |
--limit | Nao | Limite de resultados (padrao: 10) |
--json | Nao | Saida em formato JSON |
python .../descobrindo.py --modelo l10n_br_ciel_it_account.dfe --listar-campos --json 2>/dev/null
python .../descobrindo.py --modelo res.partner --buscar-campo cnpj --json 2>/dev/null
python .../descobrindo.py --modelo res.partner --inspecionar 123 --json 2>/dev/null
python .../descobrindo.py \
--modelo res.partner \
--filtro '[["vat","ilike","93209765"]]' \
--campos '["id","name","vat"]' \
--limit 5 --json 2>/dev/null
Situacao: "Qual o campo que guarda o codigo de barras do produto?"
# Passo 1: Buscar campos relacionados a "barcode" no modelo product.product
source .venv/bin/activate && \
python .claude/skills/descobrindo-odoo-estrutura/scripts/descobrindo.py \
--modelo product.product \
--buscar-campo barcode
# Resultado esperado: Lista campos como barcode, barcode_ids, etc.
Acao apos descoberta: Documentar em .claude/references/odoo/MODELOS_CAMPOS.md se for campo Odoo, ou .claude/references/modelos/REGRAS_MODELOS.md se for regra/gotcha de campo local. Para campos, a fonte de verdade sao os schemas auto-gerados em .claude/skills/consultando-sql/schemas/tables/{tabela}.json.
Situacao: "Qual o valor do campo X no registro Y?"
NOTA: Para RASTREAR documentos (NF, PO, SO), use a skill
rastreando-odooem vez desta.
# Inspecionar TODOS os campos de um registro especifico
source .venv/bin/activate && \
python .claude/skills/descobrindo-odoo-estrutura/scripts/descobrindo.py \
--modelo res.partner \
--inspecionar 12345
Resultado: Ver todos os valores de campos do registro para debug.
Situacao: "Preciso criar integracao com modelo stock.picking (movimentacao de estoque)"
source .venv/bin/activate
# Passo 1: Listar TODOS os campos do modelo
python .claude/skills/descobrindo-odoo-estrutura/scripts/descobrindo.py \
--modelo stock.picking \
--listar-campos \
--json 2>/dev/null > /tmp/stock_picking_campos.json
# Passo 2: Buscar campos especificos de interesse
python .claude/skills/descobrindo-odoo-estrutura/scripts/descobrindo.py \
--modelo stock.picking \
--buscar-campo partner --json 2>/dev/null
# Passo 3: Pegar um registro de exemplo (primeiro buscar IDs, depois inspecionar)
python .claude/skills/descobrindo-odoo-estrutura/scripts/descobrindo.py \
--modelo stock.picking \
--filtro '[["state","=","done"]]' \
--campos '["id","name","origin"]' \
--limit 1 --json 2>/dev/null
# Passo 4: Inspecionar o registro encontrado (usa ID do passo anterior)
python .claude/skills/descobrindo-odoo-estrutura/scripts/descobrindo.py \
--modelo stock.picking \
--inspecionar 12345 --json 2>/dev/null
NOTA:
--filtroe--inspecionarsao MUTUAMENTE EXCLUSIVOS. Para ver detalhes de um registro, primeiro busque IDs com--filtro, depois use--inspecionar ID.
Proximo passo: Usar skill integracao-odoo para criar o Service com os campos descobertos.
Situacao: Script retorna sucesso=false com mensagem de erro
{
"sucesso": false,
"modelo": "ficticio.nao.existe",
"total": 0,
"campos": [],
"erro": "<Fault 2: 'O objeto ficticio.nao.existe não existe'>"
}
Acao: Reportar o erro EXATAMENTE como retornado. NAO inventar campos para modelo inexistente.
| Modelo | Descricao | Skill Relacionada |
|---|---|---|
l10n_br_ciel_it_account.dfe | Documentos Fiscais | rastreando-odoo |
l10n_br_ciel_it_account.dfe.line | Linhas dos DFE | rastreando-odoo |
res.partner | Parceiros (clientes, fornecedores) | rastreando-odoo |
account.move | Faturas/Lancamentos | rastreando-odoo |
account.move.line | Linhas de fatura | rastreando-odoo |
purchase.order | Pedidos de compra | rastreando-odoo |
sale.order | Pedidos de venda | rastreando-odoo |
product.product | Produtos | - |
Usuario pergunta sobre dado desconhecido
│
▼
Agent verifica: modelo/campo conhecido?
│
├── SIM → Usa rastreando-odoo para consultar fluxos
│
└── NAO → Usa esta skill para descobrir
│
▼
descobrindo.py --modelo X --listar-campos
│
▼
Retorna informacao ao usuario
| Skill | Uso |
|---|---|
| rastreando-odoo | Consultas e rastreamento de fluxos documentais (NF, PO, SO, titulos) |
| integracao-odoo | Desenvolvimento de novas integracoes |
| gerindo-expedicao | Consultas de carteira, separacoes e estoque |