okr/commands/oppsett.md
Kjell Tore Guttormsen ec1abf999c
docs(okr): generiske, fiktive eksempler i kunnskapsbasen
Sektorspesifikt eksempelmateriale er erstattet med generiske, fiktive
eksempler. Det fiktive direktoratet DDT får eksempler fra digitale
tjenester, som samsvarer med navnet. Fjordvik kommune (fiktiv) får
eksempler fra vann, avløp og avfall. Strukturen, tallene og poenget i
hvert eksempel er bevart, blant annet committed-doktrinens stokastiske
samfunnsutfall, progress-regnestykkene i Oboard-eksempelet og
kaskadekjeden.

Valg:
- Én kildebelagt case er fjernet fra okr-sources.md og én virksomhetsliste er
  gjort generell («m.fl.»). Påstandene som står igjen, er fortsatt sanne.
- Standardverdien i malens domene-felt er «digitalisering». «annet»
  dekker det som er tatt ut av alternativlistene.
- De historiske evalueringsdokumentene er endret bare der de siterte det
  gamle eksempelinnholdet.

Suite 350/350 grønn, vakten har 0 treff.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 12:28:54 +02:00

19 KiB

name description allowed-tools argument-hint
okr:oppsett Konfigurer OKR-pluginen med dyp onboarding, profiloppdatering og syklusarkivering Read, Write, Bash, AskUserQuestion, ToolSearch, Glob [full|mvp|arkiver|oppdater|vis]

OKR Oppsett - Onboarding, konfigurasjon og syklushåndtering

Interaktiv konfigurasjon av OKR-pluginen. Bygger en persistent organisasjonsprofil som alle andre kommandoer bruker automatisk via hook-injeksjon.

Ruting basert på argument

Argument Handling
(ingen) Detekter eksisterende konfig, tilby meny
full Kjør 6-fase dyp onboarding (15-20 min)
mvp Kjør minimum viable onboarding (6 spørsmål, ~5 min)
arkiver Arkiver gjeldende syklus med retrospektiv
oppdater Oppdater spesifikke felt i eksisterende profil
vis Vis gjeldende konfigurasjon

Ingen argument — detekter og tilby

Les .claude/okr.local.md (relativt til brukerens prosjekt-cwd).

Hvis filen IKKE finnes:

Bruk AskUserQuestion:

Ser ut som du ikke har konfigurert OKR-pluginen ennå.
Vil du kjøre onboarding-intervjuet?

1. Full onboarding (6 faser, 15-20 min) — anbefalt for beste resultat
2. MVP onboarding (6 spørsmål, ~5 min) — rask start
3. Avbryt

Kjør full eller mvp basert på valg.

Hvis filen finnes OG onboarding_status: partial:

Fant ufullstendig onboarding. Du kom til fase [N] forrige gang.

1. Fortsett fra fase [N]
2. Start på nytt (full)
3. Start på nytt (mvp)
4. Avbryt

Hvis fortsett: les YAML, finn siste utfylte fase-seksjon, fortsett fra neste.

Hvis filen finnes OG onboarding_status: fullfort:

Vis kort oppsummering av gjeldende profil (org, syklus, modenhet, verktøy). Bruk AskUserQuestion:

Konfigurasjon funnet for [organisasjon.navn].

1. Oppdater konfigurasjon (endre spesifikke felt)
2. Kjør intervju på nytt (full)
3. Vis full konfigurasjon
4. Avslutt

Full onboarding — 6-fase dyp intervju

Skriv onboarding_status: partial til .claude/okr.local.md for hver fase er fullført. Oppdater til fullfort etter siste fase.

Fase 1 — Identitet (2 min)

Still alle spørsmål med AskUserQuestion (grupper 2-3 sammen der naturlig):

  1. Organisasjonsnavn og kortform? Eksempel (fiktiv eksempeletat): «Direktoratet for digital tjenesteutvikling» / «DDT»

  2. Type organisasjon? Alternativer: statlig etat | direktorat | kommune | fylkeskommune

  3. Hvilket departement eller overordnet etat? Eksempel: "fagdepartementet"

  4. Fagdomene? Alternativer: helse | justis | digitalisering | utdanning | miljø | annet

  5. Antall ansatte i OKR-programmet (ca.)? Tall eller estimat

  6. Nasjonal, regional eller lokal virksomhet? Alternativer: nasjonal | regional | lokal

