--- name: linux-game-manager-dev description: Develop and maintain Linux Game Manager in this repository. Use when adding or removing games, editing `.install`/`.launch`/`.update` scripts, changing `linux-game-manager.sh` installer/launcher/removal/update/CLI behavior, validating accessibility-sensitive flows, or refreshing project-local skill docs after functionality changes. --- # Linux Game Manager Development Use this skill to make safe, consistent changes to Linux Game Manager and keep the skill accurate as the codebase evolves. ## Fast Routing 1. If the task adds/removes/changes a game, read `references/game-extension.md`. 2. If the task changes orchestration/CLI/config behavior, read `references/core-map.md`. 3. If the task changes behavior and you are updating this skill, read `references/skill-maintenance.md`. 4. Run `python3 .codex/skills/linux-game-manager-dev/scripts/audit_game_catalog.py` before and after major game-catalog changes. ## Core Workflow 1. Inspect relevant behavior and identify affected surfaces (`.install`, `.launch`, `.update`, `linux-game-manager.sh`, `speech`, docs). 2. Implement with existing patterns and helper functions instead of inventing new flows. 3. Validate runtime behavior with CLI/manual checks: - `./linux-game-manager.sh -i` - `./linux-game-manager.sh -r` - `./linux-game-manager.sh -u` - `./linux-game-manager.sh -t` 4. Validate catalog consistency: - `python3 .codex/skills/linux-game-manager-dev/scripts/audit_game_catalog.py` 5. If bash files were edited: - Verify `shellcheck` is installed. - If missing, stop and prompt the user to install it (see `references/tooling-prereqs.md`). - Run shellcheck on edited files and fix all reported errors. 6. If functionality changed, refresh this skill using `references/skill-maintenance.md`. ## Non-Negotiable Rules 1. Keep installer and launcher base filenames identical: - `.install/.sh` - `.launch/.game` 2. Ensure launcher scripts include a concrete `installPath`-based path so removal can locate game data. 3. Define `run_update()` in any `.update/.sh` script. 4. Preserve accessibility-first interaction: - Keep dialog/yad wrapper usage (`ui_*` helpers) consistent. - Do not introduce keyboard traps. - For GUI applications, do not add new `speech-dispatcher`/`spd-say` dependencies. 5. Keep new script variables camelCase, function names snake_case, class names PascalCase. 6. For ambiguous "disable game" requests, default to disabling installer visibility only and preserve launcher playability unless the user explicitly requests complete disable. ## Required Validation 1. Run catalog audit: - `python3 .codex/skills/linux-game-manager-dev/scripts/audit_game_catalog.py` 2. Run manual command checks relevant to change scope: - install flow: `./linux-game-manager.sh -i` - launcher flow: `./linux-game-manager.sh` - removal flow: `./linux-game-manager.sh -r` - update flow: `./linux-game-manager.sh -u` 3. Run shellcheck on every edited bash script and fix all issues. - If shellcheck is unavailable, prompt the user to install it before continuing. 4. Validate this skill structure after edits: - `python3 /home/storm/.codex/skills/.system/skill-creator/scripts/quick_validate.py .codex/skills/linux-game-manager-dev` ## Mandatory Skill Maintenance Treat this skill as stale immediately after any change to: - `linux-game-manager.sh` - Any file in `.install/`, `.launch/`, `.update/`, or `speech/` - `README.md` - Any change to game lifecycle expectations (install path rules, update hooks, CLI options, helper function contracts) When stale, perform the full refresh workflow in `references/skill-maintenance.md` before completing the task. ## References - `references/core-map.md`: Architecture and extension map. - `references/game-extension.md`: Exact workflow for adding/removing/extending games. - `references/skill-maintenance.md`: Critical instructions to keep this skill accurate after code changes. - `references/tooling-prereqs.md`: Required tools and shellcheck installation prompts by distro. ## Scripts - `scripts/audit_game_catalog.py`: Reports installer/launcher/update consistency and disabled entries.