---
name: brain
description: Quadro de cards e base de conhecimento do time da Unicitta (brain.unicitta.com.br). Use para ver o que está pendente para alguém, criar, mover, editar e buscar cards, e para ler ou corrigir a base de conhecimento. Acione quando a pessoa digitar /brain ou pedir algo sobre "o brain", "o quadro", "meus cards", "a base de conhecimento".
---

# brain

Quadro kanban e base de conhecimento do time. Tudo por HTTP; use `curl` no Bash.

## Antes de qualquer chamada

- Base: `https://brain.unicitta.com.br`
- Token: o arquivo `~/.brain-token`, gravado pelo instalador.

O shell não guarda estado entre chamadas, então **cada comando é
autossuficiente** — o token é lido na hora:

```bash
curl -fsS -H "Authorization: Bearer $(cat ~/.brain-token)" https://brain.unicitta.com.br/api/quadro
```

Se `~/.brain-token` não existir, não invente token: peça o da pessoa (aba
**API** em https://brain.unicitta.com.br) e instale com
`curl -fsSL https://brain.unicitta.com.br/skill.sh | BRAIN_TOKEN=<token> bash`.

## Quem é a pessoa

`GET /api/eu` devolve `{"usuario":{"id":1,"login":"lucas","nome":"Lucas"}}`.
Você precisa do `id` para saber o que é "meu". Chame uma vez e reaproveite
dentro da conversa.

## Colunas

`backlog` · `to-do` · `on-going` · `review` · `done` — exatamente assim:
minúsculas e com hífen. Qualquer outro valor é recusado.

## Regras (elas valem mais que a velocidade)

1. **Nunca invente id.** O id é o que a API devolveu. Sem retorno em mãos, não
   cite número — e sempre diga o id do card que você mexeu, é por ele que a
   pessoa acha o card na tela.
2. **Não mova sem pedido explícito.** Mover é dizer que o trabalho andou, e
   isso quem sabe é quem trabalhou. "Terminei o 14" É um pedido explícito.
3. **Antes de criar, busque.** `GET /api/cards?texto=...`. Se já existe algo
   parecido, mostre e pergunte antes de criar outro.
4. **Nunca diga que fez sem ter chamado a API.** Se o `curl` falhou, diga que
   falhou. A tela mostra o que de fato aconteceu.
5. **Não apague nada da base de conhecimento.** Para o que não vale mais, use
   `obsoleto: true`. Apagar é só de humano, pela tela.
6. Responda curto. Lista de cards é lista, não relatório.

## Receitas

### "tem alguma task pendente pra mim?" · "o que tem pra mim?"

```bash
curl -fsS -H "Authorization: Bearer $(cat ~/.brain-token)" https://brain.unicitta.com.br/api/eu
curl -fsS -H "Authorization: Bearer $(cat ~/.brain-token)" https://brain.unicitta.com.br/api/quadro
```

`/api/quadro` traz todas as colunas com todos os cards. Filtre por
`responsavel` igual ao seu `id`, ignore a coluna `done` e mostre agrupado por
coluna, com o `#id` na frente de cada linha. Se não houver nada, diga isso em
uma linha — não invente trabalho.

Se a pergunta for sobre outra pessoa, use o atalho:

```bash
curl -fsS -H "Authorization: Bearer $(cat ~/.brain-token)" \
  "https://brain.unicitta.com.br/api/cards?responsavel=guilherme"
```

(`responsavel` aceita o login ou o nome.)

### "cria um card ..."

```bash
curl -fsS -X POST -H "Authorization: Bearer $(cat ~/.brain-token)" \
  -H 'Content-Type: application/json' https://brain.unicitta.com.br/api/cards \
  -d '{"titulo":"Corrigir o filtro de câmeras do civitas",
       "corpo":"O que foi pedido, o que já se sabe, e como saber que ficou pronto.",
       "tags":["civitas"],"coluna":"backlog","responsavel":"lucas"}'
```

- `titulo` é o único obrigatório. Título imperativo e curto.
- `corpo` aceita markdown. Escreva o que foi pedido, o que você apurou e como
  saber que ficou pronto — nada de card gigante, ninguém lê.
- `tags`: use a tag do tenant quando o pedido cita um (`civitas`, `mobi`,
  `demonstracao`, `cor`, `sba`, `angra`, `niteroi`…). Se o pedido não cita
  tenant e isso muda o trabalho, pergunte em vez de chutar "todos".
- `responsavel` e `pedido_por` aceitam login ou nome.
- Sem `coluna`, o card nasce em `backlog`.

Devolve o card criado. **Diga o `#id`.**

### "move o #14 pra review" · "terminei o 14"

```bash
curl -fsS -X POST -H "Authorization: Bearer $(cat ~/.brain-token)" \
  -H 'Content-Type: application/json' https://brain.unicitta.com.br/api/cards/14/mover \
  -d '{"coluna":"review"}'
```

Para **"de volta pra onde tava"**: leia o campo `coluna_anterior` do card
(`GET /api/cards?id=14`) e mova para ele. Não tente lembrar pela conversa.

### "edita o #14 ..." · "põe o guilherme como responsável do 14"

```bash
curl -fsS -X PATCH -H "Authorization: Bearer $(cat ~/.brain-token)" \
  -H 'Content-Type: application/json' https://brain.unicitta.com.br/api/cards/14 \
  -d '{"responsavel":"guilherme"}'
```

Campo omitido não muda. `tags` é substituição da lista inteira — para somar uma
tag, leia as atuais antes. Campos: `titulo`, `corpo`, `tags`, `responsavel`,
`pedido_por`.

### "acha o card do uplink" · "o que tem de civitas no quadro?"

```bash
curl -fsS -H "Authorization: Bearer $(cat ~/.brain-token)" \
  "https://brain.unicitta.com.br/api/cards?texto=uplink"
```

Filtros combináveis: `id`, `texto`, `tenant`, `coluna`, `responsavel`,
`limite`. **Número citado pela pessoa é o id**: "o card 16", "#16", "o 16" →
`?id=16`. Não procure por texto quando existe um número.

### "como tá o quadro?" · "o que fechou essa semana?" · "o que está parado?"

```bash
curl -fsS -H "Authorization: Bearer $(cat ~/.brain-token)" https://brain.unicitta.com.br/api/resumo
```

Contagem por coluna, o que está parado há dias, carga por pessoa e o que fechou
na semana.

### "o que a base diz sobre X?"

```bash
curl -fsS -H "Authorization: Bearer $(cat ~/.brain-token)" \
  "https://brain.unicitta.com.br/api/conhecimento?texto=uplink"
curl -fsS -H "Authorization: Bearer $(cat ~/.brain-token)" \
  "https://brain.unicitta.com.br/api/conhecimento/uplink-unicitta"
```

Sem parâmetro, `/api/conhecimento` devolve o **índice** (título e resumo de
cada entrada, sem corpo) — bom para saber o que existe antes de pedir o corpo.
Ao responder, **diga de qual entrada saiu a informação**: é assim que se
descobre base desatualizada. Entrada marcada `obsoleto` não vale como verdade.

### "registra na base que ..." · "corrige a entrada X"

```bash
curl -fsS -X PATCH -H "Authorization: Bearer $(cat ~/.brain-token)" \
  -H 'Content-Type: application/json' https://brain.unicitta.com.br/api/conhecimento/uplink-unicitta \
  -d '{"corpo":"texto novo inteiro"}'
```

Criar: `POST /api/conhecimento` com `{tipo,titulo,resumo,corpo,tags}`, onde
`tipo` é `tenant` | `modulo` | `termo` | `processo` | `pessoa`. Entrada do tipo
`tenant` vira tag do quadro automaticamente.

Toda alteração empilha a versão anterior — dá para desfazer pela tela. Mas se o
que a pessoa disse **contradiz** o que está na base, mostre as duas versões e
pergunte qual vale antes de escrever.

## Falhas

- `401` → token errado ou ausente. Confira `~/.brain-token`.
- `400` com `{"erro":"coluna inválida: ..."}` → use um dos cinco nomes.
- `{"erro":"card N não existe"}` → o id não existe; não tente adivinhar outro.

Sempre reporte a falha em vez de seguir como se tivesse dado certo.
