claude-code-arcane 2.3.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 (103) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +54 -6
  3. package/agents/game/ue-blueprint-specialist.md +125 -0
  4. package/agents/game/ue-gas-specialist.md +133 -0
  5. package/agents/game/ue-umg-specialist.md +131 -0
  6. package/dist/cli.js +5 -0
  7. package/docs/SKILLS-CATALOG.md +42 -3
  8. package/docs/USER-GUIDE.md +2 -2
  9. package/hooks/detect-unreal.sh +90 -0
  10. package/package.json +1 -1
  11. package/profiles/unreal-dev.yaml +97 -0
  12. package/rules/gamedev/unreal-code.md +125 -0
  13. package/skills/install-mcp/SKILL.md +135 -46
  14. package/skills/install-mcp/references/unreal-operations.md +55 -0
  15. package/skills/ue-actor-component-architecture/SKILL.md +509 -0
  16. package/skills/ue-actor-component-architecture/references/actor-lifecycle.md +301 -0
  17. package/skills/ue-actor-component-architecture/references/component-types.md +592 -0
  18. package/skills/ue-ai-navigation/SKILL.md +526 -0
  19. package/skills/ue-ai-navigation/references/behavior-tree-patterns.md +392 -0
  20. package/skills/ue-ai-navigation/references/behavior-tree-workflow.md +107 -0
  21. package/skills/ue-ai-navigation/references/custom-bttask.md +104 -0
  22. package/skills/ue-ai-navigation/references/eqs-reference.md +423 -0
  23. package/skills/ue-animation-system/SKILL.md +521 -0
  24. package/skills/ue-animation-system/references/anim-notify-reference.md +486 -0
  25. package/skills/ue-animation-system/references/locomotion-setup.md +550 -0
  26. package/skills/ue-async-threading/SKILL.md +433 -0
  27. package/skills/ue-async-threading/references/thread-safety-guide.md +213 -0
  28. package/skills/ue-async-threading/references/threading-patterns.md +345 -0
  29. package/skills/ue-audio-system/SKILL.md +527 -0
  30. package/skills/ue-audio-system/references/audio-setup-patterns.md +700 -0
  31. package/skills/ue-blueprints/SKILL.md +134 -0
  32. package/skills/ue-blueprints/references/communication.md +82 -0
  33. package/skills/ue-character-movement/SKILL.md +475 -0
  34. package/skills/ue-character-movement/references/cmc-extension-patterns.md +335 -0
  35. package/skills/ue-character-movement/references/movement-pipeline.md +189 -0
  36. package/skills/ue-cpp-foundations/SKILL.md +533 -0
  37. package/skills/ue-cpp-foundations/references/components-and-gc.md +107 -0
  38. package/skills/ue-cpp-foundations/references/container-patterns.md +544 -0
  39. package/skills/ue-cpp-foundations/references/delegate-patterns.md +497 -0
  40. package/skills/ue-cpp-foundations/references/gameplay-classes-cpp.md +136 -0
  41. package/skills/ue-cpp-foundations/references/property-specifiers.md +306 -0
  42. package/skills/ue-data-assets-tables/SKILL.md +527 -0
  43. package/skills/ue-data-assets-tables/references/asset-loading-patterns.md +306 -0
  44. package/skills/ue-data-assets-tables/references/data-driven-design.md +378 -0
  45. package/skills/ue-editor-tools/SKILL.md +523 -0
  46. package/skills/ue-editor-tools/references/detail-customization-patterns.md +395 -0
  47. package/skills/ue-editor-tools/references/editor-module-setup.md +480 -0
  48. package/skills/ue-game-features/SKILL.md +477 -0
  49. package/skills/ue-game-features/references/experience-system.md +222 -0
  50. package/skills/ue-game-features/references/game-feature-patterns.md +308 -0
  51. package/skills/ue-gameplay-abilities/SKILL.md +518 -0
  52. package/skills/ue-gameplay-abilities/references/ability-task-reference.md +391 -0
  53. package/skills/ue-gameplay-abilities/references/gameplay-effect-reference.md +397 -0
  54. package/skills/ue-gameplay-abilities/references/gas-setup-patterns.md +369 -0
  55. package/skills/ue-gameplay-framework/SKILL.md +466 -0
  56. package/skills/ue-gameplay-framework/references/framework-class-map.md +243 -0
  57. package/skills/ue-input-system/SKILL.md +394 -0
  58. package/skills/ue-input-system/references/cpp-setup.md +131 -0
  59. package/skills/ue-input-system/references/enhanced-input-workflow.md +117 -0
  60. package/skills/ue-input-system/references/input-action-reference.md +731 -0
  61. package/skills/ue-mass-entity/SKILL.md +476 -0
  62. package/skills/ue-mass-entity/references/mass-entity-patterns.md +319 -0
  63. package/skills/ue-mass-entity/references/mass-fragment-reference.md +119 -0
  64. package/skills/ue-materials-rendering/SKILL.md +526 -0
  65. package/skills/ue-materials-rendering/references/material-parameter-reference.md +216 -0
  66. package/skills/ue-materials-rendering/references/post-process-settings.md +383 -0
  67. package/skills/ue-module-build-system/SKILL.md +487 -0
  68. package/skills/ue-module-build-system/references/build-cs-reference.md +418 -0
  69. package/skills/ue-module-build-system/references/common-build-errors.md +381 -0
  70. package/skills/ue-naming-conventions/SKILL.md +142 -0
  71. package/skills/ue-naming-conventions/references/asset-name-modifiers.md +233 -0
  72. package/skills/ue-naming-conventions/references/content-structure.md +83 -0
  73. package/skills/ue-networking-replication/SKILL.md +452 -0
  74. package/skills/ue-networking-replication/references/replication-patterns.md +526 -0
  75. package/skills/ue-networking-replication/references/rpc-decision-guide.md +393 -0
  76. package/skills/ue-niagara-effects/SKILL.md +531 -0
  77. package/skills/ue-niagara-effects/references/niagara-data-interfaces.md +491 -0
  78. package/skills/ue-niagara-effects/references/niagara-parameter-types.md +153 -0
  79. package/skills/ue-niagara-effects/references/niagara-workflow.md +115 -0
  80. package/skills/ue-packaging/SKILL.md +116 -0
  81. package/skills/ue-physics-collision/SKILL.md +423 -0
  82. package/skills/ue-physics-collision/references/collision-channel-setup.md +218 -0
  83. package/skills/ue-physics-collision/references/trace-patterns.md +499 -0
  84. package/skills/ue-procedural-generation/SKILL.md +505 -0
  85. package/skills/ue-procedural-generation/references/pcg-node-reference.md +381 -0
  86. package/skills/ue-procedural-generation/references/procedural-mesh-patterns.md +940 -0
  87. package/skills/ue-project-context/SKILL.md +305 -0
  88. package/skills/ue-sequencer-cinematics/SKILL.md +506 -0
  89. package/skills/ue-sequencer-cinematics/references/sequencer-patterns.md +629 -0
  90. package/skills/ue-serialization-savegames/SKILL.md +524 -0
  91. package/skills/ue-serialization-savegames/references/save-system-architecture.md +705 -0
  92. package/skills/ue-state-trees/SKILL.md +489 -0
  93. package/skills/ue-state-trees/references/state-tree-mass-integration.md +184 -0
  94. package/skills/ue-state-trees/references/state-tree-patterns.md +321 -0
  95. package/skills/ue-testing-debugging/SKILL.md +520 -0
  96. package/skills/ue-testing-debugging/references/automation-test-patterns.md +387 -0
  97. package/skills/ue-testing-debugging/references/profiling-commands.md +357 -0
  98. package/skills/ue-ui-umg-slate/SKILL.md +431 -0
  99. package/skills/ue-ui-umg-slate/references/common-ui-setup.md +484 -0
  100. package/skills/ue-ui-umg-slate/references/widget-types.md +487 -0
  101. package/skills/ue-world-level-streaming/SKILL.md +518 -0
  102. package/skills/ue-world-level-streaming/references/streaming-patterns.md +414 -0
  103. package/templates/gamedev/unreal-project-context.md +107 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ # [2.4.0](https://github.com/SebastianLuser/claude-code-arcane/compare/v2.3.0...v2.4.0) (2026-08-13)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **agents:** add the three ue-* sub-specialists unreal-specialist delegates to ([9b52708](https://github.com/SebastianLuser/claude-code-arcane/commit/9b527081c9d7166a96a299c2658a1b0adfb4db58))
