用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/wende/macbeth --skill logicpro命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
How to drive macOS apps with Macbeth MCP tools — discovery, locators, actions, menus, screenshots/OCR, handles, and fallbacks
Automate Electron apps (Slack, VS Code, Discord, etc.) whose UI is Chromium web content exposed through the Accessibility API
Search and create contacts via CNContact, with AppleScript/Shortcuts helpers
基于 SOC 职业分类
正在显示 SKILL.md
| name | logicpro |
| description | AX-first automation for Logic Pro — transport, tracks, tempo, mixer, and view controls |
connect_app({ name: "Logic Pro" })
Logic Pro's main window has these regions (top to bottom, left to right):
Use select_menu_item instead of keyboard shortcuts — it's a single atomic call via System Events, no focus stealing.
select_menu_item({ app: "Logic Pro", menuPath: ["Track", "New Audio Track"] })
| Menu | Item | Notes |
|---|---|---|
| Track | New Audio Track | Opens track creation dialog |
| Track | New Software Instrument Track | Opens track creation dialog |
| Track | New Session Player SI Track... | Opens track creation dialog |
| Track | Delete Track | |
| Track | Rename Track | |
| File | Bounce Project... | Cmd+B equivalent |
| File | Save | Cmd+S equivalent |
| Edit | Undo | Cmd+Z equivalent |
| Element | Role | Query |
|---|---|---|
| Play | checkbox | [{role:'checkbox', title:'Play'}] |
| Stop | button | [{role:'button', title:'Stop'}] |
| Record | checkbox | [{role:'checkbox', title:'Record'}] |
| Cycle | checkbox | [{role:'checkbox', title:'Cycle'}] |
| Count In | checkbox | [{role:'checkbox', title:'Count In'}] |
| Metronome | checkbox | [{role:'checkbox', title:'Metronome Click'}] |
| Solo | checkbox | [{role:'checkbox', title:'Solo'}] |
| Replace | checkbox | [{role:'checkbox', title:'Replace'}] |
| Tuner | checkbox | [{role:'checkbox', title:'Tuner'}] |
| Element | Role | Query |
|---|---|---|
| Tempo | slider | [{role:'slider', index:2}] inside the LCD group |
| Time Signature | popup | [{role:'popup', title:'4/4'}] (value changes) |
| Key | popup | [{role:'popup', titlePattern:'Major|Minor|Dorian'}] |
| Display Mode | popup | [{role:'popup', title:'Beats & Project'}] |
All are checkboxes with value "0" (hidden) or "1" (shown):
| Toggle | Query |
|---|---|
| Library | [{role:'checkbox', title:'Library'}] |
| Inspector | [{role:'checkbox', title:'Inspector'}] |
| Smart Controls | [{role:'checkbox', title:'Smart Controls'}] |
| Mixer | [{role:'checkbox', title:'Mixer'}] |
| Editors | [{role:'checkbox', title:'Editors'}] |
| List Editors | [{role:'checkbox', title:'List Editors'}] |
| Loop Browser | [{role:'checkbox', title:'Loop Browser'}] |
| Browsers | [{role:'checkbox', title:'Browsers'}] |
fill to set it — under the hood this uses AXIncrement/AXDecrement in steps of ~10, so the final value may overshoot slightly.fill which handles this correctly via AXIncrement/AXDecrement.select_menu_item({ app: "Logic Pro", menuPath: ["Track", "New Audio Track"] })
app.checkbox("Play").click()
# or app.button("Stop").click()
app.locator({ role: 'slider', index: 0 }).fill("140")
select_menu_item({ app: "Logic Pro", menuPath: ["File", "Bounce Project..."] })
app.checkbox("Mixer").click()
transport.mjs — control transport (play, stop, record, toggle metronome/cycle)set-tempo.mjs — set project tempoadd-track.mjs — add a new track via menu