Living Room Air Monitor

ReviewAudited by ClawScan on May 10, 2026.

Overview

The skill mostly matches its air-monitoring purpose, but it should be reviewed because chart/report actions can automatically install an unpinned Python package and the skill uses local smart-home and messaging credentials.

Before installing, decide whether you trust this skill to use your Dirigera hub token, CONTACTS.json, and local messaging tools. Prefer installing reviewed, pinned dependencies yourself instead of allowing runtime pip installation, verify the cron schedule, and remove the cron entry if you no longer want continuous monitoring.

Findings (5)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

A normal chart or report request could download and execute third-party package installation code in the user's Python environment.

Why it was flagged

Chart generation automatically invokes pip to install matplotlib when it is missing, without a pinned version or install-spec declaration.

Skill content
except ImportError:
    print("matplotlib not found. Installing...")
    os.system(f"{sys.executable} -m pip install matplotlib --quiet")
Recommendation

Remove runtime pip installation. Declare and pin matplotlib in the install requirements, or require explicit user approval before installing dependencies.

What this means

Users must store a smart-home hub token locally; if the local network connection is spoofed or intercepted, the token could be exposed.

Why it was flagged

The skill reads a local Dirigera bearer token and sends it to the local hub, while disabling TLS certificate verification.

Skill content
TOKEN_FILE = os.path.expanduser("~/.openclaw/workspace/.dirigera_token") ... "Authorization": f"Bearer {token}" ... ssl_context.verify_mode = ssl.CERT_NONE
Recommendation

Document the token requirement in metadata, protect the token file, use the least-privileged token available, and prefer certificate validation or certificate pinning where possible.

What this means

If invoked unintentionally, the skill can send air-quality readings and chart locations/files through the user's configured messaging accounts.

Why it was flagged

Report delivery invokes local Gmail and WhatsApp CLI tools to send outbound messages to configured contacts.

Skill content
cmd = ["gog", "gmail", "send", "--to", EMAIL, ...]
cmd = ["wacli", "send", "text", "--to", whatsapp_to, "--message", message]
Recommendation

Run report-sending commands only when intended, document the required gog/wacli account setup, and consider adding a confirmation step before sending.

What this means

The skill will continue collecting hourly air-quality data and writing logs until the cron entry is removed.

Why it was flagged

The skill instructs the user to create a persistent scheduled job for ongoing collection.

Skill content
Add to crontab for automatic data collection every hour:
0 * * * * /opt/homebrew/bin/python3 .../collect_air_data.py >> /tmp/air_quality_cron.log 2>&1
Recommendation

Only add the cron entry if continuous monitoring is desired, verify the path and schedule, and keep clear uninstall/removal instructions.

What this means

Accumulated home sensor history may reveal environmental or occupancy patterns and may be included in generated reports.

Why it was flagged

The skill persists historical home air-quality readings in a local SQLite database for later queries and reports.

Skill content
DB_PATH = os.path.expanduser("~/.openclaw/workspace/skills/living-room-air-monitor/data/air_quality.db")
Recommendation

Review database file permissions, retention expectations, backups, and whether old readings should be deleted periodically.