click-target
skill✓Find and click a target object in XR. Use when testing UI interactions, clicking buttons, or verifying interactable elements work correctly.
apm::install
apm install @facebook/click-targetapm::skill.md
---
name: click-target
description: Find and click a target object in XR. Use when testing UI interactions, clicking buttons, or verifying interactable elements work correctly.
disable-model-invocation: true
---
# Click Target in XR
Find a target object in the scene and click it using a controller, then verify the click registered.
## Arguments
`$ARGUMENTS` should be a description of the target to find (e.g., "the RESTART button", "the scoreboard", "the settings panel").
## Workflow
### 1. Get Scene Hierarchy
Use `mcp__iwsdk-dev-mcp__scene_get_hierarchy` to find the target object's UUID.
- Look for objects with entityIndex (these are ECS entities)
- PanelUI elements typically have nested children for their content
### 2. Get Target Transform
Use `mcp__iwsdk-dev-mcp__scene_get_object_transform` with the target UUID.
- Use `positionRelativeToXROrigin` for all positioning operations
- Note the position for the next steps
### 3. Position Headset to Look at Target
Use `mcp__iwsdk-dev-mcp__xr_look_at` with device `headset` and the target position.
- This orients the headset to face the target
### 4. Screenshot to Verify Target Visible
Use `mcp__iwsdk-dev-mcp__browser_screenshot` to verify:
- Target is visible in the view
- Target is not occluded by other objects
- If not visible, use `mcp__iwsdk-dev-mcp__xr_look_at` with `moveToDistance` to get closer
### 5. Position Controller
Use `mcp__iwsdk-dev-mcp__xr_get_transform` to check controller position.
- If controller is visible in screenshot and not occluding target, proceed
- If controller is far away or not visible:
1. Get headset position with `mcp__iwsdk-dev-mcp__xr_get_transform`
2. Set controller to headset position with `mcp__iwsdk-dev-mcp__xr_set_transform`
3. Micro-adjust: offset x by +0.25 (right) or -0.25 (left), y by -0.1, z by -0.3
### 6. Point Controller at Target
Use `mcp__iwsdk-dev-mcp__xr_look_at` with the controller device and target position.
- For UI elements on panels, you may need to target a specific child element
- If the target is a button on a panel, the button may be offset from the panel center
### 7. Click
Use `mcp__iwsdk-dev-mcp__xr_select` with the controller device.
### 8. Verify Click
Use `mcp__iwsdk-dev-mcp__browser_get_console_logs` with a pattern to check for expected log messages.
- If no logs match, the click may have missed - adjust target position and retry
- Common adjustments: change x or z by 0.05-0.1 to hit child elements
## Tips
- For PanelUI buttons, the button position is often offset from the panel center
- Use `mcp__iwsdk-dev-mcp__scene_get_object_transform` on child elements to find exact button positions
- Always verify with console logs rather than assuming from visuals
- The ray visual in screenshots can be misleading - test with actual clicks
- Either controller (left or right) can be used
## Example
To click the RESTART button on the pong scoreboard:
1. Find scoreboard entity (entityIndex 6 in the pong game)
2. Scoreboard is at (0, -0.798, -1.25)
3. Button is at approximately (0.05, -0.798, -1.109) - offset toward player
4. Point controller at button position and click
5. Verify "[BUTTON CLICKED]" appears in console logs