claude-code-arcane 2.2.0 → 2.4.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.
Files changed (144) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +104 -55
  3. package/agents/career/career-strategist.md +88 -0
  4. package/agents/career/cv-reviewer.md +81 -0
  5. package/agents/career/hiring-manager.md +68 -0
  6. package/agents/career/mock-interviewer.md +76 -0
  7. package/agents/freelance/client-screener.md +84 -0
  8. package/agents/freelance/discovery-call.md +65 -0
  9. package/agents/freelance/pipeline-strategist.md +99 -0
  10. package/agents/freelance/proposal-reviewer.md +82 -0
  11. package/agents/game/ue-blueprint-specialist.md +125 -0
  12. package/agents/game/ue-gas-specialist.md +133 -0
  13. package/agents/game/ue-umg-specialist.md +131 -0
  14. package/dist/cli.js +57 -13
  15. package/docs/RELEASE-SETUP.md +1 -1
  16. package/docs/SKILLS-CATALOG.md +67 -4
  17. package/docs/USER-GUIDE.md +77 -72
  18. package/docs/agent-hierarchy.md +21 -1
  19. package/docs/presentations/build_arcane_deck.py +2 -2
  20. package/docs/presentations/build_arcane_deck_12.py +2 -2
  21. package/hooks/detect-unreal.sh +90 -0
  22. package/package.json +2 -2
  23. package/profiles/freelance.yaml +43 -0
  24. package/profiles/job-hunt.yaml +5 -2
  25. package/profiles/unreal-dev.yaml +97 -0
  26. package/rules/drafter-reviewer.md +16 -3
  27. package/rules/freelance-guardrails.md +53 -0
  28. package/rules/gamedev/unreal-code.md +125 -0
  29. package/skills/career-registry/SKILL.md +95 -0
  30. package/skills/career-registry/scripts/career_registry.py +488 -0
  31. package/skills/client-screen/SKILL.md +83 -0
  32. package/skills/client-screen/references/red-flags.md +95 -0
  33. package/skills/cover-letter/SKILL.md +4 -3
  34. package/skills/cv-tailor/SKILL.md +11 -2
  35. package/skills/freelance-deliver/SKILL.md +90 -0
  36. package/skills/freelance-hunt/SKILL.md +126 -0
  37. package/skills/freelance-hunt/references/templates/Connects.md +39 -0
  38. package/skills/freelance-hunt/references/templates/Contrato.md +60 -0
  39. package/skills/freelance-hunt/references/templates/Propuesta.md +66 -0
  40. package/skills/freelance-kickoff/SKILL.md +94 -0
  41. package/skills/freelance-pipeline/SKILL.md +109 -0
  42. package/skills/freelance-pipeline/scripts/import_history.py +425 -0
  43. package/skills/freelance-profile/SKILL.md +93 -0
  44. package/skills/freelance-proposal/SKILL.md +112 -0
  45. package/skills/freelance-scan/SKILL.md +196 -0
  46. package/skills/freelance-scan/references/dedup.md +35 -0
  47. package/skills/freelance-scan/references/platforms.md +167 -0
  48. package/skills/freelance-scan/scripts/freelance_search.py +1077 -0
  49. package/skills/install-mcp/SKILL.md +135 -46
  50. package/skills/install-mcp/references/unreal-operations.md +55 -0
  51. package/skills/interview-prep/SKILL.md +11 -3
  52. package/skills/job-aplicar/SKILL.md +5 -1
  53. package/skills/job-hunt/SKILL.md +17 -0
  54. package/skills/job-outcome/SKILL.md +15 -1
  55. package/skills/job-upskill/SKILL.md +10 -2
  56. package/skills/ue-actor-component-architecture/SKILL.md +509 -0
  57. package/skills/ue-actor-component-architecture/references/actor-lifecycle.md +301 -0
  58. package/skills/ue-actor-component-architecture/references/component-types.md +592 -0
  59. package/skills/ue-ai-navigation/SKILL.md +526 -0
  60. package/skills/ue-ai-navigation/references/behavior-tree-patterns.md +392 -0
  61. package/skills/ue-ai-navigation/references/behavior-tree-workflow.md +107 -0
  62. package/skills/ue-ai-navigation/references/custom-bttask.md +104 -0
  63. package/skills/ue-ai-navigation/references/eqs-reference.md +423 -0
  64. package/skills/ue-animation-system/SKILL.md +521 -0
  65. package/skills/ue-animation-system/references/anim-notify-reference.md +486 -0
  66. package/skills/ue-animation-system/references/locomotion-setup.md +550 -0
  67. package/skills/ue-async-threading/SKILL.md +433 -0
  68. package/skills/ue-async-threading/references/thread-safety-guide.md +213 -0
  69. package/skills/ue-async-threading/references/threading-patterns.md +345 -0
  70. package/skills/ue-audio-system/SKILL.md +527 -0
  71. package/skills/ue-audio-system/references/audio-setup-patterns.md +700 -0
  72. package/skills/ue-blueprints/SKILL.md +134 -0
  73. package/skills/ue-blueprints/references/communication.md +82 -0
  74. package/skills/ue-character-movement/SKILL.md +475 -0
  75. package/skills/ue-character-movement/references/cmc-extension-patterns.md +335 -0
  76. package/skills/ue-character-movement/references/movement-pipeline.md +189 -0
  77. package/skills/ue-cpp-foundations/SKILL.md +533 -0
  78. package/skills/ue-cpp-foundations/references/components-and-gc.md +107 -0
  79. package/skills/ue-cpp-foundations/references/container-patterns.md +544 -0
  80. package/skills/ue-cpp-foundations/references/delegate-patterns.md +497 -0
  81. package/skills/ue-cpp-foundations/references/gameplay-classes-cpp.md +136 -0
  82. package/skills/ue-cpp-foundations/references/property-specifiers.md +306 -0
  83. package/skills/ue-data-assets-tables/SKILL.md +527 -0
  84. package/skills/ue-data-assets-tables/references/asset-loading-patterns.md +306 -0
  85. package/skills/ue-data-assets-tables/references/data-driven-design.md +378 -0
  86. package/skills/ue-editor-tools/SKILL.md +523 -0
  87. package/skills/ue-editor-tools/references/detail-customization-patterns.md +395 -0
  88. package/skills/ue-editor-tools/references/editor-module-setup.md +480 -0
  89. package/skills/ue-game-features/SKILL.md +477 -0
  90. package/skills/ue-game-features/references/experience-system.md +222 -0
  91. package/skills/ue-game-features/references/game-feature-patterns.md +308 -0
  92. package/skills/ue-gameplay-abilities/SKILL.md +518 -0
  93. package/skills/ue-gameplay-abilities/references/ability-task-reference.md +391 -0
  94. package/skills/ue-gameplay-abilities/references/gameplay-effect-reference.md +397 -0
  95. package/skills/ue-gameplay-abilities/references/gas-setup-patterns.md +369 -0
  96. package/skills/ue-gameplay-framework/SKILL.md +466 -0
  97. package/skills/ue-gameplay-framework/references/framework-class-map.md +243 -0
  98. package/skills/ue-input-system/SKILL.md +394 -0
  99. package/skills/ue-input-system/references/cpp-setup.md +131 -0
  100. package/skills/ue-input-system/references/enhanced-input-workflow.md +117 -0
  101. package/skills/ue-input-system/references/input-action-reference.md +731 -0
  102. package/skills/ue-mass-entity/SKILL.md +476 -0
  103. package/skills/ue-mass-entity/references/mass-entity-patterns.md +319 -0
  104. package/skills/ue-mass-entity/references/mass-fragment-reference.md +119 -0
  105. package/skills/ue-materials-rendering/SKILL.md +526 -0
  106. package/skills/ue-materials-rendering/references/material-parameter-reference.md +216 -0
  107. package/skills/ue-materials-rendering/references/post-process-settings.md +383 -0
  108. package/skills/ue-module-build-system/SKILL.md +487 -0
  109. package/skills/ue-module-build-system/references/build-cs-reference.md +418 -0
  110. package/skills/ue-module-build-system/references/common-build-errors.md +381 -0
  111. package/skills/ue-naming-conventions/SKILL.md +142 -0
  112. package/skills/ue-naming-conventions/references/asset-name-modifiers.md +233 -0
  113. package/skills/ue-naming-conventions/references/content-structure.md +83 -0
  114. package/skills/ue-networking-replication/SKILL.md +452 -0
  115. package/skills/ue-networking-replication/references/replication-patterns.md +526 -0
  116. package/skills/ue-networking-replication/references/rpc-decision-guide.md +393 -0
  117. package/skills/ue-niagara-effects/SKILL.md +531 -0
  118. package/skills/ue-niagara-effects/references/niagara-data-interfaces.md +491 -0
  119. package/skills/ue-niagara-effects/references/niagara-parameter-types.md +153 -0
  120. package/skills/ue-niagara-effects/references/niagara-workflow.md +115 -0
  121. package/skills/ue-packaging/SKILL.md +116 -0
  122. package/skills/ue-physics-collision/SKILL.md +423 -0
  123. package/skills/ue-physics-collision/references/collision-channel-setup.md +218 -0
  124. package/skills/ue-physics-collision/references/trace-patterns.md +499 -0
  125. package/skills/ue-procedural-generation/SKILL.md +505 -0
  126. package/skills/ue-procedural-generation/references/pcg-node-reference.md +381 -0
  127. package/skills/ue-procedural-generation/references/procedural-mesh-patterns.md +940 -0
  128. package/skills/ue-project-context/SKILL.md +305 -0
  129. package/skills/ue-sequencer-cinematics/SKILL.md +506 -0
  130. package/skills/ue-sequencer-cinematics/references/sequencer-patterns.md +629 -0
  131. package/skills/ue-serialization-savegames/SKILL.md +524 -0
  132. package/skills/ue-serialization-savegames/references/save-system-architecture.md +705 -0
  133. package/skills/ue-state-trees/SKILL.md +489 -0
  134. package/skills/ue-state-trees/references/state-tree-mass-integration.md +184 -0
  135. package/skills/ue-state-trees/references/state-tree-patterns.md +321 -0
  136. package/skills/ue-testing-debugging/SKILL.md +520 -0
  137. package/skills/ue-testing-debugging/references/automation-test-patterns.md +387 -0
  138. package/skills/ue-testing-debugging/references/profiling-commands.md +357 -0
  139. package/skills/ue-ui-umg-slate/SKILL.md +431 -0
  140. package/skills/ue-ui-umg-slate/references/common-ui-setup.md +484 -0
  141. package/skills/ue-ui-umg-slate/references/widget-types.md +487 -0
  142. package/skills/ue-world-level-streaming/SKILL.md +518 -0
  143. package/skills/ue-world-level-streaming/references/streaming-patterns.md +414 -0
  144. package/templates/gamedev/unreal-project-context.md +107 -0
