@nodaro/prompts 1.19.0 → 1.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/index.cjs +11175 -1797
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +280 -41
  4. package/dist/index.d.ts +280 -41
  5. package/dist/index.js +10049 -686
  6. package/dist/index.js.map +1 -1
  7. package/package.json +2 -2
  8. package/src/__tests__/adult-only-ratchet.test.ts +26 -1
  9. package/src/__tests__/character-motion-audit.test.ts +77 -0
  10. package/src/__tests__/character-motion-docs-example.test.ts +26 -0
  11. package/src/__tests__/character-motion-exit-visibility.test.ts +183 -0
  12. package/src/__tests__/character-motion-partner-referent.test.ts +225 -0
  13. package/src/__tests__/character-motion-timing-catalogs.test.ts +76 -0
  14. package/src/__tests__/character-motion.test.ts +214 -0
  15. package/src/__tests__/fixtures/parameter-hint-golden.json +136 -0
  16. package/src/__tests__/frame-delivery.test.ts +93 -0
  17. package/src/__tests__/graph-composed-unwired-identity.test.ts +166 -0
  18. package/src/__tests__/parameter-hint-mode.test.ts +28 -0
  19. package/src/__tests__/parameter-prompt-hint.test.ts +165 -0
  20. package/src/__tests__/parameter-registry-sync.test.ts +2 -0
  21. package/src/__tests__/picker-analyzer-registry.test.ts +1 -1
  22. package/src/__tests__/transition-timing-catalogs.test.ts +1 -1
  23. package/src/__tests__/video-reference-features.test.ts +10 -1
  24. package/src/age-floor.ts +1 -1
  25. package/src/character-motion/animals-pets.ts +116 -0
  26. package/src/character-motion/athletic-stunts.ts +159 -0
  27. package/src/character-motion/camera-interaction.ts +96 -0
  28. package/src/character-motion/combat-weapons.ts +147 -0
  29. package/src/character-motion/dance.ts +125 -0
  30. package/src/character-motion/entrances-exits.ts +92 -0
  31. package/src/character-motion/evasive-falls.ts +92 -0
  32. package/src/character-motion/everyday-actions.ts +237 -0
  33. package/src/character-motion/face-expression.ts +129 -0
  34. package/src/character-motion/gestures.ts +215 -0
  35. package/src/character-motion/head-gestures.ts +70 -0
  36. package/src/character-motion/idle-ambient.ts +89 -0
  37. package/src/character-motion/posture-shifts.ts +120 -0
  38. package/src/character-motion/runway.ts +77 -0
  39. package/src/character-motion/stage-performance.ts +96 -0
  40. package/src/character-motion/turns-looks.ts +90 -0
  41. package/src/character-motion/two-person.ts +245 -0
  42. package/src/character-motion/types.ts +45 -0
  43. package/src/character-motion/unnatural-horror.ts +57 -0
  44. package/src/character-motion/vehicles-mounts.ts +105 -0
  45. package/src/character-motion/walks-runs.ts +97 -0
  46. package/src/character-motion-diagnostics.ts +49 -0
  47. package/src/character-motion.ts +362 -0
  48. package/src/frame-delivery.ts +106 -0
  49. package/src/index.ts +5 -0
  50. package/src/parameter-prompt-hint.ts +71 -0
  51. package/src/picker-analyzer-registry.ts +9 -5
  52. package/src/picker-catalogs.ts +33 -1
  53. package/src/picker-wiring.ts +2 -0
  54. package/src/prompt-wizard-categories.ts +0 -2
  55. package/src/provider-prompt-doctrine.ts +1 -1
