Semantic Skills Reference
Semantic Skills Reference
The full catalogue of semantic skills supported by the LinkSoul platform. When the LLM/VLM inside a
passive callback decides to fire a skill, dispatch it via
response.onSkill(eventId, itemId, skillType, skillName, skillParam); the JSON in the Semantics
column below is what goes into skillParam.
Note: the table below is the platform's full designed capability set. Different robot models / firmware versions may support different subsets. The SDK side does not need to know what the target robot supports — just dispatch whatever the 语义理解 resolves to. The LinkSoul platform filters by model and skill list:
- Hit & supported on-device → dispatched as-is
- Hit but not supported on-device → the platform returns
unknownto the device, which treats it as "skill not supported"
When to dispatch a skill
A skill is one possible outcome branch of 语义理解 classification on the ASR text — not every turn needs one:
- Get the ASR final text (the
Asr2*callbacks receive it directly astext; theAudio2*/AudioVideo2*callbacks finish ASR internally atflag=2). - Run 语义理解 / intent classification on the text on your business side. The result falls into one of
three branches:
- Skill (action / movement / expression / status / confirmation / Q&A): pick
skillType+skillNamefrom the table, buildskillParam, and callresponse.onSkill(...). For multi-intent turns you may emit severalonSkillcalls — use a distinctitemIdper intent. - Plain chat: reply with the normal LLM/VLM text stream (optionally precede with
response.onInterruptto barge in). - Rejected (false wake, noise, invalid query, ...): send nothing back — do not call
any
response.on*method. No skill, noonInterrupt, no LLM/VLM output.
- Skill (action / movement / expression / status / confirmation / Q&A): pick
For the full trigger walkthrough and code template, see Passive Callbacks Guide - When to dispatch a skill.
Action commands
Greeting / interaction
| Sub-skill | Semantics |
|---|---|
| Cheer (default right hand) | {"action":"cheer"} |
| Cheer with left hand | {"action":"cheer","hand":"left"} |
| Cheer with right hand | {"action":"cheer","hand":"right"} |
| Cheer with both hands | {"action":"cheer","hand":"both"} |
| Blow a kiss | {"action":"blow_kiss"} |
| Blow a kiss with left hand | {"action":"blow_kiss","hand":"left"} |
| Blow a kiss with right hand | {"action":"blow_kiss","hand":"right"} |
| Wave / say hi | {"action":"wave_hands"} |
| Wave with left hand | {"action":"wave_hands","hand":"left"} |
| Wave with right hand | {"action":"wave_hands","hand":"right"} |
| Wave with both hands | {"action":"wave_hands","hand":"both"} |
| Wave in front of chest | {"action":"chest_wave_hands"} |
| Chest wave with left hand | {"action":"chest_wave_hands","hand":"left"} |
| Chest wave with right hand | {"action":"chest_wave_hands","hand":"right"} |
| Handshake / wiggle a hand | {"action":"handshake"} |
| Left-hand handshake | {"action":"handshake","hand":"left"} |
| Right-hand handshake | {"action":"handshake","hand":"right"} |
| Raise hand | {"action":"raise_hand"} |
| Raise left hand | {"action":"raise_hand","hand":"left"} |
| Raise right hand | {"action":"raise_hand","hand":"right"} |
| Salute (right hand) | {"action":"salute"} |
| High-five | {"action":"high_five"} |
| Left high-five | {"action":"high_five","hand":"left"} |
| Right high-five | {"action":"high_five","hand":"right"} |
| Double high-five | {"action":"high_five","hand":"both"} |
| Clap / applaud | {"action":"clap"} |
| Thumbs up (right hand default) | {"action":"thumbs_up"} |
| Left-hand thumbs up | {"action":"thumbs_up","hand":"left"} |
| Right-hand thumbs up | {"action":"thumbs_up","hand":"right"} |
| Double thumbs up | {"action":"thumbs_up","hand":"both"} |
| Fist bump (right hand default) | {"action":"fist_bump"} |
| Left-hand fist bump | {"action":"fist_bump","hand":"left"} |
| Right-hand fist bump | {"action":"fist_bump","hand":"right"} |
| Heart shape with both hands | {"action":"hand_heart"} |
| Heart with left hand | {"action":"hand_heart","hand":"left"} |
| Heart with right hand | {"action":"hand_heart","hand":"right"} |
| Victory sign | {"action":"victory_sign"} |
| Left-hand V sign | {"action":"victory_sign","hand":"left"} |
| Right-hand V sign | {"action":"victory_sign","hand":"right"} |
| Double V sign | {"action":"victory_sign","hand":"both"} |
| Cup-fist salute | {"action":"cup_fist"} |
| Hug | {"action":"hug"} |
| Bow | {"action":"bow"} |
| Goodbye | {"action":"goodbye"} |
| Hands down / reset | {"action":"hands_down"} |
Head / torso
| Sub-skill | Semantics |
|---|---|
| Nod | {"action":"nod"} |
| Shake head | {"action":"shake_head"} |
| Look forward | {"action":"look_forward"} |
| Look left | {"action":"look_left"} |
| Look right | {"action":"look_right"} |
| Look backward | {"action":"look_backward"} |
| Level left arm | {"action":"level_arm","hand":"left"} |
| Level right arm | {"action":"level_arm","hand":"right"} |
| Level both arms | {"action":"level_arm","hand":"both"} |
| Cross arms | {"action":"cross_arms"} |
| Twist torso left | {"action":"twist_left"} |
| Twist torso right | {"action":"twist_right"} |
Idle / emotive
| Sub-skill | Semantics |
|---|---|
| Think | {"action":"think"} |
| Scratch head | {"action":"scratch_head"} |
| Look around | {"action":"look_around"} |
| Scratch butt | {"action":"scratch_butt"} |
| Sad | {"action":"sad"} |
| Sympathy | {"action":"sympathy"} |
| Body shake | {"action":"body_shake"} |
| Hip twist | {"action":"hip_twist"} |
| Leg swing while seated | {"action":"leg_swing"} |
| Spin in place | {"action":"spin"} |
| Dynamic light wave | {"action":"dynamic_light_wave"} |
Posture changes
| Sub-skill | Semantics |
|---|---|
| Crouch | {"action":"crouch"} |
| Stand up from crouch | {"action":"stand_up"} |
| Sit on a chair | {"action":"sit_down","place":"chair"} |
| Sit on the ground | {"action":"sit_down","place":"ground"} |
Performance
| Sub-skill | Semantics |
|---|---|
| Dance | {"action":"dance"} |
| Tai chi performance | {"action":"taichi"} |
| Photo pose | {"action":"photo_pose"} |
| N-shot photo pose | {"action":"photo_pose","count":3} |
| Basketball shoot | {"action":"shoot_basket"} |
Movement commands
| Sub-skill | Semantics |
|---|---|
| Step forward | {"movement":"move_forward"} |
| Keep moving forward (needs confirmation) | {"movement":"move_forward","continuous":true} |
| Move forward 10m | {"movement":"move_forward","meter":10} |
| Move forward/back/left/right N steps | {"movement":"move_forward","step":"xxx"} etc. |
| Step backward (needs confirmation) | {"movement":"move_backward"} |
| Keep moving backward (needs confirmation) | {"movement":"move_backward","continuous":true} |
| Move backward 10m (needs confirmation) | {"movement":"move_backward","meter":10} |
| Step left (needs confirmation) | {"movement":"move_left"} |
| Keep moving left (needs confirmation) | {"movement":"move_left","continuous":true} |
| Move left 10m (needs confirmation) | {"movement":"move_left","meter":10} |
| Step right (needs confirmation) | {"movement":"move_right"} |
| Keep moving right (needs confirmation) | {"movement":"move_right","continuous":true} |
| Move right 10m (needs confirmation) | {"movement":"move_right","meter":10} |
| Turn around | {"movement":"turn_around"} |
| Turn left | {"movement":"turn_left"} |
| Turn right | {"movement":"turn_right"} |
| Turn backward | {"movement":"turn_backward"} |
| Turn left by angle | {"movement":"turn_left","angle":30} |
| Turn right by angle | {"movement":"turn_right","angle":30} |
| Run | {"movement":"run"} |
| Walk/run faster | {"movement":"faster"} |
| Walk/run slower | {"movement":"slower"} |
| Go to the photo spot | {"movement":"go_to_spot","target":"photo"} |
Expression commands
| Sub-skill | Semantics |
|---|---|
| Smile | {"expression":"smile"} |
| Laugh | {"expression":"laugh"} |
| Cry | {"expression":"cry"} |
| Sad | {"expression":"sad"} |
| Bored | {"expression":"bored"} |
| Thinking expression | {"expression":"think"} |
| Sleep | {"expression":"sleep"} |
| Confused / surprised | {"expression":"confused"} |
| Anger | {"expression":"anger"} |
| Whiny | {"expression":"whiny"} |
| Sympathy | {"expression":"sympathy"} |
| Admire eyes | {"expression":"admire_eyes"} |
| Close eyes | {"expression":"close_eyes"} |
| Open eyes | {"expression":"open_eyes"} |
| Blink | {"expression":"blink"} |
| Heart eyes | {"expression":"heart_eyes"} |
| Sparkle eyes | {"expression":"sparkle_eyes"} |
| Roll eyes | {"expression":"roll_eyes"} |
| Flirt eyes | {"expression":"flirt_eyes"} |
Status control
| Sub-skill | Semantics |
|---|---|
| Freeze / stop walking | {"status":"freeze"} |
| Hush / exit | {"status":"hush"} |
Second-step confirmation
| Sub-skill | Semantics |
|---|---|
| Yes | {"confirmation":"yes"} |
| No | {"confirmation":"no"} |
Skill Q&A
| Sub-skill | Semantics |
|---|---|
| Sing a children's song | {"action":"sing","genre":"children"} |
| Sing a specific song | {"action":"sing","song":"Twinkle"} |
| Sing songs by an artist | {"action":"sing","song":"songs by Jay Chou"} |
| Play music / next song | {"action":"play_music"} |
| Play rap | {"action":"play_music","genre":"rap"} |
| Play children's songs | {"action":"play_music","genre":"children"} |
| Play a specific song | {"action":"play_music","song":"Twinkle"} |
| Play songs by an artist | {"action":"play_music","song":"songs by Jay Chou"} |
Dispatch example
# Inside your PassiveCallback subclass `on_request`:
item_id = IdGenerator.generate_item_id()
# Build skill_param — keys/values match the "Semantics" column above
skill_param = (
AgentParam.create()
.set_string("movement", "move_forward")
.set_integer("meter", 10)
)
response.on_skill(event_id, item_id, "movement", "move_forward", skill_param)
These skills can also be dispatched via Task Flow — embed
action_group entries with the matching action_type / config in the payload, and the flow
will execute them sequentially or in parallel.