@vitness/fds-skill 0.1.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.
- package/CLAUDE.md +55 -0
- package/SKILL.md +441 -0
- package/examples/expected-outputs/simple-exercise-transformed.json +225 -0
- package/examples/mapping-configs/simple-exercise-mapping.json +167 -0
- package/examples/source-schemas/simple-exercise-db.json +65 -0
- package/knowledge/enrichment.md +409 -0
- package/knowledge/mappings.md +354 -0
- package/knowledge/schemas.md +309 -0
- package/package.json +32 -0
- package/prompts/exercise-classification.md +173 -0
- package/prompts/exercise-description.md +178 -0
- package/prompts/exercise-metrics.md +278 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# Exercise Classification Prompt
|
|
2
|
+
|
|
3
|
+
## System Prompt
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
You are an expert exercise physiologist and fitness data specialist with deep knowledge of the FDS (Fitness Data Standard) specification.
|
|
7
|
+
|
|
8
|
+
Your task is to classify exercises according to the FDS schema requirements. You must determine:
|
|
9
|
+
1. exerciseType - The primary category of the exercise
|
|
10
|
+
2. movement - The movement pattern (from 14 valid options)
|
|
11
|
+
3. mechanics - Whether it's compound or isolation
|
|
12
|
+
4. force - The force direction
|
|
13
|
+
5. level - The difficulty level
|
|
14
|
+
|
|
15
|
+
Always respond with valid JSON matching the expected schema. Be precise and consistent.
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## User Prompt Template
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Classify this exercise according to FDS v1.0.0:
|
|
22
|
+
|
|
23
|
+
Exercise: {{name}}
|
|
24
|
+
{{#if bodyPart}}Body Part: {{bodyPart}}{{/if}}
|
|
25
|
+
{{#if target}}Target Muscle: {{target}}{{/if}}
|
|
26
|
+
{{#if equipment}}Equipment: {{equipment}}{{/if}}
|
|
27
|
+
{{#if description}}Description: {{description}}{{/if}}
|
|
28
|
+
|
|
29
|
+
Provide classification as JSON with this exact structure:
|
|
30
|
+
{
|
|
31
|
+
"exerciseType": "strength|cardio|mobility|plyometric|balance",
|
|
32
|
+
"movement": "squat|hinge|lunge|push-horizontal|push-vertical|pull-horizontal|pull-vertical|carry|core-anti-extension|core-anti-rotation|rotation|locomotion|isolation|other",
|
|
33
|
+
"mechanics": "compound|isolation",
|
|
34
|
+
"force": "push|pull|static|mixed",
|
|
35
|
+
"level": "beginner|intermediate|advanced",
|
|
36
|
+
"reasoning": "Brief explanation of your classification choices"
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
Classification Guidelines:
|
|
40
|
+
- exerciseType: Consider the primary training goal (building strength, cardio endurance, flexibility, explosive power, or balance)
|
|
41
|
+
- movement: Identify the primary movement pattern. Use "isolation" for single-joint exercises, "locomotion" for cardio-based movements
|
|
42
|
+
- mechanics: "compound" if multiple joints move, "isolation" if single joint
|
|
43
|
+
- force: Primary force direction - pushing away, pulling toward, static hold, or combination
|
|
44
|
+
- level: Consider technique complexity and strength requirements
|
|
45
|
+
|
|
46
|
+
Respond ONLY with the JSON object, no additional text.
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Expected Output Schema
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"type": "object",
|
|
54
|
+
"required": ["exerciseType", "movement", "mechanics", "force", "level"],
|
|
55
|
+
"properties": {
|
|
56
|
+
"exerciseType": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"enum": ["strength", "cardio", "mobility", "plyometric", "balance"]
|
|
59
|
+
},
|
|
60
|
+
"movement": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"enum": ["squat", "hinge", "lunge", "push-horizontal", "push-vertical", "pull-horizontal", "pull-vertical", "carry", "core-anti-extension", "core-anti-rotation", "rotation", "locomotion", "isolation", "other"]
|
|
63
|
+
},
|
|
64
|
+
"mechanics": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"enum": ["compound", "isolation"]
|
|
67
|
+
},
|
|
68
|
+
"force": {
|
|
69
|
+
"type": "string",
|
|
70
|
+
"enum": ["push", "pull", "static", "mixed"]
|
|
71
|
+
},
|
|
72
|
+
"level": {
|
|
73
|
+
"type": "string",
|
|
74
|
+
"enum": ["beginner", "intermediate", "advanced"]
|
|
75
|
+
},
|
|
76
|
+
"reasoning": {
|
|
77
|
+
"type": "string"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Example Inputs/Outputs
|
|
84
|
+
|
|
85
|
+
### Example 1: Compound Strength
|
|
86
|
+
**Input:**
|
|
87
|
+
```
|
|
88
|
+
Exercise: Barbell Back Squat
|
|
89
|
+
Body Part: upper legs
|
|
90
|
+
Target Muscle: glutes
|
|
91
|
+
Equipment: barbell
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
**Output:**
|
|
95
|
+
```json
|
|
96
|
+
{
|
|
97
|
+
"exerciseType": "strength",
|
|
98
|
+
"movement": "squat",
|
|
99
|
+
"mechanics": "compound",
|
|
100
|
+
"force": "push",
|
|
101
|
+
"level": "intermediate",
|
|
102
|
+
"reasoning": "Back squat is a foundational compound strength exercise with a squat movement pattern. It involves knee and hip extension (pushing force). Requires proper technique and baseline strength, making it intermediate level."
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Example 2: Isolation Exercise
|
|
107
|
+
**Input:**
|
|
108
|
+
```
|
|
109
|
+
Exercise: Bicep Curl
|
|
110
|
+
Target Muscle: biceps
|
|
111
|
+
Equipment: dumbbell
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Output:**
|
|
115
|
+
```json
|
|
116
|
+
{
|
|
117
|
+
"exerciseType": "strength",
|
|
118
|
+
"movement": "isolation",
|
|
119
|
+
"mechanics": "isolation",
|
|
120
|
+
"force": "pull",
|
|
121
|
+
"level": "beginner",
|
|
122
|
+
"reasoning": "Bicep curl is a single-joint isolation exercise targeting the biceps. The elbow flexion is a pulling motion. Simple technique makes it beginner-friendly."
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Example 3: Core Exercise
|
|
127
|
+
**Input:**
|
|
128
|
+
```
|
|
129
|
+
Exercise: Plank
|
|
130
|
+
Body Part: waist
|
|
131
|
+
Target Muscle: abs
|
|
132
|
+
Equipment: body weight
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**Output:**
|
|
136
|
+
```json
|
|
137
|
+
{
|
|
138
|
+
"exerciseType": "strength",
|
|
139
|
+
"movement": "core-anti-extension",
|
|
140
|
+
"mechanics": "isolation",
|
|
141
|
+
"force": "static",
|
|
142
|
+
"level": "beginner",
|
|
143
|
+
"reasoning": "Plank is an isometric core exercise that resists spinal extension (anti-extension). Despite engaging multiple muscles, the joint action is minimal (isolation). Static hold with no movement. Basic technique accessible to beginners."
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Example 4: Cardio
|
|
148
|
+
**Input:**
|
|
149
|
+
```
|
|
150
|
+
Exercise: Treadmill Run
|
|
151
|
+
Body Part: cardio
|
|
152
|
+
Target Muscle: cardiovascular system
|
|
153
|
+
Equipment: treadmill
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Output:**
|
|
157
|
+
```json
|
|
158
|
+
{
|
|
159
|
+
"exerciseType": "cardio",
|
|
160
|
+
"movement": "locomotion",
|
|
161
|
+
"mechanics": "compound",
|
|
162
|
+
"force": "mixed",
|
|
163
|
+
"level": "beginner",
|
|
164
|
+
"reasoning": "Running is a cardiovascular locomotion exercise. It's compound as it involves hip, knee, and ankle joints. Force is mixed between push-off and pull-through phases. Basic running is beginner-accessible."
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Validation Rules
|
|
169
|
+
|
|
170
|
+
1. All 5 required fields must be present
|
|
171
|
+
2. Each field must use exact enum values (case-sensitive)
|
|
172
|
+
3. The `reasoning` field helps with audit but is not stored in FDS
|
|
173
|
+
4. If uncertain between two options, choose the more common/primary classification
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# Exercise Description Prompt
|
|
2
|
+
|
|
3
|
+
## System Prompt
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
You are an expert fitness content writer with deep knowledge of exercise science and the FDS (Fitness Data Standard) specification.
|
|
7
|
+
|
|
8
|
+
Your task is to write clear, concise, and accurate exercise descriptions. Descriptions should:
|
|
9
|
+
1. Explain what the exercise is and its purpose
|
|
10
|
+
2. Mention the primary muscles targeted
|
|
11
|
+
3. Be suitable for a general fitness audience
|
|
12
|
+
4. Be 1-3 sentences long
|
|
13
|
+
5. Avoid overly technical jargon
|
|
14
|
+
|
|
15
|
+
Always respond with valid JSON matching the expected schema.
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## User Prompt Template
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Write a description for this exercise:
|
|
22
|
+
|
|
23
|
+
Exercise: {{name}}
|
|
24
|
+
{{#if bodyPart}}Body Part: {{bodyPart}}{{/if}}
|
|
25
|
+
{{#if target}}Target Muscle: {{target}}{{/if}}
|
|
26
|
+
{{#if equipment}}Equipment: {{equipment}}{{/if}}
|
|
27
|
+
{{#if classification}}
|
|
28
|
+
Classification:
|
|
29
|
+
- Type: {{classification.exerciseType}}
|
|
30
|
+
- Movement: {{classification.movement}}
|
|
31
|
+
- Mechanics: {{classification.mechanics}}
|
|
32
|
+
{{/if}}
|
|
33
|
+
|
|
34
|
+
Provide a JSON response:
|
|
35
|
+
{
|
|
36
|
+
"description": "Your 1-3 sentence description here",
|
|
37
|
+
"aliases": ["alternative name 1", "alternative name 2"]
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
Guidelines:
|
|
41
|
+
- Description should be informative but concise (50-150 words)
|
|
42
|
+
- Start with what the exercise is, not "This exercise..."
|
|
43
|
+
- Mention key muscles and benefits
|
|
44
|
+
- Aliases should be common alternative names people might search for
|
|
45
|
+
|
|
46
|
+
Respond ONLY with the JSON object, no additional text.
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Expected Output Schema
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"type": "object",
|
|
54
|
+
"required": ["description"],
|
|
55
|
+
"properties": {
|
|
56
|
+
"description": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"minLength": 20,
|
|
59
|
+
"maxLength": 500
|
|
60
|
+
},
|
|
61
|
+
"aliases": {
|
|
62
|
+
"type": "array",
|
|
63
|
+
"items": {
|
|
64
|
+
"type": "string",
|
|
65
|
+
"minLength": 2
|
|
66
|
+
},
|
|
67
|
+
"maxItems": 5
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Example Inputs/Outputs
|
|
74
|
+
|
|
75
|
+
### Example 1: Compound Exercise
|
|
76
|
+
**Input:**
|
|
77
|
+
```
|
|
78
|
+
Exercise: Barbell Back Squat
|
|
79
|
+
Body Part: upper legs
|
|
80
|
+
Target Muscle: glutes
|
|
81
|
+
Equipment: barbell
|
|
82
|
+
Classification:
|
|
83
|
+
- Type: strength
|
|
84
|
+
- Movement: squat
|
|
85
|
+
- Mechanics: compound
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Output:**
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"description": "A foundational compound movement that targets the quadriceps, glutes, and hamstrings while engaging the core for stability. The barbell back squat builds lower body strength and power, making it essential for athletic performance and functional fitness.",
|
|
92
|
+
"aliases": ["back squat", "barbell squat", "high bar squat", "low bar squat"]
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Example 2: Isolation Exercise
|
|
97
|
+
**Input:**
|
|
98
|
+
```
|
|
99
|
+
Exercise: Dumbbell Bicep Curl
|
|
100
|
+
Target Muscle: biceps
|
|
101
|
+
Equipment: dumbbell
|
|
102
|
+
Classification:
|
|
103
|
+
- Type: strength
|
|
104
|
+
- Movement: isolation
|
|
105
|
+
- Mechanics: isolation
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Output:**
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"description": "An isolation exercise that targets the biceps brachii through elbow flexion. Dumbbell curls allow for independent arm training, helping address muscle imbalances while building arm size and strength.",
|
|
112
|
+
"aliases": ["bicep curl", "arm curl", "dumbbell curl", "DB curl"]
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Example 3: Core Exercise
|
|
117
|
+
**Input:**
|
|
118
|
+
```
|
|
119
|
+
Exercise: Plank
|
|
120
|
+
Body Part: waist
|
|
121
|
+
Target Muscle: abs
|
|
122
|
+
Equipment: body weight
|
|
123
|
+
Classification:
|
|
124
|
+
- Type: strength
|
|
125
|
+
- Movement: core-anti-extension
|
|
126
|
+
- Mechanics: isolation
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Output:**
|
|
130
|
+
```json
|
|
131
|
+
{
|
|
132
|
+
"description": "An isometric core exercise that strengthens the entire anterior core by resisting spinal extension. The plank improves core stability, posture, and provides a foundation for more advanced exercises.",
|
|
133
|
+
"aliases": ["front plank", "prone hold", "hover"]
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Example 4: Cardio Exercise
|
|
138
|
+
**Input:**
|
|
139
|
+
```
|
|
140
|
+
Exercise: Jumping Jacks
|
|
141
|
+
Body Part: cardio
|
|
142
|
+
Target Muscle: cardiovascular system
|
|
143
|
+
Equipment: body weight
|
|
144
|
+
Classification:
|
|
145
|
+
- Type: cardio
|
|
146
|
+
- Movement: locomotion
|
|
147
|
+
- Mechanics: compound
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Output:**
|
|
151
|
+
```json
|
|
152
|
+
{
|
|
153
|
+
"description": "A classic calisthenics exercise that elevates heart rate while engaging the entire body. Jumping jacks improve cardiovascular endurance, coordination, and serve as an effective warm-up or cardio interval exercise.",
|
|
154
|
+
"aliases": ["star jumps", "side-straddle hop"]
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Quality Guidelines
|
|
159
|
+
|
|
160
|
+
### Do
|
|
161
|
+
- Be specific about muscles targeted
|
|
162
|
+
- Mention practical benefits
|
|
163
|
+
- Use active voice
|
|
164
|
+
- Keep sentences clear and readable
|
|
165
|
+
|
|
166
|
+
### Don't
|
|
167
|
+
- Start with "This exercise is..."
|
|
168
|
+
- Use excessive technical anatomy terms
|
|
169
|
+
- Include form instructions (those go elsewhere)
|
|
170
|
+
- Make health claims or guarantees
|
|
171
|
+
- Be overly verbose
|
|
172
|
+
|
|
173
|
+
### Alias Guidelines
|
|
174
|
+
- Include common abbreviations (e.g., "DB" for dumbbell)
|
|
175
|
+
- Include regional variations (e.g., "press-up" for "push-up")
|
|
176
|
+
- Include equipment-less variants if applicable
|
|
177
|
+
- Maximum 5 aliases
|
|
178
|
+
- Exclude the main name
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
# Exercise Metrics Prompt
|
|
2
|
+
|
|
3
|
+
## System Prompt
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
You are an expert exercise physiologist familiar with the FDS (Fitness Data Standard) specification.
|
|
7
|
+
|
|
8
|
+
Your task is to determine the appropriate metrics for tracking exercise performance. You must select:
|
|
9
|
+
1. primary metric - The most important measurement for this exercise
|
|
10
|
+
2. secondary metrics - Additional useful measurements (optional)
|
|
11
|
+
|
|
12
|
+
Choose from the valid FDS metric types and units. Always respond with valid JSON.
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## User Prompt Template
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
Determine the appropriate metrics for this exercise:
|
|
19
|
+
|
|
20
|
+
Exercise: {{name}}
|
|
21
|
+
{{#if classification}}
|
|
22
|
+
Classification:
|
|
23
|
+
- Exercise Type: {{classification.exerciseType}}
|
|
24
|
+
- Movement: {{classification.movement}}
|
|
25
|
+
- Mechanics: {{classification.mechanics}}
|
|
26
|
+
{{/if}}
|
|
27
|
+
{{#if equipment}}Equipment: {{equipment}}{{/if}}
|
|
28
|
+
|
|
29
|
+
Provide metrics as JSON:
|
|
30
|
+
{
|
|
31
|
+
"primary": {
|
|
32
|
+
"type": "<metric type>",
|
|
33
|
+
"unit": "<metric unit>"
|
|
34
|
+
},
|
|
35
|
+
"secondary": [
|
|
36
|
+
{ "type": "<metric type>", "unit": "<metric unit>" }
|
|
37
|
+
],
|
|
38
|
+
"reasoning": "Brief explanation of metric choices"
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
Valid metric types: reps, weight, duration, distance, speed, pace, power, heartRate, steps, calories, height, tempo, rpe
|
|
42
|
+
|
|
43
|
+
Valid metric units:
|
|
44
|
+
- count (for reps, tempo, rpe, steps)
|
|
45
|
+
- kg, lb (for weight)
|
|
46
|
+
- s, min (for duration)
|
|
47
|
+
- m, km, mi (for distance)
|
|
48
|
+
- m_s, km_h (for speed)
|
|
49
|
+
- min_per_km, min_per_mi (for pace)
|
|
50
|
+
- W (for power)
|
|
51
|
+
- bpm (for heartRate)
|
|
52
|
+
- kcal (for calories)
|
|
53
|
+
- cm, in (for height)
|
|
54
|
+
|
|
55
|
+
Common pairings:
|
|
56
|
+
- Strength: reps/count + weight/kg
|
|
57
|
+
- Cardio distance: distance/km + duration/min
|
|
58
|
+
- Cardio time: duration/min + heartRate/bpm
|
|
59
|
+
- Timed holds: duration/s
|
|
60
|
+
- Plyometrics: reps/count + height/cm
|
|
61
|
+
|
|
62
|
+
Respond ONLY with the JSON object, no additional text.
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Expected Output Schema
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"type": "object",
|
|
70
|
+
"required": ["primary"],
|
|
71
|
+
"properties": {
|
|
72
|
+
"primary": {
|
|
73
|
+
"type": "object",
|
|
74
|
+
"required": ["type", "unit"],
|
|
75
|
+
"properties": {
|
|
76
|
+
"type": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"enum": ["reps", "weight", "duration", "distance", "speed", "pace", "power", "heartRate", "steps", "calories", "height", "tempo", "rpe"]
|
|
79
|
+
},
|
|
80
|
+
"unit": {
|
|
81
|
+
"type": "string",
|
|
82
|
+
"enum": ["count", "kg", "lb", "s", "min", "m", "km", "mi", "m_s", "km_h", "min_per_km", "min_per_mi", "W", "bpm", "kcal", "cm", "in"]
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"secondary": {
|
|
87
|
+
"type": "array",
|
|
88
|
+
"items": {
|
|
89
|
+
"type": "object",
|
|
90
|
+
"required": ["type", "unit"],
|
|
91
|
+
"properties": {
|
|
92
|
+
"type": { "type": "string" },
|
|
93
|
+
"unit": { "type": "string" }
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"reasoning": {
|
|
98
|
+
"type": "string"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Example Inputs/Outputs
|
|
105
|
+
|
|
106
|
+
### Example 1: Weighted Strength Exercise
|
|
107
|
+
**Input:**
|
|
108
|
+
```
|
|
109
|
+
Exercise: Barbell Bench Press
|
|
110
|
+
Classification:
|
|
111
|
+
- Exercise Type: strength
|
|
112
|
+
- Movement: push-horizontal
|
|
113
|
+
- Mechanics: compound
|
|
114
|
+
Equipment: barbell
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Output:**
|
|
118
|
+
```json
|
|
119
|
+
{
|
|
120
|
+
"primary": { "type": "reps", "unit": "count" },
|
|
121
|
+
"secondary": [
|
|
122
|
+
{ "type": "weight", "unit": "kg" },
|
|
123
|
+
{ "type": "rpe", "unit": "count" }
|
|
124
|
+
],
|
|
125
|
+
"reasoning": "Bench press is tracked primarily by reps completed, with weight being the key secondary metric for progressive overload. RPE helps gauge effort relative to capacity."
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Example 2: Bodyweight Exercise
|
|
130
|
+
**Input:**
|
|
131
|
+
```
|
|
132
|
+
Exercise: Push-Up
|
|
133
|
+
Classification:
|
|
134
|
+
- Exercise Type: strength
|
|
135
|
+
- Movement: push-horizontal
|
|
136
|
+
- Mechanics: compound
|
|
137
|
+
Equipment: body weight
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**Output:**
|
|
141
|
+
```json
|
|
142
|
+
{
|
|
143
|
+
"primary": { "type": "reps", "unit": "count" },
|
|
144
|
+
"secondary": [
|
|
145
|
+
{ "type": "tempo", "unit": "count" }
|
|
146
|
+
],
|
|
147
|
+
"reasoning": "Bodyweight push-ups are primarily tracked by rep count. Tempo (e.g., 3-1-2-0 for eccentric-pause-concentric-pause) can be used to increase difficulty and time under tension."
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Example 3: Timed Hold
|
|
152
|
+
**Input:**
|
|
153
|
+
```
|
|
154
|
+
Exercise: Plank
|
|
155
|
+
Classification:
|
|
156
|
+
- Exercise Type: strength
|
|
157
|
+
- Movement: core-anti-extension
|
|
158
|
+
- Mechanics: isolation
|
|
159
|
+
Equipment: body weight
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Output:**
|
|
163
|
+
```json
|
|
164
|
+
{
|
|
165
|
+
"primary": { "type": "duration", "unit": "s" },
|
|
166
|
+
"secondary": [],
|
|
167
|
+
"reasoning": "Plank is an isometric hold measured by duration in seconds. No secondary metrics are typically needed as progression comes from extending hold time."
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Example 4: Distance Cardio
|
|
172
|
+
**Input:**
|
|
173
|
+
```
|
|
174
|
+
Exercise: Treadmill Run
|
|
175
|
+
Classification:
|
|
176
|
+
- Exercise Type: cardio
|
|
177
|
+
- Movement: locomotion
|
|
178
|
+
- Mechanics: compound
|
|
179
|
+
Equipment: treadmill
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
**Output:**
|
|
183
|
+
```json
|
|
184
|
+
{
|
|
185
|
+
"primary": { "type": "distance", "unit": "km" },
|
|
186
|
+
"secondary": [
|
|
187
|
+
{ "type": "duration", "unit": "min" },
|
|
188
|
+
{ "type": "pace", "unit": "min_per_km" },
|
|
189
|
+
{ "type": "heartRate", "unit": "bpm" },
|
|
190
|
+
{ "type": "calories", "unit": "kcal" }
|
|
191
|
+
],
|
|
192
|
+
"reasoning": "Running is typically tracked by distance covered. Secondary metrics include time, pace for intensity, heart rate for training zone, and calories for energy expenditure."
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Example 5: Time-Based Cardio
|
|
197
|
+
**Input:**
|
|
198
|
+
```
|
|
199
|
+
Exercise: Stationary Bike
|
|
200
|
+
Classification:
|
|
201
|
+
- Exercise Type: cardio
|
|
202
|
+
- Movement: locomotion
|
|
203
|
+
- Mechanics: compound
|
|
204
|
+
Equipment: cardio machine
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**Output:**
|
|
208
|
+
```json
|
|
209
|
+
{
|
|
210
|
+
"primary": { "type": "duration", "unit": "min" },
|
|
211
|
+
"secondary": [
|
|
212
|
+
{ "type": "distance", "unit": "km" },
|
|
213
|
+
{ "type": "power", "unit": "W" },
|
|
214
|
+
{ "type": "heartRate", "unit": "bpm" },
|
|
215
|
+
{ "type": "calories", "unit": "kcal" }
|
|
216
|
+
],
|
|
217
|
+
"reasoning": "Stationary biking is often tracked by time spent. Power (watts) is valuable for consistent intensity measurement. Distance, heart rate, and calories provide additional context."
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Example 6: Plyometric Exercise
|
|
222
|
+
**Input:**
|
|
223
|
+
```
|
|
224
|
+
Exercise: Box Jump
|
|
225
|
+
Classification:
|
|
226
|
+
- Exercise Type: plyometric
|
|
227
|
+
- Movement: squat
|
|
228
|
+
- Mechanics: compound
|
|
229
|
+
Equipment: body weight
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**Output:**
|
|
233
|
+
```json
|
|
234
|
+
{
|
|
235
|
+
"primary": { "type": "reps", "unit": "count" },
|
|
236
|
+
"secondary": [
|
|
237
|
+
{ "type": "height", "unit": "cm" }
|
|
238
|
+
],
|
|
239
|
+
"reasoning": "Box jumps are tracked by rep count, with box height as a secondary metric indicating intensity and explosive power capability."
|
|
240
|
+
}
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
## Decision Guide
|
|
244
|
+
|
|
245
|
+
```
|
|
246
|
+
What type of exercise?
|
|
247
|
+
├─ Strength (weighted)
|
|
248
|
+
│ └─ Primary: reps/count
|
|
249
|
+
│ Secondary: weight/kg, rpe/count
|
|
250
|
+
│
|
|
251
|
+
├─ Strength (bodyweight)
|
|
252
|
+
│ └─ Primary: reps/count
|
|
253
|
+
│ Secondary: tempo/count (optional)
|
|
254
|
+
│
|
|
255
|
+
├─ Isometric Hold
|
|
256
|
+
│ └─ Primary: duration/s
|
|
257
|
+
│ Secondary: (none typically)
|
|
258
|
+
│
|
|
259
|
+
├─ Cardio (distance-based)
|
|
260
|
+
│ └─ Primary: distance/km
|
|
261
|
+
│ Secondary: duration/min, pace/min_per_km, heartRate/bpm
|
|
262
|
+
│
|
|
263
|
+
├─ Cardio (time-based)
|
|
264
|
+
│ └─ Primary: duration/min
|
|
265
|
+
│ Secondary: distance/km, heartRate/bpm, calories/kcal
|
|
266
|
+
│
|
|
267
|
+
├─ Cardio (power-based, e.g., rowing, cycling)
|
|
268
|
+
│ └─ Primary: duration/min OR distance/m
|
|
269
|
+
│ Secondary: power/W, heartRate/bpm
|
|
270
|
+
│
|
|
271
|
+
├─ Plyometric
|
|
272
|
+
│ └─ Primary: reps/count
|
|
273
|
+
│ Secondary: height/cm (for jumps)
|
|
274
|
+
│
|
|
275
|
+
└─ Mobility/Flexibility
|
|
276
|
+
└─ Primary: duration/s (for holds)
|
|
277
|
+
OR reps/count (for dynamic stretches)
|
|
278
|
+
```
|