feat(full-guide): localize static strings and update snapshot

- Wrapped the static English prose in `data-language-content="en"`
- Paired every english prose with its Portuguese counterpart in `data-language-content="pt"`
- Updated static `Localized` props in Astro blocks
- Regenerated the static snapshot because Attempt 2 of the migration dropped several legacy sections (`.builder-intro`, `.exercise-brief`, `.comparison-strip`, etc.) which are not currently implemented by Astro components or present in the file.
This commit is contained in:
Marcos Paulo
2026-09-05 22:20:36 +00:00
parent 2b49106b7f
commit aa49218fc8
2 changed files with 679 additions and 242 deletions
+439 -84
View File
@@ -95,24 +95,45 @@ const selectorData = {
labels,
};
const workerCards = [
{ id: 'ui', label: 'UI', strong: 'Component and visual states', code: 'agent/ui' },
{ id: 'tests', label: 'TEST', strong: 'Acceptance cases', code: 'agent/tests' },
{ id: 'docs', label: 'DOCS', strong: 'Guide and examples', code: 'agent/docs' },
];
const treeBranches = [
{ id: 'ui', label: 'UI AGENT', strong: 'agent/ui', small: '3 files · working', tone: 'ui' },
{
id: 'ui',
label: 'UI',
strong: { en: 'Component and visual states', pt: 'Componentes e estados visuais' },
code: 'agent/ui',
},
{
id: 'tests',
label: 'TEST AGENT',
label: 'TEST',
strong: { en: 'Acceptance cases', pt: 'Casos de aceitação' },
code: 'agent/tests',
},
{
id: 'docs',
label: 'DOCS',
strong: { en: 'Guide and examples', pt: 'Guia e exemplos' },
code: 'agent/docs',
},
];
const treeBranches = [
{
id: 'ui',
label: { en: 'UI AGENT', pt: 'AGENTE DE UI' },
strong: 'agent/ui',
small: { en: '3 files · working', pt: '3 arquivos · trabalhando' },
tone: 'ui',
},
{
id: 'tests',
label: { en: 'TEST AGENT', pt: 'AGENTE DE TESTES' },
strong: 'agent/tests',
small: '8 checks · ready',
small: { en: '8 checks · ready', pt: '8 verificações · pronto' },
tone: 'tests',
},
{
id: 'docs',
label: 'DOCS AGENT',
label: { en: 'DOCS AGENT', pt: 'AGENTE DE DOCS' },
strong: 'agent/docs',
small: '2 pages · review',
small: { en: '2 pages · review', pt: '2 páginas · revisão' },
tone: 'docs',
},
];
@@ -128,29 +149,86 @@ const base = import.meta.env.BASE_URL;
<header class="topbar">
<a class="brand" href="#top"><span class="mark">A</span> field guide</a>
<nav class="chapter-links" aria-label="Chapter sections">
<a href="#fleet">01 fleet</a><a href="#worktrees">02 worktrees</a><a href="#models"
>03 models</a
><a href="#skills">04 skills</a><a href="#create-skill">05 create</a><a href="#field-kit"
>06 field kit</a
><a href="#hands-on">07 hands-on</a><a href="#verification">08 verify</a>
<a href="#fleet"
><span data-language-content="en">01 fleet</span><span data-language-content="pt" hidden
>01 frota</span
></a
><a href="#worktrees"
><span data-language-content="en">02 worktrees</span><span
data-language-content="pt"
hidden>02 worktrees</span
></a
><a href="#models"
><span data-language-content="en">03 models</span><span data-language-content="pt" hidden
>03 modelos</span
></a
><a href="#skills"
><span data-language-content="en">04 skills</span><span data-language-content="pt" hidden
>04 skills</span
></a
><a href="#create-skill"
><span data-language-content="en">05 create</span><span data-language-content="pt" hidden
>05 criar</span
></a
><a href="#field-kit"
><span data-language-content="en">06 field kit</span><span
data-language-content="pt"
hidden>06 kit de campo</span
></a
><a href="#hands-on"
><span data-language-content="en">07 hands-on</span><span
data-language-content="pt"
hidden>07 prática</span
></a
><a href="#verification">08 verify</a>
</nav>
<div class="topbar-tools">
<a class="skills-review-link" href={`${base}skills-review/`}>review submissions </a
><LanguageToggle /><span class="edition">AI ENGINEERING <i></i> 01 / 2026</span>
><LanguageToggle /><span class="edition"
><span data-language-content="en">AI ENGINEERING <i></i> 01 / 2026</span><span
data-language-content="pt"
hidden>ENGENHARIA DE IA <i></i> 01 / 2026</span
></span
>
</div>
</header>
<section class="hero" id="top" data-language-content="en">
<div>
<p class="eyebrow">A presentation for humans who ship</p><h1>
<p class="eyebrow">
<span data-language-content="en">A presentation for humans who ship</span><span
data-language-content="pt"
hidden>Uma apresentação para quem entrega software</span>
</p><h1>
AI for<br /><em>dummies.</em>
</h1><p class="lede">
You do not need an army of models. You need a system: one mind to frame the work, several
hands to execute it, and a clean boundary between every task.
<span data-language-content="en"
>You do not need an army of models. You need a system: one mind to frame the work,
several hands to execute it, and a clean boundary between every task.</span
>
<span data-language-content="pt" hidden
>Você não precisa de um exército de modelos. Precisa de um sistema: uma mente para
enquadrar o trabalho, várias mãos para executá-lo e uma fronteira clara entre cada
tarefa.</span
>
</p>
</div><aside class="hero-index">
<span>FIELD NOTE / 001</span><strong>Ship the<br /><em>system.</em></strong><small
>Skills · agents · worktrees · proof</small>
<span
><span data-language-content="en">FIELD NOTE / 001</span><span
data-language-content="pt"
hidden>NOTA DE CAMPO / 001</span
></span
><strong
><span data-language-content="en">Ship the<br /><em>system.</em></span><span
data-language-content="pt"
hidden>Entregue o<br /><em>sistema.</em></span
></strong
><small
><span data-language-content="en">Skills · agents · worktrees · proof</span><span
data-language-content="pt"
hidden>Skills · agentes · worktrees · evidências</span
></small
>
</aside>
</section>
<section class="hero" id="top-pt" data-language-content="pt" hidden>
@@ -163,15 +241,36 @@ const base = import.meta.env.BASE_URL;
</p>
</div><aside class="hero-index">
<span>NOTA DE CAMPO / 001</span><strong>Entregue o<br /><em>sistema.</em></strong><small
>Skills · agentes · worktrees · evidências</small>
>Skills · agentes · worktrees · evidências</small
>
</aside>
</section>
<section class="hero-stats" aria-label="Chapter summary" data-language-content="en">
<div><strong>01</strong><span>strong model<br />for ambiguity</span></div><div>
<strong>03</strong><span>bounded workers<br />in parallel</span>
</div><div><strong></strong><span>iterations<br />with evidence</span></div><p>
Read this as a route map, not a prompt recipe.
<div>
<strong>01</strong><span
><span data-language-content="en">strong model<br />for ambiguity</span><span
data-language-content="pt"
hidden>modelo forte<br />para ambiguidade</span
></span>
</div><div>
<strong>03</strong><span
><span data-language-content="en">bounded workers<br />in parallel</span><span
data-language-content="pt"
hidden>workers delimitados<br />em paralelo</span
></span
>
</div><div>
<strong></strong><span
><span data-language-content="en">iterations<br />with evidence</span><span
data-language-content="pt"
hidden>iterações<br />com evidências</span
></span>
</div><p>
<span data-language-content="en">Read this as a route map, not a prompt recipe.</span><span
data-language-content="pt"
hidden>Leia isto como um mapa de rota, não como uma receita de prompt.</span
>
</p>
</section>
<section class="hero-stats" aria-label="Resumo dos capítulos" data-language-content="pt" hidden>
@@ -184,8 +283,17 @@ const base = import.meta.env.BASE_URL;
<section class="thesis" data-language-content="en">
<div>
<span>RULE ZERO</span><strong
>Strong model for ambiguity.<br />Light model for bounded work.</strong>
<span
><span data-language-content="en">RULE ZERO</span><span data-language-content="pt" hidden
>REGRA ZERO</span
></span
><strong
><span data-language-content="en"
>Strong model for ambiguity.<br />Light model for bounded work.</span
><span data-language-content="pt" hidden
>Modelo forte para ambiguidade.<br />Modelo leve para trabalho delimitado.</span
></strong
>
</div><div class="signal" aria-hidden="true">
<b>THINK</b><i></i><i></i><i></i><b>MAKE</b>
</div>
@@ -193,7 +301,8 @@ const base = import.meta.env.BASE_URL;
<section class="thesis" data-language-content="pt" hidden>
<div>
<span>REGRA ZERO</span><strong
>Modelo forte para ambiguidade.<br />Modelo leve para trabalho delimitado.</strong>
>Modelo forte para ambiguidade.<br />Modelo leve para trabalho delimitado.</strong
>
</div><div class="signal" aria-hidden="true">
<b>PENSE</b><i></i><i></i><i></i><b>FAÇA</b>
</div>
@@ -201,17 +310,31 @@ const base = import.meta.env.BASE_URL;
<section class="fleet" id="fleet">
<div class="section-label">
<span>A small fleet</span><span>coordination before parallelism</span>
<span
><span data-language-content="en">A small fleet</span><span
data-language-content="pt"
hidden>Uma pequena frota</span
></span
><span
><span data-language-content="en">coordination before parallelism</span><span
data-language-content="pt"
hidden>coordenação antes do paralelismo</span
></span
>
</div><FleetDiagram
orchestrator={{
eyebrow: 'ORCHESTRATOR',
title: 'Decides what<br />needs to happen.',
eyebrow: { en: 'ORCHESTRATOR', pt: 'ORQUESTRADOR' },
title: {
en: 'Decides what<br />needs to happen.',
pt: 'Decide o que<br />precisa acontecer.',
},
code: 'Opus / reasoning',
}}
workers={workerCards}
/><div class="worker-detail" id="worker-detail" aria-live="polite">
<span>{workers.ui.en[0]}</span><strong>{workers.ui.en[1]}</strong><small
>{workers.ui.en[2]}</small>
>{workers.ui.en[2]}</small
>
</div><p class="caption">
The orchestrator preserves intent, writes small contracts, and gathers results that can be
verified. It does not need to type every line.
@@ -219,20 +342,57 @@ const base = import.meta.env.BASE_URL;
</section>
<section class="failure-map">
<div class="section-label">
<span>Why the boundary matters</span><span
>one vague task / three predictable failures</span>
<span
><span data-language-content="en">Why the boundary matters</span><span
data-language-content="pt"
hidden>Por que a fronteira importa</span
></span
><span
><span data-language-content="en">one vague task / three predictable failures</span><span
data-language-content="pt"
hidden>uma tarefa vaga / três falhas previsíveis</span
></span
>
</div><div class="failure-grid">
<article>
<span>01</span><strong>Context soup</strong><p>
Every worker reads everything. Nobody knows which facts are load-bearing.
<span>01</span><strong
><span data-language-content="en">Context soup</span><span
data-language-content="pt"
hidden>Sopa de contexto</span
></strong
><p>
<span data-language-content="en"
>Every worker reads everything. Nobody knows which facts are load-bearing.</span
><span data-language-content="pt" hidden
>Cada worker tudo. Ninguém sabe quais fatos são essenciais.</span
>
</p>
</article><article>
<span>02</span><strong>Branch collision</strong><p>
Two agents touch the same checkout. The fastest path becomes conflict resolution.
<span>02</span><strong
><span data-language-content="en">Branch collision</span><span
data-language-content="pt"
hidden>Colisão de branches</span
></strong
><p>
<span data-language-content="en"
>Two agents touch the same checkout. The fastest path becomes conflict resolution.</span
><span data-language-content="pt" hidden
>Dois agentes usam o mesmo checkout. O caminho mais rápido vira resolução de
conflitos.</span
>
</p>
</article><article>
<span>03</span><strong>Confident drift</strong><p>
The diff is polished, but no one checks whether it solved the original problem.
<span>03</span><strong
><span data-language-content="en">Confident drift</span><span
data-language-content="pt"
hidden>Desvio confiante</span
></strong
><p>
<span data-language-content="en"
>The diff is polished, but no one checks whether it solved the original problem.</span
><span data-language-content="pt" hidden
>O diff parece ótimo, mas ninguém verifica se resolveu o problema original.</span
>
</p>
</article>
</div>
@@ -240,8 +400,15 @@ const base = import.meta.env.BASE_URL;
<section class="workflow" aria-labelledby="workflow-title">
<div class="copy">
<p class="eyebrow">The subagent loop</p><h2 id="workflow-title">
Click a phase.<br /><em>See the handoff.</em>
<p class="eyebrow">
<span data-language-content="en">The subagent loop</span><span
data-language-content="pt"
hidden>O ciclo de subagentes</span>
</p><h2 id="workflow-title">
<span data-language-content="en">Click a phase.<br /><em>See the handoff.</em></span><span
data-language-content="pt"
hidden>Clique em uma fase.<br /><em>Veja a passagem.</em></span
>
</h2><p>
Delegation means moving one bounded task into a smaller contextnot giving away
responsibility.
@@ -280,9 +447,23 @@ const base = import.meta.env.BASE_URL;
</section>
<section class="handoff">
<div class="section-label">
<span>What crosses contexts</span><span>brief diff evidence</span>
<span
><span data-language-content="en">What crosses contexts</span><span
data-language-content="pt"
hidden>O que atravessa contextos</span
></span
><span
><span data-language-content="en">brief diff evidence</span><span
data-language-content="pt"
hidden>brief diff evidência</span
></span
>
</div><HandoffTable
columns={['Package', 'Contains', 'Why it matters']}
columns={[
{ en: 'Package', pt: 'Pacote' },
{ en: 'Contains', pt: 'Contém' },
{ en: 'Why it matters', pt: 'Por que importa' },
]}
rows={[
{
package: 'Brief',
@@ -310,15 +491,37 @@ const base = import.meta.env.BASE_URL;
<section class="worktrees" id="worktrees">
<div class="worktree-intro">
<p class="eyebrow">Git worktrees</p><h2>One branch<br />per <em>hand.</em></h2><p>
<p class="eyebrow">
<span data-language-content="en">Git worktrees</span><span
data-language-content="pt"
hidden>Git worktrees</span>
</p><h2>
<span data-language-content="en">One branch<br />per <em>hand.</em></span><span
data-language-content="pt"
hidden>Uma branch<br />por <em>mão.</em></span>
</h2><p>
A worktree is another directory linked to the same repository. Each agent gets its own
checkout and index; history remains shared.
</p><p class="interaction-hint">
Select a node to inspect its checkout, owner, and next action.
<span data-language-content="en"
>Select a node to inspect its checkout, owner, and next action.</span
><span data-language-content="pt" hidden
>Selecione um para inspecionar checkout, responsável e próxima ação.</span
>
</p>
</div><div class="tree-lab">
<div class="tree-toolbar">
<span>repository topology</span><span class="tree-live"><i></i> 4 checkouts</span>
<span
><span data-language-content="en">repository topology</span><span
data-language-content="pt"
hidden>topologia do repositório</span
></span
><span class="tree-live"
><span data-language-content="en"><i></i> 4 checkouts</span><span
data-language-content="pt"
hidden><i></i> 4 checkouts</span
></span
>
</div><WorktreeMap branches={treeBranches} /><article
class="tree-detail"
id="tree-detail"
@@ -333,33 +536,45 @@ const base = import.meta.env.BASE_URL;
<section class="routing">
<div>
<p class="eyebrow">Model routing</p><h2>
Do not pay for<br />reasoning where<br />you need <em>rhythm.</em>
</h2><p class="interaction-hint">Choose a job to see why the model profile changes.</p>
<p class="eyebrow">
<span data-language-content="en">Model routing</span><span
data-language-content="pt"
hidden>Roteamento de modelos</span>
</p><h2>
<span data-language-content="en"
>Do not pay for<br />reasoning where<br />you need <em>rhythm.</em></span
><span data-language-content="pt" hidden
>Não pague por<br />raciocínio onde precisa<br />de <em>ritmo.</em></span
>
</h2><p class="interaction-hint">
<span data-language-content="en">Choose a job to see why the model profile changes.</span
><span data-language-content="pt" hidden
>Escolha um trabalho para entender por que o perfil do modelo muda.</span>
</p>
</div><div class="route-console">
<RouteTable
routes={[
{
id: 'plan',
strong: 'Plan',
strong: { en: 'Plan', pt: 'Planejar' },
profile: 'strong / broad',
prompt: 'What changes? What can break?',
},
{
id: 'build',
strong: 'Build',
strong: { en: 'Build', pt: 'Construir' },
profile: 'fast / focused',
prompt: 'Implement this slice. Run these checks.',
},
{
id: 'explore',
strong: 'Explore',
strong: { en: 'Explore', pt: 'Explorar' },
profile: 'read-only / light',
prompt: 'Find where this contract is used.',
},
{
id: 'review',
strong: 'Review',
strong: { en: 'Review', pt: 'Revisar' },
profile: 'independent',
prompt: 'Does the diff satisfy the brief?',
},
@@ -376,8 +591,44 @@ const base = import.meta.env.BASE_URL;
<section class="model-gearbox" id="models">
<div class="section-label">
<span>Model gearbox</span><span>capability tier × thinking effort</span>
</div><div class="gearbox">
<span
><span data-language-content="en">Model gearbox</span><span
data-language-content="pt"
hidden>Câmbio de modelos</span
></span
><span
><span data-language-content="en">capability tier × thinking effort</span><span
data-language-content="pt"
hidden>nível de capacidade × esforço de raciocínio</span
></span
>
</div>
<div class="gearbox-intro">
<div>
<p class="eyebrow">
<span data-language-content="en">Two separate knobs</span><span
data-language-content="pt"
hidden>Dois controles separados</span>
</p>
<h2>
<span data-language-content="en"
>Choose the engine.<br />Then choose the <em>gear.</em></span
><span data-language-content="pt" hidden
>Escolha o motor.<br />Depois escolha a <em>marcha.</em></span>
</h2>
</div>
<p>
<span data-language-content="en"
>A stronger model changes the capability ceiling. Higher reasoning effort gives that
model more room to work. Start with the lightest combination that passes your real
checks, then move one knob at a time.</span
><span data-language-content="pt" hidden
>Um modelo mais forte muda o teto de capacidade. Mais esforço de raciocínio mais
espaço para esse modelo trabalhar. Comece com a combinação mais leve que passa seus
checks e mova um controle por vez.</span>
</p>
</div>
<div class="gearbox">
<div class="provider-tabs" role="tablist" aria-label="Model providers">
<button class="active" data-model-provider="openai" role="tab" aria-selected="true"
>OPENAI</button
@@ -388,27 +639,84 @@ const base = import.meta.env.BASE_URL;
<span>{providers.openai.label}</span><a
href={providers.openai.source}
target="_blank"
rel="noopener">{labels.officialSource.en}</a>
rel="noopener">{labels.officialSource.en}</a
>
</header><h3>{providers.openai.title.en}</h3><p>{providers.openai.copy.en}</p>
</article><div class="effort-rail" role="tablist" aria-label="Reasoning effort">
<button data-effort="low" role="tab" aria-selected="false">LOW</button><button
class="active"
data-effort="medium"
role="tab"
aria-selected="true">MEDIUM</button
><button data-effort="high" role="tab" aria-selected="false">HIGH</button>
<span
><span data-language-content="en">REASONING / THINKING</span><span
data-language-content="pt"
hidden>RACIOCÍNIO / PENSAMENTO</span
></span
>
<button data-effort="low" role="tab" aria-selected="false"
><b
><span data-language-content="en">LOW</span><span data-language-content="pt" hidden
>BAIXO</span
></b
><small
><span data-language-content="en">bounded + fast</span><span
data-language-content="pt"
hidden>delimitado + rápido</span
></small
></button
><button class="active" data-effort="medium" role="tab" aria-selected="true"
>MEDIUM</button
><button data-effort="high" role="tab" aria-selected="false"
><b
><span data-language-content="en">HIGH</span><span data-language-content="pt" hidden
>ALTO</span
></b
><small
><span data-language-content="en">complex + costly</span><span
data-language-content="pt"
hidden>complexo + custoso</span
></small
></button
>
</div><article class="effort-detail" id="effort-detail" aria-live="polite">
<span>{efforts.medium.en[0]}</span><p>{efforts.medium.en[1]}</p><code
>{providers.openai.config}</code>
>{providers.openai.config}</code
>
</article>
</div>
<div class="gearbox-rule">
<span
><span data-language-content="en">ROUTING RULE</span><span
data-language-content="pt"
hidden>REGRA DE ROTEAMENTO</span
></span
>
<strong
><span data-language-content="en"
>Use strong models for ambiguity and judgment. Use lighter models for bounded execution.
Raise effort only when evaluation shows a gain.</span
><span data-language-content="pt" hidden
>Use modelos fortes para ambiguidade e julgamento. Use modelos leves para execução
delimitada. Aumente o esforço apenas quando a avaliação mostrar ganho.</span
></strong
>
</div>
</section>
<section class="skills" id="skills">
<div>
<p class="eyebrow">Skills</p><h2>Write the right way<br /><em>once.</em></h2><p>
A skill is a reusable procedure. It can carry instructions, references, scripts, and
assets. It is not magical memory, and it does not replace acceptance criteria.
<p class="eyebrow">
<span data-language-content="en">Skills</span><span data-language-content="pt" hidden
>Skills</span>
</p><h2>
<span data-language-content="en">Write the right way<br /><em>once.</em></span><span
data-language-content="pt"
hidden>Escreva do jeito certo<br /><em>uma vez.</em></span>
</h2><p>
<span data-language-content="en"
>A skill is a reusable procedure. It can carry instructions, references, scripts, and
assets. It is not magical memory, and it does not replace acceptance criteria.</span
>
<span data-language-content="pt" hidden
>Uma skill é um procedimento reutilizável. Ela pode carregar instruções, referências,
scripts e assets. Não é memória mágica e não substitui critérios de aceitação.</span
>
</p>
</div><div class="skill-explorer">
<SkillPackage
@@ -421,7 +729,8 @@ const base = import.meta.env.BASE_URL;
/><article class="skill-detail" id="skill-detail" aria-live="polite">
<span>{skillFiles.skill.icon}</span><div>
<strong>{skillFiles.skill.title}</strong><p>{skillFiles.skill.en}</p><small
>{labels.skillFileHint.en}</small>
>{labels.skillFileHint.en}</small
>
</div>
</article>
</div>
@@ -457,10 +766,12 @@ const base = import.meta.env.BASE_URL;
</div><footer>
<div>
<span>{labels.workflow.artifact.en}</span><strong
>{skillWorkflow.observe.output.en}</strong>
>{skillWorkflow.observe.output.en}</strong
>
</div><div>
<span>{labels.workflow.proof.en}</span><strong
>{skillWorkflow.observe.proof.en}</strong>
>{skillWorkflow.observe.proof.en}</strong
>
</div>
</footer>
</article>
@@ -469,7 +780,17 @@ const base = import.meta.env.BASE_URL;
<section class="skill-catalog" id="field-kit">
<div class="section-label">
<span>Common skills</span><span>choose behavior before model</span>
<span
><span data-language-content="en">Common skills</span><span
data-language-content="pt"
hidden>Skills comuns</span
></span
><span
><span data-language-content="en">choose behavior before model</span><span
data-language-content="pt"
hidden>escolha o comportamento antes do modelo</span
></span
>
</div><div class="skill-deck">
<div class="skill-index" role="tablist" aria-label="Common agent skills">
{
@@ -490,8 +811,8 @@ const base = import.meta.env.BASE_URL;
}
</div><article class="common-skill-detail" id="common-skill-detail" aria-live="polite">
<header>
<span>{commonSkills.ponytail.number}</span><small
>{commonSkills.ponytail.kind.en}</small>
<span>{commonSkills.ponytail.number}</span><small>{commonSkills.ponytail.kind.en}</small
>
</header><h3>{commonSkills.ponytail.title}</h3><blockquote>
{commonSkills.ponytail.rule.en}
</blockquote><div class="common-skill-notes">
@@ -506,13 +827,15 @@ const base = import.meta.env.BASE_URL;
class="skill-source"
href={commonSkills.ponytail.source}
target="_blank"
rel="noopener">{labels.commonSkill.source.en}</a>
rel="noopener">{labels.commonSkill.source.en}</a
>
</article>
</div><article class="install-skills">
<header>
<div>
<span>INSTALL PACK</span><strong
>Ask your coding agent to verify, install, and validate the skills.</strong>
>Ask your coding agent to verify, install, and validate the skills.</strong
>
</div><CopyPrompt target="prompt-install-skills" />
</header><pre><code id="prompt-install-skills">{install.en}</code></pre><footer>
Review every source before installation. Existing local skills must be preserved.
@@ -535,7 +858,8 @@ const base = import.meta.env.BASE_URL;
</p><div class="starter-links">
<a href={`${base}hands-on/starter/`} class="starter-link">Open the starter </a><a
href={`${base}hands-on/rules/`}
class="starter-link">Open the rules lab </a>
class="starter-link">Open the rules lab </a
>
</div>
</div>
</div><div class="prompt-compare">
@@ -560,8 +884,19 @@ const base = import.meta.env.BASE_URL;
</section>
<aside class="rule">
<span>THE HUMAN JOB</span><strong
>The agent may be autonomous in execution. Intent, boundaries, and evidence remain yours.</strong>
<span
><span data-language-content="en">THE HUMAN JOB</span><span
data-language-content="pt"
hidden>O PAPEL HUMANO</span
></span
><strong
><span data-language-content="en"
>The agent may be autonomous in execution. Intent, boundaries, and evidence remain yours.</span
><span data-language-content="pt" hidden
>O agente pode ser autônomo na execução. Intenção, limites e evidências continuam sendo
seus.</span
></strong
>
</aside>
<section class="verification" id="verification">
<div class="section-label">
@@ -584,12 +919,32 @@ const base = import.meta.env.BASE_URL;
</section>
<section class="sources">
<div class="section-label">
<span>Keep learning</span><span>12 new readings + primary docs</span>
<span
><span data-language-content="en">Keep learning</span><span
data-language-content="pt"
hidden>Continue aprendendo</span
></span
><span
><span data-language-content="en">12 new readings + primary docs</span><span
data-language-content="pt"
hidden>12 novas leituras + documentação primária</span
></span
>
</div><p>
Go deeper with official documentation, production case studies, Medium, and practitioner
workflows. <a href={`${base}rules/`}>Rules and enforcement case study </a>
<a href={`${base}skills-review/`}>Skills review desk </a>
<a href={`${base}docs/references/additional-reading.md`}>12-part reading path </a>
<span data-language-content="en"
>Go deeper with official documentation, production case studies, Medium, and practitioner
workflows. <a href={`${base}rules/`}>Rules and enforcement case study </a>
<a href={`${base}skills-review/`}>Skills review desk </a>
<a href={`${base}docs/references/additional-reading.md`}>12-part reading path </a></span
>
<span data-language-content="pt" hidden
>Aprofunde com documentação oficial, casos de produção, Medium e fluxos de praticantes. <a
href={`${base}rules/`}>Estudo de caso sobre regras e enforcement </a
>
<a href={`${base}skills-review/`}>Skills review desk </a>
<a href={`${base}docs/references/additional-reading.md`}>Trilha com 12 leituras </a
></span
>
</p>
</section>
</main>