# 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
