Degradação de Contexto

Esta habilidade deve ser usada para diagnosticar e mitigar a degradação de contexto: falhas de lost-in-middle, envenenamento de contexto, choque de contexto, confusão de contexto, problemas de padrão de atenção e degradação de desempenho do agente causada por contexto acumulado ou conflitante.

O que é Degradação de Contexto?

A habilidade 'Degradação de Contexto' é um guia técnico abrangente para diagnosticar e mitigar os cinco padrões previsíveis de falha de contexto em sistemas de agentes de IA: lost-in-middle, envenenamento, distração, confusão e choque. Ela trata a degradação como um problema de engenharia contínuo, e não como um modo de falha binário ou imprevisível, fornecendo sinais de detecção específicos e estratégias de mitigação para cada padrão. A habilidade enfatiza que as extremidades do contexto recebem mais atenção (curva-U), que um único documento irrelevante pode degradar significativamente o desempenho e que contextos contraditórios exigem regras de prioridade explícitas. Ela é suportada por qualquer plataforma de agente de IA (como Claude Code, Cursor, Codex) e é destinada a desenvolvedores e engenheiros que projetam sistemas que lidam com grandes contextos de forma confiável, oferecendo uma estrutura prática de quatro baldes (Escrever, Selecionar, Comprimir, Isolar) e padrões arquitetônicos como carregamento de contexto just-in-time e arquiteturas de subagentes.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering/tree/main/skills/context-degradation

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Padrões de Degradação de Contexto

Diagnostique e corrija falhas de contexto antes que elas se acumulem. A degradação de contexto não é binária — é um continuum que se manifesta através de cinco padrões distintos e previsíveis: lost-in-middle, envenenamento, distração, confusão e choque. Cada padrão tem sinais de detecção específicos e estratégias de mitigação. Trate a degradação como um problema de engenharia com limites mensuráveis, não como um modo de falha imprevisível.

Quando Ativar

Ative esta habilidade quando:

  • O desempenho do agente degrada inesperadamente durante longas conversas
  • Depurando casos em que agentes produzem saídas incorretas ou irrelevantes
  • Projetando sistemas que devem lidar com grandes contextos de forma confiável
  • Avaliando escolhas de engenharia de contexto para sistemas de produção
  • Investigando fenômenos de "perdido no meio" em saídas de agentes
  • Analisando falhas relacionadas a contexto no comportamento do agente

Não ative esta habilidade para trabalhos adjacentes de propriedade de outras habilidades:

  • Explicar mecânicas fundamentais de contexto sem uma falha ativa: context-fundamentals.
  • Aplicar táticas de eficiência de tokens após o padrão de falha ser conhecido: context-optimization.
  • Projetar uma estratégia de compressão ou sumário de transferência: context-compression.
  • Persistir grandes saídas, logs ou estado de rascunho fora do prompt: filesystem-context.

Conceitos Centrais

Estruture o posicionamento do contexto em torno da curva-U de atenção: as posições inicial e final recebem atenção confiável, enquanto as posições intermediárias sofrem uma redução material na precisão de recuperação em experimentos de contexto longo (claim-context-degradation-lost-middle-ruler). Isso não é um bug do modelo, mas uma consequência da mecânica de atenção — o primeiro token (geralmente BOS) atua como um "sumidouro de atenção" que absorve uma quantidade desproporcional do orçamento de atenção, deixando os tokens do meio sub-atendidos à medida que o contexto cresce.

Trate o envenenamento de contexto como um problema de disjuntor. Uma vez que uma alucinação, erro de ferramenta ou fato recuperado incorreto entra no contexto, ele se agrava através da auto-referência repetida. Uma seção de objetivos envenenada faz com que cada decisão downstream reforce suposições incorretas. A detecção requer rastrear a proveniência das afirmações; a recuperação requer truncar para antes do ponto de envenenamento ou reiniciar com contexto apenas verificado.

Filtre agressivamente antes de carregar o contexto — mesmo um único documento irrelevante degrada mensuravelmente o desempenho em tarefas relevantes. Os modelos não podem "pular" contexto irrelevante; eles devem atender a tudo fornecido, criando competição de atenção entre conteúdo relevante e irrelevante. Mova informações que possam ser necessárias, mas não são imediatamente relevantes, para trás de chamadas de ferramenta, em vez de pré-carregá-las.

