--- name: kandidatprofil description: "Leser, validerer og redigerer kandidatprofilen i arbeidsmappa, og eier den mekaniske sjekken mot build-brief 5.1. Utloeses av vis kandidatprofilen, vis profilen min, valider kandidatprofilen, oppdater lønnsgulvet, oppdater lonnsgulvet, sett opp arbeidsmappa, hvilken versjon kjører jobbsok og hvilken versjon kjorer jobbsok." triggers: - vis kandidatprofilen - vis profilen min - valider kandidatprofilen - oppdater lønnsgulvet - oppdater lonnsgulvet - sett opp arbeidsmappa - hvilken versjon kjører jobbsok - hvilken versjon kjorer jobbsok --- # kandidatprofil Eier `profil/kandidat.md` i arbeidsmappa. Frontmatter er absolutt og leses mekanisk; kroppen er prosa og leses med skjønn. Denne skillen validerer og foreslår — den skriver aldri i profilen uten at operatøren har sagt ja til akkurat den endringen. All operatørrettet tekst er norsk bokmål. ## Løs opp arbeidsmappa først Arbeidsmappa gjettes aldri. Løsningsrekkefølgen er `--workspace`, deretter miljøvariabelen `JOBBSOK_WORKSPACE`, deretter en `workspace:`-linje i `jobbsok.conf` under plugin-datamappa. Svarer ingen av de tre, si det og be om stien. Ikke anta en hjemmekatalog. Finnes ikke mappa ennå, kall `scaffold(root)` fra `${CLAUDE_PLUGIN_ROOT}/scripts/jobbsok_lib/paths.py` og rapporter nøyaktig hvilke kataloger og filer kallet opprettet. Kallet er idempotent, så en tom liste betyr at alt allerede var på plass — si det, ikke påstå at noe ble laget. `beslutninger.jsonl` blir aldri tømt av et scaffold. ## Valider Kjør den mekaniske sjekken: ``` python3 ${CLAUDE_PLUGIN_ROOT}/scripts/kandidat_schema.py ``` Bruk `validate_file(root, "profil", "kandidat.md")` når du kaller den som modul. Rapporten er JSON med feltene `gyldig`, `feil`, `advarsler`, `seksjoner`, `senioritet`, `ansettelsesform`, `absolutte_nei`, `arbeidssteder`, `vekter_kilde` og `vekter`. Les rapporten slik: - **`feil`** er brudd på build-brief 5.1. Hvert element navngir nøkkelstien. Gjengi stien ordrett til operatøren; ikke omskriv den til prosa. - **`advarsler`** er ikke feil. En nøkkel utenfor 5.1 er operatørens egen, og profilen er fortsatt gyldig. Advarselen for `arbeidssteder` sier at vurderingen faktisk leser nøkkelen — skill den fra en advarsel om en nøkkel ingenting leser. - **`vekter_kilde`** er `default` når profilen ikke oppgir `vekter`. Det er en normal tilstand, ikke et avvik. - Malformert frontmatter er ingen rapport i det hele tatt: sjekken hever `FrontmatterError` med linjenummeret. Gjengi linjenummeret. Hele nøkkellista, seksjonsrekkefølgen, skilletegnkontrakten og standardvektene står i `${CLAUDE_PLUGIN_ROOT}/skills/kandidatprofil/references/schema.md`. Les den før du uttaler deg om hva som er påkrevd. ## Der fila og 5.1 er uenige, vinner fila Operatøren eier denne fila. Foreslå aldri å skrive den om for å passe kontrakten. Er strukturen ny og fornuftig, er det skjemaet som skal utvides — si fra om det, ikke rett i fila. Kroppen er skjønn. Et signaturprosjekt som sier *ikke målt* er en ærlig tilstand, ikke et hull som skal fylles med et estimat. Et breddepunkt kan være en disposisjon og ikke et fagfelt. ## Rediger bare som forslag Ved endringsønske: 1. Les fila og valider den først. 2. Vis diffen — gammel linje, ny linje, og hvorfor. 3. Vent på et eksplisitt ja. 4. Skriv, valider på nytt, og vis den nye rapporten. Hardfiltrene (`lonn.gulv_nok`, `geografi`, `absolutte_nei`) strammes aldri på eget initiativ. En serie avslag på lønn er like gjerne et tegn på markedet som på et feil gulv. ## Versjonsekko Ber operatøren om versjon, skriv ut begge deler: innholdet i `${CLAUDE_PLUGIN_ROOT}/BUILD_STAMP` og `version` fra plugin-manifestet `.claude-plugin/plugin.json`. Mangler stempelfila, si det rett ut i stedet for å oppgi bare manifestversjonen som om den var hele svaret. Fra M2 er det samme ekkoet også tilgjengelig fra `dagens`.