Claude-skill-registry gerindo-expedicao

Consulta e opera dados logisticos da Nacom Goya. Consulta pedidos, estoque, disponibilidade, lead time. Cria separacoes. Resolve entidades (pedido, produto, cliente, grupo). Use para perguntas como 'tem pedido do Atacadao?', 'quanto tem de palmito?', 'quando fica disponivel?', 'crie separacao do VCD123'.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/gerindo-expedicao" ~/.claude/skills/majiayu000-claude-skill-registry-gerindo-expedicao && rm -rf "$T"
manifest: skills/data/gerindo-expedicao/SKILL.md
source content

Gerindo Expedicao

Skill para consultas e operacoes logisticas da Nacom Goya.


Indice

  1. Quando Usar Esta Skill
  2. DECISION TREE - Qual Script Usar?
  3. Scripts Disponiveis
  4. Fluxo de Criacao de Separacao
  5. Referencias (tables, business, glossary, synonyms, products, examples)

Quando Usar Esta Skill

USE para:

  • Consultas de pedidos: "tem pedido do Atacadao?", "pedido VCD123 esta em separacao?"
  • Consultas de estoque: "quanto tem de palmito?", "chegou cogumelo?"
  • Analise de disponibilidade: "quando VCD123 fica disponivel?", "o que vai dar falta?"
  • Calculo de prazo: "se embarcar amanha, quando chega?"
  • Criacao de separacao: "crie separacao do VCD123 pra amanha"
  • Resolucao de entidades: identificar pedido, produto, cliente por termos parciais

NAO USE para:

  • Analise COMPLETA da carteira com decisoes (use o Agent
    analista-carteira
    )
  • Comunicacao com PCP ou Comercial (use o Agent)
  • Decisoes de priorizacao P1-P7 (use o Agent)

REGRAS CRITICAS (NUNCA VIOLAR)

<regras_criticas>

1. GUARDRAIL ANTI-ALUCINACAO

PROIBIDO criar, calcular ou inferir dados que NAO foram retornados pelo script.

PERMITIDOPROIBIDO
Mostrar dados retornados pelo scriptInventar "cobertura de X dias" sem calculo
Formatar/agrupar dados existentesCriar campos que nao existem no JSON
Resumir informacoes do JSONEstimar valores sem base no script

Se precisar de dado que nao veio no script: EXECUTE o script com flag adequado ou PERGUNTE ao usuario.

2. REGRA DE FALLBACK (NUNCA TRAVAR)

Se um script falhar ou retornar erro: SEMPRE responda ao usuario.

SituacaoAcao
Script retornou erroExplicar o erro e sugerir alternativa
Parametro nao suportadoUsar parametros disponiveis ou perguntar
Entidade nao encontradaInformar "nao encontrei X, voce quis dizer Y?"
Timeout/falha tecnica"Houve um problema ao consultar. Posso tentar de outra forma?"

NUNCA: Ficar em silencio, travar, ou tentar criar scripts customizados.

3. SIMULAR ANTES DE EXECUTAR (ACOES)

Para QUALQUER acao que modifica dados (criar separacao):

  1. Executar SEM --executar (simular)
  2. Mostrar resultado ao usuario
  3. AGUARDAR confirmacao explicita
  4. So entao executar COM --executar

</regras_criticas>


DECISION TREE - Qual Script Usar?

<decision_tree> SEMPRE consulte esta secao ANTES de executar qualquer script. A escolha correta evita resultados errados e retrabalho. </decision_tree>

Mapeamento Rapido

