CRA-Integration: CLAUDE.md Sektion + delegate-remote Skill

- CLAUDE.md: CRA-Sektion mit Architektur, Kommando-Referenz, Wann-vorschlagen-Tabelle
- Skills-Referenz um /delegate-remote erweitert
- Neuer Skill delegate-remote.md für geführte Remote-Delegation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
root
2026-01-29 09:13:08 +01:00
parent 1576f92205
commit 72a0a76f6a
3 changed files with 311 additions and 0 deletions

View File

@@ -655,3 +655,67 @@ Nutze parallele Agenten für umfangreiche Scans und rekursive Entdeckung.
| `/troubleshoot-host` | Strukturierter Troubleshooting-Workflow | | `/troubleshoot-host` | Strukturierter Troubleshooting-Workflow |
| `/session-end` | Session beenden, Commits erstellen | | `/session-end` | Session beenden, Commits erstellen |
| `/new-project` | Neues Projekt anlegen | | `/new-project` | Neues Projekt anlegen |
| `/delegate-remote` | Tasks an Remote-Server delegieren (CRA) |
---
## Claude Remote Agent (CRA) - Verteilte Task-Ausführung
**Repository:** `~/Nextcloud/egonetix/claude-remote-agent`
**CLI-Tool:** `cra`
**Zweck:** Delegiert Aufgaben an Remote-Server, die Claude Code CLI autonom ausführen - auch wenn der Laptop offline ist.
### Architektur
```
Laptop (Coordinator) ──SSH + JSON-RPC 2.0──> Server (claude-agent)
```
- **Coordinator:** Verwaltet Server, erstellt Tasks, sammelt Ergebnisse
- **Agent:** Empfängt Tasks, führt Claude Code CLI autonom aus, speichert Ergebnisse lokal
- **Persistenz:** SQLite auf beiden Seiten, Tasks überleben Verbindungsabbrüche
### Wann CRA vorschlagen
**Du SOLLST dem User CRA aktiv vorschlagen, wenn:**
| Szenario | Beispiel |
|----------|---------|
| **Lang laufende Tasks** | Codebase-Analyse, Refactorings, Log-Analyse |
| **Server-Wartung** | Updates, Cleanup, Security-Audits |
| **Multi-Server-Operationen** | Gleiche Aufgabe auf mehreren Servern parallel |
| **Offline-Delegation** | User will Laptop zuklappen, Tasks sollen weiterlaufen |
| **Unabhängige Teilaufgaben** | Aufgabe lässt sich in parallele Sub-Tasks aufteilen |
> "Diese Aufgabe eignet sich gut für CRA - soll ich sie an einen Remote-Server delegieren?"
### Kommando-Referenz
```bash
# Server verwalten
cra servers add <name> <host> [--user USER] [--port PORT] [--key PATH] [--tag TAG]
cra servers list [--all]
cra servers remove <name> [--yes]
cra servers status [name]
# Tasks
cra submit <server> "<prompt>" [--priority N] [--model MODEL] [--max-turns N]
cra status <server> [task_id]
cra cancel <server> <task_id>
# Ergebnisse
cra collect [server] [--task ID] [--since ISO-DATETIME] [--output FILE]
# Config synchronisieren
cra sync-config [server] [--no-claude-md] [--no-settings]
```
### MCP-Server Integration
Wenn der CRA MCP-Server konfiguriert ist, stehen CRA-Funktionen als native Tools zur Verfügung (`cra_submit`, `cra_status`, `cra_collect`, `cra_servers_list`, `cra_server_status`, `cra_sync_config`). Prüfe ob MCP-Tools verfügbar sind, bevor du auf CLI-Befehle zurückfällst.
### Wichtige Hinweise
- **Autonome Ausführung:** Server brauchen `~/.claude/settings.json` mit Tool-Permissions
- **Config-Sync:** Nach CLAUDE.md/settings.json Änderungen → `cra sync-config`
- **Retry:** Fehlgeschlagene Tasks werden automatisch wiederholt (max 3x)

View File

