No description
  • JavaScript 97.1%
  • Python 2.9%
Find a file
Kjell Tore Guttormsen 44ceec7205 fix(okr): C7b remediering R1-R4 (release-relevante review-funn for 1.8.0)
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
2026-07-25 12:33:55 +02:00
.claude-plugin feat(okr): 1.8.0 En kanon versjonssync + CHANGELOG 2026-07-25 06:44:35 +02:00
agents fix(okr): C7b remediering R1-R4 (release-relevante review-funn for 1.8.0) 2026-07-25 12:33:55 +02:00
commands fix(okr): C7b remediering R1-R4 (release-relevante review-funn for 1.8.0) 2026-07-25 12:33:55 +02:00
docs docs(okr): trinn C-tillegg til fase-4-kartlegging (adopsjonsrunden) 2026-07-20 08:53:07 +02:00
hooks fix(okr): C7b remediering R1-R4 (release-relevante review-funn for 1.8.0) 2026-07-25 12:33:55 +02:00
lib fix(okr): B2 ingestion-kode-hygiene + bump 1.7.1 (patch-lane) 2026-07-17 04:02:10 +02:00
scripts fix(okr): B2 ingestion-kode-hygiene + bump 1.7.1 (patch-lane) 2026-07-17 04:02:10 +02:00
skills fix(okr): C7b remediering R1-R4 (release-relevante review-funn for 1.8.0) 2026-07-25 12:33:55 +02:00
templates feat(okr): onboarding skriver OKF-frontmatter paa org-profil (SC6) 2026-06-26 17:19:14 +02:00
tests fix(okr): C7b remediering R1-R4 (release-relevante review-funn for 1.8.0) 2026-07-25 12:33:55 +02:00
.gitignore fix(okr): B1 KB/doc-hygiene + referanse-integritetstest (1.7.1-lane) 2026-07-17 03:43:22 +02:00
.npmrc feat(okr): package.json + engines>=22 + pinnede pure-JS converter-deps + dep-disclosure (Topic 1) 2026-07-16 20:02:22 +02:00
CHANGELOG.md fix(okr): C7b remediering R1-R4 (release-relevante review-funn for 1.8.0) 2026-07-25 12:33:55 +02:00
CLAUDE.md feat(okr): 1.8.0 En kanon versjonssync + CHANGELOG 2026-07-25 06:44:35 +02:00
CODE_OF_CONDUCT.md feat: add okr plugin v1.0.0 — OKR guidance for Norwegian public sector 2026-04-08 13:32:45 +02:00
CONTRIBUTING.md fix(okr): rett CONTRIBUTING/GOVERNANCE-motsigelse, SECURITY-kanal, uciterte statistikker 2026-06-23 21:19:50 +02:00
GOVERNANCE.md docs: introduce GOVERNANCE.md and unify fork-and-own blurb 2026-05-03 14:57:00 +02:00
LICENSE feat: add okr plugin v1.0.0 — OKR guidance for Norwegian public sector 2026-04-08 13:32:45 +02:00
package-lock.json feat(okr): 1.8.0 En kanon versjonssync + CHANGELOG 2026-07-25 06:44:35 +02:00
package.json feat(okr): 1.8.0 En kanon versjonssync + CHANGELOG 2026-07-25 06:44:35 +02:00
README.md fix(okr): C7b remediering R1-R4 (release-relevante review-funn for 1.8.0) 2026-07-25 12:33:55 +02:00
SECURITY.md fix(okr): rett CONTRIBUTING/GOVERNANCE-motsigelse, SECURITY-kanal, uciterte statistikker 2026-06-23 21:19:50 +02:00

OKR for Public Sector

Turn strategy into measurable goals. An AI coach that learns your organization, tracks progress across cycles, and guides you from first OKR to organizational mastery.

Solo-maintained, fork-and-own. This plugin is a starting point, not a vendor product. Issues are welcome as signals; pull requests are not accepted. See GOVERNANCE.md for the full model and what upstream provides.

AI-generated: all code produced by Claude Code through dialog-driven development. Full disclosure →

Version Platform Agents Commands Hooks References License


Why This Exists

Every organization has a strategy. Few manage to turn it into goals that teams actually work toward.

OKR (Objectives and Key Results) is a proven framework for that translation — used by Google and Intel, and documented in Norwegian practice: Digdir runs OKR in its product delivery model, NAV product teams use it at team level, Oslo Origo built and open-sourced its own OKR tracker, and FINN.no has more than six years of it. Every adopter named here has a public source in skills/okr-offentlig-sektor/references/okr-sources.md § 4; organizations we could not source are not named. But adopting OKR is hard. The methodology sounds simple ("write inspiring goals with measurable results") until you try it. Then you hit real questions:

  • How do we connect our OKR to the goals in our tildelingsbrev?
  • What's a good Key Result vs. just an activity disguised as one?
  • How do we handle it when political priorities shift mid-cycle?
  • Are we actually getting better at this, or just going through the motions?

This plugin is an AI coach that helps with all of these. It's built specifically for Norwegian public sector — 4-month tertial cycles, DFØ's "mål- og resultatstyring" framework, tillitsvalgt involvement, and the governance chain from Stortingsmelding to team OKR.

What makes it different from a methodology guide?

A methodology guide explains OKR theory. This plugin knows your organization.

After a one-time onboarding conversation, it remembers your maturity level, your strategic documents, your current OKR, and your cultural challenges. Every interaction builds on that knowledge. When you ask it to write new OKR, it already knows what your organization is trying to achieve. When you check quality, it checks alignment against your actual strategy — not a generic rubric.

Over time, it tracks how your OKR practice evolves. It spots recurring mistakes, shows score trends, and coaches you based on where you are in the cycle. Early in the cycle? Focus on alignment. Midway? Time for a progress check. Near the end? Let's prepare the retrospective.


What It Does

From Strategy to OKR

The core workflow: take your strategic goals (from virksomhetsplan, tildelingsbrev, etatsstrategi, or any strategic document) and transform them into well-structured OKR.

> /okr:skriv We want to make the application process faster for citizens

The plugin guides you through writing an inspiring Objective and measurable Key Results, calibrating ambition, and checking alignment against your organization's strategic direction.

Quality That Goes Beyond Spell-Check

> /okr:kvalitet

Checks your OKR against 19 named antipatterns (like "activity disguised as a Key Result", "sandbagging", or "set-and-forget") and scores quality across multiple dimensions. If your OKR has issues, you get concrete improvement suggestions — not just "try harder."

Strategy Alignment

> /okr:kaskade

Cascades OKR from organizational level down to teams. Shows which strategic goals have team support and which are orphaned. If you've stored your org-level OKR, it reads them automatically.

Gap Analysis

> /okr:gap

Compares your strategic documents (tildelingsbrev, virksomhetsplan) against your current OKR and produces a coverage matrix: which requirements are fully covered, which are partially covered, and which are completely missing. For each gap, it suggests OKR formulations.

Progress Tracking

> /okr:sporing

Calculates scores (0.01.0), assesses confidence levels, generates forecasts, and flags Key Results that are at risk. If you use Linear, it can sync status there too.

Cross-Cycle Learning

> /okr:analyse

After your first completed cycle, this is where the real value begins. Reads your archived cycles and shows:

  • Score trends — are you improving? Visualized with charts.
  • Recurring antipatterns — the same mistakes across cycles get flagged explicitly.
  • Alignment progression — is your team coverage of org goals getting better?

Proactive Coaching

You don't have to remember to check in. When you start a session, the plugin automatically tells you where you are in the cycle and what to focus on:

"OKR coaching: Week 12 of 16 in T1-2026. Approaching cycle end — focus on final scoring and retrospective preparation. 2 KR flagged as at-risk in last status update."

Meetings and Facilitation

> /okr:møter

Generates tailored agendas for OKR workshops, check-ins, reviews, and 1:1 conversations using the CFR (Conversations, Feedback, Recognition) framework — adapted for public sector where bonuses aren't an option.

Adoption and Change Management

> /okr:innføring

Planning to introduce OKR in your organization? Get a phased rollout plan with resistance-handling strategies, maturity assessment, and guidance on involving tillitsvalgte — because in Norwegian public sector, change management without union involvement doesn't work.

Governance and Compliance

> /okr:governance

Translate tildelingsbrev requirements into OKR. Map the governance chain (Stortingsmelding → tildelingsbrev → etatsstrategi → OKR). Verify that your OKR documentation meets Riksrevisjon standards.

Export Deliverables

> /okr:export

Renders any OKR deliverable — quality review, gap matrix, status report, or retrospective — to a print-ready A4 PDF for management or Riksrevisjon. Tables get striping and score cells are color-coded (green/yellow/red). PDF generation is a documented prerequisite (pip install markdown weasyprint, brew install pango), not bundled — a missing dependency exits with a clear install hint, never a traceback.

