用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/majiayu000/claude-skill-registry --skill vulnerabilidade-preditiva命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
LLM token logprobs and calibration. Per-decision confidence, ECE, Brier, reliability diagrams, low-confidence triage.
Analyze LLM token logprobs and calibration. Use for per-decision confidence, ECE, Brier scores, reliability diagrams, and low-confidence triage.
回顾最近 N 天的 Claude Code 使用记录——扫描原始会话数据,按主题分组汇总"我都做了什么",并从个人操作系统视角输出模式、风险与增删建议。当用户说 /recap、"看看我这几天做了什么"、"回顾一下我最近的会话"、"这两天我用 claude 干了啥"、"活动回顾" 时使用。
基于 SOC 职业分类
正在显示 SKILL.md
| name | vulnerabilidade-preditiva |
| description | Score de risco social e recomendações proativas |
Score de risco social para sugestão proativa de benefícios e prevenção de perda de direitos.
Score = soma ponderada de fatores
Dimensão | Peso | Indicadores
-------------------|------|----------------------------------
Renda | 30% | Renda per capita, fonte de renda, estabilidade
Composição familiar| 20% | Crianças <6, gestantes, idosos, PCD
Moradia | 15% | Tipo, posse, saneamento, localização
Trabalho | 15% | Formal/informal, desemprego, subemprego
Proteção social | 10% | Benefícios ativos, CadÚnico atualizado
Território | 10% | IDH-M, cobertura SUAS, zona rural/urbana
0-25: BAIXO → Monitoramento periódico
26-50: MODERADO → Verificar novos benefícios elegíveis
51-75: ALTO → Ação preventiva (alertas, orientação)
76-100: CRÍTICO → Encaminhamento urgente para CRAS/CREAS
# backend/app/services/score_vulnerabilidade.py
from dataclasses import dataclass
@dataclass
class PerfilFamiliar:
renda_per_capita: float
membros_familia: int
criancas_0_6: int
gestantes: int
idosos_60_mais: int
pessoas_com_deficiencia: int
tipo_moradia: str # propria, alugada, cedida, ocupacao, rua
trabalho_formal: bool
desempregados: int
beneficios_ativos: list[str]
cadunico_atualizado: bool
meses_desde_atualizacao: int
municipio_ibge: str
zona: str # urbana, rural
def calcular_score(perfil: PerfilFamiliar, dados_territorio: dict) -> dict:
score = 0
fatores = []
# --- RENDA (0-30 pontos) ---
if perfil.renda_per_capita == 0:
score += 30
fatores.append("Sem renda declarada")
elif perfil.renda_per_capita <= 105:
score += 25
fatores.append("Extrema pobreza (até R$105/pessoa)")
elif perfil.renda_per_capita <= 218:
score += 20
fatores.append("Pobreza (até R$218/pessoa)")
elif perfil.renda_per_capita <= 660:
score += 10
fatores.append("Baixa renda (até R$660/pessoa)")
# --- COMPOSIÇÃO FAMILIAR (0-20 pontos) ---
if perfil.criancas_0_6 > 0:
score += min(perfil.criancas_0_6 * 3, 8)
fatores.append(f"{perfil.criancas_0_6} criança(s) pequena(s)")
if perfil.gestantes > 0:
score += 5
fatores.append("Gestante na família")
if perfil.idosos_60_mais > 0:
score += 4
fatores.append("Idoso(s) na família")
if perfil.pessoas_com_deficiencia > 0:
score += 5
fatores.append("Pessoa(s) com deficiência")
# --- MORADIA (0-15 pontos) ---
moradia_scores = {
"rua": 15, "ocupacao": 12, "cedida": 8,
"alugada": 5, "propria": 0,
}
score += moradia_scores.get(perfil.tipo_moradia, 5)
# --- TRABALHO (0-15 pontos) ---
if not perfil.trabalho_formal:
score += 8
fatores.append("Sem trabalho formal")
if perfil.desempregados > 0:
score += min(perfil.desempregados * 4, 15)
fatores.append(f"{perfil.desempregados} desempregado(s)")
# --- PROTEÇÃO SOCIAL (0-10 pontos) ---
if not perfil.cadunico_atualizado:
score += 5
fatores.append("CadÚnico desatualizado")
if perfil.meses_desde_atualizacao >= 20:
score += 5
fatores.append("CadÚnico próximo de vencer")
# --- TERRITÓRIO (0-10 pontos) ---
idh_m = dados_territorio.get("idh_m", 0.7)
if idh_m < 0.55:
score += 10
fatores.append("Município com IDH muito baixo")
elif idh_m < 0.65:
score += 6
if perfil.zona == "rural":
score += 3
fatores.append("Zona rural")
# Limitar a 100
score = min(score, 100)
return {
"score": score,
"faixa": classificar_faixa(score),
"fatores": fatores,
"recomendacoes": gerar_recomendacoes(perfil, score),
}
def gerar_recomendacoes(perfil: PerfilFamiliar, score: int) -> list[dict]:
"""Gera recomendações baseadas no perfil e score."""
recomendacoes = []
# Benefícios não acessados
if perfil.renda_per_capita <= 218 and "bolsa_familia" not in perfil.beneficios_ativos:
recomendacoes.append({
"tipo": "beneficio_nao_acessado",
"beneficio": "Bolsa Família",
"mensagem": "Você pode ter direito ao Bolsa Família. Procure o CRAS.",
"prioridade": "alta",
})
if perfil.idosos_60_mais > 0 and perfil.renda_per_capita <= 353:
if "bpc_idoso" not in perfil.beneficios_ativos:
recomendacoes.append({
"tipo": "beneficio_nao_acessado",
"beneficio": "BPC Idoso",
"mensagem": "O idoso da família pode ter direito ao BPC (1 salário mínimo/mês).",
"prioridade": "alta",
})
# CadÚnico vencendo
if perfil.meses_desde_atualizacao >= 20:
recomendacoes.append({
"tipo": "alerta_cadastro",
"mensagem": ,
: perfil.meses_desde_atualizacao >= ,
})
perfil.renda_per_capita <= perfil.beneficios_ativos:
recomendacoes.append({
: ,
: ,
: ,
: ,
})
(recomendacoes, key= r: {: , : , : }[r[]])
# Após consulta de benefícios, calcular score e sugerir
async def pos_consulta(cpf: str, session: Session):
perfil = await construir_perfil(cpf)
resultado = calcular_score(perfil, await dados_territorio(perfil.municipio_ibge))
if resultado["recomendacoes"]:
mensagem = "Encontrei algumas coisas que podem te ajudar:\n\n"
for rec in resultado["recomendacoes"]:
mensagem += f"• {rec['mensagem']}\n"
await session.send(mensagem)
backend/app/services/score_vulnerabilidade.py - Cálculo do scorebackend/app/services/recomendacoes.py - Motor de recomendaçõesbackend/app/services/eligibility_service.py - Serviço de elegibilidadebackend/app/models/municipality.py - Dados territoriais