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
Use it when you want to add a brand-new named boss or enemy with its own stats, AI behaviour and spawn schedule.
Avoid it for small tweaks to an existing boss or for non-enemy content such as weapons, levels or UI.
Security analysis
SafeThe 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 madeExamples
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.Adicione um novo inimigo boss do tipo SlimeKing, com geometria Sphere roxa, hitbox pequena e recompensa de XP alta.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:
- 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 |
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 filesThis 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.mdFrom 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
| 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 |
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 installationopenskills 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 syncManual 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.
React Hook Form Best Practices
Development
Master React Hook Form: avoid anti-patterns, manage subscriptions, and handle reset, dirty state, and controlled inputs correctly.
Emotion to Mantine Migration
Development
Migrate Emotion styled-components to Mantine components with style props and CSS modules. Use when converting .styled.tsx files or removing @emotion imports.
Scope Creep Detector
Development
Analyzes git diffs against a stated intent to detect scope creep, unrelated files, broad PRs, and oversized changes, then suggests keep, split, or justify actions.