with one click
whoop-visual-reports
Render WHOOP sleep, workout, and daily report cards.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Render WHOOP sleep, workout, and daily report cards.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | whoop-visual-reports |
| description | Render WHOOP sleep, workout, and daily report cards. |
Render consistent, mobile-friendly PNG reports from official WHOOP data. Use the plugin renderer instead of writing one-off chart code or embedding personal data inside a template.
Use text-only coaching when the user did not ask for a visual and an image would add noise.
whoop toolset must be enabled.Call whoop_render_report with one report type:
sleep_phases — stage distribution plus recovery metrics.post_sleep — recovery, sleep efficiency, stages, and sleep scores.workout — duration/distance, Strain, HR, energy, and Zone 0–5 time.daily_recap — Recovery, day Strain, sleep, activities, and a short action.The tool fetches live WHOOP records, normalizes them, writes a PNG, and returns
both media_path and media_directive.
| Request | Tool arguments |
|---|---|
| Latest sleep chart | report_type="sleep_phases" |
| Combined morning card | report_type="post_sleep" |
| Latest run | report_type="workout", sport_name="running" |
| Specific workout | report_type="workout", workout_id="..." |
| Today's recap | report_type="daily_recap" |
| Prior local day | report_type="daily_recap", date="YYYY-MM-DD" |
whoop_render_report directly; do not fetch the same records first
unless the user also asked for a detailed analysis.media_path.MEDIA:/absolute/path.png directive in that same normal reply.inkbox_send_imessage
once with mediaPaths=[media_path]; do not add another confirmation to
that destination.inkbox_send_imessage for the iMessage that triggered the
current turn; Hermes already delivers the final response there.mediaUrls; use MEDIA: for the current thread
or mediaPaths for an explicit different-thread send.WHOOP_TIMEZONE; provide an explicit date
when the user's target day is ambiguous.source.MEDIA: line.For normalized input fields and renderer behavior, read
references/report-schema.md. For offline template development, run
scripts/render_report.py with a report type and normalized JSON file.