plugins-claude/stl-game-config/skills/stl-game-config/SKILL.md
Configure Steam games via SteamTinkerLaunch with automated system detection and template-based configuration. Detects GPU vendor (NVIDIA/AMD/Intel), compositor (KDE/Wayland), HDR capability, and graphics API to generate optimal Proton/DXVK/VKD3D settings. Handles modern DX12/RT games and retro DX9 titles.
npx skillsauth add st0nefish/claude-toolkit stl-game-configInstall 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.
Configure Steam games for optimal performance on Linux using SteamTinkerLaunch with automated system detection.
| File | Purpose |
|------|---------|
| ~/.config/steamtinkerlaunch/global.conf | Global settings |
| ~/.config/steamtinkerlaunch/default_template.conf | Template for new games |
| ~/.config/steamtinkerlaunch/gamecfgs/id/{APPID}.conf | Per-game config |
| ~/.config/steamtinkerlaunch/gamecfgs/customvars/{APPID}.conf | Per-game environment vars |
Tools by step:
Ask for game name. Note any specific issues (won't launch, crashes, poor performance).
Run the system-info.sh script to gather system capabilities:
bash ${CLAUDE_PLUGIN_ROOT}/scripts/system-info.sh
Parse the JSON output to determine:
Do this research in a subagent, not the parent session. ProtonDB and PCGamingWiki pages are long and noisy; fetching them inline floods the main context with content you don't need. Dispatch a research subagent via the Agent tool, have it do all the web work, and have it return only the structured findings below — never the raw page text.
Dispatch: Agent tool with subagent_type: research (read-only; falls back to general-purpose if research is unavailable). For a single game one agent is enough; if researching several games at once, dispatch one agent per game in a single message so they run in parallel.
The agent's prompt MUST include the game name, the data points to collect, the source URLs, and an explicit instruction: "Report only the structured summary below. Do not paste raw page content, comment threads, or full review text into your reply — distill to the key details only."
Data points the agent collects:
| Data | Primary Source | Fallback | |------|----------------|----------| | Steam App ID | Steam store URL, SteamDB | WebSearch | | Graphics API | PCGamingWiki "API" section | ProtonDB comments | | RT/DLSS/HDR | PCGamingWiki "Features" | In-game settings | | Linux issues | ProtonDB reports | - | | Existing config | personal game-notes KB (if any) | Create new |
Research workflow the agent follows:
https://www.protondb.com/app/{APPID}):
https://www.pcgamingwiki.com/wiki/{Game_Name}):
*{game-name}*.mdWhat the agent returns to the parent — just the filled-in findings block (App ID, graphics API, RT/DLSS/HDR support, ProtonDB rating, top issues, recommended Proton version, anti-cheat status). The parent uses that summary for Steps 4–5; it should never need to read a fetched page itself.
## {Game Name} - Feature Analysis
**Steam App ID**: {APPID}
**Graphics API**: {API}
| Feature | Supported | Notes |
|---------|-----------|-------|
| Ray Tracing | Yes/No | {type} |
| DLSS | Yes/No | |
| HDR | Yes/No | |
**ProtonDB Rating**: {rating}
**Known Issues**: {summary}
Ask: "I'll enable all supported features. Any you want to skip?"
Generate per-game config using the template system:
SYSTEM_INFO=$(bash ${CLAUDE_PLUGIN_ROOT}/scripts/system-info.sh)
bash ${CLAUDE_PLUGIN_ROOT}/scripts/generate-stl-config.sh "$SYSTEM_INFO" "$GAME_API" "$GAME_HDR" "$APPID" "$GAME_NAME"
This outputs a complete config with:
Write to ~/.config/steamtinkerlaunch/gamecfgs/id/{APPID}.conf
Confirm config exists:
ls ~/.config/steamtinkerlaunch/gamecfgs/id/{APPID}.conf
Test launch - Watch for STL loading message in terminal
MangoHud verification (once in-game):
API: VKD3D = DX12 mode active (VKD3D-Proton translating)API: VK = DX11/Vulkan mode (DXVK translating)If issues: consult the SteamTinkerLaunch wiki or your own troubleshooting notes
After configuration:
base.conf)Always safe defaults for all games:
PROTON_ENABLE_NVAPI="1"
PROTON_HIDE_NVIDIA_GPU="0"
DXVK_ASYNC="1"
USEGAMEMODERUN="1"
USEMANGOHUD="1"
gpu.conf)Uncomment section based on your GPU vendor:
| GPU | Settings |
|-----|----------|
| NVIDIA | PROTON_ENABLE_NVAPI, NVAPI, GPU filtering, VKD3D shader cache |
| AMD | GPU filtering, VKD3D shader cache |
| Intel | GPU filtering |
api.conf)Uncomment section based on game's graphics API:
| Game Type | Settings |
|-----------|----------|
| DX12 + RT | STL_VKD3D_CONFIG="dxr", USERAYTRACING="1", USEDLSS="1" |
| DX12 (no RT) | STL_VKD3D_CONFIG="none", USERAYTRACING="0", USEDLSS="1" |
| DX11 | STL_VKD3D_CONFIG="none", USERAYTRACING="0", DXVK_HDR="1" |
| DX9 | taskset, WINE_CPU_TOPOLOGY, DXVK_FRAME_RATE |
Critical notes:
VKD3D_CONFIG="dxr" is required for DX12 RT detectionUSERAYTRACING=1 on DX11/Vulkan causes launch failureshdr.conf)Uncomment when KDE HDR is enabled AND game supports HDR:
| Game Type | Settings |
|-----------|----------|
| DX12 | PROTON_ENABLE_HDR="1", ENABLE_HDR_WSI="1" |
| DX11 | PROTON_ENABLE_HDR="1", ENABLE_HDR_WSI="1", DXVK_HDR="1" |
Prerequisites:
paru -S vk-hdr-layer-kwin6-gitcustomvars.conf)For env vars not in STL: GPU filtering, VKD3D shader cache, retro settings
development
Start work from your description — explore the codebase and plan
data-ai
Multi-phase, multi-agent feature workflow: spec → plan → refine → divide → execute → review. Invoke when the user escalates a session-start/session-issue flow to orchestration, or asks to run a non-trivial feature (multiple files, design ambiguity, cross-cutting concerns, correctness-critical paths) through the full multi-agent workflow. For small fixes, prefer session-start.
tools
Browse open issues, pick one, and start work on it
tools
Review, clean up, and open a PR to finalize the work