Unity Developer · Hanoi · since 2017

Pham Van Tai

I design modular Unity architectures and the AI agent workflows my team ships them with.

Idle Dungeon Keeper ↗
Inspector · Developer
Role
Unity Developer, Archer Game Studio
Genre
Idle / Tycoon mobile
Codebases
3 current · #1 committer in each
Packages
80 in archer-core · ~25 by me
Tests
~4,700 across games and packages
AI stack
Claude Code · Unity MCP · Figma MCP · GitNexus
Current work · Archer Game Studio

Three codebases, top committer in each

Idle Dungeon Keeper

Live
09/2025 – 09/2026 · Tycoon RPG
FSM NPC AIUI frameworkSave/Load ×29Sheets → BGDatabaseMain Event/fix-bugs skill

Idle Airport Manager

Prototype
09/2026 – now · team of ~10
187 modulesVContainerAI harnessSheetGuard~3,900 testsJenkins → Play

archer-core

Framework
09/2026 – now · UPM monorepo
80 packages7 layersSDK adaptersdepgraph guard~790 tests (mine)
AI-assisted engineering

The feature loop: agents build, people decide

Every feature on Idle Airport Manager runs through this loop. 200+ specs and plans in six weeks.

Human decisionAgent workTooling / system
Claude Code setup · committed to the repo

The agent harness

What every developer's agent loads when it opens the project. Click a node to inspect it.

Written by meAgentTool the agent can act on
Context in
Team skills
Tools · reached through guardrails

Audit first: rules learned from the previous AI project

Before the new project's first commit I audited how agents were set up on Idle Dungeon Keeper and turned each problem into a rule.

Two rule files drifting apart→AGENTS.md is the only source, CLAUDE.md imports it
177-line rule file, mostly ignored→Rules ≤ 80 lines, details in Docs/
Plans in 3 folders, no naming→One Docs/plans, dated names, index, archive
Personal, uncommitted permissions→Shared settings.json: allow · ask · deny
Agents re-explored the repo each session→ARCHITECTURE.md + CONVENTIONS.md + review skill
Each dev's AI behaved differently→Team habits moved into a SessionStart hook
Skills I wrote

Two pipelines where agents touch shared work

Bugs and designer data are the riskiest places to let an agent act, so both pipelines put a person at every decision point.

/fix-bugs: GitHub Issues to reviewed commits

Root cause is traced on a code knowledge graph, never guessed. One commit and one label per bug; nothing is pushed.

SheetGuard: agents writing to designers' Google Sheets

An Apps Script API that only appends, defaults to a dry run, locks the sheet and refuses to overwrite a concurrent edit.

Architecture · in-house Unity framework

archer-core: 80 packages in 7 layers

Distributed as UPM packages over Git. A package may only depend on layers below it, so a game installs only what it needs.

Package I created or mainly wrote~60 of 80 packages shown
▼ dependencies point down onlycycles rejected at commit time

SDK domains and vendor adapters

Game code calls a domain interface. Vendors plug in as adapters with one registration line; with no vendor installed the domain runs as a stub, so the Editor and tests never need real SDKs. Click a node.

Callers
Domain interfaces
Vendor adapters

Data pipeline (package data)

Designers balance in Sheets; the game reads typed, baked tables.

Commit guard for 80 packages

Humans and agents commit through the same check.

2016 – 2026, to scale

Career