@@ -0,0 +1,167 @@
# Deployment-Plan: Jotty auf srvdocker02
## Zusammenfassung
**Dienst:** Jotty (Notiz-/Checklisten-App)
**Quelle:** https://github.com/fccview/jotty
**Domain:** coldstorage.egonetix.de
**Backend:** srvdocker02 (10.0.0.48:1122)
**Reverse Proxy:** srvrevproxy02 (10.0.0.29)
---
## Phase 1: Repo-Setup (lokal)
Verzeichnis: `/home/rwiegand/Nextcloud/egonetix/jotty`
1. `git init && git branch -M main`
2. README.md aus Template erstellen
3. Repo auf Gitea erstellen (Organisation: Egonetix)
4. `git remote add origin ssh://git@gitea.egonetix.de:222/Egonetix/jotty.git`
5. Initial commit + push
---
## Phase 2: Deployment-Dateien erstellen
### docker-compose.yml (in `/home/icke/jotty/`)
```yaml
services:
jotty:
image: ghcr.io/fccview/jotty:latest
container_name: jotty
user: "1000:1000"
ports:
- "1122:3000"
volumes:
- ./data:/app/data:rw
- ./config:/app/config:rw
- ./cache:/app/.next/cache:rw
restart: unless-stopped
environment:
- NODE_ENV=production
networks:
- jotty
networks:
jotty:
name: jotty_network
```
**Port 1122 ist frei** (bestätigt via Port-Scan)
---
## Phase 3: Deployment auf srvdocker02
```bash
# Verzeichnisse anlegen (alles unter /home/icke/jotty/)
mkdir -p /home/icke/jotty/{data,config,cache}
mkdir -p /home/icke/jotty/data/{users,checklists,notes,sharing,encryption}
# Berechtigungen
sudo chown -R 1000:1000 /home/icke/jotty/
# docker-compose.yml anlegen (direkt im Dienst-Ordner)
nano /home/icke/jotty/docker-compose.yml
# Starten
cd /home/icke/jotty && docker-compose up -d
```
---
## Phase 4: SSL-Zertifikat auf srvrevproxy02
**DNS:** User richtet `coldstorage.egonetix.de` bei INWX ein → 78.46.222.24 (oder aktuelle IP)
**Certbot-Befehl:**
```bash
/usr/bin/certbot certonly --rsa-key-size 4096 -d coldstorage.egonetix.de --standalone --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"
```
---
## Phase 5: Nginx-Config auf srvrevproxy02
**Datei:** `/etc/nginx/sites-available/coldstorage.conf`
```nginx
add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
server {
listen 80;
server_name coldstorage.egonetix.de;
return 301 https://$server_name$request_uri;
}
server {
listen 10.0.0.29:443 ssl http2;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
ssl on;
ssl_certificate /etc/letsencrypt/live/coldstorage.egonetix.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/coldstorage.egonetix.de/privkey.pem;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
server_name coldstorage.egonetix.de;
access_log /var/log/nginx/coldstorage-access_log;
error_log /var/log/nginx/coldstorage-error_log;
set $upstream 10.0.0.48;
location / {
proxy_pass http://$upstream:1122;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
```
**Aktivieren:**
```bash
ln -s /etc/nginx/sites-available/coldstorage.conf /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
```
---
## Phase 6: Dokumentation aktualisieren
| Datei | Aktion |
|-------|--------|
| `infrastructure/hosts/srvdocker02.md` | Jotty zu Container-Liste |
| `infrastructure/hosts/srvrevproxy02.md` | coldstorage.conf erwähnen |
| `infrastructure/netzwerk/domains.md` | coldstorage.egonetix.de hinzufügen |
---
## Verifikation
```bash
# Container läuft? (srvdocker02)
docker ps | grep jotty
docker logs jotty
# Lokal erreichbar? (srvdocker02)
curl http://localhost:1122
# Extern erreichbar? (nach DNS-Propagation)
curl -I https://coldstorage.egonetix.de
```
---
## Kritische Dateien
| Datei | Aktion |
|-------|--------|
| `/home/rwiegand/Nextcloud/egonetix/jotty/docker-compose.yml` | Erstellen |
| `/home/rwiegand/Nextcloud/egonetix/jotty/README.md` | Erstellen |
| `srvdocker02:/home/icke/jotty/docker-compose.yml` | Deployen |
| `srvrevproxy02:/etc/nginx/sites-available/coldstorage.conf` | Erstellen |

80
skills/delegate-remote.md Normal file
View File

@@ -0,0 +1,80 @@
---
name: delegate-remote
description: Use when a task could benefit from remote execution on a server, when the user wants to delegate work to run while offline, or when multiple independent tasks should run in parallel on remote infrastructure
invocation: /delegate-remote
---
# Remote Task Delegation via CRA
Geführter Workflow zum Delegieren von Aufgaben an Remote-Server über das claude-remote-agent (CRA) System.
## Wann verwenden
- Task dauert lang (Analyse, Refactoring, Tests)
- User will Laptop zuklappen, Task soll weiterlaufen
- Gleiche Aufgabe auf mehreren Servern parallel
- Unabhängige Teilaufgaben parallelisieren
- Server-Wartung / Infrastruktur-Aufgaben
## Workflow
### 1. Server prüfen
```bash
cra servers list
cra servers status
```
Falls kein passender Server konfiguriert:
```bash
cra servers add <name> <host> --user <user> --tag <tag>
cra sync-config <name>
```
### 2. Prompt formulieren
Der Remote-Agent arbeitet autonom - der Prompt muss vollständig und selbsterklärend sein:
- Klares Ziel definieren
- Working Directory angeben falls relevant
- Erwartetes Ergebnis beschreiben
- Kontext mitgeben den der Remote-Agent braucht
### 3. Task einreichen
```bash
cra submit <server> "<prompt>" [--priority N] [--model MODEL]
```
### 4. Ergebnisse abholen
```bash
cra status <server> # Fortschritt prüfen
cra collect <server> # Ergebnisse abholen
cra collect # Von allen Servern
```
## Checkliste
- [ ] Passenden Server identifiziert
- [ ] Server-Status geprüft (online, Agent läuft)
- [ ] Config synchronisiert (falls kürzlich geändert)
- [ ] Prompt vollständig und selbsterklärend formuliert
- [ ] Task eingereicht
- [ ] User über Task-ID informiert
## Tipps
- **Config-Sync nicht vergessen:** Nach Änderungen an CLAUDE.md → `cra sync-config`
- **Prioritäten nutzen:** `--priority 10` für dringende Tasks
- **Autonome Ausführung:** Server braucht `settings.json` mit Tool-Permissions
- **Batch-Delegation:** Mehrere Tasks nacheinander einreichen, alle parallel verarbeitet
## MCP-Alternative
Falls MCP-Tools verfügbar sind (prüfe mit `/mcp`), nutze die nativen Tools `cra_submit`, `cra_status`, `cra_collect` statt CLI-Befehle.
## Verwandte Skills
- `/troubleshoot-host` - Wenn der Remote-Server selbst Probleme hat
- `/session-end` - Am Ende der Session für Commit-Reminder