projects/chatcontrol/skills/channels/SKILL.md
Troubleshooting channel system: messaging, range, modes, proxy, and Discord linking issues
npx skillsauth add kangarko/ai-support channelsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
When a user describes what they want using non-plugin terms, translate FIRST, then search. Most "this feature doesn't exist" mistakes come from taking the user's words literally instead of mapping them to what ChatControl actually ships.
/channel send <channel> <message> — see command/channel/SendChannelSubCommand.java./channel send-as <player> <channel> <message> — see command/channel/SendAsChannelSubCommand.java./spy toggle chat <channel> — see command/CommandSpy.java and the Spy class. Requires chatcontrol.command.spy plus chatcontrol.spy.type.chat.#require world <name>. Per-region: external region plugin (WorldGuard region-events, Residence flags, Lands enter handler) running /channel join <name> from console.Channels.List.<name>.Auto_Join permission-based group config in settings.yml. Once a player manually /channel leaves, that channel is remembered as left (see Common Mistakes below) and will not auto-rejoin.Range: party or Party: <provider> (Towny, Factions, Lands, mcMMO, SimpleClans, Parties). For 2-player private DMs use the /tell system, not channels.chatcontrol-bukkit/src/main/resources/rules/chat.rs), not channels.command.rs already map /helpop, /nick, /help, /ping etc. as a pattern. Add a new #match ^[/]<alias> block and #then command <real command> $1.If a translation isn't listed here and you're tempted to refuse, follow the prove-the-gap rule: cite the rule files and command directory you searched, and which terms you grep'd, BEFORE saying it doesn't exist.
Channels.Enabled: truechatcontrol.channel.join.{channel}.write permission/channel list to check membershipRules.Verbose: true to see if rules deny the messageMin_Players_For_Range silently disables range — if fewer players are within range than this threshold, range is effectively ignored. Users report "range not working" when few players are onlineRange_Worlds only applies when Range: "*" — the world filter is only relevant for world-wide range, not block-based rangeJoin_Read_Old: true auto-converts old write channel to READ — when joining a new write channel, the previous write channel becomes READ. Users report "lost write access to old channel""none" cancels the event — this breaks DynMap and other plugins that listen to chat events. Use "default" instead if other plugins need the event/channel leave-d channels are remembered — they won't auto-rejoin on reconnect. Users report "channel doesn't auto-join anymore" after manually leaving once/toggle proxy_chat to stop receiving cross-server messages while still sending to proxy channels. Requires proxy_chat in Toggle.Apply_On in settings.yml. This is the correct solution when users want to "toggle global chat" — they stay in their write channel (messages still proxy out) but incoming proxy messages are filteredFormat_Discord was replaced with Format_To_Discord (MC→Discord) and Format_From_Discord (Discord→MC)development
Troubleshooting snowman protection, Psycho hostile snowmen, and mob transformation
data-ai
Troubleshooting snow particles, terrain generation, weather control, and performance issues
tools
Troubleshooting Winter commands and platform compatibility
content-media
Troubleshooting Gift, Dated, and Timed chest issues