TripCheat · KI-Reiseplanungsassistent (`trip-cheat-sheet`)

Wandelt Flug-/Hotel-Screenshots, Konferenzagenden, Tickets und Links in eine handyfreundliche Reisespickzettel-Webseite mit Reisezeitplan, Checklisten, Zielhandbuch, Doppelzeitzonenuhren, Karten-Tiefenlinks, QR-Ticketseiten und optionalem Passwortschutz um.

Was ist TripCheat · KI-Reiseplanungsassistent (`trip-cheat-sheet`)?

Dieser Skill ist ein KI-gestützter Reiseplanungsassistent, der aus unstrukturierten Reiseunterlagen – wie Screenshots von Flügen und Hotels, Konferenzagenden, Tickets, E-Mails und Chatverläufen – eine einzige, mobil optimierte Webseite erstellt. Die generierte Seite enthält eine interaktive Reisezeitlinie mit Hervorhebung des aktuellen und nächsten Ereignisses, anpassbare Checklisten, ein detailliertes Zielhandbuch, gleichzeitige Anzeige von zwei Zeitzonen, Karten-Tiefenlinks (Google, Gaode, Apple), eine Ticket-Seite mit QR-Codes und optionalem Passwortschutz. Der Skill arbeitet nach einem 6-Schritte-Workflow: Datensammlung (bis zu 6 Fragen), Tiefenrecherche (mit Quellenangabe), Erstellung einer strukturierten `trip.json` nach striktem Schema, Build (einzelne HTML-Datei oder Multi-Page-Site), Validierung mit `verify.mjs` und Deployment (z. B. GitHub Pages). Er unterstützt mehrere Plattformen wie Claude Code, Cursor, Codex und ähnliche KI-Agenten. Seine Stärke liegt in der konsistenten Handhabung von Zeitzonen (IANA-Namen, lokale Zeiten für Ereignisse), der klaren Trennung von ‚bestätigt‘ und ‚zu überprüfen‘ sowie strikten Regeln zum Schutz der Privatsphäre (keine echten QR-Codes, Ausweisnummern oder Telefonnummern in öffentlichen Seiten).

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/YuanMenghe/trip-cheat-sheet-skill/tree/HEAD/skills/trip-cheat-sheet

Installed? Explore more Produktivität & Zusammenarbeit skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

TripCheat · KI-Reiseplanungsassistent (trip-cheat-sheet)

Wandelt verstreute Flug-, Hotel-, Konferenzagenden-, Ticket- und Reisetipp-Screenshots sowie Chatverläufe in eine mobile Webseite um: Reisezeitlinie (wann heute wohin), Checklisten (was nicht vergessen), Handbuch (wie fortbewegen/bezahlen/wen im Notfall kontaktieren). Öffnet sich sofort auf dem Handy, unterstützt zwei Zeitzonen, dunkles Design, Schriftgrößenanpassung, Karten-Tiefenlinks, QR-Ticketseiten und kann auf jedem statischen Hosting bereitgestellt werden.

Die Seite wird von dem integrierten Generator aus einer trip.json erstellt: Datenvertrag siehe references/trip-schema.md, Schreibregeln siehe references/content-guide.md, Deployment siehe references/deploy.md.

Wann verwenden

Auslöseszenarien

  • „Erstelle mir eine Reiseroute“, „Fasse Flüge, Hotels und Konferenzagenda auf einer Seite zusammen“, „Vorbereitung für Dienstreise/Konferenz“
  • „Reisetipps“, „Mobiler Spickzettel“, „Reisehandbuch“, „Reisecheckliste“, „Was ist heute wann zu tun“
  • Benutzer gibt mehrere Screenshots/PDFs/E-Mails/Links/Chatverläufe – müssen strukturiert + mit Recherche ergänzt + als ansichtbare Seite ausgegeben werden
  • Bereits vorhandene trip.json: Seite neu generieren, Design ändern, Passwortschutz hinzufügen, bereitstellen oder Ticketseiten teilen

