TurtleQuem fez

Cada task vira um PR com provas

Mascote do Turtle: uma tartaruguinha azul-esverdeada de olhos grandes, olhando para você

O Turtle é o meu workflow de desenvolvimento: um harness que roda o Claude Code nos meus repositórios e só me entrega a task como um PR com testes, prints de antes e depois e as regras de negócio que mudaram.

  • Rust
  • Tauri
  • SolidJS
  • Claude Code
  • Linux
  • MCP
  • Whisper
O que é
a ferramenta pessoal com que eu programo
Onde roda
no meu PC, em Linux
Agente
Claude Code
Feito com
Rust, Tauri 2 e SolidJS
Em uso
no Talavado e num projeto de restaurante

Pedir pro agente é fácil.Revisar o que ele fez é que cansa.

Sem prova, cada PR de agente vira uma investigação. O Turtle existe para responder cada dúvida antes de eu abrir o diff.

  • A dúvida: rodou os testes?

    O que o Turtle faz: Testes, lint e tipos rodam no fim de cada task. Falhou, o PR não abre.

  • A dúvida: qual tela mudou?

    O que o Turtle faz: Print de antes e depois, no computador e no celular, com a mudança marcada.

  • A dúvida: apagou um teste?

    O que o Turtle faz: Teste apagado aparece na revisão. No modo testes primeiro, mexer neles trava a task.

  • A dúvida: mexeu no meu checkout

    O que o Turtle faz: Cada task roda numa worktree só dela. Meu checkout não muda.

  • A dúvida: a regra ficou num chat perdido

    O que o Turtle faz: Regra de negócio tem ID no canvas do produto, e o PR mostra o era → agora.

  • A dúvida: o que ele fez, afinal?

    O que o Turtle faz: Resumo do agente e a definição de pronto checada, item por item.

Do pedido ao PR

Tudo no meu PC, numa cópia isolada do repositório.

antesdepoisPR #42 prontofixremarcarworktreetesteslinttipos
  1. Eu abro uma task

    Em texto ou por voz, no app ou a partir de outro agente via MCP. Com o tipo: feat, fix, refactor.

  2. O repo ganha uma cópia isolada

    Uma worktree só para essa task. Meu checkout não muda enquanto o agente trabalha.

  3. O Turtle verifica e fotografa

    Testes, lint e tipos no fim. Prints de antes e depois de cada tela que mudou, com a mudança marcada.

  4. O PR abre pronto para revisar

    Diff, verificações, prints e as regras de negócio que mudaram. Eu aprovo ou peço ajuste.

O board onde a task anda sozinha

Cada card é uma task numa worktree própria. Quando ela chega em revisão, já vem com a definição de pronto checada.

Board do Turtle no projeto lava-rapido: colunas Fila, Fazendo, Em revisão e Feito, com tasks feat, fix, docs, test e refactor, uma marcada como precisa de você e outra como falhou
O board no app de verdade
Painel de revisão de uma task no Turtle: definição de pronto com cargo test, cargo clippy, pnpm typecheck, prints de antes e depois, regras de negócio atualizadas e PR aberto, todos marcados; prints de antes e depois da tela /agenda com o campo alterado destacado; botões Aprovar e Pedir ajuste
Task em revisão: pronto 6/6
  • Rust
  • Tauri
  • SolidJS
  • Claude Code
  • Linux
  • MCP
  • Whisper

Um PR que se explica

Eu entendo a mudança antes de abrir o diff: o que foi verificado, que tela mudou e que regra de negócio mudou.

Aberto

fix: remarcar não aceita data no passado #42

turtle/fix-remarcar-data-passada

Remarcar agora recusa datas anteriores a hoje, com aviso no formulário. Os horários do mesmo dia continuam valendo.

  • cargo test
  • cargo clippy
  • pnpm typecheck

Regras de negócio

  • AGE-11Remarcar

    eraRemarcar aceitava qualquer data.

    agoraRemarcar não aceita data no passado.

  • AGE-12Remarcar

    eraAgendamento pago mudava os adicionais ao remarcar.

    agoraAgendamento já pago não muda os adicionais.

  • AGE-31Fila de esperanova

    Remover apaga a entrada da fila de vez.

Prints

antes
depois

Data no passado agora avisa e não salva

As regras de negócio viram um mapa

