Nyheter
Nav

14. april 2026

Automatisk synkronisering av Copilot-tilpasninger

Vi har over 35 tilpasningsfiler i navikt/copilot — agents, instructions, prompts og skills. Mange team har kopiert deler av disse inn i sine egne repoer. Problemet er at filene oppdateres jevnlig, og da blir kopiene utdaterte.

Nå finnes det en sync-workflow som fikser dette. Den fungerer som Dependabot, men for Copilot-filer i stedet for pakker.

Kom i gang

Opprett .github/workflows/copilot-sync.yml i repoet ditt:

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

Ferdig. Ingen tokens, ingen secrets, ingen konfigurasjon.

Hva skjer?

Workflowen kjører ukentlig og gjør tre ting:

  1. Finner alle Copilot-filer i repoet ditt
  2. Sammenligner SHA-256-hasher mot siste versjon i navikt/copilot
  3. Åpner en PR hvis noe er utdatert

PR-en havner på branchen copilot-customization-sync med tittel som «chore: sync 3 Copilot customization(s)». Du ser diffen og bestemmer selv om du merger.

Hvilke filer sjekkes?

Workflowen sjekker alle Copilot-filer som allerede finnes i repoet ditt:

  • .github/agents/*.agent.md
  • .github/instructions/*.instructions.md
  • .github/prompts/*.prompt.md
  • .github/skills/*/SKILL.md og metadata.json

AGENTS.md og .github/copilot-instructions.md synces aldri fordi de alltid er repospesifikke.

Bare bestemte filer?

Opprett .github/copilot-sync.json for å begrense hva som sjekkes:

{
  "files": [
    ".github/agents/nais-platform.agent.md",
    ".github/instructions/kotlin-ktor.instructions.md"
  ]
}

Uten denne fila sjekkes alt som finnes i repoet.

Hva om jeg har gjort lokale endringer?

PR-en viser diffen. Du kan merge selektivt, redigere PR-en, eller lukke den. Workflowen tvinger ingenting — den åpner bare PR-er.

Hvis teamet ditt bevisst vedlikeholder egne versjoner av bestemte filer, kan du markere dem som overrides. Da hopper sync over dem helt — ingen hashsjekk, ingen PR-diff:

{
  "overrides": [
    ".github/agents/nais.agent.md",
    ".github/instructions/security.instructions.md"
  ]
}

Legg dette i .github/copilot-sync.json. Filer i overrides vil aldri dukke opp i sync-PR-er.

Astro, Remix eller annen frontend uten Next.js?

Hvis du har installert nextjs-frontend- eller fullstack-samlingen men ikke bruker Next.js, kan du hoppe over Next.js-filene:

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

Alternativt kan du installere frontend-samlingen som kun inneholder rammeverk-agnostiske verktøy.

Synkroniser mot et annet repo

Du kan synkronisere mot et team-repo i stedet for navikt/copilot:

jobs:
  sync:
    uses: navikt/copilot/.github/workflows/copilot-customization-sync.yml@main
    with:
      source_repo: navikt/my-team-copilot
    permissions:
      contents: write
      pull-requests: write

Dette lar teamet ha et eget sett med Copilot-tilpasninger som synkroniseres ned til alle team-repoene.

Formatering og whitespace

Sync-workflowen er tolerant for formatforskjeller i markdown-filer (.md). Forskjeller i linjeskift (CRLF vs LF), trailing whitespace og antall blanke linjer utløser ikke falske oppdateringer. JSON-filer sjekkes fortsatt byte for byte.

Oppdateringer kommer automatisk

Workflowen er en reusable workflow. Den refereres med @main, så forbedringer vi gjør i navikt/copilot treffer alle team ved neste kjøring uten at dere trenger å endre noe.

Mer informasjon

Se dokumentasjonen for sync-workflowen for tekniske detaljer og FAQ.

Alle nyheter