Nicht geeignet

  • Reine Suche nach Sehenswürdigkeiten, Wetter, Buchung: direkt suchen/antworten, keine Seite nötig
  • Echtzeitbestände, Buchungen, Zahlungen, Check-in: dieser Skill ruft keine Buchungs-APIs auf, sondern organisiert nur Informationen und Links
  • Reine Routennavigation: Kartenwerkzeuge verwenden, keine Reiseplanseite nötig

Ausgabe

ModusBefehlErgebnis
Einzeldatei (Standard)node scripts/build.mjs trip.json --out distdist/index.html (CSS/JS/Daten/PWA-Manifest vollständig eingebettet) + ggf. kopierte Ticketbilder
Multi-Page-Sitenode scripts/build.mjs trip.json --multi --out distdist/index.html, dist/ticket-<id>.html, dist/assets/style.css, dist/assets/app.js, dist/manifest.json, kopierte Ticketressourcen

Seitenfunktionen: Drei Ansichten – Reisezeitlinie / Checklisten / Handbuch; Hervorhebung „Aktuelles/Nächstes Ereignis“; Doppelzeitzonenuhr und Zeitumrechnung; Designs (paper/slate/night) und Schriftgrößenwechsel; Google/Gaode/Apple Maps Tiefenlinks (Google Routenlink mit Verkehrsmittelparameter); Checkboxen in Checklisten (lokaler localStorage); Ticketseite mit QR-Code; optionaler Passwortschutz (clientseitige SHA-256-Prüfung); kann zum Startbildschirm hinzugefügt werden (PWA, --no-pwa deaktiviert).

Arbeitsablauf (6 Schritte)

Schritt 1: Datensammlung (Fragebogen + Dateien/Screenshots/Links)

Zuerst max. 6 Fragen stellen, um Nachfragen zu vermeiden; für unbeantwortete Fragen Standardannahmen verwenden und explizit mit „Annahme“ kennzeichnen.

  • Wer reist, wie viele, Verhältnis (Begleitpersonen benötigen ältere Menschen/Kinder/barrierefreie Unterbringung?)
  • Abfahrtsort, Daten (inkl. Übernacht-/Nachtflüge), Ziel(e) (Mehrere Städte/Zwischenstopp?)
  • Was ist bereits gebucht, was muss noch gebucht werden (Flüge, Hotels, Konferenzregistrierung, Tickets, Restaurants)
  • Wichtige Zeiten von Konferenzen/Veranstaltungen (Registrierung, Eröffnung, eigener Vortrag/Poster-Session, Abendessen)
  • Präferenzen und rote Linien (Budget, Essenseinschränkungen/Allergien, Reisepensum, was kann gestrichen werden)
  • Datenschutzanforderungen (öffentlich teilen, Passwortschutz nötig, welche Informationen nicht online stellen?)

Material sammeln: Screenshots, PDFs, E-Mails, Chatverläufe, Links – alles möglich. Erst eine Faktenliste erstellen, dann die JSON schreiben, nicht während der Sammlung raten.

Schritt 2: Tiefenrecherche (Online, Trennung von „Bestätigt“ und „Zu überprüfen“)

Recherche nach Priorität durchführen, Quellenlinks und Prüfdatum notieren:

PrioritätRechercheinhalt
P0Visum/Reisepassgültigkeit, Flug-/Zugverbindungen, Unterkunft, Konferenzregistrierung/Tickets, Versicherung
P1Flughafen ↔ Stadtzentrum (letzte Bahn, Terminal), Stadtverkehrstickets, zeitgebundene Ticketreservierungen, Restaurantreservierungen
P2Sehenswürdigkeiten, Shopping, Alternativpläne, Wetter
  • Bevorzugt offizielle Quellen: Fluggesellschaft/Flughafen/Bahn, Hotel, Konferenzwebsite, Museum/Sehenswürdigkeitswebsite, Botschaft, Verkehrsbetreiber.
  • Jede Schlüsselinformation in vier Kategorien formulieren: Bestätigt / Zu überprüfen / Unbestimmt / Beispiel (Regeln siehe references/content-guide.md §6).
  • Keine Preise, Fahrpläne, Öffnungszeiten, Buchungsstatus erfinden; falls nicht auffindbar, mit „Zu überprüfen“ und einem Hinweis auf die offizielle Quelle absichern.
  • Häufige Fallstricke (Flughafentransport, Ticketreservierung, WLAN, Zahlung, Notrufnummern, Zeitzone/Sommerzeit) einzeln prüfen und im Handbuch oder in Ereignisbeschreibungen vermerken.