Etter fase 1: Skriv organisasjon-seksjonen til .claude/okr.local.md.

Fase 2 — Modenhet (5 min)

  1. OKR-historikk? Alternativer: aldri prøvd | prøver nå (første syklus) | erfaren (2+ sykluser)

  2. Hvis erfaren: Antall gjennomførte sykluser? (Hopp over hvis "aldri prøvd" eller "prøver nå")

  3. Hvem er OKR-sponsor (navn og rolle)? Personen som gir mandat og synlighet. Eksempel: "Divisjonsdirektør Kari Holm"

  4. Hvem er OKR-champion (navn og rolle)? Personen som driver det operative arbeidet. Eksempel: "Seniorrådgiver Per Lund"

  5. Er OKR eksplisitt koblet fra lønnssamtale og medarbeidersamtale? Alternativer: ja | nei | usikkert

    VIKTIG: Hvis "nei" eller "usikkert" — sett okr_frikoblet_fra_loenn: false og legg til advarsel i Markdown-body:

    ADVARSEL: OKR koblet til lønn er et av de farligste antipatternene. Når medarbeidere vet at OKR-score påvirker lønn, setter de trygge, lave mål i stedet for ambisiøse stretch goals. Anbefaler sterkt å dekoble før utrulling.

  6. Hva er alignment-tilnærmingen? Alternativer: top-down | bottom-up | bidireksjonell Forklar kort: "Bidireksjonell betyr at ledelsen setter retning og teamene foreslår egne OKR som kobles opp. Dette er anbefalt tilnærming."

Etter fase 2: Oppdater .claude/okr.local.md med program-seksjonen.

Fase 3 — Strategisk kontekst (5 min)

  1. Har dere et tildelingsbrev for 2026? Alternativer: ja | nei

    Hvis ja: "Vil du lagre nøkkelmål fra tildelingsbrevet? Lim inn de viktigste målene (stikkpunkter, ikke hele brevet) så kan pluginen bruke dem til alignment."

    Hvis brukeren limer inn tekst: skriv til .claude/okr/strategisk-kontekst/tildelingsbrev-2026.md med OKF-frontmatter (second-brain-kompatibel: påkrevd type: i Title-Case + anbefalt resource/ title/description/tags-liste/timestamp) og innlimt innhold. Opprett mappene med Write-tool:

    ---
    type: Tildelingsbrev
    resource: "[lenke/arkiv-ID til kilden]"
    title: "Tildelingsbrev 2026"
    description: "Nøkkelmål fra tildelingsbrevet for alignment"
    tags:
    - tildelingsbrev
    - styringssignaler
    timestamp: "[ISO-8601, f.eks. 2026-01-15T09:00:00+00:00]"
    ---
    
    [innlimt innhold]
    
  2. Har dere en virksomhetsplan eller strategiplan? Eventuelt lenke eller nøkkelpunkter. Hvis innhold gis: skriv til .claude/okr/strategisk-kontekst/virksomhetsplan.md med OKF-frontmatter (type: Virksomhetsplan + anbefalte felt som over).

  3. Har dere org-nivå OKR for 2026? Alternativer: ja | nei | planlegges

    Hvis ja: "Lim inn org-OKR (Objectives og Key Results) så pluginen kan bruke dem til kaskadering og alignment-sjekk."

    Hvis innhold gis: skriv til .claude/okr/strategisk-kontekst/overordnede-okr.md med OKF-frontmatter (type: Overordnede OKR + anbefalte felt som over).

Etter fase 3: Oppdater .claude/okr.local.md med eventuell strategisk kontekst-info. Hvis du skrev én eller flere strategisk-kontekst-filer, regenerér OKF-indeksen for prosjekt-treet så index.md per nivå reflekterer de nye konsept-filene:

