الدليل ← Skill
SkilloptionalHermes Optional Skills

Fitness Nutrition

Fitness Nutrition: مهارة ينشرها Hailey Marshall (haileymarshall), Hermes Agent. مجالها الصحة واللياقة. يوفّر السجل أمر تثبيت جاهزًا يظهر في هذه الصفحة. الرخصة MIT. الإصدار الموثّق 1.0.0. تُفعَّل بأمر `hermes skills install fitness-nutrition` بعد مراجعة ما تطلبه. تدعم: linux، macos، windows.

healthfitnessnutritiongymworkoutdietexerciseOptional
آخر تحقق من السجل2026-08-18v1.0.0Hailey Marshall (haileymarshall), Hermes Agent
افتح المصدر الأصلي ↗Read in English
المعنى ببساطة

ماذا يضيف إلى Hermes؟

Fitness Nutrition: مهارة ينشرها Hailey Marshall (haileymarshall), Hermes Agent. مجالها الصحة واللياقة. يوفّر السجل أمر تثبيت جاهزًا يظهر في هذه الصفحة. الرخصة MIT. الإصدار الموثّق 1.0.0. تُفعَّل بأمر hermes skills install fitness-nutrition بعد مراجعة ما تطلبه. تدعم: linux، macos، windows.

Fitness Nutrition هي مهارة مرتبطة بمجال توسيع قدرات الوكيل. يضيف قدرة أو سير عمل إلى Hermes. الوصف الأصلي يحدد التفاصيل، بينما تحدد الصلاحيات ما يستطيع فعله فعليًا.

هذا تفسير مبسّط مبني على وصف الناشر. أبقينا الوصف الإنجليزي بجانبه حتى تستطيع مقارنة المعنى بالمصدر.

استخدمه عندما

استخدمه عندما يكون هدفك واضحًا في توسيع قدرات الوكيل وتستطيع تحديد البيانات والأفعال التي يحتاجها فقط.

لا تحتاجه عندما

لا تضفه لمجرد التجربة إذا كان لديك طريق أبسط داخل Hermes، أو إذا لم تستطع مراجعة المصدر والصلاحيات.

لمن يناسب؟

مناسب لمن يريد طريقة عمل قابلة للتكرار داخل Hermes.

أول اختبار آمن

ابدأ ببيانات غير حساسة ومهمة صغيرة يمكن التحقق من نتيجتها والتراجع عنها.

الوصف الأصلي من الناشر، من دون ترجمة تغيّر المعنى

Workout planning, macros, and body metrics via wger/USDA

✓
مصدر البيانات

فُهرس هذا الإدخال من Hermes Optional Skills. الشرح العربي يفسّر النوع والمجال ولا يضيف وظيفة غير مذكورة في المصدر.

!
مراجعة الأمان

المصدر رسمي أو خضع لمراجعة تحريرية، لكن ذلك لا يغني عن مراجعة الصلاحيات والإصدار.

مسار تثبيت آمن

افحص، ثبّت، ثم اختبر.

  1. 01
    افتح المصدر

    طابق اسم الناشر والرخصة والوصف مع حاجتك، وراجع آخر تحديث فعلي.

  2. 02
    راجع الصلاحيات والأسرار

    لا تلصق قيمة سر داخل الموقع. استخدم أسماء متغيرات البيئة وامنح أقل نطاق ممكن.

  3. 03
    انسخ الإعداد فقط بعد المراجعة

    الأزرار أدناه تنسخ نصًا إلى الحافظة ولا تشغّل أمرًا على جهازك.

  4. 04
    اختبر بمهمة غير حساسة

    تحقق من الأدوات الظاهرة، ثم استبعد أدوات الكتابة أو الحذف التي لا تحتاجها.

أمر التثبيت

راجع الأمر ثم انسخه.

hermes skills install fitness-nutrition

لا ينفّذ Hermes بالعربي هذا الأمر. التثبيت يحدث داخل جهازك ويظل خاضعًا لفحص Hermes ومراجعتك.

تعريف المهارة كاملًا

ما الذي يحمّله Hermes بالضبط عند تشغيل هذه المهارة.

منقول من التوثيق الرسمي. اقرأه قبل تفعيل المهارة، فهذا النص يصبح تعليمات الوكيل نفسه.

Workout planning, macros, and body metrics via wger/USDA.

Skill metadata

جدول مرجعي. لا تقرأه كله، ابحث عن السطر الذي يخصّك فقط.

SourceOptional — install with hermes skills install official/health/fitness-nutrition
Pathoptional-skills/health/fitness-nutrition
Version1.0.0
AuthorHailey Marshall (haileymarshall), Hermes Agent
LicenseMIT
Platformslinux, macos, windows
Tagshealth, fitness, nutrition, gym, workout, diet, exercise

Reference: full SKILL.md

إعدادات تضبطها مرة وتنساها. غيّر واحدًا في كل مرة حتى تعرف أثر كل تغيير. تضبط DEMO_KEY خارج المحادثة، في بيئة التشغيل.

