Skill: cylqqqcyl/body (version 1.0.0)

--- name: body description: > Physical performance — workouts, fitness tracking, nutrition, meal logging, macros, recipes. Use when the user mentions exercise, lifting, running, training, food, eating, macros, protein, meal planning, or anything related to physical health and performance. Routes to sub-skills: coach (movement/training) or chef (nutrition/food). --- # Body — Physical Performance Router This is the parent skill for Jack's Body dimension. Routes to the right sub-skill based on intent. ## Routing Logic ### → coach/ **Use for:** workouts, lifting sessions, training splits, PRs, recovery, soreness, volume, sleep, running, mobility, Hevy data, "did I train today", "what should I train", "how am I progressing". Triggers: /workout /pr /split /recovery /week /weight ### → chef/ **Use for:** food, eating, meals, macros, protein, calories, recipes, grocery lists, meal plans, nutrition advice, "what should I eat", meal logging, dietary preferences. Triggers: /meal /macros /recipe /mealplan /groceries ## Sub-skill Index | Sub-skill | Path | Handles | |-----------|------|---------| | Coach | `body/coach/SKILL.md` | Training, Hevy integration, PRs, recovery, Body XP | | Chef | `body/chef/SKILL.md` | Nutrition, meal logging, recipes, grocery lists | | Hevy | `body/hevy/SKILL.md` | Raw Hevy API (infrastructure — used by Coach, not called directly) | ## Dimension All XP from body sub-skills maps to the **Body 💪** dimension (STR, CON stats).

path: hevy/references/api_commands.md
content: # Hevy CLI API Commands Reference

## Core Commands

### Workouts
- `hevycli workout list [--since YYYY-MM-DD] [--all] [--output json|table|plain]`
- `hevycli workout get <workout-id> [--output json]`
- `hevycli workout count [--output json]`
- `hevycli workout create --file workout.json`
- `hevycli workout update <id> --file workout.json`
- `hevycli workout delete <id>`
- `hevycli workout start` (interactive session)

### Routines
- `hevycli routine list [--output json]`
- `hevycli routine get <routine-id> [--output json]`
- `hevycli routine create --file routine.json`
- `hevycli routine update <id> --file routine.json`
- `hevycli routine builder` (interactive)

### Exercises
- `hevycli exercise list [--output json]`
- `hevycli exercise get <exercise-id> [--output json]`
- `hevycli exercise search "<query>" [--output json]`
- `hevycli exercise create --title "Exercise Name" --type weight_reps --muscle chest`
- `hevycli exercise interactive` (browse exercises)

### Statistics & Analytics
- `hevycli stats summary [--period week|month|year] [--output json]`
- `hevycli stats progress "<exercise-name>" [--metric weight|1rm] [--output json]`
- `hevycli stats records [--exercise "<name>"] [--output json]`

### Configuration
- `hevycli config init` (interactive setup)
- `hevycli config show`
- `hevycli config set api-key <key>`

## Output Formats

### JSON (Recommended for Agent Use)
```bash
hevycli workout list --output json
```
Returns structured data suitable for parsing and analysis.

### Table (Human-Readable)
```bash
hevycli workout list --output table
```
Default format. Good for console display.

### Plain (Pipe-Delimited)
```bash
hevycli workout list --output plain
```
Simple format for basic parsing.

## Common Patterns

### Recent Activity Analysis
```bash
# Last 7 days
hevycli workout list --since $(date -d '7 days ago' '+%Y-%m-%d') --output json

# Last 30 days
hevycli workout list --since $(date -d '30 days ago' '+%Y-%m-%d') --output json
```

### Progress Tracking
```bash
# Track weight progression
hevycli stats progress "Bench Press" --output json

# Track estimated 1RM
hevycli stats progress "Squat" --metric 1rm --output json
```

### Workout Summary
```bash
# Monthly overview
hevycli stats summary --period month --output json

# Weekly overview
hevycli stats summary --period week --output json
```

## Exit Codes
- 0: Success
- 1: General error
- 2: Invalid arguments
- 3: API authentication error
- 4: API rate limit exceeded
- 5: Network error
- 6: Resource not found
- 7: Validation error

## Environment Variables
- `HEVYCLI_API_KEY`: API key override
- `HEVYCLI_OUTPUT_FORMAT`: Default output format (json|table|plain)
- `HEVYCLI_UNITS`: Units preference (metric|imperial)
- `HEVYCLI_NO_COLOR`: Disable color output (true|false)

