@nodaro/prompts 1.20.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 (43) hide show
  1. package/dist/index.cjs +8181 -7229
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +120 -61
  4. package/dist/index.d.ts +120 -61
  5. package/dist/index.js +8082 -7133
  6. package/dist/index.js.map +1 -1
  7. package/package.json +2 -2
  8. package/src/__tests__/adult-only-ratchet.test.ts +9 -1
  9. package/src/__tests__/character-motion-audit.test.ts +77 -0
  10. package/src/__tests__/character-motion-exit-visibility.test.ts +183 -0
  11. package/src/__tests__/character-motion-partner-referent.test.ts +225 -0
  12. package/src/__tests__/character-motion.test.ts +11 -4
  13. package/src/__tests__/fixtures/parameter-hint-golden.json +3 -3
  14. package/src/__tests__/frame-delivery.test.ts +93 -0
  15. package/src/__tests__/graph-composed-unwired-identity.test.ts +166 -0
  16. package/src/__tests__/parameter-prompt-hint.test.ts +9 -3
  17. package/src/character-motion/animals-pets.ts +112 -85
  18. package/src/character-motion/athletic-stunts.ts +155 -214
  19. package/src/character-motion/camera-interaction.ts +92 -133
  20. package/src/character-motion/combat-weapons.ts +143 -202
  21. package/src/character-motion/dance.ts +121 -169
  22. package/src/character-motion/entrances-exits.ts +88 -109
  23. package/src/character-motion/evasive-falls.ts +88 -130
  24. package/src/character-motion/everyday-actions.ts +233 -274
  25. package/src/character-motion/face-expression.ts +125 -178
  26. package/src/character-motion/gestures.ts +211 -304
  27. package/src/character-motion/head-gestures.ts +66 -94
  28. package/src/character-motion/idle-ambient.ts +85 -124
  29. package/src/character-motion/posture-shifts.ts +116 -139
  30. package/src/character-motion/runway.ts +73 -97
  31. package/src/character-motion/stage-performance.ts +92 -127
  32. package/src/character-motion/turns-looks.ts +86 -112
  33. package/src/character-motion/two-person.ts +241 -229
  34. package/src/character-motion/types.ts +4 -1
  35. package/src/character-motion/unnatural-horror.ts +53 -91
  36. package/src/character-motion/vehicles-mounts.ts +101 -97
  37. package/src/character-motion/walks-runs.ts +93 -121
  38. package/src/character-motion-diagnostics.ts +49 -0
  39. package/src/character-motion.ts +89 -13
  40. package/src/frame-delivery.ts +106 -0
  41. package/src/index.ts +4 -0
  42. package/src/parameter-prompt-hint.ts +23 -17
  43. package/src/picker-catalogs.ts +10 -2
@@ -1,101 +1,77 @@
1
1
  import type { CharacterMotion } from "./types.js"
2
2
 
