newboss
Guides the creation and full integration of new RPG game bosses.
Install
mkdir -p .claude/skills/newboss && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/13262" && unzip -o skill.zip -d .claude/skills/newboss && rm skill.zipInstalls to .claude/skills/newboss
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
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.Key capabilities
- →Gather boss information from the user
- →Update server configuration with boss stats
- →Create server-side enemy class logic
- →Manage boss spawn timing and events
- →Integrate boss into the game engine
- →Configure client-side 3D visualization
How it works
The skill guides the user through gathering boss information, then updates server configuration, creates enemy class logic, manages spawn events, integrates the boss into the game engine, and configures client-side visualization.
Inputs & outputs
When to use newboss
- →Adding new game enemies
- →Configuring boss stats
- →Creating enemy AI logic
About this skill
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:
- Config (
server/src/config.ts) - Defines HP, damage, speed, XP, score, hitbox, and spawn timer - Enemy Class (
server/src/game/enemies/*.ts) - Server-side logic (AI, abilities, update loop) - SpawnManager (
server/src/game/SpawnManager.ts) - Controls when/where boss spawns - GameEngine (
server/src/game/GameEngine.ts) - Instantiates the boss on spawn events - 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:
- Add alive flag:
public isBossNameAlive = false;
- Add timer in constructor:
this.timers.spawnBossName = t.BOSS_NAME;
- Add spawn logic in
update()method - follow pattern of existing bosses likespawnGuardiã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
)
});
}
- Add death handling - find where other bosses set
isXAlive = falseand add similar logic for the new boss.
Step 5: Update GameEngine
Read server/src/game/GameEngine.ts and:
- Add import:
import { BossNameEnemy } from './enemies/BossFile';
- 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 enemiesConeGeometry(radius, height, segments)- for cone-shapedSphereGeometry(radius, widthSegments, heightSegments)- for sphericalCylinderGeometry(radiusTop, radiusBottom, height, segments)- for cylindersOctahedronGeometry(radius, detail)- for crystal-like enemies
Step 7: Verify
After all changes:
- Check that the boss type string is consistent across all files
- Ensure the config key matches the type used in enemy class
- Verify the spawn event type matches the case in GameEngine
- Test by running the server and waiting for spawn timer
Important Notes
- Boss
typeproperty must be unique and match what's used in spawn events - The
position.yshould 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
FeiticeiroImortalEnemyorSuperBossEnemy - Minions should be added to
server/src/game/enemies/Minions.tsand handled in GameEngine'shandleSpawnEvent
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 |
Limitations
- →Requires consistent boss type string across files
- →Requires config key to match enemy class type
- →Requires spawn event type to match GameEngine case
How it compares
This skill provides a structured, multi-step process for integrating a new boss into an RPG, covering both server and client aspects, unlike manual, ad-hoc enemy creation.
Compared to similar skills
newboss side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| newboss (this skill) | 0 | 3mo | No flags | Advanced |
| browser-tools | 6 | 9mo | Review | Intermediate |
| browser-extension-builder | 6 | 6mo | No flags | Intermediate |
| obsidian-data-handling | 4 | 27d | No flags | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
browser-tools
Whamp
Lightweight Chrome automation toolkit with shared configuration, JSON-first output, and six focused scripts for starting, navigating, inspecting, capturing, evaluating, and cleaning up browser sessions.
browser-extension-builder
davila7
Expert in building browser extensions that solve real problems - Chrome, Firefox, and cross-browser extensions. Covers extension architecture, manifest v3, content scripts, popup UIs, monetization strategies, and Chrome Web Store publishing. Use when: browser extension, chrome extension, firefox addon, extension, manifest v3.
obsidian-data-handling
jeremylongshore
Implement vault data backup, sync, and recovery strategies. Use when building backup features, implementing data export, or handling vault synchronization in your plugin. Trigger with phrases like "obsidian backup", "obsidian sync", "obsidian data export", "vault backup strategy".
playwright-mcp-dev
microsoft
Explains how to add and debug playwright MCP tools and CLI commands.
upgrading-expo
sickn33
Upgrade Expo SDK versions
pnpm
antfu
Node.js package manager with strict dependency resolution. Use when running pnpm specific commands, configuring workspaces, or managing dependencies with catalogs, patches, or overrides.