Expert fitness coach and sports nutritionist skill. Two data sources plus offline calculators — everything a gym-goer needs in one place.

Data sources (all free, no pip dependencies):

  • wger (https://wger.de/api/v2/) — open exercise database, 690+ exercises with muscles, equipment, images. Public endpoints need zero authentication.
  • 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.

Offline calculators (pure stdlib Python):

  • BMI, TDEE (Mifflin-St Jeor), one-rep max (Epley/Brzycki/Lombardi), macro splits, body fat % (US Navy method)

---

When to Use

شرح للفكرة نفسها. اقرأه ببطء، فبقية الأقسام تبني عليه.

Trigger this skill when the user asks about:

  • Exercises, workouts, gym routines, muscle groups, workout splits
  • Food macros, calories, protein content, meal planning, calorie counting
  • Body composition: BMI, body fat, TDEE, caloric surplus/deficit
  • One-rep max estimates, training percentages, progressive overload
  • Macro ratios for cutting, bulking, or maintenance

---

Procedure

جدول مرجعي. لا تقرأه كله، ابحث عن السطر الذي يخصّك فقط.

Exercise Lookup (wger API)

All wger public endpoints return JSON and require no auth. Always add format=json and language=2 (English) to exercise queries.

Step 1 — Identify what the user wants:

  • By muscle → use /api/v2/exercise/?muscles={id}&language=2&status=2&format=json
  • By category → use /api/v2/exercise/?category={id}&language=2&status=2&format=json
  • By equipment → use /api/v2/exercise/?equipment={id}&language=2&status=2&format=json
  • By name → use /api/v2/exercise/search/?term={query}&language=english&format=json
  • Full details → use /api/v2/exerciseinfo/{exercise_id}/?format=json

Step 2 — Reference IDs (so you don't need extra API calls):

Exercise categories:

IDCategory
8Arms
9Legs
10Abs
11Chest
12Back
13Shoulders
14Calves
15Cardio

Muscles:

IDMuscleIDMuscle
1Biceps brachii2Anterior deltoid
3Serratus anterior4Pectoralis major
5Obliquus externus6Gastrocnemius
7Rectus abdominis8Gluteus maximus
9Trapezius10Quadriceps femoris
11Biceps femoris12Latissimus dorsi
13Brachialis14Triceps brachii
15Soleus

Equipment:

IDEquipment
1Barbell
3Dumbbell
4Gym mat
5Swiss Ball
6Pull-up bar
7none (bodyweight)
8Bench
9Incline bench
10Kettlebell

Step 3 — Fetch and present results:

Shell11 سطرًا
# Search exercises by name
QUERY="$1"
ENCODED=$(python3 -c "import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))" "$QUERY")
curl -s "https://wger.de/api/v2/exercise/search/?term=${ENCODED}&language=english&format=json" \
  | python3 -c "

data=json.load(sys.stdin)
for s in data.get('suggestions',[])[:10]:
    d=s.get('data',{})
    print(f\"  ID {d.get('id','?'):>4} | {d.get('name','N/A'):<35} | Category: {d.get('category','N/A')}\")
"
Shell18 سطرًا
# Get full details for a specific exercise
EXERCISE_ID="$1"
curl -s "https://wger.de/api/v2/exerciseinfo/${EXERCISE_ID}/?format=json" \
  | python3 -c "

data=json.load(sys.stdin)
trans=[t for t in data.get('translations',[]) if t.get('language')==2]
t=trans[0] if trans else data.get('translations',[{}])[0]
desc=re.sub('<[^>]+>','',html.unescape(t.get('description','N/A')))
print(f\"Exercise  : {t.get('name','N/A')}\")
print(f\"Category  : {data.get('category',{}).get('name','N/A')}\")
print(f\"Primary   : {', '.join(m.get('name_en','') for m in data.get('muscles',[])) or 'N/A'}\")
print(f\"Secondary : {', '.join(m.get('name_en','') for m in data.get('muscles_secondary',[])) or 'none'}\")
print(f\"Equipment : {', '.join(e.get('name','') for e in data.get('equipment',[])) or 'bodyweight'}\")
print(f\"How to    : {desc[:500]}\")
imgs=data.get('images',[])
if imgs: print(f\"Image     : {imgs[0].get('image','')}\")
"
Shell11 سطرًا
# List exercises filtering by muscle, category, or equipment
# Combine filters as needed: ?muscles=4&equipment=1&language=2&status=2
FILTER="$1"  # e.g. "muscles=4" or "category=11" or "equipment=3"
curl -s "https://wger.de/api/v2/exercise/?${FILTER}&language=2&status=2&limit=20&format=json" \
  | python3 -c "

data=json.load(sys.stdin)
print(f'Found {data.get(\"count\",0)} exercises.')
for ex in data.get('results',[]):
    print(f\"  ID {ex['id']:>4} | muscles: {ex.get('muscles',[])} | equipment: {ex.get('equipment',[])}\")
"

Nutrition Lookup (USDA FoodData Central)

Uses USDA_API_KEY env var if set, otherwise falls back to DEMO_KEY. DEMO_KEY = 30 requests/hour. Free signup key = 1,000 requests/hour.

Shell19 سطرًا
# Search foods by name
FOOD="$1"
API_KEY="${USDA_API_KEY:-DEMO_KEY}"
ENCODED=$(python3 -c "import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))" "$FOOD")
curl -s "https://api.nal.usda.gov/fdc/v1/foods/search?api_key=${API_KEY}&query=${ENCODED}&pageSize=5&dataType=Foundation,SR%20Legacy" \
  | python3 -c "

data=json.load(sys.stdin)
foods=data.get('foods',[])
if not foods: print('No foods found.'); sys.exit()
for f in foods:
    n={x['nutrientName']:x.get('value','?') for x in f.get('foodNutrients',[])}
    cal=n.get('Energy','?'); prot=n.get('Protein','?')
    fat=n.get('Total lipid (fat)','?'); carb=n.get('Carbohydrate, by difference','?')
    print(f\"{f.get('description','N/A')}\")
    print(f\"  Per 100g: {cal} kcal | {prot}g protein | {fat}g fat | {carb}g carbs\")
    print(f\"  FDC ID: {f.get('fdcId','N/A')}\")
    print()
"
Shell15 سطرًا
# Detailed nutrient profile by FDC ID
FDC_ID="$1"
API_KEY="${USDA_API_KEY:-DEMO_KEY}"
curl -s "https://api.nal.usda.gov/fdc/v1/food/${FDC_ID}?api_key=${API_KEY}" \
  | python3 -c "

d=json.load(sys.stdin)
print(f\"Food: {d.get('description','N/A')}\")
print(f\"{'Nutrient':<40} {'Amount':>8} {'Unit'}\")
print('-'*56)
for x in sorted(d.get('foodNutrients',[]),key=lambda x:x.get('nutrient',{}).get('rank',9999)):
    nut=x.get('nutrient',{}); amt=x.get('amount',0)
    if amt and float(amt)>0:
        print(f\"  {nut.get('name',''):<38} {amt:>8} {nut.get('unitName','')}\")
"

Offline Calculators

Use the helper scripts in scripts/ for batch operations, or run inline for single calculations:

  • python3 scripts/body_calc.py bmi <weight_kg> <height_cm>
  • python3 scripts/body_calc.py tdee <weight_kg> <height_cm> <age> <M|F> <activity 1-5>
  • python3 scripts/body_calc.py 1rm <weight> <reps>
  • python3 scripts/body_calc.py macros <tdee_kcal> <cut|maintain|bulk>
  • python3 scripts/body_calc.py bodyfat <M|F> <neck_cm> <waist_cm> [hip_cm] <height_cm>

See references/FORMULAS.md for the science behind each formula.

---

Pitfalls

إعدادات تضبطها مرة وتنساها. غيّر واحدًا في كل مرة حتى تعرف أثر كل تغيير. تضبط DEMO_KEY خارج المحادثة، في بيئة التشغيل.

  • wger exercise endpoint returns all languages by default — always add language=2 for English
  • wger includes unverified user submissions — add status=2 to only get approved exercises
  • USDA DEMO_KEY has 30 req/hour — add sleep 2 between batch requests or get a free key
  • USDA data is per 100g — remind users to scale to their actual portion size
  • BMI does not distinguish muscle from fat — high BMI in muscular people is not necessarily unhealthy
  • Body fat formulas are estimates (±3-5%) — recommend DEXA scans for precision
  • 1RM formulas lose accuracy above 10 reps — use sets of 3-5 for best estimates
  • wger's exercise/search endpoint uses term not query as the parameter name

---

Verification

شرح للفكرة نفسها. اقرأه ببطء، فبقية الأقسام تبني عليه.

After running exercise search: confirm results include exercise names, muscle groups, and equipment. After nutrition lookup: confirm per-100g macros are returned with kcal, protein, fat, carbs. After calculators: sanity-check outputs (e.g. TDEE should be 1500-3500 for most adults).

---

Quick Reference

جدول مرجعي. لا تقرأه كله، ابحث عن السطر الذي يخصّك فقط.

TaskSourceEndpoint
Search exercises by namewgerGET /api/v2/exercise/search/?term=&language=english
Exercise detailswgerGET /api/v2/exerciseinfo/{id}/
Filter by musclewgerGET /api/v2/exercise/?muscles={id}&language=2&status=2
Filter by equipmentwgerGET /api/v2/exercise/?equipment={id}&language=2&status=2
List categorieswgerGET /api/v2/exercisecategory/
List muscleswgerGET /api/v2/muscle/
Search foodsUSDAGET /fdc/v1/foods/search?query=&dataType=Foundation,SR Legacy
Food detailsUSDAGET /fdc/v1/food/{fdcId}
BMI / TDEE / 1RM / macrosofflinepython3 scripts/body_calc.py