AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Weekly Report

skill-zwjbendn-weight-loss-skill-weekly-report · by zwjbendn

Generate a personalized weekly progress report for the user's weight-loss journey. Use this skill every Monday (or when the user asks for a weekly summary). Compiles 7 days of meal logs, weight records, and macro data into an in-chat summary plus a styled HTML report with logging streaks, calorie analysis, weight trends, macronutrient breakdown, achievements, and actionable suggestions. Trigger p…

No reviews yet
0 installs
25 views
0.0% view→install

Install

$ agentstack add skill-zwjbendn-weight-loss-skill-weekly-report

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-zwjbendn-weight-loss-skill-weekly-report)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
6mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Weekly Report? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Weekly Report

> ⚠️ SILENT OPERATION: Never narrate internal actions, skill transitions, or tool calls to the user. No "Let me check...", "Now I'll transition to...", "Reading your profile...". Just do it silently and respond with the result.

A personalized end-of-week progress report that turns 7 days of scattered data into a clear, motivating snapshot. The report is data-driven but human — celebrate consistency, normalize fluctuations, and give exactly one or two things to focus on next week.

Principles

  1. Show, don't lecture. Let the data speak. Keep commentary short.
  2. Celebrate consistency over perfection. 5 out of 7 days logged is great — don't focus on the 2 missed.
  3. One week is noise, trends are signal. Never draw dramatic conclusions from a single week.
  4. Personalize everything. Use the user's name, units, food history, and goals — never a generic template dump.
  5. Actionable > informational. Every suggestion must be something the user can do next week.

Trigger Strategy

Schedule

