New Boss Creation

VerifiedSafe

Skill to add a new boss to an online RPG game, handling server configuration, enemy class, spawn manager, game engine, and client visualization.

Sby Skills Guide Bot
DevelopmentIntermediate
7/27/2026
Claude Code
#game-development#rpg#enemy-ai#typescript#fullstack

Recommended for

Automated summary

This skill walks through adding a complete new boss to an online RPG, from server configuration down to the client-side 3D rendering.

Strengths

  • Breaks the integration into 5 explicit steps (config, enemy class, SpawnManager, GameEngine, SnapshotRenderer) with the relevant file paths
  • Ships a ready-to-adapt TypeScript boss class template covering stats, update and takeDamage
  • Starts by collecting the required inputs: stats, special abilities, geometry/color and spawn timing
  • Follows the repository's existing conventions (LimboBosses.ts files, SPAWN_TIMERS, isBossAlive flags) to stay consistent

Limitations

  • Tightly coupled to this specific repository layout: the server/src and client/js paths do not transfer elsewhere
  • Only suggests stats « based on game progression », with no concrete balancing rule
  • Does not cover testing or in-game validation of the boss once it is wired in
When to use it

Use it when you want to add a brand-new named boss or enemy with its own stats, AI behaviour and spawn schedule.

When not to use it

Avoid it for small tweaks to an existing boss or for non-enemy content such as weapons, levels or UI.

Security analysis

Safe
Quality score92/100

The skill only instructs reading and editing game source files to add a new boss. It contains no destructive commands, no network exfiltration, no obfuscated payloads, and does not instruct the agent to run arbitrary scripts or disable safety. The declared allowed tools include Bash but the skill body does not use it.

No concerns found

How this analysis is made

Examples

Boss complet
Crie um novo boss chamado Dragão Sombrio, com HP alto, um ataque de fogo em área e que apareça após 10 minutos de jogo.
Boss simples com visual específico
Adicione um novo inimigo boss do tipo SlimeKing, com geometria Sphere roxa, hitbox pequena e recompensa de XP alta.
Boss com fases
Quero um novo boss que fica invulnerável até cair para 50% de HP e depois fica mais rápido — cria a classe e integra no spawn.

name: newboss description: Cria um novo boss para o jogo RPG online. Use quando o usuário pedir para criar um novo boss, adicionar um novo inimigo, ou criar um novo personagem/boss para o jogo. argument-hint: <nome-do-boss> allowed-tools: [Read, Write, Edit, Grep, Glob, Bash, Agent]

New Boss Creation Skill

This skill helps you add a new boss to the online RPG game. It handles all 5 steps needed to fully integrate a new boss into both server and client.

Understanding the Architecture

