Launch Baldur's Gate 3 through Steam on macOS and load saved games using macos-automator and peekaboo MCP servers. Designed for testing bg3se-macos (Script Extender) development. Use when: (1) launching BG3 from Steam, (2) loading a BG3 saved game, (3) testing SE mod injection, (4) user asks to "start BG3", "load my BG3 save", "play Baldur's Gate", "test the script extender". Requires macos-automator and peekaboo MCP servers installed with accessibility permissions.
Scanned 2/12/2026
Install to Claude Code
npx -y skills add tdimino/bg3se-macos --skill bg3-steam-launcher --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Bg3 Steam Launcher?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/tdimino-bg3-steam-launcher)More formats (shields.io, HTML) on the badges page.
---
name: bg3-steam-launcher
description: |
Launch Baldur's Gate 3 through Steam on macOS and load saved games using macos-automator and peekaboo MCP servers.
Designed for testing bg3se-macos (Script Extender) development.
Use when: (1) launching BG3 from Steam, (2) loading a BG3 saved game, (3) testing SE mod injection,
(4) user asks to "start BG3", "load my BG3 save", "play Baldur's Gate", "test the script extender".
Requires macos-automator and peekaboo MCP servers installed with accessibility permissions.
---
# BG3 Steam Launcher
Automate launching Baldur's Gate 3 via Steam and loading saved games.
**MCP Servers Used:**
- **macos-automator** - AppleScript execution for UI automation
- **peekaboo** - Fast screenshots and AI-powered visual analysis
## Prerequisites
```bash
claude mcp add macos-automator -- npx -y @steipete/macos-automator-mcp@latest
claude mcp add peekaboo -- npx -y @steipete/peekaboo-mcp@beta
```
Grant accessibility permissions to osascript in System Preferences → Security → Accessibility.
## MCP Tools Quick Reference
### Peekaboo (Vision)
| Tool | Use |
|------|-----|
| `mcp__peekaboo__image` | Capture screenshot of screen/app/window |
| `mcp__peekaboo__analyze` | Ask AI questions about screenshots |
| `mcp__peekaboo__list` | List running apps and windows |
### macos-automator (Actions)
| Tool | Use |
|------|-----|
| `mcp__macos-automator__execute_script` | Run AppleScript/JXA |
| `mcp__macos-automator__get_scripting_tips` | Search automation scripts |
## Core Workflow
### Step 1: Launch BG3 via Steam Protocol
```applescript
do shell script "open steam://run/1086940"
```
BG3 Steam App ID: **1086940**
### Step 2: Wait for Larian Launcher
Use Peekaboo to monitor for the PLAY button, then click it.
### Step 3: Wait for Main Menu (15-30s)
Poll with Peekaboo screenshots looking for Continue/Load Game/New Game buttons.
### Step 4: Load Save
Navigate menus using keyboard (Enter=36, Esc=53, arrows) or mouse coordinates.
## Mouse Clicks (JXA + CGEvent)
Standard AppleScript `click at` doesn't work for game UIs. Use JXA with CGEvent:
```javascript
// Execute with language: "javascript"
ObjC.import('Cocoa');
function clickAt(x, y) {
const point = $.CGPointMake(x, y);
const down = $.CGEventCreateMouseEvent($(), $.kCGEventLeftMouseDown, point, $.kCGMouseButtonLeft);
const up = $.CGEventCreateMouseEvent($(), $.kCGEventLeftMouseUp, point, $.kCGMouseButtonLeft);
$.CGEventPost($.kCGHIDEventTap, down);
delay(0.05);
$.CGEventPost($.kCGHIDEventTap, up);
}
// Get window-relative coordinates
function getWindowClickPos(processName, xPercent, yPercent) {
const se = Application('System Events');
const proc = se.processes.byName(processName);
const win = proc.windows[0];
const pos = win.position();
const size = win.size();
return {
x: pos[0] + (size[0] * xPercent),
y: pos[1] + (size[1] * yPercent)
};
}
// Example: click PLAY button (22% across, 87% down)
const coords = getWindowClickPos('bg3', 0.22, 0.87);
clickAt(coords.x, coords.y);
```
## Process Names
| App | Process Name | Bundle ID |
|-----|--------------|-----------|
| Steam | `Steam` | com.valvesoftware.steam |
| BG3 (Launcher & Game) | `bg3` | com.larian.bg3 |
## Button Coordinates (1728x1117 fullscreen)
| Screen | Element | X | Y |
|--------|---------|---|---|
| Larian Launcher | PLAY button | 22% | 87% |
| Main Menu | Continue | 310 | 510 |
| Main Menu | Load Game | 310 | 610 |
| Load Screen | First save slot | 200 | 230 |
| Load Screen | Load Game button | 870 | 1050 |
| Mod Verification | Start Game button | 720 | 1000 |
## SE Testing Workflow
1. **Build:**
```bash
cd /path/to/bg3se-macos && ./scripts/build.sh
```
2. **Verify SE wrapper** in Steam launch options:
```
/tmp/bg3w.sh %command%
```
3. **Launch via this skill** and load a save
4. **Check SE logs:**
```bash
tail -f /tmp/bg3se_macos.log
```
## Crash Reports
**SE Log:** `/tmp/bg3se_macos.log`
**macOS Crash Reports:** `~/Library/Logs/DiagnosticReports/`
- Files named `Baldur's Gate 3-YYYY-MM-DD-HHMMSS.ips`
- JSON format with full stack traces
```bash
# List recent BG3 crash reports
ls -la ~/Library/Logs/DiagnosticReports/ | grep -i "baldur"
# Find crash location in our dylib
grep -A5 "libbg3se.dylib" ~/Library/Logs/DiagnosticReports/'Baldur'\''s Gate 3-*.ips'
```
## Troubleshooting
| Issue | Solution |
|-------|----------|
| Click doesn't work | Use JXA CGEvent (see above) |
| Permission denied | System Preferences → Accessibility → enable osascript |
| Can't see screen | Use `mcp__peekaboo__image` with `app_target: "screen"` |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!