@@ -0,0 +1,120 @@
1
+ import type { CharacterMotion } from "./types.js"
2
+
3
+ /** posture-shifts — authored motion fragments. Stable ids survive copy revisions. */
4
+ export const POSTURE_SHIFTS_MOTIONS: ReadonlyArray<CharacterMotion> = [
5
+ { "id": "sit-down-on-chair", "label": "Sit on chair", "category": "posture-shifts", "description": "Lowers from standing into a chair",
6
+ "promptHint": "the subject backs up to a chair, bends at the knees and waist, reaches one hand back to the seat and lowers their weight onto it, settling upright with both feet flat", "term": "sits down on a chair" },
7
+ { "id": "sit-down-on-floor", "label": "Sit on floor", "category": "posture-shifts", "description": "Lowers from standing to sitting on the ground",
8
+ "promptHint": "the subject bends at the knees, drops one hand to the ground for support and lowers their pelvis to the floor, folding the legs in and settling into a seated position", "term": "sits down on the floor" },
9
+ { "id": "stand-up-from-chair", "label": "Stand from chair", "category": "posture-shifts", "description": "Rises out of a chair to standing",
10
+ "promptHint": "the subject plants both feet, leans the torso forward over the knees, pushes down through the legs and rises out of the chair to full standing height, shoulders settling back", "term": "stands up from a chair" },
11
+ { "id": "stand-up-from-floor", "label": "Stand from floor", "category": "posture-shifts", "description": "Rises from sitting on the ground to standing",
12
+ "promptHint": "the subject shifts their weight onto one hand and one foot, pushes up from the floor, brings the second foot under them and straightens to standing, brushing off their hands", "term": "stands up from the floor" },
13
+ { "id": "kneel-down", "label": "Kneel down", "category": "posture-shifts", "description": "Lowers onto both knees",
14
+ "promptHint": "the subject lowers one knee to the ground and brings the second knee down beside it, settling into an upright kneeling position with hands resting on the thighs", "term": "kneels down on both knees",
15
+ "startPose": "standing", "endPose": "floor" },
16
+ { "id": "take-a-knee", "label": "Take a knee", "category": "posture-shifts", "description": "Drops onto one knee, other foot planted",
17
+ "promptHint": "the subject steps one foot forward, lowers the back knee to the ground and rests a forearm across the raised front thigh, holding the half-kneel with the torso upright", "term": "takes a knee",
18
+ "startPose": "standing", "endPose": "floor" },
19
+ { "id": "rise-from-kneeling", "label": "Rise from kneeling", "category": "posture-shifts", "description": "Stands up from a kneeling position",
20
+ "promptHint": "the subject brings one foot forward from a kneeling position, plants it flat, presses a hand to the raised knee and drives up through the legs to standing", "term": "rises from kneeling",
21
+ "startPose": "floor", "endPose": "standing" },
22
+ { "id": "sit-back-on-heels", "label": "Sit back on heels", "category": "posture-shifts", "description": "Settles the pelvis onto the heels from kneeling",
23
+ "promptHint": "the subject lowers their pelvis back from an upright kneel to rest on the heels, hands settling on the thighs and the back staying straight in a seated kneel", "term": "sits back on their heels" },
24
+ { "id": "crouch-down", "label": "Crouch down", "category": "posture-shifts", "description": "Drops low on bent knees, balanced on the toes",
25
+ "promptHint": "the subject bends deep at the knees and waist and drops into a low crouch, weight balanced on the balls of the feet, one hand touching the ground for balance", "term": "drops into a crouch" },
26
+ { "id": "rise-from-crouch", "label": "Rise from crouch", "category": "posture-shifts", "description": "Straightens up from a low crouch",
27
+ "promptHint": "the subject pushes up through the legs from a low crouch, the hand leaving the ground and the torso unfolding upward until standing at full height, shoulders settling", "term": "rises from a crouch" },
28
+ { "id": "squat-to-look", "label": "Squat to look", "category": "posture-shifts", "description": "Squats down to inspect something low",
29
+ "promptHint": "the subject bends at the knees and squats down level with something on the ground, forearms resting on the thighs and head tilting forward to inspect it closely", "term": "squats down for a closer look" },
30
+ { "id": "jump-to-feet", "label": "Jump to feet", "category": "posture-shifts", "description": "Springs from the ground straight to standing",
31
+ "promptHint": "the subject pushes off the ground with both hands and feet in one burst, springing straight up from the floor to standing and landing balanced with knees slightly bent", "term": "jumps to their feet" },
32
+ { "id": "lie-down-on-back", "label": "Lie on back", "category": "posture-shifts", "description": "Lowers from sitting to lying face-up",
33
+ "promptHint": "the subject leans back from sitting onto their elbows and lowers their back and head to the surface until lying flat face-up, legs extended and arms resting at the sides", "term": "lies down on their back" },
34
+ { "id": "lie-down-on-side", "label": "Lie on side", "category": "posture-shifts", "description": "Lowers onto one side, knees bent",
35
+ "promptHint": "the subject lowers onto one hip and rolls onto their side, tucking the lower arm beneath their head as the knees bend and draw up and the body settles into a side-lying rest", "term": "lies down on their side" },
36
+ { "id": "lie-down-on-stomach", "label": "Lie on stomach", "category": "posture-shifts", "description": "Lowers to lying face-down on folded arms",
37
+ "promptHint": "the subject walks their hands forward along the surface from kneeling and lowers their torso until lying face-down, propping the chin on folded forearms with legs stretched out behind", "term": "lies down on their stomach" },
38
+ { "id": "roll-over", "label": "Roll over", "category": "posture-shifts", "description": "Turns from one side to the other while lying",
39
+ "promptHint": "the subject rolls from lying on one side across their back to the opposite side, lifting the top knee and shoulder to lead the turn and resettling with the other arm now on top", "term": "rolls over onto the other side" },
40
+ { "id": "curl-up", "label": "Curl up", "category": "posture-shifts", "description": "Draws the knees to the chest while lying on one side",
41
+ "promptHint": "the subject draws both knees up toward the chest while lying on one side, wrapping the arms around the shins and tucking the chin down into a tight curl", "term": "curls up on their side" },
42
+ { "id": "prop-up-on-elbow", "label": "Prop on elbow", "category": "posture-shifts", "description": "Lifts head and shoulders onto one elbow from lying",
43
+ "promptHint": "the subject lifts their head and shoulders off the surface and props the upper body up on one bent elbow, the other hand resting across the waist as the gaze comes level", "term": "props up on one elbow" },
44
+ { "id": "get-up-from-lying", "label": "Get up from lying", "category": "posture-shifts", "description": "Rises from lying flat all the way to standing",
45
+ "promptHint": "the subject rolls from lying flat onto one side, pushes up onto one hand into a seated position, brings the feet beneath them and rises to full standing height", "term": "gets up from lying down" },
46
+ { "id": "sit-up-in-bed", "label": "Sit up in bed", "category": "posture-shifts", "description": "Rises from lying to sitting against the pillows",
47
+ "promptHint": "the subject braces both palms against the mattress from lying in bed and curls the torso upward to sitting, shifting back to rest their shoulders against the pillows and headboard", "term": "sits up in bed" },
48
+ { "id": "swing-legs-out-of-bed", "label": "Sit up and swing legs out of bed", "category": "posture-shifts", "description": "Sits up from lying and moves both legs over the bedside.",
49
+ "promptHint": "the subject begins lying in bed, pushes the torso upright using one arm and swings both legs over the side, ending seated at the bedside", "term": "sits up, swinging both legs over the bedside",
50
+ "endPose": "seated", "requires": ["bed"], "kind": "compound", "aliases": ["Legs Out of Bed"] },
51
+ { "id": "wake-and-stretch", "label": "Wake and stretch", "category": "posture-shifts", "description": "Stretches arms overhead with a yawn on waking",
52
+ "promptHint": "the subject stirs from sleep, raises both arms overhead in a full-body stretch, yawning wide, and lets the arms drop back down as the eyes open", "term": "stretches and yawns on waking" },
53
+ { "id": "flop-onto-bed", "label": "Flop onto bed", "category": "posture-shifts", "description": "Falls backward onto a bed, arms flung out",
54
+ "promptHint": "the subject stands at the edge of a bed, lets their knees go and falls backward onto the mattress, arms flung out to the sides, bouncing once and lying sprawled on their back", "term": "flops backward onto the bed" },
55
+ { "id": "lean-back-in-chair", "label": "Lean back in chair", "category": "posture-shifts", "description": "Eases the torso back against the chair back",
56
+ "promptHint": "the subject tips the torso backward from sitting upright until the shoulders sink into the chair back, hands coming to rest on the armrests and the chin lifting in a relaxed lean", "term": "leans back in the chair" },
57
+ { "id": "plant-elbows-on-knees", "label": "Elbows on knees", "category": "posture-shifts", "description": "Leans forward, forearms braced on the thighs",
58
+ "promptHint": "the subject hinges the torso forward at the pelvis from sitting upright and plants both elbows on the knees, hands clasping loosely between the legs and the head lowering in attention", "term": "leans forward, elbows on knees" },
59
+ { "id": "shift-to-edge-of-seat", "label": "Edge of seat", "category": "posture-shifts", "description": "Scoots forward to the front of the seat, alert",
60
+ "promptHint": "the subject slides their pelvis forward to the front edge of the seat, feet drawing back beneath them and the torso tilting forward, alert and ready to stand", "term": "shifts to the edge of the seat" },
61
+ { "id": "cross-legs-seated", "label": "Cross knees while seated", "category": "posture-shifts", "description": "Places one knee over the other while remaining seated.",
62
+ "promptHint": "the subject remains seated and lifts one leg across the other so one knee rests directly above the opposite knee, with both lower legs pointing downward", "term": "crosses one knee over the other while seated",
63
+ "startPose": "seated", "endPose": "seated", "requires": ["seat"], "aliases": ["Cross Legs"] },
64
+ { "id": "uncross-and-stand", "label": "Uncross & stand", "category": "posture-shifts", "description": "Uncrosses the legs and rises to standing",
65
+ "promptHint": "the subject unhooks the crossed leg and sets both feet flat, leans the weight forward over the toes and rises from the seat to standing in one continuous motion", "term": "uncrosses legs and stands up" },
66
+ { "id": "put-feet-up", "label": "Put feet up", "category": "posture-shifts", "description": "Swings the feet up onto a table or ottoman",
67
+ "promptHint": "the subject leans back in the seat and lifts both legs, swinging the feet up onto a low table or ottoman and crossing the ankles, hands folding behind the head", "term": "puts their feet up" },
68
+ { "id": "recline-back", "label": "Recline", "category": "posture-shifts", "description": "Leans back until nearly lying, legs stretched out",
69
+ "promptHint": "the subject eases the torso backward from sitting upright until reclined at a low angle, legs stretching out in front and one arm folding behind the head as a rest", "term": "reclines, legs stretched out" },
70
+ { "id": "settle-into-couch", "label": "Settle into couch", "category": "posture-shifts", "description": "Drops onto a couch and sinks into the cushions",
71
+ "promptHint": "the subject drops down onto a couch and sinks into the cushions, shifting the pelvis once to get comfortable and letting the arms spread along the back of the seat", "term": "settles into a couch" },
72
+ { "id": "slump-down", "label": "Slump", "category": "posture-shifts", "description": "Sags down, shoulders and head dropping",
73
+ "promptHint": "the subject lets the shoulders roll forward and drop, the spine rounding and the head sinking as the whole body sags lower, arms going loose at the sides", "term": "slumps, shoulders dropping" },
74
+ { "id": "straighten-up", "label": "Straighten up", "category": "posture-shifts", "description": "Pulls the spine tall, shoulders back",
75
+ "promptHint": "the subject draws the spine upright from a slouch, pulling the shoulders back and down, lifting the chin and squaring the chest until sitting or standing fully tall", "term": "straightens up, shoulders back" },
76
+ { "id": "perch-on-table-edge", "label": "Perch on table", "category": "posture-shifts", "description": "Rests the pelvis against a table edge, legs out",
77
+ "promptHint": "the subject backs up to a table, rests their pelvis against its edge and leans the weight onto it, legs extended forward and crossed at the ankles, hands gripping the edge", "term": "perches on the edge of a table" },
78
+ { "id": "hop-onto-counter", "label": "Hop onto counter", "category": "posture-shifts", "description": "Boosts up to sit on a counter, feet dangling",
79
+ "promptHint": "the subject faces away from a counter, plants both palms on its surface behind them and hops up to sit on it, legs dangling and heels swinging free above the floor", "term": "hops up to sit on a counter" },
80
+ { "id": "lean-against-wall", "label": "Lean on wall", "category": "posture-shifts", "description": "Settles one shoulder against a wall",
81
+ "promptHint": "the subject steps up to a wall, turns and settles one shoulder into it, the weight sinking into the lean as the ankles cross and the arms fold across the chest", "term": "leans a shoulder against the wall" },
82
+ { "id": "push-off-wall", "label": "Push off wall", "category": "posture-shifts", "description": "Straightens off a wall lean to standing free",
83
+ "promptHint": "the subject presses the shoulder into the wall and pushes off it, uncrossing the ankles and stepping away as the body straightens to a free-standing posture", "term": "pushes off the wall" },
84
+ { "id": "slide-down-wall", "label": "Slide down wall", "category": "posture-shifts", "description": "Slides down a wall to sit on the floor",
85
+ "promptHint": "the subject leans their back against a wall and lets the knees bend, sliding down the surface until seated on the floor with knees drawn up and forearms resting on them", "term": "slides down the wall to the floor" },
86
+ { "id": "lean-on-counter", "label": "Lean on counter", "category": "posture-shifts", "description": "Rests both forearms on a counter or bar",
87
+ "promptHint": "the subject steps up to a counter, plants both forearms flat on it and lets the weight settle forward onto the elbows, hands clasping loosely and one foot hooking behind the other", "term": "leans onto the counter on both forearms" },
88
+ { "id": "brace-hands-on-knees", "label": "Hands on knees", "category": "posture-shifts", "description": "Bends over and braces the hands on the knees",
89
+ "promptHint": "the subject bends forward at the waist and braces both hands on the knees, the back rounding and the head hanging low as the arms take the weight of the torso", "term": "bends over, hands on knees" },
90
+ { "id": "snap-to-attention", "label": "Snap to attention", "category": "posture-shifts", "description": "Snaps upright, heels together, arms at the sides",
91
+ "promptHint": "the subject snaps upright, clicking the heels together and driving both arms straight down to the sides, chest lifting and chin level as the body locks into a rigid stance", "term": "snaps to attention, heels together" },
92
+ { "id": "rise-on-tiptoes", "label": "Rise onto tiptoes", "category": "posture-shifts", "description": "Lifts both heels and balances on the balls of the feet.",
93
+ "promptHint": "the subject lifts both heels, rises onto the balls of the feet and holds a balanced upright stance", "term": "rises onto the balls of the feet",
94
+ "aliases": ["Rise on Tiptoes"], "startPose": "standing", "endPose": "standing" },
95
+ { "id": "lean-on-railing", "label": "Lean on railing", "category": "posture-shifts", "description": "Rests the forearms on a railing, gazing out",
96
+ "promptHint": "the subject steps up to a railing, lays both forearms along the top rail and lets the weight settle forward onto them, hands loosely clasped as the gaze goes out beyond", "term": "leans on a railing on both forearms" },
97
+ { "id": "settle-into-meditation", "label": "Settle into meditation", "category": "posture-shifts", "description": "Sits cross-legged, spine tall, eyes closing",
98
+ "promptHint": "the subject lowers to the floor and folds the legs into a cross-legged seat, straightening the spine, resting the backs of the hands on the knees and letting the eyes close", "term": "settles cross-legged into meditation" },
99
+ { "id": "lace-hands-behind-head", "label": "Hands behind head", "category": "posture-shifts", "description": "Leans back, fingers laced behind the head",
100
+ "promptHint": "the subject leans back in the chair and laces the fingers behind the head, elbows flaring wide as the weight settles into the chair back and the chest opens", "term": "leans back, fingers laced behind head" },
101
+ { "id": "drop-head-onto-desk", "label": "Head onto desk", "category": "posture-shifts", "description": "Folds forward and drops the head onto the desk",
102
+ "promptHint": "the subject folds forward from sitting and lets the forehead drop onto the desk between the outstretched arms, going limp with shoulders sagging and the arms lying flat on the surface", "term": "drops head onto the desk" },
103
+ { "id": "crawl-head-raised", "label": "Crawl head raised", "category": "posture-shifts", "description": "Advances on all fours with the head lifted",
104
+ "promptHint": "the subject moves forward on all fours, palms and knees taking the weight in alternating diagonal pairs, the head lifted high and the eyes fixed straight ahead the whole way", "term": "crawls forward with the head raised",
105
+ "startPose": "floor", "endPose": "floor" },
106
+ { "id": "crab-walk-sideways", "label": "Crab walk", "category": "posture-shifts", "description": "Belly-up on hands and feet, moves sideways",
107
+ "promptHint": "the subject sits, plants both palms behind the pelvis and lifts the torso belly-up off the floor, then travels sideways on hands and feet with the head tipped back between the shoulders", "term": "crab-walks sideways",
108
+ "startPose": "floor", "endPose": "floor" },
109
+ { "id": "stop-and-hold", "label": "Stop and hold position", "category": "posture-shifts", "description": "Stop and hold position.",
110
+ "term": "stops and holds the current position", "promptHint": "the subject stops the current movement and holds the existing body position",
111
+ "aliases": ["pause", "freeze in place"] },
112
+ { "id": "hold-current-pose", "label": "Hold current pose", "category": "posture-shifts", "description": "Hold current pose.",
113
+ "term": "holds the current pose", "promptHint": "the subject holds the current pose, allowing only natural breathing" },
114
+ { "id": "seated-reach", "label": "Reach while seated", "category": "posture-shifts", "description": "Reach while seated.",
115
+ "term": "reaches forward while remaining seated", "promptHint": "the subject remains seated and extends one arm toward a nearby object, keeping a stable seated position",
116
+ "startPose": "seated", "endPose": "seated", "needsFreeHands": true },
117
+ { "id": "rise-from-floor", "label": "Rise from floor to standing", "category": "posture-shifts", "description": "Rise from floor to standing.",
118
+ "term": "rises from the floor to standing", "promptHint": "the subject moves from the floor onto one knee, plants one foot, uses the hands for support and rises into a balanced standing position",
119
+ "startPose": "floor", "endPose": "standing", "needsFreeHands": true, "kind": "compound" },
120
+ ]
@@ -0,0 +1,77 @@
1
+ import type { CharacterMotion } from "./types.js"
2
+
3
+ /** runway — authored motion fragments. Stable ids survive copy revisions. */
4
+ export const RUNWAY_MOTIONS: ReadonlyArray<CharacterMotion> = [
5
+ { "id": "walk-the-runway", "label": "Runway walk", "category": "runway", "description": "Straight-line catwalk, one foot in front of the other",
6
+ "promptHint": "the subject walks a straight line toward the camera, each foot landing directly in front of the other, one hip leading each stride, shoulders back, arms swinging loosely at the sides, gaze locked ahead", "term": "walks the runway, feet landing in one line" },
7
+ { "id": "walk-mark-and-turn", "label": "Walk & turn", "category": "runway", "description": "Reach the end mark, hold a beat, turn and walk back",
8
+ "promptHint": "the subject walks to the end mark, plants both feet and holds a beat squared to the camera, pivots a half turn on the ball of the front foot and walks back the way they came", "term": "walks to the mark, turns and walks back" },
9
+ { "id": "pivot-mid-stride", "label": "Mid-stride pivot", "category": "runway", "description": "Unbroken half-turn on the ball of the foot, no pause",
10
+ "promptHint": "the subject reverses direction mid-walk without breaking rhythm, the lead foot planting and the body pivoting a half turn on the ball of that foot as the trailing leg swings through into the next stride", "term": "pivots mid-stride and returns" },
11
+ { "id": "stomp-editorial-walk", "label": "Editorial stomp", "category": "runway", "description": "Heavy heel-first strides, knees driving, arms rigid",
12
+ "promptHint": "the subject strides forward driving each heel hard into the floor, knees lifting high and punching down, torso rigid and arms held straight and stiff at the sides, chin level and jaw set", "term": "stomps forward in an editorial walk" },
13
+ { "id": "sway-hips-walk", "label": "Hip-sway walk", "category": "runway", "description": "Exaggerated hip swing on every step",
14
+ "promptHint": "the subject walks toward the camera with an exaggerated sway, the hips rolling side to side on every step, each foot crossing in front of the other, shoulders countering the swing and one hand trailing along the thigh", "term": "walks with an exaggerated hip sway" },
15
+ { "id": "stalk-high-fashion-walk", "label": "Walk with rigid arms", "category": "runway", "description": "Rigid torso, pinned arms, long stiff strides, blank face",
16
+ "promptHint": "the subject takes long stiff strides with the torso held perfectly rigid, arms pinned straight at the sides barely moving, face blank and gaze fixed past the camera, the legs doing all the work", "term": "walks rigid and stiff, arms pinned at sides",
17
+ "aliases": ["High-Fashion Walk"] },
18
+ { "id": "stop-and-pose", "label": "Stop and pose", "category": "runway", "description": "Stops walking, shifts weight to one leg and holds a pose.",
19
+ "promptHint": "the subject slows to a stop, settles the weight onto one leg and holds a balanced pose", "term": "stops walking and holds a pose",
20
+ "startPose": "standing", "endPose": "standing", "needsFreeHands": true, "aliases": ["Stop & Pose"] },
21
+ { "id": "land-hand-on-hip", "label": "Hand-on-hip stop", "category": "runway", "description": "Arrive, one hand rises to the hip, elbow out",
22
+ "promptHint": "the subject arrives at the mark and plants the feet as one hand rises and lands on the hip with the elbow angled out, the opposite arm hanging loose, weight settling onto one leg", "term": "stops, one hand landing on the hip" },
23
+ { "id": "flip-the-hair", "label": "Hair flip", "category": "runway", "description": "Head dips and whips over, hair arcs and settles",
24
+ "promptHint": "the subject dips the head down and to one side and whips it up and over, the hair arcing through the air in a full sweep before falling and settling back across the shoulders", "term": "flips the hair over" },
25
+ { "id": "sweep-hair-back", "label": "Hair sweep back", "category": "runway", "description": "One hand rakes the hair off the face while walking",
26
+ "promptHint": "the subject brings one hand up to the forehead while walking and rakes the fingers back through the hair, pulling it off the face and letting it fall behind the shoulder without breaking stride", "term": "sweeps the hair back with one hand" },
27
+ { "id": "drop-coat-off-shoulders", "label": "Remove coat from shoulders", "category": "runway", "description": "Slides a coat off the shoulders while keeping the underlying outfit.",
28
+ "promptHint": "the subject slides the coat off both shoulders and gathers it in the hands, keeping the underlying outfit in place", "term": "slides coat off shoulders, retaining the underlying outfit",
29
+ "requires": ["coat over an outfit"], "handsAfter": "occupied", "aliases": ["Coat Drop Reveal"] },
30
+ { "id": "hook-jacket-over-shoulder", "label": "Jacket over shoulder", "category": "runway", "description": "Shrug off the jacket and hook it over one shoulder",
31
+ "promptHint": "the subject slips one arm then the other out of the jacket while walking, gathers it in one hand and hooks it over the shoulder on a finger, the free arm swinging with the stride", "term": "hooks the jacket over one shoulder" },
32
+ { "id": "pause-look-over-shoulder", "label": "Over-the-shoulder pause", "category": "runway", "description": "Walk away, stop, look back over the shoulder, hold",
33
+ "promptHint": "the subject walks away from the camera, stops, and turns the head back over one shoulder to look at the lens, the body still facing away, holding the look before walking on", "term": "pauses and looks back over the shoulder" },
34
+ { "id": "sultry-look-back", "label": "Sultry look back", "category": "runway", "description": "Chin to shoulder, half-lidded gaze back at the lens",
35
+ "promptHint": "the subject walks away, rolls one shoulder back and drops the chin toward it, turning a half-lidded sultry gaze back over the shoulder at the camera, lips parted, before walking on", "term": "throws a sultry look back over the shoulder",
36
+ "adultOnly": true },
37
+ { "id": "turn-full-circle", "label": "Full turn", "category": "runway", "description": "Rotate a full circle in place to show every side",
38
+ "promptHint": "the subject rotates a full circle in place, stepping the feet around in small pivots with arms held slightly away from the body so the outfit is seen from every side, finishing squared to the camera", "term": "turns a full circle to show the outfit" },
39
+ { "id": "take-sunglasses-off", "label": "Sunglasses off", "category": "runway", "description": "Slide the sunglasses off and lower them, eyes to lens",
40
+ "promptHint": "the subject reaches up with one hand, grips the sunglasses by one arm and slides them off the face, lowering them to chest height as the eyes lift and lock onto the camera", "term": "takes the sunglasses off" },
41
+ { "id": "push-sunglasses-onto-head", "label": "Sunglasses up", "category": "runway", "description": "One finger lifts the sunglasses off the eyes onto the crown",
42
+ "promptHint": "the subject raises one hand to the bridge of the sunglasses and pushes them up off the eyes, sliding them back to seat on the crown of the head, then drops the hand as the eyes settle on the camera", "term": "pushes the sunglasses up onto the head" },
43
+ { "id": "swing-the-bag", "label": "Bag swing", "category": "runway", "description": "Handbag swings from one hand with the stride",
44
+ "promptHint": "the subject walks with a handbag held in one hand, the arm swinging it forward and back in a wide arc with each stride while the other arm swings free in counter-rhythm", "term": "swings the bag with the stride" },
45
+ { "id": "campaign-walk-to-camera", "label": "Campaign walk", "category": "runway", "description": "Walk straight at the lens from far to close, gaze locked",
46
+ "promptHint": "the subject walks directly toward the camera from a distance, gaze locked on the lens the whole way, stride long and even, arms swinging naturally, stopping just short of the lens", "term": "walks straight at the camera, gaze locked" },
47
+ { "id": "walk-away-from-camera", "label": "Walk away", "category": "runway", "description": "Back to camera, walk off into the distance",
48
+ "promptHint": "the subject turns their back to the camera and walks away in a straight line into the distance, shoulders square, arms swinging evenly, without looking back", "term": "walks away, back to camera" },
49
+ { "id": "sweep-the-gown", "label": "Gown sweep", "category": "runway", "description": "Long strides with the hem trailing, a turn flares the train",
50
+ "promptHint": "the subject walks with long strides so the floor-length hem trails behind, gathers the skirt in one hand, turns on the spot and swings the gathered skirt around so the train sweeps across the floor", "term": "sweeps the gown train through a turn" },
51
+ { "id": "bounce-streetwear-walk", "label": "Walk with a rhythmic bounce", "category": "runway", "description": "Loose bouncy walk, shoulders rolling, hands in pockets",
52
+ "promptHint": "the subject walks with a loose bounce, dipping on each step and rolling the shoulders, both hands tucked into the pockets, head nodding to an internal beat", "term": "walks with a bounce, hands in pockets",
53
+ "aliases": ["Streetwear Bounce"] },
54
+ { "id": "stride-menswear-walk", "label": "Stride with one hand pocketed", "category": "runway", "description": "Long even stride, shoulders square, one hand in pocket",
55
+ "promptHint": "the subject takes long even strides with shoulders square and chest open, one hand resting in a trouser pocket and the other arm swinging naturally, gaze level and steady ahead", "term": "strides with one hand in the pocket",
56
+ "aliases": ["Menswear Stride"] },
57
+ { "id": "twirl-the-skirt", "label": "Skirt twirl", "category": "runway", "description": "Rise onto the toes and spin so the skirt flares out",
58
+ "promptHint": "the subject rises onto the balls of the feet and spins a full turn in place, arms lifting slightly as the skirt flares outward, and settles back down onto the heels facing the camera", "term": "twirls so the skirt flares" },
59
+ { "id": "adjust-the-cuff", "label": "Cuff adjust", "category": "runway", "description": "Tug a shirt cuff straight below the sleeve mid-stride",
60
+ "promptHint": "the subject brings one hand across to the opposite wrist mid-stride, tugs the shirt cuff straight so it shows just below the jacket sleeve, and drops the arm back into its swing without breaking the stride", "term": "adjusts the cuff mid-stride" },
61
+ { "id": "adjust-lapels", "label": "Lapel adjust", "category": "runway", "description": "Both hands grip the lapels and tug them square",
62
+ "promptHint": "the subject raises both hands to the jacket lapels, grips one in each hand and tugs them down and outward so the jacket sits square on the shoulders, then rolls the shoulders once and drops the hands to the sides", "term": "tugs both lapels square" },
63
+ { "id": "button-jacket", "label": "Button jacket", "category": "runway", "description": "Draw the jacket fronts together and fasten the button",
64
+ "promptHint": "the subject stands tall and draws the two fronts of the jacket together with both hands, works the button through the buttonhole with the fingers, smooths the front flat with one palm and drops both hands to the sides", "term": "buttons the jacket closed" },
65
+ { "id": "unbutton-jacket-walking", "label": "Unbutton jacket", "category": "runway", "description": "Pop the jacket button open mid-stride, fronts fall loose",
66
+ "promptHint": "the subject reaches one hand to the jacket button while walking, pushes it back through the buttonhole with the thumb so the two fronts fall open and swing loose, and lets the hand drop back into its stride", "term": "unbuttons the jacket mid-stride" },
67
+ { "id": "pop-the-collar", "label": "Collar pop", "category": "runway", "description": "Both hands flick the collar up to stand against the neck",
68
+ "promptHint": "the subject brings both hands up to the collar, grips the points between the fingers and flicks them upward so the collar stands stiff against the neck, then drops the hands and lifts the chin", "term": "pops the collar up" },
69
+ { "id": "throw-open-coat", "label": "Coat throw open", "category": "runway", "description": "Grip the coat fronts and swing them wide, outfit in view",
70
+ "promptHint": "the subject grips the two fronts of the coat, one in each hand, and swings them wide apart, both arms held out to the sides so the outfit underneath is in full view, holding the coat open for a beat", "term": "throws the coat open" },
71
+ { "id": "cycle-through-three-poses", "label": "Improvise three poses", "category": "runway", "description": "Hit three poses in a row, shifting weight and arms each beat. Choreography is model-chosen.",
72
+ "promptHint": "the subject hits three poses in succession, shifting the weight from one leg to the other on each beat and repositioning the arms and head, holding each shape for a beat before flowing into the next; the choreography is improvised rather than a specific signature routine", "term": "cycles through three poses with improvised choreography",
73
+ "kind": "compound", "aliases": ["Three-Pose Cycle"] },
74
+ { "id": "walk-with-partner", "label": "Walk side by side", "category": "runway", "description": "Walks beside the partner at a matched pace.",
75
+ "promptHint": "the subject walks beside the partner, both moving forward at a matched pace with comfortable space between them", "term": "walks side by side with the partner",
76
+ "twoPerson": true, "startPose": "standing", "endPose": "standing", "needsFreeHands": true, "requires": ["partner"], "aliases": ["Duo Walk"] },
77
+ ]
@@ -0,0 +1,96 @@
1
+ import type { CharacterMotion } from "./types.js"
2
+
3
+ /** stage-performance — authored motion fragments. Stable ids survive copy revisions. */
4
+ export const STAGE_PERFORMANCE_MOTIONS: ReadonlyArray<CharacterMotion> = [
5
+ { "id": "sing-into-handheld-mic", "label": "Sing into handheld mic", "category": "stage-performance", "description": "Lifts the mic and sings, free hand riding the phrasing",
6
+ "promptHint": "the subject lifts a handheld microphone to their mouth and sings into it, free hand rising and falling with the phrasing, weight shifting foot to foot with the beat", "term": "sings into a handheld mic" },
7
+ { "id": "sing-at-stand-mic", "label": "Sing at stand mic", "category": "stage-performance", "description": "Steps up to a stand mic and leans in to sing",
8
+ "promptHint": "the subject steps up to a stand microphone, wraps one hand around the stand and leans in close to the mic, singing with their chin lifted toward the crowd", "term": "sings into a stand mic" },
9
+ { "id": "belt-high-note", "label": "Belt a high note", "category": "stage-performance", "description": "Deep breath, head back, arm up on the big note",
10
+ "promptHint": "the subject plants their feet, fills their chest with a deep breath and belts a high note, head tipping back, free arm rising to full extension before the note releases", "term": "belts a high note with head thrown back" },
11
+ { "id": "hold-note-eyes-closed", "label": "Hold note eyes closed", "category": "stage-performance", "description": "Eyes close, hand on chest, one long sustained note",
12
+ "promptHint": "the subject closes their eyes, draws a breath and holds one long sustained note into the mic, a hand pressed flat over their chest until the note releases and their eyes open", "term": "holds a long note with eyes closed" },
13
+ { "id": "hold-mic-to-crowd", "label": "Mic out to crowd", "category": "stage-performance", "description": "Holds the mic out so the audience sings the line",
14
+ "promptHint": "the subject holds the handheld mic out toward the audience at arm's length, tilting it to the crowd and cupping the other hand to their ear to hear the line sung back", "term": "holds the mic out to the crowd" },
15
+ { "id": "rap-into-mic", "label": "Rap into the mic", "category": "stage-performance", "description": "Raps into the mic, free hand chopping every bar",
16
+ "promptHint": "the subject raps into a handheld mic, free hand chopping and bouncing in time with every bar, shoulders rocking and body leaning out toward the crowd on the punchlines", "term": "raps into the mic with a chopping hand" },
17
+ { "id": "strum-guitar", "label": "Strum guitar", "category": "stage-performance", "description": "Strums on the beat, fretting hand changing chords",
18
+ "promptHint": "the subject strums a guitar slung across their body, strumming hand sweeping down across the strings on the beat while the fretting hand shifts between chords, head nodding with the rhythm", "term": "strums a guitar on the beat" },
19
+ { "id": "lean-into-guitar-solo", "label": "Guitar solo lean", "category": "stage-performance", "description": "Arches back into a solo, fretting hand racing",
20
+ "promptHint": "the subject leans back into a guitar solo, fretting hand racing up the neck as the picking hand tears across the strings, torso arching backward with one foot planted forward", "term": "leans back into a guitar solo" },
21
+ { "id": "drop-to-knee-solo", "label": "Knee-drop solo", "category": "stage-performance", "description": "Drops to one knee mid-solo, then pushes back up",
22
+ "promptHint": "the subject drops down onto one knee mid-solo, guitar neck tilted up toward the crowd, fretting hand climbing to the highest frets before they push back up to standing", "term": "drops to one knee mid-solo" },
23
+ { "id": "play-air-guitar", "label": "Air guitar", "category": "stage-performance", "description": "Grips an invisible neck, windmills the other hand",
24
+ "promptHint": "the subject plays air guitar, one hand gripping an invisible neck while the other windmills across an invisible body, face contorting and knees bouncing with the riff", "term": "plays air guitar" },
25
+ { "id": "smash-guitar", "label": "Smash guitar", "category": "stage-performance", "description": "Raises the guitar overhead and smashes it into the stage",
26
+ "promptHint": "the subject grips the guitar by the neck, raises it high overhead with both hands and swings it down hard into the stage floor, hoisting it up and smashing it down again before flinging the neck aside", "term": "smashes a guitar on the stage" },
27
+ { "id": "play-drums", "label": "Play drums", "category": "stage-performance", "description": "Sticks between snare and cymbals, foot on the kick",
28
+ "promptHint": "the subject sits at a drum kit and plays, sticks alternating between snare and cymbals, one foot driving the kick pedal, shoulders rocking with the beat and hair swinging", "term": "plays the drums" },
29
+ { "id": "play-piano", "label": "Play piano", "category": "stage-performance", "description": "Both hands across the keys, body swaying",
30
+ "promptHint": "the subject sits at a piano and plays, both hands moving across the keys, body swaying with the phrasing and head dipping toward the keyboard on the heavier chords", "term": "plays the piano" },
31
+ { "id": "play-violin", "label": "Play violin", "category": "stage-performance", "description": "Bow arm sweeps the strings, fingers walking the neck",
32
+ "promptHint": "the subject tucks a violin under their chin and plays, bowing arm drawing the bow back and forth across the strings while the fingering hand walks up and down the neck, torso swaying with each phrase", "term": "plays the violin" },
33
+ { "id": "play-saxophone", "label": "Play saxophone", "category": "stage-performance", "description": "Fingers work the keys, bell dipping on the low notes",
34
+ "promptHint": "the subject plays a saxophone hanging from a neck strap, fingers working the keys as their cheeks fill with each breath, leaning back on the high notes and dipping the bell forward on the low ones", "term": "plays the saxophone" },
35
+ { "id": "work-the-decks", "label": "Dj at the decks", "category": "stage-performance", "description": "Headphone to ear, other hand on the faders",
36
+ "promptHint": "the subject works the DJ decks, one hand pressing a headphone cup to their ear while the other rides the mixer faders and cues the next track, head bobbing to the beat", "term": "works the decks with headphone to one ear" },
37
+ { "id": "conduct-orchestra", "label": "Conduct orchestra", "category": "stage-performance", "description": "Baton carves the beat, left hand swells and cuts",
38
+ "promptHint": "the subject faces the orchestra and conducts, baton hand carving the beat pattern in the air while the other hand rises to swell the sound and drops to cut it off", "term": "conducts an orchestra with a baton" },
39
+ { "id": "walk-to-center-stage", "label": "Walk to center stage", "category": "stage-performance", "description": "Walks from the wings to the mark, arms opening",
40
+ "promptHint": "the subject walks from the wings out to center stage, steps steady and shoulders squared, stopping on the mark and opening both arms out toward the audience", "term": "walks out to center stage" },
41
+ { "id": "strut-down-runway", "label": "Strut the runway", "category": "stage-performance", "description": "Straight-line strut down the stage runway",
42
+ "promptHint": "the subject struts down the stage runway toward the crowd, feet landing in a straight line and arms swinging with purpose, stopping at the end to face the audience", "term": "struts down the stage runway" },
43
+ { "id": "step-up-to-podium", "label": "Step up to podium", "category": "stage-performance", "description": "Steps behind the lectern and grips both sides",
44
+ "promptHint": "the subject walks up to a podium, steps onto the riser behind it and grips both sides of the lectern with their hands, squaring their shoulders and lifting their chin to face the room", "term": "steps up to the podium and grips it" },
45
+ { "id": "sit-on-stage-edge", "label": "Sit on stage edge", "category": "stage-performance", "description": "Sits on the edge of a stage with legs hanging down.",
46
+ "promptHint": "the subject lowers onto the stage edge and remains seated with both legs hanging down", "term": "sits on stage edge, legs hanging down",
47
+ "startPose": "standing", "endPose": "seated", "requires": ["stage edge"] },
48
+ { "id": "raise-hands-to-crowd", "label": "Raise hands to crowd", "category": "stage-performance", "description": "Both arms straight overhead, palms open",
49
+ "promptHint": "the subject raises both arms straight overhead toward the crowd, palms open, holding them high while turning from one side of the audience to the other", "term": "raises both hands to the crowd" },
50
+ { "id": "hype-the-crowd", "label": "Hype the crowd", "category": "stage-performance", "description": "Claps overhead on the beat, urging the crowd",
51
+ "promptHint": "the subject hypes the crowd, clapping both hands together above their head in time with the beat and bouncing on their toes, urging the audience to clap along", "term": "claps overhead to hype the crowd" },
52
+ { "id": "point-to-crowd", "label": "Point to crowd", "category": "stage-performance", "description": "Snaps a point into the crowd and sweeps it",
53
+ "promptHint": "the subject snaps one arm out and points into the crowd, holding the point on one section of the audience before sweeping the finger across to the other side", "term": "points out into the crowd" },
54
+ { "id": "wave-to-crowd", "label": "Wave to crowd", "category": "stage-performance", "description": "Wide overhead wave across the whole audience",
55
+ "promptHint": "the subject raises one arm high and waves to the crowd in wide side-to-side sweeps, turning their body to cover the whole audience from one side to the other", "term": "waves to the crowd" },
56
+ { "id": "blow-kisses-to-crowd", "label": "Blow kisses", "category": "stage-performance", "description": "Fingertips to lips, kisses thrown to each side",
57
+ "promptHint": "the subject presses their fingertips to their lips and blows kisses out to the crowd, arm extending toward the audience with each one, alternating sides", "term": "blows kisses to the crowd" },
58
+ { "id": "hold-phone-light-aloft", "label": "Hold phone screen light aloft", "category": "stage-performance", "description": "Raises a lit phone screen overhead.",
59
+ "promptHint": "the subject raises one arm straight up with a phone held high, screen light facing the stage, and sways from side to side with the whole body while the other arm rests loosely at their side", "term": "holds a lit phone screen overhead",
60
+ "requires": ["phone with lit screen"], "aliases": ["Phone Light Aloft"] },
61
+ { "id": "jump-on-the-beat", "label": "Jump on the beat", "category": "stage-performance", "description": "Both feet off the stage on every downbeat",
62
+ "promptHint": "the subject bounces on their toes and jumps straight up on every downbeat, both feet leaving the stage, one arm pumping overhead with each landing", "term": "jumps on the beat" },
63
+ { "id": "headbang-on-beat", "label": "Headbang on beat", "category": "stage-performance", "description": "Head whips down and up on every beat, hair flying",
64
+ "promptHint": "the subject headbangs, whipping their head down toward their chest and back up on every beat, hair flying, shoulders driving the motion and knees bending with each drop", "term": "headbangs on the beat" },
65
+ { "id": "knee-slide-across-stage", "label": "Knee slide", "category": "stage-performance", "description": "Runs and drops into a knee slide across the stage",
66
+ "promptHint": "the subject takes a few running steps and drops into a knee slide across the stage floor, both knees down, torso leaning back and arms thrown up, sliding to a stop facing the crowd", "term": "drops into a knee slide across the stage" },
67
+ { "id": "hit-dance-break", "label": "Improvise eight-count dance break", "category": "stage-performance", "description": "Plants the mic and hits an eight-count for the crowd. Choreography is model-chosen.",
68
+ "promptHint": "the subject plants the mic in its stand and hits a sharp dance break facing the crowd, arms and feet snapping through the eight-count in sync before returning to the mic; the choreography is improvised rather than a specific signature routine", "term": "improvises an eight-count dance break",
69
+ "kind": "compound", "aliases": ["Dance Break"] },
70
+ { "id": "freeze-on-the-drop", "label": "Freeze on the drop", "category": "stage-performance", "description": "Snaps into a pose on the drop and holds it dead still",
71
+ "promptHint": "the subject dances loosely on the beat, arms and hips swinging, and on the drop snaps into a sharp pose, every limb frozen dead still, holding the freeze before releasing back into motion", "term": "freezes in a pose on the drop" },
72
+ { "id": "spin-mic-stand", "label": "Spin the mic stand", "category": "stage-performance", "description": "Swings the stand a full circle and catches it",
73
+ "promptHint": "the subject grabs the mic stand by the shaft, swings it around in a full circle with one hand and catches it upright, leaning straight back in to sing into the mic", "term": "spins the mic stand" },
74
+ { "id": "drop-the-mic", "label": "Mic drop", "category": "stage-performance", "description": "Holds the mic out, opens the hand, lets it fall",
75
+ "promptHint": "the subject finishes the last line, holds the handheld mic out to the side at arm's length, opens their hand and lets it fall to the stage floor before turning away", "term": "drops the mic" },
76
+ { "id": "jump-into-crowd", "label": "Jump into crowd", "category": "stage-performance", "description": "Feet-first leap off the stage edge into the crowd",
77
+ "promptHint": "the subject runs to the lip of the stage and leaps feet-first off the edge into the crowd, arms flung wide, landing on the raised hands of the audience", "term": "leaps off the stage into the crowd" },
78
+ { "id": "stage-dive", "label": "Stage dive", "category": "stage-performance", "description": "Horizontal dive onto the crowd's raised hands",
79
+ "promptHint": "the subject launches horizontally off the front of the stage in a stage dive, arms spread and body flat, dropping onto the raised hands of the front row", "term": "dives off the stage onto the crowd" },
80
+ { "id": "crowd-surf", "label": "Crowd surf", "category": "stage-performance", "description": "Carried on their back hand to hand over the audience",
81
+ "promptHint": "the subject crowd surfs on their back across the audience, arms spread wide and legs loose, carried and rolled hand to hand over the sea of raised arms, head lifting to look toward the stage", "term": "crowd surfs" },
82
+ { "id": "bow-to-audience", "label": "Bow to audience", "category": "stage-performance", "description": "Deep bow from the waist at the front of the stage",
83
+ "promptHint": "the subject steps forward to the front of the stage, one hand across their stomach, and bows deeply from the waist to the audience, rising back up with a smile", "term": "bows to the audience" },
84
+ { "id": "take-curtain-call", "label": "Take curtain call", "category": "stage-performance", "description": "Steps forward and bows to the audience.",
85
+ "promptHint": "the subject steps forward, pauses and bows toward the audience, then straightens without introducing additional performers", "term": "steps forward and bows to the audience",
86
+ "kind": "compound", "aliases": ["Curtain Call"] },
87
+ { "id": "walk-off-waving", "label": "Walk off waving", "category": "stage-performance", "description": "Exits toward the wings waving over the shoulder",
88
+ "promptHint": "the subject turns away from the crowd and walks off stage toward the wings, one arm raised high and waving back over their shoulder until they pass out of view", "term": "walks off stage waving",
89
+ "endVisibility": "out-of-frame" },
90
+ { "id": "share-mic-duet", "label": "Share a mic", "category": "stage-performance", "description": "Two singers lean in on one mic for the chorus",
91
+ "promptHint": "the subject and the partner lean in toward one shared handheld mic from opposite sides, shoulders touching, singing the chorus together and pulling apart on the final note", "term": "shares one mic with the partner",
92
+ "twoPerson": true, "requires": ["partner"] },
93
+ { "id": "shred-back-to-back", "label": "Back-to-back solo", "category": "stage-performance", "description": "Two guitarists press backs together and shred",
94
+ "promptHint": "the subject and the partner press their backs together and play a dual guitar solo, both leaning into each other for support as their fretting hands race up the necks", "term": "shreds guitar back to back with the partner",
95
+ "twoPerson": true, "requires": ["partner"] },
96
+ ]
@@ -0,0 +1,90 @@
1
+ import type { CharacterMotion } from "./types.js"
2
+
3
+ /** turns-looks — authored motion fragments. Stable ids survive copy revisions. */
4
+ export const TURNS_LOOKS_MOTIONS: ReadonlyArray<CharacterMotion> = [
5
+ { "id": "turn-to-camera", "label": "Body turn to camera", "category": "turns-looks", "description": "Full body turn from back to front, ending square to camera",
6
+ "promptHint": "the subject turns from back-to-camera around to face front, stepping the feet through the rotation, shoulders squaring to the camera and weight settling evenly on both feet", "term": "turns around to face camera" },
7
+ { "id": "turn-away-from-camera", "label": "Body turn away", "category": "turns-looks", "description": "Full body turn from front to back, ending facing away",
8
+ "promptHint": "the subject rotates the whole body away from the camera until the back is to the lens, the feet stepping through the turn and the head following last", "term": "turns away from camera" },
9
+ { "id": "quarter-turn-to-profile", "label": "Quarter turn to profile", "category": "turns-looks", "description": "Body rotates a quarter turn from front to a side profile",
10
+ "promptHint": "the subject rotates the body a quarter turn from square-to-camera to one side, ending in a clean side profile with the feet realigned and the gaze forward along the new facing", "term": "quarter-turns to profile" },
11
+ { "id": "turn-profile-to-camera", "label": "Turn profile to camera", "category": "turns-looks", "description": "Side profile rotates to face the camera square-on",
12
+ "promptHint": "the subject rotates from side profile toward the camera, the near shoulder opening first and the face coming around last, until the subject is square to the lens", "term": "turns from profile to camera" },
13
+ { "id": "spin-full-360", "label": "Full 360 spin", "category": "turns-looks", "description": "One complete rotation on the spot, ending facing camera",
14
+ "promptHint": "the subject rotates a full circle on the spot, arms held loose and hair and clothing fanning outward, and comes to a stop facing the camera again", "term": "spins a full 360 on the spot" },
15
+ { "id": "pivot-on-heel", "label": "Pivot on heel", "category": "turns-looks", "description": "Sharp about-face pivoting on one heel",
16
+ "promptHint": "the subject plants weight on one heel and pivots the whole body a sharp half turn to face the opposite way, the free foot swinging around to land beside the other", "term": "pivots on heel to face opposite way" },
17
+ { "id": "twist-to-look-behind", "label": "Twist to look behind", "category": "turns-looks", "description": "Torso twists and head turns to check what is behind",
18
+ "promptHint": "the subject twists the torso and turns the head to look behind, one foot stepping back to open the stance, and holds the look on whatever is behind", "term": "twists torso to look behind" },
19
+ { "id": "turn-to-face-partner", "label": "Turn to face partner", "category": "turns-looks", "description": "Body turns to square off face to face with a partner",
20
+ "promptHint": "the subject turns the body toward the partner, feet shifting and shoulders squaring off, until the subject and the partner stand face to face", "term": "turns to face the partner",
21
+ "twoPerson": true, "requires": ["partner"] },
22
+ { "id": "turn-head-to-camera", "label": "Turn head to camera", "category": "turns-looks", "description": "Head-only turn from the side to face the camera",
23
+ "promptHint": "the subject rotates the head on the neck from one side to the camera in one continuous motion until the face is square to the lens, the eyes arriving on the lens last", "term": "turns head to camera" },
24
+ { "id": "snap-head-to-camera", "label": "Snap head to camera", "category": "turns-looks", "description": "Head whips to camera in one sharp jerk, body still",
25
+ "promptHint": "the subject whips the head from off to one side around to the camera in a single sharp jerk, the body staying still and the eyes locking straight at the lens", "term": "snaps head to camera" },
26
+ { "id": "turn-head-away", "label": "Turn head away", "category": "turns-looks", "description": "Head-only turn from camera to a side profile",
27
+ "promptHint": "the subject rotates the head from the camera to one side until the profile is presented, the gaze leaving the lens and the shoulders staying square", "term": "turns head away from camera" },
28
+ { "id": "look-over-left-shoulder", "label": "Look over left shoulder", "category": "turns-looks", "description": "Head turns over the left shoulder toward camera",
29
+ "promptHint": "the subject turns the head to look back over the left shoulder while keeping the back to the camera, until the face comes into view in three-quarter profile, the body staying put", "term": "looks back over left shoulder" },
30
+ { "id": "look-over-right-shoulder", "label": "Look over right shoulder", "category": "turns-looks", "description": "Head turns over the right shoulder toward camera",
31
+ "promptHint": "the subject turns the head to look back over the right shoulder while keeping the back to the camera, until the face comes into view in three-quarter profile, the body staying put", "term": "looks back over right shoulder" },
32
+ { "id": "glance-back", "label": "Glance back", "category": "turns-looks", "description": "Brief check over the shoulder, then back to front",
33
+ "promptHint": "the subject flicks the head over one shoulder to check behind, the eyes catching something, and returns the head to face front again", "term": "glances back over shoulder" },
34
+ { "id": "double-take", "label": "Double take", "category": "turns-looks", "description": "Look away, then snap back to it in disbelief",
35
+ "promptHint": "the subject glances at something, looks away, and snaps the head back to it as the eyes widen in a classic double take, the body going still", "term": "does a double take" },
36
+ { "id": "chin-lift-to-camera", "label": "Chin lift to camera", "category": "turns-looks", "description": "Chin rises from a lowered head to meet the camera",
37
+ "promptHint": "the subject raises the chin from a lowered head and lifts the gaze to meet the camera directly, the neck extending and the eyes landing on the lens", "term": "lifts chin and eyes to camera" },
38
+ { "id": "scan-surroundings", "label": "Scan surroundings", "category": "turns-looks", "description": "Head sweeps side to side, eyes checking the space",
39
+ "promptHint": "the subject sweeps the gaze across the surroundings, the head turning from one side to the other in a continuous scan, the eyes checking each point before coming to rest", "term": "scans the surroundings" },
40
+ { "id": "head-follows-across-frame", "label": "Head follows across frame", "category": "turns-looks", "description": "Head turns to track something crossing the frame",
41
+ "promptHint": "the subject turns the head to follow something passing in front, tracking it from one side of the frame to the other, and holds the gaze where it exits", "term": "turns head to track something passing" },
42
+ { "id": "look-at-partner", "label": "Look at partner", "category": "turns-looks", "description": "Head-only turn to meet a partner's eyes",
43
+ "promptHint": "the subject turns the head toward the partner, the eyes finding the partner's face and holding there while the body stays still", "term": "turns head to look at the partner",
44
+ "twoPerson": true, "requires": ["partner"] },
45
+ { "id": "sultry-look-over-shoulder", "label": "Sultry over-shoulder look", "category": "turns-looks", "description": "Seductive over-the-shoulder look back at camera",
46
+ "promptHint": "the subject keeps the body facing away and turns the head over one shoulder toward the camera with lowered eyelids and a knowing half-smile, the chin dipping toward the shoulder as the gaze lands", "term": "throws a sultry look over the shoulder",
47
+ "adultOnly": true },
48
+ { "id": "look-up", "label": "Look up", "category": "turns-looks", "description": "Gaze lifts from the ground to above the frame",
49
+ "promptHint": "the subject lifts the gaze from the ground to above the top of the frame, tipping the head back so the chin rises and the throat lengthens, and holds the upward look", "term": "looks up" },
50
+ { "id": "look-down", "label": "Look down", "category": "turns-looks", "description": "Gaze drops from level to the ground",
51
+ "promptHint": "the subject drops the gaze from level to the ground, lowering the chin toward the chest until the eyes settle on the floor, the shoulders softening", "term": "looks down" },
52
+ { "id": "look-off-screen-left", "label": "Look off left", "category": "turns-looks", "description": "Head and eyes turn to something out of frame left",
53
+ "promptHint": "the subject turns the head and eyes toward frame left to fix on something out of frame on that side, the body staying square to camera", "term": "looks off-screen left" },
54
+ { "id": "look-off-screen-right", "label": "Look off right", "category": "turns-looks", "description": "Head and eyes turn to something out of frame right",
55
+ "promptHint": "the subject turns the head and eyes toward frame right to fix on something out of frame on that side, the body staying square to camera", "term": "looks off-screen right" },
56
+ { "id": "eyes-track-across-frame", "label": "Eyes track across frame", "category": "turns-looks", "description": "Eyes follow something across frame, head nearly still",
57
+ "promptHint": "the subject keeps the head nearly still while the eyes follow something moving across the frame from one side to the other, the head drifting only slightly to keep pace", "term": "tracks something across frame with eyes only" },
58
+ { "id": "eyes-flick-to-camera", "label": "Flick eyes to camera", "category": "turns-looks", "description": "Only the eyes move to lock onto the camera",
59
+ "promptHint": "the subject keeps the head turned slightly off and still and shifts only the eyes to the camera, the gaze locking straight down the lens without the head moving", "term": "flicks eyes to camera" },
60
+ { "id": "side-eye-glance", "label": "Side-eye glance", "category": "turns-looks", "description": "Eyes slide sideways without turning the head",
61
+ "promptHint": "the subject keeps the head facing forward and slides the eyes hard to one side toward something off-frame without turning the head, holding the sidelong look", "term": "throws a side-eye glance" },
62
+ { "id": "break-eye-contact", "label": "Break eye contact", "category": "turns-looks", "description": "Held eye contact drops away, face turning aside",
63
+ "promptHint": "the subject drops the eyes from the camera and turns the face slightly aside, breaking the look and settling the gaze somewhere low and away", "term": "breaks eye contact" },
64
+ { "id": "tilt-head-curiously", "label": "Tilt head curiously", "category": "turns-looks", "description": "Head tips toward one shoulder, eyes staying on the target",
65
+ "promptHint": "the subject tips the head toward one shoulder in a curious tilt, the ear dropping toward the shoulder while the eyes stay fixed on what is in front, and holds the tilt", "term": "tilts head curiously to one side" },
66
+ { "id": "peek-around-corner", "label": "Peek around corner", "category": "turns-looks", "description": "Leans the head out past an edge to check, body stays hidden",
67
+ "promptHint": "the subject leans the upper body sideways to bring one eye and the edge of the face past a corner, one hand braced on the wall, the feet staying planted behind cover", "term": "leans out to peek around a corner" },
68
+ { "id": "look-back-and-forth", "label": "Look back and forth", "category": "turns-looks", "description": "Head swings between two points, weighing them up",
69
+ "promptHint": "the subject swings the head from one point to another and back again in repeated turns, the eyes landing on each in turn as if weighing them up, the body staying still", "term": "looks back and forth between two points" },
70
+ { "id": "snap-look-toward-sound", "label": "Snap head toward sound", "category": "turns-looks", "description": "Head snaps toward an off-screen noise, body freezing",
71
+ "promptHint": "the subject snaps the head toward an off-screen sound in one sharp turn, the body going still and the eyes fixing hard on the direction it came from", "term": "snaps head toward an off-screen sound" },
72
+ { "id": "look-partner-up-and-down", "label": "Look partner over", "category": "turns-looks", "description": "Once-over of the partner, eyes traveling down then up",
73
+ "promptHint": "the subject runs the eyes down the partner from face to feet and back up again in one deliberate once-over, the head dipping and lifting to follow, the body staying still", "term": "looks the partner up and down",
74
+ "twoPerson": true, "requires": ["partner"] },
75
+ { "id": "look-at-own-hands", "label": "Look at own hands", "category": "turns-looks", "description": "Raises both hands and stares at them in realization",
76
+ "promptHint": "the subject raises both hands into view in front of the face, palms turning up and over, and stares at them with the eyes widening, the head dropping slightly to study them", "term": "stares at own raised hands" },
77
+ { "id": "push-back-hood-reveal", "label": "Push back hood", "category": "turns-looks", "description": "Hood slides back and the face lifts into view",
78
+ "promptHint": "the subject reaches up with both hands and pushes the hood back off the head, the fabric sliding down onto the shoulders as the chin lifts and the face rises into view", "term": "pushes back hood and lifts face" },
79
+ { "id": "peer-over-glasses", "label": "Peer over glasses", "category": "turns-looks", "description": "Glasses slide down the nose, eyes look over the rims",
80
+ "promptHint": "the subject hooks one finger on the bridge of the glasses and slides them down the nose, the chin dipping so the eyes look out over the top of the rims", "term": "pulls glasses down and peers over them" },
81
+ { "id": "peer-through-door-crack", "label": "Peer through door crack", "category": "turns-looks", "description": "Door opens a crack and one eye looks through the gap",
82
+ "promptHint": "the subject eases the door open a narrow crack with one hand and brings the face to the gap, one eye peering through while the rest of the body stays behind the door", "term": "opens door a crack and peers through" },
83
+ { "id": "gaze-frame-left", "label": "Look toward frame left", "category": "turns-looks", "description": "Look toward frame left.",
84
+ "term": "looks toward frame left", "promptHint": "the subject turns the eyes and then the head toward frame left and holds the gaze" },
85
+ { "id": "gaze-frame-right", "label": "Look toward frame right", "category": "turns-looks", "description": "Look toward frame right.",
86
+ "term": "looks toward frame right", "promptHint": "the subject turns the eyes and then the head toward frame right and holds the gaze" },
87
+ { "id": "look-at-counterpart", "label": "Look at connected counterpart", "category": "turns-looks", "description": "Look at connected counterpart.",
88
+ "term": "looks toward the counterpart", "promptHint": "the subject turns the eyes and head toward the counterpart and holds the gaze",
89
+ "counterpart": "the nearby person or object", "requires": ["gaze target"], "aliases": ["eyeline", "gaze target"] },
90
+ ]