Medication Channel

v1.0.0

Handle messages in a medication-tracking channel by routing medication events through a deterministic medication tracker instead of freehand model judgment....

0· 86·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for cdmichaelb/medication-channel.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Medication Channel" (cdmichaelb/medication-channel) from ClawHub.
Skill page: https://clawhub.ai/cdmichaelb/medication-channel
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install medication-channel

ClawHub CLI

Package manager switcher

npx clawhub@latest install medication-channel
Security Scan
VirusTotalVirusTotal
Pending
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
The skill's name/description (deterministic medication tracker) matches the included scripts which parse messages and write a structured CSV log. Minor metadata inconsistency: the registry summary at the top listed no required environment variables, but SKILL.md declares MEDICATION_TIMEZONE (required) and WORKSPACE (optional) and the code reads those vars — the code and SKILL.md are coherent with the stated purpose.
Instruction Scope
Runtime instructions explicitly direct use of the bundled shell wrapper or Python script and require source message metadata (especially a timestamp). The SKILL.md and references constrain behavior (do not derive times from 'now', do not log reminder chatter). The scripts only read/write local workspace files and medication config in the bundled Python file; they do not instruct reading unrelated system files or contacting external endpoints.
Install Mechanism
No install spec or external downloads — the skill is instruction-only with two bundled scripts (pure-stdlib Python and a small shell wrapper). Nothing is written to unexpected system locations beyond the configured workspace.
Credentials
The skill requires MEDICATION_TIMEZONE (reasonable for timezone-aware display) and uses WORKSPACE (defaults to ~/.openclaw/workspace). It does not request secrets or network credentials. Note: the registry metadata did not list these required env vars despite SKILL.md and the code using them; also the code provides a default timezone of UTC if the env var is absent, while SKILL.md marks MEDICATION_TIMEZONE as required.
Persistence & Privilege
No elevated privileges or always:true. The skill writes persistent logs under the workspace (medication_log_v2.csv) and maintains deduplication state by message ID — this persistent file behavior is expected for a tracker but the user should be aware data is stored locally.
Assessment
This skill appears to do what it claims: a local, deterministic medication logger. Before installing, (1) confirm you will set MEDICATION_TIMEZONE (SKILL.md marks it required) and optionally WORKSPACE — otherwise the script will default to UTC and ~/.openclaw/workspace; (2) edit the medication lists/aliases at the top of scripts/tracker_v2.py to match your regimen; (3) be aware the tracker writes persistent CSV logs (medication_log_v2.csv) under your workspace (ensure that location is acceptable); (4) provide source message timestamps when calling the script (build_row raises an error if timestamp is missing); and (5) note the registry metadata omitted env var requirements — that mismatch is likely an authoring oversight but verify MEDICATION_TIMEZONE is set as intended. If you need remote/centralized logging or encrypted storage, this skill does not provide that and would need modification.

Like a lobster shell, security has layers — review code before you run it.

latestvk976h07kp15p6h56fhk2bnk1vd849e1e
86downloads
0stars
1versions
Updated 3w ago
v1.0.0
MIT-0

Medication Channel

Use the deterministic medication logging path whenever source message metadata is available.

Configuration

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.

Core Rules

  • Treat the configured channel as the dedicated medication channel.
  • Prefer the log_from_discord.sh wrapper or tracker_v2.py log-from-message.
  • Never use now as a logged/displayed time.
  • Never derive event time from the model turn time.
  • Use the source Discord message timestamp unless the user explicitly gives a different time.
  • Convert displayed times to the configured timezone.
  • Never log reminder chatter as medication history.
  • Never treat an assistant reminder message, assistant follow-up, assistant summary, or assistant self-referential chatter as a medication event.
  • Never emit a confirmation like "taken", "logged", or "recorded" in response to an assistant-generated reminder unless a real user medication report was just logged through the script path.
  • Never claim something was logged unless the script path actually ran.
  • Prefer raw-message passthrough to the tracker instead of model-side parsing.

Preferred Workflow

Log a medication message from Discord

Use when the user reports:

  • taken / took
  • done / completed
  • missed / skipped
  • extra dose
  • clear natural-language medication intake

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.

Parse only

Use only when inspecting behavior or debugging.

python3 scripts/tracker_v2.py parse "$MESSAGE_TEXT" "$TIMESTAMP_UTC"

Format a confirmation

Use when you already have the JSON row and want the standard confirmation string.

python3 scripts/tracker_v2.py format-confirmation '<json-row>'

Special Guardrail: Reminder Messages

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:

  • an assistant message like Reminder: it's time to take your evening medication.
  • an assistant message like Evening medication taken (recorded at ...)
  • a user message like something went wrong again
  • a user reply that is discussing a reminder failure rather than reporting intake

In these cases:

  • do not call the tracker unless the user message itself contains an actual medication event
  • do not fabricate a confirmation
  • debug/explain briefly instead

What the Tracker Already Handles

The tracker is preferred because it already handles:

  • common natural-language medication phrases
  • normalization of common misspellings / aliases
  • morning/evening inference
  • dedupe by source Discord message id
  • local timezone display formatting
  • structured logging

So do not manually re-implement those steps unless debugging the tracker itself.

If Uncertain

Ask a short clarifying question only when needed, such as:

  • whether the message is a real medication event vs general discussion
  • whether the user is saying they skipped something or are uncertain
  • whether a custom explicit time should override the source timestamp

Data Access

This skill reads and writes persistent files in the workspace:

  • Writes $WORKSPACE/data/medication_log_v2.csv — one row per medication event (med name, status, timestamps, source message ID)
  • Writes deduplication state keyed by source message ID
  • Reads medication config from MORNING_MEDS/EVENING_MEDS/KNOWN_MEDS lists at top of scripts/tracker_v2.py
  • No network calls — fully local, stdlib-only Python
  • No external APIs — no vision, no remote services

Required Files

The following files are included in the bundle:

  • scripts/log_from_discord.sh — Discord wrapper script
  • scripts/tracker_v2.py — medication parser/logger
  • references/CHANNEL_RULES.md — optional channel behavior reference
  • references/README.md — optional setup reference

Comments

Loading comments...