Inbox Ingestion

> /okr:innboks

Drop documents — tildelingsbrev PDFs, virksomhetsplan docx, meeting notes — into .claude/okr/innboks/ and ingest them into the knowledge tree in one sweep. The pipeline is deterministic (no LLM in the core): convert (txt/md/docx/eml/pdf) → split on headings → stamp OKF frontmatter with a kilde: innboks provenance marker → route by document type → validate each document against a strict security gate. A document that fails the gate is discarded alone with a per-document report; originals always stay untouched in the inbox, and re-running on unchanged input is a byte-identical no-op. Known v1 limitations (flat PDF extraction, table structure loss) are listed in the CHANGELOG.

Help and Maintenance

> /okr:help
> /okr:freshen-references

/okr:help lists all 14 commands, 7 agents, and a recommended workflow keyed to where you are in the tertial cycle. /okr:freshen-references is a knowledge-base self-evaluator: it scores 16 of the 17 domain reference files against an anchored quality rubric — the quality rubric itself is excluded, since scoring the scoring instrument is circular — and polls named public sources (UN EGDI, EU eGov Benchmark, OECD DGI, Digdir, WCAG, forvaltningsloven) to flag outdated Sist oppdatert markers.


Getting Started

Install

Add to your Claude Code plugin configuration:

{
  "enabledPlugins": {
    "okr@ktg-plugin-marketplace": true
  }
}

First Conversation

> /okr:oppsett mvp

Six questions, five minutes. The plugin learns your organization, maturity level, tools, and cycle phase. From that point on, every command adapts to your context.

Want the full experience? /okr:oppsett full runs a deeper interview (15-20 minutes) that also captures your strategic context, cultural challenges, and organizational structure.

Typical Workflow

Starting fresh:

/okr:oppsett full       # One-time setup
/okr:skriv              # Write your first OKR
/okr:kvalitet           # Quality check
/okr:kaskade            # Align with org goals

During a cycle:

/okr:sporing            # Update progress
/okr:møter              # Prepare check-in meeting

End of cycle:

/okr:oppsett arkiver    # Archive with retrospective
/okr:analyse            # See how you're trending
/okr:skriv              # Start the next cycle

Built for Norwegian Public Sector

What's different about OKR in offentlig sektor?

Challenge How the plugin helps
4-month tertial cycles (not quarterly) Built-in tertial support with correct week counting and phase detection
Tildelingsbrev drives priorities /okr:governance and /okr:gap translate and check coverage
DFØ uses different terminology Built-in mapping between "mål- og resultatstyring" and OKR concepts
Riksrevisjonen requires documentation Audit-ready format with baseline, target, data source per KR
No performance bonuses CFR framework designed for recognition without financial incentives
Tillitsvalgte must be involved Guidance on drøftingsplikt, transparent KR, and union involvement
Consensus culture Advice calibrated for organizations where stretch goals feel risky
Political priorities can shift mid-cycle Strategies for handling mid-cycle mandate changes

The governance chain

Stortingsmelding / NTP
        |
Tildelingsbrev fra departement
        |
Etatsstrategi / Virksomhetsplan
        |
Org-level OKR (annual, strategic)
        |
Cycle OKR (tertial, tactical)
        |
Team OKR

The plugin understands this hierarchy and helps you maintain alignment at every level.


Under the Hood

Agents

7 specialized agents activate automatically:

Agent Role
kvalitetssjekker Score quality, detect antipatterns, check alignment
kaskadebygger Build cascades between organizational levels
fremdriftssporer Calculate scores, forecast completion, flag risks
møtefasilitator Generate meeting agendas and facilitation materials
styringsrådgiver Governance analysis, tildelingsbrev translation, audit compliance
gapanalytiker Coverage matrix between strategic documents and OKR
trendanalytiker Cross-cycle pattern analysis with trend visualization

Hooks

Event What it does
SessionStart Proactive coaching — tells you where you are in the cycle and what to focus on
UserPromptSubmit Injects your organization profile and available context files into every interaction
PreCompact Preserves OKR draft state if the conversation gets long

Skills

Skill Role
okr-offentlig-sektor Core OKR methodology and Norwegian public-sector domain knowledge
okr-second-brain-search On-demand retrieval from your personal OKF wiki (.claude/okr/ + ~/.claude/okr/org/) — in free chat and during /okr:* commands, without pre-injecting everything

Dependencies

