feat(graceful-handoff): initial plugin with /graceful-handoff command

New plugin that produces a complete session handoff in under 60s:
NEXT-SESSION artifact, commit+push, and copy-paste prompt for next
session. Built for context-constrained models like Opus 4.7 where
sessions fill fast.

- Single declarative command, no hooks/agents/skills
- Detects handoff type: multi-session / plugin-work / single-task
- Default filename NEXT-SESSION-PROMPT.local.md; slug-override
- Flags: --no-commit, --dry-run
- Auto-generated Conventional Commits message from git diff --stat
- Respects pre-commit hooks (secrets, pathguard) — never bypasses

Also: add *.local.md to root .gitignore (existing NEXT-SESSION files
were untracked but not ignored) and list plugin in marketplace
README + CLAUDE.md per docs-convention.
This commit is contained in:
Kjell Tore Guttormsen 2026-04-19 22:54:10 +02:00
commit b9269f853d
9 changed files with 676 additions and 0 deletions

1
.gitignore vendored
View file

@ -2,6 +2,7 @@
REMEMBER.md
TODO.md
ROADMAP.md
*.local.md
# Per-plugin session directories (plans, research, execution progress)
plugins/*/.claude/

View file

@ -8,6 +8,7 @@ Open-source Claude Code plugin marketplace. Solo project by Kjell Tore Guttormse
plugins/
ai-psychosis/ v1.0.0 — Interaction awareness (sycophancy, reinforcement loops)
config-audit/ v3.1.0 — Configuration intelligence (health, opportunities, auto-fix, whats-active)
graceful-handoff/ v1.0.0 — Session handoff in <60s (NEXT-SESSION artifact + commit+push + copy-paste prompt)
linkedin-thought-leadership/ v1.2.0 — LinkedIn content pipeline + analytics
llm-security/ v6.0.0 — Security scanning, auditing, threat modeling
ms-ai-architect/ v1.8.0 — Microsoft AI architecture (Cosmo Skyberg persona)

View file

@ -119,6 +119,26 @@ Research-informed thresholds. Alerts are progressive and never blocking. Privacy
---
### [Graceful Handoff](plugins/graceful-handoff/) `v1.0.0`
Session handoff in under 60 seconds. Built for context-constrained models like Opus 4.7 where sessions fill fast.
When you hit 60-70% context and have to start a new session, three things usually get rushed or forgotten: summarizing state, committing finished work, and writing a continuation prompt. `/graceful-handoff` does all three in one step.
- **Auto-detect handoff type** — multi-session (active ultraplan project), plugin-work (inside a marketplace plugin), or single-task (fallback)
- **Writes `NEXT-SESSION-PROMPT.local.md`** — 7-section artifact (why, status, how to continue, push-policy, verification, gotchas) matching the established pattern in llm-security and config-audit
- **Auto-commit + push** — generates Conventional Commits message from `git diff --stat`, respects pre-commit hooks (secrets, pathguard), pushes to Forgejo. `--no-commit` skips
- **Copy-paste prompt for next session** — the critical output, always printed even if everything else fails
- **No subagents, no web** — entirely inline in the main session, under 60 seconds budget
Key command: `/graceful-handoff [topic-slug] [--no-commit] [--dry-run]`
1 command · 0 hooks · 0 agents · declarative markdown
→ [Full documentation](plugins/graceful-handoff/README.md)
---
### [MS AI Architect — Azure AI and Microsoft Foundry](plugins/ms-ai-architect/) `v1.8.0` `🇳🇴 Norwegian`
Microsoft AI solution architecture guidance for Norwegian public sector and enterprise.

View file

@ -0,0 +1,19 @@
{
"name": "graceful-handoff",
"version": "1.0.0",
"description": "Produce session-handoff artifacts, commit and push pending work, and print a copy-paste prompt for the next session. Designed for context-constrained models like Opus 4.7 where sessions fill fast.",
"author": {
"name": "Kjell Tore Guttormsen"
},
"auto_discover": true,
"license": "MIT",
"repository": "https://git.fromaitochitta.com/open/ktg-plugin-marketplace",
"keywords": [
"session",
"handoff",
"context-management",
"opus-4.7",
"git",
"workflow"
]
}

View file

@ -0,0 +1,24 @@
# Changelog
All notable changes to graceful-handoff are documented here.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [1.0.0] - 2026-04-19
### Added
- Initial release with single command `/graceful-handoff`
- 6-fase deklarativ workflow: detect → classify → write artifact → update REMEMBER/TODO → commit+push → print copy-paste-prompt
- Tre handoff-typer: `multi-sesjon` (ultraplan-prosjekt), `plugin-arbeid` (marketplace-plugin), `enkelt-oppgave` (fallback)
- Default filnavn `NEXT-SESSION-PROMPT.local.md`; slug-override via første posisjons-argument
- Flag: `--no-commit` (skip git), `--dry-run` (ingen skriving, ingen git-ops)
- Auto-generert Conventional Commits-melding fra `git diff --stat`
- Respekterer pre-commit hooks (secrets, pathguard) — bypasser aldri
- Tidsbudsjett < 60 sekunder; ingen Agent-delegering, ingen WebSearch
- 7-seksjons-template for NEXT-SESSION-artefakt (matcher eksisterende konvensjon i llm-security/config-audit)
### Notes
- Auto-discover plugin — `marketplace.json`-oppføring ikke nødvendig
- MIT-lisens

View file

@ -0,0 +1,40 @@
# graceful-handoff
Én kommando (`/graceful-handoff`) som produserer en komplett sesjonsoverlevering i ett steg: NEXT-SESSION-artefakt, commit+push, og copy-paste-prompt for neste sesjon.
## Når brukes den
Når du nærmer deg kontekst-trøskelen (typisk 60-70% på Opus 4.7) og må starte en ny sesjon. Kommandoen tar jobben med å oppsummere state og pushe ferdig arbeid fra minutter ned til sekunder.
## Hva den skriver
| Fil | Når |
|-----|-----|
| `NEXT-SESSION-PROMPT.local.md` (eller `NEXT-SESSION-<slug>.local.md`) | Alltid — hovedartefakt med 7 seksjoner (Hvorfor / Status / Fortsett / Push-policy / Verifisering / Husk) |
| `REMEMBER.md` | Hvis den finnes — oppdaterer "Sist oppdatert" og PÅGÅENDE-seksjon |
| `TODO.md` | Hvis den finnes — flytter ferdige items, legger til neste-økt-items |
| Commit + push | Hvis ucommittede endringer finnes OG `--no-commit` ikke er gitt |
Alle handoff-filer er `*.local.md`-mønster → gitignored, ikke sporet i git.
## Arkitektur
Helt deklarativ — ingen hooks, ingen agents, ingen subprocess. Main-sesjonen utfører alle seks faser inline med Bash + Read/Write/Edit:
1. Detekter arbeidsmappe og prosjekt (pwd, git, find)
2. Identifiser handoff-type (multi-sesjon / plugin-arbeid / enkelt-oppgave)
3. Skriv NEXT-SESSION-artefakt til riktig lokasjon
4. Oppdater REMEMBER.md og TODO.md
5. Commit + push med Conventional Commits-melding (auto-generert)
6. Print copy-paste-prompt til terminal
## Tidsbudsjett
< 60 sekunder totalt. Ingen Agent-delegering, ingen WebSearch. Hvis den drar ut: bruker er allerede på kontekst-trøskelen og trenger output raskt.
## Begrensninger (v1.0.0)
- Ingen auto-invokasjon ved kontekst-terskel — bruker triggrer manuelt
- Ingen backup av eksisterende NEXT-SESSION-filer (overskrives, men merger fra innhold)
- Ingen integrasjon mot ultraplan-local progress.json (lesing, ikke skriving)
- Commit-meldingen er auto-generert uten bekreftelse — bruk `--no-commit` hvis du vil håndtere commit manuelt

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Kjell Tore Guttormsen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -0,0 +1,221 @@
# graceful-handoff
> Sesjonsoverlevering på under 60 sekunder. Designet for Opus 4.7-sesjoner som fyller kontekst raskt.
**Problemet:** Opus 4.7 fyller kontekstvinduet mye raskere enn 4.6 — ofte innen ~5 minutter for reelt arbeid. Når du er på 60-70% og må starte ny sesjon, er det tre manuelle steg som blir hastverk eller glemt:
1. Oppsummere hvor arbeidet står (commits, lokale endringer, hva som er testet)
2. Commite og pushe ferdig arbeid (ellers tapes det)
3. Skrive en copy-paste-prompt som lar neste sesjon fortsette uten tap
`/graceful-handoff` gjør alle tre, automatisk, i ett steg.
## Installasjon
```bash
claude plugin marketplace add https://git.fromaitochitta.com/open/ktg-plugin-marketplace.git
# Deretter /plugin install graceful-handoff
```
## Bruk
Minimum:
```
/graceful-handoff
```
Med slug (hvis du har flere handoffs i samme mappe):
```
/graceful-handoff refactor-auth
```
Uten auto-commit:
```
/graceful-handoff --no-commit
```
Dry-run (se hva som ville skjedd):
```
/graceful-handoff --dry-run
```
## Hvordan den fungerer
Kommandoen utfører 6 faser inline i main-sesjonen (ingen Agent-delegering, ingen WebSearch — alt må skje raskt):
### 1. Detekter arbeidsmappe
```bash
pwd
git status --porcelain
git log --oneline -10
# Let oppover etter .claude-plugin/plugin.json
# Let etter .claude/projects/*/brief.md + progress.json
```
### 2. Identifiser handoff-type
| Type | Når |
|------|-----|
| `multi-sesjon` | Aktivt ultraplan-prosjekt finnes (progress.json status ≠ "completed") |
| `plugin-arbeid` | Inne i en marketplace-plugin (`.claude-plugin/plugin.json` finnes oppover i tre) |
| `enkelt-oppgave` | Ingen av over |
### 3. Skriv NEXT-SESSION-artefakt
Standardfilnavn: `NEXT-SESSION-PROMPT.local.md`. Med slug: `NEXT-SESSION-<slug>.local.md`.
Lokasjon:
- `multi-sesjon` → i prosjektmappen
- `plugin-arbeid` → i plugin-root
- `enkelt-oppgave` → i cwd
Innhold (7 seksjoner — samme struktur som `NEXT-SESSION-PROMPT.local.md` i llm-security/config-audit):
```markdown
# NEXT-SESSION-PROMPT — <tittel>
## Hvorfor dette eksisterer
...
## Status ved sesjonshåndoff
### ✅ Ferdig
### ⏳ Ikke startet / delvis
### ⚠️ Brutt / kjent risiko
## Slik fortsetter du
...
## Push-policy
...
## Verifiseringskommandoer
...
## Husk
...
```
### 4. Oppdater REMEMBER.md og TODO.md
Kun hvis filene finnes (opprettes ikke i random mapper). Flytter ferdige items, oppdaterer datoer.
### 5. Commit + push
Skip hvis `--no-commit`, `--dry-run`, eller `git status --porcelain` er tom.
Auto-genererer Conventional Commits-melding basert på endrede filer:
| Filmønster | Type |
|------------|------|
| `tests/**` | `test` |
| `*.md`, `README`, `CHANGELOG` | `docs` |
| Ny funksjon i `hooks/`, `scanners/` | `feat` |
| Bugfix | `fix` |
| Config, lockfile | `chore` |
Scope: plugin-navn hvis alle endringer er i én plugin.
Viser meldingen til bruker før commit. Pusher til `origin <current-branch>`.
Pre-commit hooks (secrets, pathguard) respekteres — hvis de blokkerer, stopper kommandoen og rapporterer uten bypass.
### 6. Print copy-paste-prompt
Kompakt blokk til terminal som bruker kopierer direkte til ny Claude-sesjon:
```
═════════════════════════════════════════════
NESTE SESJON — copy-paste til ny Claude:
═════════════════════════════════════════════
cd /Users/.../plugins/llm-security
cat NEXT-SESSION-PROMPT.local.md
git log --oneline -5
git status
Fortsett fra Commit 2 (entropy-scanner kontekst-suppression).
═════════════════════════════════════════════
```
## Argumenter
| Argument | Beskrivelse |
|----------|-------------|
| `[topic-slug]` | Kebab-case slug. Med slug: `NEXT-SESSION-<slug>.local.md`. Uten: `NEXT-SESSION-PROMPT.local.md` |
| `--no-commit` | Hopp over commit+push. Bruker håndterer commit manuelt |
| `--dry-run` | Ingen filer skrives, ingen git-operasjoner. Print kun hva som ville skjedd |
## Eksempler
**Plugin-arbeid:**
```
cd plugins/llm-security
# ... arbeid ...
/graceful-handoff
# → skriver plugins/llm-security/NEXT-SESSION-PROMPT.local.md
# → oppdaterer plugins/llm-security/REMEMBER.md + TODO.md
# → committer + pusher
# → printer copy-paste-prompt
```
**Multi-sesjon (ultraplan-prosjekt):**
```
cd prosjekt-med-.claude/projects/2026-04-18-foo/
/graceful-handoff
# → skriver .claude/projects/2026-04-18-foo/NEXT-SESSION-PROMPT.local.md
# → (REMEMBER/TODO kun hvis de finnes i prosjektmappen)
# → committer + pusher
```
**Flere parallelle handoffs:**
```
/graceful-handoff api-migration
/graceful-handoff token-refresh
# → to filer: NEXT-SESSION-api-migration.local.md + NEXT-SESSION-token-refresh.local.md
```
**Bare artefakt, ingen git:**
```
/graceful-handoff --no-commit
# → skriver artefakt + REMEMBER/TODO
# → git status viser fortsatt uncommittede endringer
```
**Forhåndssjekk:**
```
/graceful-handoff --dry-run
# → printer planlagt artefakt, foreslått commit-melding, copy-paste-prompt
# → skriver ingenting, gjør ingen git-operasjoner
```
## Tidsbudsjett
< 60 sekunder totalt. Hvis den drar ut: lag en minimal handoff med det du har, og noter det som ufullstendig. Aldri Agent-delegering eller WebSearch — main-sesjonen er raskere.
## Begrensninger (v1.0.0)
- Ingen auto-invokasjon ved kontekst-terskel — bruker triggrer manuelt. Vurderes i v1.1
- Commit-meldingen er auto-generert uten Y/n-bekreftelse. Hvis kvalitet blir et problem: rapporter, vurderer "vis og bekreft" i v1.1
- Overskriver eksisterende NEXT-SESSION-fil (merger fra innhold, men ikke fra diff). Sikkerhetskopi-mønster vurderes
- Ingen integrasjon mot `.claude/projects/*/progress.json` utover lesing
## Sikkerhet
- Respekterer alle pre-commit hooks (secrets-scanning, pathguard). Bypasser ALDRI
- Filer er `*.local.md` → matches av `*.local.md` i global/prosjekt-gitignore
- Ingen nettverks-kall, ingen eksterne avhengigheter
- Krever kun `allowed-tools: Read, Write, Edit, Bash, Glob`
## Lisens
MIT

View file

@ -0,0 +1,329 @@
---
name: graceful-handoff
description: Produser handoff-artefakt, commit+push, og copy-paste-prompt for neste sesjon. Bruk når du nærmer deg 60-70% kontekst og må fortsette arbeidet i en ny sesjon uten tap.
argument-hint: "[topic-slug] [--no-commit] [--dry-run]"
allowed-tools: Read, Write, Edit, Bash, Glob
---
# Graceful Handoff — sesjonsoverlevering
Produser en komplett handoff-pakke i ett steg: analyser state, skriv NEXT-SESSION-artefakt, oppdater REMEMBER/TODO, commit+push hvis mulig, og print en copy-paste-prompt for neste sesjon.
**Tidsbudsjett:** Hele kjøringen (fase 1-6) skal ligge under 60 sekunder reell tid. Bruker er typisk på 60-70% kontekst når de trigger dette — ikke bruk Agent-delegering eller WebSearch.
## Argumenter
| Argument | Effekt |
|----------|--------|
| `[topic-slug]` | Kebab-case slug som styrer filnavnet. Default: `NEXT-SESSION-PROMPT.local.md`. Med slug: `NEXT-SESSION-<slug>.local.md` |
| `--no-commit` | Hopp over fase 5 (commit+push). Bruker håndterer commit manuelt |
| `--dry-run` | Ikke skriv filer eller gjør git-operasjoner. Print kun hva som ville skjedd |
Parse argumenter fra `$ARGUMENTS` (kombinert streng). Støtt flag i vilkårlig rekkefølge. Første ikke-flag-token er slug.
---
## Fase 1 — Detekter arbeidsmappe og aktivt prosjekt
Kjør i parallell (én Bash-melding med flere tool calls):
```bash
pwd
git rev-parse --show-toplevel 2>/dev/null
git status --porcelain
git log --oneline -10
git branch --show-current
```
Let oppover i tre etter plugin-markør (maks 5 nivåer):
```bash
# Fra cwd og oppover, stopp på første treff
cur="$(pwd)"
for i in 1 2 3 4 5; do
if [ -f "$cur/.claude-plugin/plugin.json" ]; then
echo "PLUGIN_ROOT=$cur"
break
fi
cur="$(dirname "$cur")"
[ "$cur" = "/" ] && break
done
```
Finn ultraplan-prosjekt (nyeste først):
```bash
find . -maxdepth 4 -path '*/.claude/projects/*/brief.md' 2>/dev/null | sort -r | head -3
find . -maxdepth 4 -path '*/.claude/projects/*/progress.json' 2>/dev/null | sort -r | head -3
```
For hver progress.json-treff: kjør `jq -r '.status' <file>` for å se om prosjektet er aktivt.
## Fase 2 — Identifiser handoff-type
Prioritet: **multi-sesjon > plugin-arbeid > enkelt-oppgave**
| Type | Betingelse |
|------|------------|
| `multi-sesjon` | Finnes `.claude/projects/<NN>/progress.json` med `status != "completed"` OG `status != null`. Eller: finnes `.claude/projects/<NN>/plan.md` uten progress.json |
| `plugin-arbeid` | Fase 1 fant `PLUGIN_ROOT` OG ingen aktiv multi-sesjon |
| `enkelt-oppgave` | Ingen av over |
Lagre i intern state: `HANDOFF_TYPE`, `PROJECT_DIR` (hvis multi-sesjon), `PLUGIN_ROOT` (hvis plugin-arbeid), `WRITE_DIR` (hvor artefakten skal skrives).
Write-dir-logikk:
- `multi-sesjon``WRITE_DIR = <PROJECT_DIR>`
- `plugin-arbeid``WRITE_DIR = <PLUGIN_ROOT>`
- `enkelt-oppgave``WRITE_DIR = $(pwd)`
Rapporter til bruker i en kort linje:
```
Handoff-type: plugin-arbeid (llm-security). Skriver til /Users/ktg/.../plugins/llm-security/
```
Hvis overlapp eksisterer (f.eks. plugin-arbeid innenfor et aktivt ultraplan-prosjekt): rapporter begge, men velg multi-sesjon som primær.
## Fase 3 — Skriv/oppdater NEXT-SESSION-artefakt
Filnavn:
- Hvis `[topic-slug]` gitt: `NEXT-SESSION-<slug>.local.md`
- Ellers: `NEXT-SESSION-PROMPT.local.md`
Full sti: `<WRITE_DIR>/<filename>`.
**Hvis filen finnes**: les den først, bevar "Hvorfor dette eksisterer"-seksjonen hvis den er relevant, oppdater status-seksjoner med dagens dato og aktuell state.
**Template** (samme 7-seksjons-struktur som llm-security/config-audit bruker):
```markdown
# NEXT-SESSION-PROMPT — <plugin-eller-prosjekt-navn> <kort-tittel>
## Hvorfor dette eksisterer
<1-3 setninger om hva bruker jobber med og hvorfor denne sesjonen stoppet. Hent fra: siste commits, brief.md hvis multi-sesjon, git diff, samtale-kontekst. Vær konkret — ingen fluff.>
## Status ved sesjonshåndoff
### ✅ Ferdig
<List commits fra denne sesjonen med SHA + hva hver gjorde. Eks:
- `a9fb328` fix(config-audit): complete conflict-project fixture
- `94ce701` test(config-audit): add Opus 4.7 pattern fixtures
Hvis ingen commits: skriv "Ingen nye commits i denne sesjonen".>
### ⏳ Ikke startet / delvis
<Konkrete neste steg. Nevn filnavn og linjenummer hvis du vet dem. Eks:
- Commit 2: Kontekst-bevisst entropy — scanners/entropy-scanner.mjs:40-47, 90-137
- Commit 3: Policy-integrasjon
Hvis det finnes en plan-fil: peker til den.>
### ⚠️ Brutt / kjent risiko
<Tester som feiler, uncommittede endringer, antakelser som ikke er verifisert. Eks:
- 25/80 tester feiler i tests/lib/severity.test.mjs (forventet — tester gammel formel)
- Commit 1 er lokal, ikke pushet
Hvis ingenting er brutt: skriv "Ingen kjente broken tester".>
## Slik fortsetter du
1. `cd <absolute-path-til-WRITE_DIR>`
2. `cat <filename>` — les denne filen igjen
3. `git log --oneline -5` og `git status`
<4. (hvis multi-sesjon) Les planen: `cat .claude/projects/<slug>/plan.md`>
<5. Start med: <konkret neste handling>>
## Push-policy
- Direkte push til `main` på Forgejo er pre-autorisert (ikke spør om tillatelse)
- Aldri GitHub — kun Forgejo (`git.fromaitochitta.com`)
<evt. prosjekt- eller plugin-spesifikke regler, f.eks. versjonsbump-timing>
## Verifiseringskommandoer
```bash
<Copy-paste-klare sjekker som beviser state. Eks:
git log --oneline -5 # forventet: <siste commit SHA>
git status # forventet: clean (eller <N> uncommittede)
node --test tests/ # forventet: alle grønne
>
```
## Husk
- <Gotchas og antakelser som ikke er åpenbare fra koden. Eks:
- Hooks (pre-edit-secrets, pre-write-pathguard) blokkerer writes til .claude-plugin/
- Versjonsbump krever sync i 7+ filer — bruk grep-mønster
- Opus 4.7 fyller kontekst raskt — kjør /graceful-handoff ved 60-70%>
```
**Innholdsregler:**
- Ikke fyll inn plassholdere med placeholder-tekst. Les faktisk git-state, samtalekontekst, og evt. brief.md/plan.md for å fylle inn ekte info.
- Hvis en seksjon er irrelevant (f.eks. ingen push-policy avvik): skriv én setning som sier det, ikke utelat seksjonen (strukturen må være konsistent).
- Tone: nøktern, norsk, teknisk. Ingen "gøy å jobbe med deg" eller "vi har kommet langt". Hvis brukeren var sint eller frustrert: nevn det kort i "Husk" slik at neste sesjon ikke trår i samme fellen.
Hvis `--dry-run`: print artefakten til stdout i stedet for å skrive.
## Fase 4 — Oppdater REMEMBER.md og TODO.md
**Lokasjon:**
- `plugin-arbeid``<PLUGIN_ROOT>/REMEMBER.md` og `<PLUGIN_ROOT>/TODO.md`
- `multi-sesjon``<PROJECT_DIR>/REMEMBER.md` og `<PROJECT_DIR>/TODO.md` (hvis de finnes; ellers skip — ultraplan-prosjekter har ikke alltid disse)
- `enkelt-oppgave``$(pwd)/REMEMBER.md` og `$(pwd)/TODO.md` (kun hvis de allerede finnes; ikke opprett nye i random mapper)
**REMEMBER.md-oppdatering:**
Hvis filen finnes — les, oppdater:
- Øverst: `## Sist oppdatert\n<YYYY-MM-DD>` (absolutt dato, ikke "i dag")
- "PÅGÅENDE"-seksjon (eller lag den): plan-sti hvis relevant, 3-5 status-bullets (✅ ferdig, ⏳ pågående, ⚠️ blokkert)
- Flytt tidligere "PÅGÅENDE" til "TIDLIGERE" med datostempel hvis den peker på annet arbeid
Hvis filen ikke finnes og type er `plugin-arbeid`: opprett minimal REMEMBER.md med dagens dato og én PÅGÅENDE-bullet. Ellers skip.
**TODO.md-oppdatering:**
Hvis filen finnes — les, oppdater:
- Flytt items som ble gjort denne sesjonen til en "✅ Ferdig denne sesjonen (YYYY-MM-DD)"-seksjon øverst
- Legg til items for neste sesjon under "⏳ Neste"
- Ikke slett — kommenter ut eller flytt
Hvis filen ikke finnes: skip (ikke push onboarding i en handoff).
**Gitignore-verifisering:** Etter skriving, kjør `git check-ignore -v <path>` for hver fil. Hvis filen IKKE er ignorert: rapporter til bruker som advarsel (ikke blokker, men bruker må vite).
Hvis `--dry-run`: print diff i stedet for å skrive.
## Fase 5 — Commit + push hvis ucommittet arbeid finnes
Skip hele fasen hvis `--no-commit` eller `--dry-run`.
Skip hvis `git status --porcelain` er tom (ingenting å commite).
**Steg 5a — Klassifiser endringer:**
```bash
git diff --stat
git diff --cached --stat
git status --porcelain
```
Kategoriser endrede filer for å utlede commit-type:
| Filmønster | Type |
|------------|------|
| `tests/**`, `**/*.test.*` | `test` |
| `*.md`, `README`, `CHANGELOG`, `CLAUDE.md` (kun docs-endring) | `docs` |
| `plugins/<name>/hooks/**`, `plugins/<name>/scanners/**` (ny funksjon) | `feat` |
| Samme mønster, men fikser eksisterende atferd | `fix` |
| `package.json`, config, lockfile kun | `chore` |
| Blandet | Bruk dominerende kategori; hvis uklart, `chore` |
Scope: plugin-navn hvis `plugin-arbeid` eller hvis alle endringer er i én plugin. Ellers ingen scope.
**Steg 5b — Generer commit-melding:**
Format: `<type>(<scope>): <kort beskrivelse>` (Conventional Commits).
Krav:
- Første linje ≤ 72 tegn
- Beskrivelse på norsk eller engelsk (match eksisterende commits i repoet — sjekk `git log --oneline -10`)
- Beskriv **hva** som endres, ikke hvorfor (hvorfor hører hjemme i body hvis nødvendig)
- Hvis flere uavhengige endringer: vurder om de skal splittes i to commits. Hvis bruker er i hastverk (kontekst-trøskel): ett commit med samlet beskrivelse er akseptabelt, men noter at det er samlet i body.
Eksempler (match stil fra eksisterende repo):
- `test(config-audit): add Opus 4.7 pattern fixtures`
- `fix(llm-security): complete conflict-project fixture for CNF cross-scope tests`
- `feat(graceful-handoff): initial plugin with /graceful-handoff command`
Body (valgfri, bruk hvis commit dekker flere endringer):
```
- Endring 1
- Endring 2
Samlet som ett commit pga. graceful-handoff-flyt.
```
**Steg 5c — Vis meldingen og commit:**
Print den genererte meldingen ordrett til bruker FØR commit:
```
Commit-melding:
---
feat(graceful-handoff): initial plugin with /graceful-handoff command
---
```
Deretter:
```bash
git add -A # eller eksplisitt filvalg hvis endringene spenner flere uavhengige områder
git commit -m "$(cat <<'EOF'
<meldingen>
EOF
)"
```
Hvis commit feiler pga. pre-commit hook (secrets, pathguard, osv.): STOPP, rapporter feilmeldingen, **ikke** bypass med `--no-verify`. Be bruker håndtere manuelt.
**Steg 5d — Push:**
```bash
BRANCH="$(git branch --show-current)"
if [ -n "$BRANCH" ]; then
git push origin "$BRANCH"
else
git push origin HEAD
fi
```
Bekreft push med `git rev-parse @{u}` (at upstream er satt) eller hent siste output fra push-kommandoen.
Hvis push feiler: rapporter, men ikke force-push. Bruker kan håndtere manuelt.
## Fase 6 — Print copy-paste-prompt for neste sesjon
Print en kompakt prompt til terminal som bruker kan kopiere direkte inn i ny Claude Code-sesjon:
```
════════════════════════════════════════════════════════════
NESTE SESJON — copy-paste til ny Claude:
════════════════════════════════════════════════════════════
cd <absolute-WRITE_DIR>
cat <NEXT-SESSION-filnavn>
git log --oneline -5
git status
Fortsett fra <konkret neste handling - én setning>.
════════════════════════════════════════════════════════════
Artefakt: <full sti til NEXT-SESSION-filen>
Commit: <siste SHA eller "ingen endringer">
Push: <"pushet til Forgejo" eller "skippet (flag / ingenting)">
════════════════════════════════════════════════════════════
```
Dette er den KRITISKE output-en — hvis alt annet feiler, må minst denne blokken nå bruker slik at de kan fortsette. Bruk én final assistant-tekst-melding til å printe dette.
---
## Tidsbudsjett og escalation
- Hele kommandoen: < 60 sekunder
- Hvis du oppdager at du trenger å lese >5 filer eller kjøre >3 Agent-delegeringer: stopp, skriv en minimal handoff med det du har, og noter i "Brutt/risiko" at handoff var ufullstendig.
- **Aldri Agent-delegering i denne kommandoen** — main-sesjonen er raskere enn å spinne opp en subagent for noe mekanisk som dette.
- **Aldri WebSearch** — ingen ekstern info trengs.
## Fallback hvis state er helt uklart
Hvis fase 1-2 ikke kan identifisere noen av de tre handoff-typene (f.eks. cwd er utenfor git, ingen plugin-markør, ingen ultraplan-prosjekt):
1. Sett `HANDOFF_TYPE = enkelt-oppgave`
2. `WRITE_DIR = $(pwd)`
3. Varsle bruker: "Kunne ikke detektere handoff-type. Skriver til cwd."
4. Fortsett som vanlig — prompten er fremdeles nyttig