<mapeamento>
Se a pergunta menciona...Use este scriptCom estes parametros
PRODUTO + CLIENTE/GRUPO ("quanto de X pro Y?")
consultando_situacao_pedidos.py
--grupo Y --produto X
ou
--cliente Y --produto X
Pedidos de um grupo ("tem pedido do atacadao?")
consultando_situacao_pedidos.py
--grupo atacadao
Pedidos de um cliente ("tem pedido do Carrefour?")
consultando_situacao_pedidos.py
--cliente Carrefour
Pedidos atrasados
consultando_situacao_pedidos.py
--atrasados
Estoque de produto ("quanto tem de X?")
consultando_produtos_estoque.py
--produto X --completo
Entradas recentes ("chegou X?")
consultando_produtos_estoque.py
--produto X --entradas
Ruptura/falta ("vai faltar X?")
consultando_produtos_estoque.py
--ruptura --dias 7
Quando pedido fica disponivel
analisando_disponibilidade_estoque.py
--pedido VCD123
Disponibilidade de grupo
analisando_disponibilidade_estoque.py
--grupo atacadao --completude
Prazo de entrega ("quando chega?")
calculando_leadtime_entrega.py
--pedido X --data-embarque Y
Criar separacao
criando_separacao_pedidos.py
--pedido X --expedicao Y
(SEM --executar primeiro!)
Programacao de producao
consultando_programacao_producao.py
--listar --dias 7
</mapeamento>

Regras de Decisao (em ordem de prioridade)

<regras_decisao>

  1. Se pergunta tem PRODUTO + CLIENTE/GRUPO juntos: → Use

    consultando_situacao_pedidos.py --grupo X --produto Y
    ou
    --cliente X --produto Y
    → Exemplo: "quantas caixas de ketchup tem pro atacadao?" →
    --grupo atacadao --produto ketchup

  2. Se pergunta e sobre PEDIDOS de um cliente/grupo (sem produto): → Use

    consultando_situacao_pedidos.py --grupo X
    ou
    --cliente X
    → Exemplo: "tem pedido do assai?" →
    --grupo assai

  3. Se pergunta e sobre ESTOQUE de produto (sem cliente): → Use

    consultando_produtos_estoque.py --produto X --completo
    → Exemplo: "quanto tem de palmito?" →
    --produto palmito --completo

  4. Se pergunta e sobre DISPONIBILIDADE de pedido: → Use

    analisando_disponibilidade_estoque.py --pedido X
    → Exemplo: "quando VCD123 fica disponivel?" →
    --pedido VCD123

  5. Se pergunta e sobre PRAZO de entrega: → Use

    calculando_leadtime_entrega.py
    → Exemplo: "se embarcar amanha, quando chega?" →
    --pedido X --data-embarque amanha

  6. Se for ACAO de criar separacao: → Use

    criando_separacao_pedidos.py
    (SEMPRE simular antes de executar!) → Exemplo: "crie separacao do VCD123" →
    --pedido VCD123 --expedicao [data]
    (SEM --executar)

</regras_decisao>

Como Decidir (Raciocinio Obrigatorio)

<instrucao_raciocinio> ANTES de escolher qualquer script, faca este raciocinio mentalmente:

PASSO 1 - IDENTIFICAR: O que o usuario quer saber?

  • E sobre PEDIDOS? (quem comprou, quanto, quando entregar)
  • E sobre ESTOQUE? (tem, vai faltar, chegou, quanto sobra)
  • E sobre DISPONIBILIDADE? (quando pedido fica pronto)
  • E sobre PRAZO? (quando chega se embarcar dia X)
  • E uma ACAO? (criar separacao)

PASSO 2 - VERIFICAR: Tem cliente/grupo mencionado?

  • SIM + produto →
    consultando_situacao_pedidos --grupo/--cliente + --produto
  • SIM sem produto →
    consultando_situacao_pedidos --grupo/--cliente
  • NAO → provavelmente
    consultando_produtos_estoque

PASSO 3 - CONFIRMAR: A escolha faz sentido?

  • Se escolhi ESTOQUE mas usuario perguntou "pro atacadao" → ERRADO (use PEDIDOS)
  • Se escolhi PEDIDOS mas usuario perguntou "quanto tem em estoque" → ERRADO (use ESTOQUE)
  • Se escolhi DISPONIBILIDADE mas usuario perguntou "quando chega" → ERRADO (use LEADTIME)

PASSO 4 - PERGUNTAR: Se ainda em duvida apos os 3 passos → pergunte ao usuario! </instrucao_raciocinio>


Leitura de References (Sob Demanda)

<filosofia_50_50> FILOSOFIA: 50% Regra / 50% IA