Schritt 3: trip.json schreiben

Strikt nach references/trip-schema.md schreiben; direktes Beispiel siehe examples/tokyo-conference/trip.json.

  • meta: Titel, Untertitel, Heimatzeit (home), Start-/Enddatum, Design, Kartenanbieter, Footer (Datenstand notieren).
  • destinations: Jedes Ziel eine id + IANA-Zeitzone (z. B. Asia/Tokyo).
  • days[].events: Jedes Ereignis mindestens mit time / title / short / detail / kind; bei Ort location + map; bei offiziellen Links links; bei verknüpfter Checkliste checkId.
  • checklists: Nach Phasen gruppieren (Vor Abreise / Nach Ankunft / Während der Reise / Vor Rückreise), id global eindeutig.
  • handbook: Kapitel zu Verkehr, Internet, Zahlung, Sicherheit, Konferenzteilnahme, Essen, Packen usw. (kombinieren/ergänzen, Themen nicht auslassen).
  • tickets: Pro Person ein Ticket, qr verweist auf Platzhalter oder benutzereigene Bilder (keine echten Ticketdaten hochladen).

Doppelzeitzonen-Regeln (fehleranfällig)

  1. time / endTime sind Ereigniszeit vor Ort; wenn tz fehlt, wird die Zeitzone des Ziels an diesem Tag übernommen.
  2. Bei Flügen über Zeitzonen hinweg gibt tz die Abfahrtszeit-Zeitzone an, und endTime wird ebenfalls in dieser tz interpretiert. Bei Zusammenfassung mehrerer Flüge zu einem Ereignis muss endTime den „Ankunftszeit in die Abflugzeitzone umgerechneten“ Wert erhalten, und im detail muss „Ankunftszeit vor Ort HH:MM“ stehen; einfacher ist es, Abflug und Ankunft als zwei separate Ereignisse mit jeweils eigener lokaler Zeitzone zu erfassen.
  3. Übernachtankünfte in den nächsten days[] verschieben, mit Hinweis „+1 Tag“ / „Nächster Tag“; bei Ereignissen, die Mitternacht überschreiten, wird endTime kleiner als time als nächster Tag behandelt, aber Textbeschreibung empfohlen.
  4. Tagfüllende Termine ohne Uhrzeit mit skipTimezone: true kennzeichnen; Zeitzonen immer im IANA-Namen angeben, nicht UTC+9, JST.
  5. Die Seite rechnet automatisch in die Heimatzeit um, die Umrechnung nicht manuell im Text wiederholen, es sei denn, es handelt sich um Aktionen, die vor Abreise in der Heimatzeit durchgeführt werden müssen (z. B. Check-in-Fenster, Remote-Meeting).

Schritt 4: Build

Im Skill-Stammverzeichnis (enthält scripts/, templates/) ausführen; Skripte lösen Pfade relativ zum aktuellen Arbeitsverzeichnis auf, können aber auch mit vollständigen Pfaden von beliebigen Verzeichnissen ausgeführt werden.

node scripts/build.mjs <trip.json> --out dist

Häufige Parameter:

# Multi-Page-Site (erzeugt separat teilbare ticket-<id>.html)
node scripts/build.mjs trip.json --multi --out dist

