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:
parent
f2080adf35
commit
b9269f853d
9 changed files with 676 additions and 0 deletions
221
plugins/graceful-handoff/README.md
Normal file
221
plugins/graceful-handoff/README.md
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue