# Agent tooling setup — Windows PC (where the game is built)

Run this once, after UE 5.8 and Visual Studio 2022 are installed. Everything here is free and
first-party unless marked otherwise. Verified August 2026.

---

## 1. Epic's official Claude Code plugin — the big one

Epic ships an MCP server **inside UE 5.8** (`ModelContextProtocol` plugin, Experimental) and publishes
its own Claude Code plugin on top of it. It exposes hundreds of tools across 30+ toolsets: GAS state
inspection, gameplay tags, Game Feature plugin creation, C++ automation test discovery and runs,
Blueprint and material authoring, Niagara, Sequencer, viewport screenshots, log inspection.

```
/plugin install unreal-engine-skills-for-claude-code@claude-plugins-official
```
(If the marketplace is missing: `/plugin marketplace add anthropics/claude-plugins-official` first.)

Then, in `NewGame.uproject`, enable **both** plugins:
```json
"Plugins": [
  { "Name": "ModelContextProtocol", "Enabled": true },
  { "Name": "AllToolsets",          "Enabled": true }
]
```
> **The failure everyone hits:** `AllToolsets` is disabled by default. Without it the MCP server starts
> with **zero tools** and looks broken. Enable both.

> **When to add them:** *after* the editor opens for the first time and you can see the real plugin
> list — not before the first clean UBT run. Listing plugins the installed engine may not carry under
> those exact names turns T1's acceptance test into a dialog box instead of a compile result.

In the editor: *Editor Preferences → General → Model Context Protocol* → enable **Auto Start Server**
and **Tool Search** (tool search loads tools on demand, which keeps context small). Then generate the
client config from the editor console:
```
ModelContextProtocol.GenerateClientConfig ClaudeCode
```
That writes `.mcp.json` pointing at `http://127.0.0.1:8000/mcp`.

**Security:** the server is unauthenticated arbitrary editor control. Keep it bound to `127.0.0.1`.
Never expose it, never port-forward it.

Source: https://github.com/EpicGames/unreal-engine-skills-for-claude-code-plugin (MIT, Epic-authored)

---

## 2. clangd — real C++ intelligence instead of grep

Without this the agent guesses at engine signatures; with it, it resolves them through the headers.

```
/plugin install clangd-lsp@claude-plugins-official
winget install LLVM.LLVM
```
Generate the compile database from UBT (`Build.bat -Mode=GenerateClangDatabase`, or the Rider/VS Code UE
extension) and put `compile_commands.json` at the project root, plus a `.clangd` file suppressing UE's
macro noise.

> **Restrict the index to `Source/` and `Plugins/`.** Indexing all of `Engine/` will thrash the machine
> for a very long time.

---

## 3. UE skill pack (optional, install selectively)

27 hand-written UE5 C++ skills in portable markdown — `ue-gameplay-abilities` (with GAS references),
`ue-networking-replication`, `ue-cpp-foundations`, `ue-module-build-system`, `ue-testing-debugging`,
`ue-character-movement`, `ue-game-features`, `ue-project-context`.

```
npx skills add quodsoler/unreal-engine-skills --skill ue-project-context ue-cpp-foundations \
  ue-gameplay-abilities ue-networking-replication ue-module-build-system ue-testing-debugging
```
Run `ue-project-context` first — it scans the project and writes the context file the others read.

Caveats worth knowing: 301 stars, MIT, but **last updated March 2026 and written for UE 5.5/5.6**. It
predates 5.8, so treat its specifics as strong hints, not gospel — Epic's own plugin (section 1) is the
authority when they disagree. Install only the skills you need; each one costs context.

---

## 4. Skills shipped with this project

Copy `skills/monster-pipeline.md` into `.claude/skills/monster-pipeline/SKILL.md` in the project.
It documents the creature pipeline end to end, with the quality ceilings stated honestly. **Every step
is tagged `[WIN]` / `[AWS]` / `[EITHER]`** — the pipeline is genuinely split, because concept-art
generation needs API keys that live in AWS SSM while all mesh work belongs on this machine.

---

## 5. What deliberately stays on the AWS machine

Do not try to reproduce these here — they depend on credentials and infrastructure that live there:

| Capability | Why it stays |
|---|---|
| Game server ops (start/stop/deploy/logs/restore) | The AWS IAM role and SSM access are on that machine. Windows has no AWS credentials, and should not. |
| The four project websites | Served by Caddy from that box. |
| Concept-art generation (Gemini) | API keys live in AWS SSM SecureString there. |

