refactor(games): rework room lifecycle events and remove chess plugin
Consolidate room leave/delete event handling into RoomManager emitter, remove redundant PLAYER_LEFT publishes from GameServer, and delete the chess game plugin (board, types, tests) in favor of the new plugin architecture. Add per-module CLAUDE.md files for leveling, guild-settings, feature-flags, db, api, and panel to improve agent navigability. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
9
shared/modules/feature-flags/CLAUDE.md
Normal file
9
shared/modules/feature-flags/CLAUDE.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# Feature Flags Module
|
||||
|
||||
- **No caching.** Every `isFlagEnabled()` and `hasAccess()` call hits the database directly.
|
||||
- `isFlagEnabled(flagName)` checks global on/off state. `hasAccess(flagName, context)` checks both global state AND per-entity access records (guild, user, or role).
|
||||
- Access logic: flag must be globally enabled AND user must have an explicit access grant. Grants can target guildId, userId, or roleId independently.
|
||||
- Commands declare `beta: true` and optionally `featureFlag: string` in the Command interface. `CommandHandler` intercepts beta commands and calls `hasAccess()` before execution.
|
||||
- If a command has no explicit `featureFlag`, the command name (`interaction.commandName`) is used as the flag name fallback.
|
||||
- Flag names are case-sensitive. Convention is snake_case or camelCase — no enforcement.
|
||||
- Admin management via `/featureflags` command: CRUD on flags and access grants/revokes.
|
||||
Reference in New Issue
Block a user