path: hevy/references/data_structures.md
content: # Hevy Data Structures & JSON Examples

## Workout Object Structure

```json
{
  "id": "workout_id_123",
  "title": "Push Day",
  "start_time": "2026-02-14T10:00:00Z",
  "end_time": "2026-02-14T11:30:00Z",
  "exercises": [
    {
      "id": "exercise_id_456",
      "title": "Bench Press",
      "muscle_groups": ["chest", "triceps", "shoulders"],
      "exercise_template_id": "template_789",
      "sets": [
        {
          "index": 0,
          "weight_kg": 80,
          "reps": 8,
          "distance_meters": null,
          "duration_seconds": null,
          "rpe": null
        }
      ]
    }
  ],
  "notes": "Great workout today!"
}
```

## Routine Object Structure

```json
{
  "id": "routine_id_123",
  "title": "Push Pull Legs",
  "notes": "3 day split routine",
  "exercises": [
    {
      "exercise_template_id": "template_456",
      "title": "Bench Press",
      "rest_seconds": 180,
      "sets": [
        {
          "reps": 8,
          "weight_kg": 80
        }
      ]
    }
  ]
}
```

## Exercise Template Structure

```json
{
  "id": "template_123",
  "title": "Bench Press",
  "type": "weight_reps",
  "muscle_groups": ["chest", "triceps", "shoulders"],
  "is_custom": false
}
```

## Statistics Response Structure

### Summary Stats
```json
{
  "period": "month",
  "total_workouts": 12,
  "total_duration_minutes": 720,
  "average_duration_minutes": 60,
  "total_volume_kg": 15600,
  "average_volume_kg": 1300
}
```

### Progress Data
```json
{
  "exercise": "Bench Press",
  "metric": "weight",
  "data_points": [
    {
      "date": "2026-01-15",
      "value": 75,
      "volume": 600
    },
    {
      "date": "2026-01-22",
      "value": 77.5,
      "volume": 620
    }
  ]
}
```

### Personal Records
```json
{
  "records": [
    {
      "exercise": "Bench Press",
      "weight_kg": 85,
      "reps": 5,
      "date": "2026-02-10",
      "estimated_1rm_kg": 95.5
    }
  ]
}
```

## Common Query Parameters

### Date Filtering
- `--since YYYY-MM-DD`: Get data from specific date
- `--until YYYY-MM-DD`: Get data until specific date

### Output Control
- `--output json`: Structured JSON output
- `--output table`: Human-readable table
- `--output plain`: Pipe-delimited values

### Statistics Options
- `--period week|month|year`: Time period for summaries
- `--metric weight|1rm`: Progress tracking metric
- `--exercise "Exercise Name"`: Filter by exercise

## Exercise Types

### Weight & Reps
```json
{
  "type": "weight_reps",
  "sets": [
    {
      "weight_kg": 80,
      "reps": 8
    }
  ]
}
```

### Bodyweight
```json
{
  "type": "bodyweight",
  "sets": [
    {
      "reps": 15
    }
  ]
}
```

### Cardio (Time)
```json
{
  "type": "duration",
  "sets": [
    {
      "duration_seconds": 1800
    }
  ]
}
```

### Cardio (Distance)
```json
{
  "type": "distance_duration",
  "sets": [
    {
      "distance_meters": 5000,
      "duration_seconds": 1500
    }
  ]
}
```

path: hevy/scripts/configure_api.sh
content: #!/bin/bash

# Configure Hevy API key
set -e

[REDACTED_SECRET]"
CONFIG_DIR="$HOME/.hevycli"
CONFIG_FILE="$CONFIG_DIR/config.yaml"

if [ -z "$API_KEY" ]; then
    echo "❌ Usage: $0 <api-key>"
    echo "💡 Get your API key from: https://hevy.com/settings?developer"
    exit 1
fi

echo "🔧 Configuring hevycli..."

# Create config directory
mkdir -p "$CONFIG_DIR"

# Create config file
cat > "$CONFIG_FILE" << EOF
api:
  key: "$API_KEY"

display:
  output_format: json
  color: false
  units: metric

EOF

echo "✅ Configuration saved to $CONFIG_FILE"
echo "🧪 Testing API connection..."

# Test the configuration
if command -v hevycli >/dev/null 2>&1; then
    if hevycli workout count >/dev/null 2>&1; then
        echo "✅ API key working correctly!"
    else
        echo "⚠️ API key may not be working. Check your Hevy Pro subscription and key."
    fi
