dynamisk-rettsstat/skills/diagnose/SKILL.md
Kjell Tore Guttormsen 19858bbda9
docs: bring skills and docs in line with the fixed code
Skills ask before using a working copy found in the user's folder and state
its check level first. The drift of the queue models before the shock is
stated in the caveats and the README. README shows how to run the check and
the tests. The drift line names the month a gradual drive begins.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-11 15:46:39 +01:00

9.5 KiB
Raw Permalink Blame History

name description
diagnose Finner leddet som binder i straffesakskjeden fra egne tall, med modellen i notatet Den dynamiske rettsstaten: utnyttelse og restanse per ledd, tiltakstype etter Theory of Constraints (utnytt, led saker utenom, utvid) og hvor mye kapasitet som trengs. Bruk når noen vil finne flaskehalsen, se om politi, påtale, domstol eller kriminalomsorg binder, regne ut kapasitetsbehov eller prøve verktøyet på eksempeltall eller offentlige norske tall. Utløses av «finn flaskehalsen», «hvilket ledd binder», «hvor er flaskehalsen i straffesakskjeden», «kjør diagnosen», «se på restansene våre», «hvor mye kapasitet trenger domstolen», «prøv flaskehalsdiagnosen», «find the bottleneck in the criminal justice chain», «run the bottleneck diagnosis».

Finn leddet som binder

Ferdigheten går fra tall per ledd i straffesakskjeden til leddet som binder, hvilken type tiltak det krever, og hvor mye kapasitet som trengs. Den kjører diagnosen i notatet Den dynamiske rettsstaten (trinn (c)–(e) i metoden, avsnitt 7.7 og 9.5) og trenger bare Python 3.

Brukeren arbeider ofte i straffesakskjeden og er ikke programmerer. Snakk vanlig norsk. Nevn ikke filnavn, kommandoer, feltnavn eller JSON med mindre brukeren spør etter dem.

Regler

  • Finn aldri på et tall. Mangler et tall, spør. Vet ikke brukeren, si hva verktøyet gjør uten det (se standardverdiene i ${CLAUDE_PLUGIN_ROOT}/docs/inndata.md), og la brukeren velge.
  • Vis tallene slik du har forstått dem, og få et ja før du regner.
  • Årstall deles på 12, og du sier det. Det gjelder strømmer (saker inn, kapasitet). Restanser er antall saker og deles ikke.
  • Gjengi skriptets tall ordrett, i skriptets rekkefølge. Regn aldri om, avrund aldri annerledes og «forbedre» aldri et tall. Vil brukeren vite hva som skjer med andre tall, endrer du fila og kjører på nytt.
  • Ta med forbeholdene som gjelder (under, og ${CLAUDE_PLUGIN_ROOT}/docs/forbehold.md).
  • Installer aldri noe uten å spørre. Diagnosen trenger ingen tillegg.

1. Skaff tallene

For hvert ledd trengs:

Spør om Enhet
navnet på leddet
saker inn per måned nå saker/mnd
saker leddet kan avgjøre per måned, slik det virker nå saker/mnd
restansen nå saker
målet: saksbehandlingstid i måneder, eller en akseptabel restanse i saker mnd eller saker

Og, hvis brukeren har dem (spør etter at de påkrevde er på plass):

  • prognose for saker inn når balansen er gjenopprettet (uten prognose brukes strømmen nå);
  • hvor stor andel av sakene som kan ledes til forenklede reaksjoner (for eksempel 20 %);
  • restansen for tolv måneder siden (gir observert vekst i restansen);
  • saker som avsluttes uten behandling og som er regnet med i kapasiteten, for eksempel henlagt på grunn av manglende kapasitet.

Ledd oppgis i kjedens rekkefølge (politi før påtale før domstol før kriminalomsorg).

Brukeren har tallene klare. Ta imot en limt tabell, et regneark, en CSV-fil eller en JSON-fil. Les den, finn hvilke kolonner som svarer til hva, og spør om det som er uklart. Er det uklart om et tall gjelder per år eller per måned, spør.

Brukeren har ikke tallene klare. Gå gjennom ett ledd om gangen og still ett spørsmål om gangen. Si hvorfor tallet trengs når det ikke er opplagt.

Brukeren har ingen tall ennå. Tilby å kjøre et av eksemplene, og si hva det er:

  • Stilisert eksempel (${CLAUDE_PLUGIN_ROOT}/eksempler/eksempel_domstol.json): modellens egne tall, ikke norske. Domstolen binder, og svaret gjenskaper avsnitt 9.5 i notatet (utnyttelse 1,28 og 19 % mer kapasitet).
  • Offentlige norske tall for 2025 (${CLAUDE_PLUGIN_ROOT}/eksempler/norge_2025.json): politi og påtale, tingrett, lagmannsrett og fengsel, fra offentlige kilder. Flere av tallene er anslag; kildene står i fila.

Eksemplene kjøres direkte fra pluginen. Vil brukeren endre dem, kopierer du fila til arbeidsmappa først.

Vær særlig oppmerksom på:

  • Kapasitet er det leddet avgjør per måned nå. Kapasitet som er bevilget, men ikke virker ennå, skal ikke med; si at den trekkes fra behovet etterpå.
  • Avgjorte saker som kapasitet. Er kapasiteten hentet fra avgjorte saker, og noen av dem ble avsluttet uten behandling, spør hvor mange. De oppgis som skjult avgang og trekkes fra av verktøyet, ikke av deg.
  • Mål. Er restansen bare en del av køen (for eksempel saker eldre enn tre måneder), passer et mål i antall saker bedre enn en saksbehandlingstid.

2. Vis tallene og få et ja

Vis en liten tabell før du regner:

