feat(m2): add dagens text view with golden output

This commit is contained in:
Kjell Tore Guttormsen 2026-09-05 22:04:36 +02:00
commit bdb6291042
4 changed files with 578 additions and 0 deletions

86
skills/dagens/SKILL.md Normal file
View file

@ -0,0 +1,86 @@
---
name: dagens
description: "Viser dagens arbeidsbilde fra arbeidsmappa: hva som krever handling, hva som har gaatt stille, kommende frister og saker per tilstand. Skriver ingenting, og eier ogsaa versjonsekkoet paa forespoersel. Utloeses av vis dagens, hva skjer i dag, hva har gått stille, hva har gatt stille, hvilke frister kommer og vis byggestempelet."
triggers:
- vis dagens
- hva skjer i dag
- hva har gått stille
- hva har gatt stille
- hvilke frister kommer
- vis byggestempelet
---
# dagens
Operatørens daglige inngang. **Skriver ingenting** — ingen sak, ingen logg,
ingen hurtigbuffer. Visningen leses flere ganger om dagen mens arbeidsmappa er
i bruk, og en visning som oppdaterte noe underveis ville gjort lesing til
skriving.
All operatørrettet tekst er norsk bokmål.
## Kjør den
```
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/dagens.py \
--workspace <arbeidsmappa> --today <YYYY-MM-DD>
```
På Windows heter tolken `python`, ikke `python3`.
Datoen injiseres. Utelates `--today`, brukes dagens dato — men i alt som skal
kunne reproduseres, oppgi den. Utdata er ren tekst og er byte-stabil: samme
arbeidsmappe og samme dato gir samme bytes hver gang.
Regn aldri ut noe av dette selv. Alt kommer fra statusmaskinen, og en visning
som resonnerte seg fram til en tilstand ved siden av scriptet ville vært en
andre statusmaskin ingen har testet.
## De fire seksjonene
| Seksjon | Hva som står der |
|---|---|
| **Krever handling** | Ikke-terminale saker der ventende part er `meg` |
| **Gått stille** | Saker der en av de tre stillhetsreglene faktisk har slått til |
| **Kommende frister** | Frister som ennå ikke har passert, tidligst først |
| **Saker per tilstand** | Alle ni tilstandene, også de tomme |
**«Gått stille» er flagg, ikke fravær.** En sak havner der bare fordi
statusmaskinen har satt et flagg — aldri fordi det mangler en innkommende
hendelse. De to ser like ut og betyr det motsatte.
**To slags frister, og de er merket.** `stillhetsfrist` er datoen saken går
stille, utledet av maskinen. `søknadsfrist` er operatørens egen dato fra
saksfila, som ingen maskin kan regne ut på nytt. Gjengi merkingen — en
umerket dato ville fortalt operatøren at maskinen står inne for begge.
## «Ingen innkommende registrert»
Står den merknaden på en sak, gjengi den som den er. E-postserveren er utsatt
til M4, så ingenting leser innboksen ennå: fraværet er i loggen, ikke i verden.
Ikke oppsummer det til «ingen har svart».
## Står det NB øverst
Da er en saksfil uenig med sin egen logg. Visningen viser det loggen sier, og
retter ingenting. Si fra om avviket og foreslå
`${CLAUDE_PLUGIN_ROOT}/scripts/sak_status.py --oppdater` — la `sak` gjøre
selve rettingen.
## Versjonsekko — bare på forespørsel
Blir du spurt om hvilken versjon som kjører, skriv ut begge deler: innholdet i
`${CLAUDE_PLUGIN_ROOT}/BUILD_STAMP` og `version` fra plugin-manifestet
`.claude-plugin/plugin.json`. Samme form som `kandidatprofil` bruker. Mangler
stempelfila, si det rett ut i stedet for å oppgi manifestversjonen alene som om
den var hele svaret.
**Aldri i den daglige visningen.** Stempelet endrer seg ved hver commit, og et
stempel inni tekstutdataen ville gjort visningen ustabil fra commit til commit.
Ekkoet kommer fra skillen, ikke fra scriptet, og bare når noen spør.
## Uten verktøyserveren
Er `jobbsok-tools` ikke tilgjengelig, degraderer skillen i stedet for å stoppe:
be operatøren kjøre kommandoen over fra kommandolinja, og les teksten som ble
skrevet ut. Innholdet er det samme uansett hvilken vei det kom.