@@ -1,45 +1,60 @@
1
1
  ---
2
2
  name: install-mcp
3
- description: "Instala y registra el MCP de Unity (CoplayDev MCP for Unity) en un proyecto Unity + Claude Code: agrega el package UPM, registra el server MCP y verifica la conexion. Usar para: instalar mcp unity, conectar Claude con Unity, setup MCP Unity."
3
+ description: "Conecta Claude Code con el MCP del engine: Unity (package UPM CoplayDev) o Unreal (plugins del engine). Detecta, registra y verifica. Usar para: mcp unity, mcp unreal, setup MCP del editor."
4
4
  category: "gamedev"
5
- argument-hint: "[--secondary] [project-path]"
5
+ argument-hint: "[unity | unreal] [--secondary] [project-path]"
6
6
  user-invocable: true
7
7
  allowed-tools: Read, Glob, Grep, Bash, Write, Edit
8
8
  ---
9
- # install-mcp — Unity MCP Setup
9
+ # install-mcp — Engine MCP Setup
10
10
 
11
- Instala el package MCP del lado Unity y registra el server MCP en Claude Code, replicando el setup usado en los proyectos de tesis (TesisUade).
11
+ Conecta Claude Code con el editor del engine via MCP. Los dos engines difieren en algo importante:
12
12
 
