Personal entertainment-media skills for NanoClaw: Trakt watch-history sync, TV-show and audiobook recommendations, watchlist release checks, YouTube channel-comment digests, and Audible backup — with a weekly cadence companion. NanoClaw per-chat overlay tile.
73
91%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Every step below is mandatory. Execute them in order. Do not skip, reorder, or abbreviate any step.
Run this check silently. Report only if new comments appear or a tool error surfaces.
The fire-time precheck (scripts/precheck-youtube-comment-check.py) gates wake-ups by the cadence cap (value in the precheck's CADENCE, set intentionally below the weekly cron interval) on a filesystem cursor. See references/cadence-rationale.md for why a comment-count delta gate (querying YouTube in the precheck) was rejected in favour of cadence-only.
The preparation script uses the native YouTube Data API v3 (YOUTUBE_API_KEY) and fetches comment threads since the last successful run. Its fixed fetch window and channel live in build_fetch_command() in scripts/prepare-youtube-comment-message.py:
python3 /home/node/.claude/skills/tessl__youtube-comment-check/scripts/prepare-youtube-comment-message.pyThe preparation script owns the fixed fetch invocation and the byte-preserving fetch-to-composer handoff. See scripts/prepare-youtube-comment-message.py for its process contract.
Stdout (exit 0): {"comment_count": N, "message": "<html>" | null}. message is null when comment_count == 0.
On non-zero exit, surface the script's stderr verbatim via mcp__nanoclaw__send_message and stop. Do not send a digest or run Step 3.
On exit 0, proceed immediately to Step 2.
Parse the Step 1 stdout object. Exactly two shapes are valid:
message is a non-empty string and comment_count is at least 1: send that exact string via mcp__nanoclaw__send_message. Do not reformat or decode it. After a successful send, proceed immediately to Step 3.message is null and comment_count is 0: do not send. Proceed immediately to Step 3.Anything else is invalid Step 1 stdout, an empty-string message or a count that disagrees with message included. On invalid stdout or a mcp__nanoclaw__send_message failure, surface the error verbatim and stop. Do not run Step 3.
Run Step 3 only after Steps 1 and 2 succeed:
python3 /home/node/.claude/skills/tessl__youtube-comment-check/scripts/stamp-cursor.pyThe script atomic-writes /workspace/group/state/youtube-comment-check-cursor.json with {"schema_version": 1, "last_run": "<now UTC ISO Z>"}. The precheck reads this file's last_run and gates on the cadence cap (value in the precheck). Stdout is {"status": "stamped", "last_run": "<iso>", "cursor_path": "<path>"}.
On exit 0, proceed immediately to Step 4. On non-zero exit, surface the script's stderr verbatim via mcp__nanoclaw__send_message and stop.
If nothing was reported in Steps 1-3, output nothing (wrap in <internal>). Finish here.