Skills

Deskcomm Doutrina

Doutrina de código do DeskcommCRM, multi-tenancy com RLS, tripla de migration...

Install

npx skills add melgarafael/DeskcommCRM --skill deskcomm-doutrina -g -a claude-code -y
Category
AI and agents
Updated
3d ago
License
MIT
Context cost
Lightabout 878 tokens
Runs scripts
No, instructions only

What it does

Doutrina de código do DeskcommCRM, multi-tenancy com RLS, tripla de migration, restrição de canal, eixo self-host. USE SEMPRE ao escrever ou revisar código neste repositório, e antes de responder pergunta sobre convenção, schema, tenancy, WhatsApp/WAHA, instalador ou Definition of Done. É o ponteiro para a doutrina viva do repo; não substitui ler o CLAUDE.md.

DeskcommCRM, doutrina de código

A fonte da verdade é o CLAUDE.md da raiz, lido do origin/main e não de um resumo. Esta skill existe para te fazer abri-lo na hora certa e para carregar as três regras que mais custam caro quando esquecidas.

1. Leia antes de escrever

arquivoquando
CLAUDE.mdsempre, antes de qualquer código, contém a Definition of Done, que muda
VISION.mdantes de decidir escopo, ou de dizer não a uma feature
docs/doctrine/ao mexer em canal, agente, ou peça que se conecte a outra
ARCHITECTURE.mdpara a visão de uma página

Não confie em resumo de doutrina, nem neste arquivo. A Definition of Done já foi de 13 para 14 itens; cópia congelada ensina a regra de ontem. Abra o CLAUDE.md.

2. As três que mais custam

Multi-tenancy. Toda tabela tenant-aware leva organization_id uuid not null e RLS com policy tenant_isolation_<tabela>_all via fn_user_org_ids(). Service role bypassa RLS, handler que o usa filtra organization_id manualmente, resolvido de fonte confiável (cookie, JWT, segredo de webhook, token de path), nunca do body. No backend é sempre getUser(), nunca getSession().

Schema sai em tripla. Arquivo em supabase/migrations/, apêndice idempotente no supabase/baseline.sql, e linha -- manifest: <o quê e por quê> no cabeçalho do .sql (o MANIFEST.md é histórico; não recebe linha nova). O kit self-host aplica só o baseline, o que não chega lá não chega em quem instalou numa VPS, que é o cliente que paga. Constraint nova exige corrigir os dados antes, senão o update.sh do clone quebra.

Nenhuma feature nomeia um provider. Provider vive em lib/channels/. pnpm lint:channels é catraca com lista de dívida: arquivo novo sujo reprova, e arquivo que ficou limpo e não saiu da lista também reprova.

3. O eixo que não é técnico

Read the whole SKILL.md on GitHub

More in AI and agents