node ${CLAUDE_PLUGIN_ROOT}/scripts/okf-index.mjs .claude/okr

(Idempotent: bygger index.md-entries fra konsept-filenes title/description, bevarer menneske-skrevne overskrifter og rotens markører okf_version + okf_layout.)

Fase 4 — Struktur (3 min)

  1. Hvilke OKR-nivåer bruker dere? Alternativer (flervalg): etat | divisjon | avdeling | seksjon | team

  2. Din rolle i OKR-programmet? Alternativer: leder | produkteier | seksjonsleder | koordinator | annet

  3. Antall team som kjører OKR denne syklusen (ca.)? Tall

  4. Bruker dere bidireksjonell kaskadering? Forklaring: "Teamene foreslår egne OKR som kobles til org-OKR, i stedet for at alt kommer ovenfra." Alternativer: ja | nei | planlegger det

Etter fase 4: Oppdater gjeldende_syklus-seksjonen.

Fase 5 — Verktøy (2 min)

  1. Oppgavestyringsverktøy? Alternativer: Linear | Jira | Azure DevOps | Planner | ingen | annet

  2. OKR-sporingsverktøy? Alternativer: Oboard | Quantive | regneark | ingen | annet

  3. Møteverktøy? Alternativer: Microsoft Teams | Zoom | annet

  4. Leveransemetodikk? Alternativer: Scrum | Kanban | SAFe | prosjekt | annet

  5. Vil du koble Linear til OKR-pluginen? Alternativer: ja | nei

    Hvis ja: Kjør Linear-oppsett:

    1. Sjekk om Linear MCP er konfigurert — les ~/.claude/settings.json
    2. Hvis ikke: veilede oppsett av MCP-server (referer til Linear MCP docs)
    3. Bruk ToolSearch for å finne Linear-tools, hent teams og projects
    4. La bruker velge team og project for OKR-tracking

Etter fase 5: Oppdater verktøy- og integrasjoner-seksjonen.

Fase 6 — Kultur (3 min)

  1. Hva er check-in-rytmen (eller ønsket rytme)? Alternativer: ukentlig | annenhver uke | månedlig Anbefaling: "Annenhver uke er et godt utgangspunkt. Ukentlig for team i utførelsesfase."

  2. Psykologisk trygghet for å sette stretch goals? Alternativer: lav | middels | høy Forklaring: "Kan teammedlemmer trygt foreslå ambisiøse mål uten å frykte konsekvenser om de ikke når 100%?"

  3. Kjente utfordringer eller antipatterns dere har sett? Fritekst, ENTER for å hoppe over. Eksempler: "set-and-forget", "aktivitetsfokus i KR", "for mange Objectives"

  4. Er tillitsvalgte involvert i OKR-prosessen? Alternativer: ja | nei | planlegges

Etter fase 6: Oppdater kultur-seksjonen. Sett onboarding_status: fullfort.

Fullføringssteg

Etter alle 6 faser:

  1. Skriv komplett YAML til .claude/okr.local.md (oppdater alle seksjoner)

  2. Sett onboarding_status: fullfort og Sist oppdatert: [dato]

  3. Skriv reinstall-overlevende org-profil til hjem-stien. Profilen (organisasjon:- og program:-seksjonene — org-identiteten som skal overleve reinstall og være tilgjengelig på tvers av prosjekter) skrives uten ----fences til en temp-fil og sendes gjennom OKF-komponisten + skrivehelperen via Bash:

    OUT=$(node ${CLAUDE_PLUGIN_ROOT}/scripts/compose-org-profile.mjs < /tmp/okr-profil.tmp \
      | node ${CLAUDE_PLUGIN_ROOT}/scripts/write-org-profile.mjs)
    echo "$OUT"
    

    compose-org-profile.mjs prepender de tre top-level OKF-nøklene (type: Organisasjonsprofil, resource:, timestamp:) over den nestede YAML-en og pakker alt i ett frontmatter-blokk (second-brain-kompatibelt). Legg aldri til en ny top-level navn:/id:/fase:/domene:/sektor: i profilen — de ville skygge de nestede verdiene som hooken leser. Helperen skriver atomisk (temp + renameSync) til ~/.claude/okr/org/profil.md og rapporterer den faktisk brukte stien på stdout ($OUT); en eventuell fallback-notice går til stderr. Rapporter til brukeren: «Org-profil skrevet til: $OUT». Hvis $OUT peker på den prosjektlokale fallbacken (.claude/okr.local.md — skjer kun ved skrivefeil mot hjem), vis i tillegg hele profil-YAML-en for manuell plassering (jf. Feilhåndtering «Fil kan ikke skrives»), slik at brukeren kan legge ~/.claude/okr/org/profil.md på plass selv. Behold den prosjektlokale .claude/okr.local.md-skrivingen (steg 1) for syklus- og strategisk-kontekst-data — kun selve profilen migrerer til hjem.

  4. Vis oppsummering:

Onboarding fullført for [organisasjon]!

Profil:
- Organisasjon: [navn] ([type])
- Modenhet: [nivå] ([N] sykluser gjennomført)
- Gjeldende syklus: [id] ([fase])
- Verktøy: [oppgavestyring], [okr_tracking]
- Check-in: [rytme]

Lagrede kontekstfiler:
- .claude/okr.local.md (organisasjonsprofil)
[- .claude/okr/strategisk-kontekst/tildelingsbrev-2026.md]
[- .claude/okr/strategisk-kontekst/overordnede-okr.md]

Anbefalte neste steg:
- /okr:skriv — skriv første OKR for denne syklusen
- /okr:kvalitet — sjekk eksisterende OKR
- /okr:møter — planlegg OKR-workshop eller kick-off

MVP onboarding — 6 spørsmål

For brukere som vil komme raskt i gang. Samle alle spørsmål i en AskUserQuestion eller maks 2 runder:

  1. Organisasjonsnavn og type? Eksempel (fiktiv eksempeletat): «Direktoratet for digital tjenesteutvikling, statlig etat»

  2. Fagdomene? Alternativer: helse | justis | digitalisering | utdanning | miljø | annet

  3. OKR-modenhet? Alternativer: aldri prøvd | prøver nå (første syklus) | erfaren (2+ sykluser)

  4. Gjeldende syklusfase? Alternativer: planlegging | utførelse | review | mellom sykluser

  5. Primære verktøy? Fritekst. Eksempel: "Linear og Microsoft Teams"

  6. Er OKR frikoblet fra lønnssamtale? Alternativer: ja | nei | usikkert

Etter svar: Skriv YAML med disse 6 feltene pluss fornuftige defaults for alle andre:

---
onboarding_status: fullfort
organisasjon:
  navn: "[svar 1: navn]"
  kortform: ""
  type: "[svar 1: type]"
  departement: ""
  ansatte_i_okr_program: 0
  domene: "[svar 2]"
  geografi: "nasjonal"
program:
  modenhetsnivaa: "[utledet fra svar 3: aldri prøvd→ikke-startet, prøver nå→utforsker, erfaren→pilot]"
  sykluser_gjennomfort: 0
  sponsor: ""
  champion: ""
  okr_frikoblet_fra_loenn: [svar 6: true/false]
  alignment_tilnaerming: "bidireksjonell"
gjeldende_syklus:
  id: "[beregnet fra dato og fase]"
  periode: "[beregnet]"
  fase: "[svar 4]"
  antall_team: 1
verktoy:
  oppgavestyring: "[parsed fra svar 5]"
  okr_tracking: ""
  moeteverktoy: "[parsed fra svar 5]"
  leveransemetodikk: ""
kultur:
  sjekk_inn_rytme: "annenhver uke"
  psykologisk_trygghet: "middels"
  kjente_utfordringer: []
integrasjoner:
  linear:
    aktivert: false
    team_id: ""
    project_id: ""
preferanser:
  spraak: "no"
  vis_eksempler: true
  ambisjonsnivaa: "balansert"
---

Skriv også reinstall-overlevende org-profil til hjem-stien. Skriv profil-YAML-en (organisasjon: + program:, uten ----fences) til en temp-fil og kjør OKF-komponisten

  • skrivehelperen via Bash:
OUT=$(node ${CLAUDE_PLUGIN_ROOT}/scripts/compose-org-profile.mjs < /tmp/okr-profil.tmp \
  | node ${CLAUDE_PLUGIN_ROOT}/scripts/write-org-profile.mjs)
echo "$OUT"

compose-org-profile.mjs prepender top-level OKF-nøkler (type: Organisasjonsprofil, resource:, timestamp:) over den nestede profilen i ett frontmatter-blokk. Rapporter «Org-profil skrevet til: $OUT». Hvis $OUT er den prosjektlokale fallbacken, vis YAML-en for manuell plassering (jf. Feilhåndtering). Syklus-/kontekstdata forblir prosjektlokalt i .claude/okr.local.md.

Vis kort oppsummering og foreslå /okr:oppsett full for å fylle ut resten senere.


Oppdater — endre spesifikke felt

Trigger: /okr:oppsett oppdater eller valg 1 fra ingen-argument-menyen.

  1. Les .claude/okr.local.md
  2. Vis gjeldende verdier gruppert per seksjon
  3. Bruk AskUserQuestion: "Hvilken seksjon vil du oppdatere?" Alternativer: Organisasjon | Program | Syklus | Verktøy | Kultur | Integrasjoner | Preferanser
  4. Vis feltene i valgt seksjon med gjeldende verdier
  5. La bruker endre ett eller flere felt
  6. Skriv oppdatert YAML tilbake
  7. Oppdater Sist oppdatert i filen

Vis — vis gjeldende konfigurasjon

Trigger: /okr:oppsett vis eller valg 3 fra ingen-argument-menyen.

Les .claude/okr.local.md og vis innholdet formatert:

## OKR-profil for [organisasjon.navn]

### Identitet
- Navn: [navn] ([kortform])
- Type: [type]
- Departement: [departement]
- Domene: [domene]
- Ansatte i OKR-program: [tall]

### Program
- Modenhet: [modenhetsnivaa]
- Sykluser gjennomført: [tall]
- Sponsor: [sponsor]
- Champion: [champion]
- OKR frikoblet fra lønn: [ja/nei]

### Gjeldende syklus
- ID: [id]
- Periode: [periode]
- Fase: [fase]
- Antall team: [tall]

### Verktøy
[liste]

### Kultur
[liste]

### Integrasjoner
[status]

Kontekstfiler:
[list .claude/okr/ directory if exists]

Arkiver syklus

Trigger: /okr:oppsett arkiver

Forutsetninger

Les gjeldende_syklus.id fra .claude/okr.local.md (f.eks. T1-2026). Sjekk at .claude/okr/syklus/[id]/ finnes. Hvis ikke:

Ingen aktiv syklusmappe funnet for [id].
Opprett `.claude/okr/syklus/[id]/` med OKR-filer for å bruke arkivering.