Isole contextos de tarefas para evitar confusão. Quando o contexto contém vários tipos de tarefas ou alterna entre objetivos, os modelos incorporam restrições da tarefa errada, chamam ferramentas apropriadas para um contexto diferente ou misturam requisitos de múltiplas fontes. A segmentação explícita de tarefas com janelas de contexto separadas elimina a contaminação cruzada.

Resolva o choque de contexto através de regras de prioridade, não de acumulação. Quando múltiplas fontes corretas, mas contraditórias, aparecem no contexto (conflitos de versão, conflitos de perspectiva, recuperação de múltiplas fontes), os modelos não conseguem determinar qual se aplica. Marque contradições explicitamente, estabeleça precedência de fonte e filtre versões desatualizadas antes que entrem no contexto.

Tópicos Detalhados

Lost-in-Middle: Detecção e Estratégia de Posicionamento

Coloque informações críticas no início e no final do contexto, nunca no meio. A curva de atenção em forma de U significa que informações posicionadas no meio sofrem uma redução de 10 a 40% na precisão de recuperação. Para contextos com mais de 4 mil tokens, esse efeito se torna significativo.

Use estruturas de resumo que destacam as principais descobertas em posições favorecidas pela atenção. Adicione cabeçalhos de seção explícitos e marcadores estruturais — eles ajudam os modelos a navegar em contextos longos, criando âncoras de atenção. Quando um documento deve ser incluído na íntegra, adicione um resumo de seus pontos-chave antes e anexe as conclusões críticas no final.

Monitore os sintomas de lost-in-middle: informações corretas existem no contexto, mas o modelo as ignora, as respostas contradizem os dados fornecidos ou o modelo "esquece" instruções dadas anteriormente em um prompt longo.

Envenenamento de Contexto: Prevenção e Recuperação

Valide todas as entradas externas antes que entrem no contexto. Saídas de ferramentas, documentos recuperados e resumos gerados pelo modelo são os três principais vetores de envenenamento. Cada um introduz alegações não verificadas que o raciocínio subsequente trata como verdade absoluta.

Detecte envenenamento através destes sinais: qualidade de saída degradada em tarefas anteriormente bem-sucedidas, desalinhamento de ferramentas (ferramentas ou parâmetros errados) e alucinações que persistem apesar da correção explícita. Quando estes se agrupam, suspeite de envenenamento em vez de problemas de capacidade do modelo.

Recupere removendo o conteúdo envenenado, não adicionando correções por cima. Trunque para antes do ponto de envenenamento, reinicie com contexto limpo preservando apenas informações verificadas ou marque explicitamente a seção envenenada e solicite reavaliação do zero. Colocar correções sobre contexto envenenado raramente funciona — os erros originais retêm peso de atenção.

Distração de Contexto: Curadoria em vez de Acumulação

Faça curadoria do que entra no contexto, em vez de confiar que os modelos ignorem conteúdo irrelevante. A pesquisa mostra que mesmo um único documento distrator desencadeia uma degradação mensurável de desempenho — o efeito segue uma função degrau, não uma curva linear. Múltiplos distratores agravam o problema.

Aplique filtragem de relevância antes de carregar documentos recuperados. Use namespacing e organização estrutural para tornar os limites das seções claros. Prefira acesso baseado em chamada de ferramenta em vez de pré-carregamento: armazene material de referência por trás de ferramentas de recuperação para que ele entre no contexto apenas quando for diretamente relevante para a etapa de raciocínio atual.

Confusão de Contexto: Isolamento de Tarefas

Segmente diferentes tarefas em janelas de contexto separadas. A confusão de contexto é distinta da distração — diz respeito ao modelo aplicar restrições do contexto errado à tarefa atual, não apenas à diluição da atenção. Sinais incluem respostas abordando o aspecto errado de uma consulta, chamadas de ferramenta apropriadas para uma tarefa diferente e saídas misturando requisitos de múltiplas fontes.

Implemente transições claras entre contextos de tarefas. Use gerenciamento de estado que isola objetivos, restrições e definições de ferramentas por tarefa. Quando a alternância de tarefas dentro de uma única sessão for inevitável, use marcadores explícitos de "redefinição de contexto" que sinalizam quais restrições se aplicam ao segmento atual.

