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
92%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Risky
Do not use without reviewing
Every step below is mandatory. Execute them in order. Do not skip, reorder, or abbreviate any step.
Run silently. Each inner skill handles its own surfacing. The wrapper adds no surfaces beyond cadence-cursor management.
Fire-time precheck (scripts/precheck-entertainment-sync.py) gates wake-ups by the weekly cadence cap. See references/cadence-rationale.md.
Run mcp__nanoclaw__fetch_trakt_history(). Saves to /workspace/group/trakt-history.json. Silent on success. Report on error or total_shows: 0 (if sync hasn't run yet, skip silently).
If the MCP call fails (transport error), surface verbatim via mcp__nanoclaw__send_message, then emit <internal>entertainment-sync exited step-1: mcp-fail</internal> as your final turn text and stop. Do NOT advance the cursor. Otherwise proceed to Step 2.
Invoke Skill(skill: "tessl__check-watchlist"). Inner skill notifies on released shows; silent otherwise.
If invocation fails, surface verbatim via mcp__nanoclaw__send_message, then emit <internal>entertainment-sync exited step-2: inner-skill-fail</internal> as your final turn text and stop. Do NOT advance the cursor. Otherwise proceed to Step 3.
Invoke Skill(skill: "tessl__recommend-shows"). Uses trakt-history.json from Step 1. Sends on good matches; silent otherwise.
If invocation fails, surface via mcp__nanoclaw__send_message, then emit <internal>entertainment-sync exited step-3: inner-skill-fail</internal> as your final turn text and stop. Otherwise proceed to Step 4.
Invoke Skill(skill: "tessl__audible-backup"). Inner skill reports new books or errors; silent otherwise.
If invocation fails, surface via mcp__nanoclaw__send_message, then emit <internal>entertainment-sync exited step-4: inner-skill-fail</internal> as your final turn text and stop. Otherwise proceed to Step 5.
Invoke Skill(skill: "tessl__recommend-books"). Sends on good matches; silent otherwise.
If invocation fails, surface via mcp__nanoclaw__send_message, then emit <internal>entertainment-sync exited step-5: inner-skill-fail</internal> as your final turn text and stop. Otherwise proceed to Step 6.
Reachable only if Steps 1-5 all succeeded. Run:
python3 /home/node/.claude/skills/tessl__entertainment-sync/scripts/stamp-cursor.pyAtomic-writes /workspace/group/state/entertainment-sync-cursor.json with {"schema_version": 1, "last_run": "<now UTC ISO Z>"}. Stdout: {"status": "stamped", "last_run": "<iso>", "cursor_path": "<path>"}. Proceed to Step 7.
Emit exactly one <internal> line so the post-fire silent-success watchdog can read task_run_logs.result directly. Either <internal>entertainment-sync ran <utc_date>: clean</internal> (no inner skill surfaced) or <internal>entertainment-sync ran <utc_date>: surfaced</internal> (at least one did). <utc_date> is today's UTC date in YYYY-MM-DD. The wrapper adds no user-facing output. Finish here.
skills
audible-backup
scripts
check-watchlist
entertainment-sync
recommend-books
recommend-shows
trakt-watch-history
youtube-comment-check