Skip to content

Add todoocard skill (parent) with today-eats sub-skill - #82

Open
jiqimaooo wants to merge 3 commits into
OpenMinis:mainfrom
jiqimaooo:add-today-eats
Open

Add todoocard skill (parent) with today-eats sub-skill#82
jiqimaooo wants to merge 3 commits into
OpenMinis:mainfrom
jiqimaooo:add-today-eats

Conversation

@jiqimaooo

@jiqimaooo jiqimaooo commented Aug 7, 2026

Copy link
Copy Markdown

Summary

  • Add parent skill todoocard for TodooCard / 土豆片 six-color e-paper
  • Nested sub-skill today-eats(今天吃点啥)
  • Shared convert/send/protocol on the parent; sub-skills only hold UX/flow
  • No device IDs, tokens, or personal data

Layout

todoocard/                      # parent skill (install this directory)
├── SKILL.md
├── config.example.json
├── evals/evals.json
├── references/protocol.md
├── scripts/                    # shared transport
│   ├── image_to_payload.py
│   ├── safe_send.py
│   ├── fast_send.py
│   ├── native_sender.swift
│   └── build_native_sender.sh
└── today-eats/                 # sub-skill
    ├── SKILL.md
    ├── evals/evals.json
    └── scripts/
        ├── cli.py
        └── meal_template.py

Why parent + sub-skill

TodooCard will grow more card types (weather, arbitrary image, etc.).
A single parent skill owns device binding and BLE; each sub-skill only describes its trigger and content pipeline.

Checklist

  • kebab-case top-level skill directory todoocard
  • Parent + sub-skill SKILL.md with name/description
  • scripts/ references/ layout
  • no secrets
  • evals present

Test plan

  • Install /var/minis/skills/todoocard (entire folder)
  • python3 today-eats/scripts/cli.py scan / probe --save
  • eat --prepare-only then full eat push

Self-contained Minis skill that picks a nearby restaurant at random,
renders a 今天吃点啥 card, and full-frame pushes it to TodooCard
six-color e-paper over BLE.
Submit todoocard/ as the Minis skill package. Shared BLE/convert
lives on the parent; today-eats is a nested sub-skill for 今天吃点啥.
@jiqimaooo jiqimaooo changed the title Add today-eats skill (TodooCard 今天吃点啥) Add todoocard skill (parent) with today-eats sub-skill Aug 7, 2026

@wsvn53 wsvn53 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the contribution! Found two small bugs during review — both are edge-case fallbacks, not blocking the main flow, but worth fixing:

1. Wrong fallback path for native_binary (todoocard/today-eats/scripts/cli.py)

native_bin = Path(cfg.get("native_binary") or (SCRIPTS / "native_sender"))

SCRIPTS here is today-eats/scripts/, but native_sender is built into the parent's todoocard/scripts/ (see build_native_sender.sh). The default config value is correct, but if native_binary is ever cleared/empty in config.json, this fallback points to a path that will never exist — it silently falls through to the slow CLI sender instead of the native one. Should be PARENT_SCRIPTS / "native_sender".

2. Stale references to a file that doesn't exist: todoocard_cli.py

  • cli.py: raise SystemExit("... run: todoocard_cli.py scan && probe --save")
  • meal_template.py (--send branch): subprocess.check_call(["python3", str(here / "todoocard_cli.py"), "eat", "--prepare-only"])

The actual entry point is cli.py, not todoocard_cli.py. The first is a misleading error message (copy-pasting it will just fail with "command not found"); the second is dead/broken code — if meal_template.py is ever run standalone with --send, it will crash looking for a nonexistent file.

Minor nit: PARENT_SCRIPTS = PARENT_ROOT / "scripts" is assigned twice in cli.py (once before the import, once right after) — harmless but looks like leftover from a rename.

Otherwise looks solid — no hardcoded device IDs/tokens, good protocol docs in references/protocol.md, evals present for both skills. Would like these fixed before merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants