CtrlK
BlogDocsLog inGet started
Tessl Logo
PluginPublic

jbaruch/nanoclaw-travel

Travel assistant for NanoClaw: byAir flight notifications (delay, gate, connection risk, inbound aircraft delay, time-to-leave, arrival logistics), traffic-aware drive planning for in-person meetings (auto drive blocks + leave-by traffic rechecks), travel-booking gap checks, and nightly TripIt sync. Per-chat overlay plugin.

Quality

90%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Overview
Quality
Evals
Security
Files

configure_ev.pyskills/drive-engine/

#!/usr/bin/env python3
"""Record complete, owner-grounded EV preferences through the config owner.

Usage: configure_ev.py JSON_PREFERENCES
Stdout: {schema_version:1, recorded:bool}; stderr: fixed diagnostic on failure.
No provider request, vehicle command, calendar write or grant occurs here.
Preserves all other existing configuration fields. See ev-planning-contract.md.
"""

from __future__ import annotations

import json
import os
import sys
from pathlib import Path

_FA = Path("/home/node/.claude/skills/tessl__flight-assist")
if not _FA.is_dir():
    _FA = Path(__file__).resolve().parent.parent / "flight-assist"
if str(_FA) not in sys.path:
    sys.path.insert(0, str(_FA))

from ev_preferences import validate_ev_preferences  # noqa: E402
from state import StateError, read_config, write_config  # noqa: E402


def _unique(pairs):
    result = {}
    for key, value in pairs:
        if key in result:
            raise ValueError("Duplicate preference key.")
        result[key] = value
    return result


def main(argv: list[str] | None = None) -> int:
    arguments = sys.argv[1:] if argv is None else argv
    if len(arguments) != 1:
        print("Supply one bounded complete EV preference object.", file=sys.stderr)
        return 2
    try:
        if len(arguments[0].encode("utf-8")) > 256 * 1024:
            raise ValueError("Preference input exceeds its bound.")
        preferences = validate_ev_preferences(json.loads(arguments[0], object_pairs_hook=_unique))
        old_mask = os.umask(0o077)
        try:
            # The owner read may migrate an older config before the preference
            # write. That replacement must stay private even if the latter fails.
            current = read_config() or {}
            if "ev_planning" in current:
                validate_ev_preferences(current["ev_planning"])
            write_config({**current, "ev_planning": preferences})
        finally:
            os.umask(old_mask)
    except (OSError, ValueError, StateError, RecursionError):
        print(
            "EV preferences not recorded. Inspect the owner config/schema and grounded "
            "vehicle/charging inputs; preserve the existing file. No provider action occurred.",
            file=sys.stderr,
        )
        print(json.dumps({"schema_version": 1, "recorded": False}))
        return 1
    print(json.dumps({"schema_version": 1, "recorded": True}))
    return 0


if __name__ == "__main__":
    raise SystemExit(main())

skills

README.md

tile.json