/agentic-portfolio – Erstelle ein agentisches, kostenloses LLM-betriebenes Portfolio für jeden GitHub-Nutzer
Dieses Skill erstellt die agentic-portfolio-App (Next.js 15 App Router + CopilotKit + die /free-llm-Überlebenskette). Die Referenzimplementierung ist github.com/wjlgatech/agentic-portfolio – klone sie als Vorlage und befüll dann die Daten in content/ für den Zielnutzer. Alles Persönliche sind Daten; der App-Code kann unverändert wiederverwendet werden.
0. Eingaben & Voraussetzungen
- GitHub-Login (z. B.
wjlgatech). Für private Repos + Highlights führegh auth statusaus – der Nutzer muss mitrepo-Berechtigung authentifiziert sein. Nur öffentliche Repos funktionieren ohne Authentifizierung. node >= 18,npm,gh,python3.
1. Aktive Repos abrufen (letzte 12 Monate)
SINCE=$(python3 -c "import datetime as d;print((d.date.today()-d.timedelta(days=365)).isoformat())")
gh api -X GET 'user/repos?per_page=100&sort=pushed&affiliation=owner' --paginate \
--jq ".[] | select(.pushed_at >= \"$SINCE\") | {name,private,fork,lang:.language,desc:.description,pushed:.pushed_at[0:10],stars:.stargazers_count,url:.html_url}" \
> repos.ndjson
# Für die ÖFFENTLICHEN Repos eines anderen Nutzers: gh api "users/<login>/repos?per_page=100&sort=pushed" ...
Schließe Forks (fork: true) und Meta-Repos (dotfiles, ein bestehendes portfolio) aus.
2. Inhalte in content/projects.json kuratieren
Gib für jedes behaltene Repo {name, category, highlight, featured, private, language, stars, pushed, url} aus:
- Category – gruppiere in eine kleine Menge (z. B. Agentic OS · Frameworks & Tooling · AI Products · Faith/Family · Open Knowledge); wähle Namen, die zur tatsächlichen Arbeit des Nutzers passen.
- highlight – eine IP-sichere Zeile. Für private Repos: nur allgemein halten und
url: nullsetzen (niemals auf Interna verlinken oder diese offenlegen). - featured – markiere die etwa 15–18 stärksten für die Standardansicht.
3. content/profile.ts und content/portfolio.yaml befüllen
profile.ts: Name, Kurzvorstellung, Mission, Werte, Lieblingsprojekte und die 12X Future Practices (ein Dutzend sich verstärkende Disziplinen). Erstelle Entwürfe basierend auf der Bio des Nutzers und den Repo-Themen; weise deutlich darauf hin, dass die Inhalte vom Nutzer bearbeitet werden können.portfolio.yaml: die Steuerungsoberfläche – Abschnittsreihenfolge/Sichtbarkeit/Beschriftungen, Design und die Artikel-Liste (zunächst leer). Der Besitzer füllt Artikel, indem er mit dem Agenten spricht („Füge meinen LinkedIn-Artikel hinzu …“) oder von Hand. LinkedIn ist durch Authentifizierung geschützt – bitte den Nutzer, seine Beiträge einzufügen, oder akzeptiere öffentliche Artikel-URLs und rufe jede per WebFetch ab.- Setze
PORTFOLIO_OWNER_TOKENbeim Deployment, sodass nur der Besitzer Agenten-Änderungen anwenden kann (Besucher bleiben im Nur-Lesen-Modus). Nicht gesetzt = uneingeschränkte lokale Entwicklung.
4. App-Code – von der Vorlage kopieren, nicht neu schreiben
Die wiederverwendbaren Teile (für jeden Nutzer identisch):
app/page.tsx,app/layout.tsx,app/globals.cssapp/api/copilotkit/route.ts+lib/llm.ts(die free-LLM-Kette – nur serverseitig)components/Copilot.tsx,components/Projects.tsx,components/Articles.tsx- Konfigurationen:
package.json(Next auf eine gepatchte 15.x-Version festlegen),tailwind.config.ts,tsconfig.json,postcss.config.mjs,.env.example
5. Überprüfen, dann ausliefern
npm install && npm run build # muss GRÜN sein, bevor gepusht wird
gh repo create <login>/<repo-name> --public --source=. --remote=origin --push
Anschließend auf Vercel deployen (Repo importieren → einen kostenlosen Schlüssel hinzufügen, z. B. NVIDIA_API_KEY → deployen).
Absicherungen
- Niemals private IP preisgeben. Bei privaten Repos: nur Highlights,
url: null. - Schlüssel bleibt serverseitig. Nur
app/api/copilotkit/route.tsliest den LLM-Schlüssel. - Kostenlose Stufen zuerst. Die Reihenfolge in
lib/llm.tsbeibehalten: NIM → Groq → Gemini → kostenpflichtig. - Build muss grün sein vor jedem Push. Den Build-Status ehrlich melden.
- Menschliche Freigabe für den Repo-Push, es sei denn, der Nutzer hat „create & push“ gesagt.