# Handoff — KNIEPUNKT Assistant

## What was built
A Python CLI assistant (`main.py`) for Dr. André Knie's weekly KNIEPUNKT editorial workflow.

Six steps: **research → source assessment → storyline → draft → quality → publication**

Multi-LLM support (Claude, ChatGPT, Gemini, Mistral) for storyline and draft steps.
All other steps use Claude only (web search + analytical tasks).

Read `SPEC.md` and `AGENTS.md` — they are the source of truth.

## Current git state
- **Branch:** `agent/build-kniepunkt-assistant-20260424-75734895`
- **Base:** `master`
- **Commit:** `e08c484` — initial build, all files committed and pushed
- **PR:** not yet opened — open at https://git.d-hive.de/ankn/Kniepunkt targeting `master`

## Remote access
SSH is broken (`gitssh.d-hive.de:80` is an HTTP reverse proxy; port 22 times out).
Use HTTPS only. Token is embedded in the remote URL — check with `git remote -v`.
If token expires: generate a new one at https://git.d-hive.de → Settings → Applications.

## How to run
```bash
export PATH="$HOME/.local/bin:$PATH"
# fill in .env with API keys first
uv run --env-file .env python main.py
```

## API keys (.env)
```
ANTHROPIC_API_KEY=    # required (also used for web search)
OPENAI_API_KEY=       # optional — enables ChatGPT in storyline/draft steps
GOOGLE_API_KEY=       # optional — enables Gemini
MISTRAL_API_KEY=      # optional — enables Mistral
```
Providers with missing or failing keys are silently skipped.

## Episode source material
34 existing KNIEPUNKT episodes in `KNIEPUNKTe/`.
First run builds `episodes_cache.json` (cached redundancy index) — this is gitignored and stays local.

## Sessions
Each weekly run saves state to `sessions/YYYY-MM-DD.json` (gitignored).
The final publication package is saved to `sessions/YYYY-MM-DD_publikation.md`.
Interrupted sessions can be resumed on next run.