13
- - **Package primario:** `com.coplaydev.unity-mcp` (CoplayDev "MCP for Unity"). Server Python vía `uv`/`uvx`, transport HTTP en `127.0.0.1:8080`. El server se levanta y auto-configura desde Unity en `Window → MCP for Unity`.
14
- - **Package secundario (opcional, flag `--secondary`):** `com.gamelovers.mcp-unity` (CoderGamester). Server Node.
13
+ | | Unity | Unreal |
14
+ |---|---|---|
15
+ | **De donde viene el MCP** | Package de terceros (CoplayDev) | **Plugins propios del engine** (`ModelContextProtocol` + `AllToolsets`) |
16
+ | **Se suma algo al proyecto** | Si — package UPM en `Packages/manifest.json` | **No** — ya viene con el engine, solo se habilita |
17
+ | **Que hace este skill** | Instalar + registrar + verificar | Habilitar + conectar + verificar |
15
18
 
16
- > El flujo de Unity (`Window → MCP for Unity`) requiere la GUI del Editor — Claude no puede manejarla. La skill automatiza lo que sí puede (editar `manifest.json`, registrar el cliente MCP, verificar) y **guía** el paso del Editor.
19
+ > En Unreal **no hay nada que instalar**. El server y los toolsets son plugins del engine; el trabajo es habilitarlos en el `.uproject`, prender auto-start y generar el `.mcp.json`. No agregues packages ni plugins de terceros.
17
20
 
