Coding

Period Care Assistant

Try it

Track menstrual cycle history, answer current cycle status questions, record new period start dates from natural-language messages such as "月经来了", predict th...

What it does

Track menstrual cycle history, answer current cycle status questions, record new period start dates from natural-language messages such as "月经来了", predict th...

The skill document

Period Care Assistant

Overview

Use the helper script at {baseDir}/scripts/period_tracker.mjs for all reads and writes so period history, forecasts, and reminder plans stay deterministic. Keep all cycle data local, encrypted, and scoped by a stable per-user key such as dingtalk: or telegram:.

Handle User Identity

Build a stable userKey before touching storage.

  • Prefer the channel's immutable sender identifier.
  • Prefix it with the transport, for example telegram:123456, slack:U123, or dingtalk:manager123.
  • Do not use display names as the primary key unless there is no stable id.
  • If the user is in a shared chat, keep records per person and confirm who the record belongs to before writing.

Record A New Period Start

When the user says anything equivalent to "月经来了", "今天来例假了", "帮我记一下今天来姨妈", or "记一下 2026-03-18 来月经":

  1. Infer the start date from the message. If no date is given, use the user's local date and say which date was recorded.
  2. Run:
node "{baseDir}/scripts/period_tracker.mjs" record --user "" --date "" --json
  1. Read the returned JSON and reply with:
    • the recorded start date,
    • the predicted next start date,
    • the reminder date,
    • a short caring sentence.
  2. If the user also gives reminder preference, timezone, route, or period length, include:
node "{baseDir}/scripts/period_tracker.mjs" record --user "" --date "" --reminder-days 4 --timezone "Asia/Shanghai" --delivery-mode webhook --delivery-webhook "https://example.invalid/reminder" --json

Answer Status Queries

When the user asks "我现在是什么周期", "帮我查一下月经周期", "下次大概什么时候来", or similar:

node "{baseDir}/scripts/period_tracker.mjs" status --user "" --json

Explain the result in natural language:

  • current phase,
  • days since last recorded start,
  • predicted next start date,
  • reminder status,
  • confidence level and uncertainty when history is sparse or irregular.

Do not state medical certainty. Say the estimate is data-based, not a diagnosis.

Configure Reminder Delivery

The helper script stores reminder preferences and generates a one-shot cron plan.

Use:

node "{baseDir}/scripts/period_tracker.mjs" configure --user "" --timezone "Asia/Shanghai" --reminder-days 4 --delivery-mode announce --delivery-channel "telegram" --delivery-to "user:123456" --json

Supported delivery modes in the helper:

  • announce: for native OpenClaw chat delivery routes.
  • webhook: for an external bridge or webhook endpoint.
  • none: keep the prediction but do not arm a delivery route yet.

If reminder delivery is configured, fetch the plan:

node "{baseDir}/scripts/period_tracker.mjs" reminder-plan --user "" --json

Then create or refresh a one-shot cron job. Prefer a deterministic job name from the JSON output. Use schedule.kind = "at" and the generated ISO timestamp. For isolated delivery jobs, use the generated prompt text as the agentTurn.message. See {baseDir}/references/deployment.md for a complete cron JSON example.

Natural-Language Interaction Style

Keep the interaction short, warm, and explicit.

  • Accept colloquial Chinese such as "姨妈来了", "例假来了", "下次大概啥时候".
  • After recording, confirm the exact date that was saved.
  • If fewer than two historical records exist, explain that the next prediction is a provisional baseline.
  • If the forecast confidence is low or the estimated error exceeds two days, say that clearly instead of overstating accuracy.
  • If the user says the cycle is highly irregular, severe pain is present, or bleeding is unusual, suggest professional medical advice.

Privacy And Safety Rules

  • Never print or quote the encryption key.
  • Keep raw history in the encrypted store only.
  • Avoid putting full menstrual history into logs, commit messages, or public summaries.
  • Share only the minimum needed in chat responses unless the user explicitly asks for the detailed history.
  • If this skill is published to ClawHub, remember ClawHub is public. Publish code and instructions only, never real user data or secrets.

Read More Only When Needed

  • Read {baseDir}/references/deployment.md when you need OpenClaw cron, ClawHub publish, or DingTalk transport notes.
  • Read {baseDir}/references/model-and-privacy.md when you need the forecasting method, storage layout, or accuracy caveats.

Related skills

On-device period tracker that logs cycles, predicts next periods, and flags warning signs from your own logged data.

53 installs2 stars

Track symptoms over time and generate doctor-ready timelines. Correlates symptoms with food, weather, medication, activity, sleep, and stress. Detects patterns, flare-ups, and produces concise clinical reports.

Log and track daily calorie intake, macronutrients, body weight, and waist measurements locally in a SQLite database. Provides granular statistics, weekly averages, and future calorie budgets.

5 installs

A tool to help users organize symptoms, records, medications, and questions before medical visits, while offering clear explanations of examination reports and cautious risk reminders—without diagnosing, prescribing, or replacing professional care.

Track intermittent and extended fasts from last caloric intake, with stage estimates, electrolyte prompts, and scaled refeeding guidance.

47 installs2 stars

Smart water intake tracking based on body weight, weather, and activity level. Calculates personalized hydration targets, adjusts for caffeine and alcohol consumption, tracks streaks with gamification, generates hourly drinking schedule, and provides hydration education with urine color chart reference.