@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.
@@ -0,0 +1,225 @@
1
+ [
2
+ {
3
+ "$comment": "Transformed from simple exercise database format",
4
+ "schemaVersion": "1.0.0",
5
+ "exerciseId": "550e8400-e29b-41d4-a716-446655440001",
6
+ "canonical": {
7
+ "name": "3/4 Sit-Up",
8
+ "slug": "three-quarter-sit-up",
9
+ "description": "A partial sit-up variation that targets the rectus abdominis while reducing strain on the lower back. This beginner-friendly core exercise focuses on the upper portion of the abdominal contraction.",
10
+ "aliases": ["three-quarter situp", "partial sit-up", "half sit-up"]
11
+ },
12
+ "classification": {
13
+ "exerciseType": "strength",
14
+ "movement": "core-anti-extension",
15
+ "mechanics": "isolation",
16
+ "force": "pull",
17
+ "level": "beginner"
18
+ },
19
+ "targets": {
20
+ "primary": [
21
+ {
22
+ "id": "c3d4e5f6-3333-4000-8000-000000000022",
23
+ "name": "Rectus Abdominis",
24
+ "slug": "rectus-abdominis",
25
+ "categoryId": "a1b2c3d4-1111-4000-8000-000000000004"
26
+ }
27
+ ]
28
+ },
29
+ "equipment": {
30
+ "required": [
31
+ {
32
+ "id": "b2c3d4e5-2222-4000-8000-000000000005",
33
+ "name": "Body Weight",
34
+ "slug": "body-weight"
35
+ }
36
+ ]
37
+ },
38
+ "metrics": {
39
+ "primary": {
40
+ "type": "reps",
41
+ "unit": "count"
42
+ }
43
+ },
44
+ "media": [
45
+ {
46
+ "type": "image",
47
+ "uri": "file:///path/to/animations/0001.gif"
48
+ }
49
+ ],
50
+ "metadata": {
51
+ "createdAt": "2026-01-25T00:00:00Z",
52
+ "updatedAt": "2026-01-25T00:00:00Z",
53
+ "status": "draft",
54
+ "source": "exercises-db-import",
55
+ "externalRefs": [
56
+ {
57
+ "system": "legacy-exercises-db",
58
+ "id": "0001"
59
+ }
60
+ ]
61
+ }
62
+ },
63
+ {
64
+ "schemaVersion": "1.0.0",
65
+ "exerciseId": "550e8400-e29b-41d4-a716-446655440025",
66
+ "canonical": {
67
+ "name": "Barbell Bench Press",
68
+ "slug": "barbell-bench-press",
69
+ "description": "A fundamental compound pushing exercise that primarily targets the pectoralis major while engaging the anterior deltoids and triceps. The barbell bench press is essential for building upper body pushing strength and chest development.",
70
+ "aliases": ["bench press", "flat bench press", "barbell press"]
71
+ },
72
+ "classification": {
73
+ "exerciseType": "strength",
74
+ "movement": "push-horizontal",
75
+ "mechanics": "compound",
76
+ "force": "push",
77
+ "level": "intermediate"
78
+ },
79
+ "targets": {
80
+ "primary": [
81
+ {
82
+ "id": "c3d4e5f6-3333-4000-8000-000000000020",
83
+ "name": "Chest",
84
+ "slug": "chest",
85
+ "categoryId": "a1b2c3d4-1111-4000-8000-000000000003"
86
+ }
87
+ ],
88
+ "secondary": [
89
+ {
90
+ "id": "c3d4e5f6-3333-4000-8000-000000000040",
91
+ "name": "Anterior Deltoid",
92
+ "slug": "anterior-deltoid",
93
+ "categoryId": "a1b2c3d4-1111-4000-8000-000000000008"
94
+ },
95
+ {
96
+ "id": "c3d4e5f6-3333-4000-8000-000000000003",
97
+ "name": "Triceps",
98
+ "slug": "triceps",
99
+ "categoryId": "a1b2c3d4-1111-4000-8000-000000000001"
100
+ }
101
+ ]
102
+ },
103
+ "equipment": {
104
+ "required": [
105
+ {
106
+ "id": "b2c3d4e5-2222-4000-8000-000000000003",
107
+ "name": "Barbell",
108
+ "slug": "barbell"
109
+ }
110
+ ],
111
+ "optional": [
112
+ {
113
+ "id": "b2c3d4e5-2222-4000-8000-000000000031",
114
+ "name": "Power Rack",
115
+ "slug": "power-rack"
116
+ }
117
+ ]
118
+ },
119
+ "metrics": {
120
+ "primary": {
121
+ "type": "reps",
122
+ "unit": "count"
123
+ },
124
+ "secondary": [
125
+ {
126
+ "type": "weight",
127
+ "unit": "kg"
128
+ }
129
+ ]
130
+ },
131
+ "media": [
132
+ {
133
+ "type": "image",
134
+ "uri": "file:///path/to/animations/0025.gif"
135
+ }
136
+ ],
137
+ "metadata": {
138
+ "createdAt": "2026-01-25T00:00:00Z",
139
+ "updatedAt": "2026-01-25T00:00:00Z",
140
+ "status": "draft",
141
+ "source": "exercises-db-import",
142
+ "externalRefs": [
143
+ {
144
+ "system": "legacy-exercises-db",
145
+ "id": "0025"
146
+ }
147
+ ]
148
+ }
149
+ },
150
+ {
151
+ "schemaVersion": "1.0.0",
152
+ "exerciseId": "550e8400-e29b-41d4-a716-446655440007",
153
+ "canonical": {
154
+ "name": "Alternate Lateral Pulldown",
155
+ "slug": "alternate-lateral-pulldown",
156
+ "description": "A unilateral cable exercise that targets the latissimus dorsi with alternating arm pulls. This variation allows for focused muscle engagement on each side, helping to address muscle imbalances while building back width.",
157
+ "aliases": ["alternating lat pulldown", "single arm pulldown", "unilateral pulldown"]
158
+ },
159
+ "classification": {
160
+ "exerciseType": "strength",
161
+ "movement": "pull-vertical",
162
+ "mechanics": "compound",
163
+ "force": "pull",
164
+ "level": "intermediate",
165
+ "unilateral": true
166
+ },
167
+ "targets": {
168
+ "primary": [
169
+ {
170
+ "id": "c3d4e5f6-3333-4000-8000-000000000015",
171
+ "name": "Latissimus Dorsi",
172
+ "slug": "latissimus-dorsi",
173
+ "categoryId": "a1b2c3d4-1111-4000-8000-000000000002"
174
+ }
175
+ ],
176
+ "secondary": [
177
+ {
178
+ "id": "c3d4e5f6-3333-4000-8000-000000000004",
179
+ "name": "Biceps Brachii",
180
+ "slug": "biceps-brachii",
181
+ "categoryId": "a1b2c3d4-1111-4000-8000-000000000001"
182
+ }
183
+ ]
184
+ },
185
+ "equipment": {
186
+ "required": [
187
+ {
188
+ "id": "b2c3d4e5-2222-4000-8000-000000000009",
189
+ "name": "Cable Machine",
190
+ "slug": "cable-machine"
191
+ }
192
+ ]
193
+ },
194
+ "metrics": {
195
+ "primary": {
196
+ "type": "reps",
197
+ "unit": "count"
198
+ },
199
+ "secondary": [
200
+ {
201
+ "type": "weight",
202
+ "unit": "kg"
203
+ }
204
+ ]
205
+ },
206
+ "media": [
207
+ {
208
+ "type": "image",
209
+ "uri": "file:///path/to/animations/0007.gif"
210
+ }
211
+ ],
212
+ "metadata": {
213
+ "createdAt": "2026-01-25T00:00:00Z",
214
+ "updatedAt": "2026-01-25T00:00:00Z",
215
+ "status": "draft",
216
+ "source": "exercises-db-import",
217
+ "externalRefs": [
218
+ {
219
+ "system": "legacy-exercises-db",
220
+ "id": "0007"
221
+ }
222
+ ]
223
+ }
224
+ }
225
+ ]
@@ -0,0 +1,167 @@
1
+ {
2
+ "$schema": "https://spec.vitness.me/schemas/transformer/v1.0.0/mapping.schema.json",
3
+ "version": "1.0.0",
4
+ "targetSchema": {
5
+ "version": "1.0.0",
6
+ "entity": "exercise"
7
+ },
8
+ "registries": {
9
+ "muscles": {
10
+ "source": "local",
11
+ "local": "../../fds-transformer/registries/muscles.registry.json"
12
+ },
13
+ "equipment": {
14
+ "source": "local",
15
+ "local": "../../fds-transformer/registries/equipment.registry.json"
16
+ },
17
+ "muscleCategories": {
18
+ "source": "local",
19
+ "local": "../../fds-transformer/registries/muscle-categories.registry.json"
20
+ }
21
+ },
22
+ "mappings": {
23
+ "schemaVersion": {
24
+ "default": "1.0.0"
25
+ },
26
+ "exerciseId": {
27
+ "from": null,
28
+ "transform": "uuid"
29
+ },
30
+ "canonical.name": {
31
+ "from": "name",
32
+ "transform": "titleCase"
33
+ },
34
+ "canonical.slug": {
35
+ "from": "name",
36
+ "transform": "slugify"
37
+ },
38
+ "canonical.description": {
39
+ "from": null,
40
+ "enrichment": {
41
+ "enabled": true,
42
+ "prompt": "exercise_description",
43
+ "context": ["name", "bodyPart", "target", "equipment"],
44
+ "when": "missing"
45
+ }
46
+ },
47
+ "canonical.aliases": {
48
+ "from": null,
49
+ "enrichment": {
50
+ "enabled": true,
51
+ "prompt": "exercise_description",
52
+ "context": ["name"],
53
+ "fields": ["aliases"],
54
+ "when": "missing"
55
+ }
56
+ },
57
+ "classification": {
58
+ "from": null,
59
+ "enrichment": {
60
+ "enabled": true,
61
+ "prompt": "exercise_classification",
62
+ "context": ["name", "bodyPart", "target", "equipment"],
63
+ "fields": ["exerciseType", "movement", "mechanics", "force", "level"]
64
+ }
65
+ },
66
+ "targets.primary": {
67
+ "from": "target",
68
+ "transform": "registryLookup",
69
+ "options": {
70
+ "registry": "muscles",
71
+ "matchField": "name",
72
+ "fuzzyMatch": true,
73
+ "toArray": true
74
+ }
75
+ },
76
+ "equipment.required": {
77
+ "from": "equipment",
78
+ "transform": "registryLookup",
79
+ "options": {
80
+ "registry": "equipment",
81
+ "matchField": "name",
82
+ "fuzzyMatch": true,
83
+ "toArray": true
84
+ }
85
+ },
86
+ "metrics": {
87
+ "from": null,
88
+ "enrichment": {
89
+ "enabled": true,
90
+ "prompt": "exercise_metrics",
91
+ "context": ["name", "classification.exerciseType", "classification.movement"]
92
+ }
93
+ },
94
+ "media": {
95
+ "from": "gifUrl",
96
+ "transform": "toMediaArray",
97
+ "options": {
98
+ "type": "image",
99
+ "urlTransform": {
100
+ "pattern": "http://d205bpvrqc9yn1.cloudfront.net/(\\d+)\\.gif",
101
+ "replace": "file:///path/to/animations/$1.gif"
102
+ }
103
+ }
104
+ },
105
+ "metadata.createdAt": {
106
+ "transform": "timestamp",
107
+ "options": {
108
+ "format": "iso8601"
109
+ }
110
+ },
111
+ "metadata.updatedAt": {
112
+ "transform": "timestamp",
113
+ "options": {
114
+ "format": "iso8601"
115
+ }
116
+ },
117
+ "metadata.status": {
118
+ "default": "draft"
119
+ },
120
+ "metadata.source": {
121
+ "default": "exercises-db-import"
122
+ },
123
+ "metadata.externalRefs": {
124
+ "from": "id",
125
+ "transform": "template",
126
+ "options": {
127
+ "template": [
128
+ {
129
+ "system": "legacy-exercises-db",
130
+ "id": "{{value}}"
131
+ }
132
+ ]
133
+ }
134
+ }
135
+ },
136
+ "enrichment": {
137
+ "enabled": true,
138
+ "provider": "openrouter",
139
+ "model": "anthropic/claude-3.5-sonnet",
140
+ "options": {
141
+ "temperature": 0.3,
142
+ "maxRetries": 3,
143
+ "rateLimit": {
144
+ "requestsPerMinute": 60
145
+ }
146
+ },
147
+ "batch": {
148
+ "enabled": true,
149
+ "concurrency": 5,
150
+ "chunkSize": 10
151
+ },
152
+ "defaultFields": "all"
153
+ },
154
+ "validation": {
155
+ "enabled": true,
156
+ "strict": true,
157
+ "failOnError": false,
158
+ "outputErrors": "./errors.json"
159
+ },
160
+ "output": {
161
+ "format": "json",
162
+ "pretty": true,
163
+ "directory": "./output/exercises/",
164
+ "naming": "{{slug}}.json",
165
+ "singleFile": false
166
+ }
167
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "$comment": "Example source schema: Simple exercise database format",
3
+ "schema": {
4
+ "type": "array",
5
+ "items": {
6
+ "type": "object",
7
+ "properties": {
8
+ "id": {
9
+ "type": "string",
10
+ "description": "Unique identifier (typically numeric string)"
11
+ },
12
+ "name": {
13
+ "type": "string",
14
+ "description": "Exercise name"
15
+ },
16
+ "bodyPart": {
17
+ "type": "string",
18
+ "description": "General body region",
19
+ "enum": ["waist", "upper legs", "back", "chest", "upper arms", "shoulders", "lower legs", "lower arms", "neck", "cardio"]
20
+ },
21
+ "equipment": {
22
+ "type": "string",
23
+ "description": "Equipment needed",
24
+ "enum": ["body weight", "barbell", "dumbbell", "cable", "machine", "kettlebell", "band", "medicine ball", "stability ball", "other"]
25
+ },
26
+ "target": {
27
+ "type": "string",
28
+ "description": "Primary target muscle",
29
+ "enum": ["abs", "quads", "lats", "pectorals", "biceps", "delts", "triceps", "hamstrings", "glutes", "calves", "forearms", "traps", "cardiovascular system"]
30
+ },
31
+ "gifUrl": {
32
+ "type": "string",
33
+ "description": "URL to exercise animation GIF"
34
+ }
35
+ },
36
+ "required": ["id", "name", "bodyPart", "equipment", "target", "gifUrl"]
37
+ }
38
+ },
39
+ "examples": [
40
+ {
41
+ "id": "0001",
42
+ "name": "3/4 sit-up",
43
+ "bodyPart": "waist",
44
+ "equipment": "body weight",
45
+ "target": "abs",
46
+ "gifUrl": "http://d205bpvrqc9yn1.cloudfront.net/0001.gif"
47
+ },
48
+ {
49
+ "id": "0025",
50
+ "name": "barbell bench press",
51
+ "bodyPart": "chest",
52
+ "equipment": "barbell",
53
+ "target": "pectorals",
54
+ "gifUrl": "http://d205bpvrqc9yn1.cloudfront.net/0025.gif"
55
+ },
56
+ {
57
+ "id": "0007",
58
+ "name": "alternate lateral pulldown",
59
+ "bodyPart": "back",
60
+ "equipment": "cable",
61
+ "target": "lats",
62
+ "gifUrl": "http://d205bpvrqc9yn1.cloudfront.net/0007.gif"
63
+ }
64
+ ]
65
+ }