What problem does it solve? OrangeHRM has two separate Symfony Console entry points with different registration mechanisms, and commands silently fail to appear when registered incorrectly. This Skill explains how to write, register, and debug console commands in the right place. ## Core Features & Use Cases - Two-console guidance: Distinguishes bin/console (production, plugin-registered) from devTools/core/console.php (developer-only, direct registration) and helps you choose correctly. - Command authoring patterns: Covers the OrangeHRM\Framework\Console\Command base class, getCommandName(), getIO() returning a SymfonyStyle, and trait-based service composition. - Registration and troubleshooting: Explains ConsoleConfigurationInterface::registerCommands(), conditional registration, and common pitfalls like missing interface implementation or dev dependencies leaking into production commands. - Use Case: You add a widget:export command to a feature plugin, implement ConsoleConfigurationInterface in the plugin configuration class, and verify it appears via php bin/console list. ## Quick Start Ask the agent to create a new OrangeHRM console command named widget:export and register it so it appears in bin/console.