Arkiveringsflyt

  1. Les gjeldende syklus — les alle .md-filer i .claude/okr/syklus/[id]/ og status.md hvis den finnes.

  2. Samle endelige scorer — hvis status.md har endelige scorer, bruk dem. Ellers spør med AskUserQuestion:

    Hva ble de endelige scorene for [syklus]?
    Oppgi score per KR (0.0-1.0) eller ENTER for å bruke siste kjente status.
    
  3. Generer retrospektiv — skriv til .claude/okr/syklus/[id]/retrospektiv.md:

    ---
    type: Retrospektiv
    syklus: [id]
    periode: [periode fra config]
    arkivert: [dato]
    samlet_score: [beregnet gjennomsnitt]
    ---
    
    # Retrospektiv [id]
    
    ## Resultater
    
    [OKR med endelige scorer, tabellformat]
    
    ## Hva gikk bra
    
    [Basert på KR som scoret 0.7+]
    
    ## Hva var utfordrende
    
    [Basert på KR som scoret <0.5, noter mønstre]
    
    ## Læring til neste syklus
    
    [Identifiser 2-3 konkrete forbedringer]
    
    ## Antipatterns observert
    
    [Sjekk mot antipatternene fra referansemateriale —
     nevn kun de som er relevante basert på scoremønsteret.
     Les ${CLAUDE_PLUGIN_ROOT}/skills/okr-offentlig-sektor/references/okr-antipatterns.md]
    
  4. Arkiver til historikk — opprett .claude/okr/historikk/[id]/ med Write-tool og kopier alle filer fra syklusmappen dit (les innhold, skriv til ny sti).

    Opprett også .claude/okr/historikk/[id]-resultater.md med sammendrag: endelige scorer, topp-læringer, og lenke til full retrospektiv.

  5. Bekreft sletting — bruk AskUserQuestion:

    Slett syklusmappen `.claude/okr/syklus/[id]/`?
    Den er nå arkivert i `historikk/[id]/`.
    Alternativer: ja | nei (behold begge)
    

    Hvis ja og Bash-tool er tilgjengelig: valider FØRST at [id] ikke er tom OG matcher mønsteret ^[TQ][1-4]-[0-9]{4}$ (f.eks. T1-2026). Kun hvis valideringen passerer, kjør: rm -rf .claude/okr/syklus/[id]/. Ved tom eller malformert [id]: AVVIS slettingen og be om en gyldig syklus-id — kjør ALDRI rm -rf med tom verdi (det ville blitt rm -rf .claude/okr/syklus// og slettet hele syklus-treet). Hvis Bash ikke er tilgjengelig: vis kommandoen brukeren kan kjøre manuelt (samme validering gjelder): rm -rf .claude/okr/syklus/[id]/

  6. Oppdater profil — i .claude/okr.local.md:

    • Inkrementer sykluser_gjennomfort med 1
    • Oppdater gjeldende_syklus.id til neste syklus:
      • Tertial: T1→T2→T3→T1 (med årsoppdatering)
      • Kvartal: Q1→Q2→Q3→Q4→Q1 (med årsoppdatering)
    • Sett gjeldende_syklus.fase til planlegging
    • Oppdater gjeldende_syklus.periode til neste periodestreng
  7. Opprett ny syklusmappe — skriv .claude/okr/syklus/[ny-id]/status.md med OKF-frontmatter + tom mal (tabellstruktur med KR-kolonner, ingen data ennå):

    ---
    type: Status
    syklus: [ny-id]
    title: "Status [ny-id]"
    description: "Fremdrift og scoring for syklus [ny-id]"
    timestamp: "[ISO-8601]"
    ---
    
    # OKR Status [ny-id]
    
    [tom tabellstruktur med KR-kolonner]
    

    Regenerér deretter OKF-indeksen for prosjekt-treet:

    node ${CLAUDE_PLUGIN_ROOT}/scripts/okf-index.mjs .claude/okr
    
  8. Bekreft — vis oppsummering:

    Syklus [id] er arkivert i `.claude/okr/historikk/[id]/`.
    Gjeldende syklus er nå [ny-id] (planleggingsfase).
    
    Anbefalte neste steg:
    - /okr:møter — planlegg oppstartsmøte for [ny-id]
    - /okr:skriv — skriv nye OKR for [ny-id]
    - /okr:kaskade — kaskader org-OKR til team-nivå
    

Feilhåndtering

  • Fil kan ikke skrives: Vis YAML som kan kopieres manuelt
  • Bruker avbryter midt i intervju: onboarding_status: partial allerede lagret — neste kjøring tilbyr å fortsette
  • Linear API feiler: Gi tydelig feilmelding, fortsett uten Linear-integrasjon
  • Mappeopprettelse feiler: Vis mkdir -p .claude/okr/strategisk-kontekst/ kommando brukeren kan kjøre manuelt

Syklusberegning

Beregn gjeldende syklus-ID basert på dagens dato:

  • Tertial: Jan-Apr = T1, Mai-Aug = T2, Sep-Des = T3
  • Kvartal: Jan-Mar = Q1, Apr-Jun = Q2, Jul-Sep = Q3, Okt-Des = Q4
  • Format: T[1-3]-YYYY eller Q[1-4]-YYYY