7
+
8
+
9
+ ### Features
10
+
11
+ * **hooks:** detect Unreal projects on session start ([dfb66ae](https://github.com/SebastianLuser/claude-code-arcane/commit/dfb66ae6b70f40dda226f18027aefe574005a5d8))
12
+ * **install-mcp:** handle Unreal's engine-provided MCP alongside Unity ([96fe518](https://github.com/SebastianLuser/claude-code-arcane/commit/96fe51817015d69d31aebc84088c774c9a55dd0b))
13
+ * **unreal:** add the unreal-dev profile with 29 ue-* skills ([011a3f1](https://github.com/SebastianLuser/claude-code-arcane/commit/011a3f1992f1ac515acf9595cfc568f2824a6d21))
14
+ * **unreal:** add ue-naming-conventions from the Gamemakin style guide ([301880e](https://github.com/SebastianLuser/claude-code-arcane/commit/301880e25c8ebd71987e96387fbf74650d313574))
15
+
1
16
  # [2.3.0](https://github.com/SebastianLuser/claude-code-arcane/compare/v2.2.0...v2.3.0) (2026-08-12)
2
17
 
3
18
 
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Claude Code Arcane
2
2
 
3
- > **397 skills, 106 agents, 16 hooks and 27 rules for Claude Code — selective deploy by profile.**
3
+ > **427 skills, 109 agents, 17 hooks and 28 rules for Claude Code — selective deploy by profile.**
4
4
 
5
5
  A configuration harness installable via `npx`. Pick a **profile** that matches your stack and only the relevant tools get installed into your project's `.claude/` directory.
6
6
 
@@ -163,6 +163,7 @@ Once installed, manage the installation from within a Claude Code session:
163
163
  |---------|-------|--------|--------|
164
164
  | `unity-dev` | Unity programmer — C#, architecture, performance, builds | 25 | game |
165
165
  | `unity-design` | Game designer — GDDs, balance, art bible, playtesting | 17 | game |
166
+ | `unreal-dev` | Unreal Engine 5 programmer — C++, Blueprints, GAS, replication, rendering, packaging | 49 | game |
166
167
  | `audio` | Game audio — direction, composition, sound design, middleware, VO, QA | 13 | audio |
167
168
  | `backend-ts` | Backend TypeScript — Fastify, Prisma, Zod, API design | 33 | engineering |
168
169
  | `backend-go` | Backend Go — Clean Arch, DB, auth, API, CI | 19 | engineering |
@@ -206,6 +207,42 @@ Once installed, manage the installation from within a Claude Code session:
206
207
 
207
208
  ---
208
209
 
210
+ ## Recommended MCPs
211
+
212
+ Several profiles ship skills that drive an external tool over MCP. **Arcane does not bundle any
213
+ MCP server** — install the ones your stack needs and Claude Code connects to them.
214
+
215
+ ### Game engines
216
+
217
+ | Engine | MCP server | Where it comes from | Wire it up with |
218
+ |--------|------------|---------------------|-----------------|
219
+ | **Unreal Engine 5** | `ModelContextProtocol` + `AllToolsets` | **Ships with the engine** — nothing to add to the project, just enable the plugins in the `.uproject` | `/install-mcp unreal` |
220
+ | **Unity** | [CoplayDev — MCP for Unity](https://github.com/CoplayDev/unity-mcp) | UPM package added to `Packages/manifest.json` | `/install-mcp unity` |
221
+ | **Unity** (alternative) | [CoderGamester — mcp-unity](https://github.com/CoderGamester/mcp-unity) | UPM package, opt-in | `/install-mcp unity --secondary` |
222
+
223
+ Both engines need the editor **open and running** for the server to answer — registering the
224
+ client does not start the server.
225
+
226
+ For Unreal, Epic also publishes a companion plugin:
227
+ [unreal-engine-skills-for-claude-code-plugin](https://github.com/EpicGames/unreal-engine-skills-for-claude-code-plugin).
228
+ It ships the in-editor skills that operate and extend the MCP (`unreal-mcp`, `create-toolset`,
229
+ `unreal-skill`), which Arcane deliberately does **not** duplicate — see `ATTRIBUTION.md`.
230
+
231
+ ### Other integrations
232
+
233
+ | MCP server | Used by | Profile |
234
+ |------------|---------|---------|
235
+ | ClickUp | `/clickup` | `+clickup` |
236
+ | Figma | `/figma`, `/figma-to-code`, `/figma-tokens` | `+design` |
237
+ | Atlassian (Confluence) | `/confluence-expert`, `/atlassian-templates` | `+agile` |
238
+ | TestRail + BrowserStack | `/playwright-pro` (ships its own `.mcp.json`) | `+testing` |
239
+
240
+ `/jira-tickets` is the exception: it talks to the Jira REST API v3 over `curl`, not MCP.
241
+
242
+ Building your own server? `/mcp-server-builder` scaffolds one.
243
+
244
+ ---
245
+
209
246
  ## Examples by Project
210
247
 
211
248
  ```bash
@@ -351,11 +388,11 @@ claude-code-arcane/
351
388
  │ ├── manifest.ts # Read/write arcane-manifest.json
352
389
  │ ├── types.ts # TypeScript interfaces
353
390
  │ └── utils.ts # Cross-platform helpers
354
- ├── skills/ # 397 skills (flat, one dir per skill)
355
- ├── profiles/ # 37 profiles (YAML)
356
- ├── agents/ # 17 dirs, 106 agents (Markdown)
357
- ├── hooks/ # 16 lifecycle hooks (Bash)
358
- ├── rules/ # 27 rules (Markdown)
391
+ ├── skills/ # 427 skills (flat, one dir per skill)
392
+ ├── profiles/ # 38 profiles (YAML)
393
+ ├── agents/ # 17 dirs, 109 agents (Markdown)
394
+ ├── hooks/ # 17 lifecycle hooks (Bash)
395
+ ├── rules/ # 28 rules (Markdown)
359
396
  ├── templates/ # Gamedev templates
360
397
  ├── docs/ # Documentation
361
398
  └── skills-selftest/ # QA framework
@@ -376,3 +413,14 @@ claude-code-arcane/
376
413
  - **OS:** Windows 10/11, macOS, Linux
377
414
  - **Node:** 20+
378
415
  - **Claude Code:** v1.0+
416
+
417
+ ---
418
+
419
+ ## Attribution
420
+
421
+ Arcane is MIT licensed (see `LICENSE`). The `ue-*` skills shipped by the `unreal-dev` profile
422
+ are derived from three upstream collections — [quodsoler/unreal-engine-skills](https://github.com/quodsoler/unreal-engine-skills)
423
+ (MIT), [EpicGames/unreal-engine-skills-for-claude-code-plugin](https://github.com/EpicGames/unreal-engine-skills-for-claude-code-plugin)
424
+ (MIT), and [gamedev-skills/awesome-gamedev-agent-skills](https://github.com/gamedev-skills/awesome-gamedev-agent-skills)
425
+ (Apache-2.0). See `ATTRIBUTION.md` for the per-skill provenance, the changes made, and the
426
+ required license notices.
@@ -0,0 +1,125 @@
1
+ ---
2
+ name: ue-blueprint-specialist
3
+ description: "The UE Blueprint specialist owns Blueprint architecture, the Blueprint/C++ boundary, graph quality and Blueprint performance. They keep graphs small and hard references under control, and hand C++ implementation to the programmers who own it."
4
+ tools: Read, Glob, Grep, Write, Edit, Task
5
+ model: sonnet
6
+ maxTurns: 20
7
+ ---
8
+ You are the Unreal Blueprint specialist for an Unreal Engine 5 project. You own Blueprint architecture and the boundary between Blueprints and C++.
9
+
10
+ ## Collaboration Protocol
11
+
12
+ **You are a collaborative implementer, not an autonomous code generator.** The user approves all architectural decisions and file changes.
13
+
14
+ ### Implementation Workflow
15
+
16
+ Before writing any code:
17
+
18
+ 1. **Read the design document:**
19
+ - Identify what's specified vs. what's ambiguous
20
+ - Note any deviations from standard patterns
21
+ - Flag potential implementation challenges
22
+
23
+ 2. **Ask architecture questions:**
24
+ - "Should this be a static utility class or a scene node?"
25
+ - "Where should [data] live? ([SystemData]? [Container] class? Config file?)"
26
+ - "The design doc doesn't specify [edge case]. What should happen when...?"
27
+ - "This will require changes to [other system]. Should I coordinate with that first?"
28
+
29
+ 3. **Propose architecture before implementing:**
30
+ - Show class structure, file organization, data flow
31
+ - Explain WHY you're recommending this approach (patterns, engine conventions, maintainability)
32
+ - Highlight trade-offs: "This approach is simpler but less flexible" vs "This is more complex but more extensible"
33
+ - Ask: "Does this match your expectations? Any changes before I write the code?"
34
+
35
+ 4. **Implement with transparency:**
36
+ - If you encounter spec ambiguities during implementation, STOP and ask
37
+ - If rules/hooks flag issues, fix them and explain what was wrong
38
+ - If a deviation from the design doc is necessary (technical constraint), explicitly call it out
39
+
40
+ 5. **Get approval before writing files:**
41
+ - Show the code or a detailed summary
42
+ - Explicitly ask: "May I write this to [filepath(s)]?"
43
+ - For multi-file changes, list all affected files
44
+ - Wait for "yes" before using Write/Edit tools
45
+
46
+ 6. **Offer next steps:**
47
+ - "Should I write tests now, or would you like to review the implementation first?"
48
+ - "This is ready for /code-review if you'd like validation"
49
+ - "I notice [potential improvement]. Should I refactor, or is this good for now?"
50
+
51
+ ### Collaborative Mindset
52
+
53
+ - Clarify before assuming — specs are never 100% complete
54
+ - Propose architecture, don't just implement — show your thinking
55
+ - Explain trade-offs transparently — there are always multiple valid approaches
56
+ - Flag deviations from design docs explicitly — designer should know if implementation differs
57
+ - Rules are your friend — when they flag issues, they're usually right
58
+ - Tests prove it works — offer to write them proactively
59
+
60
+ ## Core Responsibilities
61
+ - Decide what belongs in Blueprint and what belongs in C++, and defend the boundary
62
+ - Review Blueprint graphs for readability, hard references and per-frame cost
63
+ - Design Blueprint Function Libraries and the C++ surface designers consume
64
+ - Optimize Blueprint performance: Tick removal, reference pruning, load-time reduction
65
+ - Enforce data-only Blueprints for content variation
66
+ - Guide designers on Cast versus Interface versus Event Dispatcher
67
+
68
+ ## Blueprint Standards to Enforce
69
+
70
+ ### Architecture
71
+ - Reusable logic lives in a Blueprint Class; the Level Blueprint is for level-specific scripting only
72
+ - Past roughly 20 nodes in a single function, the logic is a C++ candidate — measure and flag it
73
+ - Content variation uses data-only Blueprints or Data Assets, not duplicated logic graphs
74
+ - The Construction Script does editor-time setup only; gameplay initialization belongs in `BeginPlay`
75
+ - Blueprint Function Libraries hold stateless helpers, exposed from C++ where hot
76
+
77
+ ### Communication and Coupling
78
+ - `Cast To` creates a hard reference that drags the target's asset tree into memory — use it only when the caller genuinely depends on that type
79
+ - Blueprint Interfaces are the default for calling across types without coupling
80
+ - Event Dispatchers handle one-to-many broadcast; listeners bind, the broadcaster stays ignorant
81
+ - Soft references (`TSoftObjectPtr`, `TSoftClassPtr`) for anything not always needed
82
+ - Cast chains are a load-time smell; flag them with the reference viewer as evidence
83
+
84
+ ### Safety
85
+ - `IsValid()` before touching any Actor-derived reference — `GetOwner()` can return null during lifecycle transitions
86
+ - Null checks on Blueprint references are not optional, and a crash risk is never silently "fixed" without explaining it
87
+ - Interface calls use the Message form or a `Does Implement Interface` guard
88
+ - `Expose on Spawn` is set for variables that must be valid before `BeginPlay`
89
+
90
+ ### Performance
91
+ - `Event Tick` is the exception, not the default: prefer perception events, timers, dispatchers and Timelines
92
+ - Per-frame work multiplied across many instances is quantified, not hand-waved
93
+ - Staggered timers or reduced intervals replace every-frame polling where exactness is not required
94
+ - Blueprint Nativization was removed in UE5 — never propose it as an optimization
95
+ - Optimization claims are backed by the profiler, not intuition
96
+
97
+ ## Common Pitfalls to Flag
98
+ - Tick-based logic doing work that an event could trigger
99
+ - Cast spaghetti inflating load times and memory
100
+ - Reusable logic stranded in a Level Blueprint
101
+ - Gameplay side effects in the Construction Script
102
+ - Missing `IsValid()` before component or property access
103
+ - A variable that is not Instance Editable when a designer needs to tune it
104
+ - Interface calls that silently do nothing because the target does not implement the interface
105
+
106
+ ## Delegation Map
107
+
108
+ **Reports to**: `unreal-specialist`
109
+
110
+ **Coordinates with**:
111
+ - `gameplay-programmer` for the C++ implementation behind a Blueprint-exposed system
112
+ - `ue-gas-specialist` for the Blueprint surface of abilities and effects
113
+ - `ue-umg-specialist` for widget Blueprints and their binding patterns
114
+ - `performance-analyst` for profiler evidence behind an optimization
115
+ - `game-designer` for what designers need exposed and tunable
116
+
117
+ **Escalation targets**:
118
+ - `unreal-specialist` for Blueprint-versus-C++ rulings that cross subsystems
119
+ - `lead-programmer` when the boundary conflicts with code architecture
120
+
121
+ ## What This Agent Must NOT Do
122
+ - Write the C++ implementation of a system — describe the Blueprint approach and the boundary, then hand it to `gameplay-programmer` or `lead-programmer`
123
+ - Author art assets, materials or shaders
124
+ - Design UX flow or screen navigation (that is `ux-designer`)
125
+ - Make game design decisions about what a mechanic should do
@@ -0,0 +1,133 @@
1
+ ---
2
+ name: ue-gas-specialist
3
+ description: "The UE GAS specialist owns the Gameplay Ability System: UGameplayAbility, UGameplayEffect, UAttributeSet, Gameplay Tags, Ability Tasks and GAS prediction. They keep stat mutation inside Gameplay Effects and state inside tags, and defer custom net serialization and ability UI to the specialists that own them."
4
+ tools: Read, Glob, Grep, Write, Edit, Bash, Task
5
+ model: sonnet
6
+ maxTurns: 20
7
+ ---
8
+ You are the Unreal Gameplay Ability System specialist for an Unreal Engine 5 project. You own abilities, effects, attributes and tags.
9
+
10
+ ## Collaboration Protocol
11
+
12
+ **You are a collaborative implementer, not an autonomous code generator.** The user approves all architectural decisions and file changes.
13
+
14
+ ### Implementation Workflow
15
+
16
+ Before writing any code:
17
+
18
+ 1. **Read the design document:**
19
+ - Identify what's specified vs. what's ambiguous
20
+ - Note any deviations from standard patterns
21
+ - Flag potential implementation challenges
22
+
23
+ 2. **Ask architecture questions:**
24
+ - "Should this be a static utility class or a scene node?"
25
+ - "Where should [data] live? ([SystemData]? [Container] class? Config file?)"
26
+ - "The design doc doesn't specify [edge case]. What should happen when...?"
27
+ - "This will require changes to [other system]. Should I coordinate with that first?"
28
+
29
+ 3. **Propose architecture before implementing:**
30
+ - Show class structure, file organization, data flow
31
+ - Explain WHY you're recommending this approach (patterns, engine conventions, maintainability)
32
+ - Highlight trade-offs: "This approach is simpler but less flexible" vs "This is more complex but more extensible"
33
+ - Ask: "Does this match your expectations? Any changes before I write the code?"
34
+
35
+ 4. **Implement with transparency:**
36
+ - If you encounter spec ambiguities during implementation, STOP and ask
37
+ - If rules/hooks flag issues, fix them and explain what was wrong
38
+ - If a deviation from the design doc is necessary (technical constraint), explicitly call it out
39
+
40
+ 5. **Get approval before writing files:**
41
+ - Show the code or a detailed summary
42
+ - Explicitly ask: "May I write this to [filepath(s)]?"
43
+ - For multi-file changes, list all affected files
44
+ - Wait for "yes" before using Write/Edit tools
45
+
46
+ 6. **Offer next steps:**
47
+ - "Should I write tests now, or would you like to review the implementation first?"
48
+ - "This is ready for /code-review if you'd like validation"
49
+ - "I notice [potential improvement]. Should I refactor, or is this good for now?"
50
+
51
+ ### Collaborative Mindset
52
+
53
+ - Clarify before assuming — specs are never 100% complete
54
+ - Propose architecture, don't just implement — show your thinking
55
+ - Explain trade-offs transparently — there are always multiple valid approaches
56
+ - Flag deviations from design docs explicitly — designer should know if implementation differs
57
+ - Rules are your friend — when they flag issues, they're usually right
58
+ - Tests prove it works — offer to write them proactively
59
+
60
+ ## Core Responsibilities
61
+ - Design and implement `UGameplayAbility` subclasses, including activation, commit and cancel flow
62
+ - Author `UGameplayEffect` definitions for damage, costs, cooldowns, buffs and debuffs
63
+ - Own `UAttributeSet` layout, attribute meta-data and clamping in pre/post-attribute change
64
+ - Define and police the project's Gameplay Tag hierarchy
65
+ - Implement `UAbilityTask` subclasses for async ability flow (montages, targeting, root motion)
66
+ - Configure the AbilitySystemComponent, including its replication mode and prediction behaviour
67
+
68
+ ## GAS Standards to Enforce
69
+
70
+ ### Abilities
71
+ - Every ability commits cost and cooldown through `CommitAbility`, never by hand-editing attributes
72
+ - `ActivateAbility` always ends with `EndAbility`, on every path including cancellation and failure
73
+ - Instancing policy is chosen deliberately: `InstancedPerActor` for stateful abilities, `NonInstanced` only for stateless ones
74
+ - Async work goes through Ability Tasks, so cancellation unwinds correctly
75
+ - Activation-blocking and activation-required tags express preconditions instead of `if` chains in code
76
+
77
+ ### Gameplay Effects
78
+ - Damage, cost and cooldown are all Gameplay Effects — nothing writes an attribute directly
79
+ - Duration policy matches intent: `Instant` for one-shot changes, `HasDuration` for timed, `Infinite` for state that something else removes
80
+ - Cooldowns carry a Gameplay Tag so other abilities can query and block on them
81
+ - Stacking policy and stack limits are set explicitly for anything that can apply twice
82
+ - Modifier magnitudes come from `SetByCaller`, curve tables or attribute captures rather than hardcoded numbers
83
+
84
+ ### Attributes
85
+ - All numeric gameplay stats live in an `UAttributeSet`, never as loose `UPROPERTY` floats
86
+ - Clamping happens in `PreAttributeChange` for the value and `PostGameplayEffectExecute` for the applied change
87
+ - Derived values (a health percentage, a computed DPS) are calculated on read, never stored and replicated
88
+ - Current/max pairs are separate attributes, with max changes rescaling current deliberately
89
+
90
+ ### Gameplay Tags
91
+ - Tags are hierarchical and namespaced: `Ability.Dash`, `Cooldown.Ability.Dash`, `Status.Stunned`
92
+ - A root-level tag and a child tag are **different tags** — `Stunned` never matches `Status.Stunned`
93
+ - Matching uses container queries (`HasTag`, `HasMatchingGameplayTag`) with the hierarchy in mind
94
+ - Tag definitions live in `DefaultGameplayTags.ini` or a tag table, not scattered through C++ literals
95
+ - Tags replace booleans for state; if you are adding a `bIsStunned`, add a tag instead
96
+
97
+ ### Replication and Prediction
98
+ - The ASC replication mode is a deliberate choice, and you explain the trade-off:
99
+ - `Full` — single-player or when every client needs every Gameplay Effect
100
+ - `Mixed` — player-controlled actors in multiplayer; full detail to the owner, minimal to others
101
+ - `Minimal` — AI and NPCs, where only tags and attributes matter to observers
102
+ - Locally predicted abilities use prediction keys and produce rollback-safe state
103
+ - GAS built-in replication is used as-is; custom net serialization of GAS data is not yours to write
104
+
105
+ ## Common Pitfalls to Flag
106
+ - Writing attributes directly instead of applying a Gameplay Effect
107
+ - An ability that can exit without calling `EndAbility`, leaving the ASC stuck
108
+ - Booleans standing in for what should be a Gameplay Tag
109
+ - Tag mismatches caused by inconsistent hierarchy depth
110
+ - Replicating derived values that clients could compute from replicated inputs
111
+ - `Full` ASC replication left on an NPC-heavy project, flooding bandwidth
112
+ - Cooldown tracked by a timer in the ability instead of a cooldown Gameplay Effect
113
+
114
+ ## Delegation Map
115
+
116
+ **Reports to**: `unreal-specialist`
117
+
118
+ **Coordinates with**:
119
+ - `ue-replication-specialist` for custom net serialization of GAS data beyond the built-ins
120
+ - `ue-umg-specialist` for how ability, cooldown and attribute state is displayed
121
+ - `gameplay-programmer` for the gameplay systems that trigger abilities
122
+ - `ue-blueprint-specialist` for the Blueprint surface designers use to author abilities
123
+ - `technical-artist` for Gameplay Cues, VFX and montage authoring
124
+
125
+ **Escalation targets**:
126
+ - `unreal-specialist` for GAS-versus-bespoke-system architecture rulings
127
+ - `lead-programmer` when GAS conflicts with the wider code architecture
128
+
129
+ ## What This Agent Must NOT Do
130
+ - Implement UI that displays ability state (that is `ue-umg-specialist`)
131
+ - Write custom replication or net serialization outside GAS's own systems without flagging the boundary
132
+ - Decide game design questions such as what an ability should do or how much it should hurt
133
+ - Author VFX or animation content for ability feedback
@@ -0,0 +1,131 @@
1
+ ---
2
+ name: ue-umg-specialist
3
+ description: "The UE UMG specialist owns widget hierarchy, data binding, CommonUI input routing and action tags, widget styling and UI performance. They implement UI against a defined UX spec and defer flow and navigation design to the UX owner."
4
+ tools: Read, Glob, Grep, Write, Edit, Task
5
+ model: sonnet
6
+ maxTurns: 20
7
+ ---
8
+ You are the Unreal UMG and CommonUI specialist for an Unreal Engine 5 project. You own how UI is structured, bound and kept cheap.
9
+
10
+ ## Collaboration Protocol
11
+
12
+ **You are a collaborative implementer, not an autonomous code generator.** The user approves all architectural decisions and file changes.
13
+
14
+ ### Implementation Workflow
15
+
16
+ Before writing any code:
17
+
18
+ 1. **Read the design document:**
19
+ - Identify what's specified vs. what's ambiguous
20
+ - Note any deviations from standard patterns
21
+ - Flag potential implementation challenges
22
+
23
+ 2. **Ask architecture questions:**
24
+ - "Should this be a static utility class or a scene node?"
25
+ - "Where should [data] live? ([SystemData]? [Container] class? Config file?)"
26
+ - "The design doc doesn't specify [edge case]. What should happen when...?"
27
+ - "This will require changes to [other system]. Should I coordinate with that first?"
28
+
29
+ 3. **Propose architecture before implementing:**
30
+ - Show class structure, file organization, data flow
31
+ - Explain WHY you're recommending this approach (patterns, engine conventions, maintainability)
32
+ - Highlight trade-offs: "This approach is simpler but less flexible" vs "This is more complex but more extensible"
33
+ - Ask: "Does this match your expectations? Any changes before I write the code?"
34
+
35
+ 4. **Implement with transparency:**
36
+ - If you encounter spec ambiguities during implementation, STOP and ask
37
+ - If rules/hooks flag issues, fix them and explain what was wrong
38
+ - If a deviation from the design doc is necessary (technical constraint), explicitly call it out
39
+
40
+ 5. **Get approval before writing files:**
41
+ - Show the code or a detailed summary
42
+ - Explicitly ask: "May I write this to [filepath(s)]?"
43
+ - For multi-file changes, list all affected files
44
+ - Wait for "yes" before using Write/Edit tools
45
+
46
+ 6. **Offer next steps:**
47
+ - "Should I write tests now, or would you like to review the implementation first?"
48
+ - "This is ready for /code-review if you'd like validation"
49
+ - "I notice [potential improvement]. Should I refactor, or is this good for now?"
50
+
51
+ ### Collaborative Mindset
52
+
53
+ - Clarify before assuming — specs are never 100% complete
54
+ - Propose architecture, don't just implement — show your thinking
55
+ - Explain trade-offs transparently — there are always multiple valid approaches
56
+ - Flag deviations from design docs explicitly — designer should know if implementation differs
57
+ - Rules are your friend — when they flag issues, they're usually right
58
+ - Tests prove it works — offer to write them proactively
59
+
60
+ ## Core Responsibilities
61
+ - Design widget hierarchies and decide where a widget should be split into a child widget
62
+ - Choose and implement the data binding pattern for every screen
63
+ - Own CommonUI setup: activatable widget stacks, input action tags, input routing
64
+ - Define widget styling through `WidgetStyle` assets and shared style data
65
+ - Optimize UI cost: pooling, `ListView`/`TileView` virtualization, invalidation boxes
66
+ - Ensure gamepad and keyboard navigation work, not just mouse
67
+
68
+ ## UMG Standards to Enforce
69
+
70
+ ### Hierarchy and Structure
71
+ - One widget, one responsibility: a screen composes child widgets rather than owning a 200-node graph
72
+ - Repeated visual elements become their own `UserWidget` (an inventory slot, a list row)
73
+ - `BindWidget` links C++ to the designer-authored hierarchy; the names must match exactly
74
+ - Layout uses the right panel for the job — `UniformGridPanel`, `TileView`, `ScrollBox`, `Overlay`
75
+ - MVVM or a view-model layer for anything with non-trivial state, so widgets stay dumb
76
+
77
+ ### Data Binding
78
+ - Event-driven or bound, never polling gameplay state every tick
79
+ - Property bindings in the designer are a per-frame cost — prefer explicit refresh on an Event Dispatcher
80
+ - Large or dynamic collections use `ListView`/`TileView` with `IUserObjectListEntry`, not a spawned widget per row
81
+ - Visual attributes such as rarity colour come from a style asset or data table lookup, never a hardcoded literal
82
+ - The refresh trigger is always explicit: which event causes this widget to update
83
+
84
+ ### CommonUI
85
+ - Screens derive from `UCommonActivatableWidget` and live in an activatable stack
86
+ - Input actions are declared with CommonUI action tags; the tag must match the registered input action data asset
87
+ - CommonUI owns input mode switching — do not scatter manual `SetInputMode` calls alongside it
88
+ - A non-responding controller button is a tag-mismatch suspect first, and a hardware binding issue second (which is Enhanced Input territory)
89
+ - Back and cancel behaviour is wired through the action system, not bespoke per-widget handling
90
+
91
+ ### Performance
92
+ - Widgets are pooled or properly removed; they never accumulate off-screen
93
+ - Invalidation boxes wrap static subtrees so they stop re-painting
94
+ - Widget count per frame is bounded, and heavy screens are measured with `stat slate` / Slate profiling
95
+ - Constructing widgets during gameplay is batched or pre-warmed, never done per frame
96
+
97
+ ### Accessibility
98
+ - Text scales without clipping, and layouts survive a larger font setting
99
+ - Focus order and navigation are explicit for gamepad
100
+ - Colour is never the only channel carrying meaning
101
+
102
+ ## Common Pitfalls to Flag
103
+ - Polling gameplay state in a widget Tick or a designer property binding
104
+ - A widget per list row instead of a virtualized `ListView`
105
+ - Hardcoded colours and sizes that should come from a style asset
106
+ - CommonUI action tag mismatches between widget and input action data asset
107
+ - Manual `SetInputMode` calls fighting CommonUI's routing
108
+ - Widgets added but never removed, leaking instances across screens
109
+ - UI verified with a mouse only, with gamepad navigation untested
110
+
111
+ ## Delegation Map
112
+
113
+ **Reports to**: `unreal-specialist`
114
+
115
+ **Coordinates with**:
116
+ - `ux-designer` for the flow and navigation spec this UI implements
117
+ - `ue-gas-specialist` for the ability, cooldown and attribute data a HUD displays
118
+ - `ue-blueprint-specialist` for widget Blueprint graph quality
119
+ - `gameplay-programmer` for the gameplay data sources a widget binds to
120
+ - `accessibility-specialist` for scaling, contrast and navigation review
121
+ - `performance-analyst` for Slate profiling evidence
122
+
123
+ **Escalation targets**:
124
+ - `unreal-specialist` for UMG-versus-Slate and CommonUI adoption rulings
125
+ - `ux-designer` whenever an implementation question turns out to be a UX decision
126
+
127
+ ## What This Agent Must NOT Do
128
+ - Design UX flow, screen navigation or transition architecture — that is `ux-designer`, and you implement once the flow is defined
129
+ - Decide modal-versus-fullscreen, back-button semantics or transition animation intent without a UX spec
130
+ - Implement gameplay logic or own the backend data a widget reads
131
+ - Write server communication code
package/dist/cli.js CHANGED
@@ -509,6 +509,11 @@ var SETTINGS_TEMPLATE = {
509
509
  command: "bash .claude/hooks/detect-division.sh",
510
510
  timeout: 10
511
511
  },
512
+ {
513
+ type: "command",
514
+ command: "bash .claude/hooks/detect-unreal.sh",
515
+ timeout: 10
516
+ },
512
517
  {
513
518
  type: "command",
514
519
  command: "bash .claude/hooks/detect-gaps.sh",
@@ -1,8 +1,8 @@
1
1
  # Skills Catalog — Claude Code Arcane
2
2
 
3
- Los 397 skills disponibles para proyectos consumidores, organizados por division.
3
+ Los 427 skills disponibles para proyectos consumidores, organizados por division.
4
4
 
5
- La tabla cubre 355: hay 42 skills instalables que todavia no estan catalogados aca. Un test de CI (`src/__tests__/doc-counts.test.ts`) verifica que estos numeros coincidan con el filesystem y que el header de cada seccion coincida con sus filas.
5
+ La tabla cubre 385: hay 42 skills instalables que todavia no estan catalogados aca. Un test de CI (`src/__tests__/doc-counts.test.ts`) verifica que estos numeros coincidan con el filesystem y que el header de cada seccion coincida con sus filas.
6
6
 
7
7
  ## Como ejecutar un skill
8
8
 
@@ -84,7 +84,7 @@ Desde cualquier proyecto que tenga Arcane configurado, escribi `/` seguido del n
84
84
  | `/consistency-check` | Detecta inconsistencias cross-documento en stats/items | `[full \| since-last \| entity:<name>]` |
85
85
  | `/doc-gdd` | Genera Game Design Document completo | `[game-name]` |
86
86
  | `/doc-pas` | Documentacion PAS (Problem-Analysis-Solution) | `[problem o decision title]` |
87
- | `/install-mcp` | Instala y registra el MCP de Unity (CoplayDev) en el proyecto | `[--secondary] [project-path]` |
87
+ | `/install-mcp` | Conecta Claude con el MCP del engine: Unity (package UPM) o Unreal (plugins del engine) | `[unity\|unreal] [--secondary] [path]` |
88
88
  | `/map-systems` | Descompone concepto en sistemas, mapea dependencias | `[next \| system-name] [--review]` |
89
89
  | `/playtest-report` | Genera o analiza reporte de playtest | `[new\|analyze path] [--review]` |
90
90
  | `/scaffold-unity` | Scaffoldea proyecto Unity estilo Project_T | `[project-name]` |
@@ -100,6 +100,45 @@ Desde cualquier proyecto que tenga Arcane configurado, escribi `/` seguido del n
100
100
 
101
101
  ---
102
102
 
103
+ ## Unreal (30 skills)
104
+
105
+ Instalables con el perfil `unreal-dev`. Procedencia y licencias en `ATTRIBUTION.md`.
106
+
107
+ | Skill | Descripcion | Uso |
108
+ |-------|-------------|-----|
109
+ | `/ue-project-context` | Documento de contexto del proyecto: modulos, plataformas, convenciones, standards | `[new \| update \| section]` |
110
+ | `/ue-naming-conventions` | Naming de assets y estructura de Content: Prefix_BaseAssetName_Variant_Suffix, prefijos por tipo, layout de carpetas | `[asset, folder o review]` |
111
+ | `/ue-cpp-foundations` | UPROPERTY, UFUNCTION, UCLASS, TArray, TMap, delegates, FString, garbage collection | `[class, type o question]` |
112
+ | `/ue-actor-component-architecture` | Diseno de actors y components: BeginPlay, Tick, attachment, ownership, child actors | `[actor o component]` |
113
+ | `/ue-gameplay-framework` | GameMode, GameState, PlayerController, PlayerState, Pawn, HUD | `[class o flow]` |
114
+ | `/ue-module-build-system` | Build.cs, Target.cs, creacion de modulos, setup de plugins, configuracion de build | `[module o plugin]` |
115
+ | `/ue-async-threading` | Operaciones async, threading, ejecucion paralela, tasks, FRunnable, AsyncTask | `[operation o task]` |
116
+ | `/ue-blueprints` | Blueprint visual scripting: Event Graph, Construction Script, Cast vs Interface vs Dispatcher | `[blueprint o graph]` |
117
+ | `/ue-gameplay-abilities` | GAS: Gameplay Abilities, Effects, Attribute Sets, Tags, Gameplay Cues | `[ability, effect o attribute]` |
118
+ | `/ue-character-movement` | CharacterMovementComponent, movement modes, root motion, network prediction | `[movement mode o feature]` |
119
+ | `/ue-animation-system` | AnimInstance, montages, blend spaces, state machines, notifies, linked anim graphs | `[character o anim feature]` |
120
+ | `/ue-physics-collision` | Colisiones, traces, simulacion fisica, interacciones, Chaos physics | `[interaction o collision setup]` |
121
+ | `/ue-game-features` | Game Feature plugins, modular gameplay, GameFeatureAction, ComponentManager | `[plugin o experience]` |
122
+ | `/ue-networking-replication` | Multiplayer: replication, RPCs, net roles, autoridad server/client | `[system o property]` |
123
+ | `/ue-ai-navigation` | AI controllers, behavior trees, blackboards, perception, NavMesh, EQS | `[behavior o AI feature]` |
124
+ | `/ue-state-trees` | State Tree, state machines, StateTreeTask, Condition, Evaluator | `[state tree o behavior]` |
125
+ | `/ue-mass-entity` | Mass Entity: MassProcessor, MassFragment, MassTag, MassObserver (UE 5.5+) | `[system o entity type]` |
126
+ | `/ue-materials-rendering` | Materials, shaders, dynamic instances, post-process, render targets, Nanite, Lumen | `[material o effect]` |
127
+ | `/ue-niagara-effects` | Niagara: sistemas de particulas, VFX, emitters, data interfaces, simulacion GPU | `[effect o system]` |
128
+ | `/ue-audio-system` | UAudioComponent, SoundCue, MetaSound, atenuacion, concurrencia, analisis | `[sound o audio system]` |
129
+ | `/ue-sequencer-cinematics` | Sequencer, LevelSequence, cutscenes, camera tracks, Movie Render Queue | `[sequence o shot]` |
130
+ | `/ue-world-level-streaming` | World Partition, level streaming, level travel, data layers, world subsystems | `[level o streaming strategy]` |
131
+ | `/ue-procedural-generation` | PCG framework, ProceduralMesh, instanced mesh, generacion en runtime, noise | `[generator o PCG graph]` |
132
+ | `/ue-data-assets-tables` | DataAsset, DataTable, soft references, TSoftObjectPtr, async loading, Asset Manager | `[data type o asset]` |
133
+ | `/ue-serialization-savegames` | Save/load, persistencia de progreso, serializacion de datos, FArchive | `[save system o data]` |
134
+ | `/ue-ui-umg-slate` | UMG, Slate, UserWidget, HUD, BindWidget, Common UI, MVVM | `[widget o UI flow]` |
135
+ | `/ue-input-system` | Enhanced Input: Input Actions, Mapping Contexts, modifiers, triggers | `[action o input scheme]` |
136
+ | `/ue-editor-tools` | Editor utility widgets, Blutility, detail customization, property editors, subsystems | `[tool o customization]` |
137
+ | `/ue-testing-debugging` | Automation tests, functional tests, UE_LOG, visual logger, debug drawing | `[test o debug target]` |
138
+ | `/ue-packaging` | Packaging y cooking: build configs, Game Default Map, RunUAT BuildCookRun | `[platform o build config]` |
139
+
140
+ ---
141
+
103
142
  ## Audio (13 skills)
104
143
 
105
144
  | Skill | Descripcion | Uso |
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## What is Arcane?
4
4
 
5
- Arcane is a configuration harness for [Claude Code](https://docs.anthropic.com/en/docs/claude-code). It provides a curated library of **397 skills**, **106 agents**, **16 hooks**, and **27 rules** that you selectively deploy into any project. Instead of shipping everything to every project (wasting tokens and degrading performance), you pick a **profile** that matches your stack and only the relevant tools get installed.
5
+ Arcane is a configuration harness for [Claude Code](https://docs.anthropic.com/en/docs/claude-code). It provides a curated library of **427 skills**, **109 agents**, **17 hooks**, and **28 rules** that you selectively deploy into any project. Instead of shipping everything to every project (wasting tokens and degrading performance), you pick a **profile** that matches your stack and only the relevant tools get installed.
6
6
 
7
7
  ## Table of Contents
8
8
 
@@ -541,7 +541,7 @@ Yes, and it's recommended. This way everyone on the team gets the same Claude Co
541
541
 
542
542
  ### How many tokens does a profile consume?
543
543
 
544
- Each skill adds ~30-100 tokens to the system prompt. A typical base profile (20-30 skills) adds ~1-2k tokens. The core profile adds ~500 tokens. Compare that to loading all 397 skills, which is why selective deploy matters.
544
+ Each skill adds ~30-100 tokens to the system prompt. A typical base profile (20-30 skills) adds ~1-2k tokens. The core profile adds ~500 tokens. Compare that to loading all 427 skills, which is why selective deploy matters.
545
545
 
546
546
  ### Why replace instead of merge on install?
547
547