Communitygithub.com

portfolio-kup

Erstellt ein einseitiges Profil (One Pager), das zeigt, was der Benutzer kann, wie seine Persönlichkeit ist, wie er sich entwickelt hat und welche Karrierewege er einschlagen kann – basierend auf der Claude Code-Nutzungshistorie (lokal und über SSH auf anderen Rechnern), Tests und einem Interview. Wird verwendet, wenn der Benutzer z. B. sagt „Zeig mir meine Historie und sag mir, welchen Beruf ich habe und wie gut ich bin“, „Erstelle mein Portfolio / Profil / One Pager“, „Was sollte ich verdienen?“, „Welchen Weg soll ich einschlagen?“ oder wenn er `/portfolio-kup` eingibt.

Was ist portfolio-kup?

portfolio-kup ist ein Skill für Claude Code, der aus der Nutzungshistorie des Benutzers ein detailliertes, einseitiges Profil in zwei Sprachen (Thailändisch/Englisch) erstellt. Es sammelt Daten von allen Rechnern, auf denen Claude Code läuft (lokal und über SSH), führt quantitative Metriken (z. B. monatliche Prompt-Anzahl, Arbeitszeiten, Token-Verbrauch) und eine qualitative Analyse der Prompt-Inhalte durch. Anschließend bewertet der Skill den wahrscheinlichen Beruf, das Niveau (Junior/Mid/Senior), Stärken und Schwächen, und bietet optional einen fachspezifischen Test an. Er recherchiert Gehaltsspannen und passende Karrierewege, führt ein strukturiertes Interview und generiert eine visuell ansprechende HTML-Seite. Der Skill legt großen Wert auf Privatsphäre (keine Weitergabe von Keys/IPs/E-Mails) und verwendet eine benutzerdefinierte Designvorlage mit strengen Regeln zur Darstellung von Fähigkeiten, Persönlichkeit, Wachstum und Karrierewegen. Die Ergebnisse werden im Chat präsentiert und erst nach Benutzerbestätigung in die finale Webseite übernommen.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Neckkup/portfolio-kup/tree/HEAD

In Ihrer bevorzugten KI fragen

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

Dokumentation

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

  1. 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.
  2. 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
    
  3. Lese den Inhalt der Prompts selbst für eine qualitative Bewertung (~/.claude/history.jsonl Feld display, 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.jsonl zählt nur, wenn der Benutzer tippt · Phasen, in denen der Agent lange arbeitet, werden nicht gezählt.
  • Transkripte (~/.claude/projects/**/*.jsonl) werden gelöscht, wenn cleanupPeriodDays ü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 WebSearch als extended mit 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

  1. Kopiere templates/onepage.html in den Scratchpad und bearbeite nur das JSON in <script id='profile'> · Jeder Text als {"th":…,"en":…}
  2. Artifact → quickstart (intent other) beim ersten Mal, dann veröffentlichen · Icon profile
  3. Bearbeite auf Feedback hin mit „Edit + veröffentliche dieselbe Datei“ (gleiche URL)

Designregeln (basierend auf echtem Benutzerfeedback · Nicht verletzbar)

ThemaTunNicht tun
SeitenstrukturEinspaltig von oben nach unten · Identität → 01 Fähigkeiten → 02 Arbeitsweise → 03 Wachstum → 04 Weg nach vorne · Breite bis 1600pxSidebar · 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 PunkteLange Berufstabelle · Schritte/erster Schritt/Gehalt in den Karten · Doppelte Informationen zum 3-stufigen Plan (Benutzer sagen: „sieht unordentlich aus“)
FarbenAlle Paneele im gleichen Farbschema (weißer Hintergrund, dünne Ränder) · Blau = weich/besser · Gold = hart/Ziel · Rot = Achtung/jetztMehrere Töne gemischt
Datenquellen-WarnungKasten ganz oben mit allen Datenquellen + was nicht gezählt wurde + „KI-Schätzung, keine Zertifizierung“Quelle am Ende der Seite versteckt
SpracheThailändisch als Standard + Button Thai/EN · Im Englischen they/them oder vermeide PronomenGeschlecht aus dem Namen erraten
Für Außenstehende verständlichEinfache 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ähigkeitenRadar + 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-NamenPower-Balken / Level-Balken neben Persönlichkeitsmerkmalen (Benutzer können nicht lesen, was voll bedeutet) · Karten mit unterschiedlicher Höhe
PersönlichkeitNamen als Soft Skills, die HR verwendet · Ein Persona-Name + Ein-Satz-Beschreibung · Stil als zwei Pole-Balken · „Zu beachtende Persönlichkeitszüge“ separatTestergebnisse als Paneel auf der Seite (Benutzer haben es entfernen lassen)
ArbeitszeitStunden-Diagramm startet um 06:00 · Wochentage als % der gesamten Arbeit mit Erklärung, was % bedeutetZahlenachse für Anzahl
WachstumLeiter, 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 SeiteGehaltszahl ohne Aufforderung
PrivatsphäreKeine 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.jsonVerwendung
hours_pct_from_6am[].pcthoursPctFrom6am (24 Werte, geordnet ab 06:00)
weekday_pctweekdayPct
late_night_pcthoursNote z. B. „Fast ein Drittel der Arbeit findet nach 21 Uhr statt“
monthly[*] mit enough_datastages[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_hoursZusammenfassung im Chat „Selbst gearbeitet ~X Std./Woche · AI hat ~Y Std./Woche gearbeitet“
secrets_pasted > 0Warnung 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 Phasen
  • paths[] · 3 Wege: tag, title, ready (0–100), fits, gap, pick: true für empfohlenen Weg, gold: true für eigenen Weg/Founder
  • also[] · Berufsnamen für max. 5 zusätzliche (reiner Text)
  • acts[] · max. 4 Punkte (t, d)

Verwandte Skills