Install
openclaw skills install @cdmichaelb/medication-channelHandle messages in a medication-tracking channel by routing medication events through a deterministic medication tracker instead of freehand model judgment. Use when working in a dedicated medication channel, especially for logging taken/missed/extra medication events, morning/evening completion, timestamp-grounded confirmations, and avoiding hallucinated reminders or fake times.
openclaw skills install @cdmichaelb/medication-channelUse the deterministic medication logging path whenever source message metadata is available.
Set the following environment variables or replace placeholders before use:
MEDICATION_TIMEZONE — IANA timezone string for local time display (e.g. America/Los_Angeles, Europe/Berlin)WORKSPACE — root directory for data files (defaults to ~/.openclaw/workspace)Medication names and schedules are configured at the top of scripts/tracker_v2.py — edit the MORNING_MEDS, EVENING_MEDS, and KNOWN_MEDS lists to match your regimen.
log_from_discord.sh wrapper or tracker_v2.py log-from-message.now as a logged/displayed time.Use when the user reports:
Preferred path:
scripts/log_from_discord.sh \
"$MESSAGE_TEXT" \
"$CHANNEL_ID" \
"$MESSAGE_ID" \
"$AUTHOR_ID" \
"$TIMESTAMP_UTC"
Equivalent direct call:
python3 scripts/tracker_v2.py log-from-message \
"$MESSAGE_TEXT" \
"$CHANNEL_ID" \
"$MESSAGE_ID" \
"$AUTHOR_ID" \
"$TIMESTAMP_UTC"
Then use the returned row or format-confirmation output for the confirmation.
Use only when inspecting behavior or debugging.
python3 scripts/tracker_v2.py parse "$MESSAGE_TEXT" "$TIMESTAMP_UTC"
Use when you already have the JSON row and want the standard confirmation string.
python3 scripts/tracker_v2.py format-confirmation '<json-row>'
If the message being handled is itself a reminder, or the user is replying to/quoting a reminder message, do not assume medication was taken.
Examples that are not medication events by themselves:
Reminder: it's time to take your evening medication.Evening medication taken (recorded at ...)something went wrong againIn these cases:
The tracker is preferred because it already handles:
So do not manually re-implement those steps unless debugging the tracker itself.
Ask a short clarifying question only when needed, such as:
This skill reads and writes persistent files in the workspace:
$WORKSPACE/data/medication_log_v2.csv — one row per medication event (med name, status, timestamps, source message ID)MORNING_MEDS/EVENING_MEDS/KNOWN_MEDS lists at top of scripts/tracker_v2.pyThe following files are included in the bundle:
scripts/log_from_discord.sh — Discord wrapper scriptscripts/tracker_v2.py — medication parser/loggerreferences/CHANNEL_RULES.md — optional channel behavior referencereferences/README.md — optional setup reference