Choque de Contexto: Protocolos de Resolução de Conflitos

Estabeleça regras de prioridade de fonte antes que os conflitos surjam. O choque de contexto difere do envenenamento — múltiplas informações são individualmente corretas, mas mutuamente contraditórias (conflitos de versão, diferenças de perspectiva, recuperação de múltiplas fontes com fatos divergentes).

Implemente filtragem de versão para excluir informações desatualizadas antes que entrem no contexto. Quando as contradições forem inevitáveis, marque-as explicitamente com anotações de conflito estruturadas: declare o que conflita, de qual fonte vem cada alegação e qual fonte tem precedência. Sem regras de prioridade explícitas, os modelos resolvem contradições de forma imprevisível.

Benchmarks Empíricos e Limiares

Use esses benchmarks para definir restrições de projeto — não como verdades universais. Evidências do tipo RULER mostram que o suporte a contexto longo anunciado não garante desempenho satisfatório na tarefa nesse comprimento (claim-context-degradation-lost-middle-ruler). Pontuações quase perfeitas de agulha no palheiro não preveem desempenho em contexto longo do mundo real.

Limiares de Degradação Específicos do Modelo

O início da degradação varia significativamente por família de modelo e tipo de tarefa. Como regra geral, espere que a degradação comece em 60-70% da janela de contexto anunciada para tarefas complexas de recuperação (o benchmark RULER descobriu que apenas 50% dos modelos que alegam 32K+ de contexto mantêm desempenho satisfatório nesse comprimento). Padrões-chave:

  • Modelos com pensamento estendido reduzem a alucinação através de verificação passo a passo, mas com maior latência e custo de token
  • Modelos otimizados para agentes/codificação tendem a ter melhor gerenciamento de atenção para contextos com muitas saídas de ferramenta
  • Modelos com janelas de contexto muito grandes (1M+) lidam com mais contexto bruto, mas ainda seguem curvas de degradação em forma de U — janelas maiores não eliminam o problema, elas o adiam

Sempre avalie os limiares de degradação com sua carga de trabalho específica, em vez de confiar em benchmarks publicados. Os limiares específicos do modelo ficam desatualizados com cada atualização do modelo (veja Pegadinha 2).

Descobertas Contraintuitivas

Considere essas surpresas apoiadas por pesquisa ao projetar estratégias de contexto:

Contexto embaralhado pode superar contexto coerente. Estudos descobriram que palheiros incoerentes (embaralhados) podem superar os ordenados logicamente para algumas tarefas de recuperação (claim-context-degradation-distractor-shuffled). O contexto coerente pode criar associações falsas que confundem a recuperação; o contexto incoerente pode forçar a correspondência exata. Não presuma que um contexto mais bem organizado sempre produz melhores resultados — teste ambos os arranjos.

Distratores únicos têm impacto desproporcional. A queda de desempenho de um documento irrelevante é desproporcionalmente grande em comparação com a adição de mais distratores após o primeiro. Trate a prevenção de distratores como binária: ou mantenha o contexto limpo ou aceite degradação significativa.

Baixa similaridade pergunta-agulha acelera a degradação. Tarefas que exigem inferência entre conteúdos dissimilares degradam mais rápido com o comprimento do contexto do que tarefas com alta similaridade superficial. Projete a recuperação para maximizar a sobreposição semântica entre consultas e conteúdo recuperado.

Quando Contextos Maiores Prejudicam

Não presuma que janelas de contexto maiores melhoram o desempenho. O desempenho permanece estável até um limite específico do modelo, depois degrada rapidamente — a curva é não linear com uma borda de penhasco, não uma inclinação suave. Para muitos modelos, a degradação significativa começa em 8K-16K tokens, mesmo quando as janelas suportam tamanhos muito maiores.

Considere o custo: processar um contexto de 400 mil tokens custa exponencialmente mais do que 200 mil tanto em tempo quanto em computação, não linearmente mais. Para muitas aplicações, isso torna o processamento de contexto grande economicamente impraticável.

Reconheça o gargalo cognitivo: mesmo com contexto infinito, pedir a um único modelo que mantenha qualidade em dezenas de tarefas independentes cria degradação que mais contexto não pode resolver. Divida tarefas entre subagentes em vez de expandir o contexto.