Before creating a boss, understand the flow:

  1. Config (server/src/config.ts) - Defines HP, damage, speed, XP, score, hitbox, and spawn timer
  2. Enemy Class (server/src/game/enemies/*.ts) - Server-side logic (AI, abilities, update loop)
  3. SpawnManager (server/src/game/SpawnManager.ts) - Controls when/where boss spawns
  4. GameEngine (server/src/game/GameEngine.ts) - Instantiates the boss on spawn events
  5. SnapshotRenderer (client/js/SnapshotRenderer.js) - Client-side 3D visualization

Step 1: Gather Boss Information

Ask the user for:

  • Boss name (e.g., "Dark Dragon")
  • Type identifier (e.g., "DarkDragon" - used in code)
  • Base stats:
    • HP (suggest based on game progression)
    • Damage
    • Speed
    • XP reward
    • Score reward
    • Hitbox radius
  • Special abilities (if any): Describe AI behavior, attacks, special moves
  • Visual: Preferred geometry (Box, Cone, Sphere, Cylinder, Octahedron) and color (hex)
  • Spawn timing: After how many minutes should it appear? (adds to SPAWN_TIMERS)

Step 2: Update Config

Read server/src/config.ts and add a new config block:

BOSS_NAME: {
    BASE_HP: <hp>,
    BASE_DAMAGE: <damage>,
    SPEED: <speed>,
    XP: <xp>,
    SCORE: <score>,
    HITBOX_RADIUS: <radius>,
},

Also add spawn timer in SPAWN_TIMERS:

BOSS_NAME: <minutes> * 60 * 1000, // Spawns after X minutes

Step 3: Create Enemy Class

Create or update a file in server/src/game/enemies/. For bosses, use existing files like LimboBosses.ts or create a new one.

Template for new boss class:

import { ServerEnemy } from './Enemy';
import { ServerPlayer } from '../Player';
import { Vec3 } from '../../utils/Vector3';
import { CONFIG } from '../../config';

export class BossNameEnemy extends ServerEnemy {
    constructor(pos: Vec3, globalMult: number, playerLevel?: number, playerMaxHp?: number) {
        super(pos);
        this.type = 'BossName'; // Must match config key and spawn event type
        this.name = 'Boss Display Name';
        const c = CONFIG.BOSS_NAME;
        this.maxHp = c.BASE_HP * globalMult;
        this.hp = this.maxHp;
        this.damage = c.BASE_DAMAGE * globalMult;
        this.speed = c.SPEED;
        this.originalSpeed = c.SPEED;
        this.xp = c.XP;
        this.score = c.SCORE;
        this.hitboxRadius = c.HITBOX_RADIUS;
        this.position.y = 1.75; // Adjust based on geometry
    }

    update(dt: number, players: ServerPlayer[], gameTime: number): void {
        super.update(dt, players, gameTime);
        if (this.isDestroyed) return;

        // Custom AI logic here
        // Find nearest player, move towards, use abilities, etc.
    }

    takeDamage(amount: number, instigator: ServerPlayer | null, countsForPassive = true): void {
        // Custom damage handling (barriers, immunity phases, etc.)
        super.takeDamage(amount, instigator, countsForPassive);
    }
}

Step 4: Update SpawnManager

Read server/src/game/SpawnManager.ts and:

  1. Add alive flag:
public isBossNameAlive = false;
  1. Add timer in constructor:
this.timers.spawnBossName = t.BOSS_NAME;
  1. Add spawn logic in update() method - follow pattern of existing bosses like spawnGuardiãoDoLimbo:
// Spawn Boss Name
if (!this.isBossNameAlive && this.gameTime >= this.timers.spawnBossName) {
    this.isBossNameAlive = true;
    events.push({
        type: 'BossName',
        position: new Vec3(
            (Math.random() - 0.5) * 80,
            1.75,
            (Math.random() - 0.5) * 80
        )
    });
}
  1. Add death handling - find where other bosses set isXAlive = false and add similar logic for the new boss.

Step 5: Update GameEngine

Read server/src/game/GameEngine.ts and:

  1. Add import:
import { BossNameEnemy } from './enemies/BossFile';
  1. Add case in handleSpawnEvent() method:
case 'BossName': {
    const boss = new BossNameEnemy(ev.position, this.globalMultiplier);
    this.enemies.push(boss);
    const sm = this.spawnManager as any;
    sm.isBossNameAlive = true;
    break;
}

Step 6: Update Client Renderer

Read client/js/SnapshotRenderer.js and add entry in enemyVisuals:

BossName: { geo: new THREE.BoxGeometry(2, 2, 2), color: 0xFF0000 },

Choose appropriate geometry:

  • BoxGeometry(width, height, depth) - for box-shaped enemies
  • ConeGeometry(radius, height, segments) - for cone-shaped
  • SphereGeometry(radius, widthSegments, heightSegments) - for spherical
  • CylinderGeometry(radiusTop, radiusBottom, height, segments) - for cylinders
  • OctahedronGeometry(radius, detail) - for crystal-like enemies

Step 7: Verify

After all changes:

  1. Check that the boss type string is consistent across all files
  2. Ensure the config key matches the type used in enemy class
  3. Verify the spawn event type matches the case in GameEngine
  4. Test by running the server and waiting for spawn timer

Important Notes

  • Boss type property must be unique and match what's used in spawn events
  • The position.y should be set to half the height of the geometry for proper ground placement
  • For bosses with special abilities (minions, projectiles, zones), look at existing examples like FeiticeiroImortalEnemy or SuperBossEnemy
  • Minions should be added to server/src/game/enemies/Minions.ts and handled in GameEngine's handleSpawnEvent

Quick Reference: File Paths

| Purpose | File Path | |---------|-----------| | Config | server/src/config.ts | | Enemy class | server/src/game/enemies/*.ts | | Spawn logic | server/src/game/SpawnManager.ts | | Engine integration | server/src/game/GameEngine.ts | | Client visuals | client/js/SnapshotRenderer.js |

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/new-boss-creation-ms2s7c3w/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/new-boss-creation-ms2s7c3w' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/new-boss-creation-ms2s7c3w/download' --output '.skill-downloads/new-boss-creation-ms2s7c3w/SKILL.md.part' && mv '.skill-downloads/new-boss-creation-ms2s7c3w/SKILL.md.part' '.skill-downloads/new-boss-creation-ms2s7c3w/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Original excerpt: Quick Reference: File Paths
PurposeFile Path
Configserver/src/config.ts
Enemy classserver/src/game/enemies/*.ts
Spawn logicserver/src/game/SpawnManager.ts
Engine integrationserver/src/game/GameEngine.ts
Client visualsclient/js/SnapshotRenderer.js

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/new-boss-creation-ms2s7c3w/SKILL.md' && test -s '.skill-downloads/new-boss-creation-ms2s7c3w/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/newboss' && cp -R '.skill-downloads/new-boss-creation-ms2s7c3w' '.claude/skills/newboss'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/new-boss-creation-ms2s7c3w'

openskills read 'new-boss-creation-ms2s7c3w'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/new-boss-creation-ms2s7c3w/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills