ktg-plugin-marketplace/plugins/okr/commands/oppsett.md
Kjell Tore Guttormsen ac95cd6a30 feat(okr): sync to v1.3.0 from ktg-privat
Syncs all changes from v1.0.0 through v1.3.0:

v1.1 (quick fixes):
- Fix deprecated Viva Goals references
- Add DFO-OKR terminology mapping
- Add tillitsvalgt/fagforening perspective
- Update Objectives recommendation from 3-5 to 2-3

v1.1 (persistent context):
- Deep onboarding interview (full/mvp)
- Persistent .claude/okr/ directory tree
- Context-aware commands
- Cycle archival with retrospective

v1.3 (AI-first differentiators):
- /okr:gap — tildelingsbrev gap analysis with coverage matrix
- /okr:analyse — cross-cycle Mermaid analytics
- SessionStart coaching hook (proactive, phase-aware)
- gapanalytiker + trendanalytiker agents
- inject-okr-context.mjs extended for historikk/

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 20:31:49 +02:00

497 lines
15 KiB
Markdown

---
name: okr:oppsett
description: Konfigurer OKR-pluginen med dyp onboarding, profiloppdatering og syklusarkivering
allowed-tools: Read, Write, Bash, AskUserQuestion, ToolSearch, Glob
argument-hint: "[full|mvp|arkiver|oppdater|vis]"
---
# OKR Oppsett - Onboarding, konfigurasjon og syklushandtering
Interaktiv konfigurasjon av OKR-pluginen. Bygger en persistent organisasjonsprofil
som alle andre kommandoer bruker automatisk via hook-injeksjon.
## Ruting basert pa argument
| Argument | Handling |
|----------|----------|
| _(ingen)_ | Detekter eksisterende konfig, tilby meny |
| `full` | Kjor 6-fase dyp onboarding (15-20 min) |
| `mvp` | Kjor minimum viable onboarding (6 sporsmaal, ~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 enna.
Vil du kjore onboarding-intervjuet?
1. Full onboarding (6 faser, 15-20 min) — anbefalt for beste resultat
2. MVP onboarding (6 sporsmaal, ~5 min) — rask start
3. Avbryt
```
Kjor `full` eller `mvp` basert pa 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 pa nytt (full)
3. Start pa 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, verktoy).
Bruk AskUserQuestion:
```
Konfigurasjon funnet for [organisasjon.navn].
1. Oppdater konfigurasjon (endre spesifikke felt)
2. Kjor intervju pa 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 fullfort. Oppdater til `fullfort` etter siste fase.
### Fase 1 — Identitet (2 min)
Still alle sporsmaal med AskUserQuestion (grupper 2-3 sammen der naturlig):
1. **Organisasjonsnavn og kortform?**
Eksempel: "Statens vegvesen" / "SVV"
2. **Type organisasjon?**
Alternativer: statlig etat | direktorat | kommune | fylkeskommune
3. **Hvilket departement eller overordnet etat?**
Eksempel: "Samferdselsdepartementet"
4. **Fagdomene?**
Alternativer: transport | helse | justis | digitalisering | utdanning | 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)
7. **OKR-historikk?**
Alternativer: aldri provd | prover na (forste syklus) | erfaren (2+ sykluser)
8. **Hvis erfaren: Antall gjennomforte sykluser?**
(Hopp over hvis "aldri provd" eller "prover na")
9. **Hvem er OKR-sponsor (navn og rolle)?**
Personen som gir mandat og synlighet. Eksempel: "Divisjonsdirektor Kari Holm"
10. **Hvem er OKR-champion (navn og rolle)?**
Personen som driver det operative arbeidet. Eksempel: "Seniorradgiver Per Lund"
11. **Er OKR eksplisitt koblet fra lonnssamtale 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 lonn er et av de farligste antipatternene.
> Nar medarbeidere vet at OKR-score pavirker lonn, setter de trygge, lave mal
> i stedet for ambisiose stretch goals. Anbefaler sterkt a dekoblere for utrulling.
12. **Hva er alignment-tilnaermingen?**
Alternativer: top-down | bottom-up | bidireksjonell
Forklar kort: "Bidireksjonell betyr at ledelsen setter retning og teamene foreslaar
egne OKR som kobles opp. Dette er anbefalt tilnaerming."
**Etter fase 2:** Oppdater `.claude/okr.local.md` med program-seksjonen.
### Fase 3 — Strategisk kontekst (5 min)
13. **Har dere et tildelingsbrev for 2026?**
Alternativer: ja | nei
Hvis ja: "Vil du lagre nokkelmal fra tildelingsbrevet? Lim inn de viktigste malene
(stikkpunkter, ikke hele brevet) sa kan pluginen bruke dem til alignment."
Hvis brukeren limer inn tekst: skriv til
`.claude/okr/strategisk-kontekst/tildelingsbrev-2026.md` med YAML-frontmatter
og innlimt innhold. Opprett mappene med Write-tool.
14. **Har dere en virksomhetsplan eller strategiplan?**
Eventuelt lenke eller nokkelpunkter. Hvis innhold gis: skriv til
`.claude/okr/strategisk-kontekst/virksomhetsplan.md`.
15. **Har dere org-niva OKR for 2026?**
Alternativer: ja | nei | planlegges
Hvis ja: "Lim inn org-OKR (Objectives og Key Results) sa pluginen kan bruke dem
til kaskadering og alignment-sjekk."
Hvis innhold gis: skriv til `.claude/okr/strategisk-kontekst/overordnede-okr.md`.
**Etter fase 3:** Oppdater `.claude/okr.local.md` med eventuell strategisk kontekst-info.
### Fase 4 — Struktur (3 min)
16. **Hvilke OKR-nivaer bruker dere?**
Alternativer (flervalg): etat | divisjon | avdeling | seksjon | team
17. **Din rolle i OKR-programmet?**
Alternativer: leder | produkteier | seksjonsleder | koordinator | annet
18. **Antall team som kjorer OKR denne syklusen (ca.)?**
Tall
19. **Bruker dere bidireksjonell kaskadering?**
Forklaring: "Teamene foreslaar 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 — Verktoy (2 min)
20. **Oppgavestyringsverktoy?**
Alternativer: Linear | Jira | Azure DevOps | Planner | ingen | annet
21. **OKR-sporingsverktoy?**
Alternativer: Oboard | Quantive | regneark | ingen | annet
22. **Moteverktoy?**
Alternativer: Microsoft Teams | Zoom | annet
23. **Leveransemetodikk?**
Alternativer: Scrum | Kanban | SAFe | prosjekt | annet
24. **Vil du koble Linear til OKR-pluginen?**
Alternativer: ja | nei
Hvis ja: Kjor 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 a finne Linear-tools, hent teams og projects
4. La bruker velge team og project for OKR-tracking
**Etter fase 5:** Oppdater verktoy- og integrasjoner-seksjonen.
### Fase 6 — Kultur (3 min)
25. **Hva er check-in-rytmen (eller onsket rytme)?**
Alternativer: ukentlig | annenhver uke | maanedlig
Anbefaling: "Annenhver uke er et godt utgangspunkt. Ukentlig for team i utfoerelsesfase."
26. **Psykologisk trygghet for a sette stretch goals?**
Alternativer: lav | middels | hoy
Forklaring: "Kan teammedlemmer trygt foreslaa ambisiose mal uten a frykte konsekvenser
om de ikke naar 100%?"
27. **Kjente utfordringer eller antipatterns dere har sett?**
Fritekst, ENTER for a hoppe over.
Eksempler: "set-and-forget", "aktivitetsfokus i KR", "for mange Objectives"
28. **Er tillitsvalgte involvert i OKR-prosessen?**
Alternativer: ja | nei | planlegges
**Etter fase 6:** Oppdater kultur-seksjonen. Sett `onboarding_status: fullfort`.
### Fullforingssteg
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. Vis oppsummering:
```
Onboarding fullfort for [organisasjon]!
Profil:
- Organisasjon: [navn] ([type])
- Modenhet: [niva] ([N] sykluser gjennomfort)
- Gjeldende syklus: [id] ([fase])
- Verktoy: [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 forste OKR for denne syklusen
- /okr:kvalitet — sjekk eksisterende OKR
- /okr:moter — planlegg OKR-workshop eller kick-off
```
---
## MVP onboarding — 6 sporsmaal
For brukere som vil komme raskt i gang. Samle alle sporsmaal i en AskUserQuestion
eller maks 2 runder:
1. **Organisasjonsnavn og type?**
Eksempel: "Statens vegvesen, statlig etat"
2. **Fagdomene?**
Alternativer: transport | helse | justis | digitalisering | utdanning | annet
3. **OKR-modenhet?**
Alternativer: aldri provd | prover na (forste syklus) | erfaren (2+ sykluser)
4. **Gjeldende syklusfase?**
Alternativer: planlegging | utfoerelse | review | mellom sykluser
5. **Primaere verktoy?**
Fritekst. Eksempel: "Linear og Microsoft Teams"
6. **Er OKR frikoblet fra lonnssamtale?**
Alternativer: ja | nei | usikkert
**Etter svar:** Skriv YAML med disse 6 feltene pluss fornuftige defaults for alle andre:
```yaml
---
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 provd→ikke-startet, prover na→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"
---
```
Vis kort oppsummering og foreslaa `/okr:oppsett full` for a 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 | Verktoy | 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 gjennomfort: [tall]
- Sponsor: [sponsor]
- Champion: [champion]
- OKR frikoblet fra lonn: [ja/nei]
### Gjeldende syklus
- ID: [id]
- Periode: [periode]
- Fase: [fase]
- Antall team: [tall]
### Verktoy
[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 a 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 spor med AskUserQuestion:
```
Hva ble de endelige scorene for [syklus]?
Oppgi score per KR (0.0-1.0) eller ENTER for a bruke siste kjente status.
```
3. **Generer retrospektiv** — skriv til `.claude/okr/syklus/[id]/retrospektiv.md`:
```markdown
---
syklus: [id]
periode: [periode fra config]
arkivert: [dato]
samlet_score: [beregnet gjennomsnitt]
---
# Retrospektiv [id]
## Resultater
[OKR med endelige scorer, tabellformat]
## Hva gikk bra
[Basert pa KR som scoret 0.7+]
## Hva var utfordrende
[Basert pa KR som scoret <0.5, noter monstere]
## Laering til neste syklus
[Identifiser 2-3 konkrete forbedringer]
## Antipatterns observert
[Sjekk mot antipatternene fra referansemateriale —
nevn kun de som er relevante basert pa scoremansteret.
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 ogsa `.claude/okr/historikk/[id]-resultater.md` med sammendrag:
endelige scorer, topp-laeringer, og lenke til full retrospektiv.
5. **Bekreft sletting** — bruk AskUserQuestion:
```
Slett syklusmappen `.claude/okr/syklus/[id]/`?
Den er na arkivert i `historikk/[id]/`.
Alternativer: ja | nei (behold begge)
```
Hvis ja og Bash-tool er tilgjengelig: `rm -rf .claude/okr/syklus/[id]/`
Hvis Bash ikke tilgjengelig: vis kommando brukeren kan kjore manuelt:
`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 aarsoppdatering)
- Kvartal: Q1→Q2→Q3→Q4→Q1 (med aarsoppdatering)
- 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
tom mal (tabellstruktur med KR-kolonner, ingen data enna).
8. **Bekreft** — vis oppsummering:
```
Syklus [id] er arkivert i `.claude/okr/historikk/[id]/`.
Gjeldende syklus er na [ny-id] (planleggingsfase).
Anbefalte neste steg:
- /okr:moter — planlegg oppstartsmate for [ny-id]
- /okr:skriv — skriv nye OKR for [ny-id]
- /okr:kaskade — kaskader org-OKR til team-niva
```
---
## Feilhandtering
- **Fil kan ikke skrives:** Vis YAML som kan kopieres manuelt
- **Bruker avbryter midt i intervju:** `onboarding_status: partial` allerede lagret — neste kjoring tilbyr a fortsette
- **Linear API feiler:** Gi tydelig feilmelding, fortsett uten Linear-integrasjon
- **Mappeopprettelse feiler:** Vis `mkdir -p .claude/okr/strategisk-kontekst/` kommando brukeren kan kjore manuelt
## Syklusberegning
Beregn gjeldende syklus-ID basert pa 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`