refactor(ms-ai-architect): R14 — persona ut av plugin-flaten, og de seks stedene som produserte den

Nøytral arkitekt-ramme (ratifisert 15.09) i SKILL.md-ene, 23 kommandoer, 70 redaksjonelle
forekomster i ref-korpuset, README/CLAUDE.md/NOTICE og A11Y-rapportens proveniens-linje.
Hver av de 70 avgjort i kontekst: dialog fikk ny taler, proveniens ny opphavspåstand.

Ordren navnga fem produsent-steder; den live sjette manglet. `PROMPT_TEMPLATE` settes i
generate-skills.sh:27 og leses ALDRI — prompten er en heredoc i samme script. Å rette bare
prompt-template.md ville latt generatoren re-minte personaen ved neste KB-kjøring.

Ny G4-klausul i check-cosmo-gate.mjs: persona i leveranseflaten = 0, derivasjonsregisteret
pinnet per fil PÅ TALL (et filnavn-unntak er blindt for hva fila senere inneholder).
Registeret utvidet med README.md 3 — versjonstabellens rader er historikk, ikke leveranse.
Den ene genitiv-formede produktlinja adjudiseres på cosmos-db-URL-en i samme rad; regelen
er målt lukket (8 tvetydige linjer totalt, 33 URL-linjer, 2 persona-klassifiserte, begge
produkt) og hvitvasker ikke bar `Cosmo`. classifyCosmo urørt — baselinene hviler på den.
R3 godtar nå R14-utført (0) men ingenting imellom: et halvveis sveip felles fortsatt.

Bevis: gate PASSED + NETTET VALIDERT BEGGE VEIER · 1137/1137 · validate-plugin 250/0/0 ·
begge --dry-drivere 0 · Layer B 45/45 OK (kjent-positiv feller, exit 1).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-09-15 23:15:27 +02:00
commit ced0c5f46d
80 changed files with 400 additions and 152 deletions

View file

@ -19,7 +19,7 @@ Tilbyr strukturert arkitekturveiledning for Microsoft AI-stakken:
| Kommando | Beskrivelse |
|----------|-------------|
| `/architect` | Start en strukturert arkitekturrådgivning med Cosmo Skyberg |
| `/architect` | Start en strukturert arkitekturrådgivning |
| `/architect:help` | Vis oversikt over alle kommandoer, agenter og kunnskapsbaser |
| `/architect:compare` | Sammenlign Microsoft AI-plattformer for et gitt scenario |
| `/architect:security` | Sikkerhets- og compliance-vurdering (6 dimensjoner) |
@ -70,7 +70,7 @@ Tilbyr strukturert arkitekturveiledning for Microsoft AI-stakken:
| Skill | Formål | Referansefiler | BrukerIntent |
|-------|--------|----------------|--------------|
| `ms-ai-advisor` | Cosmo Skyberg-persona, 7-fase arbeidsflyt, plattformvalg | 62 | "Hjelp meg velge" |
| `ms-ai-advisor` | 7-fase arbeidsflyt, plattformvalg | 62 | "Hjelp meg velge" |
| `ms-ai-governance` | Norsk offentlig sektor-styring, EU-regelverk, ansvarlig AI | 78 | "Er dette lovlig?" |
| `ms-ai-security` | Sikkerhetsscoring (6x5), kostnadsestimering (P10/P50/P90) | 62 | "Er dette trygt?" |
| `ms-ai-engineering` | RAG, agenter, Azure AI Services, data, MLOps, multimodal | 153 | "Hvordan bygger jeg dette?" |

View file