The plugin core is zero-dependency (node: builtins only). The inbox-ingestion pipeline (/okr:innboks, v1.7.0) is the one deliberate exception: it needs four pure-JS conversion libraries, exact-pinned in package.json (no ^/~ ranges) — mammoth (docx), turndown (HTML→markdown), postal-mime (eml), unpdf (PDF). Install with npm install --ignore-scripts (the repo .npmrc enforces ignore-scripts=true as supply-chain protection); requires Node >= 22. Everything else in the plugin runs without node_modules/.

Knowledge Base

17 reference files covering OKR methodology, Norwegian public sector governance, antipatterns, meeting guides, metrics library, anchored quality rubrics, integration patterns, and more. The plugin reads only what's relevant to each interaction — never the whole library at once.

Persistent Context

.claude/
  okr.local.md                    # Your organizational profile
  okr/
    strategisk-kontekst/           # Strategic documents you provide
    syklus/T1-2026/                # Active cycle OKR and status
    historikk/                     # Archived cycles with retrospectives
    dokumenter/                    # Any other relevant documents

Limitations

  • Designed for Norwegian public sector — may not fit other contexts without adaptation
  • Not yet tested in a real multi-cycle OKR program
  • Linear is the only supported tracking integration
  • Norwegian language for all user-facing interactions

Version History

Version Date Highlights
1.8.0 2026-07-25 «Én kanon» — metodekonsolidering etter dyp review: én kanonisk confidence-tabell og én kadens-doktrine i okr-framework.md med konsument-dedup på tvers av referanser, kommandoer og agenter; score→modenhet-avledningen fjernet; committed = forpliktelse OG påvirkbarhet; kvalitetsvurdering ankret i rubrikken (alle 10 dimensjoner, ingen parallelle scorebånd); ekte antipattern-kategorier; milepæl-/binær-unntak; «align, don't cascade» i kaskadeflatene; markedsclaims kildebelagt + nye kilder (NCT, EBM 2024); ny konsistensvakt tests/canon-consistency.test.mjs (suite 149 → 167 cases)
1.7.1 2026-07-17 Patch: restsanering etter dyp review — KB/doc-hygiene med referanse-integritetstest (B1) + ingestion-kode-hygiene (B2): æ/ø-translitterering i slugify, ikke-destruktiv circuit-breaker (merge, config overlever), sanitizeEntry mot bidi/zero-width/Unicode-tag, --okf-version-bump, BOM/CRLF-toleranse, presis at-risk-telling, bøyningsformer i topic-guard
1.7.0 2026-07-17 Innboks-ingestion: /okr:innboks med deterministisk pipeline (convert/split/frontmatter/gate/relasjoner/indeks), per-dokument sikkerhetsgate mot RAG-poisoning, kilde: innboks-provenans + untrusted-envelope i retrieval-skillen, 4 exact-pinnede pure-JS-avhengigheter (eneste zero-dep-unntak)
1.6.1 2026-06-26 Patch: credibility-sanering etter 360-re-evaluering (C+ → A) — ASCII-strippet kvalitetsrubrikk omskrevet til korrekt norsk, okr-second-brain-search ~-glob søker nå hjemme-roten, uverifisert kb-search-sitat fjernet, regnefeil i oboard-eksempel rettet
1.6.0 2026-06-26 OKF «second brain»: on-demand retrieval-skill (okr-second-brain-search) over OKF-wiki, OKF-frontmatter på kontekstfiler, okf-index/okf-check, delt frontmatter-modul, slankere inject-hook
1.5.0 2026-06-26 Referansegrad-løft (Fase 3): /okr:help, /okr:export (PDF), /okr:freshen-references, ankret kvalitetsrubrikk, atomisk org-profil-skriving
1.4.0 2026-06-24 Domenedybde + kildeintegritet (Fase 1), UX-/kommando-/agent-modning (Fase 2), hybrid org-kontekst-lesing
1.3.2 2026-06-24 Fix: loopende Stop-hook fjernet
1.3.1 2026-06-23 Fakta- og troverdighetssanering
1.3.0 2026-04-08 Gap analysis, cross-cycle analytics with Mermaid visualizations, proactive SessionStart coaching
1.1.0 2026-04-08 Persistent context, deep onboarding, context-aware commands, cycle archival
1.0.0 2026-04-08 Architecture overhaul, self-contained commands, hooks, marketplace-ready
0.5.0 2026-02-07 First formal version

See CHANGELOG.md for full details.


License

MIT