18
21
  ## Input
19
22
 
20
- - `project-path` (opcional): raíz del proyecto Unity. Default: directorio actual.
21
- - `--secondary` (opcional): además del primario, instala el package CoderGamester.
23
+ - `unity` | `unreal` (opcional): fuerza el engine. Sin argumento, se autodetecta.
24
+ - `project-path` (opcional): raiz del proyecto. Default: directorio actual.
25
+ - `--secondary` (opcional, **solo Unity**): ademas del primario, instala el package CoderGamester.
22
26
 
23
27
  ---
24
28
 
25
- ## Workflow
29
+ ## Phase 1: Detectar el engine
26
30
 
27
- ### 1. Detectar proyecto Unity
31
+ Desde `project-path` (o cwd), buscar marcadores:
28
32
 
29
- Desde `project-path` (o cwd), confirmar que existen:
30
- - `Packages/manifest.json`
31
- - `ProjectSettings/ProjectVersion.txt`
33
+ | Marcador | Engine |
34
+ |---|---|
35
+ | `Packages/manifest.json` + `ProjectSettings/ProjectVersion.txt` | Unity |
36
+ | `*.uproject` (o `GenerateProjectFiles.*` en un source tree) | Unreal |
32
37
 
33
- Si falta alguno, **abortar** con: "No parece un proyecto Unity (falta Packages/manifest.json o ProjectSettings/ProjectVersion.txt). Pasá la ruta del proyecto con `/install-mcp <project-path>`."
38
+ - Si el argumento explicito contradice los marcadores, **avisar y preguntar** antes de seguir.
39
+ - Si no hay marcadores, **abortar**: "No parece un proyecto Unity ni Unreal. Pasa la ruta con `/install-mcp [unity|unreal] <project-path>`."
40
+ - Si aparecen ambos, preguntar cual.
34
41
 
35
- ### 2. Verificar prerrequisitos
42
+ Confirmar el engine detectado y la ruta antes de tocar archivos.
36
43
 
37
- - `uv --version` y `uvx --version` (server del primario). Si falta `uv`, **no abortar**: avisar y dar el comando de install y seguir editando el manifest:
38
- - Windows: `winget install astral-sh.uv`
39
- - alternativa: `pipx install uv`
40
- - Solo con `--secondary`: `node --version`. Si falta, avisar (el server CoderGamester no podrá correr).
44
+ ---
45
+
46
+ ## Phase 2A: Unity — instalar y registrar
47
+
48
+ ### 1. Verificar prerrequisitos
49
+
50
+ `uv --version` y `uvx --version` (server del primario). Si falta `uv`, **no abortar**: avisar, dar el comando y seguir editando el manifest.
51
+
52
+ - Windows: `winget install astral-sh.uv`
53
+ - alternativa: `pipx install uv`
54
+
55
+ Solo con `--secondary`: `node --version`. Si falta, avisar (el server CoderGamester no podra correr).
41
56
 