Orientação Prática

Estrutura de Mitigação de Quatro Baldes

Aplique estas quatro estratégias com base em qual padrão de degradação está ativo:

Escrever — Salve o contexto fora da janela usando rascunhos, sistemas de arquivos ou armazenamento externo. Use quando a utilização do contexto exceder 70% da janela. Isso mantém o contexto ativo enxuto enquanto preserva o acesso à informação através de chamadas de ferramenta.

Selecionar — Puxe apenas o contexto relevante para a janela através de recuperação, filtragem e priorização. Use quando sintomas de distração ou confusão aparecerem. Aplique pontuação de relevância antes de carregar; exclua qualquer coisa abaixo do limite em vez de incluir tudo disponível.

Comprimir — Reduza tokens enquanto preserva informações através de sumarização, abstração e mascaramento de observação. Use quando o contexto está crescendo, mas todo o conteúdo é relevante. Substitua saídas de ferramenta verbosas por resumos estruturados compactos; abstraia padrões repetidos em referências únicas.

Isolar — Divida o contexto entre subagentes ou sessões para evitar que qualquer contexto único cresça além de seu limite de degradação. Use quando sintomas de confusão ou choque aparecerem, ou quando as tarefas forem independentes. Esta é a estratégia mais agressiva, mas muitas vezes a mais eficaz para sistemas complexos de múltiplas tarefas.

Padrões Arquitetônicos para Resiliência

Implemente carregamento de contexto just-in-time: recupere informações apenas quando a etapa de raciocínio atual precisar delas, não preventivamente. Use mascaramento de observação para substituir saídas de ferramenta verbosas por referências compactas após o processamento. Implemente arquiteturas de subagentes onde cada agente detém apenas o contexto relevante para a tarefa. Dispare a compactação antes que o contexto exceda o limite de início de degradação específico do modelo — não depois que os sintomas aparecerem.

Exemplos

Exemplo 1: Detectando Degradação

# O contexto cresce durante uma longa conversa
turno_1: 1000 tokens
turno_5: 8000 tokens
turno_10: 25000 tokens
turno_20: 60000 tokens (a degradação começa)
turno_30: 90000 tokens (degradação significativa)

Exemplo 2: Mitigando Lost-in-Middle

# Organize o contexto com informações críticas nas bordas

[TAREFA ATUAL]                      # No início
- Objetivo: Gerar relatório trimestral
- Prazo: Final da semana

[CONTEXTO DETALHADO]                # Meio (menos atenção)
- 50 páginas de dados
- Múltiplas seções de análise
- Evidências de suporte

[PRINCIPAIS DESCOBERTAS]            # No final
- Receita aumentou 15%
- Custos caíram 8%
- Crescimento na Região A

Exemplo 3: Disjuntor de envenenamento de contexto

sintoma: agente continua citando uma afirmação recuperada incorreta após correção
diagnóstico: contexto envenenado, não um problema de instrução ausente
ação:
  1. identificar o primeiro turno onde a afirmação ruim entrou
  2. truncar ou reiniciar a partir de antes desse ponto
  3. recarregar apenas fontes verificadas
  4. registrar a afirmação rejeitada e a proveniência da fonte

Exemplo 4: Anotação de choque de contexto

conflito:
  tópico: versão da API de cobrança
  fonte_a: docs/v1.md diz que o endpoint é /charges
  fonte_b: docs/v2.md diz que o endpoint é /payments
  precedência: docs/v2.md
  motivo: versão de produção atual

Diretrizes

  1. Monitore o comprimento do contexto e a correlação de desempenho durante o desenvolvimento
  2. Coloque informações críticas no início ou no final do contexto
  3. Implemente gatilhos de compactação antes que a degradação se torne severa
  4. Valide documentos recuperados quanto à precisão antes de adicionar ao contexto
  5. Use versionamento para evitar que informações desatualizadas causem choque
  6. Segmente tarefas para evitar confusão de contexto entre diferentes objetivos
  7. Projete para degradação graciosa em vez de falha abrupta
  8. Documente suposições e compensações ao gerenciar contexto
  9. Teste ambos os arranjos de contexto (coerente e embaralhado) em tarefas críticas
  10. Use a recuperação just-in-time como padrão, não pré-carregue dados