Esta skill implementa um equilibrio entre scripts e IA:

SCRIPTS fazem:

  • Resolver entidades (cliente, grupo, produto)
  • Buscar dados no banco
  • Retornar TODOS os candidatos (sem truncar)

IA decide:

  • Como agrupar/apresentar resultados
  • Se precisa perguntar algo ao usuario
  • Quando usar references para contexto </filosofia_50_50>

<leitura_references> ANTES de executar scripts, o agente DEVE ler os references relevantes baseado na pergunta:

Gatilho na PerguntaReference a LerMotivo
Produto mencionado
references/products.md
Entender abreviacoes (CI, AZ VF, BD)
Cliente/Grupo
references/business.md
Prefixos CNPJ, constantes
Termo desconhecido
references/glossary.md
"matar", "ruptura", "FOB"
Variacao de escrita
references/synonyms.md
ketchup→catchup
Comunicar PCP/Comercial
references/communication.md
Templates de mensagem
Duvida de script
references/examples.md
Validar escolha
</leitura_references>

<exemplo_fluxo_50_50> Exemplo de Fluxo Completo

Pergunta: "quanto tem de palmito pro atacadao 183"

  1. IA le
    references/glossary.md
    → "pendente" = qtd_saldo > 0
  2. IA le
    references/business.md
    → atacadao = grupo com prefixos CNPJ
  3. IA executa:
    python consultando_situacao_pedidos.py --grupo atacadao --produto palmito
  4. Script encontra 18 candidatos de palmito
  5. Script busca TODOS na carteira do cliente (nao para por multiplos)
  6. Script retorna 2 SKUs com saldo: Tolete 15x300g (2.592 un), Rodela 15x300g (1.053 un)
  7. IA apresenta tabela consolidada ao usuario

IMPORTANTE: Quando script retorna

ia_decide: true
, a IA DEVE processar os dados e decidir a melhor forma de apresentar. </exemplo_fluxo_50_50>


Termos Ambiguos - PERGUNTE antes de agir!

<termos_ambiguos>

Se o usuario usar estes termos, PARE e PERGUNTE antes de executar.

"programacao de entrega" (CRITICO - 4 interpretacoes)

OpcaoSignificadoCampoTabela
AData que cliente solicitou
data_entrega_pedido
CarteiraPrincipal
BData que vamos expedir
expedicao
Separacao
CData que vai chegar no cliente
agendamento
Separacao
DProtocolo de agendamento
protocolo
Separacao

PERGUNTAR: "Voce quer saber: A) data que o cliente solicitou, B) data de expedicao programada, C) data de chegada no cliente, ou D) protocolo de agendamento?"

"quantidade pendente"

OpcaoSignificadoFonte
CarteiraAinda nao separadoCarteiraPrincipal
SeparacaoSeparado mas nao faturadoSeparacao (sincronizado_nf=False)
TotalAmbosCarteira + Separacao

ACAO PADRAO: Mostrar AMBOS e explicar: "Na carteira: X un | Em separacao: Y un | Total pendente: Z un"

"itens" vs "unidades"

NUNCA usar "itens" sozinho. SEMPRE especificar:

  • "X linhas de produto" (SKUs diferentes)
  • "X unidades" ou "X caixas" (quantidade)

Multiplas lojas do mesmo grupo

Se resultado tiver mais de 1 loja do mesmo grupo (ex: Atacadao): PERGUNTAR: "Encontrei pedidos em X lojas do [grupo]. Qual loja especificamente, ou quer ver todas?"

Outros termos ambiguos

TermoPossibilidadesO que PERGUNTAR
"quando fica disponivel?"Pedido ou produto?"Voce quer saber quando um PEDIDO fica disponivel ou quando um PRODUTO estara em estoque?"
"situacao"De que?"Situacao de qual pedido ou produto?"
"crie separacao"Data faltando"Para qual data de expedicao?"

</termos_ambiguos>

Exemplos de Boas e Mas Escolhas

VER references/examples.md para exemplos detalhados de uso correto e anti-patterns.

