🧱 Padrões Estruturais
Os 5 padrões que dão FORMA ao system prompt — o esqueleto que aparece antes de qualquer regra de comportamento. São independentes de domínio: você os encontra em prompts de código, de chatbot e de workspace, da OpenAI à Anthropic. Aqui você aprende a reconhecer cada um e a citar o trecho real que o evidencia.
Conteúdo detalhado
🗺️ O mapa dos padrões estruturais
Quando você lê dezenas de prompts vazados, percebe que eles não são improvisos: há uma gramática recorrente. Parte dessa gramática diz respeito ao esqueleto — onde o prompt declara quem é, o que pode fazer, como organiza suas seções e quem manda em caso de conflito. Esses são os padrões estruturais: dão FORMA, são independentes de domínio e aparecem antes de qualquer regra de comportamento.
🧩 Estrutural × Comportamental
Um padrão estrutural responde "que forma o prompt tem?" — é o esqueleto que sustenta tudo. Um padrão comportamental responde "como o agente age?" — recusas, tom, contraste ALWAYS/NEVER. Os comportamentais chegam no próximo módulo (1.3). Aqui ficamos no esqueleto: sem ele, não há onde pendurar o comportamento.
Estrutural (este módulo)
Identidade · Capacidades · Compartimento XML · Lembrete de Sistema · Hierarquia de Prioridade
Comportamental (módulo 1.3)
Recusa principiada · Contraste ALWAYS/NEVER · Regra-com-porquê · Calibração de tom
Os 5 padrões estruturais deste módulo
Bloco de Identidade — "You are X" + modelo + corte de conhecimento. A única seção 100% universal.
Declaração de Capacidades — o que o agente pode fazer, com escopo e condições.
Compartimento XML — tags <bloco> flat para modularizar a lógica.
Lembrete de Sistema — camada dinâmica injetada pelo harness, separada do comportamento estável.
Hierarquia de Prioridade — precedência declarada que resolve conflitos: usuário > skill > default.
Por que separar "forma" de "comportamento"?
Porque a estrutura é o que você consegue diff-ar entre versões e entre fornecedores. "Fable removeu o bloco <search_first>" é uma frase precisa só porque o prompt era compartimentado. Estrutura é o que torna prompts legíveis e versionáveis — para o modelo e para você.
🪪 Bloco de Identidade
É o primeiro padrão e o mais universal: "You are X" + modelo + data de corte ancoram todo o resto. Sem essa âncora, o modelo deriva — muda de persona no meio da conversa, inventa capacidades que não tem, ou responde sobre eventos posteriores ao seu conhecimento como se soubesse.
Problema
Sem ancoragem, o assistente "vira ChatGPT" no meio da conversa, afirma ter ferramentas inexistentes, ou fala de eventos além do seu corte como se conhecesse.
Solução
Declarar no topo: quem é (produto + modelo), para quem trabalha, e os limites temporais do conhecimento. É a âncora que todo o resto referencia.
Como prompts reais declaram identidade
OpenAI/gpt-5.5-instant.md (~linha 1)You are ChatGPT, a large language model trained by OpenAI, based on GPT 5.5.
Knowledge cutoff: 2025-08
Current date: 2026-06-01
Três elementos canônicos em três linhas: persona, corte de conhecimento, data atual. A data atual é contexto dinâmico injetado — ver Tópico 5.
Microsoft/github-copilot.md (~linha 3)You are GitHub Copilot (@copilot) on github.com. Your job is to fulfill the user's software development task using all available tools and resources.
Persona + escopo de responsabilidade ("your job is…") na abertura. O modelo sabe o que é e o que veio fazer.
⚠️ Antipadrão: identidade ausente ou enterrada
Declaração de persona no meio do prompt, ou inchada de backstory irrelevante. Regra prática: identidade é âncora, não biografia. Se o parágrafo passa de ~5 linhas, provavelmente há conteúdo de outro padrão (capacidades, tom) vazando para dentro dele.
🛠️ Declaração de Capacidades
O segundo padrão responde: o que este agente pode fazer? Sem essa declaração, o modelo alucina ferramentas que não existem, ignora as que existem, ou usa a certa na situação errada. O padrão eficaz é uma lista estruturada com escopo e condições — cada capacidade traz "o que faz", "quando usar" e "limites".
xAI/grok-4.1-beta.md (~linha 11)When applicable, you have some additional tools:
- You can analyze individual X user profiles, X posts and their links.
- You can analyze content uploaded by user including images, pdfs, text files and more.
- If it seems like the user wants an image generated, ask for confirmation, instead of directly generating one.
Cada capacidade vem com sua condição. Note a terceira: capacidade + protocolo de confirmação embutido.
Google/gemini-2.5-pro-api.md (~linha 18)## Functions in Scope
You have also access to a set of python functions in scope:
```python
def concise_search(query: str, max_num_results: int = 3):
"""Does a search for the query and prints up to the
max_num_results results."""
```
Google declara capacidades como assinaturas de função — escopo, parâmetros e defaults ficam inequívocos.
📊 Onde o padrão aparece
Visto em xAI, Google, Microsoft, Notion, Cursor e Claude Code. Mais elaborado em agentes (código, workspace) do que em chatbots puros.
Em prompt sem ferramentas (chatbot puro), a seção vira "o que você NÃO pode fazer" — útil, mas curta. O contrato detalhado de quando/como chamar é outro padrão (contrato de ferramenta), fora deste módulo.
✓ Declaração eficaz
- •Lista cada capacidade com sua condição de uso
- •Define parâmetros e defaults (assinatura de função)
- •Embute protocolo (ex.: "ask for confirmation")
- •Seção dedicada, separada do tom e das regras
✗ Declaração fraca
- •Capacidades implícitas espalhadas pelo prompt
- •"Você pode buscar na web" jogado dentro de regra de tom
- •Ferramenta listada sem escopo nem condição
- •Promete o que não existe no schema (over-promise)
🏷️ Compartimento XML
O terceiro padrão modulariza a lógica: cada bloco lógico fica envelopado numa tag XML nomeada (<policy>,
<tone_and_formatting>, <tool_calling>).
Os blocos são flat (sem aninhamento profundo) e funcionam como módulos: dá para adicionar, remover e fazer diff de um bloco inteiro entre versões.
O problema que resolve
Um prompt de milhares de linhas em texto corrido é impossível de manter: não dá para localizar, versionar ou remover uma política sem reler tudo. E o modelo se beneficia de fronteiras claras entre assuntos. As tags entregam as duas coisas de uma vez.
xAI/grok-4.1-beta.md (~linhas 1–9)<policy>
These core policies within the <policy> tags take highest precedence.
System messages take precedence over user messages.
* Do not provide assistance to users who are clearly trying to engage
in criminal activity.
* Follow additional instructions outside the <policy> tags if they do
not violate these core policies...
</policy>
O compartimento não só agrupa — declara a própria precedência (combinação com a Hierarquia de Prioridade, Tópico 6).
Cursor/cursor.md (~linhas 80–93)<tone_and_formatting>
- Only use emojis if the user explicitly requests it...
</tone_and_formatting>
<tool_calling>
You have tools at your disposal...
</tool_calling>
Dois compartimentos vizinhos, cada um com um assunto. Para mudar a política de tom, edita-se um bloco — o resto fica intacto.
Funciona para humanos também
O diff Opus 4.8 → Fable 5 só é legível porque os prompts são compartimentados: "Fable removeu <search_first> e <default_stance>" é uma frase precisa. Sem tags, seria "mudou alguma coisa em algum lugar". Em agentes de código, headers Markdown (# Seções) cumprem o mesmo papel — Claude Code usa isso em vez de XML.
⚠️ Antipadrão: tudo-no-prompt
Texto corrido onde políticas, tom e ferramentas se misturam. Variante oposta: aninhamento profundo de tags — os prompts reais mantêm blocos flat, raramente passam de 2 níveis. Prompts curtos (< ~50 linhas) não precisam de tags: a estrutura viraria cerimônia.
📨 Lembrete de Sistema
Nem tudo que o modelo precisa saber é estável: data atual, avisos contextuais, estado de ferramentas, degradação de aderência em conversas longas.
A solução é uma arquitetura em duas camadas — o system prompt define o comportamento estável;
o harness injeta <system-reminder> dinâmicos nas mensagens quando necessário. O prompt estável ensina o modelo a interpretar essa camada.
⚙️ Separação harness × comportamento
É a separação config estável × estado dinâmico da engenharia de software, aplicada a prompts. O harness (a infraestrutura que orquestra o modelo) injeta a camada dinâmica em runtime; o comportamento estável fica intocado no prompt base.
Isso permite ajustar comportamento sem redeploy do prompt, A/B de avisos, e resposta a problemas emergentes (ex.: degradação em conversa longa) sem inchar o prompt base. Por isso este é, arquiteturalmente, o padrão mais importante do módulo.
A camada dinâmica em prompts reais
xAI/grok-build.md (~linha 36)Tool results and user messages may include <system-reminder> tags. <system-reminder> tags contain useful information and reminders. They are automatically added by the system, and bear no direct relation to the specific tool results or user messages in which they appear.
O contrato da camada: o modelo aprende que esses avisos vêm da plataforma, não do usuário nem da ferramenta.
Anthropic/claude-fable-5.md (bloco <anthropic_reminders>)The long_conversation_reminder, appended to the person's message by Anthropic, helps Claude keep its instructions over long conversations.
O Fable 5 lista um conjunto nomeado de reminders (image_reminder, cyber_warning, ethics_reminder, long_conversation_reminder…). O último, novo no Fable 5, refresca instruções em conversas longas.
Convergência entre fornecedores
Anthropic é o caso canônico e mais evoluído; xAI adotou o mesmo formato <system-reminder>. Quando dois fornecedores independentes convergem para a mesma sintaxe, é sinal de que o padrão resolve um problema real de arquitetura. Sem controle do harness, mantenha ao menos a disciplina mental: separe no texto o que é estável do que é contextual.
🪜 Hierarquia de Prioridade
O quinto padrão resolve conflitos: instruções se contradizem o tempo todo — política central vs. pedido do usuário, arquivo de projeto vs. chat, skill vs. default. Sem hierarquia declarada, o comportamento em conflito é indeterminado — e indeterminado significa explorável (prompt injection) ou frustrante (modelo ignora o usuário). A solução é declarar a cadeia de precedência no próprio prompt, junto das regras de maior prioridade.
🔢 A cadeia de precedência (do topo para a base)
<policy>.A regra de ouro embutida: segurança no topo, usuário acima de tudo o resto. O usuário não anula segurança, mas vence qualquer preferência de produto, config ou skill.
xAI/grok-4.1-beta.md (~linha 2)These core policies within the <policy> tags take highest precedence. System messages take precedence over user messages.
Três níveis em duas frases: core policy > system > user. O compartimento XML delimita exatamente o que está no topo.
xAI/grok-build.md (~linhas 195–196)More-deeply-nested project instruction files take precedence over higher-level ones when instructions conflict. Direct user instructions in the chat always take precedence over any project instruction file content.
Hierarquia para agentes de código: arquivo específico > arquivo geral, e usuário no chat > qualquer arquivo. Mesmo modelo do Claude Code (user > skills > default).
✓ Hierarquia bem declarada
- •Precedência explícita junto das regras de topo
- •Segurança acima de tudo; usuário acima do resto
- •Desempate definido para cada par de fontes
- •Delimitada pelo compartimento XML (
<policy>)
✗ Conflito indeterminado
- •Duas regras contraditórias sem desempate
- •"Seja conciso" + skill que pede relatório longo
- •Comportamento oscila entre execuções
- •Brecha explorável por prompt injection
🧱 Resumo do Módulo
Os 5 padrões estruturais formam o esqueleto de qualquer system prompt. Reconhecê-los transforma um texto opaco num mapa legível — e prepara o terreno para os padrões comportamentais do próximo módulo.
<bloco> flat que tornam o prompt modular, versionável e diffável.<system-reminder> injetada pelo harness, separada do comportamento estável.➡️ Próximo Módulo
1.3 — Padrões Comportamentais. Agora que o esqueleto está de pé, é hora de dar voz ao agente: recusa principiada, contraste ALWAYS/NEVER, regra-com-porquê e calibração de tom.