Skip to content
Back to skills

Game Architect

ASecurity

Validate codebase architecture and organization before releases. Use when user asks to 'check architecture', 'validate structure', 'pre-release check', or before versioning.

  • 666 stars
  • 0 votes
  • 0 copies
  • 5 views
  • Added February 8, 2026
code-qualitygobashrefactoringapi

Works with

  • api

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill game-architect --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Game Architect?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Game Architect
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-game-architect/badge)](https://www.skillsdirectory.com/skills/majiayu000-game-architect)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: game-architect
description: Validate codebase architecture and organization before releases. Use when user asks to 'check architecture', 'validate structure', 'pre-release check', or before versioning.
---

# Game Architect

Validates Stapledon's Voyage codebase against the three-layer architecture and organization standards.

## Quick Start

```bash
# Full validation (all checks - run before releases)
.claude/skills/game-architect/scripts/validate_all.sh --full

# Quick validation (core checks only - faster)
.claude/skills/game-architect/scripts/validate_all.sh --quick

# Individual checks (core)
.claude/skills/game-architect/scripts/check_file_sizes.sh       # Files under 800 lines
.claude/skills/game-architect/scripts/check_layer_boundaries.sh # No game logic in engine/
.claude/skills/game-architect/scripts/check_structure.sh        # Files in correct locations
.claude/skills/game-architect/scripts/check_import_cycles.sh    # No circular imports

# Individual checks (extended)
.claude/skills/game-architect/scripts/check_complexity.sh       # Function size, nesting
.claude/skills/game-architect/scripts/check_ailang_sync.sh      # AILANG ↔ Go types match
.claude/skills/game-architect/scripts/check_api_stability.sh    # sim_gen API unchanged
.claude/skills/game-architect/scripts/check_coverage.sh         # Test coverage
.claude/skills/game-architect/scripts/check_dependencies.sh     # Package import graph
.claude/skills/game-architect/scripts/pre_release_check.sh      # Build, tests, TODOs
```

## When to Use This Skill

Invoke this skill when:
- Before tagging a version release
- After major refactoring
- User asks "check architecture" or "validate structure"
- Periodic codebase health checks
- After adding new files/directories

## Architecture Rules

### The Key Question: AILANG or Engine?

**Ask:** Does this affect gameplay outcomes?

| If YES → AILANG | If NO → Engine OK |
|-----------------|-------------------|
| Position, health, inventory | Decorative particles |
| NPC behavior, dialogue | Screen transitions |
| Time dilation, velocity | Shader effects |
| Planet data, civilizations | UI layout math |
| Game mode, decisions | Asset loading |

```
AILANG owns WHAT is happening (state, logic, decisions)
Engine owns HOW it looks (rendering, animation, polish)
```

### Four-Layer Separation

| Layer | Location | Purpose | Allowed Content |
|-------|----------|---------|-----------------|
| **Source** | `sim/*.ail` | Game logic (AILANG) | Types, pure functions |
| **Generated** | `sim_gen/*.go` | Generated from AILANG | Game types (OK - generated) |
| **Game Views** | `game_views/*.go` | Game-specific rendering | DomeRenderer, DeckStack |
| **Engine** | `engine/*.go` | Generic rendering (reusable) | DrawCmd, Camera, Assets |
| **Entry** | `cmd/*.go` | Wiring | Main, game loop |

### Engine Genericization (Critical)

**Goal:** Engine should work unchanged for ANY AILANG game.

**Before adding to engine/, ask:** Could a different game use this unchanged?

| If YES | If NO |
|--------|-------|
| → OK for `engine/` | → Put in `game_views/` |

**engine/ must be generic:**
- ✅ DrawCmd rendering (any variant)
- ✅ Asset loading, camera, shaders
- ❌ Deck names (Core, Engineering, Bridge)
- ❌ Planet names (Saturn, Earth)
- ❌ Crew roles (pilot, comms, scientist)
- ❌ Game-specific state types

**sim_gen/ is fine:**
- Generated from AILANG - game types belong there
- Never manually edit

**game_views/ for game-specific rendering:**
- DomeRenderer (solar system viz)
- DeckStackRenderer (5-deck ship)
- Any code using sim_gen types beyond DrawCmd

### Layer Boundaries (Critical)

**engine/ must NOT contain:**
- Game state (positions, health, time) - use AILANG
- Game logic (NPC AI, decisions) - use AILANG
- Hardcoded game data (planet configs) - use AILANG
- Game-specific types (DeckType, DomeViewState) - use game_views/

**engine/ CAN contain:**
- Generic DrawCmd rendering
- Decorative particles (no gameplay impact)
- Screen transition animations
- Shader/visual effects
- UI layout helpers

### File Size Limits

| Threshold | Action |
|-----------|--------|
| > 800 lines | **Error** - must split file |
| > 600 lines | **Warning** - consider splitting |
| > 100 lines/function | **Warning** - extract functions |

## Workflow

1. **Run full validation**: `./scripts/validate_all.sh`
2. **Review violations**: Check output for ✗ markers
3. **Fix issues**: Refactor code to correct layer
4. **Re-validate**: Ensure all checks pass
5. **Proceed with release**: Once clean

## Checks Performed

### Core Checks (blocking)

| Script | Purpose |
|--------|---------|
| `check_file_sizes.sh` | Max 800 lines/file, warn at 600 |
| `check_layer_boundaries.sh` | No game logic in engine/, no rendering in sim_gen/ |
| `check_structure.sh` | Files in correct directories |
| `check_import_cycles.sh` | No circular package dependencies |
| `pre_release_check.sh` | Build, tests, TODOs, debug code |

### Extended Checks (warnings)

| Script | Purpose |
|--------|---------|
| `check_complexity.sh` | Function size (<100 lines), nesting depth, param count |
| `check_ailang_sync.sh` | AILANG types match sim_gen Go types |
| `check_api_stability.sh` | sim_gen exports haven't changed unexpectedly |
| `check_coverage.sh` | Test coverage for critical paths |
| `check_dependencies.sh` | Package import graph, layer violations |

### API Stability

The API stability check maintains a baseline of sim_gen exports:

```bash
# Update baseline after intentional API changes
.claude/skills/game-architect/scripts/check_api_stability.sh --update
```

## Design Doc Management

Track implementation progress of design docs through sprint files:

```bash
# Audit design docs - check which have sprints
.claude/skills/game-architect/scripts/audit_design_docs.sh
```

### Design Doc Workflow

1. **Create design doc** in `design_docs/planned/next/`
2. **Use sprint-planner skill** to create sprint plan in `sprints/`
3. **Execute sprint** (sprint tracks implementation progress via checkboxes)
4. **When sprint complete**, move doc to `design_docs/implemented/vX_Y_Z/`

### Audit Output

The audit script checks:
- Which design docs have corresponding sprint files
- Sprint completion percentage (via checkbox counting)
- Orphan sprints (sprints without design docs)

Design docs WITHOUT sprints need planning before implementation.

## Resources

- [Architecture Rules](resources/architecture_rules.md) - Detailed layer boundaries and examples

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.