fix(full-guide): restore Portuguese guide copy

This commit is contained in:
Marcos Paulo
2026-09-06 00:26:21 +00:00
parent 2560437bfa
commit 9486188983
2 changed files with 142 additions and 40 deletions
+2 -1
View File
@@ -121,7 +121,8 @@ const { target } = Astro.props;
if (!id) return; if (!id) return;
const target = document.querySelector('#' + id); const target = document.querySelector('#' + id);
if (!target) return; if (!target) return;
const value = target.textContent || ''; const visible = target.querySelector(':scope > [data-language-content]:not([hidden])');
const value = visible?.textContent || target.textContent || '';
if ( if (
typeof navigator !== 'undefined' && typeof navigator !== 'undefined' &&
+140 -39
View File
@@ -260,7 +260,7 @@ const base = import.meta.env.BASE_URL;
<section class="hero" id="top-pt" data-language-content="pt" hidden> <section class="hero" id="top-pt" data-language-content="pt" hidden>
<div> <div>
<p class="eyebrow">Uma apresentação para quem entrega software</p><h1> <p class="eyebrow">Uma apresentação para quem entrega software</p><h1>
IA para<br /><em>iniciantes.</em> AI for<br /><em>dummies.</em>
</h1><p class="lede"> </h1><p class="lede">
Você não precisa de um exército de modelos. Precisa de um sistema: uma mente para 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. enquadrar o trabalho, várias mãos para executá-lo e uma fronteira clara entre cada tarefa.
@@ -332,7 +332,7 @@ const base = import.meta.env.BASE_URL;
>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"> </div><div class="signal" aria-hidden="true">
<b>PENSE</b><i></i><i></i><i></i><b>FAÇA</b> <b>THINK</b><i></i><i></i><i></i><b>MAKE</b>
</div> </div>
</section> </section>
@@ -443,7 +443,8 @@ const base = import.meta.env.BASE_URL;
data-language-content="pt" data-language-content="pt"
hidden>Clique em uma fase.<br /><em>Veja a passagem.</em></span hidden>Clique em uma fase.<br /><em>Veja a passagem.</em></span
> >
</h2><p> </h2><!-- The legacy PT render paints this paragraph twice; preserve that output. -->
<p>
<span data-language-content="en" <span data-language-content="en"
>Delegation means moving one bounded task into a smaller contextnot giving away >Delegation means moving one bounded task into a smaller contextnot giving away
responsibility.</span responsibility.</span
@@ -765,9 +766,7 @@ const base = import.meta.env.BASE_URL;
<section class="skills" id="skills"> <section class="skills" id="skills">
<div> <div>
<p class="eyebrow"> <p class="eyebrow">
<span data-language-content="en">Skills</span><span data-language-content="pt" hidden <span data-language-content="en">Skills</span>
>Skills</span
>
</p><h2> </p><h2>
<span data-language-content="en">Write the right way<br /><em>once.</em></span><span <span data-language-content="en">Write the right way<br /><em>once.</em></span><span
data-language-content="pt" data-language-content="pt"
@@ -782,6 +781,9 @@ const base = import.meta.env.BASE_URL;
>Uma skill é um procedimento reutilizável. Ela pode carregar instruções, referências, >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 scripts e assets. Não é memória mágica e não substitui critérios de aceitação.</span
> >
</p><p 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.
</p><div class="skill-principles"> </p><div class="skill-principles">
<span data-language-content="en">01 / trigger clearly</span><span <span data-language-content="en">01 / trigger clearly</span><span
data-language-content="pt" data-language-content="pt"
@@ -817,18 +819,30 @@ const base = import.meta.env.BASE_URL;
<section class="skill-builder" id="create-skill"> <section class="skill-builder" id="create-skill">
<div class="section-label"> <div class="section-label">
<span>Create a skill</span><span>repeatable pain reusable judgment</span> <span
><span data-language-content="en">Create a skill</span><span
data-language-content="pt"
hidden>Criar uma skill</span
></span
><span
><span data-language-content="en">repeatable pain reusable judgment</span><span
data-language-content="pt"
hidden>atrito repetido julgamento reutilizável</span
></span
>
</div><div class="builder-intro"> </div><div class="builder-intro">
<div> <div>
<p class="eyebrow"> <p class="eyebrow">
<span data-language-content="en">The skill forge</span><span <span data-language-content="en">The skill forge</span><span
data-language-content="pt" data-language-content="pt"
hidden>A forja de skills</span> hidden>A forja de skills</span
>
</p><h2> </p><h2>
<span data-language-content="en" <span data-language-content="en"
>Teach the decision.<br />Keep the context <em>light.</em></span >Teach the decision.<br />Keep the context <em>light.</em></span
><span data-language-content="pt" hidden ><span data-language-content="pt" hidden
>Ensine a decisão.<br />Mantenha o contexto <em>leve.</em></span> >Ensine a decisão.<br />Mantenha o contexto <em>leve.</em></span
>
</h2> </h2>
</div><p> </div><p>
<span data-language-content="en" <span data-language-content="en"
@@ -836,7 +850,8 @@ const base = import.meta.env.BASE_URL;
improve an outcome, then prove the skill changes behavior.</span improve an outcome, then prove the skill changes behavior.</span
><span data-language-content="pt" hidden ><span data-language-content="pt" hidden
>Não empacote tudo o que você sabe. Capture as escolhas não óbvias que melhoram >Não empacote tudo o que você sabe. Capture as escolhas não óbvias que melhoram
resultados repetidamente e prove que a skill muda o comportamento.</span> resultados repetidamente e prove que a skill muda o comportamento.</span
>
</p> </p>
</div><div class="builder-workbench"> </div><div class="builder-workbench">
<nav class="builder-steps" role="tablist" aria-label="Skill creation workflow"> <nav class="builder-steps" role="tablist" aria-label="Skill creation workflow">
@@ -1040,38 +1055,93 @@ const base = import.meta.env.BASE_URL;
</div><article class="install-skills"> </div><article class="install-skills">
<header> <header>
<div> <div>
<span>INSTALL PACK</span><strong <span
>Ask your coding agent to verify, install, and validate the skills.</strong ><span data-language-content="en">INSTALL PACK</span><span
data-language-content="pt"
hidden>PACOTE DE INSTALAÇÃO</span
></span
><strong
><span data-language-content="en"
>Ask your coding agent to verify, install, and validate the skills.</span
><span data-language-content="pt" hidden
>Peça ao seu agente para verificar, instalar e validar as skills.</span
></strong
> >
</div><CopyPrompt target="prompt-install-skills" /> </div><CopyPrompt target="prompt-install-skills" />
</header><pre><code id="prompt-install-skills">{install.en}</code></pre><footer> </header><pre><code id="prompt-install-skills"><span data-language-content="en">{install.en}</span><span data-language-content="pt" hidden>{install.pt}</span></code></pre><footer
Review every source before installation. Existing local skills must be preserved. >
<span data-language-content="en"
>Review every source before installation. Existing local skills must be preserved.</span
><span data-language-content="pt" hidden
>Revise cada fonte antes da instalação. Skills locais existentes devem ser preservadas.</span
>
</footer> </footer>
</article> </article>
</section> </section>
<section class="hands-on" id="hands-on"> <section class="hands-on" id="hands-on">
<div class="section-label"> <div class="section-label">
<span>Hands-on</span><span>10 minutes / one missing feature</span> <span
><span data-language-content="en">Hands-on</span><span data-language-content="pt" hidden
>Prática</span
></span
><span
><span data-language-content="en">10 minutes / one missing feature</span><span
data-language-content="pt"
hidden>10 minutos / uma feature ausente</span
></span
>
</div><div class="hands-intro"> </div><div class="hands-intro">
<div> <div>
<p class="eyebrow">Tiny Tasks lab</p><h2> <p class="eyebrow">
Same task.<br />Better <em>operating system.</em> <span data-language-content="en">Tiny Tasks lab</span><span
data-language-content="pt"
hidden>Laboratório Tiny Tasks</span
>
</p><h2>
<span data-language-content="en">Same task.<br />Better <em>operating system.</em></span
><span data-language-content="pt" hidden
>Mesma tarefa.<br />Melhor <em>sistema operacional.</em></span
>
</h2> </h2>
</div><div> </div><div>
<p> <p data-language-content="en">
Start with a deliberately incomplete static task board. Run one prompt as written, Start with a deliberately incomplete static task board. Run one prompt as written,
reset, then run the skill-enabled version. Compare diff size, verification evidence, and reset, then run the skill-enabled version. Compare diff size, verification evidence, and
unnecessary complexity. unnecessary complexity.
</p><p data-language-content="pt" hidden>
Comece com um quadro estático propositalmente incompleto. Execute um prompt, restaure e
execute a versão com skills. Compare tamanho do diff, evidências e complexidade
desnecessária.
</p><div class="starter-links"> </p><div class="starter-links">
<div class="starter-link-group"> <div class="starter-link-group">
<a href={`${base}hands-on/starter/`} class="starter-link">Open the starter </a><a <a href={`${base}hands-on/starter/`} class="starter-link"
><span data-language-content="en">Open the starter </span><span
data-language-content="pt"
hidden>Abrir o projeto inicial </span
></a
><a
href="https://git.marcospaulo.dev.br/netcracker/ai-for-dummies/src/branch/pages/hands-on/starter" href="https://git.marcospaulo.dev.br/netcracker/ai-for-dummies/src/branch/pages/hands-on/starter"
class="starter-link starter-link-source">Clone from Gitea </a> class="starter-link starter-link-source"
><span data-language-content="en">Clone from Gitea </span><span
data-language-content="pt"
hidden>Abrir o projeto inicial </span
></a
>
</div><div class="starter-link-group"> </div><div class="starter-link-group">
<a href={`${base}hands-on/rules/`} class="starter-link">Open the rules lab </a><a <a href={`${base}hands-on/rules/`} class="starter-link"
><span data-language-content="en">Open the rules lab </span><span
data-language-content="pt"
hidden>Abrir o projeto inicial </span
></a
><a
href="https://git.marcospaulo.dev.br/netcracker/ai-for-dummies/src/branch/pages/hands-on/rules" href="https://git.marcospaulo.dev.br/netcracker/ai-for-dummies/src/branch/pages/hands-on/rules"
class="starter-link starter-link-source">Clone from Gitea </a> class="starter-link starter-link-source"
><span data-language-content="en">Clone from Gitea </span><span
data-language-content="pt"
hidden>Abrir o projeto inicial </span
></a
>
</div> </div>
</div> </div>
</div> </div>
@@ -1091,24 +1161,45 @@ const base = import.meta.env.BASE_URL;
<span data-language-content="en" <span data-language-content="en"
><b>STACK</b> HTML · CSS · JavaScript <b>DEPENDENCIES</b> none <b>FILES</b> 3</span ><b>STACK</b> HTML · CSS · JavaScript <b>DEPENDENCIES</b> none <b>FILES</b> 3</span
><span data-language-content="pt" hidden ><span data-language-content="pt" hidden
><b>STACK</b> HTML · CSS · JavaScript <b>DEPENDÊNCIAS</b> nenhuma <b>ARQUIVOS</b> 3</span> ><b>STACK</b> HTML · CSS · JavaScript <b>DEPENDÊNCIAS</b> nenhuma <b>ARQUIVOS</b> 3</span
>
</div> </div>
</div><div class="prompt-compare"> </div><div class="prompt-compare">
<article class="prompt-card"> <article class="prompt-card">
<header> <header>
<div><span>RUN A</span><strong>Good prompt</strong></div><CopyPrompt <div>
target="prompt-basic" <span>RUN A</span><strong
/> ><span data-language-content="en">Good prompt</span><span
</header><pre><code id="prompt-basic">{handsOn.en.basic}</code></pre><footer> data-language-content="pt"
Clear context · constraints · acceptance · evidence hidden>Bom prompt</span
></strong
>
</div><CopyPrompt target="prompt-basic" />
</header><pre><code id="prompt-basic"><span data-language-content="en">{handsOn.en.basic}</span><span data-language-content="pt" hidden>{handsOn.pt.basic}</span></code></pre><footer
>
<span data-language-content="en"
>Clear context · constraints · acceptance · evidence</span
><span data-language-content="pt" hidden
>Contexto claro · restrições · aceitação · evidência</span
>
</footer> </footer>
</article><article class="prompt-card enhanced"> </article><article class="prompt-card enhanced">
<header> <header>
<div><span>RUN B</span><strong>Good prompt + skills</strong></div><CopyPrompt <div>
target="prompt-skills" <span>RUN B</span><strong
/> ><span data-language-content="en">Good prompt + skills</span><span
</header><pre><code id="prompt-skills">{handsOn.en.skills}</code></pre><footer> data-language-content="pt"
Same contract · explicit working methods · stronger proof hidden>Bom prompt + skills</span
></strong
>
</div><CopyPrompt target="prompt-skills" />
</header><pre><code id="prompt-skills"><span data-language-content="en">{handsOn.en.skills}</span><span data-language-content="pt" hidden>{handsOn.pt.skills}</span></code></pre><footer
>
<span data-language-content="en"
>Same contract · explicit working methods · stronger proof</span
><span data-language-content="pt" hidden
>Mesmo contrato · métodos explícitos · prova mais forte</span
>
</footer> </footer>
</article> </article>
</div><div class="comparison-strip"> </div><div class="comparison-strip">
@@ -1121,22 +1212,26 @@ const base = import.meta.env.BASE_URL;
<b>01</b> <b>01</b>
<span data-language-content="en">Files changed</span><span <span data-language-content="en">Files changed</span><span
data-language-content="pt" data-language-content="pt"
hidden>Arquivos alterados</span> hidden>Arquivos alterados</span
>
</div><div> </div><div>
<b>02</b> <b>02</b>
<span data-language-content="en">New dependencies</span><span <span data-language-content="en">New dependencies</span><span
data-language-content="pt" data-language-content="pt"
hidden>Novas dependências</span> hidden>Novas dependências</span
>
</div><div> </div><div>
<b>03</b> <b>03</b>
<span data-language-content="en">Checks actually run</span><span <span data-language-content="en">Checks actually run</span><span
data-language-content="pt" data-language-content="pt"
hidden>Checks executados</span> hidden>Checks executados</span
>
</div><div> </div><div>
<b>04</b> <b>04</b>
<span data-language-content="en">Evidence returned</span><span <span data-language-content="en">Evidence returned</span><span
data-language-content="pt" data-language-content="pt"
hidden>Evidências retornadas</span> hidden>Evidências retornadas</span
>
</div> </div>
</div><p class="copy-status" id="copy-status" role="status" aria-live="polite"></p> </div><p class="copy-status" id="copy-status" role="status" aria-live="polite"></p>
</section> </section>
@@ -1246,10 +1341,16 @@ const base = import.meta.env.BASE_URL;
><strong>Path B · rules lab</strong><p> ><strong>Path B · rules lab</strong><p>
Toggle every rule off, run the prompt. Toggle every rule on, run it again. Compare Toggle every rule off, run the prompt. Toggle every rule on, run it again. Compare
diff size, gate invocations, and the names of checks the agent names back. diff size, gate invocations, and the names of checks the agent names back.
</p><small>Open the starter </small><small class="verify-card-source" </p><small
><span data-language-content="en">Open the rules lab </span><span
data-language-content="pt"
hidden>Open the rules lab </span
></small
><small class="verify-card-source"
>Clone <span>git.marcospaulo.dev.br/.../src/branch/pages/hands-on/rules</span >Clone <span>git.marcospaulo.dev.br/.../src/branch/pages/hands-on/rules</span
></small ></small
></a> ></a
>
</div> </div>
</article> </article>
</section> </section>