Pegadinhas e Armadilhas

Pegadinha 1: Degradação furtiva é pior que degradação óbvia

A degradação gradual é mais perigosa que quedas abruptas de desempenho. Quando as saídas pioram lentamente ao longo de uma longa conversa, as mudanças são difíceis de detectar até que a qualidade se torne inaceitável. Tendências graduais são facilmente perdidas. Monitore o desempenho em relação ao comprimento do contexto e estabeleça alertas automatizados em limites, em vez de confiar em juízo subjetivo.

Pegadinha 2: Limiares de contexto ficam desatualizados com cada lançamento

O desempenho do modelo muda substancialmente com atualizações não anunciadas. Um modelo que lidava com 20 mil tokens com boa precisão em março pode degradar em 12 mil após um ajuste fino ou uma mudança de arquitetura. As melhorias também podem estender janelas utilizáveis além dos limites atuais. Trate todas as afirmações de suporte a contexto como datas de validade: reavalie após cada atualização do modelo, não presuma que o desempenho anterior persiste.

Pegadinha 3: Grande contexto não resolve todos os problemas de contexto

Não use suporte a contexto grande como desculpa para uma engenharia de contexto ruim. Janelas de 100 mil tokens não eliminam a degradação lost-in-middle, não previnem envenenamento, não resolvem conflitos de versão e não eliminam a necessidade de recuperação de informações. Mesmo com janelas de contexto grandes, a curadoria agressiva e a segmentação de tarefas permanecem essenciais. A arquitetura de contexto é necessária em todos os tamanhos de janela.

Prevenção de Duplicação

Considere estas habilidades alternativas quando a tarefa se sobrepor a outras áreas:

  • A implementação de sistemas de descoberta de conhecimento em toda a base de código deve considerar o escopo da base de código antes de carregar fontes: codebase-scoping.
  • A configuração de recuperação para busca de conhecimento deve ser tratada pela ferramenta de busca, não pelo prompt: browser.
  • As explicações do impacto da engenharia de prompt na qualidade do modelo são cobertas por: prompt-engineering.

Individual skills in this repo

This repo contains 19 individual skills — each has its own dedicated page.

advanced-evaluation

This skill should be used for advanced LLM evaluation: LLM-as-judge systems, direct scoring, pairwise comparison, rubric calibration, evaluator bias mitigation, confidence scoring, and automated quality assessment.

bdi-mental-states

This skill should be used when modeling agent mental states with BDI concepts: beliefs, desires, intentions, RDF-to-belief transformations, rational agency traces, cognitive agents, BDI ontologies, and neuro-symbolic AI integration.

book-sft-pipeline

This skill should be used for book-to-SFT pipelines: ePub extraction, literary segmentation, author-voice dataset construction, style-transfer training, LoRA workflows, and model evaluation for voice replication.

comprehensive-research-agent

Ensure thorough validation, error recovery, and transparent reasoning in research tasks with multiple tool calls

context-compression

This skill should be used when long-running agent sessions need context compression, structured summarization, compaction, token-per-task optimization, or durable handoff summaries that preserve decisions, files, risks, and next actions.

context-fundamentals

This skill should be used to explain or reason about the foundational concepts of context engineering: what context is, the anatomy of a context window, how attention mechanics work, the U-shaped attention curve, why context quality matters more than quantity, and the mental models needed to interpret every other context-engineering decision. Use this for conceptual explanation, onboarding, and background reading. Route operational work to the specialized skills: debugging attention failures goes to context-degradation, token-efficiency work goes to context-optimization, conversation summarization goes to context-compression, and project-shape decisions go to project-development.

context-optimization

This skill should be used for improving context efficiency: context budgeting, observation masking, prefix or KV-cache strategy, partitioning, token-cost reduction, retrieval scoping, and extending effective context capacity without lowering answer quality.

evaluation

This skill should be used when building agent evaluation systems: deterministic checks, regression suites, multi-dimensional rubrics, quality gates, production monitoring, baseline comparison, and outcome measurement for agent pipelines.

filesystem-context