Resumo rapido:

  • PRODUTO + CLIENTE →
    consultando_situacao_pedidos --grupo/--cliente + --produto
  • So ESTOQUE (sem cliente) →
    consultando_produtos_estoque --produto X --completo
  • QUANDO DISPONIVEL →
    analisando_disponibilidade_estoque --pedido X
  • QUANDO CHEGA (prazo) →
    calculando_leadtime_entrega --pedido X --data-embarque Y
  • CRIAR SEPARACAO →
    criando_separacao_pedidos
    (SEM --executar primeiro!)

Scripts Disponiveis

Ambiente Virtual

Sempre ativar antes de executar:

source .venv/bin/activate

1. analisando_disponibilidade_estoque.py

Proposito: Analisa disponibilidade de estoque para pedidos ou grupos de clientes.

Queries cobertas: Q1, Q2, Q3, Q4, Q5, Q6, Q9, Q11, Q12

source .venv/bin/activate && \
python .claude/skills/gerindo-expedicao/scripts/analisando_disponibilidade_estoque.py [parametros]
ParametroDescricaoExemplo
--pedido
Numero do pedido ou "grupo termo"
--pedido VCD123
ou
--pedido "atacadao 183"
--grupo
Grupo empresarial
--grupo atacadao
,
--grupo assai
,
--grupo tenda
--loja
Identificador da loja (em raz_social_red)
--loja 183
--uf
Filtrar por UF
--uf SP
--data
Data para analise (hoje, amanha, dd/mm, YYYY-MM-DD)
--data amanha
--sem-agendamento
Apenas pedidos sem exigencia de agendamentoflag
--sugerir-adiamento
Sugerir pedidos para adiar (liberar estoque)flag
--diagnosticar-origem
Distinguir falta absoluta vs relativaflag
--completude
Calcular % faturado vs pendenteflag
--atrasados
Analisar pedidos com expedicao vencidaflag
--diagnosticar-causa
Detalhar causa do atrasoflag
--ranking-impacto
Ranking de pedidos que mais travam carteiraflag
--limit
Limite de resultados (default: 100)
--limit 20

2. consultando_situacao_pedidos.py

Proposito: Consulta pedidos por diversos filtros e perspectivas.

Queries cobertas: Q8, Q10, Q14, Q16, Q19

source .venv/bin/activate && \
python .claude/skills/gerindo-expedicao/scripts/consultando_situacao_pedidos.py [parametros]
ParametroDescricaoExemplo
--pedido
Numero do pedido ou termo de busca
--pedido VCD123
--grupo
Grupo empresarial (atacadao, assai, tenda)
--grupo atacadao
--cliente
NOVO CNPJ ou nome parcial do cliente
--cliente Carrefour
,
--cliente "45.543.915"
--produto
Filtrar por produto (combina com --grupo ou --cliente)
--produto palmito
--atrasados
Listar pedidos atrasadosflag
--verificar-bonificacao
Verificar bonificacoes faltandoflag
--status
Mostrar status detalhadoflag
--consolidar-com
Buscar pedidos para consolidar
--consolidar-com "assai 123"
--ate-data
Data limite de expedicao
--ate-data amanha
,
--ate-data 15/12
--em-separacao
Buscar em Separacao (nao CarteiraPrincipal)flag
--limit
Limite de resultados (default: 100)
--limit 20

Combinacoes suportadas:

  • --grupo atacadao --produto ketchup
    → Pedidos do Atacadao com ketchup
  • --cliente Carrefour --produto palmito
    → Pedidos do Carrefour com palmito
  • --cliente "45.543.915"
    → Busca por CNPJ

3. consultando_produtos_estoque.py

Proposito: Consulta estoque atual, movimentacoes, pendencias, projecoes e SITUACAO COMPLETA.

Queries cobertas: Q13, Q17, Q18, Q20 + SITUACAO COMPLETA

