🧱
MÓDULO 1.2 Trilha 1 — Fundamentos

🧱 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.

📋 6 tópicos
~35 min
🎯 Iniciante
📚 Teoria
ESQUELETO ESTRUTURAL (este módulo) comportamento → módulo 1.3 ① Bloco de Identidade "You are X" · modelo · knowledge cutoff ② Declaração de Capacidades ferramentas · escopo · condições ③ Compartimento XML <policy> <tone_and_formatting> · blocos flat ④ Lembrete de Sistema <system-reminder> · injetado pelo harness ⑤ Hierarquia de Prioridade core policy > system > user > default Estrutural dá FORMA · Comportamental dá VOZ Identidade → OpenAI/gpt-5.5-instant.md (L1) "You are ChatGPT … based on GPT 5.5." Capacidades → Google/gemini-2.5-pro-api.md (L18) ## Functions in Scope · def concise_search(...) Compartimento XML → xAI/grok-4.1-beta.md (L1–9) <policy> … </policy> · blocos flat nomeados Lembrete → xAI/grok-build.md (L36) · Fable 5 <system-reminder> · camada dinâmica separada Hierarquia → xAI/grok-4.1-beta.md (L2) core policy > system > user · precedência declarada Recriação ilustrativa — não é screenshot. Citações verbatim do repositório. estrutura estável camada dinâmica

Conteúdo detalhado

1

🗺️ 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

1

Bloco de Identidade — "You are X" + modelo + corte de conhecimento. A única seção 100% universal.

2

Declaração de Capacidades — o que o agente pode fazer, com escopo e condições.

3

Compartimento XML — tags <bloco> flat para modularizar a lógica.

4

Lembrete de Sistema — camada dinâmica injetada pelo harness, separada do comportamento estável.

5

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ê.

🦴
Esqueleto
dá forma ao prompt
🌐
Independente de domínio
código, chat, workspace
🔢
5 padrões
deste módulo
🧬
Diffável
versionável bloco a bloco
2

🪪 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

01
OpenAI — 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.

02
Microsoft — 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.

🎭
Persona
produto + modelo
📅
Knowledge cutoff
limite do saber
🎯
Escopo de missão
"your job is…"
🌍
100% universal
visto em todos
3

🛠️ 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 — 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 — 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)
🧭
Escopo
o que cada tool faz
🔀
Condição
"if the user…"
📐
Assinatura
params + defaults
Anti-over-promise
não declare o inexistente
4

🏷️ 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 — 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/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.

📦
Bloco nomeado
um assunto por tag
📏
Flat
≤ 2 níveis
🧬
Diffável
remove/edita 1 bloco
🔖
Markdown também
# Seções em agentes
5

📨 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

01
xAI — 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.

02
Anthropic — 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.

🔁
Camada dinâmica
injetada por turno
⚙️
Harness
injeta em runtime
📌
Estável separado
sem redeploy
long_conversation
refresca instruções
6

🪜 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)

1
Política central de segurança — ninguém anula. Fica no topo, dentro do <policy>.
▼ vence
2
System message — precede mensagens do usuário, mas não a política central.
▼ vence
3
Usuário no chat — vence skill, arquivo de config e qualquer preferência de produto.
▼ vence
4
Skill / plugin → default — arquivo mais específico vence o geral; default é o piso.

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 — 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 — 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
🛡
Segurança no topo
ninguém anula
🙋
Usuário vence
acima de skill/config
📂
Específico > geral
arquivo aninhado
⚖️
Desempate
elimina indeterminação

🧱 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 de Identidade — "You are X" + modelo + corte; a âncora 100% universal, sempre no topo.
Declaração de Capacidades — lista estruturada com escopo e condições; assinaturas de função (Google) ou bullets condicionais (xAI).
Compartimento XML — tags <bloco> flat que tornam o prompt modular, versionável e diffável.
Lembrete de Sistema — camada dinâmica <system-reminder> injetada pelo harness, separada do comportamento estável.
Hierarquia de Prioridade — precedência declarada: segurança > usuário > skill/config > default; elimina o conflito indeterminado.

➡️ 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.