This page is also available in English.View in English

← Voltar ao blog

Claude Code: corrija um link quebrado

Pratique com dois arquivos HTML: encontre um link quebrado, faça uma alteração, confira o diff, teste no navegador e restaure o original. Código completo.

9 min de leitura

Na primeira tarefa com o Claude Code, escolha algo com um resultado claro: corrigir o link About me na página inicial de um portfólio. O exercício usa apenas dois arquivos HTML e não exige publicar um site. As diferenças nos arquivos e o resultado dos cliques mostram se a alteração está correta.

As mensagens abaixo são instruções de prática que você pode copiar; as imagens mostram o site do exercício. As respostas do modelo podem variar, então avalie os arquivos salvos e o resultado dos cliques.

1. Instale, faça login e abra a pasta

Se o Claude Code já estiver instalado, pule para a verificação de versão. Caso contrário, execute no terminal o comando do seu sistema. Os dois métodos vêm do guia oficial da Anthropic.

macOS, Linux ou WSL:

bash

curl -fsSL https://claude.ai/install.sh | bash

Windows PowerShell:

powershell

irm https://claude.ai/install.ps1 | iex

Execute o comando do Windows no PowerShell, não no CMD. Quando a instalação terminar, abra um novo terminal e execute:

bash

claude --version

Resultado esperado: um número de versão do Claude Code. Se o comando não for encontrado, consulte primeiro a solução de problemas de instalação no guia oficial.

Crie uma pasta chamada claude-code-link-exercise no gerenciador de arquivos. No terminal, digite cd seguido do caminho completo da pasta; use aspas duplas se houver espaços. Substitua o caminho do exemplo pelo seu:

bash

cd "/path/to/claude-code-link-exercise" claude

Na primeira execução, siga as instruções do navegador para entrar com uma conta que tenha acesso ao Claude Code. Se o navegador não abrir, copie o link conforme as instruções do terminal; veja o guia de autenticação. Confira se o diretório de trabalho da sessão é a pasta do exercício.

2. Crie as duas páginas e reproduza o problema

Com um editor de texto simples ou de código, crie os dois arquivos abaixo dentro da pasta. Eles devem se chamar exatamente index.html e about.html, sem .txt no final. Copie cada bloco completo para o arquivo correspondente e salve.

index.html:

html

<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Alex — Thoughtful design</title> <style> :root { color-scheme: light; --ink: #202722; --paper: #f5f3eb; --muted: #62695f; --line: #d8dcd0; } * { box-sizing: border-box; } body { margin: 0; background: var(--paper); color: var(--ink); font-family: Arial, sans-serif; line-height: 1.6; } .wrap { max-width: 1060px; margin: auto; padding: 0 32px; } header { display: flex; justify-content: space-between; gap: 16px; padding: 28px 0; border-bottom: 1px solid var(--line); } .label { margin: 0; font-size: 12px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; } .muted { color: var(--muted); } .hero { display: grid; grid-template-columns: 1.5fr 1fr; gap: 64px; align-items: center; padding: 76px 0; } h1 { margin: 14px 0 24px; font-size: clamp(42px, 6vw, 70px); line-height: 1.04; font-weight: 500; letter-spacing: -.05em; } .intro { max-width: 420px; font-size: 18px; } a { display: inline-block; margin-top: 12px; padding: 12px 24px; background: var(--ink); color: white; border-radius: 30px; text-decoration: none; font-weight: 700; } a:hover { background: #3d5340; } a:focus-visible { outline: 3px solid #717f38; outline-offset: 5px; } .note { padding: 32px; border-radius: 24px; background: #dfe7c9; transform: rotate(3deg); } .symbol { margin: 20px 0; font-size: 100px; line-height: 1; } .note p:last-child { margin-bottom: 0; font-size: 20px; } .work { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin: 22px 0 54px; } article { padding: 28px; border: 1px solid var(--line); border-radius: 18px; } h2 { margin: 12px 0 4px; font-size: 24px; font-weight: 500; } article p:last-child { margin-bottom: 0; } footer { padding: 22px 0; border-top: 1px solid var(--line); font-size: 12px; color: var(--muted); } @media (max-width: 650px) { .wrap { padding: 0 22px; } .hero { grid-template-columns: 1fr; gap: 36px; padding: 44px 0; } .work { grid-template-columns: 1fr; } .symbol { font-size: 72px; } } </style> </head> <body> <div class="wrap"> <header><span class="label">Alex / Product designer</span><span class="label muted">Fictional portfolio</span></header> <main> <section class="hero" aria-labelledby="intro-title"> <div><p class="label muted">Simple things, considered</p><h1 id="intro-title">Less friction.<br>More good days.</h1><p class="intro muted">I'm Alex. I explore clear, useful interfaces for the small things that fill our days.</p> <a href="about-me.html">About me</a></div> <aside class="note"><p class="label">A note to design by</p><div class="symbol" aria-hidden="true">✳</div><p>Make room for what matters.<br>Give every detail a purpose.</p></aside> </section> <p class="label muted">Selected concepts / 01—02</p> <section class="work" aria-label="Fictional design concepts"> <article><p class="label muted">01 / Planning</p><h2>A calmer Monday</h2><p class="muted">A weekly planner concept that helps people choose one clear next step.</p></article> <article><p class="label muted">02 / Reading</p><h2>Room to read</h2><p class="muted">A reading list concept with quiet typography and space to pause.</p></article> </section> </main> <footer>Alex is a fictional designer. These concepts are part of a coding exercise.</footer> </div> </body> </html>

about.html:

html

<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>About me — Alex</title> <style> :root { color-scheme: light; --ink: #202722; --paper: #f5f3eb; --muted: #62695f; --line: #d8dcd0; } * { box-sizing: border-box; } body { margin: 0; background: var(--paper); color: var(--ink); font-family: Arial, sans-serif; line-height: 1.6; } .wrap { max-width: 860px; margin: auto; padding: 0 32px; } header { display: flex; justify-content: space-between; gap: 16px; align-items: center; padding: 24px 0; border-bottom: 1px solid var(--line); } .label { margin: 0; font-size: 12px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; } a { color: var(--ink); text-underline-offset: 5px; } a:hover { color: #3d5340; } a:focus-visible { outline: 3px solid #717f38; outline-offset: 5px; } main { padding: 66px 0; } h1 { margin: 14px 0 26px; font-size: clamp(44px, 8vw, 72px); line-height: 1.04; font-weight: 500; letter-spacing: -.05em; } .intro { max-width: 620px; font-size: 22px; } .muted { color: var(--muted); } .card { margin-top: 38px; padding: 28px 32px; background: #dfe7c9; border-radius: 22px; } h2 { margin-top: 0; font-size: 24px; font-weight: 500; } ul { margin-bottom: 0; padding-left: 20px; } li + li { margin-top: 10px; } footer { padding: 22px 0; border-top: 1px solid var(--line); font-size: 12px; color: var(--muted); } @media (max-width: 650px) { .wrap { padding: 0 22px; } main { padding: 44px 0; } .card { padding: 24px; } } </style> </head> <body> <div class="wrap"> <header><span class="label">Alex / Product designer</span><a href="index.html">Back to home</a></header> <main> <p class="label muted">A little context</p> <h1>About me</h1> <p class="intro">I'm Alex, a fictional product designer who likes making everyday tools easier to understand.</p> <p class="muted">My concept projects explore planning and reading. I start with a small question, sketch a clear path, and check the details that help someone take the next step.</p> <section class="card" aria-labelledby="approach-title"> <h2 id="approach-title">How I approach a problem</h2> <ul><li>Understand what someone is trying to do.</li><li>Make the next step easy to find.</li><li>Check that the little things work, too.</li></ul> </section> </main> <footer>This fictional portfolio was made for a coding exercise. It contains no real client work or contact details.</footer> </div> </body> </html>

Dê dois cliques em index.html para abrir no navegador e clique em About me. A página aponta para about-me.html, mas o arquivo existente é about.html, então o link não abre a página desejada. O texto do erro pode variar entre navegadores; o ponto importante é a diferença nos nomes.

Link About me quebrado no site do exercício
Site do exercício: o link aponta para about-me.html, mas o arquivo se chama about.html.

No gerenciador de arquivos, copie index.html e dê à cópia o nome index.before.html. Esse é o backup original para comparação e restauração. Você não precisa instalar o Git.

3. Peça uma investigação sem alterações

Envie esta mensagem para a sessão do Claude Code que você abriu:

Investigação somente de leitura

Examine apenas index.html e about.html na pasta atual do exercício. Não altere nenhum arquivo. O link About me da página inicial não abre. Identifique seu href, o arquivo de destino que realmente existe e a diferença entre eles. index.before.html é o backup original. Não o altere nem o trate como uma página que precisa de correção. Termine indicando a única alteração que você recomenda.

O que conferir: a resposta deve identificar about-me.html na página inicial e about.html como arquivo existente, limitando a correção ao href do link.

Se a sugestão for criar about-me.html, reescrever a página ou mudar os estilos, corrija o escopo primeiro. A página de destino correta já existe; não é necessário criar outra para o endereço errado. Investigar antes de limitar a alteração também segue o fluxo de correção de erros da Anthropic.

4. Corrija um link e confira as diferenças

Depois de confirmar a causa, envie:

Faça a menor alteração

Em index.html, altere somente o href do link About me de about-me.html para about.html. Não mude o texto do link, os estilos, outros textos, about.html nem index.before.html. Depois de salvar, compare index.before.html com index.html. Mostre o diff real dos arquivos e liste quais arquivos foram alterados. Não publique nem faça o deploy do site.

Se aparecer uma solicitação de permissão, confira se o arquivo e a ação correspondem ao escopo. A exibição de avisos depende do modo e das configurações de permissão. A ausência de um aviso não significa que nenhuma edição aconteceu.

A diferença importante deve ser apenas o nome do destino:

diff

- <a href="about-me.html">About me</a></div> + <a href="about.html">About me</a></div>

Essa é a alteração permitida; o diff real também pode trazer números de linha e código ao redor que não foi alterado. Abra index.html no editor e procure href para conferir o endereço salvo. Abra o backup e confirme que o valor antigo continua lá. Se a página inteira ou outros arquivos também mudaram, o requisito de uma única alteração ainda não foi atendido.

5. Teste no navegador

Volte à página inicial e atualize, ou abra index.html de novo pela pasta do exercício. Clique em About me e confira cada item:

VerificaçãoResultado esperado
Clicar no link da página inicialO arquivo local about.html abre
Conferir o conteúdoO título About me aparece, sem erro de arquivo inexistente
Voltar ao inícioBack to home abre index.html
Conferir o escopoSó o destino em index.html mudou; o backup e a página de apresentação continuam iguais
Página About me do exercício após corrigir o link
Verificação: clicar em About me na página inicial abre a página about.html existente.

Se ainda não abrir, veja se a barra de endereço mostra o antigo about-me.html. Confirme que abriu esta pasta do exercício, não outra cópia. Confira também se o arquivo foi salvo por engano como about.html.txt e se os dois arquivos estão na mesma pasta.

Use o resultado real do clique como teste. O Claude Code dizer que corrigiu o link não substitui essa etapa.

6. Restaure o original e controle a alteração

Ao terminar, abra index.before.html no editor, copie todo o conteúdo de volta para index.html e salve. Atualize a página inicial e clique novamente em About me. O link quebrado original deve reaparecer, mostrando que você restaurou a versão anterior à edição.

Para manter a correção, troque de novo aquela única ocorrência de about-me.html por about.html e repita os testes no navegador. Concluir o exercício significa conseguir explicar a causa, confirmar uma alteração mínima e restaurar o original.

Em um projeto real que precise da revisão de outro agente, você pode compartilhar o código relevante e o diff. O guia existente de Claude Code no Pachat explica conexão e divisão de funções. Este exercício pode ficar inteiramente local.

Referências

  1. Início rápido do Claude Code, Anthropic (inglês).
  2. Autenticação, Anthropic (inglês).
  3. Configuração de permissões, Anthropic (inglês).
  4. Fluxos de trabalho comuns, Anthropic (inglês).
  5. Claude Code com outros agentes, Pachat (inglês).

Comece pela decisão que você tem pela frente.

ou

Continuar com o Google