42
- ### 3. Agregar el package UPM (lado Unity)
57
+ ### 2. Agregar el package UPM
43
58
 
44
59
  Leer `Packages/manifest.json`. Dentro de `"dependencies"`, agregar **solo si la key no existe** (idempotente — nunca duplicar):
45
60
 
@@ -47,61 +62,135 @@ Leer `Packages/manifest.json`. Dentro de `"dependencies"`, agregar **solo si la
47
62
  "com.coplaydev.unity-mcp": "https://github.com/CoplayDev/unity-mcp.git?path=/MCPForUnity#main"
48
63
  ```
49
64
 
50
- Con `--secondary`, agregar también:
65
+ Con `--secondary`, agregar tambien:
51
66
 
52
67
  ```json
53
68
  "com.gamelovers.mcp-unity": "https://github.com/CoderGamester/mcp-unity.git"
54
69
  ```
55
70
 
56
- Usar `Edit` puntual sobre el bloque `dependencies` preservando el JSON válido (indentación, comas). Si la key ya estaba, reportar "ya presente, sin cambios".
71
+ Usar `Edit` puntual sobre el bloque `dependencies` preservando el JSON valido (indentacion, comas). Si la key ya estaba, reportar "ya presente, sin cambios".
57
72
 
58
- > **Antes de escribir**, mostrar el diff propuesto sobre `manifest.json` (y el `.mcp.json` del paso 4B si aplica) y pedir aprobación al usuario. No editar sin confirmación.
73
+ > **Antes de escribir**, mostrar el diff propuesto sobre `manifest.json` (y el `.mcp.json` del paso 3B si aplica) y pedir aprobacion al usuario. No editar sin confirmacion.
59
74
 
60
- ### 4. Registrar el server MCP en Claude Code
61
-
62
- Dos caminos, en orden de preferencia:
75
+ ### 3. Registrar el server en Claude Code
63
76
 
64
77
  **A. Recomendado (auto-config desde Unity).** Instruir al usuario:
65
- 1. Abrir el proyecto en Unity (Unity importará el package nuevo).
78
+ 1. Abrir el proyecto en Unity (importara el package nuevo).
66
79
  2. `Window → MCP for Unity`.
67
- 3. En esa ventana, usar el botón de auto-configuración para **Claude Code** — instala el server `uv` y registra el cliente MCP automáticamente.
80
+ 3. Usar el boton de auto-configuracion para **Claude Code** — instala el server `uv` y registra el cliente.
68
81
 
69
- **B. Fallback manual.** Si el usuario no puede usar el Editor ahora, registrar el transport HTTP que usa CoplayDev:
82
+ **B. Fallback manual.** Registrar el transport HTTP de CoplayDev:
70
83
 
71
84
  ```bash
72
85
  claude mcp add --transport http unity-mcp http://127.0.0.1:8080
