okr/commands/sporing.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

166 lines
6.6 KiB
Markdown

---
name: okr:sporing
description: Spor OKR-fremgang, beregn score og generer check-in rapporter
allowed-tools: Read, Bash, AskUserQuestion, Task, ToolSearch, Glob
argument-hint: "[OKR eller tall for oppdatering]"
---
# OKR Sporing - Fremgang og scoring
Hjelp brukeren med å spore OKR-fremgang, beregne score og strukturere check-ins.
## Kontekstbevissthet
Hooken for-injiserer ikke lenger en fil-liste — den emitterer kun kjerne-profil
+ en peker til wikien. Oppdag OKR-konteksten direkte fra disk FØR du spør brukeren:
- Glob `.claude/okr/syklus/*/` for de OKR-filene som skal spores — les dem direkte
i stedet for å be brukeren lime inn OKR-tekst.
- Glob `.claude/okr/syklus/*/status.md` for forrige statusrapport i samme syklus, så
fremgang måles mot sist rapporterte verdi og ikke mot baseline alene.
- Trenger du bredere kontekst fra brukerens wiki, invoker `okr-second-brain-search`.
- Kjenner du allerede organisasjon og syklus fra kjerne-profilen: hopp over de spørsmålene.
## Scoring-system
**Skala**: 0.0 - 1.0
| Score | Betydning | Typisk for |
|-------|-----------|------------|
| 1.0 | 100% oppnådd | Committed mål |
| ≈0.7 | Sweet spot — 0.7 = forventet for aspirational; 0.6-0.7 = sweet spot (Google/Doerr) | Aspirational mål |
| 0.5-0.7 | Delvis suksess | Trenger analyse |
| < 0.5 | Ikke oppnådd | Trenger intervensjon |
### Beregningsformel
```
Score = (Nåværende - Baseline) / (Target - Baseline)
```
## Arbeidsflyt
### Ved statusoppdatering
1. **Samle inn tall** — les OKR-filer fra `.claude/okr/syklus/[id]/` (hvis tilgjengelig
fra system-kontekst) eller be brukeren oppgi OKR. Spør med AskUserQuestion:
- Nåværende verdi for hver KR
- Baseline og target (hvis ikke kjent)
- Dato for måling
Er `/okr:rapport tertial` kjørt for syklusen, finnes tallene allerede i
`rapport-tertial.md` — les den i stedet for å spørre om dem på nytt.
Confidence-kolonnen der står tom med vilje: generatoren eier aritmetikken,
denne kommandoen eier vurderingen. Det er den kolonnen du fyller i steg 3.
2. **Beregn score** per KR, og oppsummer **per type** — aldri som ett felles tall.
Committed og aspirational måles mot hver sin målestokk, og et aggregat på tvers
av dem er tvetydig (`okr-framework.md`, committed/aspirational-skillet):
- **Committed:** hvor mange KR som har nådd kravet. Et committed KR er nådd
eller ikke; et snitt av binære krav er ikke en størrelse.
- **Aspirational:** snittet på tvers av aspirational-KR. Rundt 0.7 er forventet
måloppnåelse, ikke svikt.
3. **Vurder confidence** — sett nivået fra den **kanoniske confidence-tabellen i
`okr-framework.md`** (On Track 🟢 / At Risk 🟡 / Off Track 🔴, sannsynlighet for å
nå target). Innfør ingen egne nivåer eller terskler her. Trend er ett *innspill*
til vurderingen: peker den mot target, flater den ut, eller har fremgangen stoppet?
4. **Skriv `status.md` med scriptet — aldri for hånd.** Du eier vurderingen;
generatoren eier tallene. Lever confidence som JSON på stdin, ett oppslag fra
KR-navn (nøyaktig som i `kr*_navn`) til etikett:
```bash
node ${CLAUDE_PLUGIN_ROOT}/scripts/syklus-status.mjs .claude/okr/syklus/[id] <<'JSON'
{
"Andel digitale søknader (prosent)": "At Risk",
"Gjennomsnittlig saksbehandlingstid (dager)": "On Track"
}
JSON
```
Etikettene er det lukkede vokabularet fra `okr-framework.md`: `On Track`,
`At Risk`, `Off Track`. Alle KR i syklusen må ha en etikett — scriptet nekter
å skrive en fil med tomme celler, fordi en slik fil ser vurdert ut uten å være
det, og konsumentene ville lest den som grønn.
**Skriv aldri av tallene selv.** Scriptet bygger radene med samme kode som
`/okr:rapport`, så score og avvik i `status.md` er de samme bytene der.
Exit-koder: `0` skrevet · `1` domenefeil (ugyldig eller manglende etikett,
eller en håndholdt `status.md` i veien — den overskrives aldri) · `2` bruksfeil
(feil argument, katalogen finnes ikke, ugyldig JSON).
5. **Presenter resultatet** med anbefalte tiltak, og pek på fila som ble skrevet.
### Ved ukentlig check-in
Generer en strukturert check-in:
1. Status på hver KR (traffic light)
2. Blokkere og støttebehov
3. Beslutninger som trengs
4. Fokus neste periode
## Fila scriptet skriver
`.claude/okr/syklus/[id]/status.md` er et OKF-konsept i second-brain-treet, ikke løs
markdown. Scriptet setter frontmatteren selv — `type: Status` (uten den feller
`okf-check` hele roten) og `kilde: sporing`, provenans-nøkkelen som gjør at en senere
kjøring vet at fila er generert og trygt kan erstatte den. Etikettene er ASCII, uten
emoji, som resten av den maskingenererte flaten; `coaching-hook` matcher på ordene.
Forkortet utdrag av resultatet:
```markdown
---
type: Status
title: Statusrapport T1-2026
timestamp: "2026-05-01T10:00:00.000Z"
kilde: sporing
---
# Statusrapport T1-2026
## Committed Key Results
Committed KR maales binaert mot kravet: kravet er naadd eller ikke. En score
under 1.0 er et avvik som skal forklares, ikke et godt resultat.
### Forsyningssikkerhet for drikkevann
| KR | Baseline | Target | Naa | Score | Avvik | Confidence |
|----|----------|--------|-----|-------|-------|------------|
| Høydebasseng med oppgradert sikringsutstyr (antall) | 12 | 20 | 17 | 0.63 | Ja | At Risk |
## Avvik som skal forklares
## Aspirational Key Results
| KR | Baseline | Target | Naa | Score | Avvik | Confidence |
|----|----------|--------|-----|-------|-------|------------|
| Andel digitale søknader (prosent) | 60 | 85 | 63 | 0.12 | - | At Risk |
**Snitt aspirational: 0.23** over 2 KR.
```
Rammeteksten om committed, avvik og aspirational kommer fra generatoren — du skal ikke
skrive den om. Det du eier, og som ikke finnes i fila, er **tiltakene**: presenter dem i
svaret ditt.
**Eksempel på anbefalte tiltak:**
1. Prioriter oppgraderingen av de tre gjenstående høydebassengene — kravet er et avvik,
ikke et delresultat.
2. Kjør brukerundersøkelse på selvbetjeningsløsningen før neste måling.
## Linear-integrasjon
Hvis Linear er konfigurert (sjekk med ToolSearch):
1. Hent aktive OKR-issues
2. Oppdater status-felt
3. Legg til kommentar med score
## Referanser
- `${CLAUDE_PLUGIN_ROOT}/skills/okr-offentlig-sektor/references/okr-calculator.md` — beregningsformler
- `${CLAUDE_PLUGIN_ROOT}/skills/okr-offentlig-sektor/references/okr-framework.md` — scoring-metodikk
- `${CLAUDE_PLUGIN_ROOT}/skills/okr-offentlig-sektor/references/metrics-library.md` — metrikkbibliotek for offentlige KR
- `${CLAUDE_PLUGIN_ROOT}/skills/okr-offentlig-sektor/references/okr-integrations.md` — Linear-/verktøyintegrasjon for statussporing