When you need any of them, tell Willy and he relays to the AWS session — that is the intended workflow,
not a limitation to route around.

## 6. What can run in either place

Mesh work belongs **here**. The AWS box has Blender 4.5.12 LTS headless and gltf-transform installed and
proven, but only 3.8 GB of RAM — it was a fallback, not a plan. Your machine has the GPU and the memory,
and keeping meshes next to the engine removes a file round-trip entirely. Install Blender 4.5 LTS
locally and run:
```
blender -b --factory-startup -noaudio -P cleanup.py -- input.fbx output.fbx
```

---

## 7. Free CC0 creatures — download them here

**Quaternius Ultimate Monsters** — rigged, animated, low-poly, **CC0** (no attribution, no strings).
Verified sample: ~6.7k triangles, 58 bones, 14 animations each (Idle, Death, HitReact, Jump, Duck…).
Because they are CC0 they are the only creatures in the project an AI pipeline may freely modify, which
makes them the right test subjects and retexture bases.

Download from https://quaternius.com/packs/ultimatemonsters.html — it is a Google Drive folder, so use
a browser. Take the **FBX** build: users report the .glb arriving without animations. A scripted pull
was tried on the AWS box and came back partial (no dragon), then deleted — the assets belong on this
machine, next to the engine, not on a box that will never open them.

Also worth the click: **KayKit** free tiers (kaylousberg.itch.io) — CC0 skeletons and adventurers that
use the same gradient-atlas texturing technique as Synty, so they blend better than anything else free.
The $7.95 EXTRA tier adds a **Skeleton Golem boss**, the cheapest boss found anywhere in this research.

**Licence trap to remember:** several *paid* creature packs (N-Hance, Meshtint) forbid AI training or
processing outright. Never feed a purchased mesh to an AI tool without reading its terms first.

---

## 8. Concept art on this machine (Gemini)

Ships with this project: `scripts/concept-art.py`. It generates style-locked concept sheets already
phrased for the art direction, so output is usable as a modelling/rigging reference rather than mood art.

```
py -m pip install google-genai pillow
setx GEMINI_API_KEY "<the key>"        # then open a NEW terminal — setx does not affect the current one
py scripts/concept-art.py "a swamp troll with a lantern jaw"
py scripts/concept-art.py "guild hall interior, night" --kind env -n 4
py scripts/concept-art.py "arbalest class, heavy crossbow" --kind character
```
Kinds: `monster` (default) · `character` · `prop` · `env`. Monster and character kinds force a neutral
A-pose with front and side views — the single biggest predictor of a successful auto-rig later.
Roughly US$0.04 per image. Output lands in `concept-art/` (gitignored; commit only keepers).

**Getting the key:** Willy already has one. Ask him for it directly — he can read it from AWS SSM
(`/dev-machine/gemini/api-key`) or from `~/.config/gemini/api-key` on the AWS box. **Never** ask for it
to be pasted into a file in this repo, a webpage, or a commit. Environment variable only.

Once this works, Track A step 1 of the monster pipeline stops needing the AWS relay — that skill's
`[AWS]` tag on concept generation becomes `[WIN]`.

## 9. The git remote

A private repository already exists: **https://github.com/willylazari/newgame**

```
git remote add origin https://github.com/willylazari/newgame.git
git push -u origin main
```
This is how the AWS session reads the project — `PROGRESS.md`, code, and any file it needs to review.
Push before asking for anything to be checked over there.

## 10. Publishing builds — two options

**Default (no credentials here):** package the Linux server, hand the tarball to Willy, and the AWS
session uploads it and triggers the deploy. Simple, and nothing sensitive lives on this machine.

**If the round-trip becomes annoying:** ask Willy for a dedicated IAM user scoped to exactly one
permission — `s3:PutObject` on `arn:aws:s3:::gameserver-liztem-builds/server/*` — configured through
`aws configure` here. That key can do nothing else: not read saves, not touch the server, not spend
money. Do not accept anything broader, and never commit the credentials file.

## 11. Not yet provisioned

- **Tripo / Meshy API keys** (Track A mesh generation, ~US$40/month combined). Ask Willy when the
  pipeline is actually needed, not before. Same rule as Gemini: environment variables, never in the repo.
- **Discord webhook** for build/server notifications — optional, ask if wanted.
