Lukker de fire release-relevante MAJOR-funnene fra /trekreview (S33). Alle TDD
roed -> groenn, ingen fiks landet uten en test som feilet foerst. Suite 163 -> 167.
R1 (af16d5e4) hooks/scripts/coaching-hook.mjs:83 -- LEVENDE REGRESJON innfoert av
1.8.0. Denne releasen skrev status-malen (commands/sporing.md:86-88) om til den
kanoniske skalaen On Track/At Risk/Off Track, mens hooken fortsatt talte kun
/i fare|blokkert/i over tabellrader. En status generert under 1.8.0 ga derfor
atRiskCount = 0 og SessionStart-nudgen sluttet stille aa utloese seg. Hooken
teller naa de kanoniske etikettene; de to norske er BEHOLDT som bakover-
kompatibilitet for status-filer skrevet foer 1.8.0. Nudge-teksten bruker samme
kanoniske vokabular. Ny testcase mates av malen slik den faktisk genereres i dag;
den eksisterende casen beholder gammelt vokabular og daekker legacy-stien.
R2 (7ec575be) F-i-omskrivingen ga hver kommando en Kontekstbevissthet-blokk som
INSTRUERER Glob, men allowed-tools ble kun utvidet i kaskade.md. Glob lagt til i
export, gap, governance, innfoering, kvalitet, moeter, skriv, sporing. Ny vakt-
case (k): nevner BODY verktoeyet, maa frontmatter deklarere det (13 kommandoer
instruerer Glob; alle 13 dekket). Case (i) grepper kun etter fjernede fraser og
kunne ikke fange dette.
R3 (5e61ae0d) tests/package-shape.test.mjs asserterte KUN package.json -- som er
private:true og dermed den ene flaten som aldri shipper. En delvis bump ville
shippet groenn. Ny versjonssync-case dekker .claude-plugin/plugin.json, README-
badgen og begge SKILL.md, med forventet verdi UTLEDET fra package.json (ett sted
aa endre ved neste bump). Mutasjonsbevist: hver av de fire flatene tilbakestilt
til 1.7.1 en om gangen -> casen roed i alle fire tilfeller.
R4 (ccff16e1 + 231c53fc) Tre parallelle confidence-etikettsett overlevde F-c:
fremdriftssporer-agent.md:68 ("Paa sporet / I fare / Blokkert"), :98
("Confidence: [Hoey/Medium/Lav]" -- en annen akse: stoerrelse, ikke sannsynlighet)
og SKILL.md:48 ("blocked"; kanonisk er "off track"). Alle tre erstattet med
referanse til kanon (okr-framework.md:389-392). sporing.md og agenten den
delegerer til svarer naa i samme vokabular. Vakt-case (a)/(b) skanner naa samme
sett som (d) allerede brukte (+ agents/ + SKILL.md), samlet i canonScan(). Ny
case (a2) fanger etikettsett skrevet som bullet eller mal-linje -- tabell-
signaturen alene fanget dem ikke, og det var nettopp formen driften overlevde i.
Divergens gjenkjennes STRUKTURELT (skraastrek-enumerasjon av >= 2 etiketter, med
>= 1 ikke-kanonisk), saa loepende prosa som "For KR i fare" og "Blokkert av
eksterne faktorer" ikke gir falske positive. Verifisert: roed-listen var noeyaktig
de 3 kjente linjene, ingen andre.
CHANGELOG/README: vakt-antall 13 -> 15 cases, suite 149 -> 167, og de fire
fiksene lagt inn under [1.8.0] (Added + Fixed). Ingen versjonsbump.
GJENSTAAR fra reviewet (3 MAJOR, IKKE i denne bolgen): 607313e3 F-d-kadens-
moensteret kan ikke feile paa den kanoniske kadens-tabellen; 029ef814
freshen-references.md:24 baerer fortsatt en foreldet kontekstblokk og vaktens
exclude-kommentar kaller fila feilaktig "allerede-fikset" (den er utenfor
1.8.0-scope by design, jf. ba91fc2 -- kommentaren er usann, ikke ekskluderingen);
7579d59c "Outcome" er utestbar i 10-dims-casen pga. substring-containment.
Verify: node --test --test-reporter=tap tests/*.test.mjs -> 167 pass / 0 fail.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016pUfkQ1YyH75z9y6RBaBHG
85 lines
3.1 KiB
Markdown
85 lines
3.1 KiB
Markdown
---
|
|
name: okr:export
|
|
description: Eksporter OKR-dokumenter (kvalitetsvurdering, gap-matrise, statusrapport, retrospektiv) til print-klar PDF
|
|
allowed-tools: Read, Bash, Glob
|
|
argument-hint: "[dokumenttype eller filsti]"
|
|
---
|
|
|
|
# OKR Export - Eksporter OKR-leveranser til PDF
|
|
|
|
Generer en print-klar A4-PDF av et OKR-dokument for deling med ledelse,
|
|
Riksrevisjon eller styringsdialog. Konverterer Markdown til PDF via
|
|
`scripts/export-pdf.py` (weasyprint), med tabell-striping og fargekodede
|
|
score-celler (`.score-green` / `.score-yellow` / `.score-red`).
|
|
|
|
## Kontekstbevissthet
|
|
|
|
Hooken for-injiserer ikke lenger en fil-liste — den emitterer kun kjerne-profil
|
|
+ en peker til wikien. Oppdag hva som kan eksporteres direkte fra disk FØR du spør:
|
|
- Glob `.claude/okr/syklus/*/` for aktive OKR-filer — tilby å eksportere dem direkte.
|
|
- Glob `.claude/okr/dokumenter/` for genererte rapporter — tilby disse.
|
|
- Glob `.claude/okr/historikk/*/retrospektiv.md` for arkiverte retrospektiver.
|
|
- Spør kun om dokumenttype når konteksten ikke gjør valget åpenbart.
|
|
|
|
## Arbeidsflyt
|
|
|
|
1. **Velg dokumenttype** — hvilken leveranse skal eksporteres:
|
|
- **kvalitetsvurdering** — output fra `/okr:kvalitet`
|
|
- **gap-matrise** — output fra `/okr:gap`
|
|
- **statusrapport** — output fra `/okr:sporing`
|
|
- **retrospektiv** — `retrospektiv.md` fra `/okr:oppsett arkiver`
|
|
- eller en vilkårlig Markdown-fil brukeren oppgir.
|
|
|
|
2. **Sørg for Markdown-kilde** — hvis dokumentet finnes som fil, bruk filstien.
|
|
Hvis det kun finnes i samtalen, skriv det til en `.md`-fil først (f.eks.
|
|
`.claude/okr/dokumenter/kvalitetsvurdering-T1-2026.md`).
|
|
|
|
3. **Kjør eksporten** via Bash:
|
|
```bash
|
|
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/export-pdf.py <input.md> <output.pdf>
|
|
```
|
|
Eksempel:
|
|
```bash
|
|
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/export-pdf.py \
|
|
.claude/okr/dokumenter/kvalitetsvurdering-T1-2026.md \
|
|
.claude/okr/dokumenter/kvalitetsvurdering-T1-2026.pdf
|
|
```
|
|
|
|
4. **Bekreft resultatet** — skriptet skriver `Skrev PDF: <sti>` til stderr ved
|
|
suksess. Rapporter filstien til brukeren.
|
|
|
|
**Tips for fargekoding:** I Markdown-tabellen kan score-celler tagges med
|
|
`attr_list`-syntaks slik at de blir fargelagt i PDF-en:
|
|
|
|
```markdown
|
|
| KR | Score |
|
|
|----|-------|
|
|
| KR1 | 0.9 {: .score-green} |
|
|
| KR2 | 0.5 {: .score-yellow} |
|
|
| KR3 | 0.2 {: .score-red} |
|
|
```
|
|
|
|
## Feilhåndtering
|
|
|
|
Eksporten har to dokumenterte forutsetninger (ikke bundlet med pluginet):
|
|
|
|
- **Manglende Python-pakker** (`markdown`, `weasyprint`) → skriptet avslutter med
|
|
exit 1 og hintet:
|
|
```
|
|
pip install markdown weasyprint
|
|
```
|
|
- **Manglende native bibliotek** (Pango/cairo/gdk-pixbuf) → feiler ved rendring
|
|
med exit 1 og hintet:
|
|
```
|
|
brew install pango
|
|
```
|
|
|
|
Begge feil gir en tydelig instruks (ikke en traceback). Når en forutsetning
|
|
mangler: rapporter instruksen til brukeren, ikke prøv å installere noe selv.
|
|
|
|
## Referanser
|
|
|
|
- `${CLAUDE_PLUGIN_ROOT}/scripts/export-pdf.py` — selve eksport-skriptet
|
|
- `${CLAUDE_PLUGIN_ROOT}/commands/kvalitet.md` — produserer kvalitetsvurdering
|
|
- `${CLAUDE_PLUGIN_ROOT}/commands/gap.md` — produserer gap-matrise
|
|
- weasyprint: https://doc.courtbouillon.org/weasyprint/stable/
|