Expertise·Productivity & Workflow·v1.0.0

Fitness & Nutrition

>.

You say
Buy it · $59 Read it before you buy $59 Written by decodedbyrajat · unverified publisher
Context cost
5.6k tokensestimated from the bundle, loaded when it triggers
Bundle
4 files · 22.4 kB2 scripts among them — read before you run
Licence
MITpaid listing
Last change
v1.0.0
Servers it uses
Noneruns standalone

What it does

Gym workout planner and nutrition tracker. Search 690+ exercises by muscle, equipment, or category via wger. Look up macros and calories for 380,000+ foods via USDA FoodData Central. Compute BMI, TDEE, one-rep max, macro splits, and body fat — pure Python, no pip installs. Built for anyone chasing gains, cutting weight, or just trying to eat better.

Installed, it changes the agent in these ways.

What this skill changes about the agent is not written down here yet. The listing was collected from its source, and the description is in its own SKILL.md.

Expertise

Domain judgement the base model does not have.

The skill itself

This is the whole product. A skill is instructions the model reads, so there is nothing behind the listing you cannot see first — the front matter loads with every session, and the body below it loads when the skill triggers.

SKILL.md10.1 kB · 255 lines
--- name: fitness-nutrition description: > Gym workout planner and nutrition tracker. Search 690+ exercises by muscle, equipment, or category via wger. Look up macros and calories for 380,000+ foods via USDA FoodData Central. Compute BMI, TDEE, one-rep max, macro splits, and body fat — pure Python, no pip installs. Built for anyone chasing gains, cutting weight, or just trying to eat better. version: 1.0.0 authors: - haileymarshall license: MIT metadata: robin: tags: [health, fitness, nutrition, gym, workout, diet, exercise] category: health prerequisites: commands: [curl, python3] required_environment_variables: - name: USDA_API_KEY prompt: "USDA FoodData Central API key (free)" help: "Get one free at https://fdc.nal.usda.gov/api-key-signup/ — or skip to use DEMO_KEY with lower rate limits" required_for: "higher rate limits on food/nutrition lookups (DEMO_KEY works without signup)" optional: true ---
27# Fitness & Nutrition
28
29Expert fitness coach and sports nutritionist skill. Two data sources
30plus offline calculators — everything a gym-goer needs in one place.
31
32**Data sources (all free, no pip dependencies):**
33
34- **wger** (https://wger.de/api/v2/) — open exercise database, 690+ exercises with muscles, equipment, images. Public endpoints need zero authentication.
35- **USDA FoodData Central** (https://api.nal.usda.gov/fdc/v1/) — US government nutrition database, 380,000+ foods. DEMO_KEY works instantly; free signup for higher limits.
36
37**Offline calculators (pure stdlib Python):**
38
39- BMI, TDEE (Mifflin-St Jeor), one-rep max (Epley/Brzycki/Lombardi), macro splits, body fat % (US Navy method)
40
41---
42
43## When to Use
44
45Trigger this skill when the user asks about:
46- Exercises, workouts, gym routines, muscle groups, workout splits
47- Food macros, calories, protein content, meal planning, calorie counting
48- Body composition: BMI, body fat, TDEE, caloric surplus/deficit
49- One-rep max estimates, training percentages, progressive overload
50- Macro ratios for cutting, bulking, or maintenance
51
52---
53
54## Procedure
55
56### Exercise Lookup (wger API)
57
58All wger public endpoints return JSON and require no auth. Always add
59format=json and language=2 (English) to exercise queries.
60
61**Step 1 — Identify what the user wants:**
62
63- By muscle → use /api/v2/exercise/?muscles={id}&language=2&status=2&format=json
64- By category → use /api/v2/exercise/?category={id}&language=2&status=2&format=json
65- By equipment → use /api/v2/exercise/?equipment={id}&language=2&status=2&format=json
66- By name → use /api/v2/exercise/search/?term={query}&language=english&format=json
67- Full details → use /api/v2/exerciseinfo/{exercise_id}/?format=json
68
69**Step 2 — Reference IDs (so you don't need extra API calls):**
70
71Exercise categories:
72
73| ID | Category |
74|----|-------------|
75| 8 | Arms |
76| 9 | Legs |
77| 10 | Abs |
78| 11 | Chest |
79| 12 | Back |
80| 13 | Shoulders |
81| 14 | Calves |
82| 15 | Cardio |
83
84Muscles:
85
86| ID | Muscle | ID | Muscle |
87|----|---------------------------|----|-------------------------|
88| 1 | Biceps brachii | 2 | Anterior deltoid |
89| 3 | Serratus anterior | 4 | Pectoralis major |
90| 5 | Obliquus externus | 6 | Gastrocnemius |
91| 7 | Rectus abdominis | 8 | Gluteus maximus |
92| 9 | Trapezius | 10 | Quadriceps femoris |
93| 11 | Biceps femoris | 12 | Latissimus dorsi |
94| 13 | Brachialis | 14 | Triceps brachii |
95| 15 | Soleus | | |
96
97Equipment:
98
99| ID | Equipment |
100|----|----------------|
101| 1 | Barbell |
102| 3 | Dumbbell |
103| 4 | Gym mat |
104| 5 | Swiss Ball |
105| 6 | Pull-up bar |
106| 7 | none (bodyweight) |
107| 8 | Bench |
108| 9 | Incline bench |
109| 10 | Kettlebell |
110
111**Step 3 — Fetch and present results:**
112
113```bash
114# Search exercises by name
115QUERY="$1"
116ENCODED=$(python3 -c "import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))" "$QUERY")
117curl -s "https://wger.de/api/v2/exercise/search/?term=${ENCODED}&language=english&format=json" \
118 | python3 -c "
119import json,sys
120data=json.load(sys.stdin)
121for s in data.get('suggestions',[])[:10]:
122 d=s.get('data',{})
123 print(f\" ID {d.get('id','?'):>4} | {d.get('name','N/A'):<35} | Category: {d.get('category','N/A')}\")
124"
125```
126
127```bash
128# Get full details for a specific exercise
129EXERCISE_ID="$1"
130curl -s "https://wger.de/api/v2/exerciseinfo/${EXERCISE_ID}/?format=json" \
131 | python3 -c "
132import json,sys,html,re
133data=json.load(sys.stdin)
134trans=[t for t in data.get('translations',[]) if t.get('language')==2]
135t=trans[0] if trans else data.get('translations',[{}])[0]
136desc=re.sub('<[^>]+>','',html.unescape(t.get('description','N/A')))
137print(f\"Exercise : {t.get('name','N/A')}\")
138print(f\"Category : {data.get('category',{}).get('name','N/A')}\")
139print(f\"Primary : {', '.join(m.get('name_en','') for m in data.get('muscles',[])) or 'N/A'}\")
140print(f\"Secondary : {', '.join(m.get('name_en','') for m in data.get('muscles_secondary',[])) or 'none'}\")
141print(f\"Equipment : {', '.join(e.get('name','') for e in data.get('equipment',[])) or 'bodyweight'}\")
142print(f\"How to : {desc[:500]}\")
143imgs=data.get('images',[])
144if imgs: print(f\"Image : {imgs[0].get('image','')}\")
145"
146```
147
148```bash
149# List exercises filtering by muscle, category, or equipment
150# Combine filters as needed: ?muscles=4&equipment=1&language=2&status=2
151FILTER="$1" # e.g. "muscles=4" or "category=11" or "equipment=3"
152curl -s "https://wger.de/api/v2/exercise/?${FILTER}&language=2&status=2&limit=20&format=json" \
153 | python3 -c "
154import json,sys
155data=json.load(sys.stdin)
156print(f'Found {data.get(\"count\",0)} exercises.')
157for ex in data.get('results',[]):
158 print(f\" ID {ex['id']:>4} | muscles: {ex.get('muscles',[])} | equipment: {ex.get('equipment',[])}\")
159"
160```
161
162### Nutrition Lookup (USDA FoodData Central)
163
164Uses USDA_API_KEY env var if set, otherwise falls back to DEMO_KEY.
165DEMO_KEY = 30 requests/hour. Free signup key = 1,000 requests/hour.
166
167```bash
168# Search foods by name
169FOOD="$1"
170API_KEY="${USDA_API_KEY:-DEMO_KEY}"
171ENCODED=$(python3 -c "import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))" "$FOOD")
172curl -s "https://api.nal.usda.gov/fdc/v1/foods/search?api_key=${API_KEY}&query=${ENCODED}&pageSize=5&dataType=Foundation,SR%20Legacy" \
173 | python3 -c "
174import json,sys
175data=json.load(sys.stdin)
176foods=data.get('foods',[])
177if not foods: print('No foods found.'); sys.exit()
178for f in foods:
179 n={x['nutrientName']:x.get('value','?') for x in f.get('foodNutrients',[])}
180 cal=n.get('Energy','?'); prot=n.get('Protein','?')
181 fat=n.get('Total lipid (fat)','?'); carb=n.get('Carbohydrate, by difference','?')
182 print(f\"{f.get('description','N/A')}\")
183 print(f\" Per 100g: {cal} kcal | {prot}g protein | {fat}g fat | {carb}g carbs\")
184 print(f\" FDC ID: {f.get('fdcId','N/A')}\")
185 print()
186"
187```
188
189```bash
190# Detailed nutrient profile by FDC ID
191FDC_ID="$1"
192API_KEY="${USDA_API_KEY:-DEMO_KEY}"
193curl -s "https://api.nal.usda.gov/fdc/v1/food/${FDC_ID}?api_key=${API_KEY}" \
194 | python3 -c "
195import json,sys
196d=json.load(sys.stdin)
197print(f\"Food: {d.get('description','N/A')}\")
198print(f\"{'Nutrient':<40} {'Amount':>8} {'Unit'}\")
199print('-'*56)
200for x in sorted(d.get('foodNutrients',[]),key=lambda x:x.get('nutrient',{}).get('rank',9999)):
201 nut=x.get('nutrient',{}); amt=x.get('amount',0)
202 if amt and float(amt)>0:
203 print(f\" {nut.get('name',''):<38} {amt:>8} {nut.get('unitName','')}\")
204"
205```
206
207### Offline Calculators
208
209Use the helper scripts in scripts/ for batch operations,
210or run inline for single calculations:
211
212- python3 scripts/body_calc.py bmi <weight_kg> <height_cm>
213- python3 scripts/body_calc.py tdee <weight_kg> <height_cm> <age> <M|F> <activity 1-5>
214- python3 scripts/body_calc.py 1rm <weight> <reps>
215- python3 scripts/body_calc.py macros <tdee_kcal> <cut|maintain|bulk>
216- python3 scripts/body_calc.py bodyfat <M|F> <neck_cm> <waist_cm> [hip_cm] <height_cm>
217
218See references/FORMULAS.md for the science behind each formula.
219
220---
221
222## Pitfalls
223
224- wger exercise endpoint returns **all languages by default** — always add language=2 for English
225- wger includes **unverified user submissions** — add status=2 to only get approved exercises
226- USDA DEMO_KEY has **30 req/hour** — add sleep 2 between batch requests or get a free key
227- USDA data is **per 100g** — remind users to scale to their actual portion size
228- BMI does not distinguish muscle from fat — high BMI in muscular people is not necessarily unhealthy
229- Body fat formulas are **estimates** (±3-5%) — recommend DEXA scans for precision
230- 1RM formulas lose accuracy above 10 reps — use sets of 3-5 for best estimates
231- wger's exercise/search endpoint uses term not query as the parameter name
232
233---
234
235## Verification
236
237After running exercise search: confirm results include exercise names, muscle groups, and equipment.
238After nutrition lookup: confirm per-100g macros are returned with kcal, protein, fat, carbs.
239After calculators: sanity-check outputs (e.g. TDEE should be 1500-3500 for most adults).
240
241---
242
243## Quick Reference
244
245| Task | Source | Endpoint |
246|------|--------|----------|
247| Search exercises by name | wger | GET /api/v2/exercise/search/?term=&language=english |
248| Exercise details | wger | GET /api/v2/exerciseinfo/{id}/ |
249| Filter by muscle | wger | GET /api/v2/exercise/?muscles={id}&language=2&status=2 |
250| Filter by equipment | wger | GET /api/v2/exercise/?equipment={id}&language=2&status=2 |
251| List categories | wger | GET /api/v2/exercisecategory/ |
252| List muscles | wger | GET /api/v2/muscle/ |
253| Search foods | USDA | GET /fdc/v1/foods/search?query=&dataType=Foundation,SR Legacy |
254| Food details | USDA | GET /fdc/v1/food/{fdcId} |
255| BMI / TDEE / 1RM / macros | offline | python3 scripts/body_calc.py |
In the file
SKILL.md1,204 words
Files4
LicenceMIT
Why you can read it

Nothing in a skill executes. The client loads the text and the model follows it, so a skill can be audited the way a runbook is — by reading it.

What it costs in context

Skills are not billed by the call. They are paid for in context: every token the instructions occupy is a token your code, your diff and your conversation cannot use. Here is what this one takes and when it takes it.

≈240
always loaded
The name and description, so the model knows the skill exists and when to reach for it.
5,360
on trigger
The instruction body and 3 supporting files, read only when the skill fires.
2.8%
of a 200k window
Ten skills this size would take about 28% of the window before you open a file.
050k100k150k200k context window

5.6k tokens, estimated from the bundle at four bytes to the token, held for the rest of the session once it triggers. Heavy. Teams tend to install this one per project rather than globally, and load it only when the job comes up.

Servers bill, skills cost

A server charges by the month. A skill charges once per session, in context, and then keeps charging it for as long as the session lives.

Before and after

The same question, put to the same model twice: once as it comes, and once with these instructions loaded.

No worked example has been published for this skill yet.

Adoption
Installsnone yet
Ratingno reviews yet

The procedure it runs

The procedure has not been published here. It is in the skill’s own SKILL.md, which its author has not sent to the marketplace yet.

Prose, not code

These steps are written for a model to follow, not executed by a runtime. It can still be told to skip one, and it will say so when it does.

Servers it uses

None. This skill calls no MCP servers at all.

Everything it needs is in the instructions, so it works in a project with nothing connected — the model reads the file and changes how it works with what it can already reach.

It writes no files and reaches no network. All it changes is how the model reasons and writes.

What it asks for
Writes filesno
Network accessno

Read from the allowed-tools line of this skill’s own SKILL.md. A skill grants no permissions of its own — it can only ask for tools your client already has.

What it will not do

Every skill is narrow, and the useful ones say where they stop. These are the jobs this one is the wrong tool for.

What this skill is not for has not been published here. Nothing is implied by that: it is a section the author has not filled in.

What is in the bundle

4 files, 22.4 kB on disk. Mostly text — the instructions the model reads — with 2 scripts in it that your client would run only if the instructions tell it to.

  • SKILL.md10.1 kB
  • references/FORMULAS.md3.2 kB
  • scripts/body_calc.py6.4 kB
  • scripts/nutrition_search.py2.7 kB
What is not in it

A skill installs nothing and depends on nothing: it is a folder your client reads. This one carries 2 scripts beside the text, so the bundle is 4 files you can review in full before installing. The MIT licence covers the templates and examples as well as the instructions.

Install

Installing copies the bundle into your project. Nothing runs at install time — the files sit on disk until the model reads them.

$59 once
Fitness & Nutrition · MIT · decodedbyrajat
one-time
Price$59 once
LicenceMIT — the author’s, unchanged by this purchase
Paid throughStripe, once, on the card you add at the checkout
Keeps workingfor good — the files are yours once they are on disk
Updatesevery release of 1.x through this account

You can read the whole bundle before paying — the SKILL.md above is the product, not a preview of it. What the money buys is the delivery: the folder packaged and handed to your machine by key, every update its author ships, and our support if it does not do what this listing says. The terms of use are MIT, set by the author and unchanged by buying it here.

Payment runs through Stripe, on a page like this one rather than a redirect. Once there is an account it joins the same mcprush invoice as everything else you run, so there is never a second card to enter.

Which clients pick it up on their own

A skill is a folder of text. A client with a skills folder reads it without being told; everywhere else the same text works, it is just handed to the model rather than found.

Claude Code.claude/skills/
Claude Desktop
ChatGPT
Cursor.cursor/skills/
VS Code.github/skills/
Codex CLI.agents/skills/
Gemini CLI.gemini/skills/
Grok.grok/skills/
Zed.agents/skills/
Windsurf.windsurf/skills/
Agent SDK.claude/skills/
HTTP / API
This release
Version1.0.0
Publishedno release date on file
Price$59
Referencedecodedbyrajat/fitness-nutrition

Versions

v1.0.0 is what is on the shelf; no release here carries a date. Instructions change more often than APIs do — a skill can be rewritten entirely without anything it depends on moving.

v1.0.0
  • No earlier releases have been published to the marketplace.
Pinning

Put decodedbyrajat/fitness-nutrition@1.0.0 in the install command to hold this exact version. Without the suffix you get whatever is current the day you install, and nothing moves under you afterwards.

Reviews

no reviews yet · no installs yet

Nobody has reviewed this skill yet. The rating is the mean of the reviews written here, so there is none until somebody writes the first.

Who can post

Only accounts that have had the skill installed for fourteen days, so a review is written after living with it rather than after reading it. Publishers may reply once.

Who wrote it

DE
decodedbyrajat

Publishes on mcprush.

0 servers listed1 skill listednot claimed
Profile
Publisher
Servers0