claude-code-arcane 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/README.md +2 -0
- package/agents/engineering/dotnet-engineer.md +78 -0
- package/docs/SKILLS-CATALOG.md +26 -3
- package/package.json +1 -1
- package/profiles/backend-dotnet.yaml +54 -0
- package/profiles/job-hunt.yaml +35 -0
- package/profiles/unity-design.yaml +1 -0
- package/profiles/unity-dev.yaml +1 -0
- package/rules/dotnet-code.md +64 -0
- package/skills/cold-outreach/SKILL.md +65 -0
- package/skills/cold-outreach/references/recruiter-playbook.md +65 -0
- package/skills/cover-letter/SKILL.md +66 -0
- package/skills/cv-ats-export/SKILL.md +64 -0
- package/skills/cv-ats-export/scripts/cv_export.py +306 -0
- package/skills/cv-tailor/SKILL.md +70 -0
- package/skills/cv-tailor/references/ats-keywords.md +46 -0
- package/skills/dotnet-architecture/SKILL.md +66 -0
- package/skills/dotnet-architecture/references/anti-patterns.md +12 -0
- package/skills/dotnet-architecture/references/checklist.md +19 -0
- package/skills/dotnet-architecture/references/patterns.md +118 -0
- package/skills/dotnet-architecture/references/project-structure.md +78 -0
- package/skills/dotnet-best-practices/SKILL.md +76 -0
- package/skills/dotnet-best-practices/references/api-design.md +75 -0
- package/skills/dotnet-best-practices/references/architecture.md +62 -0
- package/skills/dotnet-best-practices/references/async.md +62 -0
- package/skills/dotnet-best-practices/references/database.md +69 -0
- package/skills/dotnet-best-practices/references/dependency-injection.md +73 -0
- package/skills/dotnet-best-practices/references/devops.md +76 -0
- package/skills/dotnet-best-practices/references/error-handling.md +72 -0
- package/skills/dotnet-best-practices/references/performance.md +63 -0
- package/skills/dotnet-best-practices/references/security.md +73 -0
- package/skills/dotnet-best-practices/references/testing.md +76 -0
- package/skills/dotnet-scaffold/SKILL.md +99 -0
- package/skills/install-mcp/SKILL.md +107 -0
- package/skills/install-mcp/references/manual-setup.md +92 -0
- package/skills/interview-prep/SKILL.md +69 -0
- package/skills/interview-prep/references/star-framework.md +42 -0
- package/skills/job-hunt/SKILL.md +92 -0
- package/skills/job-hunt/references/templates/Aplicacion.md +48 -0
- package/skills/job-hunt/references/templates/CV Custom.md +53 -0
- package/skills/job-hunt/references/templates/Contacto.md +30 -0
- package/skills/job-hunt/references/templates/Dashboard.md +45 -0
- package/skills/job-hunt/references/templates/Empresa.md +36 -0
- package/skills/job-hunt/references/templates/Entrevista.md +44 -0
- package/skills/job-hunt/references/templates/Perfil.md +38 -0
- package/skills/job-search/SKILL.md +83 -0
- package/skills/job-search/references/scoring-rubric.md +43 -0
- package/skills/linkedin-optimize/SKILL.md +79 -0
- package/skills/master-profile/SKILL.md +69 -0
- package/skills/network-map/SKILL.md +61 -0
- package/skills/network-map/scripts/network_map.py +109 -0
- package/skills/personal-brand/SKILL.md +54 -0
- package/skills/personal-brand/references/post-pillars.md +66 -0
- package/skills/portfolio-site/SKILL.md +59 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: job-hunt
|
|
3
|
+
description: "Entry point for the job-search skillset. Scaffolds and manages a portable career workspace (profiles, CVs, applications, companies, contacts, interviews) and routes to the right skill. Triggers: job hunt, busqueda laboral, buscar trabajo, organizar postulaciones, setup career workspace."
|
|
4
|
+
argument-hint: "[setup | status | next]"
|
|
5
|
+
category: "career"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
allowed-tools: Read, Glob, Grep, Bash, Write, Edit
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Job Hunt — Career Workspace Orchestrator
|
|
11
|
+
|
|
12
|
+
Eres el punto de entrada de la suite de búsqueda laboral. Tu trabajo es: detectar (o crear) el **career workspace**, entender en qué etapa está el usuario, y rutear al skill correcto. No hacés todo vos — orquestás.
|
|
13
|
+
|
|
14
|
+
## Idioma
|
|
15
|
+
|
|
16
|
+
Comunicación con el usuario en **español**. Los **outputs** (CV, LinkedIn, cover letters) van en el idioma del rol objetivo: **inglés** para roles internacionales/remotos globales, **español** cuando la oferta o empresa lo pidan. Preguntá si hay ambigüedad.
|
|
17
|
+
|
|
18
|
+
## El career workspace
|
|
19
|
+
|
|
20
|
+
Todo el sistema vive en una carpeta portable (default: `career-workspace/` en la raíz del proyecto; configurable). Estructura:
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
career-workspace/
|
|
24
|
+
00-Dashboard.md índice + aplicaciones activas + próximos pasos
|
|
25
|
+
01-Perfiles/ perfil maestro + perfiles por rol
|
|
26
|
+
02-CVs/ CV base por perfil + CV custom por postulación
|
|
27
|
+
exports/ PDFs ATS generados
|
|
28
|
+
03-Aplicaciones/ una nota por postulación
|
|
29
|
+
04-Empresas/ research de empresas
|
|
30
|
+
05-Contactos/ recruiters, referidos, hiring managers
|
|
31
|
+
06-Entrevistas/ prep y feedback por ronda
|
|
32
|
+
07-Recursos/ cover letters reutilizables, links
|
|
33
|
+
portfolio/ datos source-of-truth del portfolio web
|
|
34
|
+
Templates/ plantillas con frontmatter
|
|
35
|
+
tools/ cv_export.py (lo instala /cv-ats-export)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Es **portable y agnóstico de Obsidian**: usa `[[wikilinks]]` (funcionan en Obsidian si el usuario lo usa, y son legibles en texto plano), frontmatter YAML, y prefijos numéricos para ordenar carpetas. No requiere Obsidian instalado.
|
|
39
|
+
|
|
40
|
+
## Modos
|
|
41
|
+
|
|
42
|
+
### `setup` — Crear el workspace
|
|
43
|
+
1. Preguntar dónde crear el workspace (default `./career-workspace/`) y el/los rol(es) objetivo.
|
|
44
|
+
2. Crear el árbol de carpetas completo.
|
|
45
|
+
3. Copiar los 7 templates desde `references/templates/` a `Templates/` del workspace.
|
|
46
|
+
4. Crear `00-Dashboard.md` desde `references/templates/Dashboard.md`.
|
|
47
|
+
5. Sugerir el siguiente paso: `/master-profile` para construir el perfil maestro.
|
|
48
|
+
|
|
49
|
+
### `status` — Dónde estoy
|
|
50
|
+
1. Leer `00-Dashboard.md` y escanear `03-Aplicaciones/`.
|
|
51
|
+
2. Resumir: aplicaciones activas por prioridad, próximas entrevistas, ofertas que cierran pronto, gaps (aplicaciones sin CV/cover letter).
|
|
52
|
+
3. Recomendar la acción de mayor impacto.
|
|
53
|
+
|
|
54
|
+
### `next` — Qué hago ahora
|
|
55
|
+
Según el estado del workspace, recomendar el skill siguiente (ver routing).
|
|
56
|
+
|
|
57
|
+
## Routing
|
|
58
|
+
|
|
59
|
+
| Situación | Skill |
|
|
60
|
+
|-----------|-------|
|
|
61
|
+
| No hay workspace | `/job-hunt setup` |
|
|
62
|
+
| Falta perfil maestro | `/master-profile` |
|
|
63
|
+
| Encontrar/scorear ofertas, plan de búsqueda | `/job-search` |
|
|
64
|
+
| Adaptar CV a una oferta | `/cv-tailor` |
|
|
65
|
+
| Exportar CV a PDF ATS | `/cv-ats-export` |
|
|
66
|
+
| Escribir cover letter / mensaje de aplicación | `/cover-letter` |
|
|
67
|
+
| Mensaje en frío a recruiter/hiring manager | `/cold-outreach` |
|
|
68
|
+
| Optimizar perfil de LinkedIn | `/linkedin-optimize` |
|
|
69
|
+
| Crear/actualizar portfolio web | `/portfolio-site` |
|
|
70
|
+
| Preparar una entrevista | `/interview-prep` |
|
|
71
|
+
|
|
72
|
+
## Workflow estándar para una nueva oportunidad
|
|
73
|
+
|
|
74
|
+
1. `/job-search` → encontrar y scorear la oferta, crear nota en `03-Aplicaciones/` + `04-Empresas/`.
|
|
75
|
+
2. Identificar contacto objetivo → nota en `05-Contactos/`.
|
|
76
|
+
3. `/cv-tailor` → CV custom partiendo del perfil base + research.
|
|
77
|
+
4. `/cv-ats-export` → PDF ATS a `02-CVs/exports/`.
|
|
78
|
+
5. `/cover-letter` → mensaje de aplicación custom.
|
|
79
|
+
6. `/cold-outreach` → si hay contacto al que escribirle directo.
|
|
80
|
+
7. Cuando haya entrevista → `/interview-prep`.
|
|
81
|
+
|
|
82
|
+
## Reglas
|
|
83
|
+
|
|
84
|
+
- Nunca reorganizar carpetas ni renombrar notas sin preguntar — rompe `[[wikilinks]]` en silencio.
|
|
85
|
+
- Nunca commitear datos sensibles (CV con teléfono/dirección, salarios, emails de recruiters) a un remoto sin confirmación explícita.
|
|
86
|
+
- Si una categoría necesita un template que no existe, proponerlo antes de inventarlo.
|
|
87
|
+
- Preservar los prefijos numéricos al crear archivos dentro de las carpetas ordenadas.
|
|
88
|
+
- Máximo accionable: el usuario siempre termina sabiendo qué skill correr next.
|
|
89
|
+
|
|
90
|
+
## Handoff
|
|
91
|
+
|
|
92
|
+
Pedí aprobación al usuario (approval) antes de escribir o sobrescribir archivos del workspace. Cuando el workspace queda READY, el siguiente paso es `/master-profile` para construir el perfil maestro.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
tipo: aplicacion
|
|
3
|
+
empresa:
|
|
4
|
+
perfil:
|
|
5
|
+
cv_usado:
|
|
6
|
+
estado: interesado
|
|
7
|
+
score:
|
|
8
|
+
fecha_aplicacion:
|
|
9
|
+
fecha_actualizacion: {{date:YYYY-MM-DD}}
|
|
10
|
+
link_oferta:
|
|
11
|
+
contacto_principal:
|
|
12
|
+
salario_rango:
|
|
13
|
+
modalidad:
|
|
14
|
+
ubicacion:
|
|
15
|
+
prioridad: media
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# {{title}}
|
|
19
|
+
|
|
20
|
+
## Puesto y empresa
|
|
21
|
+
- **Empresa:** [[]]
|
|
22
|
+
- **Rol:**
|
|
23
|
+
- **Link oferta:**
|
|
24
|
+
|
|
25
|
+
## Por qué me interesa
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## Match con mi perfil
|
|
29
|
+
- Perfil base: [[]]
|
|
30
|
+
- Qué de mi experiencia alinea con lo que piden:
|
|
31
|
+
-
|
|
32
|
+
|
|
33
|
+
## A quién escribirle / contacto principal
|
|
34
|
+
- [[]]
|
|
35
|
+
- Canal (LinkedIn / mail / formulario):
|
|
36
|
+
- Ángulo del mensaje:
|
|
37
|
+
|
|
38
|
+
## CV custom usado
|
|
39
|
+
- [[]]
|
|
40
|
+
|
|
41
|
+
## Timeline / seguimiento
|
|
42
|
+
- {{date:YYYY-MM-DD}} — creada la nota
|
|
43
|
+
|
|
44
|
+
## Entrevistas
|
|
45
|
+
-
|
|
46
|
+
|
|
47
|
+
## Notas
|
|
48
|
+
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
tipo: cv_custom
|
|
3
|
+
perfil_base:
|
|
4
|
+
aplicacion:
|
|
5
|
+
empresa:
|
|
6
|
+
contacto_objetivo:
|
|
7
|
+
fecha: {{date:YYYY-MM-DD}}
|
|
8
|
+
archivo_pdf:
|
|
9
|
+
archivo_final:
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# CV custom — {{title}}
|
|
13
|
+
|
|
14
|
+
## Contexto de la postulación
|
|
15
|
+
- **Aplicación:** [[]]
|
|
16
|
+
- **Empresa:** [[]]
|
|
17
|
+
- **Perfil base del que parto:** [[]]
|
|
18
|
+
- **Contacto objetivo (quién va a leer esto):** [[]]
|
|
19
|
+
|
|
20
|
+
## Investigación previa
|
|
21
|
+
> Qué sabemos del contacto objetivo y del equipo: background, senioridad, qué valora, en qué proyectos está.
|
|
22
|
+
|
|
23
|
+
-
|
|
24
|
+
|
|
25
|
+
## Keywords de la oferta
|
|
26
|
+
> Extraídas literales del job description para matchear con filtros automáticos (ATS) y lectura humana.
|
|
27
|
+
|
|
28
|
+
-
|
|
29
|
+
|
|
30
|
+
## Qué resaltar en este CV (y qué bajar el volumen)
|
|
31
|
+
- Resaltar:
|
|
32
|
+
-
|
|
33
|
+
- Reducir / omitir:
|
|
34
|
+
-
|
|
35
|
+
|
|
36
|
+
## Highlights reescritos para esta postulación
|
|
37
|
+
> Logros del perfil base reordenados / reescritos con el vocabulario de la oferta.
|
|
38
|
+
|
|
39
|
+
-
|
|
40
|
+
|
|
41
|
+
## Proyectos destacados para este rol
|
|
42
|
+
-
|
|
43
|
+
|
|
44
|
+
## Cover letter / mensaje de aplicación
|
|
45
|
+
> El mensaje que acompaña el CV, custom para el contacto.
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Archivo final exportado
|
|
52
|
+
- Ruta:
|
|
53
|
+
- Fecha de export:
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
tipo: contacto
|
|
3
|
+
empresa:
|
|
4
|
+
rol:
|
|
5
|
+
linkedin:
|
|
6
|
+
email:
|
|
7
|
+
telefono:
|
|
8
|
+
tipo_contacto:
|
|
9
|
+
primer_contacto: {{date:YYYY-MM-DD}}
|
|
10
|
+
ultima_interaccion: {{date:YYYY-MM-DD}}
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# {{title}}
|
|
14
|
+
|
|
15
|
+
## Sobre esta persona
|
|
16
|
+
> Qué hace, a qué equipo pertenece, cómo apareció en el radar, qué background tiene.
|
|
17
|
+
|
|
18
|
+
-
|
|
19
|
+
|
|
20
|
+
## Por qué le escribo / qué busco de este contacto
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## Historial de interacciones
|
|
24
|
+
- {{date:YYYY-MM-DD}} — creada la nota
|
|
25
|
+
|
|
26
|
+
## Mensajes intercambiados
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
## Aplicaciones vinculadas
|
|
30
|
+
- [[]]
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
tipo: dashboard
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Dashboard — Búsqueda laboral
|
|
6
|
+
|
|
7
|
+
> Índice del workspace. Cuando haya datos (aplicaciones, entrevistas), estas secciones pueden convertirse en queries dinámicas con Bases/Dataview si usás Obsidian.
|
|
8
|
+
|
|
9
|
+
## Aplicaciones activas
|
|
10
|
+
**Prioridad alta:**
|
|
11
|
+
-
|
|
12
|
+
|
|
13
|
+
**Prioridad media:**
|
|
14
|
+
-
|
|
15
|
+
|
|
16
|
+
**Cerradas / descartadas:**
|
|
17
|
+
-
|
|
18
|
+
|
|
19
|
+
## Próximas entrevistas
|
|
20
|
+
-
|
|
21
|
+
|
|
22
|
+
## A seguir esta semana
|
|
23
|
+
-
|
|
24
|
+
|
|
25
|
+
## Perfiles
|
|
26
|
+
-
|
|
27
|
+
|
|
28
|
+
## Accesos rápidos por carpeta
|
|
29
|
+
- `01-Perfiles/` — perfiles profesionales base + perfil maestro
|
|
30
|
+
- `02-CVs/` — versiones de CV (incluye CVs custom por postulación)
|
|
31
|
+
- `03-Aplicaciones/` — una nota por postulación
|
|
32
|
+
- `04-Empresas/` — research de empresas
|
|
33
|
+
- `05-Contactos/` — recruiters, referidos, hiring managers
|
|
34
|
+
- `06-Entrevistas/` — prep y feedback por ronda
|
|
35
|
+
- `07-Recursos/` — cover letters reutilizables, links útiles
|
|
36
|
+
- `portfolio/` — source-of-truth del portfolio web
|
|
37
|
+
- `Templates/` — plantillas con frontmatter
|
|
38
|
+
|
|
39
|
+
## Workflow estándar para una nueva oportunidad
|
|
40
|
+
1. `/job-search` — encontrar y scorear la oferta → nota en `03-Aplicaciones/` + `04-Empresas/`.
|
|
41
|
+
2. Identificar contacto objetivo → nota en `05-Contactos/`.
|
|
42
|
+
3. `/cv-tailor` — CV custom desde el perfil base + research.
|
|
43
|
+
4. `/cv-ats-export` — PDF ATS a `02-CVs/exports/`.
|
|
44
|
+
5. `/cover-letter` — mensaje de aplicación custom.
|
|
45
|
+
6. `/interview-prep` — cuando haya entrevista.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
tipo: empresa
|
|
3
|
+
industria:
|
|
4
|
+
tamaño:
|
|
5
|
+
ubicacion:
|
|
6
|
+
website:
|
|
7
|
+
linkedin:
|
|
8
|
+
stack_conocido: []
|
|
9
|
+
modalidad:
|
|
10
|
+
fuente:
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# {{title}}
|
|
14
|
+
|
|
15
|
+
## Qué hacen
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## Cultura / valores
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
## Stack técnico conocido
|
|
22
|
+
-
|
|
23
|
+
|
|
24
|
+
## Proceso de contratación (si lo conozco)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
## Contactos en la empresa
|
|
28
|
+
- [[]]
|
|
29
|
+
|
|
30
|
+
## Aplicaciones vinculadas
|
|
31
|
+
- [[]]
|
|
32
|
+
|
|
33
|
+
## Research / notas
|
|
34
|
+
> Contexto para custom-izar CV y mensajes de acercamiento.
|
|
35
|
+
|
|
36
|
+
-
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
tipo: entrevista
|
|
3
|
+
aplicacion:
|
|
4
|
+
empresa:
|
|
5
|
+
ronda:
|
|
6
|
+
fecha: {{date:YYYY-MM-DD}}
|
|
7
|
+
duracion:
|
|
8
|
+
entrevistadores: []
|
|
9
|
+
modalidad:
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# {{title}}
|
|
13
|
+
|
|
14
|
+
## Aplicación
|
|
15
|
+
- [[]]
|
|
16
|
+
|
|
17
|
+
## Preparación
|
|
18
|
+
- Research de empresa: [[]]
|
|
19
|
+
- Temas a repasar:
|
|
20
|
+
-
|
|
21
|
+
- Preguntas propias a hacer:
|
|
22
|
+
-
|
|
23
|
+
|
|
24
|
+
## Durante la entrevista
|
|
25
|
+
### Temas que surgieron
|
|
26
|
+
-
|
|
27
|
+
|
|
28
|
+
### Preguntas que me hicieron
|
|
29
|
+
-
|
|
30
|
+
|
|
31
|
+
### Preguntas que hice
|
|
32
|
+
-
|
|
33
|
+
|
|
34
|
+
## Feedback
|
|
35
|
+
### Cómo salí (autoevaluación)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
### Señales de ellos
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
## Próximo paso
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
## Notas post-entrevista
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
tipo: perfil
|
|
3
|
+
rol_objetivo:
|
|
4
|
+
seniority:
|
|
5
|
+
stack: []
|
|
6
|
+
modalidad: []
|
|
7
|
+
mercado_objetivo: []
|
|
8
|
+
match_score_minimo: 75
|
|
9
|
+
salario_minimo_usd_mes:
|
|
10
|
+
keywords: []
|
|
11
|
+
keywords_excluir: []
|
|
12
|
+
regla_seniority:
|
|
13
|
+
fuentes: []
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Perfil — {{title}}
|
|
17
|
+
|
|
18
|
+
## Resumen
|
|
19
|
+
> 2–3 líneas: quién sos para este rol y qué te hace fuerte.
|
|
20
|
+
|
|
21
|
+
## Stack principal
|
|
22
|
+
-
|
|
23
|
+
|
|
24
|
+
## Experiencia destacada para este perfil
|
|
25
|
+
-
|
|
26
|
+
|
|
27
|
+
## Diferenciales
|
|
28
|
+
-
|
|
29
|
+
|
|
30
|
+
## Logros cuantificables (para CV)
|
|
31
|
+
> Con número, contexto y resultado. Reusables en CVs y LinkedIn.
|
|
32
|
+
-
|
|
33
|
+
|
|
34
|
+
## CVs asociados
|
|
35
|
+
-
|
|
36
|
+
|
|
37
|
+
## Aplicaciones relacionadas
|
|
38
|
+
-
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: job-search
|
|
3
|
+
description: "Find, score and prioritize job openings against your profile, then build a structured 7-day search plan with daily goals. Creates application and company notes in the workspace. Triggers: buscar trabajo, encontrar ofertas, scorear ofertas, plan de busqueda laboral, priorizar postulaciones, job search plan, donde aplicar."
|
|
4
|
+
argument-hint: "[search <query> | score <job-url> | plan]"
|
|
5
|
+
category: "career"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
allowed-tools: Read, Glob, Grep, Write, Edit, WebFetch, WebSearch
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Job Search — Búsqueda, scoring y plan
|
|
11
|
+
|
|
12
|
+
Encontrás ofertas, las **scoreás** contra el perfil del usuario, priorizás, y armás un **plan de búsqueda de 7 días** con objetivos diarios. Alimentás el workspace con notas de aplicación y empresa para que el resto del flujo (`/cv-tailor`, `/cover-letter`, etc.) las consuma.
|
|
13
|
+
|
|
14
|
+
## Inputs
|
|
15
|
+
|
|
16
|
+
- **Perfil(es) objetivo** (`01-Perfiles/`): rol, seniority, stack, modalidad, mercado, **score mínimo** (default 75), salario mínimo, keywords y keywords a excluir.
|
|
17
|
+
- Fuentes de ofertas que use el usuario (job boards, WeWorkRemotely, LinkedIn, Workable, etc.).
|
|
18
|
+
|
|
19
|
+
## Modos
|
|
20
|
+
|
|
21
|
+
### `search <query>` — Encontrar ofertas
|
|
22
|
+
1. **Sourcing.** Conseguir ofertas frescas que matcheen el perfil (rol + stack + modalidad + mercado). Dos caminos:
|
|
23
|
+
- **Apify MCP (opcional).** Si hay un MCP de Apify conectado, podés usar un actor de scraping de LinkedIn Jobs para traer ofertas estructuradas. Ejemplo de pedido: *"Scrapeá LinkedIn jobs para [rol] posteadas en los últimos 7 días en empresas de 50–5000 empleados; filtrá por match con mi background en [dominio]; devolvé tabla rankeada con empresa, rol, ubicación, salario, fecha de posteo y fit score 1–10 basado en mi resume; marcá el top 10 para aplicar hoy."* Buscá el actor con ToolSearch (`apify`) si el MCP está presente. **⚠️ OBLIGATORIO: antes de invocar Apify, mostrá el warning de abajo y pedí confirmación explícita.**
|
|
24
|
+
- **WebSearch/WebFetch (default recomendado).** Camino sin Apify: buscar en job boards (muchos con feed/API pública: WeWorkRemotely, RemoteOK, etc.) y fetchear los JDs. Es el default seguro y gratis.
|
|
25
|
+
|
|
26
|
+
> ### ⚠️ Warning Apify — mostralo SIEMPRE antes de usar esta parte
|
|
27
|
+
>
|
|
28
|
+
> Antes de correr cualquier actor de Apify (especialmente scraping de LinkedIn), presentá estos puntos al usuario y esperá confirmación explícita. No invoques Apify "en silencio".
|
|
29
|
+
>
|
|
30
|
+
> 1. **No es gratis.** Apify cobra por uso (compute units / por resultado); un scrape grande consume crédito. El tier free es limitado.
|
|
31
|
+
> 2. **Scrapear LinkedIn viola sus Términos de Servicio.** LinkedIn detecta y bloquea scraping activamente y puede **restringir o banear la cuenta**. La legalidad de scrapear datos públicos está en zona gris (caso hiQ vs LinkedIn); el riesgo de ToS/cuenta es real y es del usuario, no de Apify. Preferir actors sobre **job boards públicos** antes que LinkedIn directo; si igual se scrapea LinkedIn, hacerlo de forma consciente y no con una cuenta crítica.
|
|
32
|
+
> 3. **El API token de Apify es sensible.** Autoriza correr actors (y gastar el plan) en nombre del usuario. Mantenerlo seguro; no exponerlo ni commitearlo. (Apify no recolecta conversaciones/tokens y trata a los actors como no confiables: les da un proxy y no les entrega las credenciales — un actor malicioso puede usar las tools habilitadas pero no exfiltrar el token.)
|
|
33
|
+
> 4. **Calidad/estabilidad variable.** Los scrapers de LinkedIn se rompen seguido; los resultados pueden venir incompletos o desactualizados.
|
|
34
|
+
>
|
|
35
|
+
> Si el usuario no confirma, usá el camino WebSearch/WebFetch.
|
|
36
|
+
2. Para cada oferta candidata: extraer rol, empresa, stack, modalidad, ubicación, rango salarial, link, fecha de cierre.
|
|
37
|
+
3. Scorear (ver rúbrica) y filtrar por el umbral del perfil.
|
|
38
|
+
4. Crear nota en `03-Aplicaciones/` (template `Aplicacion`, estado `interesado`, con `score`) + nota en `04-Empresas/` (template `Empresa`) por cada una sobre el umbral.
|
|
39
|
+
5. Actualizar el `00-Dashboard.md` con las activas por prioridad, marcando el **top 10 para hoy**.
|
|
40
|
+
|
|
41
|
+
### `score <job-url>` — Scorear una oferta puntual
|
|
42
|
+
1. WebFetch del JD.
|
|
43
|
+
2. Aplicar la rúbrica contra el perfil → score 0–100 + breakdown + recomendación (aplicar / borderline / skip).
|
|
44
|
+
3. Si pasa, crear las notas como arriba.
|
|
45
|
+
|
|
46
|
+
### `plan` — Plan de búsqueda de 7 días
|
|
47
|
+
Generar un plan accionable con objetivos diarios. Ejemplo de esqueleto (ajustar al estado del usuario):
|
|
48
|
+
|
|
49
|
+
- **Día 1 — Base.** Perfil maestro + perfiles por rol al día; LinkedIn optimizado (`/linkedin-optimize`).
|
|
50
|
+
- **Día 2 — Sourcing.** Buscar y scorear 15–20 ofertas; quedarte con las ≥ umbral.
|
|
51
|
+
- **Día 3 — Research.** Empresas + contactos objetivo de las top.
|
|
52
|
+
- **Día 4 — Aplicaciones tanda 1.** CV custom + cover letter para las 5 de mayor prioridad (`/cv-tailor`, `/cv-ats-export`, `/cover-letter`).
|
|
53
|
+
- **Día 5 — Outreach.** Mensajes a recruiters/hiring managers de las top (`/cold-outreach`).
|
|
54
|
+
- **Día 6 — Aplicaciones tanda 2** + follow-ups de la tanda 1.
|
|
55
|
+
- **Día 7 — Review.** Métricas (aplicadas / respuestas / entrevistas), ajustar perfil/CV según señales, planear próxima semana.
|
|
56
|
+
|
|
57
|
+
## Rúbrica de scoring
|
|
58
|
+
|
|
59
|
+
Ver `references/scoring-rubric.md`. En resumen, score ponderado 0–100 sobre:
|
|
60
|
+
- Match de stack/skills (peso alto)
|
|
61
|
+
- Seniority correcto (penalizar over/under-qualified)
|
|
62
|
+
- Modalidad y mercado/elegibilidad (remoto, zona horaria, visa)
|
|
63
|
+
- Salario vs mínimo
|
|
64
|
+
- Cultura/etapa según preferencia
|
|
65
|
+
- Señales de calidad de la oferta (claridad, recencia, # aplicantes)
|
|
66
|
+
|
|
67
|
+
Umbral default ≥75 (configurable en el frontmatter del perfil, campo `match_score_minimo`).
|
|
68
|
+
|
|
69
|
+
## Tracking
|
|
70
|
+
|
|
71
|
+
- Estados de aplicación: `interesado` → `aplicado` → `en proceso` → `entrevista` → `oferta` / `rechazado` / `descartado`.
|
|
72
|
+
- Mantener el `00-Dashboard.md` como vista única: activas por prioridad, próximas entrevistas, qué cierra pronto, a seguir esta semana.
|
|
73
|
+
|
|
74
|
+
## Reglas
|
|
75
|
+
|
|
76
|
+
- No aplicar a todo: el umbral existe para concentrar esfuerzo donde hay match real.
|
|
77
|
+
- Marcar gaps con honestidad al scorear (no inflar el match).
|
|
78
|
+
- Respetar elegibilidad (visa/zona horaria) — un score alto con bloqueo de elegibilidad no sirve.
|
|
79
|
+
- No guardar datos sensibles de recruiters en remotos sin confirmación.
|
|
80
|
+
|
|
81
|
+
## Handoff
|
|
82
|
+
|
|
83
|
+
Confirmá (approval) antes de crear notas de aplicación/empresa o tocar el Dashboard. Cuando las ofertas priorizadas están READY, el siguiente paso es `/cv-tailor` sobre las de prioridad alta.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Job Scoring Rubric
|
|
2
|
+
|
|
3
|
+
Score ponderado 0–100 para decidir dónde invertir esfuerzo. El objetivo no es aplicar a todo: es concentrarte en ofertas con match real. Umbral default **≥75** (configurable por perfil en `match_score_minimo`).
|
|
4
|
+
|
|
5
|
+
## Dimensiones y pesos (default)
|
|
6
|
+
|
|
7
|
+
| Dimensión | Peso | Cómo puntuar |
|
|
8
|
+
|---|---:|---|
|
|
9
|
+
| **Match de stack/skills** | 30 | % de must-haves que cumplís. 30 si cubrís todos los core; baja proporcional. |
|
|
10
|
+
| **Seniority** | 15 | 15 si el nivel encaja. Penalizar over-qualified (aburrimiento/rechazo) y under-qualified (filtro). |
|
|
11
|
+
| **Modalidad + elegibilidad** | 20 | Remoto/híbrido/presencial según preferencia; zona horaria; visa/eligibility. Si hay bloqueo duro de elegibilidad → cap fuerte al score. |
|
|
12
|
+
| **Salario** | 15 | 15 si ≥ tu objetivo; proporcional hasta tu mínimo; 0 si por debajo del mínimo. Si no publican, neutro (≈8) y marcar. |
|
|
13
|
+
| **Empresa/cultura/etapa** | 10 | Encaje con preferencia (startup vs enterprise, producto vs consultora, valores). |
|
|
14
|
+
| **Calidad de la oferta** | 10 | Claridad del JD, recencia (fresca > vieja), pocos aplicantes, proceso definido. |
|
|
15
|
+
|
|
16
|
+
Sumá las dimensiones → score 0–100.
|
|
17
|
+
|
|
18
|
+
## Ajustes / banderas
|
|
19
|
+
|
|
20
|
+
- **Frase gatillo positiva** (ej. "code-forward", "high autonomy", stack que amás): +2–5 si refuerza tu fit.
|
|
21
|
+
- **Red flag en el JD** (ego, "rockstar", scope imposible, "trabajamos como familia"): −5–10 y nota de cautela.
|
|
22
|
+
- **Cierre inminente:** no cambia el score, pero sube la **prioridad** de acción.
|
|
23
|
+
- **Elegibilidad bloqueada** (visa que no tenés, zona horaria incompatible obligatoria): cap el score a <50 aunque el resto sea perfecto.
|
|
24
|
+
|
|
25
|
+
## De score a acción
|
|
26
|
+
|
|
27
|
+
| Score | Acción |
|
|
28
|
+
|---|---|
|
|
29
|
+
| **≥85** | Prioridad alta. Aplicar con CV custom + cover letter + outreach. |
|
|
30
|
+
| **75–84** | Aplicar; CV custom sí, outreach si hay contacto fácil. |
|
|
31
|
+
| **60–74** | Borderline. Aplicar solo si hay tiempo o un ángulo fuerte (referido). |
|
|
32
|
+
| **<60** | Skip salvo razón estratégica. |
|
|
33
|
+
|
|
34
|
+
## Prioridad (distinta del score)
|
|
35
|
+
|
|
36
|
+
`prioridad` en el frontmatter combina score + urgencia + elegibilidad:
|
|
37
|
+
- **alta:** score ≥85, o ≥75 con cierre inminente / referido caliente.
|
|
38
|
+
- **media:** 75–84 sin urgencia.
|
|
39
|
+
- **baja:** borderline o a la espera de validar requisitos.
|
|
40
|
+
|
|
41
|
+
## Registro
|
|
42
|
+
|
|
43
|
+
Guardá el `score` en el frontmatter de la nota de `03-Aplicaciones/` y reflejá las activas en `00-Dashboard.md` agrupadas por prioridad. Anotá el breakdown si el score fue borderline — ayuda a decidir y a re-evaluar después.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: linkedin-optimize
|
|
3
|
+
description: "Optimize a LinkedIn profile to attract recruiters and rank in search — headline, About, experience with KPIs, keywords, value proposition and a 30-second pitch. No LinkedIn Premium needed. Triggers: optimizar LinkedIn, mejorar perfil LinkedIn, headline LinkedIn, about LinkedIn, LinkedIn para reclutadores, LinkedIn SEO, pitch profesional."
|
|
4
|
+
argument-hint: "[section | full] (paste your current profile)"
|
|
5
|
+
category: "career"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
allowed-tools: Read, Glob, Grep, Write, Edit
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# LinkedIn Optimize — Perfil que atrae oportunidades
|
|
11
|
+
|
|
12
|
+
Optimizás un perfil de LinkedIn para que (1) ranquee en las búsquedas de recruiters y (2) convenza al humano que lo abre. Trabajás contra el **perfil maestro** (`01-Perfiles/`) y lo que el usuario pega de su perfil actual.
|
|
13
|
+
|
|
14
|
+
> **Importante:** Claude no accede a LinkedIn ni edita el perfil directamente. El usuario pega/sube el contenido actual; vos generás el texto optimizado para que lo copie/pegue.
|
|
15
|
+
|
|
16
|
+
## Cómo traer tu perfil a Claude
|
|
17
|
+
|
|
18
|
+
La forma más completa: en LinkedIn → **Recursos / More → Save to PDF** (exporta el perfil entero) y subí ese PDF a Claude. Alternativa: copiar/pegar headline + About + experiencia. Con el PDF, podés pedir una **auditoría contra JDs reales**:
|
|
19
|
+
|
|
20
|
+
> "Audita mi perfil de LinkedIn (adjunto) contra JDs de [rol] senior en [empresas objetivo]. Encontrá gaps en headline, About y Experience: keywords faltantes, framing de identidad equivocado, credenciales enterradas. Después reescribí headline y About para posicionarme como **builder**, optimizado para la búsqueda de recruiters."
|
|
21
|
+
|
|
22
|
+
**Framing de identidad:** posicionate como alguien que *construye/entrega* (builder), no como una lista de tareas. El headline y el About deben gritar resultados e identidad, no responsabilidades.
|
|
23
|
+
|
|
24
|
+
## Las 7 áreas de optimización
|
|
25
|
+
|
|
26
|
+
Cubrí estas siete (el usuario puede pedir una con `[section]` o todas con `full`):
|
|
27
|
+
|
|
28
|
+
### 1. Headline (titular)
|
|
29
|
+
- 220 caracteres. No solo el puesto: **rol + valor + keywords**.
|
|
30
|
+
- Patrón: `{Rol} | {especialidad/stack} | {valor o a quién ayudás}`.
|
|
31
|
+
- Las keywords del headline pesan fuerte en el ranking de búsqueda.
|
|
32
|
+
|
|
33
|
+
### 2. About (sección "Acerca de")
|
|
34
|
+
- Primera 2–3 líneas son las que se ven sin "ver más": que enganchen.
|
|
35
|
+
- Estructura: gancho → qué hacés y para quién → 2–3 logros con número → stack/keywords → CTA suave.
|
|
36
|
+
- Primera persona, tono humano, escaneable (párrafos cortos o bullets).
|
|
37
|
+
|
|
38
|
+
### 3. Experiencia con KPIs
|
|
39
|
+
- Cada rol con bullets de **logros cuantificables**, no responsabilidades.
|
|
40
|
+
- Mismo principio que el CV: verbo de acción + métrica + impacto.
|
|
41
|
+
- Incluí keywords de tu industria/rol en los bullets.
|
|
42
|
+
|
|
43
|
+
### 4. Keywords estratégicas (LinkedIn SEO)
|
|
44
|
+
- Identificá las keywords que los recruiters de tu rol buscan.
|
|
45
|
+
- Distribuilas en headline, About, experiencia, y la sección Skills.
|
|
46
|
+
- Las **Skills** (hasta 50, fijá las 3 top) alimentan el match con búsquedas y endorsements.
|
|
47
|
+
|
|
48
|
+
### 5. Propuesta de valor única
|
|
49
|
+
- Qué te diferencia: combinación de skills, dominio, resultados. Una frase clara que sintetiza "por qué vos".
|
|
50
|
+
|
|
51
|
+
### 6. Pitch de 30 segundos
|
|
52
|
+
- Versión hablada de tu propuesta de valor: quién sos, qué hacés/resolvés, qué buscás. Para mensajes, networking y el "contame de vos".
|
|
53
|
+
|
|
54
|
+
### 7. Review ATS / searchability
|
|
55
|
+
- Foto profesional, banner, URL personalizada, "Open to work" configurado (público o solo-recruiters), ubicación y rol objetivo seteados.
|
|
56
|
+
- Perfil completo = más alcance (LinkedIn premia completitud).
|
|
57
|
+
- Sin gaps inexplicados; títulos consistentes con cómo se busca el rol.
|
|
58
|
+
|
|
59
|
+
## Proceso
|
|
60
|
+
|
|
61
|
+
1. Leer el perfil maestro + lo que el usuario pega de su LinkedIn actual.
|
|
62
|
+
2. Definir el/los **rol(es) objetivo** y sus keywords (reusá `cv-tailor/references/ats-keywords.md` para el método).
|
|
63
|
+
3. Generar el contenido optimizado por sección (la/s que pida).
|
|
64
|
+
4. Entregar listo para copiar/pegar + un checklist de la review (área 7).
|
|
65
|
+
5. Opcional: guardar el output en `01-Perfiles/LinkedIn.md` para versionarlo.
|
|
66
|
+
|
|
67
|
+
## Idioma
|
|
68
|
+
|
|
69
|
+
LinkedIn en **inglés** si apuntás a roles internacionales (mayor alcance), español si tu mercado es local. Se puede tener el About bilingüe.
|
|
70
|
+
|
|
71
|
+
## Reglas
|
|
72
|
+
|
|
73
|
+
- No inventar logros ni métricas — todo debe ser defendible.
|
|
74
|
+
- Keywords naturales, no stuffing.
|
|
75
|
+
- Recordar que no se puede acceder/editar LinkedIn: el output es para copiar/pegar.
|
|
76
|
+
|
|
77
|
+
## Handoff
|
|
78
|
+
|
|
79
|
+
Pedí aprobación (approval) antes de escribir `01-Perfiles/LinkedIn.md`. Cuando el contenido está READY para copiar/pegar, un buen siguiente paso es `/portfolio-site` para alinear el portfolio web.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: master-profile
|
|
3
|
+
description: "Build and maintain the master professional profile — the single source of truth (experience, skills with levels, projects, education, references, bios) that every CV, LinkedIn profile and portfolio derives from. Triggers: perfil maestro, master resume, cronologia laboral, single source of truth CV, mi experiencia profesional."
|
|
4
|
+
argument-hint: "[build | update | derive <role>]"
|
|
5
|
+
category: "career"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
allowed-tools: Read, Glob, Grep, Write, Edit
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Master Profile — Single Source of Truth
|
|
11
|
+
|
|
12
|
+
Construís y mantenés el **perfil maestro**: el documento del que derivan todos los CVs, el LinkedIn y el portfolio. La regla de oro: **si algo cambia, se cambia acá primero** y de acá se sincroniza al resto.
|
|
13
|
+
|
|
14
|
+
Vive en `01-Perfiles/Perfil Maestro.md` dentro del career workspace. Los perfiles por rol (`Backend.md`, `Frontend.md`, etc.) son **vistas filtradas** del maestro, no fuentes independientes.
|
|
15
|
+
|
|
16
|
+
## Por qué existe
|
|
17
|
+
|
|
18
|
+
Mantener N CVs sincronizados a mano es la causa #1 de errores (fechas que no coinciden, logros que faltan en una versión). Con un maestro: editás un lado, derivás el resto. `/cv-tailor`, `/linkedin-optimize` y `/portfolio-site` consumen este archivo.
|
|
19
|
+
|
|
20
|
+
## Estructura del perfil maestro
|
|
21
|
+
|
|
22
|
+
Generá el archivo con estas secciones (todas las que apliquen):
|
|
23
|
+
|
|
24
|
+
1. **Personal info** — nombre, display name, headline actual, ubicación, email público vs personal, teléfono, LinkedIn, GitHub, portfolio. (El email *público* puede diferir del personal.)
|
|
25
|
+
2. **Bios** — tres largos: corto (hero/one-liner), medio (2–3 oraciones para "About"), largo (about page completo).
|
|
26
|
+
3. **Work experience** (más reciente primero) — por cada rol: empresa, período, ubicación/modalidad, producto, stack, manager/referencia, y **bullets de logros con número→contexto→resultado**.
|
|
27
|
+
4. **Education** — institución, período, foco.
|
|
28
|
+
5. **Certifications** — nombre, año, estado (completo/in progress).
|
|
29
|
+
6. **Skills consolidados con nivel** — agrupados (lenguajes, frameworks, infra, tooling) con nivel (Expert/Advanced/Proficient/…) y opcionalmente % para el portfolio.
|
|
30
|
+
7. **Projects** — tech, rol, highlights, link en vivo.
|
|
31
|
+
8. **Achievements / highlights** — premios, showcases, hitos.
|
|
32
|
+
9. **Languages** — idioma + nivel.
|
|
33
|
+
10. **References** — nombre, rol, relación, contacto.
|
|
34
|
+
|
|
35
|
+
## Modos
|
|
36
|
+
|
|
37
|
+
### `build` — Crear el maestro desde cero
|
|
38
|
+
1. Si no existe el workspace, sugerir `/job-hunt setup` primero.
|
|
39
|
+
2. Recolectar info por sección — preferí **entrevistar al usuario por bloques** (no un cuestionario gigante). Empezá por experiencia y skills.
|
|
40
|
+
3. Para cada logro, empujar a la forma **cuantificable**: "¿qué número podés ponerle? ¿comparado con qué? ¿qué resultado tuvo?". Un bullet sin métrica es una oportunidad perdida.
|
|
41
|
+
4. Escribir `01-Perfiles/Perfil Maestro.md`.
|
|
42
|
+
5. Sugerir derivar el primer perfil por rol: `/master-profile derive <role>`.
|
|
43
|
+
|
|
44
|
+
### `update` — Mantener al día
|
|
45
|
+
1. Leer el maestro actual.
|
|
46
|
+
2. Aplicar el cambio (nuevo rol, nuevo logro, ascenso, proyecto).
|
|
47
|
+
3. **Avisar qué derivados quedan desactualizados** (CVs por rol, LinkedIn, portfolio) y ofrecer re-derivarlos.
|
|
48
|
+
|
|
49
|
+
### `derive <role>` — Vista por rol
|
|
50
|
+
1. Leer el maestro.
|
|
51
|
+
2. Crear/actualizar `01-Perfiles/<Role>.md` con el template `Perfil` (ver `Templates/Perfil.md`): filtrar y reordenar la experiencia/skills/proyectos hacia ese rol, definir keywords objetivo, score mínimo y mercado.
|
|
52
|
+
3. Este perfil por rol es el `perfil_base` que después usa `/cv-tailor`.
|
|
53
|
+
|
|
54
|
+
## Principios de redacción
|
|
55
|
+
|
|
56
|
+
- **Logros, no responsabilidades.** "Reduje latencia de servidor 25%" > "Encargado del servidor".
|
|
57
|
+
- **Verbos de acción + métrica + impacto.** Owned, shipped, led, reduced, increased, scaled.
|
|
58
|
+
- **Verdad verificable.** Nada que no puedas defender en una entrevista.
|
|
59
|
+
- **Inglés para roles internacionales**, español cuando aplique. El maestro puede tener los valores en inglés (van directo a CV/portfolio) y las meta-notas en español.
|
|
60
|
+
|
|
61
|
+
## Reglas
|
|
62
|
+
|
|
63
|
+
- Una sola fuente de verdad: no dejar que un CV por rol "evolucione" por fuera del maestro.
|
|
64
|
+
- No inventar logros ni métricas — si el usuario no tiene el número, marcarlo como pendiente, no fabricarlo.
|
|
65
|
+
- Separar email público de personal; no exponer datos sensibles en archivos que vayan a un remoto.
|
|
66
|
+
|
|
67
|
+
## Handoff
|
|
68
|
+
|
|
69
|
+
Confirmá con el usuario (approval) antes de escribir el perfil maestro o pisar derivados. Cuando el maestro está READY, derivá perfiles por rol y seguí con `/cv-tailor`, `/linkedin-optimize` o `/portfolio-site`.
|