73
86
  ```
74
87
 
75
- (equivalente: escribir un `.mcp.json` de proyecto con
76
- `{"mcpServers":{"unity-mcp":{"type":"http","url":"http://127.0.0.1:8080"}}}`).
88
+ > El server solo responde con Unity abierto y `MCP for Unity` activo. Registrar el cliente no levanta el server.
89
+
90
+ ---
91
+
92
+ ## Phase 2B: Unreal — habilitar y conectar
93
+
94
+ Nada se instala. Tres pasos, en orden. **No edites el `.uproject` sin confirmar la ruta con el usuario.**
95
+
96
+ ### 1. Habilitar los plugins del engine en el `.uproject`
97
+
98
+ Dos plugins, ambos requeridos. `ModelContextProtocol` es el server y el transport; `AllToolsets` provee las tools. Con solo `ModelContextProtocol` el server arranca pero **no expone ninguna tool**.
99
+
100
+ En el array `Plugins` del `.uproject`, asegurar las dos entradas:
101
+
102
+ ```json
103
+ { "Name": "ModelContextProtocol", "Enabled": true },
104
+ { "Name": "AllToolsets", "Enabled": true }
105
+ ```
106
+
107
+ Si el array no existe, crearlo. Si alguna entrada esta en `"Enabled": false`, pasarla a `true`. Mostrar el diff y pedir aprobacion antes de escribir.
108
+
109
+ `AllToolsets` es un agregador editor-only con `EnabledByDefault` apagado, asi que hay que habilitarlo explicitamente. Para exponer solo un subconjunto, habilitar los plugins de toolset puntuales en lugar de `AllToolsets`.
110
+
111
+ ### 2. Prender auto-start
77
112
 
78
- > El server solo responde cuando Unity está abierto con `MCP for Unity` activo. Registrar el cliente no levanta el server.
113
+ Por default el server queda detenido. Para arrancarlo a mano en una sesion: `ModelContextProtocol.StartServer` desde la consola del editor.
79
114
 
80
- ### 5. Verificar
115
+ Para que arranque en cada launch, agregar al config per-user del editor:
81
116
 
82
- Correr:
117
+ `<Project>/Saved/Config/<Platform>Editor/EditorPerProjectUserSettings.ini`
118
+
119
+ ```ini
120
+ [/Script/ModelContextProtocolEngine.ModelContextProtocolSettings]
121
+ bAutoStartServer=True
122
+ ```
123
+
124
+ Es per-user y no va a source control. Overrides opcionales si el default choca con otro servicio local:
125
+
126
+ ```ini
127
+ ServerPortNumber=8000
128
+ ServerUrlPath=/mcp
129
+ ```
130
+
131
+ Alternativa por command line: `-ModelContextProtocolStartServer` (y `-ModelContextProtocolPort=<port>`). Preferir el `.ini` porque persiste.
132
+
133
+ ### 3. Generar el `.mcp.json`
134
+
135
+ El editor no lo escribe solo.
136
+
137
+ **Con el editor corriendo (preferido):** `ModelContextProtocol.GenerateClientConfig ClaudeCode` en la consola (o `All` para todos los clientes soportados). Re-correrlo mergea sobre el JSON existente, asi que es seguro despues de cambiar puerto o path.
138
+
139
+ El destino depende del tipo de build:
140
+ - **Source build** (el repo contiene `Engine/`): se escribe en la raiz del workspace, al lado de `Engine/` — **no** junto al `.uproject`.
141
+ - **Installed/launcher build**: se escribe junto al `.uproject`.
142
+
143
+ **Sin lanzar el editor**, escribir a mano en la ubicacion que corresponda:
144
+
145
+ ```json
146
+ {
147
+ "mcpServers": {
148
+ "unreal-mcp": {
149
+ "type": "http",
150
+ "url": "http://127.0.0.1:8000/mcp"
151
+ }
152
+ }
153
+ }
154
+ ```
155
+
156
+ Ajustar la URL si se override el puerto o el path en el paso 2.
157
+
158
+ ---
159
+
160
+ ## Phase 3: Verificar
83
161
 
84
162
  ```bash
85
163
  claude mcp list