Auto-generate every Monday at 9:00 AM (user's local time), covering the previous Monday–Sunday. Read timezone.json to determine the user's local time and correctly calculate the Mon–Sun date range. If the user's quiet hours extend past 9 AM, delay to end of quiet hours.

Manual Trigger

User can request a report at any time:

  • "weekly report" / "week summary" / "how was my week" → generate for the most recent completed Mon–Sun
  • "report for last week" / "上周报告" → same
  • "report for Feb 10–16" → generate for that specific range

Pre-send Checks

  1. User in Stage 4 (silent)? → skip auto-send, but still generate if manually requested
  2. Less than 2 days of data in the period? → send a short message instead: "Not enough data for a full report this week — let's make next week count! 💪"
  3. All clear → generate and send

Data Sources

Reads from USER.md

| Field | Purpose | |-------|---------| | Basic Info > Name | Greeting / header personalization | | Health Flags | Skip weight section if ED-related flags |

Reads from health-profile.md

| Field | Purpose | |-------|---------| | Body > Unit Preference | Display unit for weight (kg or lb) | | Goals > Target Weight | Progress percentage calculation | | Meal Schedule > Meals per Day | Expected logs per day (for logging rate calc) | | Meal Schedule | Which meals to expect | | Diet Config > Food Restrictions | Context for suggestions | | Activity & Lifestyle > Exercise Habits | Context for suggestions |

Reads from PLAN.md

| Field | Purpose | |-------|---------| | Daily Calorie Range | On-target / below / over classification | | Protein Range | Macro analysis | | Fat Range | Macro analysis | | Carb Range | Macro analysis | | Weight Loss Rate | Expected weekly loss for progress assessment | | Diet Mode | Context for suggestions |

Reads from data (workspace)

| Path | How | Purpose | |------|-----|---------| | data/meals/YYYY-MM-DD.json | nutrition-calc.py load --date YYYY-MM-DD for each day in range | Logging status, food descriptions, estimated calories per meal | | data/weight.json | weight-tracker.py load --from YYYY-MM-DD --to YYYY-MM-DD --display-unit | Weight readings for the week | | habits.active | direct read | Current active habits for habit progress section | | habits.daily_log.{date} | direct read | Daily habit completion/miss/no_response records | | habits.graduated | direct read | Recently graduated habits for achievements section |

Note: Weight data is read via the weight-tracking skill's weight-tracker.py script at {weight-tracking:baseDir}/scripts/weight-tracker.py. Read health-profile.md > Body > Unit Preference for the display unit. Meal data is read via nutrition-calc.py load from the diet-tracking-analysis skill.


Report Structure

The report has 6 sections. Generate them in order. Each section adapts to the user's actual data — skip or simplify sections with no data. The header (title, date range, greeting) is handled by the HTML template's .report-header and the in-chat summary — not a separate section.

Section 1: Logging Overview

Show each day of the week with a status indicator. See .logging-grid in the HTML template.

Data logic:

  • For each day (Mon–Sun), call nutrition-calc.py load --date YYYY-MM-DD to check:
  • If at least 1 meal has status: "logged" → ✅
  • If all meals are "skipped" or "no_reply" or no log exists → ❌
  • Count total days with ✅ → {X}/7 days logged

Commentary rules:

  • 7/7 → "Perfect week! 🎉" / "满勤!🎉"
  • 5-6/7 → "Nice consistency!" / "记录很稳!"
  • 3-4/7 → "Solid start — let's aim for one more day next week." / "不错的开始,下周争取多记一天。"
  • 1-2/7 → "Every logged day counts. Small steps!" / "每记一天都有价值,慢慢来!"

Section 2: Calorie Analysis

Show daily calorie intake vs target range with bar chart. See .calorie-table and .calorie-bar in the HTML template.

Data logic:

  • For each day, call nutrition-calc.py load --date YYYY-MM-DD and sum cal across all meals
  • Compare against Daily Calorie Range from PLAN.md:
  • Below range min → 📉 Below (bar class: below)
  • Within range → ✅ On Target (bar class: on-target)
  • Above range max → 📈 Over (bar class: over)
  • Days with no data → (skip from calculations)
  • Bar width = (day_calories / max_calories_in_week) * 100%

Commentary rules:

  • Average within range → "Right on track this week." / "这周热量控制得很好。"
  • Average below range → "A bit under — make sure you're eating enough to sustain energy." / "稍微偏低,注意吃够保持精力。"
  • Average above range → "Slightly over, but a few small adjustments can close the gap." / "略微超标,小调整就能回来。"
  • Only 1-2 days of data → Show what's available but note: "Limited data this week — the more you log, the more useful this gets."

Section 3: Weight Progress

Show weight readings and net change. See .weight-table and .weight-change in the HTML template.

Data logic:

  • Call weight-tracker.py load --from --to --display-unit to collect all entries within the period
  • If 2+ readings: calculate change = last reading − first reading
  • If 1 reading: show it, compare to previous week's last reading if available
  • If 0 readings: skip this section entirely (remove the card), add a gentle note

Commentary rules:

  • Loss within expected rate (from PLAN.md weekly rate) → "Right on pace." / "进度刚好。"
  • Loss faster than expected → "Great progress — just make sure you're not undereating." / "进度不错,注意别吃太少。"
  • No change or slight gain → "Weight fluctuates — one week doesn't define the trend. 💛" / "体重会波动,一周说明不了什么。💛"
  • No readings → "No weigh-ins this week — want to add one next week?" / "这周没有称重记录,下周要不要试试?"

Never: compare to target weight in a pressuring way, criticize a gain, or suggest the user weigh more often than 2x/week.


Section 4: Macronutrient Analysis

Compare average daily macro intake against target ranges. See .macro-table in the HTML template.

Data logic:

  • Calculate average daily protein, fat, carb from logged meals across the week

(use meal_totals from food logs or daily_summary data)

  • Compare each macro's average against the range from PLAN.md
  • Classify: Below Range / In Range / Above Range

Commentary rules:

  • All in range → "Balanced macros this week — keep it up!" / "三大营养素都在范围内,继续保持!"
  • Protein below → always flag: "Protein is a bit low — try adding an egg, yogurt, or chicken breast to one meal." / "蛋白质偏低,试试每天多加一个鸡蛋或一份鸡胸肉。"
  • Fat over → "Fat ran a little high — check cooking oils and snacks." / "脂肪偏高,留意下烹饪用油和零食。"
  • Insufficient data ( Health Flags contains avoidweightfocus or historyofed`:
  • Skip Section 3 (Weight Progress) entirely
  • In calorie section, focus on consistency of eating, not numbers
  • Achievements: focus on variety and balance, not restriction

Workspace

Writes

| Path | When | |------|------| | logs.weekly_report.{start_date} | After generating the report — store the full report JSON (see references/data-schemas.md) | | habits.lifestyle_gaps | When behavioral patterns are detected during weekly analysis (consumed by habit-builder) |


Output

Delivery (two parts)

The weekly report is delivered in two parts:

Part 1: Natural Language Summary (in-chat message)

Send a concise 3–5 sentence summary in the chat as plain text. This summary should give the user a quick snapshot without needing to open the full report.

Structure:

  1. Greeting + date range
  2. Key stats (days logged, average calories, weight change)
  3. One highlight (biggest win of the week)
  4. One suggestion (most impactful thing to try next week)
  5. Pointer to the full HTML report

Example (Chinese):

小明,这是你 2月10日–16日 的周报摘要:这周记录了5/7天,平均摄入
1,766 kcal,体重下降了 0.4 kg。亮点是连续5天坚持记录饮食,蛋白质
摄入可以再提高一些——试试早餐加个鸡蛋。完整报告已生成,请查看附件 👇

Example (English):

Hi Ming, here's your week in review (Feb 10–16): You logged 5/7 days,
averaged 1,766 kcal/day, and dropped 0.4 kg. Highlight: 5-day logging
streak! One thing to try: add an egg to breakfast to boost protein.
Full report attached below 👇
Part 2: HTML Report (file attachment)

Generate a self-contained HTML file using the template at templates/weekly-report.html. Write the file to data/reports/weekly-report-{start_date}.html and attach it in the response. The HTML report contains all 6 sections with full detail, charts, and styling.

HTML generation rules:

  • Replace all {{PLACEHOLDER}} values with actual data
  • The file must be fully self-contained (all CSS inline, no external dependencies)
  • Follow the template structure — do not add or remove sections
  • Adapt language to user's locale (read from locale.json)
  • Skip sections with no data (remove the entire card, do not show empty cards)
  • For the calorie bar chart: calculate bar widths as percentage of the max value in the week

Report JSON (stored to workspace)

After displaying the report to the user, write a structured JSON summary to logs.weekly_report.{start_date} for cross-session reference and trend analysis. Schema in references/data-schemas.md.


Skill Routing

See SKILL-ROUTING.md for the full conflict resolution system. This skill is Priority Tier P4 (Reporting). Key scenarios:

  • Weekly report + exercise weekly summary (Pattern 3): This skill is the primary owner of weekly summaries. Exercise weekly data (sessions, duration, calories burned, WHO comparison) is incorporated as a section within this report. exercise-tracking-planning does NOT produce a separate weekly summary when this skill is generating.
  • Monday auto-report: Include exercise data from the week. No separate exercise summary needed.
  • User requests "weekly summary": Route here, not to exercise-tracking's weekly summary.

Performance

  • Report generation: single message, no back-and-forth
  • In-chat summary: 3–5 sentences, scannable in under 10 seconds
  • HTML report: aim for 40–60 lines of visible content
  • Commentary: 1–2 sentences per section, max

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.