A systematic self-review process for examining your own code diffs before external review.
Install
mkdir -p .claude/skills/review-navikt && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/19333" && unzip -o skill.zip -d .claude/skills/review-navikt && rm skill.zipInstalls to .claude/skills/review-navikt
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Brukes når du skal gå gjennom DIN EGEN diff før du ber om kryssmodell-review (grill-inspektor) eller åpner PR: en uforpliktet endring, en branch mot main, eller diffen siden et fast punkt skal granskes for korrekthet, regresjon, kanttilfeller og scope. Trigget når du nettopp har skrevet ferdig kode i implementer-fasen, eller når noen sier 'selvreview', 'gå gjennom egen diff', 'review før PR', 'review siden X'.Key capabilities
- →Review diffs for correctness and regressions
- →Check for edge cases and scope creep
- →Verify compliance with repository conventions
- →Identify missing test coverage
- →Validate ADR adherence
How it works
The skill provides a structured framework for developers to examine their own code changes across six specific axes before submitting for external review.
Inputs & outputs
When to use review
- →Perform a final diff check before opening a PR
- →Review uncommitted changes for correctness
- →Identify blind spots in implemented code
About this skill
Selvreview — gå gjennom egen diff før andre øyne
Disiplinen for å granske din egen endring før du bruker en dyrere ressurs på den. Dette er ikke en agent — det er det du gjør inline, på din egen diff, i verifiser-fasen til @grillmester, FØR du eventuelt kaller grill-inspektor (kryssmodell-review) eller åpner PR.
Poenget: kryssmodell-review (GPT-5.5, annen familie) er opt-in og kostbar. Ikke bruk den på funn du selv kunne tatt. Selvreview er det billige passet som rydder bort det åpenbare, så de friske øynene bruker budsjettet sitt på blindsonene dine — ikke på slurv.
Kjerneproblemet: du er partisk på egen kode
Du skrev koden. Du «vet» hva den gjør, så du leser intensjonen din, ikke teksten på skjermen. Selvreview virker bare hvis du bryter den partiskheten bevisst:
- Les diffen som en motstander, ikke som forfatter. Anta at hver linje skjuler en feil til den motbeviser seg selv.
- Les teksten, ikke minnet. Hvert kall til ekstern tjeneste, hver null-håndtering, hver tilstandsendring leses som om en fremmed skrev den.
- Et grønt testpass beviser ikke korrekthet — bare at testene du tenkte på, passerer. Selvreview leter etter det testene ikke dekker.
1. Fest punktet og hent diffen
Fast punkt er det brukeren oppga — commit-SHA, branch, tag, main, HEAD~5. Mangler det, spør. Verifiser at det resolver, og at diffen ikke er tom, FØR du går videre:
git rev-parse <fast-punkt> # resolver referansen?
git diff <fast-punkt>...HEAD --stat # tre-prikk = mot merge-base
git log <fast-punkt>..HEAD --oneline # commits i scopet
Bruk tre-prikk (...HEAD) så du sammenligner mot felles forfar, ikke mot en branch som har drevet videre. Hold deg til ett diff-scope gjennom hele reviewen.
2. Seks akser — hold dem adskilt
Gå gjennom diffen langs seks akser. Ikke slå dem sammen. En endring kan passere én akse og stryke på en annen (korrekt kode som implementerer feil krav; rett krav implementert i strid med repoets konvensjoner). Slår du dem sammen, maskerer den ene den andre.
A. Korrekthet
Gjør hver endret linje det den ser ut til å gjøre? Les kontrollflyten, ikke kommentarene. Av-for-én, invertert betingelse, feil variabel, glemt return, suspenderende kall uten await/coroutine-scope, runBlocking i en hot path, ressurs som ikke lukkes (use {}).
B. Regresjon
Hva ELLERS treffer den endrede koden? Følg kallere oppover: endret du en delt funksjon, en route-handler, en serialiseringsmodell, et DTO som også brukes av en annen konsument? Endret signatur eller default-verdi som stille endrer atferd for eksisterende kallere? Sjekk om en eksisterende test burde ha fanget endringen — gjorde den ikke det, mangler dekning.
C. Kanttilfeller
Tom liste, null, manglende felt, samtidighet, retry, timeout. NAV/Ktor-spesifikt — se sjekklisten under.
D. Scope (diff-disproporsjon)
Er det noe i diffen som oppgaven IKKE ba om? Refaktorering snikinnført i en feilretting, urelatert formattering, en «mens jeg var her»-endring. Hver hunk skal kunne spores til et krav i PLAN.md/context.md. Det motsatte også: ba oppgaven om noe som ikke er i diffen?
E. Krav-dekning (mot spec)
Sammenlign diffen mot docs/context.md (krav) og .grill/PLAN.md (ferdig-når-kriterier). For hvert krav: innfridd / delvis / mangler. For hver ADR i docs/adr/ som rører området: følger koden beslutningen, eller avviker den stille? Et stille ADR-avvik er en blocker, ikke en detalj.
F. Standard-dekning (mot repoets konvensjoner)
Følger koden måten dette repoet skriver kode på — Ktor-route-struktur, feilkontrakt via StatusPages, DI-mønster, navngiving, pakkestruktur under no.nav.syfo? Hopp over alt verktøy håndhever (formattering, import-orden) — det fanges av gatene, ikke av øynene dine.
NAV/Ktor-kanttilfeller (akse C, sjekkliste)
- Auth: Manglende eller feil claim-sjekk?
azpvalidert motAZURE_APP_PRE_AUTHORIZED_APPS? NAVident/pidhentet trygt (ikke!!på en claim som kan mangle)? Route bak riktigauthenticate("…")-gren? - PII i logger: Sniker fnr, navn, diagnose eller sykmeldingsstatus seg inn i en standard-logglinje via string-interpolasjon? Visning av persondata til ansatt → CEF-auditlog, ikke standardlogg. (Detaljer:
/security-review.) - Kafka: Tom/
nullrecord-value? Idempotens ved redelivery? Manuell vs. auto-commit-semantikk? Poison-message — havner den i DLQ eller looper den? Offset committet før eller etter sideeffekt? - Postgres/Flyway: Ny migrering — kjørbar fremover OG bakoverkompatibel med kjørende pods (rolling deploy)?
NOT NULL-kolonne uten default på en ikke-tom tabell? N+1 introdusert? Connection lukket / returnert til pool? Transaksjonsgrense rundt fler-stegs skriving? - Ktor HTTP: Feil mappet til riktig status via StatusPages (ikke lekket stacktrace til klient)?
Nav-Call-Idpropagert til utgående kall? Timeout og retry på eksterne kall? Paginering bevart? - NAIS: Endret
accessPolicy.inboundspeilet i auth-koden, og omvendt?outboundmot riktig cluster/namespace? Ny env-variabel faktisk satt i manifestet? - Coroutines: Blokkerende kall i en suspend-funksjon? Manglende
CoroutineScope/structured concurrency? Exception svelget i en launch?
3. Fiks, deretter lever til ferske øyne
Selvreview produserer en handling, ikke en rapport til arkivet:
- Funn du kan fikse nå → fiks dem inline. Det er hele poenget med å ta dem selv.
- Kjør de deterministiske gatene på nytt etter fiks —
./gradlew test(ogbuild/lint der det finnes). Hardt pass/fail, med ferskt bevis i samme melding. Ingen «ser bra ut» uten kommando + output + exit-kode. - Funn du bevisst lar stå (utenfor scope, egen oppgave) → noter dem kort i
.grill/STATE.mdså de ikke forsvinner. - Bindende beslutninger som dukker opp under reviewen (valgt mekanisme, ny datakategori) → fang som ADR i
docs/adr/, ikke i en kommentar.
Først NÅ er diffen klar for det dyre passet: kall grill-inspektor for kryssmodell-review (anbefalt-på ved R3/R4 — auth, PII, schema, API-kontrakt, Kafka, deploy; opt-in ellers). Den er read-only (tools: [read, search] — kan ikke skrive filer), verifiserer uavhengig mot KRAV og BESLUTNINGER og returnerer verdiktet; @grillmester skriver det til .grill/REVIEW.md (de deterministiske gatene eier .grill/VERIFICATION.md). Selvreview erstatter den aldri — den gjør den verdt pengene.
Flytkobling
- Fase i faseløkka: verifiser (fase 5), steg før den opt-in kryssmodell-reviewen.
- Leser:
docs/context.md,.grill/PLAN.md,docs/adr/,.grill/STATE.md. - Komplementerer:
grill-inspektor(agenten gjør kryssmodell-passet; denne skillen er din egen disiplin før det). - Relaterte skills:
/security-review(PII/auth/accessPolicy-dybde ved R3/R4),/kotlin-ktor(route-/auth-/feilkontrakt-konvensjoner du måler akse F mot),/flyway-migration(bakoverkompatibel migrering),/postgresql-review(N+1, pool, indeks),/kafka-topic(idempotens, commit-semantikk),/diagnosing-bugs(når et funn er en faktisk bug som må root-cause-es).
When not to use it
- →When the diff is empty
- →When the fast point cannot be resolved
Prerequisites
Limitations
- →Does not replace external kryssmodell-review
- →Limited to the defined six axes of review
How it compares
It forces a deliberate, adversarial reading of one's own code to catch obvious errors before utilizing more expensive review resources.
Compared to similar skills
review side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| review (this skill) | 0 | 14d | Review | Intermediate |
| python-testing-patterns | 77 | 2mo | Review | Intermediate |
| dependency-upgrade | 26 | 4mo | Review | Intermediate |
| test-cases | 57 | 6mo | No flags | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by navikt
View all by navikt →You might also like
python-testing-patterns
wshobson
Implement comprehensive testing strategies with pytest, fixtures, mocking, and test-driven development. Use when writing Python tests, setting up test suites, or implementing testing best practices.
dependency-upgrade
wshobson
Manage major dependency version upgrades with compatibility analysis, staged rollout, and comprehensive testing. Use when upgrading framework versions, updating major dependencies, or managing breaking changes in libraries.
test-cases
cexll
This skill should be used when generating comprehensive test cases from PRD documents or user requirements. Triggers when users request test case generation, QA planning, test scenario creation, or need structured test documentation. Produces detailed test cases covering functional, edge case, error handling, and state transition scenarios.
reviewing-code
CaptainCrouton89
Systematically evaluate code changes for security, correctness, performance, and spec alignment. Use when reviewing PRs, assessing code quality, or verifying implementation against requirements.
wcag-audit-patterns
wshobson
Conduct WCAG 2.2 accessibility audits with automated testing, manual verification, and remediation guidance. Use when auditing websites for accessibility, fixing WCAG violations, or implementing accessible design patterns.
code-coverage-with-gcov
gadievron
Add gcov code coverage instrumentation to C/C++ projects