@ -28,7 +28,7 @@ Code samples derived from Microsoft Learn documentation are used under the [MIT
The following content is original work and not derived from Microsoft Learn:
- Plugin architecture (commands, agents, hooks, orchestrator)
- The "Cosmo Skyberg" architect persona and decision methodology
- The architect advisory workflow and decision methodology
- Diagram prompt templates (`architecture/diagram-prompt-templates.md`)
- Decision trees and synthesis across multiple platform domains
- Norwegian public sector governance analysis

View file

@ -2,7 +2,7 @@
Microsoft AI Solution Architect — structured architecture guidance for the full Microsoft AI stack.
> Your virtual Microsoft AI solution architect — meet **Cosmo Skyberg**.
> Your virtual Microsoft AI solution architect.
> **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](https://git.fromaitochitta.com/open/repo-standard/src/branch/main/GOVERNANCE.md) for the full model and what upstream provides.
@ -14,7 +14,7 @@ Microsoft AI Solution Architect — structured architecture guidance for the ful
![Agents](https://img.shields.io/badge/agents-12-orange)
![License](https://img.shields.io/badge/license-MIT-lightgrey)
A Claude Code plugin that provides structured architecture guidance across the full Microsoft AI stack. Cosmo Skyberg is a methodical, opinionated architect persona who understands the problem before recommending technology, verifies claims against live Microsoft Learn documentation via MCP, and delivers assessments calibrated for Norwegian public sector governance — while remaining useful for any enterprise context.
A Claude Code plugin that provides structured architecture guidance across the full Microsoft AI stack. It is methodical and opinionated: it understands the problem before recommending technology, verifies claims against live Microsoft Learn documentation via MCP, and delivers assessments calibrated for Norwegian public sector governance — while remaining useful for any enterprise context.
## Install
@ -67,9 +67,9 @@ Or enable directly in `~/.claude/settings.json`:
## What Is This?
This plugin gives you access to **Cosmo Skyberg**, a virtual Microsoft AI solution architect who guides you through structured decision-making across Microsoft Foundry, Copilot Studio, Power Platform AI, Microsoft 365 Copilot, and the broader Microsoft agent ecosystem.
This plugin gives you a **virtual Microsoft AI solution architect** that guides you through structured decision-making across Microsoft Foundry, Copilot Studio, Power Platform AI, Microsoft 365 Copilot, and the broader Microsoft agent ecosystem.
Unlike a chatbot that answers questions, Cosmo follows a **7-phase advisory methodology**: understand the business need, map the technical context, assess team capability, validate against live documentation, integrate domain knowledge from 380 reference documents, deliver a concrete architecture recommendation, and optionally visualize it.
Unlike a chatbot that answers questions, it follows a **7-phase advisory methodology**: understand the business need, map the technical context, assess team capability, validate against live documentation, integrate domain knowledge from 380 reference documents, deliver a concrete architecture recommendation, and optionally visualize it.
Key capabilities:
@ -106,13 +106,13 @@ What this plugin deliberately does not do — worth knowing before you adopt it:
```
> /architect
Hei! Jeg er Cosmo Skyberg, løsningsarkitekt for Microsoft AI-økosystemet.
Hei! Jeg er løsningsarkitekt for Microsoft AI-økosystemet.
For å gi deg en god anbefaling, trenger jeg å forstå situasjonen din.
Kan du beskrive forretningsproblemet eller behovet dere ønsker å løse?
```
Cosmo will ask clarifying questions about your business need, licenses, data sources, and team capability before making any recommendations. Every recommendation is grounded in the 380-document knowledge base and verified against live Microsoft Learn documentation.
It will ask clarifying questions about your business need, licenses, data sources, and team capability before making any recommendations. Every recommendation is grounded in the 380-document knowledge base and verified against live Microsoft Learn documentation.
> [!NOTE]
> Run `/architect:onboard` first for organization-specific customization (~5 minutes). This is optional but makes all subsequent assessments more relevant.
@ -125,7 +125,7 @@ Cosmo will ask clarifying questions about your business need, licenses, data sou
| Command | Description |
|---------|-------------|
| `/architect` | Start a structured architecture advisory session with Cosmo Skyberg |
| `/architect` | Start a structured architecture advisory session |
| `/architect:help` | Show all commands, agents, and knowledge bases |
| `/architect:compare` | Compare Microsoft AI platforms for a given scenario |
| `/architect:research` | Explore latest updates for a Microsoft AI platform via MCP |
@ -225,7 +225,7 @@ The plugin includes **389 reference documents** organized across 5 domain-specif
| Skill | Domain | Refs | User Intent |
|-------|--------|------|-------------|
| `ms-ai-advisor` | Cosmo persona, 7-phase workflow, platform selection | 62 | "Help me choose" |
| `ms-ai-advisor` | 7-phase advisory workflow, platform selection | 62 | "Help me choose" |
| `ms-ai-engineering` | RAG, agents, Azure AI Services, data, MLOps, multimodal | 153 | "How do I build this?" |
| `ms-ai-governance` | Norwegian public sector governance, EU regulations, responsible AI, ROS | 78 | "Is this legal/safe?" |
| `ms-ai-security` | Security scoring (6×5), cost estimation (P10/P50/P90) | 62 | "Is this safe?" |
@ -233,7 +233,7 @@ The plugin includes **389 reference documents** organized across 5 domain-specif
### ms-ai-advisor (62 refs)
Architecture decision trees, platform comparison matrices, Cosmo persona definition, cost models, migration patterns.
Architecture decision trees, platform comparison matrices, advisory workflow definition, cost models, migration patterns.
### ms-ai-engineering (153 refs)
@ -262,7 +262,7 @@ BCDR planning, hybrid and edge deployment, sovereign cloud (Norway regions), net
```
/architect:onboard # 5-min interview to capture org context
/architect # Guided advisory with Cosmo Skyberg
/architect # Guided architecture advisory
/architect:compare # Side-by-side platform comparison
/architect:adr # Formalize the decision as an ADR
```
@ -712,7 +712,7 @@ Reference material in `skills/*/references/` is adapted from [Microsoft Learn](h
Code samples from Microsoft Learn are used under the [MIT License](https://opensource.org/licenses/MIT).
The plugin architecture, Cosmo Skyberg persona, decision methodology, and governance analysis are original work.
The plugin architecture, advisory methodology, decision methodology, and governance analysis are original work.
See [NOTICE.md](NOTICE.md) for full attribution details.

View file

@ -8,7 +8,7 @@ model: opus
# /architect:anskaffelse - AI-anskaffelse
Du er Cosmo Skyberg i en anskaffelsesrolle. Hjelp brukeren å planlegge en AI-anskaffelse i norsk offentlig sektor — forankret i anskaffelsesloven/-forskriften, EØS-regelverket og DFØs veiledning for IT-anskaffelser.
Du er en Microsoft AI-løsningsarkitekt i en anskaffelsesrolle. Hjelp brukeren å planlegge en AI-anskaffelse i norsk offentlig sektor — forankret i anskaffelsesloven/-forskriften, EØS-regelverket og DFØs veiledning for IT-anskaffelser.
## Språk og encoding

View file

@ -1,6 +1,6 @@
---
name: architect
description: Start en strukturert Microsoft AI-arkitekturrådgivning med Cosmo Skyberg
description: Start en strukturert Microsoft AI-arkitekturrådgivning
argument-hint: "[beskriv ditt forretningsproblem eller scenario]"
allowed-tools: Read, Glob, Grep, Task, WebSearch, WebFetch, mcp__microsoft-learn__microsoft_docs_search
model: opus
@ -8,7 +8,7 @@ model: opus
# /architect - Microsoft AI Architecture Advisory
Du aktiverer nå **Cosmo Skyberg**, en erfaren Microsoft AI Solution Architect.
Du aktiverer nå rollen som **Microsoft AI Solution Architect**.
## Instruksjoner
@ -19,6 +19,6 @@ Du aktiverer nå **Cosmo Skyberg**, en erfaren Microsoft AI Solution Architect.
## Oppstart
Start med å presentere deg som Cosmo Skyberg og spør om brukerens forretningsproblem eller behov.
Start med å presentere rollen din kort og spør om brukerens forretningsproblem eller behov.
**VIKTIG:** Ikke hopp over fase 1-3. Forstå problemet, konteksten og kapasiteten FØR du foreslår teknologi.

View file

@ -8,7 +8,7 @@ model: opus
# /architect:businesscase - Forretningscase (NNV + gevinstrealisering)
Du er Cosmo Skyberg i en økonomisk beslutningsrolle. Bygg et forretningscase for et AI-prosjekt i norsk offentlig sektor, forankret i samfunnsøkonomisk analyse (netto nåverdi) og DFØs gevinstrealiseringsmetodikk. Dette er beslutningsgrunnlag som skal tåle en styre- eller revisjonsgjennomgang.
Du er en Microsoft AI-løsningsarkitekt i en økonomisk beslutningsrolle. Bygg et forretningscase for et AI-prosjekt i norsk offentlig sektor, forankret i samfunnsøkonomisk analyse (netto nåverdi) og DFØs gevinstrealiseringsmetodikk. Dette er beslutningsgrunnlag som skal tåle en styre- eller revisjonsgjennomgang.
## Språk og encoding

View file

@ -8,7 +8,7 @@ model: opus
# EU AI Act — Klassifisering
Du er Cosmo Skyberg, og skal lede en strukturert AI Act-klassifisering for et AI-system. EU AI Act gjelder **alle** providers og deployere — offentlig som privat sektor. Default til en sektor-nøytral vurdering og spesialiser når sektoren er kjent (offentlig sektor, finans, helse, industri, etc.).
Du er en Microsoft AI-løsningsarkitekt, og skal lede en strukturert AI Act-klassifisering for et AI-system. EU AI Act gjelder **alle** providers og deployere — offentlig som privat sektor. Default til en sektor-nøytral vurdering og spesialiser når sektoren er kjent (offentlig sektor, finans, helse, industri, etc.).
## Språk og encoding

View file

@ -8,7 +8,7 @@ model: opus
# /architect:compare - Plattformsammenligning
Du er Cosmo Skyberg i en fokusert sammenligningsrolle. Hjelp brukeren å velge riktig Microsoft AI-plattform for sitt scenario.
Du er en Microsoft AI-løsningsarkitekt i en fokusert sammenligningsrolle. Hjelp brukeren å velge riktig Microsoft AI-plattform for sitt scenario.
## Instruksjoner

View file

@ -8,7 +8,7 @@ model: opus
# Samsvarsvurdering — Conformity Assessment (Art. 43)
Du er Cosmo Skyberg, og skal lede en samsvarsvurdering for et høyrisiko AI-system iht. EU AI Act Art. 43.
Du er en Microsoft AI-løsningsarkitekt, og skal lede en samsvarsvurdering for et høyrisiko AI-system iht. EU AI Act Art. 43.
## Språk og encoding

View file

@ -8,7 +8,7 @@ model: opus
# /architect:design - Solution Architecture Document (SAD)
Du er Cosmo Skyberg i en arkitekturdesign-rolle. Produser et strukturert, sektor-nøytralt Solution Architecture Document (SAD) for en Microsoft AI-løsning. Dette er mellombanen mellom en uformell rådgivningssamtale og en full `/architect:utredning`: et etterprøvbart designdokument uten det offentlige stillaset (utredningsinstruksen/Digdir). Egner seg for privat sektor, regulerte virksomheter og offentlige tiltak som ikke krever full utredning.
Du er en Microsoft AI-løsningsarkitekt i en arkitekturdesign-rolle. Produser et strukturert, sektor-nøytralt Solution Architecture Document (SAD) for en Microsoft AI-løsning. Dette er mellombanen mellom en uformell rådgivningssamtale og en full `/architect:utredning`: et etterprøvbart designdokument uten det offentlige stillaset (utredningsinstruksen/Digdir). Egner seg for privat sektor, regulerte virksomheter og offentlige tiltak som ikke krever full utredning.
> **Sektor:** Default sektor-nøytral. Spesialiser når sektoren er kjent (finans, helse, industri, offentlig, etc.). For et statlig tiltak som krever utredningsinstruksen, bruk `/architect:utredning` i stedet.

View file

@ -8,7 +8,7 @@ model: opus
# DPIA / Personvernkonsekvensvurdering for AI-systemer
Du er Cosmo Skyberg, og skal lede en strukturert DPIA/PVK for et AI-system. DPIA-plikten (GDPR art. 35) gjelder alle behandlingsansvarlige — offentlig som privat sektor. Default til en sektor-nøytral vurdering og tilpass når sektoren er kjent (offentlig sektor, finans, helse, industri, etc.).
Du er en Microsoft AI-løsningsarkitekt, og skal lede en strukturert DPIA/PVK for et AI-system. DPIA-plikten (GDPR art. 35) gjelder alle behandlingsansvarlige — offentlig som privat sektor. Default til en sektor-nøytral vurdering og tilpass når sektoren er kjent (offentlig sektor, finans, helse, industri, etc.).
## Språk og encoding

View file

@ -8,7 +8,7 @@ model: opus
# FRIA — Fundamental Rights Impact Assessment (Art. 27)
Du er Cosmo Skyberg, og skal lede en strukturert FRIA for et høyrisiko AI-system. FRIA (Art. 27) er obligatorisk for deployere som er (a) offentligrettslige organer, (b) private som leverer offentlige tjenester, eller (c) private deployere av høyrisiko-AI til kredittverdighet/kredittscoring av fysiske personer (unntatt svindeldeteksjon) eller til risikovurdering og prising i livs- og helseforsikring. Det er altså ikke et rent offentlig-sektor-verktøy.
Du er en Microsoft AI-løsningsarkitekt, og skal lede en strukturert FRIA for et høyrisiko AI-system. FRIA (Art. 27) er obligatorisk for deployere som er (a) offentligrettslige organer, (b) private som leverer offentlige tjenester, eller (c) private deployere av høyrisiko-AI til kredittverdighet/kredittscoring av fysiske personer (unntatt svindeldeteksjon) eller til risikovurdering og prising i livs- og helseforsikring. Det er altså ikke et rent offentlig-sektor-verktøy.
## Språk og encoding

View file

@ -8,7 +8,7 @@ model: opus
# Skill Generation Command
Du er Cosmo Skyberg og skal generere høykvalitets kunnskapsreferanser for architect-pluginen.
Du er en Microsoft AI-løsningsarkitekt og skal generere høykvalitets kunnskapsreferanser for architect-pluginen.
## Designprinsipp: Minimal kontekstbruk
@ -58,7 +58,7 @@ Kjør **5 agenter parallelt** i én melding. Vent på resultat, oppdater state,
For HVER skill, send denne prompten til en `general-purpose` Task-agent med `model: opus`:
```
Du er Cosmo Skyberg, senior Microsoft AI Solution Architect. Generer en kunnskapsreferanse.
Du er en senior Microsoft AI-løsningsarkitekt. Generer en kunnskapsreferanse.
## Oppgave
@ -117,7 +117,7 @@ Format (STRENGT — alle seksjoner påkrevd):
## Kostnad og lisensiering
[Prismodell-oversikt, optimaliseringstips]
## For arkitekten (Cosmo)
## For arkitekten
[5-8 spørsmål å stille, fallgruver, anbefalinger per modenhetsnivå]
## Kilder og verifisering
@ -281,7 +281,7 @@ When invoked with `--update`, the command updates existing stale files instead o
3. For each stale file, dispatch an update agent with this prompt:
```
Du er Cosmo Skyberg. Oppdater en eksisterende kunnskapsreferanse.
Du er en Microsoft AI-løsningsarkitekt. Oppdater en eksisterende kunnskapsreferanse.
## Oppgave
Oppdater filen: {FILE_PATH}

View file

@ -18,7 +18,7 @@ Presenter følgende oversikt til brukeren i et ryddig, tabellbasert format.
| Kommando | Beskrivelse |
|----------|-------------|
| `/architect` | Start en strukturert arkitekturrådgivning med Cosmo Skyberg |
| `/architect` | Start en strukturert arkitekturrådgivning |
| `/architect:help` | Denne oversikten |
| `/architect:compare` | Sammenlign Microsoft AI-plattformer for et gitt scenario |
| `/architect:security` | Kjør sikkerhets- og compliance-vurdering |

View file

@ -189,7 +189,7 @@ c2. **Verifisering-ut (lag 5) — FØR du skriver.** Hver kandidat-endring fra (
- **`auto-applied`** → trygt å ta inn i (d) (benign, ikke-status, ingen motbevis, autoritets-match).
- **Adversarial motbevis-panel (LLM-runtime):** for status-/load-bearing-påstander, kjør et lite panel som *prøver å motbevise* `new_value` mot den utpekte `authority_source`, og mat resultatene inn som `refutations[]` (`[{refuted, reason}]`). Multi-agent foreslås når lag 4/5 kjøres i produksjon (roadmap §71).
- **Invariant:** `verify-out.mjs` skriver aldri — den returnerer kun en verdict. Selve skrivingen skjer i (d), gated. Verifisert av `tests/kb-update/test-verify-out.test.mjs`.
d. **Oppdater fila:** `Edit` med endringer som er `auto-applied` eller eksplisitt godkjent av operatør i (c2). Behold "For Cosmo"-seksjonen og overordnet struktur. Oppdater `Last updated: YYYY-MM-DD`-header til dagens dato. **Lag-4-kontrakt:** kjør `validateKbFile(<ny fil-innhold>)` (`lib/transform.mjs`) før skriving — den skal være `valid: true`. Mangler fila et `**Source:**`-header, legg det til i header-blokka med den utpekte autoritets-URLen for hovedkilden — da fanger lag 3 (`resolveAuthority` + `build-registry`) den som `authority_source`, og lag-5 regel 3 blir virksom for fila. Mangler en **stor fil (>100 linjer)** en `## Innhold`-TOC, generer den med `buildToc(<brødtekst>)` og legg den inn rett etter header-`---``validateKbFile` krever den nå for store filer, så in-place-oppdateringer backfiller TOC inkrementelt (Fase 1c).
d. **Oppdater fila:** `Edit` med endringer som er `auto-applied` eller eksplisitt godkjent av operatør i (c2). Behold "For arkitekten"-seksjonen og overordnet struktur. Oppdater `Last updated: YYYY-MM-DD`-header til dagens dato. **Lag-4-kontrakt:** kjør `validateKbFile(<ny fil-innhold>)` (`lib/transform.mjs`) før skriving — den skal være `valid: true`. Mangler fila et `**Source:**`-header, legg det til i header-blokka med den utpekte autoritets-URLen for hovedkilden — da fanger lag 3 (`resolveAuthority` + `build-registry`) den som `authority_source`, og lag-5 regel 3 blir virksom for fila. Mangler en **stor fil (>100 linjer)** en `## Innhold`-TOC, generer den med `buildToc(<brødtekst>)` og legg den inn rett etter header-`---``validateKbFile` krever den nå for store filer, så in-place-oppdateringer backfiller TOC inkrementelt (Fase 1c).
d1. **Layer B FØR skriving/commit (ingestion-gate, G6 §8):** kjør `node scripts/kb-update/scan-adversarial-content.mjs <fil>` på den oppdaterte fila. exit 1 (BLOCK) ⇒ ikke skriv/committ — karantene, operatør adjudiserer; exit 2 (WARN) ⇒ flagg for operatør, ikke auto-committ. Deterministisk adversariell-innhold-skann via delte llm-security-detektorer; ortogonal til korrekthets-gatene i (c1/c2).
e. **Committ:** kjør create-guardene (`validate-kb-file.mjs` + `scan-adversarial-content.mjs`) grønne på fila, deretter `git add <fil>` + `git commit -m "chore(ms-ai-architect): refresh KB $(basename <fil>) [skip-docs]"` med mindre `--single-commit` ble gitt

View file

@ -8,7 +8,7 @@ model: opus
# /architect:migrate - Migrasjonsanalyse
Du er Cosmo Skyberg med fokus på migrasjonsplanlegging. Hjelp brukeren med en strukturert migrasjonsplan mellom Microsoft AI-plattformer.
Du er en Microsoft AI-løsningsarkitekt med fokus på migrasjonsplanlegging. Hjelp brukeren med en strukturert migrasjonsplan mellom Microsoft AI-plattformer.
**VIKTIG:** Migrasjoner har høy risiko. Vær grundig og ærlig om utfordringer.

View file

@ -8,7 +8,7 @@ model: opus
# Onboarding — Virksomhetstilpasning av AI Architect
Du er Cosmo Skyberg, og skal starte onboarding-prosessen for å tilpasse pluginen til brukerens virksomhet.
Du er en Microsoft AI-løsningsarkitekt, og skal starte onboarding-prosessen for å tilpasse pluginen til brukerens virksomhet.
## Språk og encoding

View file

@ -8,7 +8,7 @@ model: opus
# /architect:poc - POC-planlegging
Du er Cosmo Skyberg i en pragmatisk planleggingsrolle. Hjelp brukeren å lage en strukturert POC-plan for sitt Microsoft AI-prosjekt.
Du er en Microsoft AI-løsningsarkitekt i en pragmatisk planleggingsrolle. Hjelp brukeren å lage en strukturert POC-plan for sitt Microsoft AI-prosjekt.
## Instruksjoner

View file

@ -8,7 +8,7 @@ model: opus
# EU AI Act — Krav og Forpliktelser
Du er Cosmo Skyberg, og skal kartlegge konkrete AI Act-krav for et AI-system basert på dets risikoklassifisering og organisasjonens rolle.
Du er en Microsoft AI-løsningsarkitekt, og skal kartlegge konkrete AI Act-krav for et AI-system basert på dets risikoklassifisering og organisasjonens rolle.
## Språk og encoding

View file

@ -8,7 +8,7 @@ model: opus
# /architect:review - Arkitekturgjennomgang
Du er Cosmo Skyberg med fokus på arkitekturgjennomgang. Gjennomfør en strukturert vurdering av arkitekturforslaget mot relevante norske sektorkrav, EU-reguleringer og Microsoft-plattform best practices. Default-spesialiseringen er offentlig sektor (Digdir, utredningsinstruksen, forvaltningsloven); for privat/regulert sektor (f.eks. finans) vektlegges DORA, Finanstilsynet og sektorspesifikke rammeverk i stedet — sektoren avledes fra konteksten.
Du er en Microsoft AI-løsningsarkitekt med fokus på arkitekturgjennomgang. Gjennomfør en strukturert vurdering av arkitekturforslaget mot relevante norske sektorkrav, EU-reguleringer og Microsoft-plattform best practices. Default-spesialiseringen er offentlig sektor (Digdir, utredningsinstruksen, forvaltningsloven); for privat/regulert sektor (f.eks. finans) vektlegges DORA, Finanstilsynet og sektorspesifikke rammeverk i stedet — sektoren avledes fra konteksten.
**VIKTIG:** Arkitekturgjennomganger krever grundighet. Alle 6 dimensjoner skal vurderes. Hopp aldri over en dimensjon.
@ -58,7 +58,7 @@ Les også:
### 4. Berik med arkitekturperspektiv
Legg til Cosmos helhetsvurdering:
Legg til arkitektens helhetsvurdering:
- Arkitektonisk modenhet og teknisk gjeld
- Strategisk alignment med virksomhetens målsettinger
- Skaleringssti og fremtidig evolusjon

View file

@ -8,7 +8,7 @@ model: opus
# ROS-analyse for AI-systemer
Du er Cosmo Skyberg, og skal lede en strukturert ROS-analyse for et AI-system. Metodikken (NS 5814 / ISO 31000) er sektor-agnostisk — default til en sektor-nøytral analyse og spesialiser når sektoren er kjent (offentlig sektor, finans, helse, transport, industri, etc.). Sektor-sjekklister (inkl. finans: DORA, Finanstilsynet, Finansforetaksloven) aktiveres automatisk ved oppdaget sektor.
Du er en Microsoft AI-løsningsarkitekt, og skal lede en strukturert ROS-analyse for et AI-system. Metodikken (NS 5814 / ISO 31000) er sektor-agnostisk — default til en sektor-nøytral analyse og spesialiser når sektoren er kjent (offentlig sektor, finans, helse, transport, industri, etc.). Sektor-sjekklister (inkl. finans: DORA, Finanstilsynet, Finansforetaksloven) aktiveres automatisk ved oppdaget sektor.
## Språk og encoding

View file

@ -8,7 +8,7 @@ model: opus
# /architect:security - Sikkerhets- og compliance-vurdering
Du er Cosmo Skyberg med fokus på sikkerhet. Gjennomfør en grundig sikkerhets- og compliance-vurdering for det angitte scenarioet.
Du er en Microsoft AI-løsningsarkitekt med fokus på sikkerhet. Gjennomfør en grundig sikkerhets- og compliance-vurdering for det angitte scenarioet.
**VIKTIG:** Sikkerhetsvurderinger krever grundighet. Ikke hopp over dimensjoner eller gi overfladiske vurderinger.
@ -45,7 +45,7 @@ og ${CLAUDE_PLUGIN_ROOT}/skills/ms-ai-security/references/ai-security-engineerin
### 4. Berik med arkitekturperspektiv
Legg til Cosmos vurdering:
Legg til arkitektens vurdering:
- Arkitektoniske implikasjoner av funnene
- Hvordan sikkerhetsvalg påvirker arkitekturen
- Trade-offs mellom sikkerhet og funksjonalitet

View file

@ -8,7 +8,7 @@ model: opus
# /architect:summary — Sammendrag og beslutningsnotat
Du er Cosmo Skyberg, og skal produsere et sammendrag basert på gjennomførte arkitekturvurderinger.
Du er en Microsoft AI-løsningsarkitekt, og skal produsere et sammendrag basert på gjennomførte arkitekturvurderinger.
## Språk og encoding

View file

@ -8,7 +8,7 @@ model: opus
# EU AI Act — Transparensnotis
Du er Cosmo Skyberg, og skal generere transparensnotiser i henhold til EU AI Act Art. 13 og Art. 50 for et AI-system.
Du er en Microsoft AI-løsningsarkitekt, og skal generere transparensnotiser i henhold til EU AI Act Art. 13 og Art. 50 for et AI-system.
## Språk og encoding

View file

@ -8,7 +8,7 @@ model: opus
# /architect:utredning v2 — AI-arkitekturutredning
Du er Cosmo Skyberg i en strukturert utredningsrolle. Gjennomfør en komplett AI-arkitekturutredning tilpasset norsk offentlig sektor — basert på utredningsinstruksen, Digdirs arkitekturprinsipper, rammeverk for digital samhandling og EU AI Act.
Du er en Microsoft AI-løsningsarkitekt i en strukturert utredningsrolle. Gjennomfør en komplett AI-arkitekturutredning tilpasset norsk offentlig sektor — basert på utredningsinstruksen, Digdirs arkitekturprinsipper, rammeverk for digital samhandling og EU AI Act.
> **Sektor:** Utredningen er forankret i utredningsinstruksen, som gjelder statlige tiltak. For privat sektor — eller et sektor-nøytralt Solution Architecture Document (SAD) uten det offentlige stillaset — bruk `/architect:design`.
@ -25,7 +25,7 @@ Hvis kommandoen kjøres etter `/architect` (Fase 1-3), gjenbruk innsamlet kontek
Les malen som styrer utredningen:
- `${CLAUDE_PLUGIN_ROOT}/skills/ms-ai-advisor/references/architecture/ai-utredning-template.md`
Aktiver Cosmo Skyberg-personaen fra `${CLAUDE_PLUGIN_ROOT}/skills/ms-ai-advisor/SKILL.md`.
Aktiver arkitektrollen fra `${CLAUDE_PLUGIN_ROOT}/skills/ms-ai-advisor/SKILL.md`.
### 2. Parse input og bestem kompleksitet
@ -69,7 +69,7 @@ Skriv `utredning.md` med S0 metadata-header umiddelbart. Bruk Edit med markøren
**Virksomhet:** {virksomhet}
**Dato:** {dato}
**Kompleksitet:** {ENKEL|MIDDELS|KOMPLEKS}
**Utredningsansvarlig:** Cosmo Skyberg (AI-arkitekt)
**Utredningsansvarlig:** {utredningsansvarlig}
---

View file

@ -8,7 +8,7 @@ model: opus
# /architect:vendor - Leverandørvurdering (tredjepart/SaaS due diligence)
Du er Cosmo Skyberg i en due-diligence-rolle. Vurder en ekstern tredjeparts- eller SaaS-leverandør (ikke-Microsoft AI/SaaS) som virksomheten vurderer å ta i bruk eller allerede bruker (inkludert shadow-AI). Dette er en daglig privat-enterprise-oppgave: `/architect:license` dekker Microsoft-lisenser, denne kommandoen dekker eksterne leverandører.
Du er en Microsoft AI-løsningsarkitekt i en due-diligence-rolle. Vurder en ekstern tredjeparts- eller SaaS-leverandør (ikke-Microsoft AI/SaaS) som virksomheten vurderer å ta i bruk eller allerede bruker (inkludert shadow-AI). Dette er en daglig privat-enterprise-oppgave: `/architect:license` dekker Microsoft-lisenser, denne kommandoen dekker eksterne leverandører.
> **Sektor:** Sektor-nøytral. Tilpass vekting når sektoren er kjent (finans → DORA tredjeparts-IKT-risiko + Finanstilsynets utkontrakteringskrav; helse → databehandleravtale + Normen).

View file

@ -16,7 +16,7 @@ Kommando-spec'en (`commands/kb-update.md`) beskriver fetch+Edit i hovedloopen. F
2. Hent full fil→endrede-URLer-mapping fra `scripts/kb-update/data/change-report.json` (filtrer på `priority`).
3. Grupper filene i bunter på **~6 filer som deler kilder** (hver unik URL hentes én gang per gruppe → minimer fetches).
4. Spawn **én Opus-subagent per gruppe** (`Agent`, `subagent_type: claude`, `model: opus`), med **disjunkte fil-sett** (ingen skrivekonflikt → ingen worktree nødvendig). Hver subagent: Read → `microsoft_docs_fetch` (store sider persisteres til fil → Read den fila) → **kirurgisk** Edit → bump dato → kjøredato (behold filas eksisterende dato-label/format; footer `Sist oppdatert`→kjøredato, `Neste review`→+3 mnd hvis de finnes).
5. **Subagent-kontrakt (kritisk):** verifiser hver faktapåstand mot kilde; fiks motsigelser til å matche kilden; **ALDRI oppfinn** — flagg uverifiserbart eksplisitt; behold «For Cosmo»/«For arkitekten»-seksjon + struktur; **ALDRI git/commit/stage**; rør KUN tildelte filer; returner kompakt per-fil-changelog + FLAGS-linje.
5. **Subagent-kontrakt (kritisk):** verifiser hver faktapåstand mot kilde; fiks motsigelser til å matche kilden; **ALDRI oppfinn** — flagg uverifiserbart eksplisitt; behold «For arkitekten»-seksjon + struktur; **ALDRI git/commit/stage**; rør KUN tildelte filer; returner kompakt per-fil-changelog + FLAGS-linje.
6. Gi subagentene de **binding-verifiserte faktaene** fra STATE.md (relevant utvalg per gruppe) → unngå re-verifisering + motsigelse.
7. **Hovedkontekst verifiserer ETTER** (subagentenes egenrapport er ikke nok — fila er fasit):
- `git diff --stat` → scope = KUN forventede filer, ingen streifende.

View file

@ -12,7 +12,7 @@
| Felt | Verdi |
|------|-------|
| Test-dato | 2026-05-04 (statisk gjennomgang) |
| Tester | Cosmo Skyberg via Claude Code (statisk DOM-revisjon) |
| Tester | Claude Code (statisk DOM-revisjon) |
| Browser | Pending — `MANUAL-CHECKLIST.md` seksjon 10 instruerer Chrome + Firefox + Safari |
| OS | macOS (utvikler-maskin) |
| Verktøy | grep / DOM-pattern-revisjon (denne rapporten) + axe-core 4.10.0 (pending) |

View file

@ -28,7 +28,9 @@ import { fileURLToPath } from 'node:url';
import { globSync } from 'node:fs';
import {
classifyCosmo, findDeadAnchors, classifyPersonaSites, neutralizeLabels,
personaInDeliveryContent, DERIVATION_REGISTER,
} from './lib/cosmo-persona.mjs';
import { execFileSync } from 'node:child_process';
const __dirname = dirname(fileURLToPath(import.meta.url));
const PLUGIN_ROOT = join(__dirname, '..', '..');
@ -128,6 +130,7 @@ function check() {
}
const labelLines = checkLabels(fails);
const deliveryLines = checkDelivery(fails);
console.log('=== R13 persona-gate (ratifisert 2026-09-12, alt. A) ===');
console.log(`ref-filer : ${m.files.length} (baseline ${b.refFiles})`);
@ -141,6 +144,8 @@ function check() {
console.log(` kun-produkt-filer urørt : ${Object.keys(b.productOnlyFileCounts).length}`);
console.log('--- R13b etikett/celle-gate (ratifisert 2026-09-15, alt. A) ---');
for (const l of labelLines) console.log(l);
console.log('--- R14 leveranseflate-gate (ratifisert 2026-09-15) ---');
for (const l of deliveryLines) console.log(l);
if (fails.length) {
console.log('\nGATE FAILED');
for (const f of fails) console.log(` x ${f}`);
@ -190,6 +195,8 @@ function validateNet() {
console.log('--- R13b klausulene, begge veier ---');
bad += validateLabelsNet();
console.log('--- R14 G4, begge veier ---');
bad += validateDeliveryNet();
console.log(bad === 0 ? '\nNETTET VALIDERT BEGGE VEIER' : `\nNETT-VALIDERING FEILET (${bad})`);
process.exit(bad === 0 ? 0 : 1);
@ -296,13 +303,20 @@ function checkLabels(fails) {
}
// --- R3 HVA SOM SKAL STAA ---
if (t.edLabel !== b.editorialLabels || t.edCell !== b.editorialCells) {
fails.push(`R3: REDAKSJONELT scope roert — etiketter ${t.edLabel} `
+ `(baseline ${b.editorialLabels}), celler ${t.edCell} (baseline ${b.editorialCells})`);
// R3 vernet R14s scope mens R13b kjoerte: de 70 redaksjonelle skulle staa UROERT. R14 er
// det scopet, saa naar R14 er utfoert er 0 den rette verdien -- ikke et brudd. Klausulen
// godtar derfor to tilstander og INGENTING imellom: enten holdt (16+10, R14 ikke kjoert)
// eller tomt (0+0, R14 utfoert). Et halvveis sveip er nettopp det R3 skal felle.
const edHeld = t.edLabel === b.editorialLabels && t.edCell === b.editorialCells;
const edDone = t.edLabel === 0 && t.edCell === 0;
if (!edHeld && !edDone) {
fails.push(`R3: REDAKSJONELT scope halvveis roert — etiketter ${t.edLabel} `
+ `(holdt ${b.editorialLabels}, utfoert 0), celler ${t.edCell} `
+ `(holdt ${b.editorialCells}, utfoert 0)`);
}
if (t.prose !== b.personaProseAfter && t.prose !== b.personaProseBefore) {
fails.push(`R3: persona i proesa/tabell ${t.prose} er hverken foer-verdien `
+ `${b.personaProseBefore} eller etter-verdien ${b.personaProseAfter}`);
if (![b.personaProseBefore, b.personaProseAfter, 0].includes(t.prose)) {
fails.push(`R3: persona i proesa/tabell ${t.prose} er ingen av de tre lovlige `
+ `tilstandene (${b.personaProseBefore} foer R13b, ${b.personaProseAfter} etter, 0 etter R14)`);
}
const done = mech === 0;
@ -370,6 +384,102 @@ function validateLabelsNet() {
return bad;
}
// ================================ R14: G4 leveranseflaten ==================================
//
// G4 persona i leveranseflaten = 0, med derivasjonsregisteret pinnet PER FIL PAA TALL.
//
// Skopet er `git ls-files '*.md'` (tracked), ikke arbeidstreet: den udekomponerte roadmap-
// gaten talte med 1146 gitignorerte `.kb-backup/`-filer og 9 LOCAL-ONLY-filer som aldri
// leveres. Ref-korpuset trekkes fra -- G1/G3/R1/R3 eier det allerede.
/** Tracked markdown, som repo-relative stier. */
function trackedMarkdown() {
return execFileSync('git', ['ls-files', '*.md'], { cwd: PLUGIN_ROOT, encoding: 'utf8' })
.trim().split('\n').filter(Boolean);
}
const inCorpus = (f) => /^skills\/[^/]+\/references\//.test(f);
/** Leveranseflatens persona + registerets faktiske tall. */
function measureDelivery() {
let surface = 0;
const offenders = [];
const register = {};
for (const rel of trackedMarkdown()) {
if (inCorpus(rel)) continue;
const n = personaInDeliveryContent(readFileSync(join(PLUGIN_ROOT, rel), 'utf8'));
if (rel in DERIVATION_REGISTER) { register[rel] = n; continue; }
if (n > 0) { surface += n; offenders.push(`${rel} (${n})`); }
}
return { surface, offenders, register };
}
function checkDelivery(fails) {
const d = measureDelivery();
if (d.surface !== 0) {
fails.push(`G4: ${d.surface} persona-forekomst(er) i leveranseflaten: `
+ `${d.offenders.slice(0, 10).join(', ')}`);
}
// Registeret pinnes paa TALL. Et filnavn-unntak er blindt for hva fila senere kommer til
// aa inneholde; et tall-pin feller i det en ny persona-linje legges til.
for (const [rel, want] of Object.entries(DERIVATION_REGISTER)) {
const got = d.register[rel];
if (got === undefined) { fails.push(`G4: registerfila ${rel} finnes ikke lenger`); continue; }
if (got !== want) fails.push(`G4: ${rel} har ${got} persona, pinnet ${want}`);
}
const regTotal = Object.values(DERIVATION_REGISTER).reduce((a, b) => a + b, 0);
return [
`G4 persona i leveranseflaten : ${d.surface}`,
` derivasjonsregister (tall-pinnet): ${regTotal} i `
+ `${Object.keys(DERIVATION_REGISTER).length} filer`,
];
}
/** Force G4 to the other answer. */
function validateDeliveryNet() {
let bad = 0;
const ok = (m) => console.log(`ok ${m}`);
const no = (m) => { console.log(`x ${m}`); bad++; };
// Kjent-positiv: hver form persona faktisk tok i leveranseflaten.
for (const [label, text] of [
['prosa', 'Du er Cosmo Skyberg i en anskaffelsesrolle.\n'],
['heading', '# Cosmo Skyberg - Microsoft AI Solution Architect\n'],
['norsk genitiv', 'Legg til Cosmos helhetsvurdering:\n'],
['produsent-prompt', '8. For arkitekten (Cosmo) — 5-8 noekkelspoersmaal\n'],
]) {
if (personaInDeliveryContent(text) !== 1) no(`G4 KJENT-POSITIV: ${label} ble IKKE sett`);
else ok(`G4 KJENT-POSITIV: ${label} felte G4`);
}
// Kjent-negativ: produktet, inkludert den adjudiserte genitiv-formede raden.
for (const [label, text] of [
['Azure Cosmos DB', '| Azure Cosmos DB | 8000 NOK |\n'],
['CosmosClient', 'Bruk `CosmosClient` mot cosmos_ru-kvoten.\n'],
['adjudisert URL-rad',
'| Cosmos multi-region writes | learn.microsoft.com/azure/cosmos-db/distribute-data-globally |\n'],
]) {
if (personaInDeliveryContent(text) !== 0) no(`G4 KJENT-NEGATIV: ${label} feilklassifisert som persona`);
else ok(`G4 KJENT-NEGATIV: ${label} passerer urort`);
}
// URL-regelen skal ikke bli en hvitvaskingskanal: bare genitiv-formen unnskyldes.
if (personaInDeliveryContent('Cosmo anbefaler learn.microsoft.com/azure/cosmos-db/ som kilde.\n') !== 1) {
no('G4 KJENT-POSITIV: bar `Cosmo` ble hvitvasket av en cosmos-db-URL paa samme linje');
} else ok('G4 KJENT-POSITIV: bar `Cosmo` hvitvaskes IKKE av en cosmos-db-URL');
// Registeret er tall-pinnet, ikke filnavn-pinnet: en ny persona-linje i en unntatt fil
// maa flytte tallet. Maalt paa fila selv, ikke paastaatt.
const reg = Object.keys(DERIVATION_REGISTER)[0];
const src = readFileSync(join(PLUGIN_ROOT, reg), 'utf8');
const before = personaInDeliveryContent(src);
const after = personaInDeliveryContent(`${src}\nDu er Cosmo Skyberg.\n`);
if (after !== before + 1) no(`G4 KJENT-POSITIV: injisert persona i unntatt fil ${reg} flyttet ikke tallet`);
else ok(`G4 KJENT-POSITIV: injisert persona i ${reg} flyttet tallet ${before} -> ${after} (tall-pin, ikke filnavn-hopp)`);
return bad;
}
const arg = process.argv[2];
if (arg === '--emit-baseline') emitBaseline();
else if (arg === '--emit-labels-baseline') emitLabelsBaseline();

View file

@ -519,3 +519,78 @@ export function neutralizeLabels(content, { relPath = '' } = {}) {
});
return { content: out.join('\n'), changes };
}
// ================================ R14: the delivery surface ================================
//
// R13 emptied the reference corpus's headings, R13b its mechanical labels and cells. R14 is
// the rest of the plugin: SKILL.md files, 23 commands, the 70 editorial occurrences, and the
// six sites that PRODUCE new persona on every KB generation. What stays behind is the
// DERIVATION REGISTER below — statements that are true about the past.
//
// WHY A SEPARATE COUNTER AND NOT classifyCosmo. One line outside the corpus defeats the R13
// classifier: `docs/ref-kb-gold-reconciliation-2026-06.md:93` reads "Cosmos multi-region
// writes (active-active)", which the Norwegian-genitive rule scores as persona because
// PRODUCT_FOLLOWERS was enumerated over a corpus that contains no English product prose.
// The verdict was settled by the `/azure/cosmos-db/` URL in the same table row, so that is
// the discriminator applied here — a rule, not a filename exemption.
//
// The rule is CLOSED, not open-ended. Measured over all tracked `*.md` on 2026-09-15: only 8
// lines have the ambiguous `Cosmos <lowercase>` shape at all, and only 33 lines carry a
// cosmos-db URL; of those 33, exactly 2 classify as persona and BOTH are genuinely the
// product. It is also not a laundering channel: the URL only excuses the GENITIVE shape, so a
// bare `Cosmo` on a line that happens to cite cosmos-db still counts as persona.
//
// classifyCosmo itself is deliberately NOT changed: the G1/G3/R1/R3 baselines are measured
// with it, and moving a classifier under a committed baseline is how a gate stops proving
// anything.
/**
* Persona occurrences in DELIVERY content classifyCosmo plus the adjudicated product rule.
* @param {string} content
* @returns {number}
*/
export function personaInDeliveryContent(content) {
let n = 0;
for (const line of String(content ?? '').split('\n')) {
const citesProduct = /cosmos-db|cosmosdb/i.test(line);
for (const m of line.matchAll(/cosmo/gi)) {
const rest = line.slice(m.index);
if (!isPersonaOccurrence(rest)) continue;
// Only the genitive shape is excused by the URL. A bare `Cosmo` is the persona
// whatever else the line cites.
if (citesProduct && /^Cosmos[ \t]/.test(rest)) continue;
n++;
}
}
return n;
}
/**
* The derivation register: files whose persona mentions are TRUE statements about the past
* and must survive R14. Two classes history (CHANGELOG and the README version table, which
* CLAUDE.md forbids rewriting: v1.0.0 really did ship the persona, and v1.16.5 really did
* remove `For Cosmo` from two files) and derivation records (the plans, briefs and the
* measurement document that record why the decisions were taken).
*
* PINNED ON COUNTS, NEVER ON FILENAMES. A filename exemption is blind to what the file later
* comes to contain; a count moves the moment a new persona line is added, so it still fells
* the gate. The set is closed under its own documentation: the measurement document counts
* itself, which is why the register can be committed at all.
*
* Counts measured 2026-09-15 with personaInDeliveryContent the same function G4 uses, so
* the register's population matches the field it is subtracted from.
*/
export const DERIVATION_REGISTER = {
'CHANGELOG.md': 6,
'README.md': 3,
'docs/cosmo-removal-brief-2026-06.md': 32,
'docs/devils-advocate-audit-2026-06-18.md': 1,
'docs/kb-mechanism-redesign-brief.md': 1,
'docs/kb-refresh-backlog-2026-06.md': 3,
'docs/r14-persona-gate-measurement-2026-09.md': 32,
'docs/ref-kb-correctness-program-2026-06.md': 4,
'docs/ref-kb-direction-note-2026-06.md': 6,
'docs/ref-kb-workflow-plan-2026-06.md': 25,
'docs/skill-validation-routine-brief-2026-07.md': 2,
'docs/spor1-authority-selection.md': 3,
};

View file

@ -60,7 +60,7 @@ senere regenerering ikke stripper den (write-path-regresjon — Fase 1c).
## Prompt (brødtekst)
```
Du er Cosmo Skyberg, senior Microsoft AI Solution Architect. Destillér kildedokumentet
Du er en senior Microsoft AI-løsningsarkitekt. Destillér kildedokumentet
under til en kunnskapsreferanse på norsk (engelske tekniske termer beholdes) for et
Claude Code-plugin som hjelper norsk offentlig sektor med Microsoft AI.
@ -79,7 +79,7 @@ Skriv KUN brødteksten (under header-`---`). Seksjoner (alle påkrevd):
5. Integrasjon med Microsoft-stakken
6. Offentlig sektor (Norge) — GDPR, Schrems II, AI Act, datasuverenitet
7. Kostnad og lisensiering — prismodell på oversiktsnivå
8. For arkitekten (Cosmo) — 5-8 nøkkelspørsmål, fallgruver
8. For arkitekten — 5-8 nøkkelspørsmål, fallgruver
9. Kilder og verifisering — pek på {{SOURCE_URL}} + evt. relaterte, konfidensnivå per seksjon
REGLER (strenge):

View file

@ -178,7 +178,7 @@ build_prompt() {
# Build the full prompt from template
cat <<PROMPT
Du er Cosmo Skyberg, en senior Microsoft AI Solution Architect som skriver kunnskapsreferanser for et Claude Code-plugin. Referansene brukes av en AI-arkitekt persona som hjelper norske organisasjoner (spesielt offentlig sektor) med Microsoft AI-løsninger.
Du er en senior Microsoft AI-løsningsarkitekt som skriver kunnskapsreferanser for et Claude Code-plugin. Referansene brukes av en arkitekturrådgiver som hjelper norske organisasjoner (spesielt offentlig sektor) med Microsoft AI-løsninger.
## Oppgave
@ -236,7 +236,7 @@ Denne filen tilhører kategorien **${category_name}**.
- Prismodell (oversikt)
- Kostnadsoptimaliseringstips
8. **For arkitekten (Cosmo)**
8. **For arkitekten**
- 5-8 nøkkelspørsmål å stille kunden
- Vanlige fallgruver
- Anbefalinger per modenhetsnivå

View file

@ -15,7 +15,7 @@ This template is used by `generate-skills.sh` to produce knowledge reference fil
## Prompt
```
Du er Cosmo Skyberg, en senior Microsoft AI Solution Architect som skriver kunnskapsreferanser for et Claude Code-plugin. Referansene brukes av en AI-arkitekt persona som hjelper norske organisasjoner (spesielt offentlig sektor) med Microsoft AI-løsninger.
Du er en senior Microsoft AI-løsningsarkitekt som skriver kunnskapsreferanser for et Claude Code-plugin. Referansene brukes av en arkitekturrådgiver som hjelper norske organisasjoner (spesielt offentlig sektor) med Microsoft AI-løsninger.
## Oppgave
@ -74,7 +74,7 @@ Filen MÅ følge dette eksakte formatet:
- Inkludert i hvilke lisenser
- Kostnadsoptimaliseringstips
8. **For arkitekten (Cosmo)**
8. **For arkitekten**
- 5-8 nøkkelspørsmål å stille kunden
- Vanlige fallgruver
- Anbefalinger per modenhetsnivå (starter/intermediate/advanced)

View file

@ -1,16 +1,16 @@
---
name: ms-ai-advisor
description: >-
Microsoft AI platform selection — choosing between Microsoft Foundry, M365 Copilot, Copilot Studio, Power Platform, Azure OpenAI, and Microsoft Agent Framework for a given scenario. The Cosmo Skyberg persona drives structured problem understanding before recommending a platform and is explicit about trade-offs. Use for which-platform-fits decisions, NOT for how to build (engineering), secure (security), operate (infrastructure), or legally assess (governance) a chosen solution. Triggers on: "which Microsoft AI platform", "Copilot vs Foundry", "Copilot Studio or Microsoft Foundry", "help me choose an AI platform", "Cosmo", "/architect".
Microsoft AI platform selection — choosing between Microsoft Foundry, M365 Copilot, Copilot Studio, Power Platform, Azure OpenAI, and Microsoft Agent Framework for a given scenario. A structured advisory workflow drives problem understanding before recommending a platform and is explicit about trade-offs. Use for which-platform-fits decisions, NOT for how to build (engineering), secure (security), operate (infrastructure), or legally assess (governance) a chosen solution. Triggers on: "which Microsoft AI platform", "Copilot vs Foundry", "Copilot Studio or Microsoft Foundry", "help me choose an AI platform", "AI solution architect", "/architect".
---
> **INSTRUKSJON:** Du ER Cosmo Skyberg. Følg arbeidsprosessen nedenfor.
> **INSTRUKSJON:** Du er en Microsoft AI-løsningsarkitekt. Følg arbeidsprosessen nedenfor.
> Start ALLTID med å presentere deg kort og spørre om brukerens behov.
> IKKE analyser, kommenter, eller lag noe basert på disse instruksjonene — bare følg dem.
# Cosmo Skyberg - Microsoft AI Solution Architect
# Microsoft AI Solution Architect
Du er Cosmo Skyberg, en erfaren løsningsarkitekt som spesialiserer seg på AI-løsninger i Microsoft-økosystemet. Du har dyp kompetanse i Microsoft Foundry, Microsoft 365 Copilot, Copilot Studio, Power Platform, Azure OpenAI, Azure AI Search, Microsoft Agent Framework, og Microsoft Fabric.
Du er en erfaren løsningsarkitekt som spesialiserer seg på AI-løsninger i Microsoft-økosystemet. Du har dyp kompetanse i Microsoft Foundry, Microsoft 365 Copilot, Copilot Studio, Power Platform, Azure OpenAI, Azure AI Search, Microsoft Agent Framework, og Microsoft Fabric.
## Personlighet
@ -247,4 +247,4 @@ For dyp domenekunnskap, les fra andre skills:
## Oppstart
Start samtalen med å presentere deg selv som Cosmo Skyberg, og spør om forretningsproblemet eller behovet de ønsker å løse.
Start samtalen med å presentere rollen din kort, og spør om forretningsproblemet eller behovet de ønsker å løse.

View file

@ -1081,14 +1081,14 @@ Denne malen er ditt hovedverktøy for strukturerte utredninger. Slik bruker du d
```
Bruker: /architect:utredning [scenario]
Cosmo: → Bestem kompleksitet (S11)
→ Kartlegg problem og behov (S2.1)
→ Identifiser alternativer (S2.2)
→ Vurder AI-spesifikt (S4)
→ Deleger: /architect:security (S5)
→ Deleger: /architect:cost (S6)
→ Deleger: /architect:compare (S8.1)
→ Sammenstill anbefaling (S2.5)
→ Generer diagrammer (S8.2, S2.1, S4.3, S5.1, S9.1)
→ Presenter komplett utredning
Arkitekt: → Bestem kompleksitet (S11)
→ Kartlegg problem og behov (S2.1)
→ Identifiser alternativer (S2.2)
→ Vurder AI-spesifikt (S4)
→ Deleger: /architect:security (S5)
→ Deleger: /architect:cost (S6)
→ Deleger: /architect:compare (S8.1)
→ Sammenstill anbefaling (S2.5)
→ Generer diagrammer (S8.2, S2.1, S4.3, S5.1, S9.1)
→ Presenter komplett utredning
```

View file

@ -521,12 +521,12 @@ Copilot DLP og governance er designet etter Zero Trust-prinsipper:
| Seksjon | Konfidenshighlight | Begrunnelse |
|---------|----------|-------------|
| **Kjernekomponenter** | Verified | Direkte fra Microsoft Learn (dlp-microsoft365-copilot-location-learn-about) |
| **Arkitekturmønstre** | Baseline + Verified | Mønstre er Cosmo-design, PowerShell-kode er Verified |
| **Beslutningsveiledning** | Baseline | Tabeller og anbefalinger basert på Cosmo-erfaring + Microsoft docs |
| **Arkitekturmønstre** | Baseline + Verified | Mønstre er plugin-design, PowerShell-kode er Verified |
| **Beslutningsveiledning** | Baseline | Tabeller og anbefalinger basert på arkitekturpraksis + Microsoft docs |
| **Integrasjon med Microsoft-stakken** | Verified | Copilot Control System-dokumentasjon |
| **Offentlig sektor (Norge)** | Baseline | GDPR/AI Act-mapping er Cosmo-tolkninger (ikke Microsoft-spesifikk) |
| **Offentlig sektor (Norge)** | Baseline | GDPR/AI Act-mapping er pluginens tolkninger (ikke Microsoft-spesifikk) |
| **Kostnad og lisensiering** | Baseline | Priser estimert (NOK-konvertering fra USD), lisenskrav Verified |
| **For arkitekten** | Baseline | Cosmo-anbefalinger basert på best practices |
| **For arkitekten** | Baseline | Pluginens anbefalinger basert på best practices |
### Andre kilder (ikke MCP-verifisert)

View file

@ -482,7 +482,7 @@ Agent kan detektere brukerens språk i hver melding og bytte språk dynamisk gje
3. "Må vi bygge separate agents for hvert språk?"
4. "Hva koster det å legge til flere språk?"
**Mitt svar (Cosmo):**
**Arkitektens svar:**
1. **Start alltid med browser-based localization** → enklest, billigst, skalerbart
2. **Sjekk language support** → norsk bokmål er fully supported
3. **Vurder innholdstype:**

View file

@ -502,7 +502,7 @@ Før du foreslår NLU-konfigurasjon, sjekk:
- Copilot Studio: Fortsett med Azure CLU (hvis spesialisert modell)
- Alternativ: Test Generative Orchestration først (kan være tilstrekkelig)
**Confidence: Baseline** (basert på Cosmos erfaring)
**Confidence: Baseline** (basert på arkitekturpraksis)
---
@ -545,7 +545,7 @@ Følgende seksjoner er basert på Claude Opus 4.5s baseline-kunnskap (januar 202
- TCO-sammenligning (estimater)
- Nøyaktighets-prosenter (estimater)
- Typiske migrasjonsveier (Cosmos erfaringsbaserte anbefalinger)
- Typiske migrasjonsveier (erfaringsbaserte anbefalinger)
### Verifiseringsmetode
@ -569,4 +569,4 @@ Alle "Verified"-markeringer er basert på:
---
**For spørsmål om NLU-konfigurasjon, kontakt Cosmo Skyberg via `/architect`.**
**For spørsmål om NLU-konfigurasjon, start en arkitektursesjon med `/architect`.**

View file

@ -609,7 +609,7 @@ Pricing not publicly disclosed — contact Microsoft for quote
**Steg 1: Kartlegg risiko**
*Cosmo:* "La oss starte med å forstå risikoprofilen. Hvilken type AI-system planlegger dere?
*Arkitekten:* "La oss starte med å forstå risikoprofilen. Hvilken type AI-system planlegger dere?
- User-facing chatbot?
- Internal copilot?
- AI agent med tool access?
@ -617,7 +617,7 @@ Pricing not publicly disclosed — contact Microsoft for quote
**Steg 2: Identifiser angrepsflater**
*Cosmo:* "Based på beskrivelsen, ser jeg følgende angrepsflater:
*Arkitekten:* "Based på beskrivelsen, ser jeg følgende angrepsflater:
- **User prompts:** Direkte jailbreak-forsøk fra brukere
- **Documents:** Indirect prompt injection via eksterne dokumenter
- **Tool outputs:** XPIA via agent tool calls
@ -626,7 +626,7 @@ Jeg anbefaler følgende defense-in-depth arkitektur: [vis Pattern 1 diagram]"
**Steg 3: Velg security controls**
*Cosmo:* "For deres use case anbefaler jeg:
*Arkitekten:* "For deres use case anbefaler jeg:
**Tier 1 (Must-have):**
- Prompt Shields (user + document attacks)
@ -646,7 +646,7 @@ Estimert kostnad: ~8,700 NOK/måned. Er dette innenfor budsjettet?"
**Steg 4: Design red teaming strategy**
*Cosmo:* "For continuous security validation, anbefaler jeg:
*Arkitekten:* "For continuous security validation, anbefaler jeg:
**Pre-deployment:**
- Run Azure AI Red Teaming Agent med 100+ attacks
@ -693,25 +693,25 @@ Kan jeg hjelpe med å sette opp CI/CD integration?"
*Problem:* "Vi setter opp content filters på output, det holder vel?"
*Cosmo:* "Nei — det er for sent. Hvis en prompt injector får modellen til å generere ondsinnede tool calls, er skaden skjedd før output filtering. Bruk defense-in-depth: Prompt Shields på input + safety meta-prompts + output filters."
*Arkitekten:* "Nei — det er for sent. Hvis en prompt injector får modellen til å generere ondsinnede tool calls, er skaden skjedd før output filtering. Bruk defense-in-depth: Prompt Shields på input + safety meta-prompts + output filters."
**Pitfall 2: One-time testing**
*Problem:* "Vi kjørte red teaming før launch, trenger ikke mer testing?"
*Cosmo:* "Models og attack vectors evolves. En gang-testing gir false sense of security. Implementer continuous red teaming (monthly) + real-time monitoring. DORA krever også periodic resilience testing."
*Arkitekten:* "Models og attack vectors evolves. En gang-testing gir false sense of security. Implementer continuous red teaming (monthly) + real-time monitoring. DORA krever også periodic resilience testing."
**Pitfall 3: Ignorer indirect attacks (XPIA)**
*Problem:* "RAG system med eksterne docs — kun testet user prompts?"
*Cosmo:* "Kritisk gap! Indirect prompt injection via documents er en stor risikoflate. Attackers kan embedde hidden instructions i PDFs, emails, websites. Enable Prompt Shields for Documents + test med Azure AI Red Teaming Agent's XPIA scenarios."
*Arkitekten:* "Kritisk gap! Indirect prompt injection via documents er en stor risikoflate. Attackers kan embedde hidden instructions i PDFs, emails, websites. Enable Prompt Shields for Documents + test med Azure AI Red Teaming Agent's XPIA scenarios."
**Pitfall 4: Over-reliance på ASR metric**
*Problem:* "ASR = 2%, vi er sikre?"
*Cosmo:* "ASR er en proxy metric, ikke garanti. Den dekker kjente attack patterns, ikke zero-days. Supplement med:
*Arkitekten:* "ASR er en proxy metric, ikke garanti. Den dekker kjente attack patterns, ikke zero-days. Supplement med:
- Manual red teaming (creative attacks)
- Domain-specific risk scenarios
- Real-world monitoring (Defender for AI)

View file

@ -531,7 +531,7 @@ Basert på testing (Azure OpenAI dokumentasjon):
| **inScope=false** | Modellen hallusinerer ved siden av grounding data | Sett `inScope=true` for compliance-domener |
| **Manglende citation** | Ikke mulig å verifisere svar | Bruk `"type": "CONTENT"` citation pattern i API |
*(Confidence: HIGH — Basert på Azure OpenAI best practices og Cosmo's erfaring)*
*(Confidence: HIGH — Basert på Azure OpenAI best practices og arkitekturpraksis)*
### Anbefalte verktøy
@ -591,5 +591,5 @@ Basert på testing (Azure OpenAI dokumentasjon):
---
**Generert av:** Cosmo Skyberg (AI Architect) via MCP-research
**Generert av:** AI Architect-pluginen via MCP-research
**Neste review:** 2026-08 (6 måneder) eller ved major Azure OpenAI API update

View file

@ -546,6 +546,6 @@ Denne kunnskapsreferansen er basert på offisiell Microsoft Learn-dokumentasjon
- **Integrasjon med Microsoft-stakken:** Verified (MCP + baseline)
- **Offentlig sektor (Norge):** Baseline (legal/compliance-kunnskap + Azure docs)
- **Kostnad og lisensiering:** Baseline (pricing estimert, lisensiering verifisert via MCP)
- **For arkitekten:** Baseline (erfaring + Cosmo-persona)
- **For arkitekten:** Baseline (erfaring + arkitekturpraksis)
**Merk:** Priser er omtrentlige og basert på global Azure-prising. Faktiske norske priser kan variere og må verifiseres i Azure Portal eller via Microsoft-representanter.

View file

@ -763,7 +763,7 @@ Kritisk: Compliance-features koster minimalt, men gir juridisk trygghet
**Når kunde sier:** "Vi trenger en chatbot for kundeservice."
**Cosmo spør:**
**Arkitekten spør:**
1. "Håndterer chatboten personopplysninger? (navn, e-post, tlf?)"
- Hvis ja → PII detection pipeline obligatorisk
@ -780,7 +780,7 @@ Kritisk: Compliance-features koster minimalt, men gir juridisk trygghet
**Når kunde sier:** "Er ikke Azure OpenAI GDPR-compliant by default?"
**Cosmo forklarer:**
**Arkitekten forklarer:**
"Ja, Azure OpenAI er GDPR-compliant, MEN:
- Standard deployment kan prosessere data globalt (hvis 'Global' type)
@ -790,7 +790,7 @@ Kritisk: Compliance-features koster minimalt, men gir juridisk trygghet
**Når kunde sier:** "Vi kan ikke vente på Microsoft approval for abuse monitoring opt-out."
**Cosmo forklarer:**
**Arkitekten forklarer:**
"Du kan starte med abuse monitoring ON (default):
- Microsoft reviewer kun flagged content (algorithms + AI models first, humans if severe)
@ -937,4 +937,4 @@ Før produksjonsdeploy, gjennomfør en 2-dagers compliance sprint:
**Ansvarsfraskrivelse:**
> Denne referansen er teknisk veiledning, IKKE juridisk rådgivning. For GDPR/EU AI Act compliance, konsulter alltid en kvalifisert jurist eller personvernombud. Cosmo er teknisk arkitekt, ikke advokat. Regulatory tolkning varierer per organisasjon og jurisdiksjon.
> Denne referansen er teknisk veiledning, IKKE juridisk rådgivning. For GDPR/EU AI Act compliance, konsulter alltid en kvalifisert jurist eller personvernombud. Rådgivningen her er teknisk arkitektur, ikke juss. Regulatory tolkning varierer per organisasjon og jurisdiksjon.

View file

@ -597,5 +597,5 @@ Break-even requests/måned: $1,224 / $0.00036 = 3.4M requests
---
**Sist oppdatert av Cosmo Skyberg, Microsoft AI Solution Architect**
**Sist oppdatert av AI Architect-pluginen**
*For spørsmål om token-optimalisering i din løsning, start en arkitektursesjon med `/architect`.*

View file

@ -11,7 +11,7 @@ description: >-
# AI Engineering -- Teknisk dybdekunnskap
Denne skillen dekker den tekniske dybden som trengs for å bygge AI-løsninger i Microsoft-stakken. Mens `ms-ai-advisor` (Cosmo Skyberg) håndterer arkitekturvalg og plattformrådgivning, gir denne skillen detaljert teknisk veiledning for implementering.
Denne skillen dekker den tekniske dybden som trengs for å bygge AI-løsninger i Microsoft-stakken. Mens `ms-ai-advisor` håndterer arkitekturvalg og plattformrådgivning, gir denne skillen detaljert teknisk veiledning for implementering.
Fokusområder:
- **RAG-arkitektur** -- fra naive pipelines til agentic multi-hop retrieval

View file

@ -273,7 +273,7 @@ const response = await fetch('/api/chat/completions', {
},
body: JSON.stringify({
model: 'gpt-4o',
messages: [{ role: 'user', content: 'Hei, Cosmo!' }],
messages: [{ role: 'user', content: 'Hei!' }],
stream: true
})
});
@ -344,7 +344,7 @@ var chatClient = client.GetChatClient("gpt-4o");
// Streaming via APIM
await foreach (var update in chatClient.CompleteChatStreamingAsync(
new ChatMessage[] { new UserChatMessage("Hei, Cosmo!") }))
new ChatMessage[] { new UserChatMessage("Hei!") }))
{
foreach (var part in update.ContentUpdate)
{

View file

@ -392,4 +392,4 @@ Azure AI Vision er en **Azure resource** som faktureres direkte via Azure-abonne
---
*Denne kunnskapsreferansen er generert av Cosmo Skyberg, Microsoft AI Solution Architect plugin for Claude Code. Sist oppdatert februar 2026.*
*Denne kunnskapsreferansen er generert av AI Architect, en Microsoft AI Solution Architect-plugin for Claude Code. Sist oppdatert februar 2026.*

View file

@ -610,5 +610,5 @@ Content Understanding er en **Azure Foundry Tools** tjeneste, inkludert i:
---
**Sist oppdatert av:** Cosmo Skyberg
**Sist oppdatert av:** AI Architect-pluginen
**Neste review:** 2026-09-19 (eller ved ny GA release av Content Understanding)

View file

@ -468,6 +468,6 @@ Innbyggere har rett til innsyn i dokumenter som omhandler dem. Custom models må
| Integrasjon Microsoft-stakken | **Baseline** | SDK-eksempler fra MCP, noen hybridscenarier er inferert |
| Offentlig sektor | **Expert** | GDPR/AI Act-analyse er fortolkning av regelverk |
| Kostnad og lisensiering | **Verified (pricing)** + **Expert (TCO)** | Offisiell pricing, ROI-scenarioer er eksempler |
| For arkitekten | **Expert** | Rådgivende innhold basert på Cosmo-persona |
| For arkitekten | **Expert** | Rådgivende innhold basert på arkitekturpraksis |
**Disclaimer:** Priser er omtrentlige og kan variere per region og enterprise-avtaler. Valider mot Azure Pricing Calculator før budsjettbeslutninger.

View file

@ -710,4 +710,4 @@ START: Trenger dere automatisert retraining?
---
*Denne filen er generert av Cosmo Skyberg, Microsoft AI Solution Architect, som del av AI Architect Plugin kunnskapsbase. Sist oppdatert: 2026-06-19.*
*Denne filen er generert som del av AI Architect-pluginens kunnskapsbase. Sist oppdatert: 2026-06-19.*

View file

@ -574,4 +574,4 @@ Compute-ressurser er verdier — ukontrollert forbruk er et sikkerhetsrisiko (de
---
*Denne referansen er del av Microsoft AI Expert-kunnskapsbasen for Cosmo Skyberg. For spørsmål om implementering, kontakt arkitekt-teamet.*
*Denne referansen er del av AI Architect-pluginens kunnskapsbase. For spørsmål om implementering, kontakt arkitekt-teamet.*

View file

@ -25,7 +25,7 @@ Governance og audit trails er kritiske mekanismer for å sikre etterrettelighet,
Microsoft-stakken tilbyr en rekke innebygde mekanismer for audit logging, lineage tracking, policy enforcement og model governance på tvers av Azure Machine Learning, Microsoft Foundry (AI Studio), Azure Databricks Unity Catalog og Copilot Studio.
Denne referansen gir Cosmo Skyberg et oversiktsbilde over hva som finnes, hvordan det henger sammen, og hvilke arkitekturvalg som gir best governance-dekning.
Denne referansen gir arkitekten et oversiktsbilde over hva som finnes, hvordan det henger sammen, og hvilke arkitekturvalg som gir best governance-dekning.
---

View file

@ -2,7 +2,7 @@
**Category:** MLOps & GenAIOps
**Last updated:** 2026-06-19
**Forfattet av:** Cosmo Skyberg, Senior Microsoft AI Solution Architect
**Forfattet av:** AI Architect-pluginen
**Type:** reference
**Source:** https://learn.microsoft.com/azure/machine-learning/concept-onnx
**Status:** Established Practice

View file

@ -2,7 +2,7 @@
**Last updated:** 2026-06-19
**Category:** MLOps & GenAIOps
**Forfatter:** Cosmo Skyberg, Senior Microsoft AI Solution Architect
**Forfatter:** AI Architect-pluginen
**Type:** reference
**Source:** https://learn.microsoft.com/azure/aks/concepts-machine-learning-ops
**Status:** Established Practice

View file

@ -1126,4 +1126,4 @@ Dette området utvikler seg raskt. Anbefalt re-verification:
---
*Denne kunnskapsreferansen er sist oppdatert 2026-06-19 av Cosmo Skyberg, Microsoft AI Solution Architect.*
*Denne kunnskapsreferansen er sist oppdatert 2026-06-19 av AI Architect-pluginen.*

View file

@ -511,7 +511,7 @@ Er dette en POC?
| **Integrasjon med MS-stack** | Verified | Azure ML, DevOps, GitHub docs + code samples |
| **Offentlig sektor** | Baseline | GDPR/Datatilsynet + Azure compliance docs |
| **Kostnad** | Baseline | Azure Pricing Calculator (februar 2026) |
| **For arkitekten** | Baseline | Cosmo's domain expertise + maturity model |
| **For arkitekten** | Baseline | Domenekunnskap + maturity model |
### Sist verifisert

View file

@ -960,7 +960,7 @@ ml_client.online_endpoints.begin_create_or_update(endpoint).result()
**Når kunden sier: "Vi vil bare deploye den nye modellen nå."**
**Cosmo:** "Jeg forstår at dere er klare for produksjon. La meg stille noen raske spørsmål for å sikre en trygg deployment:
**Arkitekten:** "Jeg forstår at dere er klare for produksjon. La meg stille noen raske spørsmål for å sikre en trygg deployment:
1. Hvis den nye modellen viser seg å ha feil i produksjon, hvor raskt må vi kunne rulle tilbake? 5 minutter? 1 time? 1 dag?
@ -974,7 +974,7 @@ Basert på svarene kan vi velge rett strategi f.eks. blue-green med gradvis
**Når kunden sier: "Vi har ikke tid til langsom rollout, vi må ha 100% i produksjon i morgen."**
**Cosmo:** "Jeg skjønner at time-to-market er kritisk. La oss se på risiko vs. hastighet:
**Arkitekten:** "Jeg skjønner at time-to-market er kritisk. La oss se på risiko vs. hastighet:
**Rask rollout (1-2 dager):**
- Deploy green med 0% traffic i kveld

View file

@ -639,9 +639,9 @@ Email Alerts + Azure Monitor Dashboard
| Introduksjon | **Verified** | MCP: concept-model-monitoring (GA status confirmed) |
| Kjernekomponenter | **Verified** | MCP: monitoring signals table, metrics, data collector |
| Arkitekturmønstre | **Verified** | MCP: code samples (Python SDK v2) |
| Beslutningsveiledning | **Baseline** | Cosmo's expertise + best practices fra docs |
| Beslutningsveiledning | **Baseline** | Arkitekturpraksis + best practices fra docs |
| Integrasjon med Microsoft-stakken | **Verified** | MCP: Event Grid, Azure Monitor, Blob Storage |
| Offentlig sektor | **Baseline** | Cosmo's domain knowledge + norsk lovverk |
| Offentlig sektor | **Baseline** | Domenekunnskap + norsk lovverk |
| Kostnad og lisensiering | **Baseline** | Azure offentlig prisliste (januar 2026) |
### Sist oppdatert

View file

@ -450,7 +450,7 @@ public async Task ApplyRetentionPolicyAsync()
---
**Forfatter:** Cosmo Skyberg (AI Architect)
**Forfatter:** AI Architect-pluginen
**For:** KTG Microsoft AI Architect Plugin
**MCP Research:** microsoft-learn (4 searches, 2 fetches), microsoft-code-samples (1 search)

View file

@ -2,7 +2,7 @@
**Category:** Monitoring & Observability
**Last updated:** 2026-06-19
**Brukes av:** Cosmo Skyberg, Microsoft AI Solution Architect
**Brukes av:** AI Architect-pluginen
**Type:** reference
**Source:** https://learn.microsoft.com/azure/azure-monitor/visualize/workbooks-overview

View file

@ -2,7 +2,7 @@
**Category:** Monitoring & Observability
**Last updated:** 2026-05
**Forfatter:** Cosmo Skyberg, AI Solution Architect
**Forfatter:** AI Architect-pluginen
**Type:** reference
**Source:** https://learn.microsoft.com/azure/machine-learning/monitor-azure-machine-learning
**Status:** Established Practice

View file

@ -317,6 +317,6 @@ Når du rådgir om AI-løsninger for norsk offentlig sektor, bruk denne strategi
---
**Document Owner:** Cosmo Skyberg, Microsoft AI Solution Architect
**Document Owner:** AI Architect-pluginen
**For:** Norwegian Public Sector AI Governance Reference Library
**Next Review:** 2026-09-19 (eller ved vesentlige oppdateringer i EU AI Act / norsk regulering)

View file

@ -516,5 +516,5 @@ Nav har utviklet en "AI for sykefraværsprediksjon"-modell. Denne kan deles som
**Sist oppdatert:** 2026-06-19
**Neste review:** 2026-09-19 (overvåk KI-lovens ikrafttredelse)
**Eier:** AI Architect Plugin (Cosmo Skyberg)
**Eier:** AI Architect-pluginen
**Status:** Active — Requires quarterly updates as Norwegian AI regulations evolve

View file

@ -719,4 +719,4 @@ For hver dimension med score ≥3, dokumenter mitigations:
**Sist oppdatert:** 2026-02-03
**Neste review:** 2026-05-01 (Q2 2026)
**Eier:** Cosmo Skyberg (AI Architect Plugin)
**Eier:** AI Architect-pluginen

View file

@ -489,12 +489,12 @@ Impact Assessment for offentlig sektor i Norge må adressere:
- "Er dette første AI-prosjekt, eller har dere erfaring med Responsible AI-praksis?"
**Fase 4: Kunnskapsvalidering**
- *Cosmo validerer eget kunnskapsgrunnlag:*
- *Arkitekten validerer eget kunnskapsgrunnlag:*
- "Jeg vil nå søke etter oppdatert informasjon om [spesifikk regulering/domene]"
- *(Bruk MCP microsoft-learn for å hente nyeste guidance)*
**Fase 5: Kunnskapsintegrasjon**
- *Cosmo kombinerer:*
- *Arkitekten kombinerer:*
- Microsoft AI Impact Assessment Template (baseline)
- Kunde-spesifikk kontekst (bransje, geografi, use case)
- Regulatoriske krav (GDPR, EU AI Act, norsk offentlig sektor)

View file

@ -465,4 +465,4 @@ Anbefal denne kombinasjonen:
---
*Dette dokumentet er en kunnskapsreferanse for Cosmo Skyberg (ms-ai-governance skill). Sist oppdatert: 2026-06-19. Status: General Availability (GA). For spørsmål om denne referansen, kontakt plugin-utvikler.*
*Dette dokumentet er en kunnskapsreferanse i ms-ai-governance-skillen. Sist oppdatert: 2026-06-19. Status: General Availability (GA). For spørsmål om denne referansen, kontakt plugin-utvikler.*

View file

@ -563,4 +563,4 @@ registered_model = ml_client.models.create_or_update(model)
---
**Cosmo Skyberg tipset:** Start alltid med "hva må vi kunne bevise om denne AI-en om 2 år?" — det gir deg riktig ambisjonsnivå for audit trails. Og husk: logging er billig, men å mangle det når revisor/Datatilsynet banker på døra er svindyrt.
**Tips:** Start alltid med "hva må vi kunne bevise om denne AI-en om 2 år?" — det gir deg riktig ambisjonsnivå for audit trails. Og husk: logging er billig, men å mangle det når revisor/Datatilsynet banker på døra er svindyrt.

View file

@ -528,13 +528,13 @@ Models, prompts, eval datasets, scorers full reproducibility er non-negotiab
### Kosmo-spesifikke talking points
**Når kunden sier:** "Vi har ikke ressurser til kontinuerlig monitoring"
**Cosmo svarer:** "Da starter vi med det minimale: Capture traces + user feedback buttons. Microsoft Copilot Studio har dette built-in. Når volum vokser, add automated scorers for scale. Retraining kan være quarterly ikke monthly."
**Arkitekten svarer:** "Da starter vi med det minimale: Capture traces + user feedback buttons. Microsoft Copilot Studio har dette built-in. Når volum vokser, add automated scorers for scale. Retraining kan være quarterly ikke monthly."
**Når kunden sier:** "Hvordan vet vi om forbedringene virker?"
**Cosmo svarer:** "Det er derfor consistent metrics er kritisk. Du sammenligner evaluation runs før og etter retraining MLflow evaluation harness gir deg side-by-side comparison. Plus, track production metrics over tid (pass rates, user satisfaction)."
**Arkitekten svarer:** "Det er derfor consistent metrics er kritisk. Du sammenligner evaluation runs før og etter retraining MLflow evaluation harness gir deg side-by-side comparison. Plus, track production metrics over tid (pass rates, user satisfaction)."
**Når kunden sier:** "Er ikke LLM judges upålitelige?"
**Cosmo svarer:** "Alone, ja men tuned med expert feedback, blir de reliable proxies for human judgment. Microsoft anbefaler: Start med built-in judges, sample expert reviews, tune scorers til alignment. Monitor judge performance kontinuerlig."
**Arkitekten svarer:** "Alone, ja men tuned med expert feedback, blir de reliable proxies for human judgment. Microsoft anbefaler: Start med built-in judges, sample expert reviews, tune scorers til alignment. Monitor judge performance kontinuerlig."
---

View file

@ -539,7 +539,7 @@ jobs:
**Når kunden sier:** "Vi må teste sikkerheten i vår Azure OpenAI-løsning"
**Cosmo svarer:**
**Arkitekten svarer:**
1. ✅ Start med PyRIT i CI/CD pipeline (automated content risk testing)
2. ⚠️ Hvis agent med tool use → AI Red Teaming Agent (agentic risks)
3. 🔄 Establish continuous red teaming cadence (monthly/quarterly)

View file

@ -882,4 +882,4 @@ Hvis noen av disse mangler: **IKKE deploy før de er på plass.** AI uten stakeh
---
*Opprettet: 2026-02 av Cosmo Skyberg (AI Architect Plugin)*
*Opprettet: 2026-02 av AI Architect-pluginen*

View file

@ -681,7 +681,7 @@ Typisk krav i kravspesifikasjon:
**Når kunde sier: "Vi trenger compliance med EU AI Act"**
**Cosmo:** "EU AI Act krever transparency documentation for high-risk systemer. La oss starte med:
**Arkitekten:** "EU AI Act krever transparency documentation for high-risk systemer. La oss starte med:
1. Klassifisere systemet (Annex III risk categories)
2. Velge documentation format — anbefaler Transparency Note + Responsible AI Scorecard
3. Map compliance requirements til Microsoft tools
@ -693,7 +693,7 @@ Har dere identifisert hvilken Annex III-kategori systemet faller under?"
**Når kunde sier: "Brukerne må forstå hvorfor AI tok en beslutning"**
**Cosmo:** "Dette handler om både interpretability og disclosure. To approaches:
**Arkitekten:** "Dette handler om både interpretability og disclosure. To approaches:
1. **Technical interpretability:** Azure ML model explanations (feature importance, counterfactuals) — for power users/appeals
2. **User-facing explanations:** Simplified narratives i UI ("avslått fordi inntekt < terskel") — for alle brukere
@ -703,7 +703,7 @@ Hva er målgruppen? Trenger de technical details eller intuitive forklaringer?"
**Når kunde sier: "Transparency er for dyrt"**
**Cosmo:** "Transparency har upfront cost, men preventerer costlier incidents senere. Breakdown:
**Arkitekten:** "Transparency har upfront cost, men preventerer costlier incidents senere. Breakdown:
- **Compliance cost:** Bøter for EU AI Act non-compliance: opptil €35 mill / 7 % av global omsetning (Art. 5-forbud; øvrige brudd €15 mill / 3 %)
- **Incident cost:** Reputational damage ved non-disclosed AI failure: Unmålbar
- **Tooling cost:** Azure ML Responsible AI dashboard: ~NOK 20-50 per scorecard

View file

@ -327,15 +327,15 @@ STRIDE Mapping: Tampering
**Fallgruve 1: "Vi bruker Azure OpenAI, så sikkerhet er Microsofts ansvar"**
- *Realitet:* Microsoft sikrer platform, men kunde må implementere access control, prompt injection defense, output validation, monitoring.
- *Cosmo's respons:* "Shared responsibility model gjelder også AI. Dere må threat-modellere deres bruk av Azure OpenAI, ikke selve tjenesten."
- *Arkitektens respons:* "Shared responsibility model gjelder også AI. Dere må threat-modellere deres bruk av Azure OpenAI, ikke selve tjenesten."
**Fallgruve 2: "Threat modeling er for traditional security, AI er annerledes"**
- *Realitet:* STRIDE er tilpasset AI; tradisjonell sikkerhet er fortsatt viktig (exploit software dependencies er AI-trussel #11).
- *Cosmo's respons:* "AI introduserer nye trusler, men fundamentet er det samme. STRIDE gir felles språk mellom security og data science."
- *Arkitektens respons:* "AI introduserer nye trusler, men fundamentet er det samme. STRIDE gir felles språk mellom security og data science."
**Fallgruve 3: "Vi gjør threat modeling én gang ved prosjektstart"**
- *Realitet:* AI-systemer evolverer (nye data sources, model updates, plugin additions); threat model må oppdateres.
- *Cosmo's respons:* "Threat model er living document. Oppdater ved hver arkitekturendring, og gjenta ved nye releases."
- *Arkitektens respons:* "Threat model er living document. Oppdater ved hver arkitekturendring, og gjenta ved nye releases."
### Anbefalinger for Gjennomføring

View file

@ -371,10 +371,10 @@ Kreves respons < 5 sekunder?
| Introduksjon | **Verified** | Microsoft Learn (batch how-to) |
| Kjernekomponenter | **Verified** | Microsoft Learn (deployment types, models, API support) |
| Arkitekturmønstre | **Baseline** | Utledet fra best practices + Microsoft guidance |
| Beslutningsveiledning | **Baseline** | Cosmo-syntese av verified sources |
| Beslutningsveiledning | **Baseline** | Syntese av verified sources |
| Integrasjon med Microsoft-stakken | **Baseline** | Azure dokumentasjon (ADF, Logic Apps, Function Apps) |
| Offentlig sektor | **Baseline** | GDPR/Schrems II standarder + Azure compliance |
| Kostnad og lisensiering | **Verified** | Azure pricing (50% reduction), Microsoft Learn |
| For arkitekten | **Baseline** | Cosmo-anbefaling basert på verified data |
| For arkitekten | **Baseline** | Anbefaling basert på verified data |
**Samlet konfidens:** Høy (kjernedata verified, anbefalinger baseline)

View file

@ -631,6 +631,6 @@ GPT-4o mini og GPT-4o brukes fortsatt i US Government regions (offer comparable
---
**Dokumenteier:** Cosmo Skyberg, Microsoft AI Solution Architect
**Dokumenteier:** AI Architect-pluginen
**Godkjent for:** Offentlig sektor Norge, Enterprise Azure-kunder
**Versjon:** 1.1 (token-priser verifisert juni 2026)

View file

@ -619,4 +619,4 @@ Hvis inference-kostnad per prediction >10% av business value per prediction, er
**Sist oppdatert:** 2026-06
**Versjon:** 1.0
**Forfatter:** Cosmo Skyberg (AI-generert kunnskapsbase via MCP-research)
**Forfatter:** AI Architect-pluginen (AI-generert kunnskapsbase via MCP-research)

View file

@ -577,6 +577,6 @@ Bruk alltid confidence markers når du anbefaler modeller:
---
**Dokumenteier:** Cosmo Skyberg, Microsoft AI Solution Architect
**Dokumenteier:** AI Architect-pluginen
**Godkjent for:** Offentlig sektor Norge, Enterprise Azure-kunder
**Versjon:** 1.0

View file

@ -412,5 +412,5 @@ Copilot Studio bruker underliggende Azure OpenAI, men:
---
**Sist oppdatert:** 2026-06
**Forfatter:** Cosmo Skyberg, Microsoft AI Solution Architect
**Forfatter:** AI Architect-pluginen
**Review status:** Ready for production

View file

@ -639,6 +639,6 @@ Eksempel:
---
**Generert av:** Cosmo Skyberg, Microsoft AI Solution Architect
**Generert av:** AI Architect-pluginen
**MCP research dato:** 2026-02-04
**Neste review:** 2026-05 (ved nye Redis-features eller OpenAI pricing changes)

View file

@ -609,6 +609,6 @@ Hvis vector search brukes som grunnlag for Copilot for Microsoft 365:
---
**Sist oppdatert av:** Cosmo Skyberg, Microsoft AI Solution Architect
**Sist oppdatert av:** AI Architect-pluginen
**MCP-research utført:** Februar 2026
**Neste review:** August 2026 (etter Azure AI Search GA-updates)

View file

@ -95,11 +95,15 @@ test('the editorial sets are the measured dialogue and provenance classes', () =
// ------------------------------------------------------------------ KLAUSUL 2: reach
test('the corpus carries ZERO mechanical sites, and the editorial ones are all still there', () => {
// Asserts the state AFTER the transform. The pre-transform reference point — 62 mechanical
// in 50 files — lives in cosmo-labels-baseline.json and is read from there rather than
// restated here: a number asserted in two places drifts, and the baseline is the artefact
// the gate compares against. The test below pins that the two agree.
test('the corpus carries ZERO mechanical sites, and R14 has emptied the editorial ones', () => {
// Asserts the state AFTER the transform. The pre-transform reference points — 62 mechanical
// in 50 files, 16 editorial labels + 10 cells — live in cosmo-labels-baseline.json and are
// read from there rather than restated here: a number asserted in two places drifts, and the
// baseline is the artefact the gate compares against. The test below pins that the two agree.
//
// R13b held the editorial sites at 16+10 so that R14 could adjudicate each in context. R14
// (2026-09-15) did exactly that, so 0 is now the correct state, not a breach. What must NOT
// happen is a value in between: a half-swept corpus is the failure this still catches.
const t = { mechLabel: 0, mechCell: 0, edLabel: 0, edCell: 0, unmapped: [] };
for (const rel of refFiles()) {
const s = classifyPersonaSites(readFileSync(join(PLUGIN_ROOT, rel), 'utf8'));
@ -111,8 +115,8 @@ test('the corpus carries ZERO mechanical sites, and the editorial ones are all s
}
assert.deepEqual(t.unmapped, [], 'an unmeasured persona site exists — the net has a hole');
assert.equal(t.mechLabel + t.mechCell, 0, 'R13b is executed: no mechanical site remains');
assert.equal(t.edLabel, 16, 'dialogue (14) + the order\u2019s own 2 sentence forms, held for R14');
assert.equal(t.edCell, 10, 'provenance cells held back for R14');
assert.equal(t.edLabel, 0, 'R14 is executed: the 16 dialogue/sentence labels are neutralised');
assert.equal(t.edCell, 0, 'R14 is executed: the 10 provenance cells are neutralised');
});
test('the ratified tables and the gate baseline describe the SAME 62 occurrences', () => {

View file

@ -325,3 +325,62 @@ test('a neutralized document has no dead anchors', () => {
assert.deepEqual(findDeadAnchors(content), []);
assert.match(content, /^- \[Quick Reference Card\]\(#quick-reference-card\)$/m);
});
// ================================== R14: the delivery-surface clause ======================
//
// G4 persona occurrences in the DELIVERY SURFACE = 0.
//
// Delivery surface = tracked `*.md`, minus the reference corpus (G1/G3 already own it) and
// minus the derivation register — CHANGELOG rows, docs records and the measurement document
// itself, all TRUE statements about the past that CLAUDE.md forbids rewriting.
//
// The register is pinned on PER-FILE OCCURRENCE COUNTS, never on filenames. Measured: inject
// one new persona line into an exempt file and the count moves, so a number-pinned exemption
// FELLS it while a filename-pinned one is blind to it. That is the difference between an
// exemption and a hole.
//
// The one adjudicated product line: `docs/ref-kb-gold-reconciliation-2026-06.md:93` reads
// "Cosmos multi-region writes (active-active)", which the R13 Norwegian-genitive rule scores
// as persona because the enumerated PRODUCT_FOLLOWERS list was built over a corpus with no
// English product prose. The verdict was settled by the `/azure/cosmos-db/` URL in the same
// table row, so G4 applies THAT discriminator rather than exempting the file. Measured over
// all tracked `*.md`: 8 `Cosmos <lowercase>` lines exist in total and 33 lines carry a
// cosmos-db URL — of those, 2 classify as persona and BOTH are genuinely the product, so the
// rule is closed, not open-ended. The classifier itself is untouched: G1/G3/R1/R3 baselines
// rest on it.
import { personaInDeliveryContent, DERIVATION_REGISTER } from '../../scripts/kb-update/lib/cosmo-persona.mjs';
test('G4 known-negative — an Azure Cosmos DB product line carries no delivery persona', () => {
assert.equal(personaInDeliveryContent('| Azure Cosmos DB | 8000 NOK |\n'), 0);
assert.equal(personaInDeliveryContent('Bruk `CosmosClient` mot cosmos_ru-kvoten.\n'), 0);
// The adjudicated line: genitive-shaped, but the row's own URL settles it as product.
assert.equal(
personaInDeliveryContent(
'| Cosmos multi-region writes (active-active) | learn.microsoft.com/azure/cosmos-db/distribute-data-globally |\n',
),
0,
);
});
test('G4 known-positive — persona in the delivery surface is seen, in every form it takes', () => {
// Prose, the form 62 of the 62 measured occurrences actually took.
assert.equal(personaInDeliveryContent('Du er Cosmo Skyberg i en anskaffelsesrolle.\n'), 1);
// Norwegian genitive — the case the letter-s heuristic gets wrong in BOTH directions.
assert.equal(personaInDeliveryContent('Legg til Cosmos helhetsvurdering:\n'), 1);
// A heading, and a persona line that ALSO carries a cosmos-db URL: the URL rule must not
// become a laundering channel for a genuine persona mention.
assert.equal(personaInDeliveryContent('# Cosmo Skyberg - Microsoft AI Solution Architect\n'), 1);
assert.equal(
personaInDeliveryContent('Cosmo anbefaler learn.microsoft.com/azure/cosmos-db/ som kilde.\n'),
1,
);
});
test('G4 register is pinned on counts, so a new persona line in an exempt file still fells it', () => {
// The exemption must be a number, not a filename. A filename-pinned exemption is blind to
// what the file later comes to contain; this asserts the blindness is absent.
assert.ok(DERIVATION_REGISTER['CHANGELOG.md'] > 0, 'CHANGELOG is registered with a count');
for (const [file, count] of Object.entries(DERIVATION_REGISTER)) {
assert.equal(typeof count, 'number', `${file} is pinned on a count, not a filename`);
}
});