Communitygithub.com

wjlgatech/agentic-portfolio-public

Genera un portafolio personal agéntico para cualquier usuario de GitHub — un sitio Next.js + CopilotKit cuyo agente de IA responde preguntas sobre el trabajo de la persona, basado en el contenido del repositorio y alimentado por una cadena de supervivencia FREE-LLM (NVIDIA NIM → Groq → Gemini → OpenAI), por lo que funciona a $0.

¿Qué es agentic-portfolio-public?

Esta habilidad crea un sitio de portafolio personal impulsado por agentes de IA, diseñado para desarrolladores que desean convertir su actividad de GitHub en una página web interactiva e inteligente. El agente incorporado en el sitio responde preguntas sobre los proyectos del usuario, basándose en los datos del repositorio y utilizando una cadena de modelos LLM gratuitos (NVIDIA NIM, Groq, Gemini y OpenAI como respaldo) para evitar costos. Soporta repositorios públicos y privados (con resguardos de seguridad para no filtrar IP), genera automáticamente secciones como misión, valores y prácticas 12X, e incluye una sección de artículos de LinkedIn que se actualiza mediante conversaciones con el agente. Está construido sobre Next.js 15, CopilotKit y se despliega fácilmente en Vercel. La habilidad se activa cuando el usuario solicita frases como 'crea mi portafolio', 'sitio agéntico con chat' o 'portafolio gratuito con LLM'.

Compatible con~Claude Code✓Codex CLI~Cursor✓Antigravity✓Gemini CLI
npx skills add https://github.com/wjlgatech/agentic-portfolio-public/tree/HEAD/skill

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

/agentic-portfolio — construye un portafolio agéntico y gratuito con LLM para cualquier usuario de GitHub

Esta habilidad andamia la aplicación agentic-portfolio (Next.js 15 App Router + CopilotKit + la cadena de supervivencia /free-llm). La implementación de referencia es github.com/wjlgatech/agentic-portfolio — clónala como plantilla, luego repuebla los datos en content/ para el usuario objetivo. Todo lo personal son datos; el código de la aplicación se reutiliza tal cual.

0. Entradas y requisitos previos

  • Usuario de GitHub (ej. wjlgatech). Para repos privados + destacados, ejecuta gh auth status — el usuario debe estar autenticado con el alcance repo. Solo repos públicos funciona sin autenticación.
  • node >= 18, npm, gh, python3.

1. Obtener los repos activos (últimos 12 meses)

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
# Para repos PÚBLICOS de otro usuario: gh api "users/<login>/repos?per_page=100&sort=pushed" ...

Excluir forks (fork: true) y repos meta (dotfiles, un portfolio existente).

2. Organizar en content/projects.json

Para cada repositorio mantenido, genera {name, category, highlight, featured, private, language, stars, pushed, url}:

  • Category — agrupa en un conjunto pequeño (ej. Agentic OS · Frameworks & Tooling · AI Products · Faith/Family · Open Knowledge); elige nombres que se ajusten al trabajo real del usuario.
  • highlight — una línea segura para IP. Para repos privados: solo a alto nivel, y establece url: null (nunca enlazar ni exponer internos).
  • featured — marca los ~15–18 más fuertes para la vista predeterminada.

3. Llenar content/profile.ts y content/portfolio.yaml

  • profile.ts: nombre, eslogan, misión, valores, amor y las Prácticas Futuras 12X (una docena de disciplinas que se acumulan). Redacta a partir de la biografía del usuario + temas del repositorio; deja claro que es editable por el usuario.
  • portfolio.yaml: la superficie de control — orden/visibilidad/etiquetas de secciones, tema y la lista de artículos (inicia vacía). El propietario llena los artículos hablando con el agente ("agrega mi artículo de LinkedIn …") o manualmente. LinkedIn está protegido por autenticación — pide al usuario que pegue sus publicaciones, o acepta URLs de artículos públicos y WebFetch de cada uno.
  • Establece PORTFOLIO_OWNER_TOKEN en el despliegue para que solo el propietario pueda aplicar ediciones del agente (los visitantes solo ven). Sin establecer = desarrollo local sin restricciones.

4. Código de la aplicación — copia desde la plantilla, no reescribas

Las partes reutilizables (idénticas para cada usuario):

  • app/page.tsx, app/layout.tsx, app/globals.css
  • app/api/copilotkit/route.ts + lib/llm.ts (la cadena gratuita de LLM — solo del lado del servidor)
  • components/Copilot.tsx, components/Projects.tsx, components/Articles.tsx
  • configuraciones: package.json (fija Next a una versión 15.x parcheada), tailwind.config.ts, tsconfig.json, postcss.config.mjs, .env.example

5. Verificar, luego desplegar

npm install && npm run build      # debe ser VERDE antes de hacer push
gh repo create <login>/<repo-name> --public --source=. --remote=origin --push

Luego despliega en Vercel (importa el repositorio → agrega una clave gratuita, ej. NVIDIA_API_KEY → despliega).

Barreras de seguridad

  • Nunca filtrar IP privada. Repos privados: solo destacado, url: null.
  • La clave permanece en el servidor. Solo app/api/copilotkit/route.ts lee la clave del LLM.
  • Primero los niveles gratuitos. Mantén el orden de lib/llm.ts: NIM → Groq → Gemini → pago.
  • La compilación debe ser verde antes de cualquier push. Reporta el estado de la compilación honestamente.
  • El push del repositorio debe tener puerta humana a menos que el usuario haya dicho "crear y hacer push".

Skills relacionados