else
    echo "⚠️ hevycli not found. Run install_hevycli.sh first."
fi

path: hevy/scripts/get_recent_workouts.sh
content: #!/bin/bash

# Get recent workouts with optional date filtering
set -e

DAYS="${1:-7}"
OUTPUT_FORMAT="${2:-json}"

echo "📊 Fetching last $DAYS days of workouts..."

if ! command -v hevycli >/dev/null 2>&1; then
    echo "❌ hevycli not found. Run install_hevycli.sh first."
    exit 1
fi

# Calculate date
SINCE_DATE=$(date -d "$DAYS days ago" "+%Y-%m-%d" 2>/dev/null || date -v-"$DAYS"d "+%Y-%m-%d" 2>/dev/null)

if [ -z "$SINCE_DATE" ]; then
    echo "❌ Failed to calculate date"
    exit 1
fi

echo "📅 Getting workouts since: $SINCE_DATE"

# Fetch workouts
hevycli workout list --since "$SINCE_DATE" --output "$OUTPUT_FORMAT"

path: hevy/scripts/get_stats.sh
content: #!/bin/bash

# Get workout statistics and summaries
set -e

PERIOD="${1:-month}"
OUTPUT_FORMAT="${2:-json}"

echo "📊 Getting workout stats for period: $PERIOD"

if ! command -v hevycli >/dev/null 2>&1; then
    echo "❌ hevycli not found. Run install_hevycli.sh first."
    exit 1
fi

echo "=== Workout Summary ==="
hevycli stats summary --period "$PERIOD" --output "$OUTPUT_FORMAT"

echo ""
echo "=== Personal Records ==="
hevycli stats records --output "$OUTPUT_FORMAT"

echo ""
echo "=== Workout Count ==="
hevycli workout count --output "$OUTPUT_FORMAT"

path: hevy/scripts/install_hevycli.sh
content: #!/bin/bash

# Install hevycli for Hevy fitness tracking
set -e

INSTALL_DIR="$HOME/.local/bin"
BINARY_NAME="hevycli"
TEMP_DIR="/tmp/hevycli-install"

echo "🏋️ Installing hevycli..."

# Create directories
mkdir -p "$INSTALL_DIR"
mkdir -p "$TEMP_DIR"

# Get latest release URL
RELEASE_URL=$(curl -sL https://api.github.com/repos/obay/hevycli/releases/latest | grep "browser_download_url.*linux.*amd64" | cut -d '"' -f 4 | head -1)

if [ -z "$RELEASE_URL" ]; then
    echo "❌ Failed to get download URL"
    exit 1
fi

echo "📥 Downloading from: $RELEASE_URL"

# Download and extract
cd "$TEMP_DIR"
curl -sL "$RELEASE_URL" | tar -xz

# Install binary
if [ -f "$BINARY_NAME" ]; then
    mv "$BINARY_NAME" "$INSTALL_DIR/"
    chmod +x "$INSTALL_DIR/$BINARY_NAME"
    echo "✅ hevycli installed to $INSTALL_DIR/$BINARY_NAME"
else
    echo "❌ Binary not found in archive"
    exit 1
fi

# Add to PATH if not already
if [[ ":$PATH:" != *":$INSTALL_DIR:"* ]]; then
    echo "📝 Add to your shell profile:"
    echo "export PATH=\"\$PATH:$INSTALL_DIR\""
fi

# Cleanup
rm -rf "$TEMP_DIR"

echo "🎉 Installation complete!"
echo "💡 Next: Run 'hevycli config init' to set up your API key"

path: hevy/scripts/track_progress.sh
content: #!/bin/bash

# Track progress for a specific exercise
set -e

EXERCISE="${1:-}"
METRIC="${2:-weight}"
OUTPUT_FORMAT="${3:-json}"

if [ -z "$EXERCISE" ]; then
    echo "❌ Usage: $0 '<exercise-name>' [weight|1rm] [json|table]"
    echo "💡 Example: $0 'Bench Press' weight json"
    exit 1
fi

echo "📈 Tracking progress for: $EXERCISE"

if ! command -v hevycli >/dev/null 2>&1; then
    echo "❌ hevycli not found. Run install_hevycli.sh first."
    exit 1
fi

# Track progress
if [ "$METRIC" = "1rm" ]; then
    hevycli stats progress "$EXERCISE" --metric 1rm --output "$OUTPUT_FORMAT"
else
    hevycli stats progress "$EXERCISE" --output "$OUTPUT_FORMAT"
fi

Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)