claude-code-arcane 1.1.1 → 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 +16 -0
- package/README.md +2 -0
- package/agents/engineering/dotnet-engineer.md +78 -0
- package/dist/cli.js +284 -72
- package/docs/RELEASE-SETUP.md +99 -0
- package/docs/SKILLS-CATALOG.md +26 -3
- package/docs/presentations/arcane-overview-12.pptx +0 -0
- package/docs/presentations/arcane-overview.pptx +0 -0
- package/docs/presentations/build_arcane_deck.py +310 -0
- package/docs/presentations/build_arcane_deck_12.py +399 -0
- 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
|
+
# Manual setup — Unity MCP
|
|
2
|
+
|
|
3
|
+
Referencia detallada para el flujo manual y troubleshooting de `/install-mcp`.
|
|
4
|
+
|
|
5
|
+
## Primario: CoplayDev "MCP for Unity" (`com.coplaydev.unity-mcp`)
|
|
6
|
+
|
|
7
|
+
### Package UPM
|
|
8
|
+
|
|
9
|
+
En `Packages/manifest.json`, dentro de `dependencies`:
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
"com.coplaydev.unity-mcp": "https://github.com/CoplayDev/unity-mcp.git?path=/MCPForUnity#main"
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Al abrir el proyecto, Unity descarga e importa el package desde el git URL.
|
|
16
|
+
|
|
17
|
+
### Levantar y registrar el server (desde Unity)
|
|
18
|
+
|
|
19
|
+
1. Abrir el proyecto en Unity.
|
|
20
|
+
2. `Window → MCP for Unity` abre el panel del package.
|
|
21
|
+
3. En el panel:
|
|
22
|
+
- El package instala/usa el server Python vía `uv`/`uvx` (paquete `mcp-for-unity`), transport HTTP en `127.0.0.1:8080`.
|
|
23
|
+
- Usar el botón de auto-config para el cliente **Claude Code** — escribe la config del cliente MCP y deja el server listo.
|
|
24
|
+
4. Dejar Unity abierto: el server MCP solo responde mientras el Editor está corriendo con el panel activo.
|
|
25
|
+
|
|
26
|
+
### Registro manual del cliente (sin GUI)
|
|
27
|
+
|
|
28
|
+
Si no se puede usar el botón de auto-config:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
claude mcp add --transport http unity-mcp http://127.0.0.1:8080
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
O escribir un `.mcp.json` en la raíz del proyecto:
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"mcpServers": {
|
|
39
|
+
"unity-mcp": {
|
|
40
|
+
"type": "http",
|
|
41
|
+
"url": "http://127.0.0.1:8080"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Verificar
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
claude mcp list
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
`unity-mcp` debe figurar conectado. Si no, ver troubleshooting.
|
|
54
|
+
|
|
55
|
+
## Troubleshooting
|
|
56
|
+
|
|
57
|
+
| Síntoma | Causa probable | Fix |
|
|
58
|
+
|---------|----------------|-----|
|
|
59
|
+
| `uv: command not found` | `uv` no instalado / no en PATH | `winget install astral-sh.uv` (o `pipx install uv`), reabrir terminal |
|
|
60
|
+
| `claude mcp list` no muestra `unity-mcp` | Cliente no registrado | Re-correr el paso 4 (auto-config o `claude mcp add`) |
|
|
61
|
+
| `unity-mcp` aparece pero **no conecta** | Unity cerrado o panel inactivo | Abrir Unity y `Window → MCP for Unity` |
|
|
62
|
+
| Puerto `8080` ocupado | Otro proceso usa 8080 | Cambiar el puerto en el panel de MCP for Unity y ajustar la URL en el registro del cliente |
|
|
63
|
+
| Operaciones de engine no se aplican | MCP desconectado | No asumir éxito: verificar conexión antes de operar; avisar al usuario |
|
|
64
|
+
|
|
65
|
+
## Secundario (opcional): CoderGamester `mcp-unity` (`com.gamelovers.mcp-unity`)
|
|
66
|
+
|
|
67
|
+
Server Node. Instalar con el flag `--secondary`.
|
|
68
|
+
|
|
69
|
+
### Package UPM
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
"com.gamelovers.mcp-unity": "https://github.com/CoderGamester/mcp-unity.git"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Server
|
|
76
|
+
|
|
77
|
+
Requiere `node` en PATH. El package incluye un server Node en `Server~/build/index.js` dentro del package cache (`Library/PackageCache/com.gamelovers.mcp-unity@.../Server~`). El registro del cliente apunta a ese `index.js`:
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"mcpServers": {
|
|
82
|
+
"mcp-unity": {
|
|
83
|
+
"command": "node",
|
|
84
|
+
"args": ["<ruta absoluta a Server~/build/index.js>"]
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
En TesisUade esta ruta la genera un editor tool propio (`Tools → Update MCP Unity Route`). Fuera de ese proyecto, ubicar el `index.js` en el `PackageCache` y registrar la ruta a mano.
|
|
91
|
+
|
|
92
|
+
> El primario (CoplayDev) es el oficial del set unity-dev. El secundario se mantiene solo por compatibilidad con proyectos que ya lo declaran.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: interview-prep
|
|
3
|
+
description: "Prepare for a job interview: company research, likely question bank by role, STAR answers built from your real experience, smart questions to ask, and red flags to watch for. Triggers: preparar entrevista, interview prep, preguntas de entrevista, respuestas STAR, que preguntar en una entrevista, mock interview, red flags entrevista."
|
|
4
|
+
argument-hint: "[application-note | company + role + round]"
|
|
5
|
+
category: "career"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
allowed-tools: Read, Glob, Grep, Write, Edit, WebFetch
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Interview Prep — Preparación de entrevista
|
|
11
|
+
|
|
12
|
+
Preparás al usuario para una entrevista concreta: research de la empresa, banco de preguntas probable según rol y ronda, respuestas **STAR** construidas desde su experiencia real, preguntas inteligentes para hacer, y red flags a detectar. El output queda en una nota de `06-Entrevistas/`.
|
|
13
|
+
|
|
14
|
+
## Inputs
|
|
15
|
+
|
|
16
|
+
- **Aplicación / empresa / rol** (`03-Aplicaciones/`, `04-Empresas/`) y la **ronda** (recruiter screen, técnica, system design, hiring manager, cultural, final).
|
|
17
|
+
- **Perfil maestro** (`01-Perfiles/`) — de ahí salen las historias para las respuestas STAR.
|
|
18
|
+
- **Entrevistadores** si se conocen (research de background ayuda).
|
|
19
|
+
|
|
20
|
+
## Qué producís
|
|
21
|
+
|
|
22
|
+
### 1. Research de la empresa
|
|
23
|
+
- Qué hacen, producto, modelo de negocio, etapa, tamaño.
|
|
24
|
+
- Cultura y valores (de su sitio, blog, reviews).
|
|
25
|
+
- Noticias recientes / financiación / lanzamientos.
|
|
26
|
+
- Stack técnico conocido.
|
|
27
|
+
- Cómo conectar tu perfil con su contexto.
|
|
28
|
+
|
|
29
|
+
### 2. Banco de preguntas por ronda
|
|
30
|
+
- **Recruiter screen:** motivación, expectativas salariales, disponibilidad, "contame de vos".
|
|
31
|
+
- **Técnica:** según stack del JD — fundamentos, problemas, debugging, code review.
|
|
32
|
+
- **System design** (si aplica): patrones, trade-offs, escala.
|
|
33
|
+
- **Hiring manager / comportamiento:** liderazgo, conflicto, fracaso, impacto.
|
|
34
|
+
- **Cultural:** valores, formas de trabajo, por qué esta empresa.
|
|
35
|
+
- Marcar las **3–5 más probables** para este rol específico.
|
|
36
|
+
|
|
37
|
+
### 3. Respuestas STAR
|
|
38
|
+
- Construir respuestas con el método **STAR** (Situación, Tarea, Acción, Resultado) usando logros reales del perfil maestro.
|
|
39
|
+
- Cada respuesta: concreta, con métrica, 60–90 segundos hablada.
|
|
40
|
+
- Ver `references/star-framework.md`.
|
|
41
|
+
|
|
42
|
+
### 4. Preguntas para hacer
|
|
43
|
+
- 5–7 preguntas inteligentes que demuestran research y filtran si la empresa te conviene (equipo, expectativas de los primeros 90 días, cómo miden éxito, deuda técnica, proceso).
|
|
44
|
+
|
|
45
|
+
### 5. Red flags a detectar
|
|
46
|
+
- Señales de mala empresa/equipo durante la entrevista (proceso caótico, evasión sobre cultura/turnover, expectativas irreales, falta de claridad de rol, hostilidad).
|
|
47
|
+
- Qué preguntar para sacarlas a la luz.
|
|
48
|
+
|
|
49
|
+
## Salario / negociación (si la ronda lo toca)
|
|
50
|
+
|
|
51
|
+
- No dar número primero si se puede evitar; preguntar rango.
|
|
52
|
+
- Anclar en research de mercado + tu valor (logros).
|
|
53
|
+
- Tener un rango (mínimo aceptable / objetivo / ambicioso) listo.
|
|
54
|
+
|
|
55
|
+
## Proceso
|
|
56
|
+
|
|
57
|
+
1. Leer aplicación + empresa + perfil. WebFetch del sitio/notas de la empresa.
|
|
58
|
+
2. Crear nota en `06-Entrevistas/` con el template `Entrevista`.
|
|
59
|
+
3. Llenar research, banco de preguntas (marcando las top), STAR de las 3–5 historias clave, preguntas a hacer, red flags.
|
|
60
|
+
4. Ofrecer un **mock**: vos hacés de entrevistador y das feedback sobre las respuestas.
|
|
61
|
+
5. Post-entrevista: ayudar a registrar feedback y definir próximo paso / follow-up (con `/cold-outreach`).
|
|
62
|
+
|
|
63
|
+
## Idioma
|
|
64
|
+
|
|
65
|
+
En el idioma de la entrevista. Preparar respuestas en inglés si el rol es internacional, aunque la prep se converse en español.
|
|
66
|
+
|
|
67
|
+
## Handoff
|
|
68
|
+
|
|
69
|
+
Pedí aprobación (approval) antes de escribir la nota en `06-Entrevistas/`. Cuando la prep está READY, ofrecé un mock; post-entrevista, seguí con `/cold-outreach` para el follow-up.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# STAR Framework — Respuestas de comportamiento
|
|
2
|
+
|
|
3
|
+
STAR estructura respuestas a preguntas de comportamiento ("contame de una vez que…") para que sean concretas, completas y memorables. La mayoría de los candidatos divaga; STAR te da una historia con resultado.
|
|
4
|
+
|
|
5
|
+
## Las 4 partes
|
|
6
|
+
|
|
7
|
+
- **S — Situación:** el contexto, breve. Dónde, cuándo, qué estaba pasando. (1–2 oraciones)
|
|
8
|
+
- **T — Tarea:** tu responsabilidad / el problema a resolver. (1 oración)
|
|
9
|
+
- **A — Acción:** qué hiciste *vos* (no "el equipo"). El grueso de la respuesta. Decisiones concretas. (2–4 oraciones)
|
|
10
|
+
- **R — Resultado:** el impacto, **con número** siempre que se pueda. Qué aprendiste. (1–2 oraciones)
|
|
11
|
+
|
|
12
|
+
Objetivo: 60–90 segundos hablado. Ni telegrama, ni monólogo de 5 minutos.
|
|
13
|
+
|
|
14
|
+
## Ejemplo
|
|
15
|
+
|
|
16
|
+
> **Pregunta:** "Contame de una vez que mejoraste el rendimiento de un sistema."
|
|
17
|
+
>
|
|
18
|
+
> **S:** En Acme nuestro servicio de matchmaking tenía picos de latencia que cortaban partidas.
|
|
19
|
+
> **T:** Como backend lead, me tocó bajar la latencia sin agregar infra.
|
|
20
|
+
> **A:** Perfilé el hot path, encontré queries N+1 y serialización redundante; introduje caching por sesión y batch de writes, y agregué métricas para validar.
|
|
21
|
+
> **R:** Latencia -25% y estabilidad del server +40%; duplicamos jugadores concurrentes sin sumar costos. Aprendí a medir antes de optimizar.
|
|
22
|
+
|
|
23
|
+
## Banco de historias (preparar 5–6)
|
|
24
|
+
|
|
25
|
+
Construí 5–6 historias STAR reutilizables desde el perfil maestro, cubriendo:
|
|
26
|
+
|
|
27
|
+
1. **Logro/impacto** del que estés orgulloso (con métrica).
|
|
28
|
+
2. **Problema técnico difícil** que resolviste.
|
|
29
|
+
3. **Conflicto / desacuerdo** con un compañero o stakeholder.
|
|
30
|
+
4. **Fracaso / error** y qué aprendiste (mostrá ownership, no excusas).
|
|
31
|
+
5. **Liderazgo / iniciativa** (lideraste algo, mentoreaste, empujaste un cambio).
|
|
32
|
+
6. **Ambigüedad / cambio de prioridades** que manejaste.
|
|
33
|
+
|
|
34
|
+
La misma historia puede servir para varias preguntas — lo que cambia es qué parte enfatizás.
|
|
35
|
+
|
|
36
|
+
## Errores comunes
|
|
37
|
+
|
|
38
|
+
- Quedarse en "nosotros" — la entrevista evalúa *tu* aporte. Decí "yo".
|
|
39
|
+
- Saltearse el Resultado, o un resultado sin número.
|
|
40
|
+
- Demasiada Situación, poca Acción.
|
|
41
|
+
- Historias vagas/inventadas que no aguantan repreguntas.
|
|
42
|
+
- No tener la historia de fracaso preparada (la piden casi siempre).
|
|
@@ -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.
|