Synthèse automatique
Ce skill accompagne l'ajout complet d'un nouveau boss dans un RPG en ligne, depuis la configuration serveur jusqu'au rendu 3D côté client.
Points forts
- Découpe l'intégration en 5 étapes explicites (config, classe ennemie, SpawnManager, GameEngine, SnapshotRenderer) avec les chemins de fichiers concernés
- Fournit un gabarit TypeScript de classe boss (stats, update, takeDamage) directement adaptable
- Commence par recueillir les informations nécessaires : stats, capacités spéciales, géométrie/couleur et timing d'apparition
- Suit les conventions du dépôt (fichiers LimboBosses.ts, SPAWN_TIMERS, flags isBossAlive) pour rester cohérent avec l'existant
Limites
- Très lié à l'architecture de ce dépôt précis : les chemins server/src et client/js ne se transposent pas ailleurs
- Ne propose qu'une indication de stats « selon la progression du jeu », sans règle d'équilibrage chiffrée
- Ne couvre ni les tests, ni la validation en jeu du boss une fois intégré
À utiliser lorsqu'on veut ajouter un tout nouveau boss ou ennemi nommé au jeu, avec ses statistiques, son IA et son apparition.
À éviter pour de petites retouches sur un boss existant ou pour du contenu qui n'est pas un ennemi (armes, niveaux, UI).
Analyse de sécurité
SûrThe 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.
Aucun point d'attention détecté
Comment cette analyse est faiteExemples
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 |
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/new-boss-creation-ms2s7c3w/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
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. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Extrait original : 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 |
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
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 doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/new-boss-creation-ms2s7c3w'openskills read 'new-boss-creation-ms2s7c3w'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/new-boss-creation-ms2s7c3w/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Bonnes pratiques React Hook Form
Developpement
Maîtrisez React Hook Form : évitez les anti-patterns, gérez les abonnements, et traitez correctement reset, dirty state et entrées contrôlées.
Migration Emotion vers Mantine
Developpement
Migrer les styled-components Emotion vers des composants Mantine avec style props et modules CSS. Pour convertir .styled.tsx ou supprimer les imports @emotion.
Détecteur de dérive de périmètre
Developpement
Analyse les diffs git par rapport à une intention pour détecter la dérive de périmètre, fichiers non liés et PR trop larges, puis suggère de garder, diviser ou justifier.