# Bt Action Discovery

> Discovers available robot actions by reading action_library.yaml. Returns action catalog with parameters and constraints for BT generation and validation.

- Skill: `majiayu000/bt-action-discovery` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/bt-action-discovery`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/bt-action-discovery/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/bt-action-discovery

---


## Purpose

This skill discovers what actions the robot supports. Currently reads from `action_library/action_library.yaml`. In the future, this will query the robot's advertised ROS services/actions dynamically.

---

## Workflow

1. Read `action_library/action_library.yaml`
2. Parse available primitive and composite actions
3. Return structured action catalog

---

## Output Format

Return the following information:

### Primitives
- Action name
- Package location
- Parameters (name, type, required, default, description)
- Valid ranges
- Example usage

### Composites
- Action name
- Package location
- Parameters
- Example usage

### Constraints
- Workspace bounds (x_range, y_range)
- Color value ranges
- Default spawn position

---

## Example Usage

When invoked, this skill reads the YAML and returns:

```
Available Primitive Actions:
- GoToPose(name, x, y, theta=None, tolerance_pos=0.1, tolerance_angle=0.1)
  - x, y must be in [0, 11]
  - Example: GoToPose(name='Move', x=5.0, y=5.0)

- SetPen(name, r=255, g=255, b=255, width=3, off=0)
  - RGB values in [0, 255]
  - Example: SetPen(name='Red', r=255, g=0, b=0, width=3)

[... continues for all actions ...]

Workspace Constraints:
- x_range: [0, 11]
- y_range: [0, 11]
- Default spawn: (5.544445, 5.544445)
```

---

## Notes

- This skill has **low degree of freedom** - it simply reads and returns the YAML content in a structured format
- Future enhancement: Query live robot instead of static YAML file
- Invoked by: bt-composer (during generation) and bt-validator (during validation)