This skill should be used when agent work needs file-backed context: durable scratchpads, tool-output offloading, just-in-time discovery, cross-agent handoff files, filesystem memory, or cleanup policies for context stored outside the prompt.

harness-engineering

This skill should be used when designing autonomous agent harnesses: research loops, evaluation scaffolds, locked and editable surfaces, durable logs, novelty gates, pruning, rollback, PR preparation, and human approval boundaries.

hosted-agents

This skill should be used when designing hosted or background agent infrastructure: sandboxed execution, remote coding environments, warm pools, session persistence, multiplayer collaboration, self-spawning agents, or Modal-style sandboxes.

latent-briefing

This skill should be used when the user asks to "share memory between agents", "KV cache compaction for multi-agent", "orchestrator worker context", "latent briefing", "reduce worker tokens", "cross-agent memory without summarization", or discusses Attention Matching compaction, recursive language models with workers, or token explosion in hierarchical agents.

long-horizon-prompting

This skill should be used when writing, enhancing, or evaluating the launch prompt for a long-running autonomous agent or a parallel multi-agent orchestration attacking a hard problem: pseudo-formal task briefs that define terms and an exact success predicate linguistically, enumerate non-counting outcomes, set persistence rules with explicit stop and return conditions and effort floors, manage a diverse portfolio of parallel approaches with an approach registry and blocked-route bookkeeping, and gate the return on adversarial audit. Route agent topology and coordination protocols to multi-agent-patterns, runtime control surfaces and loop governance to harness-engineering, evaluator and quality-gate construction to evaluation, judge design to advanced-evaluation, and compaction or memory mechanics to context-compression and memory-systems.

memory-systems

This skill should be used for persistent semantic memory in agent systems: cross-session knowledge retention, entity tracking, temporal validity, graph or vector retrieval, memory consolidation, and memory benchmark selection. Route file-backed scratchpads to filesystem-context, handoff summaries to context-compression, and token-efficiency tactics to context-optimization.

multi-agent-patterns

This skill should be used when designing multi-agent systems that need context isolation, supervisor or swarm coordination, explicit handoffs, parallel execution, or a decision on whether multiple agents are justified.

project-development

This skill should be used for project-level decisions about LLM-powered systems: whether an LLM is the right primitive for the task at hand, the shape of a multi-stage batch or agent pipeline, token and cost estimation, choosing between single-agent and multi-agent at the project level, structured output design for downstream parsing, and structuring agent-assisted iteration. Use this when the unit of work is a whole project or a multi-stage pipeline. Route individual tool design to tool-design and individual skill-loading or context-budget tactics to context-optimization.

self-improvement-loops

This skill should be used when the harness, scaffold, workflow, or optimizer itself is the optimization target: recursive self-improvement (RSI) loops, meta-harnesses, self-improving harnesses that mine their own failures and propose bounded edits, evolutionary or population-based search over agent scaffolds, acceptance gates for self-modifying systems, and agentic context evolution where the mechanism that produces context is versioned and evolved. Route governance of a single autonomous loop (locked surfaces, durable logs, rollback, novelty gates, approval boundaries) to harness-engineering, measurement and quality-gate design to evaluation, judge design to advanced-evaluation, and remote sandbox infrastructure to hosted-agents.

self-managed-context

This skill should be used when a model gets read-write control over its own live context window instead of a harness-scheduled compaction policy: the context exposed as an editable file the model rewrites with code tools, model-driven eviction and in-place updates, the harness invariants that keep self-editing safe (pinned prefix, edit gate, edit receipts, budget readouts, rollback on overflow), the prefix-cache cost of mid-context edits, and steering or training the model's own context-editing strategy. Route note content and fixed-threshold summarization to context-compression, cache-stable layout under harness control to context-optimization, file offloading to filesystem-context, and loop governance to self-improvement-loops.

tool-design

This skill should be used for the tool-interface layer of an agent system specifically: writing tool descriptions agents can route on, designing tool schemas and response formats, naming conventions, actionable error recovery messages, MCP server design, tool-set consolidation, and deciding when to add or remove an individual tool. Use this when the unit of work is a single tool or a set of tools. Route project-shape, pipeline architecture, and task-model-fit decisions to project-development; route deciding whether to introduce sub-agents to multi-agent-patterns.

Habilidades Relacionadas