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.
76
95%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Advisory
Suggest reviewing before use
Process steps in order. Do not skip ahead.
Call mcp__nanoclaw__fetch_trakt_history() to retrieve history.
The fetch returns JSON (field names shown schematically, not literal JSON):
{
"schema_version": 1,
"shows": [{"title", "year", "trakt_id", "slug", "episodes_watched", "last_watched", "rating"}],
"movies": [{"title", "year", "trakt_id", "slug", "last_watched", "rating"}],
"stats": {"total_shows", "total_movies", "rated"},
"fetched_at": "ISO 8601 UTC timestamp"
}This skill owns the persisted trakt-history.json record shape. The versioned contract, field promises, and migration policy live in:
skills/trakt-watch-history/state-schema.mdNote on genre data: The JSON schema does not include genre fields. Use general knowledge when confident (e.g., Breaking Bad = crime/drama) and be explicit about uncertainty for less-known titles — if a title's genre isn't clear, say so rather than guessing. No additional API call is available for genre classification.
Branch on the result:
{"error": "..."} — a real failure (auth, network, 5xx). Report the error to the user, suggest checking the Trakt.tv connection, and stop.shows AND movies are both empty — this is a VALID state for a fresh Trakt account or privacy-restricted API access. Tell the user there's no recorded history yet and ask whether they expected data (so they can check their Trakt settings if needed) — don't treat silence as a failure. Finish here.Identify patterns from the returned data (no genre field in the schema — work with what's there first, layer genre inferences only where you're confident):
episodes_watched on shows (binge or revisit).last_watched + year. Recent entries vs. older ones, era clusters (e.g., run of 2000s titles), release-year patterns.Breaking Bad = crime/drama), you can layer a genre inference. For less-known titles, don't guess — note uncertainty instead of inventing a genre tag, and fall back to the rating/title/era signals above.Proceed immediately to Step 3.
Suggest titles not already in the user's history that match the patterns you actually found:
last_watched recency as a preference signal.Example approach: if a user has rated five sci-fi shows 9/10 and two crime dramas 7/10, recommend sci-fi titles first (e.g., shows sharing cast, creators, or themes with their top-rated entries), then offer one or two crime dramas as an alternative. Always exclude titles already present in shows or movies.
Finish here — the skill is complete.