ktg-plugin-marketplace/plugins/graceful-handoff/skills/graceful-handoff/SKILL.md
Kjell Tore Guttormsen 1a65d8e4d5 feat(graceful-handoff): 2.0 — migrate to skills/ with disable-model-invocation [skip-docs]
Step 1 of v2.0 plan. Hard cut from commands/ to skills/ per Anthropic
recommendation for new plugins. Frontmatter sets disable-model-invocation:
true and pins model: claude-sonnet-4-6. Docs (README, CLAUDE.md, root
README) deferred to Step 9 per plan.
2026-05-01 05:45:26 +02:00

5 KiB

name description argument-hint disable-model-invocation model allowed-tools
graceful-handoff 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. [topic-slug] [--no-commit] [--dry-run] true claude-sonnet-4-6 Bash(git:*) Bash(jq:*) Bash(node:*) Bash(find:*) Bash(pwd:*) Read Write Glob

Graceful Handoff — sesjonsoverlevering v2.0

Orkestrerer JSON-pipeline-skriptet og fyller copy-paste-template-en for neste sesjon. Selve pipelinen (state-deteksjon, classification, fil-skriving, commit, push) er deterministisk og lever i scripts/handoff-pipeline.mjs. Denne skill-en er en tynn wrapper.

Tidsbudsjett: Hele kjøringen skal ligge under 60 sekunder reell tid. Bruker er typisk på 60-70% kontekst når de trigger dette — ingen Agent-delegering, ingen WebSearch.

Hvordan kjøres

  1. Parse $ARGUMENTS (kombinert streng). Støtt flag i vilkårlig rekkefølge.

    • [topic-slug] — kebab-case, styrer filnavnet
    • --no-commit — hopp over commit/push, bruker håndterer manuelt
    • --dry-run — print hva som ville skjedd, ingen filer/git
    • --no-push — commit OK men ikke push (Stop hook bruker dette i auto-eksekvering)
    • --auto — non-interactive, auto-Y på commit-bekreftelse (kun for hooks)
    • --non-interactive — uten --auto: feil; med --auto: kjør uten prompts
  2. Kjør pipeline-skriptet:

    node ${CLAUDE_PLUGIN_ROOT}/scripts/handoff-pipeline.mjs <args>
    
  3. Parse JSON-output fra stdout. Forventet schema:

    {
      "handoff_type": "multi-sesjon | plugin-arbeid | enkelt-oppgave",
      "write_dir": "/abs/path",
      "artifact_path": "/abs/path/NEXT-SESSION-...",
      "next_steps": ["..."],
      "git_status": { "branch": "...", "dirty": true, "ahead": 2 },
      "commit_message": "...",
      "actions_taken": ["wrote artifact", "committed", "pushed"],
      "errors": []
    }
    
  4. Hvis errors[] non-empty: rapporter feilene til bruker, ikke fortsett. Foreslå manuelle skritt fra next_steps.

  5. Hvis interaktiv (default): Skriptet skriver commit-bekreftelses-prompten til stderr. Modellen leser stderr-output og presenterer Y/n-valget til bruker via AskUserQuestion. Send svaret tilbake til skriptet via stdin. (NB: I denne skill-konteksten kan modellen også vise commit-meldingen direkte og spørre — fleksibelt.)

  6. Når ferdig: Print copy-paste-prompt fra next_steps JSON til bruker:

    ════════════════════════════════════════════════════════════
    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)">
    ════════════════════════════════════════════════════════════
    

Når brukes den

  • Manuelt: kjør /graceful-handoff selv ved 60-70% kontekst
  • Automatisk: Stop hook kaller handoff-pipeline.mjs --auto --no-push ved estimert ≥70%. Skill-en invokeres IKKE i auto-modus — hook-en kaller skriptet direkte for å bevare disable-model-invocation: true.

Hva blir skrevet

  • NEXT-SESSION-PROMPT.local.md (eller NEXT-SESSION-<slug>.local.md) i riktig WRITE_DIR
  • REMEMBER.md oppdatert hvis den finnes
  • TODO.md oppdatert hvis den finnes
  • Git commit + push (med mindre --no-commit eller --no-push)

Push-policy

  • Direkte push til main på Forgejo er pre-autorisert
  • Aldri GitHub — kun Forgejo (git.fromaitochitta.com)
  • Pre-commit hooks respekteres uten --no-verify

Begrensninger (v2.0)

  • Auto-eksekvering ved kontekst-terskel er approksimasjon basert på transcript-størrelse, ikke Claude's reelle kontekst-måling. Estimat kan avvike ±10% — terskel satt konservativt til 70%.
  • statusLine-plassering i hooks/hooks.json er antakelse; smoke-test før release.
  • disable-model-invocation: true har en åpen issue (#26251) som potensielt kan blokkere user-invocation. Verifiser med smoke-test.

Feilsøking

  • Pipeline-skriptet feiler: kjør med --dry-run for å se hva det ville gjort
  • Git-state uvanlig (detached HEAD, ingen remote): pipeline returnerer errors[], ikke crash
  • Stop hook trigger for tidlig/sent: terskel kan justeres i hooks/scripts/stop-context-monitor.mjs (look for 0.70)