Currículo costuma ser PDF. O kiro-cv troca o PDF por um terminal: um portfólio que roda no navegador com a aparência do Kiro CLI, com logo em matriz de pontos, linha de status, aviso de confiança e as cores da ferramenta. A versão no ar é o telle.sh.
Ele entra na mesma linha de experimentos com o ecossistema do Kiro que já passou por aqui: o relato de 1 ano de Kiro na Dimensa, os KiroCrew Ports e o Kiro Ghost, que anima o mascote em SVG. Desta vez o Kiro virou a interface de um currículo.
O que é
Quem abre o site cai num prompt. Dá para explorar experiência, skills e certificações com slash commands, do mesmo jeito que se usa o Kiro. Se a pessoa digitar texto livre em vez de um comando, a mensagem vai para um chat com IA que conhece o currículo e responde como se fosse eu.
O projeto é um fork do claude-code-resume, criado por Alfonso Baena. A versão com visual do Kiro foi construída usando o próprio Kiro. Código sob licença MIT.
Comandos
São mais de 50 comandos, divididos em três grupos.
Portfólio:
❯ /about → resumo e cargo atual❯ /experience → linha do tempo profissional❯ /skills → skills técnicas por categoria❯ /certs → certificações❯ /contact → links, redes e e-mail❯ /download → currículo em PDFCompletam o grupo /help, /education, /languages e /resume.
Comandos simulados do Kiro CLI: /model troca o “modelo” de carreira, e ainda há /clear, /compact, /tools, /config, /status, /version e /todos.
Comandos de brincadeira: /doctor roda um diagnóstico de skills, /cost mostra uma análise de custo bem-humorada, /init gera um KIRO.md falso e /game abre um easter egg com um runner do Kiro Ghost. Tem mais coisa escondida, como a tela de login que aparece no /quit e o sudo hire.
Chat no personagem
Qualquer texto que não começa com barra vira conversa. O chat usa o Vercel AI SDK no edge runtime, com respostas em streaming, e o system prompt carrega o currículo para que o clone responda em primeira pessoa.
O prompt foi ajustado para soar como conversa e não como atendimento automático. Pergunta fora do assunto ganha um desvio bem-humorado em vez de recusa formal, o tom é calibrado com exemplos do que fazer e do que evitar, e as regras de segurança vêm com justificativa.
Note
O idioma do chat é configurável por LLM_CHAT_LANGUAGE (o padrão é inglês; aceita pt-br, es, fr e outros). O modelo também: qualquer endpoint compatível com a API da OpenAI funciona via OPENAI_BASE_URL, o que inclui OpenRouter, Groq e LLMs locais.
Fork e resume.json
O projeto foi feito para ser forkado. Quase tudo sai de um arquivo só, o resume.json, que segue o formato JSON Resume com algumas extensões do Kiro:
{ "splash": "YOUR NAME", "welcome": "Welcome to my portfolio!", "whatsNew": "Now with AI chat support.", "trustNotice": "All tools trusted · /help for commands", "model": "Senior Engineer 4.0", "folder": "~/projects/my-portfolio · (main)",
"basics": { ... }, "work": [ ... ], "skills": [ ... ]}splash é o texto do logo em matriz de pontos, model aparece na linha de status e folder imita o caminho e o branch do terminal. As seções padrão do JSON Resume (basics, work, skills, certificates, education, languages, projects, publications) alimentam os comandos e o contexto do chat. Um bloco personal permite sobrescrever as respostas de /status, /doctor, /cost, /init e outros.
Para começar: clonar o repositório, rodar pnpm install, criar o .env.local a partir do .env.example, editar o resume.json e subir com pnpm dev. A única variável obrigatória é a chave da API do modelo. Há ainda RESUME_URL, que busca o resume.json de uma URL no momento do build.
A telemetria é opcional (TELEMETRY_ENABLED): grava prompt, resposta, tokens e latência em arquivos JSONL com rotação por tamanho. Só faz sentido em ambiente com disco persistente, como Coolify, VPS ou Docker. Em Vercel e outros serverless os logs se perdem entre invocações.
Stack
| Camada | Tecnologia |
|---|---|
| Framework | Next.js 16 (App Router, Turbopack) |
| UI | React 19.3 e Tailwind CSS 4.3 |
| Linguagem | TypeScript 7 |
| IA | Vercel AI SDK 7 (edge runtime, streaming) |
| Runtime | Node.js 26 |
| Fonte | JetBrains Mono |
| Dados | JSON Resume com extensões do Kiro |
As animações usam ViewTransition do React 19.3 para a entrada e saída dos itens do histórico, @starting-style no CSS e a estilização nativa de scrollbar do Tailwind 4.3. Todas respeitam prefers-reduced-motion. A interface funciona em celular e desktop, e o repositório traz 51 testes end-to-end com Playwright cobrindo a tela inicial, os comandos, o chat com respostas simuladas, os easter eggs e a navegação por teclado com autocomplete e histórico.
Links
- Site no ar: telle.sh
- Código: github.com/fabricioctelles/kiro-cv
- Post no LinkedIn com vídeo de demonstração: Usei o Kiro para criar o Kiro
O kiro-cv não tem vínculo com a Amazon nem com a AWS. É um projeto de fã da estética do CLI.