Files
aurorabot/shared/modules/feature-flags/CLAUDE.md
syntaxbullet 56db5bc998 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>
2026-04-05 15:19:51 +02:00

919 B

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.