Oh-My-NavLogg inn

Bygget med GitHub Copilot

PersonvernTilgjengelighetGitHub

nav-pilot dokumentasjon

Beta

Alt du trenger for å komme i gang med nav-pilot.

Kom i gangGod praksisVerktøyRetningslinjernav-pilotcpltStatistikkAdopsjonOrdliste

Innhold

  • Introduksjon
    • Hva er nav-pilot?
    • Hvorfor nav-pilot?
    • Hva nav-pilot vet
  • Kom i gang
    • Installasjon (5 min)
    • Personlig installasjon (valgfritt)
    • Første kommandoer
  • Collections
    • Tilgjengelige collections
    • Planning skills
  • Planleggingspipelinen
    • De fire fasene
    • Skills i detalj
  • Kompetansebevaring
    • Grønn og rød sone
    • Demo: I praksis
  • Sync og oppdatering
    • Automatisk sync
    • Lokal sync
    • Tilpasse synkronisering
    • FAQ
  • CLI-referanse
    • Installer CLI
    • Oppgrader CLI
    • Kommandooversikt
  • Slik fungerer det
    • Filstruktur
    • Livssyklus
  • Ressurser
    • Arkitektur
    • Designprinsipper
    • Lenker

Hva er nav-pilot?

nav-pilot gjør GitHub Copilot til en Nav-ekspert. I stedet for å huske alle mønstrene, beslutningstrærne og fellene selv — spør @nav-pilot.

nav-pilot er en samling av én agent, fire skills og fem collections som koder inn Navs institusjonelle kunnskap som kjørbare arbeidsflyter. CLI-verktøyet installerer markdown-filer — selve AI-funksjonaliteten kjøres av GitHub Copilot.

@nav-pilot

Planleggingsagent — din inngangsport

$nav-deep-interview

Avdekker blindsoner (personvern, auth, avhengigheter)

$nav-plan

Beslutningstrær → Nais-manifest, CI/CD, prosjektstruktur

$nav-architecture-review

Flerperspektiv-review → ADR

$nav-troubleshoot

Diagnostikk for pod-krasj, 401-er, Kafka-lag, DB-feil

Velg din stack

Kotlin/Ktor og Spring Boot på Nais

Rammeverk-uavhengig frontend (Astro, Remix, Vite …)

Next.js med Aksel Design System

Komplett stack (backend + frontend)

Nais, observability, sikkerhet og Go

Hvorfor nav-pilot?

oh-my-openagent og lignende verktøy bygger bedre orkestrering — multi-agent-delegering, parallellkjøring og selvkorrigering. nav-pilot bygger bedre kunnskap. Orkestrering blir standardvare — institusjonell kunnskap er vanskelig å kopiere.

oh-my-openagentnav-pilot ✦
Fokus–Orkestrering og multi-agentInstitusjonell kunnskap
Inngangspunkt–ultrawork (terminal)Terminal, VS Code, JetBrains, GitHub.com
Kunnskap–Generisk kodingNavs kunnskapsbase
Auth–Vet ikke hva TokenX erVelger riktig auth basert på caller-type
Plattform–Vet ikke hva Nais erGenererer Nais-manifest med riktig accessPolicy
Oppdateringer–git pull / manueltAuto-sync workflow (ukentlig PR)

Hva nav-pilot vet som Copilot ikke vet

Copilot er god på kode, men vet ingenting om:

At innbyggere bruker ID-porten, men saksbehandlere bruker Azure AD

At du trenger accessPolicy.inbound i Nais-manifestet, ellers kan ingen kalle tjenesten din

At HikariCP default pool (10) er for stor for containere — start med 3

At du aldri skal sette CPU-limits i Nais (bare requests)

At PII aldri skal logges — logg sakId, ikke fnr

At Chainguard-images er standard i Nav, ikke distroless

At Rapids & Rivers-meldinger trenger @event_name og demandValue

Denne kunnskapen er kodet inn i nav-pilots beslutningstrær, blindsone-sjekklister og diagnostiske trær.

Kom i gang

Fra null til fungerende nav-pilot på 5 minutter.

Installasjon (5 min)

1
brew install navikt/tap/nav-pilot
2
cd /path/to/your/repo
nav-pilot
3

