--- name: estoque-inventory description: Gerencia o inventário do mini-ERP Estoque — listar/buscar itens, criar/editar, ajustar quantidade, sinalizar estoque baixo e somar totais via a API REST local. version: 1.0.0 platforms: [linux, macos] metadata: hermes: tags: [inventory, erp, rest-api, estoque] category: business requires_toolsets: [terminal] config: - key: estoque.api_url description: URL base da API do Estoque default: http://localhost:3001 --- # Estoque — gestão de inventário Permite operar o mini-ERP **Estoque** (API Go + SQLite puro-Go via `modernc.org/sqlite`) por linguagem natural. Toda chamada à API passa pelo wrapper `scripts/estoque.sh` — **nunca monte `curl` à mão**. O script lê a env var `ESTOQUE_API_URL` (default `http://localhost:3001`) e sempre devolve JSON no stdout; erros vão para o stderr no formato `{"error":"..."}` com código de saída ≠ 0. ## Quando usar Use esta skill quando o usuário quiser consultar ou mexer no estoque: listar/buscar itens, ver detalhes, cadastrar produto, editar dados, ajustar quantidade (entrada/ saída), ver o que está com estoque baixo, ou pedir totais (itens, unidades, valor). ## Pré-requisito A API precisa estar no ar (porta 3001). Verifique com `estoque.sh health` → `{"ok":true,...}`. Se falhar, oriente o usuário a subir o servidor: `cd server && go run .` (requer Go 1.25+). ## Modelo do item `id`, `sku`, `name`, `description`, `category`, `unit` (default `un`), `cost_price`, `price`, `quantity`, `min_stock`, `created_at`, `updated_at`. Regras importantes: - `name` é **obrigatório**; `cost_price`/`price`/`quantity`/`min_stock` **não podem ser negativos**. - O `sku` é **gerado e imutável no servidor** (ex.: `FER-000001`, prefixo de 3 letras da categoria) — nunca envie `sku` em create/update. - **Estoque baixo** = `quantity <= min_stock`. ## Comandos (`scripts/estoque.sh`) | Comando | Ação | |---|---| | `health` | Healthcheck da API | | `list [busca]` | Lista itens; `busca` filtra por nome/sku/categoria | | `get ` | Detalhe de um item | | `create` | Cria item — **corpo JSON via stdin** | | `update ` | Edita item — **corpo JSON via stdin** (sem `sku`) | | `adjust ` | Soma `delta` à quantidade (negativo = saída) | | `setqty ` | Define quantidade absoluta | | `delete ` | Remove item | | `low-stock` | Itens com `quantity <= min_stock` | | `summary` | Totais: itens, unidades, valor do estoque, nº em baixo estoque | ## Exemplos ```bash # Buscar scripts/estoque.sh list parafuso # Cadastrar (SKU é gerado pelo servidor) echo '{"name":"Parafuso 4mm","category":"Ferragens","unit":"cx","cost_price":1.2,"price":2.5,"quantity":100,"min_stock":10}' \ | scripts/estoque.sh create # Entrada de 50 unidades / saída de 3 unidades scripts/estoque.sh adjust 7 50 scripts/estoque.sh adjust 7 -3 # Editar dados (mantém o SKU) echo '{"name":"Parafuso 4mm zincado","category":"Ferragens","unit":"cx","cost_price":1.3,"price":2.9,"quantity":147,"min_stock":20}' \ | scripts/estoque.sh update 7 # Visões agregadas scripts/estoque.sh low-stock scripts/estoque.sh summary ``` ## Boas práticas - Antes de `update`, faça `get ` para preservar os campos que o usuário não quer mudar (o PUT substitui todos os dados editáveis do item). - Para entrada/saída de mercadoria prefira `adjust` (relativo) a `setqty` (absoluto). - Ao criar/editar, confirme valores numéricos não-negativos; o servidor rejeita com `{"error":"..."}` em português — repasse a mensagem ao usuário. - Detalhes completos de endpoints e validação em `references/api.md`.