원클릭으로
maestro
Create Maestro UI test flows for user stories and features
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Create Maestro UI test flows for user stories and features
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Write user stories optimized for AI coding agents. Use this skill when writing backlog stories that will be implemented by Developer or Frontend Developer agents. Produces structured, XML-tagged specifications with explicit context, states matrix, file paths, and escalation criteria. Based on research from SWE-bench, MetaGPT, and practitioner evidence from Claude Code, Cursor, and Devin communities.
Multi-phase deep research with parallel retrieval agents. Use when the user asks for in-depth research, analysis, comparison, market intelligence, or any query that requires systematic evidence gathering from multiple sources with citations and confidence scoring. Triggers on: "deep research", "research this", "investigate", "comprehensive analysis", "compare X vs Y in depth", "what does the evidence say about", or any complex question needing 5+ sources.
| name | maestro |
| description | Create Maestro UI test flows for user stories and features |
| user_invocable | true |
Create Maestro test flows for user stories and features.
Identify the test scope:
{test_dir}/S{XX}-{feature}.yaml{test_dir}/flows/{name}.yamlDetermine the app ID:
{your.app.bundleIdentifier}Write the flow using Maestro YAML syntax:
appId: {your.app.bundleIdentifier}
---
# Test: {Story title or feature description}
- launchApp
- assertVisible: "Expected screen element"
- tapOn: "Button text"
- inputText: "test input"
- assertVisible: "Success message"
Use appropriate selectors (in order of preference):
text: "Visible text" — most readable, use for static contentid: "accessibility_id" — use for dynamic content or iconspoint: 50%, 50% — last resort for complex layoutsInclude standard test patterns:
| Command | Syntax | Use Case |
|---|---|---|
launchApp | - launchApp | Start the app |
tapOn | - tapOn: "Text" | Tap button/element |
inputText | - inputText: "value" | Type in focused field |
assertVisible | - assertVisible: "Text" | Verify element exists |
assertNotVisible | - assertNotVisible: "Text" | Verify element hidden |
scroll | - scroll | Scroll down |
swipe | - swipe: {direction: "LEFT"} | Swipe gesture |
back | - back | Android back button |
hideKeyboard | - hideKeyboard | Dismiss keyboard |
takeScreenshot | - takeScreenshot: "name" | Capture screen |
runFlow | - runFlow: "flows/login.yaml" | Reuse another flow |
waitForAnimationToEnd | - waitForAnimationToEnd | Wait for animations |
# By text (preferred)
- tapOn: "Submit"
# By accessibility ID
- tapOn:
id: "submit_button"
# By text with index (when multiple matches)
- tapOn:
text: "Item"
index: 0
# By position relative to other elements
- tapOn:
below: "Header"
text: "Button"
# By screen coordinates (last resort)
- tapOn:
point: 50%, 90%
/maestro S42 # Create test flow for story S42
/maestro login # Create reusable login flow
/maestro "onboarding" # Create test for onboarding feature
maestro test {path-to-flow}.yamlAfter creating flows, run them:
# Single flow
maestro test {test_dir}/S42-feature.yaml
# All flows
maestro test {test_dir}/
# With screenshots on failure
maestro test --debug-output ./screenshots {test_dir}/S42-feature.yaml
waitForAnimationToEnd or explicit delaysrunFlow: "flows/login.yaml"