mirror of
https://github.com/ksyasuda/dotfiles.git
synced 2026-02-27 12:22:43 -08:00
228 lines
8.9 KiB
Markdown
228 lines
8.9 KiB
Markdown
---
|
|
name: ios-simulator-skill
|
|
version: 1.3.0
|
|
description: 21 production-ready scripts for iOS app testing, building, and automation. Provides semantic UI navigation, build automation, accessibility testing, and simulator lifecycle management. Optimized for AI agents with minimal token output.
|
|
---
|
|
|
|
# iOS Simulator Skill
|
|
|
|
Build, test, and automate iOS applications using accessibility-driven navigation and structured data instead of pixel coordinates.
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
# 1. Check environment
|
|
bash scripts/sim_health_check.sh
|
|
|
|
# 2. Launch app
|
|
python scripts/app_launcher.py --launch com.example.app
|
|
|
|
# 3. Map screen to see elements
|
|
python scripts/screen_mapper.py
|
|
|
|
# 4. Tap button
|
|
python scripts/navigator.py --find-text "Login" --tap
|
|
|
|
# 5. Enter text
|
|
python scripts/navigator.py --find-type TextField --enter-text "user@example.com"
|
|
```
|
|
|
|
All scripts support `--help` for detailed options and `--json` for machine-readable output.
|
|
|
|
## 21 Production Scripts
|
|
|
|
### Build & Development (2 scripts)
|
|
|
|
1. **build_and_test.py** - Build Xcode projects, run tests, parse results with progressive disclosure
|
|
- Build with live result streaming
|
|
- Parse errors and warnings from xcresult bundles
|
|
- Retrieve detailed build logs on demand
|
|
- Options: `--project`, `--scheme`, `--clean`, `--test`, `--verbose`, `--json`
|
|
|
|
2. **log_monitor.py** - Real-time log monitoring with intelligent filtering
|
|
- Stream logs or capture by duration
|
|
- Filter by severity (error/warning/info/debug)
|
|
- Deduplicate repeated messages
|
|
- Options: `--app`, `--severity`, `--follow`, `--duration`, `--output`, `--json`
|
|
|
|
### Navigation & Interaction (5 scripts)
|
|
|
|
3. **screen_mapper.py** - Analyze current screen and list interactive elements
|
|
- Element type breakdown
|
|
- Interactive button list
|
|
- Text field status
|
|
- Options: `--verbose`, `--hints`, `--json`
|
|
|
|
4. **navigator.py** - Find and interact with elements semantically
|
|
- Find by text (fuzzy matching)
|
|
- Find by element type
|
|
- Find by accessibility ID
|
|
- Enter text or tap elements
|
|
- Options: `--find-text`, `--find-type`, `--find-id`, `--tap`, `--enter-text`, `--json`
|
|
|
|
5. **gesture.py** - Perform swipes, scrolls, pinches, and complex gestures
|
|
- Directional swipes (up/down/left/right)
|
|
- Multi-swipe scrolling
|
|
- Pinch zoom
|
|
- Long press
|
|
- Pull to refresh
|
|
- Options: `--swipe`, `--scroll`, `--pinch`, `--long-press`, `--refresh`, `--json`
|
|
|
|
6. **keyboard.py** - Text input and hardware button control
|
|
- Type text (fast or slow)
|
|
- Special keys (return, delete, tab, space, arrows)
|
|
- Hardware buttons (home, lock, volume, screenshot)
|
|
- Key combinations
|
|
- Options: `--type`, `--key`, `--button`, `--slow`, `--clear`, `--dismiss`, `--json`
|
|
|
|
7. **app_launcher.py** - App lifecycle management
|
|
- Launch apps by bundle ID
|
|
- Terminate apps
|
|
- Install/uninstall from .app bundles
|
|
- Deep link navigation
|
|
- List installed apps
|
|
- Check app state
|
|
- Options: `--launch`, `--terminate`, `--install`, `--uninstall`, `--open-url`, `--list`, `--state`, `--json`
|
|
|
|
### Testing & Analysis (5 scripts)
|
|
|
|
8. **accessibility_audit.py** - Check WCAG compliance on current screen
|
|
- Critical issues (missing labels, empty buttons, no alt text)
|
|
- Warnings (missing hints, small touch targets)
|
|
- Info (missing IDs, deep nesting)
|
|
- Options: `--verbose`, `--output`, `--json`
|
|
|
|
9. **visual_diff.py** - Compare two screenshots for visual changes
|
|
- Pixel-by-pixel comparison
|
|
- Threshold-based pass/fail
|
|
- Generate diff images
|
|
- Options: `--threshold`, `--output`, `--details`, `--json`
|
|
|
|
10. **test_recorder.py** - Automatically document test execution
|
|
- Capture screenshots and accessibility trees per step
|
|
- Generate markdown reports with timing data
|
|
- Options: `--test-name`, `--output`, `--verbose`, `--json`
|
|
|
|
11. **app_state_capture.py** - Create comprehensive debugging snapshots
|
|
- Screenshot, UI hierarchy, app logs, device info
|
|
- Markdown summary for bug reports
|
|
- Options: `--app-bundle-id`, `--output`, `--log-lines`, `--json`
|
|
|
|
12. **sim_health_check.sh** - Verify environment is properly configured
|
|
- Check macOS, Xcode, simctl, IDB, Python
|
|
- List available and booted simulators
|
|
- Verify Python packages (Pillow)
|
|
|
|
### Advanced Testing & Permissions (4 scripts)
|
|
|
|
13. **clipboard.py** - Manage simulator clipboard for paste testing
|
|
- Copy text to clipboard
|
|
- Test paste flows without manual entry
|
|
- Options: `--copy`, `--test-name`, `--expected`, `--json`
|
|
|
|
14. **status_bar.py** - Override simulator status bar appearance
|
|
- Presets: clean (9:41, 100% battery), testing (11:11, 50%), low-battery (20%), airplane (offline)
|
|
- Custom time, network, battery, WiFi settings
|
|
- Options: `--preset`, `--time`, `--data-network`, `--battery-level`, `--clear`, `--json`
|
|
|
|
15. **push_notification.py** - Send simulated push notifications
|
|
- Simple mode (title + body + badge)
|
|
- Custom JSON payloads
|
|
- Test notification handling and deep links
|
|
- Options: `--bundle-id`, `--title`, `--body`, `--badge`, `--payload`, `--json`
|
|
|
|
16. **privacy_manager.py** - Grant, revoke, and reset app permissions
|
|
- 13 supported services (camera, microphone, location, contacts, photos, calendar, health, etc.)
|
|
- Batch operations (comma-separated services)
|
|
- Audit trail with test scenario tracking
|
|
- Options: `--bundle-id`, `--grant`, `--revoke`, `--reset`, `--list`, `--json`
|
|
|
|
### Device Lifecycle Management (5 scripts)
|
|
|
|
17. **simctl_boot.py** - Boot simulators with optional readiness verification
|
|
- Boot by UDID or device name
|
|
- Wait for device ready with timeout
|
|
- Batch boot operations (--all, --type)
|
|
- Performance timing
|
|
- Options: `--udid`, `--name`, `--wait-ready`, `--timeout`, `--all`, `--type`, `--json`
|
|
|
|
18. **simctl_shutdown.py** - Gracefully shutdown simulators
|
|
- Shutdown by UDID or device name
|
|
- Optional verification of shutdown completion
|
|
- Batch shutdown operations
|
|
- Options: `--udid`, `--name`, `--verify`, `--timeout`, `--all`, `--type`, `--json`
|
|
|
|
19. **simctl_create.py** - Create simulators dynamically
|
|
- Create by device type and iOS version
|
|
- List available device types and runtimes
|
|
- Custom device naming
|
|
- Returns UDID for CI/CD integration
|
|
- Options: `--device`, `--runtime`, `--name`, `--list-devices`, `--list-runtimes`, `--json`
|
|
|
|
20. **simctl_delete.py** - Permanently delete simulators
|
|
- Delete by UDID or device name
|
|
- Safety confirmation by default (skip with --yes)
|
|
- Batch delete operations
|
|
- Smart deletion (--old N to keep N per device type)
|
|
- Options: `--udid`, `--name`, `--yes`, `--all`, `--type`, `--old`, `--json`
|
|
|
|
21. **simctl_erase.py** - Factory reset simulators without deletion
|
|
- Preserve device UUID (faster than delete+create)
|
|
- Erase all, by type, or booted simulators
|
|
- Optional verification
|
|
- Options: `--udid`, `--name`, `--verify`, `--timeout`, `--all`, `--type`, `--booted`, `--json`
|
|
|
|
## Common Patterns
|
|
|
|
**Auto-UDID Detection**: Most scripts auto-detect the booted simulator if --udid is not provided.
|
|
|
|
**Device Name Resolution**: Use device names (e.g., "iPhone 16 Pro") instead of UDIDs - scripts resolve automatically.
|
|
|
|
**Batch Operations**: Many scripts support `--all` for all simulators or `--type iPhone` for device type filtering.
|
|
|
|
**Output Formats**: Default is concise human-readable output. Use `--json` for machine-readable output in CI/CD.
|
|
|
|
**Help**: All scripts support `--help` for detailed options and examples.
|
|
|
|
## Typical Workflow
|
|
|
|
1. Verify environment: `bash scripts/sim_health_check.sh`
|
|
2. Launch app: `python scripts/app_launcher.py --launch com.example.app`
|
|
3. Analyze screen: `python scripts/screen_mapper.py`
|
|
4. Interact: `python scripts/navigator.py --find-text "Button" --tap`
|
|
5. Verify: `python scripts/accessibility_audit.py`
|
|
6. Debug if needed: `python scripts/app_state_capture.py --app-bundle-id com.example.app`
|
|
|
|
## Requirements
|
|
|
|
- macOS 12+
|
|
- Xcode Command Line Tools
|
|
- Python 3
|
|
- IDB (optional, for interactive features)
|
|
|
|
## Documentation
|
|
|
|
- **SKILL.md** (this file) - Script reference and quick start
|
|
- **README.md** - Installation and examples
|
|
- **CLAUDE.md** - Architecture and implementation details
|
|
- **references/** - Deep documentation on specific topics
|
|
- **examples/** - Complete automation workflows
|
|
|
|
## Key Design Principles
|
|
|
|
**Semantic Navigation**: Find elements by meaning (text, type, ID) not pixel coordinates. Survives UI changes.
|
|
|
|
**Token Efficiency**: Concise default output (3-5 lines) with optional verbose and JSON modes for detailed results.
|
|
|
|
**Accessibility-First**: Built on standard accessibility APIs for reliability and compatibility.
|
|
|
|
**Zero Configuration**: Works immediately on any macOS with Xcode. No setup required.
|
|
|
|
**Structured Data**: Scripts output JSON or formatted text, not raw logs. Easy to parse and integrate.
|
|
|
|
**Auto-Learning**: Build system remembers your device preference. Configuration stored per-project.
|
|
|
|
---
|
|
|
|
Use these scripts directly or let Claude Code invoke them automatically when your request matches the skill description.
|