86
164
  ```
87
165
 
88
- Reportar si `unity-mcp` aparece **conectado**. Seguir la guía de TesisUade: **si NO está conectado, avisar explícitamente** y aclarar que las operaciones de engine (scenes, SOs, prefabs, UI wiring) NO se aplicaron — no asumir éxito.
166
+ Reportar si el server aparece **conectado** (`unity-mcp` o `unreal-mcp` segun el engine). En Unreal, dos senales extra: el Output Log muestra mensajes de arranque del MCP, y `list_toolsets` responde.
89
167
 
90
- ### 6. Resumen
168
+ **Si NO esta conectado, avisar explicitamente** y aclarar que las operaciones de engine (scenes, assets, blueprints, prefabs, UI wiring) NO se aplicaron — no asumir exito.
169
+
170
+ ---
171
+
172
+ ## Phase 4: Resumen
91
173
 
92
174
  Reportar:
93
- - Qué keys se agregaron a `manifest.json` (o si ya estaban).
94
- - Estado del registro MCP (auto-config pendiente en Unity vs. fallback aplicado).
95
- - Resultado de `claude mcp list`.
96
- - Próximo paso manual: abrir Unity → `Window → MCP for Unity`.
175
+ - Engine detectado y ruta del proyecto.
176
+ - **Unity:** que keys se agregaron a `manifest.json` (o si ya estaban).
177
+ - **Unreal:** que plugins se habilitaron en el `.uproject`, si se prendio auto-start, y donde quedo el `.mcp.json`.
178
+ - Estado del registro y resultado de `claude mcp list`.
179
+ - Proximo paso manual, si queda alguno.
97
180
 
98
181
  **Verdict:**
99
- - **READY** — package en `manifest.json` + cliente registrado + `unity-mcp` conectado en `claude mcp list`.
100
- - **PENDING** — package y cliente listos, pero falta abrir Unity (`Window → MCP for Unity`) para que el server conecte. Avisar que las operaciones de engine aún NO están disponibles.
101
- - **BLOCKED** — falta un prerrequisito (`uv` ausente) o no es un proyecto Unity válido. Indicar el fix.
182
+ - **READY** — server registrado y conectado en `claude mcp list`.
183
+ - **PENDING** — config lista, pero falta abrir el editor para que el server conecte (Unity: `Window → MCP for Unity`; Unreal: lanzar el editor con auto-start, o `ModelContextProtocol.StartServer`). Avisar que las operaciones de engine aun NO estan disponibles.
184
+ - **BLOCKED** — falta un prerrequisito (`uv` ausente en Unity), el `.uproject` no se pudo editar, o no es un proyecto valido. Indicar el fix.
102
185
 
103
- Tras conectar, seguir con `/unity-game-architecture` o `/scaffold-unity` para trabajar el proyecto.
186
+ ## Next Steps
187
+
188
+ - **Unity:** `/unity-game-architecture` o `/scaffold-unity` para trabajar el proyecto
189
+ - **Unreal:** `/ue-project-context` primero (el resto de los `ue-*` lo leen), despues `/ue-cpp-foundations` o `/ue-blueprints`
190
+ - Si el server no conecta, ver el troubleshooting de la referencia del engine que corresponda
104
191
 
105
192
  ---
106
193
 
107
- > → Read references/manual-setup.md for [pasos detallados del flujo Window → MCP for Unity, troubleshooting (uv no encontrado, puerto 8080 ocupado, MCP no conecta) y la variante secundaria CoderGamester]
194
+ > → Read references/manual-setup.md for el flujo manual de Unity (`Window → MCP for Unity`), troubleshooting (uv no encontrado, puerto 8080 ocupado, MCP no conecta) y la variante secundaria CoderGamester
195
+
196
+ > → Read references/unreal-operations.md for los console commands de Unreal (`StartServer`, `StopServer`, `RefreshTools`, `GenerateClientConfig`), el modo tool-search y la matriz de troubleshooting (puerto ocupado, toolset faltante, tool calls que cuelgan)
@@ -0,0 +1,55 @@
1
+ # Unreal MCP — Console Commands, Settings, Recovery
2
+
3
+ > Adapted from the `unreal-mcp` skill in [EpicGames/unreal-engine-skills-for-claude-code-plugin](https://github.com/EpicGames/unreal-engine-skills-for-claude-code-plugin) (MIT). References to the upstream `setup.md` were remapped to Phase 2B of this skill.
4
+
5
+ Read this when something is misbehaving with the Unreal MCP server (tools missing, port collision, stale tool registry), or when you need a non-default configuration.
6
+
7
+ Remember: the server and toolsets are **engine plugins**. Nothing here installs anything into the project — it enables, restarts and reconfigures what the engine already ships.
8
+
9
+ ## Console commands
10
+
11
+ Run these from the Unreal Editor console (`~`).
12
+
13
+ | Command | Use it for |
14
+ |---------|------------|
15
+ | `ModelContextProtocol.StartServer [port]` | Start the MCP server. Pass a port to override the default (e.g. when 8000 is in use). |
16
+ | `ModelContextProtocol.StopServer` | Stop the server. Useful if the registry is in a bad state and you want a clean restart. |
17
+ | `ModelContextProtocol.RefreshTools` | Re-register every toolset. Run this after enabling a new toolset plugin. |
18
+ | `ModelContextProtocol.GenerateClientConfig <client>` | Regenerate the per-client config file. Args: `ClaudeCode`, `Cursor`, `VSCode`, `Gemini`, `Codex`, `All`. |
19
+
20
+ Codex is the exception for config generation: it uses TOML and the writer refuses to overwrite an existing `.codex/config.toml`. Edit that one by hand if it already exists.
21
+
22
+ ## Tool-search mode
23
+
24
+ `tools/list` has two modes, controlled by the `bEnableToolSearch` UPROPERTY on `UModelContextProtocolSettings` (default `true`):
25
+
26
+ - **`True`** (default): `tools/list` returns only `list_toolsets`, `describe_toolset`, `call_tool`. Toolset tools are dispatched server-side through `call_tool` and stay out of the prompt; the catalog never changes mid-session, so the prompt cache stays warm.
27
+ - **`False`**: every toolset tool is registered as a native MCP tool at startup, with schemas visible upfront.
28
+
29
+ Override in the same `.ini` used for `bAutoStartServer` (see Phase 2B):
30
+
31
+ ```ini
32
+ [/Script/ModelContextProtocolEngine.ModelContextProtocolSettings]
33
+ bEnableToolSearch=False
34
+ ```
35
+
36
+ ## Troubleshooting matrix
37
+
38
+ | Symptom | What to do |
39
+ |---------|------------|
40
+ | `unreal-mcp` not in `claude mcp list` / `/mcp`, or `list_toolsets` errors | The editor isn't running, or the server isn't started. Launch the editor and run `ModelContextProtocol.StartServer`, or enable `bAutoStartServer` per Phase 2B. Then check the Output Log for startup errors. |
41
+ | Editor logs "Failed to listen on port" | Another process holds the default port. Change `ServerPortNumber` in the per-user `EditorPerProjectUserSettings.ini`, or pass `-ModelContextProtocolPort=<port>` on the next launch. Restart the editor, then re-run `ModelContextProtocol.GenerateClientConfig ClaudeCode` to refresh `.mcp.json`. |
42
+ | A toolset you expect (e.g. `NiagaraTools`) is missing | Run `ModelContextProtocol.RefreshTools`. If still missing, that toolset's plugin may not be enabled in the `.uproject` — check there. Remember `AllToolsets` is the aggregator and is off by default. |
43
+ | Tool calls hang or return errors | The editor may be busy compiling, loading a level, or in PIE. Wait and retry. For long compiles, prefer `LiveCodingToolset.CompileLiveCoding`, which returns when the compile actually finishes. |
44
+ | `AIAssistantToolset.GetDockedContext` returns empty | The Claude Code tab must be docked inside an asset editor (Blueprint, Material, etc.) to provide docked context. Undocked, that tool has nothing to report. |
45
+ | Sequential tool calls collide | Tool calls execute on the game thread. Don't issue them in parallel, even when they look independent. Serialize them. |
46
+
47
+ ## Safety notes when driving the editor
48
+
49
+ These matter because every MCP call mutates live editor state on the game thread:
50
+
51
+ - **Save before and after** any bulk change. MCP edits are not always undoable, especially across compilation boundaries.
52
+ - **Wait for compilation** to finish before issuing further calls.
53
+ - **Never parallelize** tool calls.
54
+ - **Read every result.** Many tools return a status that flips between success and failure without raising. Treat anything that isn't an explicit success as a stop.
55
+ - **Mind PIE.** Editor-only tools, asset creation in particular, behave differently while Play-in-Editor is active.
@@ -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**: vos hacés de entrevistador y das feedback sobre las respuestas.
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é un mock; post-entrevista, seguí con `/cold-outreach` para el follow-up.
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 UN agente general-purpose de contexto fresco con el JD + borradores inline; lectura acotada al perfil; research web breve de la empresa. 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.
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
 
@@ -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
- Emojis del dashboard: ⬜ interesado · ✅ aplicado · 📅 entrevista/oferta · ❌ rechazado/sin_respuesta/declinada · 🚫 descartado/cerrada
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.