# Design überschreiben / Passwortschutz hinzufügen / PWA deaktivieren / Nichtleeres Ausgabeverzeichnis überschreiben / Leise-Modus
node scripts/build.mjs trip.json --theme night --gate-password "your-password" --out dist
node scripts/build.mjs trip.json --no-pwa --out dist
node scripts/build.mjs trip.json --force --quiet --out dist
  • Standardausgabe: dist/index.html; --out standardmäßig dist.
  • build führt intern zuerst die gleiche Datenvalidierung durch, bei Fehlern Exit-Code 1, kein halbfertiges Produkt; Warnungen werden ausgegeben, blockieren aber nicht.
  • Existiert das Ausgabeverzeichnis bereits und ist nicht leer, muss --force verwendet werden (Verzeichnis wird dann zuerst geleert).
  • --help zeigt alle Parameter.

Schritt 5: Validierung

node scripts/verify.mjs <trip.json>          # Standard: Fehler führen zu Abbruch (Exit-Code 1), Warnungen nur Hinweis
node scripts/verify.mjs <trip.json> --strict # Warnungen gelten ebenfalls als Fehler (vor Veröffentlichung empfohlen)
node scripts/verify.mjs <trip.json> --quiet  # Nur Fehlerzusammenfassung ausgeben

Validierung umfasst: meta-Pflichtfelder und gültige Zeitzonen/Daten, destinations-Referenzen, Zeitformat und tz-Gültigkeit für days/events, Link-Protokolle, handbook-HTML-Whitelist, Existenz von tickets.qr-Dateien sowie Datenschutz-Scan (vermutete Telefonnummern/lange Ziffernfolgen geben Warnungen). Warnungen entweder beheben oder nachvollziehbar begründen.

Schritt 6: Vorschau und Deployment

  • Lokale Vorschau: dist/index.html direkt im Browser öffnen (Einzeldatei doppelklickbar); bei Multi-Page-Site lokalen Server empfehlenswert:
    npx serve dist
    # oder python -m http.server --directory dist
    
  • Deployment: Siehe references/deploy.md (GitHub Pages / Cloudflare Pages / beliebiges statisches Hosting).
  • Ticketseite teilen: ticket-<id>.html im Multi-Page-Modus kann separat an die entsprechende Person gesendet werden; im Einzeldatei-Modus #ticket-<id>-Anker verwenden, aber dieselbe Seite enthält Inhalte aller.
  • Datenschutzhinweis: Öffentliche Seite = für jeden sichtbar. Echte QR-Codes, Ticketcodes, Ausweisnummern, Telefonnummern nicht in öffentliche Seiten einfügen; Passwortschutz ist reine clientseitige Prüfung (Details siehe deploy.md).

Aufrufbeispiele

Beispiel 1: Akademische Konferenz in Tokio (identisch mit Beispieldaten)

Benutzer: Ich reise vom 20. bis 24. November zu einer akademischen Konferenz nach Tokio, zwei Personen (A/B). Hier sind Screenshots von Flügen und Hotels sowie der Agenda-Link;
          Hilf mir, Registrierung, Eröffnung, Poster-Session und Abendessen einzuplanen, auf einer Seite, die ich jederzeit auf dem Handy ansehen kann.

Agent:
1. Daten sammeln → 3 Dinge abklären: Ist Frühstück im Hotel enthalten? Welcher Konferenzausweistyp für A und B? Wann ist der Rückflug-Check-in?
2. Recherche → Transportmöglichkeiten vom Flughafen Haneda in die Stadt und letzte Verbindung, Lage des Konferenzortes und Hotels, Zeit für Einreise nach Landung
3. trip.json schreiben → Referenz: examples/tokyo-conference/trip.json (im Beispiel wird Flug zu einem Ereignis zusammengefasst, endTime in Abflugzeitzone umgerechnet)
4. Build → node scripts/build.mjs trips/tokyo-2026/trip.json --multi --out dist
5. Validierung → node scripts/verify.mjs trips/tokyo-2026/trip.json --strict
6. Vorschau → dist/index.html öffnen; Deployment auf GitHub Pages vorschlagen / ticket-badge-a.html an Person A senden

