CLAUDE.md loads every turn while working in this repo (measured 1,732 always-loaded tokens — the whole per-repo delta; no .claude/rules or .mcp.json). Unlike the larger plugins, this file is already information-dense (tables + precise design contracts), and the OKF Knowledge Layout content is under active development (the "OKF second-brain spec" work), so it is left untouched. The only safe, fact-preserving compression is the org-profile State-Management paragraph (stable infra, not OKF-spec): same facts, tighter wording. 1,732→1,717 tok. The one remaining lever — the command→agent Architecture routing diagram (~230 tok) — is a deliberate wiring reference and is kept; it can move to /okr:help on request. Docs-only — no version bump, no catalog ref change. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01683eAqVecv9VZfQzL8CQ9h
6.8 KiB
OKR Offentlig Sektor v1.6.1
Expert OKR guidance for Norwegian public sector. Google/Doerr methodology adapted for 4-month tertial cycles.
Commands
| Command | Description |
|---|---|
/okr:skriv |
Write new OKR with guided Objective and KR creation |
/okr:kvalitet |
Quality check OKR against rubric and antipatterns |
/okr:kaskade |
Cascade OKR from org to team, visualize alignment |
/okr:sporing |
Track progress, calculate scores, generate check-ins |
/okr:møter |
Plan OKR workshops, check-ins, reviews, 1:1s |
/okr:innføring |
OKR adoption planning, resistance handling, maturity |
/okr:governance |
Tildelingsbrev translation, Riksrevisjon compliance |
/okr:gap |
Automatic gap analysis between tildelingsbrev and current OKR |
/okr:analyse |
Cross-cycle analytics with Mermaid trend visualizations |
/okr:oppsett |
Configure plugin: onboarding interview (full/mvp), cycle archival, profile update. Args: full|mvp|arkiver|oppdater|vis |
/okr:export |
Export OKR deliverables (quality review, gap matrix, status report, retrospective) to print-ready PDF via weasyprint |
/okr:freshen-references |
KB self-evaluator: score the 16 domain reference files against an anchored rubric + currency-poll public sources |
/okr:help |
Full overview of all commands, agents, and recommended cycle workflow |
Agents
| Agent | Model | Color | Tools | Role |
|---|---|---|---|---|
| kvalitetssjekker | sonnet | blue | Read, Glob | Score OKR quality against rubric |
| kaskadebygger | sonnet | green | Read, Glob | Build OKR cascades between levels |
| fremdriftssporer | sonnet | yellow | Read, Glob, ToolSearch | Calculate scores and generate reports |
| møtefasilitator | sonnet | magenta | Read, Glob | Generate meeting agendas and materials |
| styringsrådgiver | opus | cyan | Read, Glob | Tildelingsbrev analysis, governance |
| gapanalytiker | sonnet | red | Read, Glob | Tildelingsbrev gap analysis and coverage matrix |
| trendanalytiker | sonnet | purple | Read, Glob | Cross-cycle trend analysis and Mermaid visualization |
Hooks
| Event | Type | Purpose |
|---|---|---|
| SessionStart | command | Proactive coaching based on cycle position and OKR status |
| UserPromptSubmit | command | Inject org profile (expanded YAML), current cycle, .claude/okr/ summary, and archived cycle count |
| PreCompact | prompt | Preserve OKR draft state during compaction |
Skills
| Component | Location |
|---|---|
| SKILL.md (okr-offentlig-sektor) | skills/okr-offentlig-sektor/SKILL.md |
| References (17) | skills/okr-offentlig-sektor/references/ |
| SKILL.md (okr-second-brain-search) | skills/okr-second-brain-search/SKILL.md |
The second skill (okr-second-brain-search) does on-demand retrieval over the user's OKF-compatible wiki (native Glob/Read/Grep, no MCP) — see OKF Knowledge Layout below.
State Management
User configuration: .claude/okr.local.md in the project directory (not in plugin root).
Org profile (reinstall-surviving): ~/.claude/okr/org/profil.md — machine-global org identity (organisasjon:/program:), written atomically (temp + renameSync) by scripts/write-org-profile.mjs during /okr:oppsett. Resolution is most-specific-wins: project-local .claude/okr.local.md overrides the home profile (the backwards-compatible fallback when no project config exists; read side hooks/scripts/inject-okr-context.mjs). Home-write failure → circuit-break to the gitignored project-local file. Only the org profile migrates to home; cycle/historikk data stays cwd-bound.
Template: templates/okr.local.md.template
Context tree: .claude/okr/ — strategisk-kontekst/, syklus/[id]/, historikk/, dokumenter/
Onboarding state: onboarding_status field in okr.local.md (partial | fullfort)
Cycle archival: /okr:oppsett arkiver — moves syklus/ to historikk/, generates retrospektiv.md
OKF Knowledge Layout
Context files carry OKF-compatible frontmatter (Knowledge Catalog "Documents/kb Layout", aka "Metadata as Code" — not a formal "OKF v0.1" standard): a Title-Case type (Organisasjonsprofil, Tildelingsbrev, Virksomhetsplan, Overordnede OKR, OKR, Retrospektiv, Status) plus recommended resource/title/description/tags/timestamp. Only type is de-facto required. The flat frontmatter parser reads only single-line keys (type, profile/config fields); tree files may carry multi-line tags lists without breaking it.
Two bundle roots with distinct lifecycles: project .claude/okr/ (cwd-bound cycle/work) and home ~/.claude/okr/org/ (reinstall-surviving org identity). Each root carries its own index.md (no frontmatter; # H1 + * [title](link) - description) and an okf_version marker. okf-index/okf-check run per root; retrieval Globs both (project preferred, else home).
lib/frontmatter.mjs— shared frontmatter parser/writer; both hooks route through it (strips trailing#…only from unquoted values).scripts/okf-index.mjs— regenerate a root's per-levelindex.md(verbatim OKF index format).scripts/okf-check.mjs— validate each concept file carriestype:(exit 1 + count otherwise); reportokf_versionper root.scripts/compose-org-profile.mjs— build the nested org-profile YAML with top-level OKF keys (type/resource/timestamp) before piping towrite-org-profile.mjs.
Retrieval is on-demand via the okr-second-brain-search skill. The UserPromptSubmit hook no longer pre-injects the full context-file enumeration — it emits the core profile plus one resolved pointer to index.md (< 512 B, independent of file count).
Language Policy
- Commands, agents, user-facing text: Norwegian
- Code, config, technical identifiers: English
- SKILL.md: English (for broader LLM comprehension)
Architecture
/okr:skriv ──→ kvalitetssjekker (auto)
/okr:kvalitet ──→ kvalitetssjekker
/okr:kaskade ──→ kaskadebygger
/okr:sporing ──→ fremdriftssporer ──→ Linear MCP (optional)
/okr:møter ──→ møtefasilitator
/okr:governance ──→ styringsrådgiver
/okr:innføring ──→ (inline, no agent)
/okr:gap ──→ gapanalytiker
/okr:analyse ──→ trendanalytiker
/okr:oppsett ──→ (inline wizard: full/mvp/arkiver/oppdater/vis)
/okr:oppsett arkiver ──→ cycle archival + retrospektiv-generering
/okr:export ──→ scripts/export-pdf.py (weasyprint, documented prerequisite)
/okr:freshen-references ──→ (inline KB-evaluator + currency-polling via WebSearch/Task)
/okr:help ──→ (inline command/agent/workflow overview)
SessionStart ──→ coaching-hook.mjs (proactive coaching)
UserPromptSubmit ──→ inject-okr-context.mjs (core profile + resolved index.md pointer)
okr-second-brain-search (skill) ──→ Glob/Read/Grep over .claude/okr/ + ~/.claude/okr/org/ (on-demand retrieval)