Quem usa, o que faz e cada regra ficam num canvas que o agente lê antes de cada task. Regra nova entra no canvas, não num chat perdido, e regra sem teste aparece marcada.

  1. Tipo de usuário

    Dono do lava-rápido

    pessoa · 14 categorias

  2. Categoria

    Agendamento

    5 coisas que faz · 29 regras

  3. Tópico

    O que um agendamento precisa

    3 regras · 1 sem teste

  4. Regra

    • AGE-01Todo agendamento tem nome do cliente.com teste
    • AGE-02Adicional avulso precisa de descrição.com teste
    • AGE-03Placa em branco é ausência, não erro.sem teste
Aba Produto do Turtle, no canvas: o tipo de usuário Dono do lava-rápido ligado à categoria Agendamento, aberta nos tópicos O que um agendamento precisa ter e Lembretes; o primeiro tópico aberto nas regras AGE-01 a AGE-04, marcadas com teste, sem teste ou falhando
O mesmo mapa na aba Produto do app

Em uso de verdade

O Turtle não é demo. É como eu toco o Talavado, um SaaS de agendamento para lava-rápido, e um projeto de restaurante.

Os docs de produto do Talavado foram escritos por IA a partir do código. Cada ator aponta o arquivo que prova que ele existe, e tudo vira o canvas que o agente lê antes de cada task.

11atores
6 pessoas e 5 sistemas: dono, gerente, funcionário, cliente, gateway de pagamento, CI…
148fluxos
do agendamento ao caixa, cada fluxo no seu próprio canvas.
653regras
com ID, em 17 áreas. Regra sem teste aparece marcada; regra que muda vira imagem de era → agora no PR.

Contados nos docs do repositório do Talavado: atores.md, fluxos/ e regras/.

E não para no PR

Testes primeiro

A task escreve os testes antes do código, e eles têm que falhar. Se a implementação mexer neles, a task trava até eu aceitar.

Cada tela, de cada usuário

Com IA, o Turtle prepara os logins e fotografa cada tela para cada tipo de usuário, no computador e no celular. Cada rota guarda o histórico.

Tutoriais gravados

Um agente percorre cada fluxo no navegador e grava o passo a passo, com uma imagem por passo.

Voz

Eu dito a task. O whisper.cpp transcreve no meu PC; nenhum áudio sai daqui.

Entre PCs

Os dados do Turtle sincronizam entre meus PCs por um repositório git privado. A senha de login nunca sai da máquina.

Rodar em outro PC

Escolher “Rodar em: desktop” e a task roda no outro PC, por SSH: agente, testes e prints lá, passos ao vivo e PR abertos daqui.

Contrato + definição de pronto

Um contrato por projeto. Uma definição de pronto que o agente não pula.

AGENTS.md
# Turtle — contrato para agentes - Arquivos pequenos, uma responsabilidade.- turtle-core não faz I/O; adapters em crates.- Interface em pt-BR; código e commits em inglês. ## Definição de pronto- cargo test · cargo clippy · pnpm typecheck- prints de antes/depois das telas que mudaram- PR aberto com tudo isso

O AGENTS.md diz como o projeto funciona; a definição de pronto diz quando a task acabou. Teste apagado ou afrouxado aparece na revisão, não some no diff.

  • Testes verdes
  • Lint sem avisos
  • Tipos conferidos
  • Prints anexados
  • PR aberto

Por dentro

Rust com arquitetura hexagonal. O núcleo não faz I/O: tudo que fala com processo, rede ou disco é um adapter que implementa um trait do núcleo.

Camadas do Turtle: SolidJS + TypeScript, a interface, uma pasta por feature; Tauri 2, só traduz comandos e eventos; turtle-core, domínio, estados da task, plano, regras. Sem I/O.; adapters: agent-claude, Claude Code headless; git, uma worktree por task; githost-github, PR via gh; checks, testes, lint, tipos; evidence, prints com Chromium; store-sqlite, estado e histórico; voice, whisper.cpp local; mcp, outros agentes; remote, SSH · outros PCs.

Eu aprovo.O Turtle faz o resto.

O Turtle é uma ferramenta pessoal: não está à venda e não tem download. Roda no meu PC, nos meus repositórios, e o código é privado. Esta página mostra o que eu construí e como eu trabalho com agentes.

Feito por Eduardo Mello

Engenheiro de software em Palmas, PR. Construí o Turtle para mim: é o jeito como eu programo com agentes todo dia.

Voltar ao começo
Feito em Rust · Roda no meu PC ·