Beispiel 2: Familienauslandsreise (Mehrere Ziele + Doppelzeitzone + Versicherungsinfo)

Benutzer: Ich reise im Sommer mit meinen Eltern 10 Tage nach Spanien, rein über Madrid, raus über Barcelona. Erstelle eine Reiseplanseite mit Infos zu U-Bahn und Notrufnummern.

Agent:
- destinations mit zwei Einträgen (Madrid / Barcelona, Zeitzone Europe/Madrid, Vergleich mit Heimatzeit)
- handbook mit Schwerpunkt: Flughafen↔Stadtzentrum, U-Bahn-Tickets, Zahlung und Trinkgeld, Notruf und Botschaft, Essen (Eltern haben Allergien)
- In Ereignissen „Warum“ und „Verzichtetes“ klarstellen (z. B. „Heute nicht Retiro-Park, Kräfte für Königspalast sparen“)
- Nach Build und Verify dist auf GitHub Pages bereitstellen, Link an Familie senden

Beispiel 3: Aktualisierung vorhandener Daten + Nur Ticketseite einer Person teilen

Benutzer: Reiseplan geändert: Abendessen von 23. auf 24. November 19:30 verschoben. Außerdem sende mir bitte die Konferenzausweisseite meiner Frau separat.

Agent:
1. trip.json entsprechend ändern (Ereigniszeit/detail anpassen, Formulierung „Bestätigt“ + Quelle beibehalten)
2. node scripts/build.mjs trip.json --multi --out dist --force
3. node scripts/verify.mjs trip.json
4. dist/ticket-badge-b.html separat teilen; Hinweis: Öffentlicher Link legt QR-Code offen, daher nur an die Person selbst senden oder Zugriffskontrolle hinzufügen

Qualitätsrichtlinien (Rote Linien)

  1. Nichts erfinden: Preise, Fahrpläne, Öffnungszeiten, Buchungsstatus, Telefonnummern müssen Quellen haben; ohne Quelle mit „Zu überprüfen“ + „Offizielle Quelle beachten“ kennzeichnen.
  2. Bestätigt vs. Zu überprüfen: Vom Benutzer bestätigte Unterlagen/offizielle Seiten = Bestätigt; Drittanbieter-Plattformen/alte Screenshots/Reisetipps = Zu überprüfen; feste Formulierungen siehe content-guide.md §6, kein „Angeblich“, „Sollte“.
  3. Doppelzeitzone: time in Ereignis-Ortszeit; bei zusammengefassten Flügen endTime in Ereignis-tz (Abflugzeitzone) umrechnen, detail enthält Ankunfts-Ortszeit; Übernacht-Ereignisse in nächsten Tag verschieben; Zeitzonen nur im IANA-Namen.
  4. Datenschutz und Ticketcodes: Keine echten QR-Codes, Ticketcodes, PNRs, Ausweisnummern, Telefonnummern oder Adressen in öffentliche Seiten schreiben; copy mit Platzhaltern verwenden; Beispieldaten müssen fiktiv und anonymisiert sein; Repository nur Platzhalter-QR-Codes enthalten.
  5. Keine Fähigkeiten versprechen: Keine Echtzeitbestände/Buchungen/Check-ins versprechen; irreversible Aktionen wie Bestellungen, Zahlungen, Stornierungen dem Benutzer überlassen, nicht für den Benutzer ausführen.
  6. Vor Auslieferung zwingend validieren: verify.mjs --strict mit null Fehlern, dann ausliefern; vor Deployment erneut auf vertrauliche Informationen prüfen.
  7. Grenzen klarstellen: Passwortschutz ist Schutz für Bekannte, keine Verschlüsselung; für echte Sicherheit privates Hosting/Zugriffskontrolle verwenden.

Einzeldatei vs. Multi-Page: Auswahlhilfe