3
- /** Runway & Model — 32 entries. Category id `runway`. */
3
+ /** runway — authored motion fragments. Stable ids survive copy revisions. */
4
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",
7
- term: "walks the runway, feet landing in one line" },
8
- { id: "walk-mark-and-turn", label: "Walk & Turn", category: "runway", description: "Reach the end mark, hold a beat, turn and walk back",
9
- 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",
10
- term: "walks to the mark, turns and walks back" },
11
- { id: "pivot-mid-stride", label: "Mid-Stride Pivot", category: "runway", description: "Unbroken half-turn on the ball of the foot, no pause",
12
- 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",
13
- term: "pivots mid-stride and returns" },
14
- { id: "stomp-editorial-walk", label: "Editorial Stomp", category: "runway", description: "Heavy heel-first strides, knees driving, arms rigid",
15
- 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",
16
- term: "stomps forward in an editorial walk" },
17
- { id: "sway-hips-walk", label: "Hip-Sway Walk", category: "runway", description: "Exaggerated hip swing on every step",
18
- 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",
19
- term: "walks with an exaggerated hip sway", adultOnly: true },
20
- { id: "stalk-high-fashion-walk", label: "High-Fashion Walk", category: "runway", description: "Rigid torso, pinned arms, long stiff strides, blank face",
21
- 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",
22
- term: "walks rigid and stiff, arms pinned at sides" },
23
- { id: "stop-and-pose", label: "Stop & Pose", category: "runway", description: "Plant, shift weight back, chin up, hold, walk on",
24
- promptHint: "the subject walks forward, plants both feet and stops, shifts the weight onto the back leg with the front knee softening, squares the shoulders to the camera and lifts the chin, holds the shape, and walks on",
25
- term: "stops and hits a pose" },
26
- { id: "land-hand-on-hip", label: "Hand-on-Hip Stop", category: "runway", description: "Arrive, one hand rises to the hip, elbow out",
27
- 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",
28
- term: "stops, one hand landing on the hip" },
29
- { id: "flip-the-hair", label: "Hair Flip", category: "runway", description: "Head dips and whips over, hair arcs and settles",
30
- 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",
31
- term: "flips the hair over" },
32
- { id: "sweep-hair-back", label: "Hair Sweep Back", category: "runway", description: "One hand rakes the hair off the face while walking",
33
- 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",
34
- term: "sweeps the hair back with one hand" },
35
- { id: "drop-coat-off-shoulders", label: "Coat Drop Reveal", category: "runway", description: "Shrug the coat off and let it fall to reveal the outfit",
36
- promptHint: "the subject shrugs both shoulders back so the coat slides down the arms, catches it at the elbows for a beat and lets it drop to the floor behind, revealing the outfit underneath",
37
- term: "drops the coat off the shoulders", adultOnly: true },
38
- { id: "hook-jacket-over-shoulder", label: "Jacket Over Shoulder", category: "runway", description: "Shrug off the jacket and hook it over one shoulder",
39
- 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",
40
- term: "hooks the jacket over one shoulder" },
41
- { id: "pause-look-over-shoulder", label: "Over-the-Shoulder Pause", category: "runway", description: "Walk away, stop, look back over the shoulder, hold",
42
- 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",
43
- term: "pauses and looks back over the shoulder" },
44
- { id: "sultry-look-back", label: "Sultry Look Back", category: "runway", description: "Chin to shoulder, half-lidded gaze back at the lens",
45
- 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",
46
- term: "throws a sultry look back over the shoulder", adultOnly: true },
47
- { id: "turn-full-circle", label: "Full Turn", category: "runway", description: "Rotate a full circle in place to show every side",
48
- 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",
49
- term: "turns a full circle to show the outfit" },
50
- { id: "take-sunglasses-off", label: "Sunglasses Off", category: "runway", description: "Slide the sunglasses off and lower them, eyes to lens",
51
- 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",
52
- term: "takes the sunglasses off" },
53
- { id: "push-sunglasses-onto-head", label: "Sunglasses Up", category: "runway", description: "One finger lifts the sunglasses off the eyes onto the crown",
54
- 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",
55
- term: "pushes the sunglasses up onto the head" },
56
- { id: "swing-the-bag", label: "Bag Swing", category: "runway", description: "Handbag swings from one hand with the stride",
57
- 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",
58
- term: "swings the bag with the stride" },
59
- { id: "campaign-walk-to-camera", label: "Campaign Walk", category: "runway", description: "Walk straight at the lens from far to close, gaze locked",
60
- 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",
61
- term: "walks straight at the camera, gaze locked" },
62
- { id: "walk-away-from-camera", label: "Walk Away", category: "runway", description: "Back to camera, walk off into the distance",
63
- 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",
64
- term: "walks away, back to camera" },
65
- { id: "sweep-the-gown", label: "Gown Sweep", category: "runway", description: "Long strides with the hem trailing, a turn flares the train",
66
- 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",
67
- term: "sweeps the gown train through a turn" },
68
- { id: "bounce-streetwear-walk", label: "Streetwear Bounce", category: "runway", description: "Loose bouncy walk, shoulders rolling, hands in pockets",
69
- 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",
70
- term: "walks with a streetwear bounce" },
71
- { id: "stride-menswear-walk", label: "Menswear Stride", category: "runway", description: "Long even stride, shoulders square, one hand in pocket",
72
- 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",
73
- term: "strides with one hand in the pocket" },
74
- { id: "twirl-the-skirt", label: "Skirt Twirl", category: "runway", description: "Rise onto the toes and spin so the skirt flares out",
75
- 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",
76
- term: "twirls so the skirt flares" },
77
- { id: "adjust-the-cuff", label: "Cuff Adjust", category: "runway", description: "Tug a shirt cuff straight below the sleeve mid-stride",
78
- 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",
79
- term: "adjusts the cuff mid-stride" },
80
- { id: "adjust-lapels", label: "Lapel Adjust", category: "runway", description: "Both hands grip the lapels and tug them square",
81
- 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",
82
- term: "tugs both lapels square" },
83
- { id: "button-jacket", label: "Button Jacket", category: "runway", description: "Draw the jacket fronts together and fasten the button",
84
- 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",
85
- term: "buttons the jacket closed" },
86
- { id: "unbutton-jacket-walking", label: "Unbutton Jacket", category: "runway", description: "Pop the jacket button open mid-stride, fronts fall loose",
87
- 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",
88
- term: "unbuttons the jacket mid-stride" },
89
- { id: "pop-the-collar", label: "Collar Pop", category: "runway", description: "Both hands flick the collar up to stand against the neck",
90
- 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",
91
- term: "pops the collar up" },
92
- { id: "throw-open-coat", label: "Coat Throw Open", category: "runway", description: "Grip the coat fronts and swing them wide, outfit in view",
93
- 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",
94
- term: "throws the coat open" },
95
- { id: "cycle-through-three-poses", label: "Three-Pose Cycle", category: "runway", description: "Hit three poses in a row, shifting weight and arms each beat",
96
- 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",
97
- term: "cycles through three poses" },
98
- { id: "walk-with-partner", label: "Duo Walk", category: "runway", description: "Walk side by side with a partner in matched stride",
99
- promptHint: "the subject walks side by side with the partner in matched stride, feet landing together, both planting at the mark and pivoting outward in mirror image before walking back",
100
- term: "walks in step with the partner", twoPerson: true },
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"] },
101
77
  ]