source .venv/bin/activate && \
python .claude/skills/gerindo-expedicao/scripts/consultando_produtos_estoque.py [parametros]
ParametroDescricaoExemplo
--produto
Nome ou termo do produto
--produto palmito
,
--produto "az verde"
--completo
SITUACAO COMPLETA (estoque, separacoes, demanda, producao, projecao)flag
--entradas
Mostrar entradas recentes (qtd > 0)flag
--saidas
Mostrar saidas recentes (qtd < 0)flag
--pendente
Quantidade pendente de embarque + lista pedidosflag
--sobra
Calcular sobra de estoque apos demandaflag
--ruptura
Previsao de rupturasflag
--dias
Horizonte de projecao em dias (default: 7)
--dias 14
--limit
Limite de resultados (default: 100)
--limit 50
--limit-entradas
Limite de movimentacoes por produto (default: 100)
--limit-entradas 20

Opcao --completo retorna:

  • Estoque atual e menor estoque nos proximos 7 dias
  • Separacoes por data de expedicao (detalhado com pedidos)
  • Demanda total (Carteira bruta/liquida + Separacoes)
  • Programacao de producao (proximos 14 dias)
  • Projecao dia a dia (estoque projetado)
  • Indicadores: sobra, cobertura em dias, % disponivel, previsao de ruptura

4. calculando_leadtime_entrega.py

Proposito: Calcula data de entrega OU data de expedicao sugerida (calculo reverso).

Queries cobertas: Q7 + CALCULO REVERSO

source .venv/bin/activate && \
python .claude/skills/gerindo-expedicao/scripts/calculando_leadtime_entrega.py [parametros]
ParametroDescricaoExemplo
--pedido
Numero do pedido ou termo de busca
--pedido VCD123
,
--pedido "atacadao 183"
--cidade
Cidade de destino (alternativa ao pedido)
--cidade "Sao Paulo"
--uf
UF de destino (requerido se usar --cidade)
--uf SP
--data-embarque
Data de embarque (calcula data de entrega)
--data-embarque amanha
--data-entrega
NOVO Data de entrega desejada (calcula data de embarque)
--data-entrega 25/12
--limit
Limite de opcoes de transportadora (default: 10)
--limit 3

Modos de operacao:

ModoParametroDescricao
Previsao de entrega
--data-embarque
Se embarcar dia X, quando chega?
Sugestao de embarque
--data-entrega
Para chegar dia Y, quando embarcar?
Auto (usa pedido)Apenas
--pedido
Usa data_entrega_pedido para calculo reverso

5. criando_separacao_pedidos.py

Proposito: Cria separacoes de pedidos via linguagem natural.

IMPORTANTE: Sempre executar primeiro SEM

--executar
para simular!

source .venv/bin/activate && \
python .claude/skills/gerindo-expedicao/scripts/criando_separacao_pedidos.py [parametros]
ParametroDescricaoExemplo
--pedido
Numero do pedido (OBRIGATORIO)
--pedido VCD123
--expedicao
Data de expedicao (OBRIGATORIO)
--expedicao amanha
,
--expedicao 20/12
--tipo
Tipo de separacao
--tipo completa
,
--tipo parcial
--pallets
Quantidade de pallets desejada
--pallets 28
--pallets-inteiros
Forcar pallets inteiros por itemflag
--apenas-estoque
Separar apenas o que tem em estoqueflag
--excluir-produtos
JSON array de produtos a excluir
--excluir-produtos '["KETCHUP","MOSTARDA"]'
--agendamento
Data de agendamento
--agendamento 22/12
--protocolo
Protocolo de agendamento
--protocolo AG12345
--agendamento-confirmado
Marcar agendamento como confirmadoflag
--executar
Efetivamente criar (sem isso, apenas simula)flag

Modos de operacao:

ModoDescricao
Sem
--executar
SIMULA e mostra o que seria criado
Com
--executar
CRIA efetivamente a separacao

Tipos de separacao:

TipoParametrosDescricao
Completa
--tipo completa
Todos os itens com qtd total
Parcial
--tipo parcial
N itens com qtds especificas
Por pallets
--pallets N
Distribuir N pallets proporcionalmente
Pallets inteiros
--pallets N --pallets-inteiros
Cada item = pallets inteiros
Apenas estoque
--apenas-estoque
So o que tem disponivel
Excluindo produtos
--excluir-produtos '[...]'
Tudo exceto lista

