Files
claude-plugins/negocio/skills/saas/SKILL.md
Emanuel Almeida 9404af7ac9 feat: sync all plugins, skills, agents updates
New plugins: core-tools
New skills: auto-expense, ticket-triage, design, security-check,
  aiktop-tasks, daily-digest, imap-triage, index-update, mindmap,
  notebooklm, proc-creator, tasks-overview, validate-component,
  perfex-module, report, calendar-manager
New agents: design-critic, design-generator, design-lead,
  design-prompt-architect, design-researcher, compliance-auditor,
  metabase-analyst, gitea-integration-specialist
Updated: all plugin configs, knowledge datasets, existing skills

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 17:16:32 +00:00

537 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: saas
description: Skill especializada em arquitectura e desenvolvimento de produtos SaaS
(Software as a Service), cobrindo multi-tenancy, billing, onboarding e métricas.
author: Descomplicar® Crescimento Digital
version: 2.0.0
quality_score: 55
user_invocable: true
desk_task: null
allowed-tools: Task
---
# Skill /saas - SaaS Architecture & Strategy
Skill especializada em arquitectura e desenvolvimento de produtos SaaS (Software as a Service), cobrindo multi-tenancy, billing, onboarding e métricas.
## Sintaxe
```
/saas [operacao] [contexto]
```
**Operações:**
- `arquitectura` - Design multi-tenant, isolamento dados, escalabilidade
- `pricing` - Modelos de preços e packaging de features
- `onboarding` - Flow de activação e time-to-value
- `billing` - Integração Stripe, trial, upgrades/downgrades
- `metricas` - Dashboard MRR, churn, LTV, CAC
## Quando Usar
- Planear novo produto SaaS
- Migrar aplicação tradicional para SaaS
- Optimizar onboarding ou reduzir churn
- Implementar billing e subscriptions
- Arquitectura multi-tenant
---
## Protocolo de Execução
### 1. Discovery de Produto
**Questões chave:**
```
Modelo de negócio:
- [ ] B2B, B2C ou B2B2C?
- [ ] Self-service ou sales-led?
- [ ] PLG (product-led growth)?
Utilizadores:
- [ ] Quantos users por tenant?
- [ ] Diferentes roles/permissões?
- [ ] Colaboração entre users?
Dados:
- [ ] Volume de dados por tenant?
- [ ] Regulamentações (GDPR, HIPAA)?
- [ ] Backup e disaster recovery?
Integrações:
- [ ] APIs third-party necessárias?
- [ ] SSO/SAML enterprise?
- [ ] Webhooks para partners?
```
### 2. Arquitectura Multi-tenant
**Estratégias de Isolamento:**
```
┌─────────────────────────────────────────────────┐
│ 1. DATABASE PER TENANT (Isolamento Máximo) │
├─────────────────────────────────────────────────┤
│ Prós: Segurança total, restore independente │
│ Contras: Custo, complexidade gestão │
│ Usar quando: Enterprise, regulamentações │
│ Exemplo: AWS RDS + Aurora Serverless │
└─────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────┐
│ 2. SCHEMA PER TENANT (Equilíbrio) │
├─────────────────────────────────────────────────┤
│ Prós: Bom isolamento, gestão simplificada │
│ Contras: Limites BD (PostgreSQL ~10k schemas) │
│ Usar quando: B2B médio porte │
│ Exemplo: PostgreSQL schemas dinâmicos │
└─────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────┐
│ 3. SHARED DB + ROW-LEVEL SECURITY (Económico) │
├─────────────────────────────────────────────────┤
│ Prós: Mais barato, fácil escalar │
│ Contras: tenant_id em tudo, RLS obrigatório │
│ Usar quando: B2C, SMB self-service │
│ Exemplo: PostgreSQL RLS policies │
└─────────────────────────────────────────────────┘
```
**Implementação Row-Level Security (PostgreSQL):**
```sql
-- 1. Adicionar tenant_id a todas as tabelas
ALTER TABLE users ADD COLUMN tenant_id UUID NOT NULL;
ALTER TABLE projects ADD COLUMN tenant_id UUID NOT NULL;
ALTER TABLE documents ADD COLUMN tenant_id UUID NOT NULL;
-- 2. Activar RLS
ALTER TABLE users ENABLE ROW LEVEL SECURITY;
ALTER TABLE projects ENABLE ROW LEVEL SECURITY;
ALTER TABLE documents ENABLE ROW LEVEL SECURITY;
-- 3. Criar policy de isolamento
CREATE POLICY tenant_isolation ON users
USING (tenant_id = current_setting('app.tenant_id')::uuid);
CREATE POLICY tenant_isolation ON projects
USING (tenant_id = current_setting('app.tenant_id')::uuid);
-- 4. No início de cada request (backend)
-- SET app.tenant_id = 'uuid-do-tenant-autenticado';
```
**Checklist Segurança Multi-tenant:**
```
[ ] tenant_id em TODAS as tabelas
[ ] RLS policies activas
[ ] Indexes em tenant_id (performance)
[ ] Validação tenant_id no auth middleware
[ ] Logs de acesso cross-tenant
[ ] Testes de isolamento (tenant A não vê tenant B)
```
### 3. Modelos de Pricing
| Modelo | Descrição | Exemplo | Quando Usar |
|--------|-----------|---------|-------------|
| **Flat Rate** | Preço fixo mensal | 29€/mês | Simplicidade, previsibilidade |
| **Per Seat** | Por utilizador | 10€/user/mês | B2B, equipas |
| **Usage Based** | Pay-as-you-go | 0.01€/API call | Variação alta de uso |
| **Tiered** | Planos com limites | Free/Pro/Enterprise | Upsell natural |
| **Hybrid** | Base + usage | 20€ + 0.001€/email | Receita previsível + escala |
**Recomendação Descomplicar:**
```
B2B (equipas 5-50 users): PER SEAT
B2C (individual): TIERED
API/Infra (desenvolvedores): USAGE BASED
SaaS tradicional: HYBRID (base + usage caps)
```
**Exemplo de Tiers:**
```
┌─────────────────────────────────────────────────┐
│ FREE 0€/mês │
├─────────────────────────────────────────────────┤
│ ✓ 1 user │
│ ✓ 100 records/mês │
│ ✓ 1 GB storage │
│ ✗ Integrações │
│ ✗ API access │
│ ✗ Suporte prioritário │
└─────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────┐
│ PRO 29€/mês │
├─────────────────────────────────────────────────┤
│ ✓ 5 users │
│ ✓ 10.000 records/mês │
│ ✓ 50 GB storage │
│ ✓ Integrações básicas │
│ ✓ API access (10k calls/mês) │
│ ✓ Email support (24h) │
└─────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────┐
│ ENTERPRISE Custom │
├─────────────────────────────────────────────────┤
│ ✓ Users ilimitados │
│ ✓ Records ilimitados │
│ ✓ Storage dedicado │
│ ✓ Todas as integrações │
│ ✓ API ilimitado │
│ ✓ Suporte 24/7 + Account Manager │
│ ✓ SSO/SAML │
│ ✓ SLA 99.9% │
└─────────────────────────────────────────────────┘
```
### 4. Stack Técnica Recomendada
**Frontend:**
```
Framework: Next.js 14+ (App Router)
Styling: Tailwind CSS + shadcn/ui
State: Zustand / Jotai
Forms: React Hook Form + Zod
```
**Backend:**
```
API: Next.js API Routes / tRPC
Database: PostgreSQL (Supabase / Railway)
ORM: Prisma
Queue: BullMQ / Inngest (background jobs)
Cache: Redis (Upstash)
```
**Auth & Billing:**
```
Auth: Clerk / Auth0 / NextAuth.js
Billing: Stripe Billing (subscriptions)
Email: Resend / SendGrid
Analytics: PostHog / Mixpanel
```
**Hosting:**
```
Frontend: Vercel
Backend: Railway / Fly.io
Database: Supabase / Neon
CDN: Cloudflare
```
### 5. Onboarding Flow (Time-to-Value)
**Objectivo:** Levar user de signup a "aha moment" em < 5 minutos.
```
┌────────────────────────────────────────────────┐
│ 1. SIGNUP │
│ Email + Password (ou OAuth Google) │
│ ↓ < 30 segundos │
├────────────────────────────────────────────────┤
│ 2. WELCOME │
│ Vídeo 30s: "O que vais conseguir" │
│ ↓ Skip disponível │
├────────────────────────────────────────────────┤
│ 3. QUICK SETUP │
│ 3-5 campos essenciais (restantes opcional) │
│ Progress bar: "2/3 completo" │
│ ↓ < 2 minutos │
├────────────────────────────────────────────────┤
│ 4. FIRST ACTION │
│ Criar primeiro [projecto/documento/etc] │
│ Usar template pré-preenchido │
│ ↓ < 2 minutos │
├────────────────────────────────────────────────┤
│ 5. AHA MOMENT │
│ Ver resultado imediato (export, share, etc) │
│ Celebrar: "Parabéns! Criaste o teu 1º X" │
│ ↓ │
├────────────────────────────────────────────────┤
│ 6. NEXT STEPS │
│ Checklist guiada: "3 passos para dominar" │
│ Invite team, integração, etc │
└────────────────────────────────────────────────┘
```
**Métricas de Onboarding:**
```
- Signup → Email verified: > 80%
- Email verified → Setup complete: > 60%
- Setup → First action: > 70%
- First action → Aha moment: > 90%
- Activation rate (signup → aha): > 40%
```
### 6. Billing com Stripe
**Setup Básico:**
```typescript
// 1. Criar produtos e preços no Stripe Dashboard
// Free: price_free (0€)
// Pro: price_pro (29€/mês)
// Enterprise: price_enterprise (custom)
// 2. Criar subscription no signup
import Stripe from 'stripe';
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);
const subscription = await stripe.subscriptions.create({
customer: customerId,
items: [{ price: 'price_free' }],
trial_period_days: 14, // Trial 14 dias
payment_behavior: 'default_incomplete',
expand: ['latest_invoice.payment_intent']
});
// 3. Webhooks para sincronizar estado
// - customer.subscription.created
// - customer.subscription.updated
// - customer.subscription.deleted
// - invoice.payment_succeeded
// - invoice.payment_failed
// 4. Verificar feature access
const canUseFeature = (user: User, feature: string) => {
if (user.subscription.status !== 'active') return false;
return PLAN_FEATURES[user.subscription.plan].includes(feature);
};
```
**Trial → Paid Conversion:**
```
Trial 14 dias (sem cartão)
├─ Dia 7: Email "Metade do trial"
├─ Dia 12: Email "2 dias restantes + valor criado"
├─ Dia 14: Soft paywall (pedir cartão)
Converteu? → Pro (29€/mês)
Não converteu? → Free (downgrade features)
```
---
## Métricas SaaS (KPIs)
### Receita
| Métrica | Fórmula | Target |
|---------|---------|--------|
| **MRR** | Monthly Recurring Revenue | Crescimento mês/mês |
| **ARR** | MRR × 12 | > 100k€ para sustainable |
| **ARPU** | MRR / Total customers | Sector-dependent |
| **NRR** | (MRR início + expansion - churn - contraction) / MRR início | > 100% |
### Crescimento
| Métrica | Fórmula | Target |
|---------|---------|--------|
| **New MRR** | Novos clientes × preço médio | +20%/mês (early) |
| **Expansion MRR** | Upsells + Add-ons | > 10% do MRR |
| **Churn MRR** | Cancelamentos valor | < 5%/mês |
### Aquisição
| Métrica | Fórmula | Target |
|---------|---------|--------|
| **CAC** | Custo marketing+sales / Novos clientes | < 1/3 LTV |
| **LTV** | ARPU × (1 / Churn Rate) - CAC | > 3× CAC |
| **Payback Period** | CAC / ARPU | < 12 meses |
### Produto
| Métrica | Target |
|---------|--------|
| **Activation Rate** | > 40% (signup → aha moment) |
| **DAU/MAU** | > 20% (stickiness) |
| **Time to Value** | < 10 minutos |
| **Feature Adoption** | > 30% users usam feature nova (30 dias) |
### Retenção
| Métrica | Fórmula | Target |
|---------|---------|--------|
| **Logo Churn** | Clientes cancelaram / Total | < 5%/mês |
| **Revenue Churn** | MRR perdido / MRR total | < 5%/mês |
| **Cohort Retention** | Clientes mês X activos em X+6 | > 50% |
---
## Feature Flags por Plano
```typescript
// config/features.ts
export const PLAN_FEATURES = {
free: [
'basic_dashboard',
'limited_records',
'email_support'
],
pro: [
'basic_dashboard',
'unlimited_records',
'api_access',
'integrations_basic',
'priority_support',
'export_csv'
],
enterprise: [
'*', // todas as features
'sso_saml',
'audit_logs',
'custom_domain',
'dedicated_support',
'sla_guarantee'
]
};
// middleware verificação
export function requireFeature(feature: string) {
return async (req, res, next) => {
const user = req.user;
const plan = user.subscription.plan;
if (!PLAN_FEATURES[plan].includes(feature) &&
!PLAN_FEATURES[plan].includes('*')) {
return res.status(403).json({
error: 'Upgrade required',
feature: feature,
current_plan: plan,
upgrade_to: 'pro'
});
}
next();
};
}
// Uso no route
app.get('/api/export',
requireAuth,
requireFeature('export_csv'),
async (req, res) => {
// ...
}
);
```
---
## Consultar Datasets Dify
**SEMPRE antes de arquitectar solução:**
| Dataset | ID | Query Exemplo |
|---------|----|--------------:|
| **Estratégia** | `7d1d1d21-bc05-43d8-ab8f-6b7b90dafc28` | "saas pricing modelo subscription" |
| **Gestão** | `22799925-8dc5-4a1f-92b9-233468a5048b` | "metricas saas mrr churn ltv" |
| **Desenvolvimento Software** | `52c29c6b-7f76-42fe-ad4b-0bf8ff05cc73` | "arquitectura multitenancy postgresql" |
### Como Consultar
```javascript
// Modelos de pricing
mcp__notebooklm__notebook_query, mcp__dify-kb__dify_kb_retrieve_segments({
dataset_id: "7d1d1d21-bc05-43d8-ab8f-6b7b90dafc28",
query: "saas pricing tiers feature packaging",
retrieval_mode: "hybrid_search",
top_k: 5
});
// Métricas e KPIs
mcp__dify-kb__dify_kb_retrieve_segments({
dataset_id: "22799925-8dc5-4a1f-92b9-233468a5048b",
query: "metricas saas cohort retention churn",
retrieval_mode: "hybrid_search",
top_k: 5
});
```
---
## MCPs Utilizados
```
mcp__desk-crm-v3__* # Gestão projectos SaaS
mcp__dify-kb__dify_kb_retrieve_segments # Conhecimento estratégico
```
---
## Exemplos de Uso
### 1. Planeamento Novo SaaS
```
/saas arquitectura
→ Discovery interactivo
→ Consulta Dify KB (best practices)
→ Recomendação multi-tenancy
→ Stack técnica
→ Roadmap MVP
```
### 2. Optimização Pricing
```
/saas pricing
→ Análise competidores
→ Modelação LTV/CAC
→ Proposta tiers
→ Feature packaging
```
### 3. Dashboard Métricas
```
/saas metricas
→ Definir KPIs prioritários
→ Queries SQL para MRR/Churn
→ Setup PostHog/Mixpanel
→ Dashboards Grafana
```
---
## Agentes Recomendados
```javascript
// Arquitectura técnica
Task({
subagent_type: "software-architect",
model: "sonnet",
prompt: "Design multi-tenant SaaS architecture. PostgreSQL RLS + Next.js."
});
// Estratégia produto
Task({
subagent_type: "software-project-planner",
model: "sonnet",
prompt: "SaaS onboarding flow. Time-to-value < 5min. B2B productivity tool."
});
```
---
## Instrumentação Automática
### Query para Gravar (executar no final)
```sql
INSERT INTO tblskill_agent_metrics (
type, name, duration_ms, status, staff_id,
kb_consulted, kb_cache_hit, tool_calls, project_id
) VALUES (
'skill', '/saas', {DURACAO_MS}, '{STATUS}', 25,
{KB_CONSULTADO}, {CACHE_HIT}, {TOOL_CALLS}, {PROJECT_ID}
);
```
---
**Versão**: 2.0.0 | **Data**: 2026-02-03 | **Autor**: Descomplicar®
**Instrumentação**: Activa