27%
D1 — Arquitetura e Orquestração de Agentes
O domínio mais pesado. Foco em loop agêntico, hub-and-spoke e subagentes.
Loop Agêntico
O modelo não apenas responde — ele executa ações em sequência até stop_reason == "end_turn". Anti-padrão: usar limite de iterações como condição primária de parada.
→ Kit Sênior: Process.sequential nos 5 crews
Hub-and-Spoke
Coordenador decompe a tarefa e delega para subagentes especializados. Subagentes têm contexto isolado — todo contexto deve ser passado explicitamente.
→ Kit Sênior: Architecture Review (4 agentes sequenciais)
Ferramenta Task
Subagentes são spawnados via a ferramenta Task. O coordenador pode chamar múltiplas Tasks numa resposta — rodam em paralelo.
→ Kit Sênior: Spec Analyzer → Architecture Review pipeline
AgentDefinition
allowed_tools define o princípio do menor privilégio — cada agente só acessa o que precisa. system_prompt define papel e restrições.
→ Kit Sênior: cada crew tem role + backstory + goal específicos
Regra crítica para o exame: o único sinal confiável de conclusão de um loop agêntico é stop_reason == "end_turn". Parsear texto do assistente ou usar limite de iterações são anti-padrões.
# ✓ Correto: parar apenas em end_turn
while True:
response = client.messages.create(...)
if response.stop_reason == "end_turn":
break
elif response.stop_reason == "tool_use":
result = execute_tool(response)
messages.append(tool_result(result))
# ✗ Anti-padrão: limite arbitrário de iterações
for i in range(5): # ERRADO
response = client.messages.create(...)
18%
D2 — Design de Ferramentas e Integração MCP
Como o modelo escolhe ferramentas e como projetar descrições eficazes.
tool_choice
auto: modelo decide. any: deve chamar alguma ferramenta (garante saída estruturada). tool+name: força ferramenta específica (ordem de execução).
→ Kit Sênior: PatternLookupTool, SOLIDChecker, CAPAdvisor
Descrição de Ferramenta
A descrição é o principal mecanismo de seleção. Inclua: o que retorna, formatos de entrada, casos de borda, quando usar vs alternativas similares.
→ Kit Sênior: 7 tools MCP com descriptions explícitas
MCP Resources vs Tools
Tools executam ações. Resources fornecem dados de contexto (schemas, documentação, catálogos). Resources evitam chamadas exploratórias desnecessárias.
→ Kit Sênior: resource adr://store no server.py
isError no MCP
Erros MCP devem usar isError: true com errorCategory, isRetryable e mensagem descritiva. Erro genérico ("Operation failed") é anti-padrão.
→ Kit Sênior: .mcp.json + SSE transport + stdio
Anti-padrão: ferramentas com descrições idênticas ou sobrepostas fazem o modelo escolher aleatoriamente. Sempre diferencie o escopo de cada ferramenta na description.
✗ Anti-padrão
{ "name": "analyze_content",
"description": "Analyzes content" }
{ "name": "analyze_document",
"description": "Analyzes content" }
// Modelo vai confundir as duas
✓ Correto
{ "name": "kit_solid_check",
"description": "Analisa código Python via
AST para violações SRP/OCP/ISP.
Input: código fonte Python.
Use para review de classes." }
20%
D3 — Configuração e Fluxos de Trabalho do Claude Code
Hierarquia CLAUDE.md, slash commands, skills e hooks.
Hierarquia CLAUDE.md
Nível usuário (~/.claude/CLAUDE.md): pessoal, não compartilhado. Nível projeto (.claude/CLAUDE.md): todos os devs. Nível diretório: convenções locais.
→ Kit Sênior: 5 CLAUDE.md hierárquicos implementados
Sintaxe @path
CLAUDE.md pode importar outros arquivos com @./path/to/file.md. Profundidade máxima: 5 níveis. Caminhos relativos ao arquivo que contém o import.
→ Kit Sênior: imports modulares entre CLAUDE.md
.claude/rules/ com paths
Regras com frontmatter paths: ["**/*.test.ts"] são carregadas apenas quando o arquivo editado casa com o padrão. Economiza contexto.
→ Kit Sênior: regras por tipo de arquivo nos serviços
Skills + context: fork
context: fork roda a skill em subagente isolado — saída verbosa não polui a sessão principal. allowed-tools restringe acesso por princípio do menor privilégio.
→ Kit Sênior: 9 slash commands /kit-* implementados
Erro comum no exame: novo membro do time não recebe instruções do projeto porque foram colocadas em ~/.claude/CLAUDE.md (pessoal) em vez de .claude/CLAUDE.md (projeto, gerenciado em VCS).
20%
D4 — Engenharia de Prompts e Saída Estruturada
JSON schemas, tool_use para saída estruturada, campos nuláveis e enums.
tool_use para Saída Estruturada
Usar tool_use + JSON schema é a forma mais confiável de obter JSON válido. Garante sintaxe correta — não garante correção semântica.
→ Kit Sênior: Pydantic schemas em todos os endpoints FastAPI
Campos Nuláveis
Use "type": ["string", "null"] para campos opcionais. Campos obrigatórios empurram o modelo a alucinar quando dados estão ausentes.
→ Kit Sênior: result e error nullable no modelo Job
Enum + "other"
Sempre adicione "other" + campo de detalhe em enums. Adicione "unclear" para quando o modelo não tem confiança suficiente para categorizar.
→ Kit Sênior: status enum no Job model (pending/running/completed/failed)
System Prompt
Passado separadamente do array messages. Tem prioridade sobre mensagens do usuário. Pode criar associações não intencionais com ferramentas se mal escrito.
→ Kit Sênior: role + backstory + goal por agente nos crews
// Schema com boas práticas D4
{
"properties": {
"category": {
"type": "string",
"enum": ["bug", "feature", "unclear", "other"]
},
"category_detail": {
"type": ["string", "null"], // nullable!
"description": "Details if category = other/unclear"
},
"confidence": { "type": "number", "minimum": 0, "maximum": 1 }
},
"required": ["category"] // só campos sempre disponíveis
}