claude-code-arcane 2.2.0 → 2.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 +22 -0
- package/README.md +56 -55
- package/agents/career/career-strategist.md +88 -0
- package/agents/career/cv-reviewer.md +81 -0
- package/agents/career/hiring-manager.md +68 -0
- package/agents/career/mock-interviewer.md +76 -0
- package/agents/freelance/client-screener.md +84 -0
- package/agents/freelance/discovery-call.md +65 -0
- package/agents/freelance/pipeline-strategist.md +99 -0
- package/agents/freelance/proposal-reviewer.md +82 -0
- package/dist/cli.js +52 -13
- package/docs/RELEASE-SETUP.md +1 -1
- package/docs/SKILLS-CATALOG.md +27 -3
- package/docs/USER-GUIDE.md +77 -72
- package/docs/agent-hierarchy.md +21 -1
- package/docs/presentations/build_arcane_deck.py +2 -2
- package/docs/presentations/build_arcane_deck_12.py +2 -2
- package/package.json +2 -2
- package/profiles/freelance.yaml +43 -0
- package/profiles/job-hunt.yaml +5 -2
- package/rules/drafter-reviewer.md +16 -3
- package/rules/freelance-guardrails.md +53 -0
- package/skills/career-registry/SKILL.md +95 -0
- package/skills/career-registry/scripts/career_registry.py +488 -0
- package/skills/client-screen/SKILL.md +83 -0
- package/skills/client-screen/references/red-flags.md +95 -0
- package/skills/cover-letter/SKILL.md +4 -3
- package/skills/cv-tailor/SKILL.md +11 -2
- package/skills/freelance-deliver/SKILL.md +90 -0
- package/skills/freelance-hunt/SKILL.md +126 -0
- package/skills/freelance-hunt/references/templates/Connects.md +39 -0
- package/skills/freelance-hunt/references/templates/Contrato.md +60 -0
- package/skills/freelance-hunt/references/templates/Propuesta.md +66 -0
- package/skills/freelance-kickoff/SKILL.md +94 -0
- package/skills/freelance-pipeline/SKILL.md +109 -0
- package/skills/freelance-pipeline/scripts/import_history.py +425 -0
- package/skills/freelance-profile/SKILL.md +93 -0
- package/skills/freelance-proposal/SKILL.md +112 -0
- package/skills/freelance-scan/SKILL.md +196 -0
- package/skills/freelance-scan/references/dedup.md +35 -0
- package/skills/freelance-scan/references/platforms.md +167 -0
- package/skills/freelance-scan/scripts/freelance_search.py +1077 -0
- package/skills/interview-prep/SKILL.md +11 -3
- package/skills/job-aplicar/SKILL.md +5 -1
- package/skills/job-hunt/SKILL.md +17 -0
- package/skills/job-outcome/SKILL.md +15 -1
- package/skills/job-upskill/SKILL.md +10 -2
|
@@ -4,7 +4,7 @@ description: "Prepare for a job interview: company research, likely question ban
|
|
|
4
4
|
argument-hint: "[application-note | company + role + round]"
|
|
5
5
|
category: "career"
|
|
6
6
|
user-invocable: true
|
|
7
|
-
allowed-tools: Read, Glob, Grep, Write, Edit, WebFetch
|
|
7
|
+
allowed-tools: Read, Glob, Grep, Write, Edit, WebFetch, Task
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Interview Prep - Preparación de entrevista
|
|
@@ -57,13 +57,21 @@ Preparás al usuario para una entrevista concreta: research de la empresa, banco
|
|
|
57
57
|
1. Leer aplicación + empresa + perfil. WebFetch del sitio/notas de la empresa.
|
|
58
58
|
2. Crear nota en `06-Entrevistas/` con el template `Entrevista`.
|
|
59
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
|
|
60
|
+
4. Ofrecer un **mock** con el agente `mock-interviewer` (ver abajo).
|
|
61
61
|
5. Post-entrevista: ayudar a registrar feedback y definir próximo paso / follow-up (con `/cold-outreach`).
|
|
62
62
|
|
|
63
|
+
## El mock va en un agente, no en esta sesión
|
|
64
|
+
|
|
65
|
+
El mock lo corre el agente `mock-interviewer`, no vos. La razón es dura: vos acabás de escribir las respuestas STAR del usuario, así que ibas a preguntar exactamente lo que preparó, iba a salir perfecto, y el usuario iba a entrar a la entrevista real con confianza falsa.
|
|
66
|
+
|
|
67
|
+
Al lanzarlo, pasale **inline**: el JD, la ronda, y el CV que se mandó. **No** le pases el perfil maestro ni la nota de `06-Entrevistas/` con las respuestas preparadas - eso invalida el simulacro, y el agente tiene instrucción de rechazarlos.
|
|
68
|
+
|
|
69
|
+
Cuando devuelve el feedback, tu trabajo es registrarlo: agregá en la nota de `06-Entrevistas/` qué respuestas hay que rehacer y por qué. Ese es el valor que queda para la próxima ronda.
|
|
70
|
+
|
|
63
71
|
## Idioma
|
|
64
72
|
|
|
65
73
|
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
74
|
|
|
67
75
|
## Handoff
|
|
68
76
|
|
|
69
|
-
Pedí aprobación (approval) antes de escribir la nota en `06-Entrevistas/`. Cuando la prep está READY, ofrecé
|
|
77
|
+
Pedí aprobación (approval) antes de escribir la nota en `06-Entrevistas/`. Cuando la prep está READY, ofrecé el mock con `mock-interviewer` y registrá su feedback; post-entrevista, seguí con `/cold-outreach` para el follow-up.
|
|
@@ -54,7 +54,11 @@ Usar el skill **cover-letter** según el canal de aplicación (formulario ATS
|
|
|
54
54
|
|
|
55
55
|
## Paso 7 - Reviewer (regla drafter-reviewer, obligatorio)
|
|
56
56
|
|
|
57
|
-
Seguir `.claude/rules/drafter-reviewer.md`: lanzar
|
|
57
|
+
Seguir `.claude/rules/drafter-reviewer.md`: lanzar el agente **`cv-reviewer`** de contexto fresco con el JD + borradores inline y el perfil usado. Aplicar la Parte A (reemplazos exactos) e incorporar lo relevante de la Parte B. Una sola ronda. Never stuff keywords: los gaps se reconocen en el cover, no se rellenan en el CV. Normalizar guiones largos del texto sugerido.
|
|
58
|
+
|
|
59
|
+
**Segunda lente si el rol es senior o la postulación importa:** lanzar `hiring-manager` **en paralelo** con `cv-reviewer` (no en cadena). Contesta si el CV convence a quien contrata, que es una pregunta distinta a si pasa el filtro. Sus 3 preguntas van a `## Notas` de la nota: son material directo de `/interview-prep`.
|
|
60
|
+
|
|
61
|
+
Si el directorio de agentes no está instalado, el fallback con `general-purpose` está en la regla.
|
|
58
62
|
|
|
59
63
|
## Paso 8 - CONFIRMACIÓN 2: aprobar CV final
|
|
60
64
|
|
package/skills/job-hunt/SKILL.md
CHANGED
|
@@ -67,6 +67,7 @@ Según el estado del workspace, recomendar el skill siguiente (ver routing).
|
|
|
67
67
|
| Corrida de búsqueda con CLIs y dedup entre corridas | `/job-scrape` |
|
|
68
68
|
| Postulación completa (nota + CV + cover + review + PDF) | `/job-aplicar` |
|
|
69
69
|
| Registrar resultado/avance de una postulación | `/job-outcome` |
|
|
70
|
+
| ¿Ya me postulé acá? / exportar el registro a CSV | `/career-registry` |
|
|
70
71
|
| Gaps de skills agregados + plan de estudio | `/job-upskill` |
|
|
71
72
|
| Adaptar CV a una oferta | `/cv-tailor` |
|
|
72
73
|
| Exportar CV a PDF ATS | `/cv-ats-export` |
|
|
@@ -75,6 +76,22 @@ Según el estado del workspace, recomendar el skill siguiente (ver routing).
|
|
|
75
76
|
| Optimizar perfil de LinkedIn | `/linkedin-optimize` |
|
|
76
77
|
| Crear/actualizar portfolio web | `/portfolio-site` |
|
|
77
78
|
| Preparar una entrevista | `/interview-prep` |
|
|
79
|
+
| Diagnosticar por qué se frena la búsqueda | agente `career-strategist` (vía `/job-upskill`) |
|
|
80
|
+
|
|
81
|
+
## Los 4 agentes del perfil
|
|
82
|
+
|
|
83
|
+
El perfil instala `agents/career/`. Los agentes existen por una sola razón: **hay lecturas que solo sirven con contexto fresco**. Vos no podés revisar un CV que acabás de escribir, ni entrevistar a alguien cuyas respuestas preparadas leíste. Son read-only: devuelven análisis, los archivos los escribe la sesión principal.
|
|
84
|
+
|
|
85
|
+
| Agente | Contesta | Lo lanza |
|
|
86
|
+
|---|---|---|
|
|
87
|
+
| `cv-reviewer` | ¿Pasa el filtro del ATS y del recruiter? | `/job-aplicar`, `/cv-tailor`, `/cover-letter` |
|
|
88
|
+
| `hiring-manager` | ¿Convence a quien contrata? (evidencia de impacto, no keywords) | `/job-aplicar`, `/cv-tailor` (opcional) |
|
|
89
|
+
| `mock-interviewer` | ¿Aguanta la entrevista real? | `/interview-prep` |
|
|
90
|
+
| `career-strategist` | ¿Por qué me frenan siempre en la misma etapa? | `/job-upskill` (10+ aplicaciones resueltas) |
|
|
91
|
+
|
|
92
|
+
`cv-reviewer` y `hiring-manager` se lanzan **en paralelo** cuando van los dos: son lentes independientes, encadenarlos solo suma latencia.
|
|
93
|
+
|
|
94
|
+
Si el usuario instaló el perfil sin el directorio de agentes, la regla `drafter-reviewer` documenta el fallback con `general-purpose`.
|
|
78
95
|
|
|
79
96
|
## Workflow estándar para una nueva oportunidad
|
|
80
97
|
|
|
@@ -35,14 +35,28 @@ Empresa/oferta indicada: `$ARGUMENTS`
|
|
|
35
35
|
- `rechazado` con feedback → anotar la lección en la nota; si se acumulan 3+ resoluciones, ofrecer `/job-upskill` y revisar los criterios de búsqueda contra los resultados reales.
|
|
36
36
|
- `sin_respuesta` a los 10-14 días → ofrecer follow-up con `/cold-outreach`.
|
|
37
37
|
- `contratado` → 🎉 y actualizar el resto de las aplicaciones abiertas (¿retirarse de procesos?).
|
|
38
|
+
- **Freelance** - `en_conversacion` → ofrecer ensayar con el agente `discovery-call`; `contrato_activo` → crear la nota en `08-Contratos/`; `sin_respuesta` o `rechazado` acumulados (10+ propuestas resueltas) → ofrecer `/freelance-pipeline`, que es donde se ve si el problema es la propuesta o el targeting.
|
|
38
39
|
|
|
39
40
|
6. **Confirmar** al usuario qué se registró (nota, campos tocados, fila del dashboard).
|
|
40
41
|
|
|
41
42
|
## Vocabulario de `estado` (frontmatter)
|
|
42
43
|
|
|
44
|
+
Depende del `tipo:` de la nota. Leelo primero: son dos pipelines distintos y confundirlos rompe el dashboard y los reportes.
|
|
45
|
+
|
|
46
|
+
**`tipo: aplicacion` (empleo, perfil `+job-hunt`):**
|
|
47
|
+
|
|
43
48
|
`interesado → aplicado → entrevista → oferta` y cierra en: `contratado | rechazado | sin_respuesta | declinada | descartado`
|
|
44
49
|
|
|
45
|
-
|
|
50
|
+
**`tipo: freelance` (propuestas, perfil `+freelance`):**
|
|
51
|
+
|
|
52
|
+
`interesado → screeneado → propuesta_enviada → en_conversacion → contrato_activo → entregado` y cierra en: `ganado_cerrado | sin_respuesta | rechazado | descartado | disputa`
|
|
53
|
+
|
|
54
|
+
En freelance hay dos registros extra que no existen en empleo, y sin ellos `/freelance-pipeline` no puede calcular nada:
|
|
55
|
+
|
|
56
|
+
- Al marcar `propuesta_enviada`, preguntar y registrar **cuántos Connects costó** (frontmatter `connects_gastados`) y agregar la fila al ledger de `07-Recursos/Connects - <año>.md`.
|
|
57
|
+
- Si la oferta se cerró sin que el cliente contratara a nadie, el resultado en el ledger es `oferta_nunca_contrato`, no `sin_respuesta`. Son cosas distintas: la primera es Connects perdidos por mal screening, la segunda es tu propuesta que no convenció.
|
|
58
|
+
|
|
59
|
+
Emojis del dashboard: ⬜ interesado/screeneado · ✅ aplicado/propuesta_enviada · 📅 entrevista/oferta/en_conversacion · 🔨 contrato_activo/entregado · ❌ rechazado/sin_respuesta/declinada · 🚫 descartado/cerrada · ⚠️ disputa
|
|
46
60
|
|
|
47
61
|
## Reglas
|
|
48
62
|
|
|
@@ -4,7 +4,7 @@ description: "Aggregate skill gaps across all scored job applications, weigh the
|
|
|
4
4
|
argument-hint: "[url | nota de aplicación]"
|
|
5
5
|
category: "career"
|
|
6
6
|
user-invocable: true
|
|
7
|
-
allowed-tools: Read, Glob, Grep, Write, Bash, WebFetch, WebSearch
|
|
7
|
+
allowed-tools: Read, Glob, Grep, Write, Bash, WebFetch, WebSearch, Task
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# /job-upskill - Análisis de gaps y plan de estudio
|
|
@@ -13,6 +13,14 @@ Detecta qué skills te están costando puntos de match en las ofertas reales y a
|
|
|
13
13
|
|
|
14
14
|
Argumento: `$ARGUMENTS` (vacío = modo agregado; URL o nota = modo targeted)
|
|
15
15
|
|
|
16
|
+
## Antes del plan: ¿el gap es real o de presentación?
|
|
17
|
+
|
|
18
|
+
Este skill asume que la respuesta es estudiar. A veces no lo es: si la experiencia está en el perfil maestro pero no llega al CV, el plan de estudio manda al usuario a aprender meses lo que ya sabe.
|
|
19
|
+
|
|
20
|
+
En **modo agregado con 10+ aplicaciones resueltas**, lanzar primero el agente `career-strategist` (contexto fresco, read-only). Diagnostica el embudo completo y separa gap real de gap de presentación. Si el punto de fuga no es la etapa técnica, decílo antes del heatmap: el plan de estudio no es la palanca y conviene ir a `/cv-tailor` o `/interview-prep`.
|
|
21
|
+
|
|
22
|
+
Con menos de 10 resueltas, saltear: no hay volumen para un embudo y el propio agente lo va a rechazar. Seguí directo al modo agregado.
|
|
23
|
+
|
|
16
24
|
## Modo agregado (sin argumento)
|
|
17
25
|
|
|
18
26
|
1. **Recolectar evidencia.** Grep de `match_score:` en `03-Aplicaciones/*.md` (excluir `_index`; aceptar también el campo legacy `score:` de notas viejas). De cada nota leer: `match_score`, `estado`, `perfil`, y los gaps mencionados en las secciones "Match con mi perfil" / "Gaps reales" y los gaps reconocidos en `## Notas`.
|
|
@@ -55,4 +63,4 @@ Argumento: `$ARGUMENTS` (vacío = modo agregado; URL o nota = modo targeted)
|
|
|
55
63
|
|
|
56
64
|
## Handoff
|
|
57
65
|
|
|
58
|
-
Reporte COMPLETE en `07-Recursos/`. Retomar el pipeline con `/job-aplicar` en las ofertas abiertas, o `/job-scrape` para una corrida nueva apuntando a los gaps que ya se están cerrando.
|
|
66
|
+
Reporte COMPLETE en `07-Recursos/`. Retomar el pipeline con `/job-aplicar` en las ofertas abiertas, o `/job-scrape` para una corrida nueva apuntando a los gaps que ya se están cerrando. Si el `career-strategist` ubicó la fuga fuera de la etapa técnica, el siguiente paso es ese (`/cv-tailor`, `/interview-prep` o `/job-search`), no el plan de estudio.
|