Ledd Inn per mnd Kapasitet per mnd Restanse Mål Annet

Skriv under tabellen hva du har gjort med tallene, for eksempel «Årstallene er delt på 12» eller «Restansen er ikke delt, den er et antall saker». Spør: «Stemmer dette?» Regn ikke før brukeren har sagt ja.

3. Skriv inndatafila

Skriv tallene som en JSON-fil i brukerens arbeidsmappe, for eksempel rettsstat-tall.json. Formatet, feltnavnene og reglene står i ${CLAUDE_PLUGIN_ROOT}/docs/inndata.md; les den før du skriver fila første gang. Feltnavnene skrives nøyaktig som der, uten æ, ø og å: et feltnavn verktøyet ikke kjenner, i et ledd eller i styring, stopper regningen med en melding som foreslår det riktige. Skriv i merknad hvor tallene kommer fra og hva som er regnet om; merknad, kilde og kilder kan også stå i hvert ledd. Finnes fila fra før, spør før du overskriver den.

4. Kjør diagnosen

python3 "${CLAUDE_PLUGIN_ROOT}/modell/kjor.py" --data "${CLAUDE_PLUGIN_DATA}" diagnose <fil>
  • På Windows heter tolken python.
  • <fil> er hele stien til inndatafila.
  • Bruk pluginens modell, med mindre brukeren har valgt en egen versjon (se under).

En egen versjon av modellen. Har brukerens arbeidsmappe en mappe rettsstat-modell/ med modell/kjor.py inni, bruk den ikke uten å spørre: «Jeg ser en egen versjon av modellen i rettsstat-modell. Skal jeg bruke den, eller pluginens?» Velger brukeren den egne, kjør kontrollen på den først:

python3 "${CLAUDE_PLUGIN_ROOT}/modell/kjor.py" --data "${CLAUDE_PLUGIN_DATA}" --modell <hele stien til rettsstat-modell/modell> kontroll --rask

Si nivået til brukeren før du legger fram noe tall: linja som begynner med «Nivå» («bit for bit som notatet», «endret: …», eller uten numpy og scipy «ingen avvik i det som ble kjørt (…)», som da bare gjelder kjernen, fasiten og diagnosen). Kjør så diagnosen med --modell <hele stien til rettsstat-modell/modell> før diagnose. Er versjonen endret, si sammen med svaret at tallene kommer fra brukerens egen versjon av modellen, ikke fra notatets.

Exit-koder:

  • 0: diagnosen er regnet. Gå til trinn 5.
  • 2: feil i inndata. Gjengi meldingen fra skriptet med vanlige ord (den sier hvilket ledd og hvilket tall, eller hvilket feltnavn verktøyet ikke kjenner og hva det trolig skulle være), rett sammen med brukeren, vis den rettede tabellen og kjør på nytt. Slutter meldingen med «Uventet feil i …», er det en feil i koden, ikke i tallene: gjengi den og si at diagnosen ikke ble regnet.
  • Annen kode, eller python3 finnes ikke: gjengi meldingen som den er og si at diagnosen ikke ble regnet. Gjett ikke på et svar.

5. Presenter svaret

  1. Vis utskriften slik skriptet skrev den, i en kodeblokk, i samme rekkefølge. Ikke avrund, regn om eller formater tallene på nytt.

  2. Les den med vanlige ord, kort:

    • hvilket ledd som binder, og hva utnyttelsen betyr (over 1: det kommer inn flere saker enn leddet avgjør);
    • tiltakene i rekkefølgen skriptet gir: utnytt leddet først (tapt tid, ikke regnet), led saker utenom hvis det er oppgitt en andel, og utvid bare hvis det ikke rekker;
    • kapasitetsbehovet, og hva det bygger på (prognosen eller strømmen nå, restansen over målet avviklet over 24 måneder, 95 % utnyttelse som mål);
    • linjene om andre ledd: like ledd som ikke kan skilles, ledd som også er over full utnyttelse (skranken kan flytte seg dit), og ledd etter skranken, som bare viser det som slipper gjennom.
    • Står det «Ingen ledd binder», si det rett ut. Står det at restansen vokser uten at noe ledd er over full utnyttelse, be brukeren se på tallene for saker inn og kapasitet i de leddene.
  3. Forbehold som alltid tas med:

    • Utnyttelse, restanse og kapasitetsbehov er regnet fra brukerens tall. De faste verdiene i regningen (avvikling over 24 måneder, 95 % utnyttelse som mål) er valg i notatets regel, ikke målt.
    • «Saksbeh.tid» er restanse delt på kapasitet, ikke målt saksbehandlingstid.
    • Kapasitet som er bevilget, men ikke virker ennå, er ikke regnet med. Trekk den fra behovet.
    • Verktøyet erstatter ikke budsjettarbeidet og sier ingenting om enkeltsaker.

    Ta i tillegg med det som gjelder for dette svaret: like ledd, skjult avgang, og for de norske tallene forbeholdene i ${CLAUDE_PLUGIN_ROOT}/docs/forbehold.md (fengselstallene er anslag og følsomme for hva som regnes med; politiets og SSBs tall teller ikke det samme).

  4. Tilby neste steg: «Vil du se hva som skjer måned for måned hvis anbefalingen følges, og om styringen tåler sin egen forsinkelse?» Det er ferdigheten forlop, som bruker samme fil. Si at den trenger to vanlige regnebiblioteker for Python, og at du spør før noe installeres.

Spør brukeren «hva om …» (for eksempel en annen kapasitet eller en annen andel ledet utenom), lag en kopi av fila med det ene tallet endret, vis endringen, kjør på nytt og vis de to svarene ved siden av hverandre.