Was macht portfolio-kup?
Erstelle ein Profil des Benutzers auf Basis echter Nachweise und mache daraus eine einseitige, zweisprachige (Thailändisch/EN) Webseite. Antworte auf Thailändisch, technische Begriffe bleiben auf Englisch.
Ablauf
Gehe der Reihe nach vor · Verwende für alle Entscheidungsfragen AskUserQuestion · Bei umfangreichen Inhalten fasse sie zunächst im Chat zusammen, bevor du sie in die Seite einfügst.
1. Datenerfassung
- Frage, ob es weitere Rechner gibt, auf denen Claude Code verwendet wird (SSH
user@host) · Wenn der Benutzer diese Information bereits in der Anfrage angegeben hat, frage nicht erneut. - Führe das Skript auf jedem Rechner aus (gib nur Zahlen aus, keine Texthinweise oder Schlüssel):
S=~/.claude/skills/portfolio-kup/scripts; D=<scratchpad>/pk; mkdir -p $D python3 $S/collect.py > $D/local.json ssh -o BatchMode=yes user@host python3 - < $S/collect.py > $D/host1.json python3 $S/merge.py $D/*.json > $D/metrics.json # Zusammenfassungstabelle auf stderr - Lese den Inhalt der Prompts selbst für eine qualitative Bewertung (
~/.claude/history.jsonlFelddisplay,project) · Lese stichprobenartig über alle Projekte/Monate verteilt · Kopiere keine gefundenen Schlüssel/Token/Passwörter in die Antwort oder Webseite, zähle sie nur.
Hinweise, die dem Benutzer mitgeteilt werden müssen:
history.jsonlzählt nur, wenn der Benutzer tippt · Phasen, in denen der Agent lange arbeitet, werden nicht gezählt.- Transkripte (
~/.claude/projects/**/*.jsonl) werden gelöscht, wenncleanupPeriodDaysüberschritten ist (Standard 30 Tage) · Token und AI-Arbeitszeit sind daher nur für den letzten Zeitraum verfügbar. - Monate mit < 100 Prompts (
enough_data: false) haben schwankende Werte – nicht zum Vergleichen verwenden. - Das Zählen von Verhaltensweisen erfolgt durch Worterkennung und zeigt Tendenzen an, ist keine exakte Messung.
2. Bewertung (Antworte im Chat)
- Wahrscheinlicher Beruf · Level (Junior / Mid / Senior) · Stärken, Schwächen mit Belegen
- Direkt, keine übertriebenen Komplimente · Trenne „kann Arbeit abliefern, weil er/sie AI gut steuert“ von „versteht die Grundlagen selbst“
- Wenn Schlüssel/Geheimnisse in der Historie gefunden werden → warne sofort vor Rotation (nenne den Typ, nicht den Wert)
3. Test (wenn der Benutzer wissen möchte, ob er/sie wirklich schwach ist)
- 2 Runden à 4 Fragen via
AskUserQuestion· Aufgaben sind Szenarien aus der tatsächlichen Arbeit des Benutzers (mit seinem/ihrem Stack) - Mische 2 Typen: Symptom sehen → Ursache nennen und Erkläre den zugrunde liegenden Mechanismus · Optionen alle gleich lang, keine Hinweise auf die Antwort
- Teile die Regeln mit: Keine AI fragen · Bei Unwissenheit mit „Weiß nicht“ antworten
- Lösungen zu jeder Frage mit kurzer Begründung, dann Zusammenfassung nach Typ (z. B. Symptom 4/4, Mechanismus 0/4)
4. Gehalt und Karrierewege
- Führe
WebSearchalsextendedmit mehreren Suchbegriffen gleichzeitig durch (TH + EN, aktuelles Jahr) · Gib immer die Quellen an. - Trenne AI/ML Engineer (Modelle bauen) von AI Application Engineer (AI in Anwendungen nutzen) · Die Gehälter unterscheiden sich stark.
- Denke breit: Gehe 8–10 Berufe durch, die zu Fähigkeiten + Persönlichkeit + Wachstum passen (nicht nur technische, z. B. Consultant, Pre-Sales, Educator, EdTech-Produkt, Freelancer) · Reduziere dann auf die 3 am besten geeigneten + max. 5 weitere Berufe als Schlagworte · Berufe, die „noch nicht geeignet“ sind, kannst du im Chat nennen, aber nicht auf der Seite aufführen.
- Gib eine klare, einzige Empfehlung, wohin der Weg gehen sollte (basierend auf Zielen aus dem Interview), mit einem 3-stufigen Plan.
- Zeige auf der Webseite das Gehalt als
*als Standard · Gib den Zahlenwert nur auf Anfrage des Benutzers an.
5. Interview
Rufe den Skill grilling (oder grill-me) auf und frage in Runden via AskUserQuestion:
Grund für den gewünschten Weg · Erfahrung mit Menschen/Kunden außerhalb des Chats · Zeitrahmen · Vorhandene Projekte (eigene oder vom Unternehmen) ·
Freie Stunden pro Woche · Definition von Erfolg · Kriterien für Weitermachen/Aufhören
- Wenn Antworten widersprüchlich sind oder die Frage nicht beantworten → frage erneut.
- Zeige direkt erkannte Muster auf (z. B. „Wenn man nicht wählen muss, sagt man ‚alles‘“) · Sage, womit du nicht einverstanden bist, aber lass den Benutzer entscheiden.
- Beende mit einer Zusammenfassung des gemeinsamen Verständnisses und warte auf Bestätigung des Benutzers, bevor du die Seite erstellst.
6. Webseite erstellen
- Kopiere
templates/onepage.htmlin den Scratchpad und bearbeite nur das JSON in<script id='profile'>· Jeder Text als{"th":…,"en":…} Artifact→quickstart(intentother) beim ersten Mal, dann veröffentlichen · Iconprofile- Bearbeite auf Feedback hin mit „Edit + veröffentliche dieselbe Datei“ (gleiche URL)
Designregeln (basierend auf echtem Benutzerfeedback · Nicht verletzbar)
| Thema | Tun | Nicht tun |
|---|---|---|
| Seitenstruktur | Einspaltig von oben nach unten · Identität → 01 Fähigkeiten → 02 Arbeitsweise → 03 Wachstum → 04 Weg nach vorne · Breite bis 1600px | Sidebar · Dunkle Paneele, die sich abheben · Feste schmale Breite |
| Weg nach vorne (04) | Kasten „Empfehlung“ mit 1 Empfehlung + 1 Satz Begründung + 3-stufiger Plan · Karten für 3 Wege mit: Bereitschaft / Passt weil / Muss ergänzen · Abzeichen ★ Empfohlen rechts oben auf der ausgewählten Karte · „Kann auch“ als einzeiliges Label · „Was zuerst tun“ max. 4 Punkte | Lange Berufstabelle · Schritte/erster Schritt/Gehalt in den Karten · Doppelte Informationen zum 3-stufigen Plan (Benutzer sagen: „sieht unordentlich aus“) |
| Farben | Alle Paneele im gleichen Farbschema (weißer Hintergrund, dünne Ränder) · Blau = weich/besser · Gold = hart/Ziel · Rot = Achtung/jetzt | Mehrere Töne gemischt |
| Datenquellen-Warnung | Kasten ganz oben mit allen Datenquellen + was nicht gezählt wurde + „KI-Schätzung, keine Zertifizierung“ | Quelle am Ende der Seite versteckt |
| Sprache | Thailändisch als Standard + Button Thai/EN · Im Englischen they/them oder vermeide Pronomen | Geschlecht aus dem Namen erraten |
| Für Außenstehende verständlich | Einfache Sprache · Vergleiche wie „die Hälfte“, „doppelt so viel“, „ein Drittel“ | Interne Projektnamen · Interview-Fragennummern (Q20) · Rohzahlen ohne Einheit („43 Mal“, Anzahl Prompts) · Reine Fachbegriffe wie „502 Traefik“ |
| Fähigkeiten | Radar + 3-stufige Labels (Hervorragend/Mittel/Muss ergänzen) im Fähigkeiten-Bereich · Soft und Hard nebeneinander, Liste mit Nummern 01– und Nachweis-Label · Hard mit Tool-Namen | Power-Balken / Level-Balken neben Persönlichkeitsmerkmalen (Benutzer können nicht lesen, was voll bedeutet) · Karten mit unterschiedlicher Höhe |
| Persönlichkeit | Namen als Soft Skills, die HR verwendet · Ein Persona-Name + Ein-Satz-Beschreibung · Stil als zwei Pole-Balken · „Zu beachtende Persönlichkeitszüge“ separat | Testergebnisse als Paneel auf der Seite (Benutzer haben es entfernen lassen) |
| Arbeitszeit | Stunden-Diagramm startet um 06:00 · Wochentage als % der gesamten Arbeit mit Erklärung, was % bedeutet | Zahlenachse für Anzahl |
| Wachstum | Leiter, einzeln anklickbar · Höhe = Fähigkeitsniveau (Stufennamen auf dem Balken) · Label „▼ Aktuelle Stufe“ · Jede Stufe: Kann / Noch Fehler / Wendepunkt · „Vergleich mit vorheriger Stufe“ nur für Monate mit ausreichend Daten · Token nur für Stufen mit Transkript · Letzte Stufe ist das Ziel (goldene gestrichelte Linie) | Diagramm der Prompt-Anzahl pro Monat (Benutzer können es nicht lesen) · Details aller Stufen gleichzeitig anzeigen |
| Gehalt | * + Erklärung im Warnhinweis und am Ende der Seite | Gehaltszahl ohne Aufforderung |
| Privatsphäre | Keine Keys, IPs, Hostnamen, E-Mails · Negative Zahlen ohne Bloßstellung („hat einmal einen Key an einer unpassenden Stelle eingegeben“) | Echtprofil ohne Nachfrage veröffentlichen/pushen |
Dateien im Skill
scripts/collect.py· Erfasst Zahlen für einen einzelnen Rechner (monatliche Prompts, Verhalten, Stunden/Tag, Token, Zeitstempel) · Gibt keinen Text aus.scripts/merge.py· Fasst mehrere Rechner zusammen →metrics.json(monatlich,enough_data, % Stunden beginnend um 06:00, % Tage, selbst gearbeitete Stunden vs. AI-Arbeitsstunden, Token)templates/onepage.html· Webseite rendert aus einem einzigen JSON-Objekt · Daten in der Datei sind fiktive Beispiele
Mapping Metriken → Seiteninhalt
| metrics.json | Verwendung |
|---|---|
hours_pct_from_6am[].pct | hoursPctFrom6am (24 Werte, geordnet ab 06:00) |
weekday_pct | weekdayPct |
late_night_pct | hoursNote z. B. „Fast ein Drittel der Arbeit findet nach 21 Uhr statt“ |
monthly[*] mit enough_data | stages[i].compare.items (Vergleich mit vorheriger Stufe) · stages[i].peak/hot stärkster Monat |
tokens[*] | stages[i].tokens (nur für Monate mit Daten) · Anteil Cache Read angeben |
hands_on_hours / ai_working_hours | Zusammenfassung im Chat „Selbst gearbeitet ~X Std./Woche · AI hat ~Y Std./Woche gearbeitet“ |
secrets_pasted > 0 | Warnung im Chat + „Zu beachtende Persönlichkeitszüge“ + erster Punkt von acts |
JSON-Bereich 04 in der Vorlage
rec·title,reason,phases[](when,t,d) Empfehlung für 3 Phasenpaths[]· 3 Wege:tag,title,ready(0–100),fits,gap,pick: truefür empfohlenen Weg,gold: truefür eigenen Weg/Founderalso[]· Berufsnamen für max. 5 zusätzliche (reiner Text)acts[]· max. 4 Punkte (t,d)