AnforderungEinzeldatei (Standard)Multi-Page (--multi)
An Familie/Kollegen senden (WeChat/E-Mail), offline Doppelklick✅ Ein HTML am einfachstenNicht empfohlen (ganzes Verzeichnis nötig)
Als Website bereitstellen, Langzeitnutzung, regelmäßige UpdatesGeht (jeweils eine Datei neu übertragen)✅ Cache-freundlich, klare Struktur
Ticketseiten personenweise separat teilen❌ Anker legt Tickets aller Personen auf einer Seite offen✅ ticket-<id>.html als eigenständige Seite
Komplett eine Datei (inkl. QR-Codes)tickets[].qr durch data:-URI oder externe URL ersetzen—
Passwortschutz erforderlich✅ Unterstützt (Hauptseite und interne Ticketansicht)✅ Hauptseite und ticket-<id>.html zeigen Passwortdialog (gleiches Passwort, einmalige Entsperrung pro Browser)

Hinweis: Der Einzeldatei-Modus bettet lokale QR-Bilder automatisch als data:-URI ein, das Ergebnis ist wirklich nur eine HTML-Datei; bereits vorhandene data:/http(s)-QRs bleiben unverändert.

Dateistruktur

skills/trip-cheat-sheet/
├── SKILL.md                     # Diese Datei: Wann verwenden, wie verwenden, rote Linien
├── references/
│   ├── trip-schema.md           # Einziger Datenvertrag (Felder/Zeitzonen/Build-Befehle)
│   ├── content-guide.md         # Inhaltliche Schreibregeln (sechs Elemente/Doppelzeitzone/Handbuch-Kapitel/Markierungsregeln)
│   └── deploy.md                # Deployment und Teilen (Pages/Cloudflare/Einzeldatei-Multi-Page/Passwortschutz)
├── scripts/
│   ├── build.mjs                # trip.json → Webseite
│   └── verify.mjs               # trip.json-Validator (wird intern von build genutzt)
├── templates/                   # style.css / app.js / index.html / ticket.html
└── examples/tokyo-conference/   # Ausführbares Beispiel (mit Platzhalter-QR-Codes)
    ├── trip.json
    └── assets/qr-a.svg, qr-b.svg

Häufige Probleme

ProblemLösung
❌ Ausgabeverzeichnis nicht leer--force hinzufügen oder --out-Verzeichnis wechseln
Seite leer/CSS fehltIm Multi-Page-Modus gesamtes dist/ (inkl. assets/) hochladen; sicherstellen, dass index.html und assets/ auf gleicher Ebene liegen
Falsche Zeitanzeigetz-Schreibweise prüfen (IANA-Name); bei zusammengefassten Flügen endTime in Abflugzeitzone umrechnen
verify zeigt WarnungenBeheben oder nachvollziehbar begründen und ausliefern; --strict schlägt bei Warnungen fehl
Passwort für Passwortschutz vergessenNeu bauen: node scripts/build.mjs trip.json --gate-password "Neues Passwort"
404 nach DeploymentPages-Branch/Verzeichnis-Einstellungen prüfen, ob Actions durchgelaufen sind, Groß-/Kleinschreibung von Dateinamen
Node-VersionsfehlerNode.js ≥ 18 verwenden (benötigt vollständige Intl-Zeitzonendaten und ESM)

English quick reference

  • What: generate a mobile-first travel cheat-sheet web page from one trip.json — itinerary timeline, checklists, destination handbook, dual-timezone display, map deep links, QR ticket pages, optional password gate, PWA.
  • Build: node scripts/build.mjs <trip.json> --out dist (single file, default) or --multi (static site with ticket-<id>.html). Flags: --theme paper|slate|night, --gate-password, --no-pwa, --force, --quiet.
  • Verify: node scripts/verify.mjs <trip.json> [--strict] [--quiet].
  • Contract: references/trip-schema.md; writing rules: references/content-guide.md; deployment: references/deploy.md.
  • Never: fabricate prices/schedules, mix up timezones, or commit real ticket codes, QR images, IDs or phone numbers. Mark verified vs unverified content explicitly.

Verwandte Skills