Vi körde det på oss själva först. Fem av arton.
Repot bakom den här sajten har en README. Det har inte mycket mer i roten: ingen låsfil, ingen CI-konfiguration, ingen AGENTS.md, ingen licens. Allt det finns — låsfilen ligger i frontend/, deployen sköter Vercel, kontrakten för agenten ligger där koden ligger. För den som känner repot är det ett bra repo. För den som öppnar det för första gången säger roten ingenting om hur man bygger, testar eller får in en ändring.
Det är precis den blicken vi ville bygga ett verktyg för. Repo-röntgen tar ett publikt GitHub-repo — en URL, eller bara organisation/repo — och letar efter arton saker som avgör om repot går att förstå, bygga och lita på utan att fråga någon. Trettio sekunder, öppen uträkning, inget sparas.
Vad verktyget tittar på
Arton kontroller i fyra grupper. Varje kontroll är en fil eller ett faktum som antingen finns eller saknas — inga poäng för nästan.
- Onboarding — för människor och agenter. README, AGENTS.md eller motsvarande (CLAUDE.md, .cursorrules, copilot-instructions), CONTRIBUTING, .editorconfig och en devcontainer. Frågan bakom: var börjar jag?
- Reproducerbart bygge. Låsfil för beroenden, Dockerfile eller compose, kommandon på ett ställe (Makefile, justfile, Taskfile eller package.json) och en fastnålad verktygsversion som .nvmrc eller .tool-versions. Frågan: bygger det likadant hos mig som hos dig?
- Kontroller & automation. CI-konfiguration, pre-commit-hookar, Dependabot eller Renovate, CODEOWNERS och en PR-mall. Frågan: vem eller vad säger ifrån innan något går sönder?
- Puls. Licens, push de senaste nittio dagarna, ingen öppen PR äldre än trettio dagar, inte arkiverat. Frågan: lever det här?
Resultatet är en poäng av arton, en nivå — Frisk, Under observation eller Remiss — och en lista där varje rad säger vad som letades efter, om det fanns och varför det spelar roll. Nivåerna är medvetet stränga. När vi körde verktyget på vitejs/vite i dag, ett av de mest välskötta repon som finns, blev det tolv av arton: ingen devcontainer, ingen Dockerfile, ingen fastnålad verktygsversion, inga pre-commit-hookar, ingen CODEOWNERS — och öppna PR:ar som är äldre än fyra år. Under observation.
Varför just de arton
Vi skrev nyligen att er nästa plattformsanvändare är en agent — och att den bara läser det som finns i repot. Den frågar inte i Slack. Den gissar. Samma sak gäller den som börjar på måndag, med skillnaden att människan till slut frågar någon, och att någon då får lägga tio minuter på att förklara det som kunde stått i en fil.
De arton kontrollerna är vårt försök att lista vad som måste finnas i repot för att den tio-minuters-förklaringen inte ska behövas. Inte allt som är bra — bara det som går att se utifrån, utan att läsa koden, och som varje repo kan ha oavsett språk och stack. En låsfil säger inget om kodkvalitet. Den säger att bygget blir likadant i morgon. Det är ett mindre löfte, men det håller.
Vad det inte ser
Ett verktyg som ger poäng bör vara tydligt med sina blinda fläckar. Det här är våra.
- Bara roten. Verktyget läser rotkatalogen och .github/ på standardgrenen, inget mer. Ett monorepo med allt i undermappar får låga poäng — vårt eget är beviset. Det är delvis rättvist, för roten är det första alla ser, men ta siffran för vad den är.
- Att en fil finns betyder inte att den är bra. En package.json räknas som ”kommandon på ett ställe” även om scripts-blocket är tomt. En README på tre rader är en README. Verktyget svarar på finns eller saknas, inte på hur.
- Bara publika repon. Privata repon går inte att läsa utan inloggning, och vi vill inte ha er token. Vill ni röntga ett privat repo: listan med de arton kontrollerna står på sidan, och den går att gå igenom för hand på fem minuter.
- Ingen kodläsning. Inga tester räknas, ingen komplexitet mäts. För frågan om kodbasen håller för att koda i par med AI finns AI-redo-kollen, som ställer de frågorna till er i stället för till GitHub.
Under huven
Allt körs i din webbläsare. När du klistrar in ett repo gör sidan fyra anrop direkt till api.github.com utan inloggning: repot, rotlistningen, .github-listningen och de öppna PR:arna. Ingenting går via paperphyte.com, vi ser inte vilket repo du kollar, och inget sparas. Det betyder också att GitHubs gräns för anonyma anrop gäller — sextio i timmen per adress, alltså ungefär femton repon — och att verktyget säger till i klartext när du nått den.
Resultatet går att skicka vidare: adressen får ?repo=organisation/repo och kör om röntgen när någon öppnar den. Skicka länken till den som äger repot i stället för en skärmdump.
Så börjar du
- Kör det på ett repo du känner väl. Om resultatet känns fel vet du varför, och då vet du också hur du ska läsa det på repon du inte känner.
- Läs det som saknas uppifrån. Grupperna är ordnade efter hur ofta någon stöter på luckan: onboarding först, puls sist.
- Saknas AGENTS.md: generatorn gör en på fem minuter. Det är den kontroll som ger mest tillbaka per minut.
- Skicka länken till den som äger repot. En lista med finns och saknas är lättare att ta emot än en åsikt.
- Kör om efter PR:en. Siffran ska gå upp. Om den inte gör det låg filen på fel ställe — vilket är precis vad en agent också skulle tycka.
Vårt korta svar
Det som inte finns i repot finns inte — inte för agenten, inte för den som börjar på måndag. Repo-röntgen letar efter arton saker som gör ett repo självförklarande, säger vad den letade efter och sparar ingenting. Börja med det som saknas överst.
Vår egen lista är tretton punkter lång. Vi börjar med licensen.