6. consultando_programacao_producao.py

Proposito: Lista programacao de producao e simula alteracoes para resolver ruptura.

Queries cobertas: Q15 + LISTAGEM COMPLETA

source .venv/bin/activate && \
python .claude/skills/gerindo-expedicao/scripts/consultando_programacao_producao.py [parametros]
ParametroDescricaoExemplo
--listar
NOVO Lista TODA a programacao de producaoflag
--dias
Horizonte em dias (default: 14)
--dias 7
--por-dia
Mostrar detalhes agrupados por diaflag
--por-linha
Mostrar detalhes agrupados por linhaflag
--linha
Filtrar por linha de producao
--linha "Linha A"
--produto
Produto em ruptura (para reprogramacao)
--produto "VF pouch 150"

Modos de operacao:

ModoParametroDescricao
Listagem
--listar
Toda a programacao dos proximos N dias
Reprogramacao
--produto
Opcoes para resolver ruptura

Exemplo de listagem completa:

python .claude/skills/gerindo-expedicao/scripts/consultando_programacao_producao.py --listar --dias 7 --por-dia

7. resolver_entidades.py

Proposito: Modulo utilitario para resolver entidades do dominio.

Uso interno pelos outros scripts. Resolve:

  • Pedidos por numero parcial ou termo
  • Produtos por nome ou abreviacoes
  • Grupos empresariais por nome
  • Cidades por nome (normalizado)

Fluxo de Criacao de Separacao

Checklist Obrigatorio

CampoObrigatorioComo Obter
PedidoSIMUsuario informa
Data expedicaoSIMUsuario informa
Tipo (completa/parcial)SIMPerguntar se nao especificado
AgendamentoCONDICIONALVerificar ContatoAgendamento pelo CNPJ
ProtocoloCONDICIONALSe exige agendamento

Sequencia

  1. SIMULAR primeiro (sem --executar)
  2. Verificar alertas de estoque
  3. Mostrar resultado ao usuario
  4. Solicitar confirmacao
  5. EXECUTAR (com --executar)

Nivel de Detalhes (Progressive Disclosure)

  1. Resposta inicial: Resumo com 3-5 itens principais
  2. Se pedir mais: Mostrar mais itens do mesmo JSON
  3. Se pedir "todos": Lista completa

Referencias

<progressive_disclosure> Os arquivos em

references/
sao carregados sob demanda. NAO leia todos de uma vez - consulte apenas quando necessario. </progressive_disclosure>

Gatilhos para Consulta de References

Se pergunta menciona...ConsultarMotivo
PRIORIZACAO, qual cliente primeiro
context.md
→ Top Clientes
Atacadao=50%, Assai=13%
ATRASO, agenda, gargalo
context.md
→ Gargalos
Agendas sao o maior gargalo
PARCIAL vs AGUARDAR, decisao
context.md
→ Contexto Estrategico
Fundos limitam estoques
"Chegou?", entradas
glossary.md
→ Usar --entradas
Mapeamento de acao
Abreviacao (CI, AZ VF, BD)
products.md
Resolver abreviacao
Termo desconhecido (matar, FOB)
glossary.md
Entender jargao
Cliente importante (Atacadao, Assai)
context.md
→ SLAs
SLA 45 dias Atacadao

Tabela de Referencias

ArquivoQuando Consultar
business.mdConstantes, limites veiculos, formulas de calculo
glossary.mdTermos do dominio (ruptura, matar, FOB, RED, "Chegou?")
synonyms.mdTermos criticos nao obvios (c car, RED, OP)
products.mdAbreviacoes de produto (CI, AZ VF, BD, IND)
examples.mdExemplos de uso e anti-patterns
context.mdContexto estrategico, clientes top, gargalos, SLAs
communication.mdTemplates de mensagem para PCP ou Comercial

NOTA: Para schemas de tabelas, consulte

CLAUDE.md
na raiz do projeto (secao "MODELOS CRITICOS").

Grupos Empresariais:

--grupo atacadao
,
--grupo assai
,
--grupo tenda