Du kan bruke nav-pilot på tre måter — velg den som passer deg best:

copilot --agent nav-pilot --prompt "Jeg trenger en ny tjeneste som behandler dagpengesøknader"
@nav-pilot Jeg trenger en ny tjeneste som behandler dagpengesøknader
nav-pilot

Starter interaktiv modus — sjekker oppdateringer og tilbyr å starte Copilot med valgt agent.

Personlig installasjon (valgfritt)

Du kan også installere agenter, skills og instruksjoner til hjemmemappen. De blir da tilgjengelige i alle repoer uten å endre hvert enkelt.

nav-pilot install --user

Filene installeres til ~/.copilot/. Agenter og skills plukkes opp automatisk av alle Copilot-klienter. Instruksjoner krever COPILOT_CUSTOM_INSTRUCTIONS_DIRS og fungerer kun med Copilot CLI — nav-pilot setter denne automatisk i interaktiv modus.

Når nye komponenter dukker opp i kilden, varsler nav-pilot om det ved oppstart. Vil du ikke installere en bestemt komponent, stopper du varselet med:

nav-pilot ignore instruction nextjs-aksel --user

For direkte bruk av cplt, legg til i shell-profilen:

eval "$(nav-pilot env)"

Første kommandoer

Her er noen nyttige kommandoer:

nav-pilot status
nav-pilot list
nav-pilot add agent security-champion
nav-pilot add skill postgresql-review
nav-pilot sync
nav-pilot feedback

Collections

Collections er ferdigpakkede sett med agenter, skills, instruksjoner og prompts organisert etter team-arketype. Velg din stack og få en komplett, testet pakke.

Tilgjengelige collections

CollectionBeskrivelseAgenterSkillsBest for
kotlin-backendKotlin/Ktor og Spring Boot på Nais613Backend-API-er og hendelseskonsumenter
frontendRammeverk-uavhengig frontend (Astro, Remix, Vite …)47Frontends som ikke bruker Next.js
nextjs-frontendNext.js med Aksel Design System47Innbygger- og saksbehandler-frontends
fullstackKomplett stack (backend + frontend)1016Team som eier hele stacken
platformNais, observability, sikkerhet og Go48Plattform- og DevOps-team

Planning skills

Alle collections inkluderer fire planning skills som utgjør nav-pilot-pipelinen:

SkillFormål
$nav-deep-interviewStrukturert intervju som avdekker blindsoner (personvern, auth, avhengigheter)
$nav-planArkitekturbeslutningstrær → konkret Nais-manifest, CI/CD og prosjektstruktur
$nav-architecture-reviewFlerperspektiv-review → Architecture Decision Record (ADR)
$nav-troubleshootDiagnostiske trær for vanlige Nav-plattformproblemer

Planleggingspipelinen

nav-pilot jobber i fire faser med eksplisitte stopp mellom hver. Du bestemmer når du går videre — nav-pilot foreslår, du godkjenner.

De fire fasene

Intervju

— Dypdykk-intervju
  • Personvern — behandler dere PII? Hvilke kategorier?
  • Auth — hvem kaller tjenesten — bruker, tjeneste, ekstern partner?
  • Avhengigheter — hva skjer når en avhengighet er nede?
  • Endringspåvirkning — hvem konsumerer dine API-er/hendelser?
  • Teststatus — hva er testdekningen i koden som endres?
  • Observerbarhet — hvilke forretningsmetrikker viser at tjenesten fungerer?

Skills i detalj

SkillFormålDekker
$nav-deep-interviewStrukturert intervju som avdekker blindsoner (personvern, auth, avhengigheter)
Personvern og dataPlattform og authObserverbarhetTeam og prosess

data-classification.md, blind-spots.md (25+ vanlige blindsoner fra ekte Nav-repoer)

$nav-planArkitekturbeslutningstrær → konkret Nais-manifest, CI/CD og prosjektstruktur
Auth-beslutningstreKommunikasjonstreDatabase-treaccessPolicy-tre

decision-trees.md, nais-templates.md (5 arketyper)

$nav-architecture-reviewFlerperspektiv-review → Architecture Decision Record (ADR)
ArkitekturSikkerhetPlattform

adr-template.md, nav-principles.md (Team First, essensiell kompleksitet, DORA)

$nav-troubleshootDiagnostiske trær for vanlige Nav-plattformproblemer
Pod krasjer (CrashLoopBackOff)401/403Kafka consumer lagDB-tilkobling feilerTreg responstidDeploy feiler

diagnostic-trees.md

Kompetansebevaring

Flere studier dokumenterer at passiv bruk av kodegenerering svekker utvikleres forståelse av egen kode. I Anthropics RCT (2026) scora utviklere som delegerte blindt 35–39 % på kodeforståelse, mot 86 % for de som aktivt stilte spørsmål etter generering. Navs egen longitudinalstudie (Stray et al., HICSS-59 2026) bekrefter mønsteret internt.

Samtidig viser MIT/Microsoft-studien (2025, ~5000 utviklere) at AI-assistanse gir størst produktivitetsgevinst på repetitive oppgaver. Gevinsten forsvinner — og kan bli negativ — på oppgaver som krever dyp forståelse av domenet.

nav-pilot implementerer dette skillet: oppgaver klassifiseres i grønn sone (AI genererer full kode) og rød sone (utvikleren skriver kjernelogikken selv). Klassifiseringen skjer i Fase 2 og håndheves i Fase 4.

Grønn og rød sone

🟢
  • Boilerplate og repetitiv kode (Nais-manifest, CRUD)
  • Kjent teknologi du allerede behersker
  • Konfigurasjon og infrastruktur
  • Refaktorering med kjent mål
  • Testdata og fixtures
🔴
  • Debugging og feilsøking
  • Nye konsepter og ukjent teknologi
  • Kjernelogikk og forretningsregler
  • Sikkerhetskritisk kode
  • Arkitekturbeslutninger

Når nav-pilot identifiserer rød-sone-logikk i Fase 2 (Plan), leverer Fase 4 bare testskjeletter og kode-stubs med TODO-kommentarer — ikke full implementasjon. Du skriver kjernelogikken selv for å bygge dyp forståelse.

Demo: I praksis

Her ser du nav-pilot planlegge en ny beregningsregel for sykepenger (§8-20). Legg merke til hvordan den skiller mellom grønn sone (plumbing-kode) og rød sone (regelverkslogikk):

Demo av nav-pilot som identifiserer kjernelogikk som rød sone og leverer stubs med TODO

Basert på forskning fra Anthropic, METR og Nav ITs egen studie.

Sync og oppdatering

Copilot-tilpasninger i navikt/copilot oppdateres jevnlig. Hold repoet ditt oppdatert med automatisk sync eller lokale kommandoer.

Automatisk sync

GitHub Actions-workflow som åpner PR-er automatisk — som Dependabot, men for Copilot-tilpasninger. PR-en viser hvilke filer som er oppdaterte, med lenker til kilderepoet.

name: Copilot Customization Sync
on:
  schedule:
    - cron: '0 7 * * 1'  # Mandager kl 07:00
  workflow_dispatch:
jobs:
  sync:
    uses: navikt/copilot/.github/workflows/copilot-customization-sync.yml@main
    permissions:
      contents: write
      pull-requests: write

Lokal sync

Bruk CLI-verktøyet for å sjekke og oppdatere filer lokalt. Sammenligner SHA-256-hasher mellom lokale filer og kilderepoet.

nav-pilot sync
nav-pilot sync --apply
nav-pilot sync --json

Hvordan nav-pilot finner filer

State-baserte repoer (brukte nav-pilot install): state-filen sporer nøyaktig hvilke filer som ble installert.

Klassiske repoer (kopierte filer manuelt): nav-pilot auto-oppdager filer som også finnes i kilderepoet:

  • .github/agents/*.agent.md
  • .github/instructions/*.instructions.md
  • .github/prompts/*.prompt.md
  • .github/skills/*/ (hele kataloger)

AGENTS.md og .github/copilot-instructions.md oppdateres aldri automatisk — de er alltid repo-spesifikke.

Tilpasse synkronisering

Trenger du å fjerne rammeverk-spesifikke filer (f.eks. Next.js-instruksjoner i et Astro-prosjekt)? Opprett .github/copilot-sync.json med overrides:

{
  "overrides": [
    ".github/instructions/nextjs-aksel.instructions.md",
    ".github/instructions/performance.instructions.md",
    ".github/prompts/nextjs-api-route.prompt.md"
  ]
}

Filer i overrides hoppes helt over under sync — ingen hash-sammenligning, ingen PR-diff. Du kan trygt slette filene etterpå, og de blir ikke lagt til igjen. Alternativt kan du installere frontend-collectionet som allerede utelater Next.js-spesifikke filer.

Sletter du en fil manuelt uten override, markeres den som «ignorert» og gjenopprettes ikke av sync. Legg den til igjen med nav-pilot add hvis du ombestemmer deg.

Har teamet en egen versjon av en fil med samme navn som kilden (f.eks. en egen kotlin-app-config skill), vil sync prøve å overskrive den. Bruk overrides for å beskytte filen. Filer med navn som ikke finnes i kilden blir aldri berørt av sync.

FAQ

?

Trenger jeg en GitHub-token eller secret?

Nei. Workflowen bruker standard GITHUB_TOKEN og leser offentlige kildefiler.

?

Hva om jeg har tilpasset en fil lokalt?

PR-en viser diff. Du kan gjennomgå, merge selektivt, eller lukke den. Workflowen tvinger aldri oppdateringer.

?

Kan jeg sjekke oppdateringer lokalt uten CI?

Ja. Kjør nav-pilot sync for å sjekke, eller nav-pilot sync --apply for å oppdatere direkte.

?

Hvordan er dette forskjellig fra Dependabot?

Samme konsept — automatiske oppdaterings-PR-er — men for Copilot-tilpasningsfiler. Sammenligner SHA-256-hasher i stedet for semantisk versjonering.

?

Hva om jeg sletter en fil manuelt?

Filen markeres som «ignorert» og legges ikke tilbake ved neste sync. Vil du ha den tilbake, kjør nav-pilot add <type> <name>.

?

Jeg får varsel om en komponent jeg ikke vil installere. Hvordan stopper jeg det?

Kjør nav-pilot ignore <type> <name> --user. nav-pilot merker komponenten som ignorert og varsler ikke om den igjen.

?

Kan jeg fjerne filer som ikke passer mitt rammeverk?

Ja. Opprett .github/copilot-sync.json med overrides, eller installer frontend-collectionet som allerede utelater Next.js-spesifikke filer.

?

Hva skjer hvis vi har en egen fil med samme navn som kilden?

Sync sammenligner hasher og foreslår å overskrive den med kildens versjon. Legg filen i overrides for å beskytte den. Filer med navn som ikke finnes i kilden ignoreres helt.

CLI-referanse

nav-pilot er et rent installasjonsverktøy skrevet i Go uten avhengigheter. All AI-funksjonalitet ligger i markdown-filer som kjøres av GitHub Copilot.

Installer CLI

brew install navikt/tap/nav-pilot

Oppgrader CLI

nav-pilot sjekker automatisk om det finnes en nyere versjon ved oppstart. Du kan oppgradere på to måter:

Selvoppdatering

nav-pilot update

Via Homebrew

brew update && brew upgrade nav-pilot

Feilsøking: «already installed»

Hvis brew upgrade sier at nav-pilot allerede er oppdatert men versjonen er gammel, skyldes det at den lokale tap-cachen ikke er oppdatert. Kjør brew update først. Dersom det feiler med tilgangsfeil:

sudo chown -R $(whoami) /opt/homebrew
brew update && brew upgrade nav-pilot

Kommandooversikt

KommandoBeskrivelse
nav-pilotInteraktivt: installer, oppgrader eller start Copilot-sandkassen (cplt)
nav-pilot install <collection>Installer en collection i repoet ditt
nav-pilot install --userInstaller agenter, skills og instruksjoner til ~/.copilot (alle repoer)
nav-pilot install --dry-run <collection>Forhåndsvis hva som installeres
nav-pilot install --force <collection>Overskriv lokalt endrede filer
nav-pilot listVis tilgjengelige collections
nav-pilot list --itemsVis alle tilgjengelige agenter, skills, etc.
nav-pilot add <type> <name>Installer enkeltkomponent (agent, skill, etc.)
nav-pilot ignore <type> <name> --userStopp varsel om en komponent uten å installere den
nav-pilot statusVis installerte filer og integritet
nav-pilot uninstallFjern alle installerte filer
nav-pilot syncSjekk om oppdateringer finnes (exit 1 hvis ja)
nav-pilot sync --applyOppdater filer direkte
nav-pilot sync --jsonMaskinlesbar JSON-output
<command> --jsonGlobalt flagg: JSON-output på alle kommandoer (install, add, status, sync, list, export)
nav-pilot envSkriv shell-eksport for Copilot CLI-integrasjon
nav-pilot updateOppdater nav-pilot CLI til nyeste versjon
nav-pilot feedbackRapporter feil — åpner GitHub issue med diagnostikk
nav-pilot feedback --featureForeslå ny funksjon
nav-pilot export opencodeEksporter til .opencode/-format (OpenCode / oh-my-openagent)
nav-pilot export opencode --userEksporter til ~/.config/opencode/ (globalt)
nav-pilot export opencode --dry-runForhåndsvis hva som eksporteres
nav-pilot versionVis versjonsinformasjon

Oppskrifter

Se hva som installeres

nav-pilot install --dry-run kotlin-backend

Installer

nav-pilot install kotlin-backend

Installer i annet repo

nav-pilot install --target /path/to/repo kotlin-backend

Overskriv lokalt endrede filer

nav-pilot install --force kotlin-backend

Eksporter til OpenCode-format

nav-pilot export opencode

Eksporter globalt (alle repoer)

nav-pilot export opencode --user

Forhåndsvis hva som eksporteres

nav-pilot export opencode --dry-run

JSON-output for alle kommandoer

nav-pilot status --json | jq .

Sjekk oppdateringer i CI (exit 1 = oppdateringer finnes)

nav-pilot sync --json

Installer i CI med JSON-resultat

nav-pilot install --json kotlin-backend

Exit-koder: 0 = suksess, 1 = feil eller oppdateringer tilgjengelig (sync), 2 = sync-sjekk feilet. --json fungerer på install, add, status, sync, list og export.

Slik fungerer det

nav-pilot installerer markdown-filer i repoet ditt. GitHub Copilot leser filene og tilpasser forslagene sine automatisk. Klikk på filene under for å se hva de gjør.

Filstruktur

Dette er filene som installeres i .github/-mappen din. Klikk for detaljer.

.github/

Agent

Definerer @nav-pilot sin persona, hvilke skills den bruker, og hvordan den delegerer til andre agenter. Copilot leser denne filen når du skriver @nav-pilot i chatten.

Aktiveres: Når du skriver @nav-pilot i Copilot Chat

Livssyklus

Fra installasjon til daglig bruk — slik henger delene sammen.

1

nav-pilot install kopierer markdown-filer fra navikt/copilot til .github/ i repoet ditt.

nav-pilot install kotlin-backend
2

Filene committes som vanlig kode. Hele teamet får samme Copilot-tilpasning.

git add .github/ && git commit
3

GitHub Copilot oppdager filene og tilpasser seg. Instruksjoner aktiveres automatisk, agenter kalles med @.

@nav-pilot planlegg et nytt API
4

nav-pilot sjekker automatisk om det finnes oppdateringer. Bruk sync for å hente nye skills og forbedringer.

nav-pilot sync --apply

Ressurser

Arkitektur

nav-pilot er bygget på tre lag:

Alltid aktive — Nav-mønstre, kodestandarder, anti-patterns. Hver Copilot-sesjon er Nav-bevisst automatisk.

Én inngangsport — ruter til riktig fase og skill. Delegerer til @auth, @nais, @kafka, @security-champion.

Byggeklosser — intervju, plan, review, feilsøking. Brukes via @nav-pilot eller alene.

Designprinsipper

Institusjonell kunnskap er varig — orkestrering blir standardvare.

Lett agent som delegerer. Skills har beslutningstrær og sjekklister.

nav-pilot foreslår, du godkjenner, nav-pilot fortsetter.

«Hva bygger du?» bestemmer stack, auth og Nais-konfig.

Go-binær uten avhengigheter. All AI kjøres av Copilot.

Lenker

Kildekode og issues

Installer enkeltkomponenter

Lær å bruke Copilot effektivt

Plattformdokumentasjon