timermeet-python-builder
Implement and modify the TimerMeet Python desktop app (plain tkinter/ttk + Windows MCI audio + plyer). Use when changing timers, alarms, recurrence, persistence, translations, or UI behavior in timerm
SKILL.md.claude/skills/timermeet-python-builder/SKILL.md
GitHubTimerMeet Python Builder
Overview
Implement features and fixes in TimerMeet's Python desktop app without regressing alarm reliability -- the entire reason this app exists is that its PHP/JS predecessor's reminders depended on a browser tab staying open.
Workflow
- Read
SDD.mdbefore changing behavior that affects product scope or validation (or hand off to thetimermeet-spec-driverskill first). - Identify the right module (see
references/module-map.md) and implement the smallest change that satisfies the request, reusing existing helpers rather than re-deriving logic. - Run the verification commands (see
references/validation.md) before finishing. - Use the
timermeet-code-commenterskill on any new non-obvious logic. - Bump
timermeet_app/__init__.py::__version__when user-visible behavior changes, and updateREADME.md/SDD.mdto match. - If the change should ship as a compiled binary, use the
timermeet-exe-packagerskill to rebuildTimerMeet.exe.
Hard constraints
- No network listener, HTTP server, or browser dependency -- ever.
- No
eval/exec/pickle, no shell-stringsubprocess/os.system. - Every URL-opening path goes through
timermeet_app.security.is_http_url(). - Every disk write goes through
timermeet_app.security.atomic_write_text()(directly or viastorage.py). - Keep the Tkinter main thread non-blocking -- background threads or
root.after(), never a blocking sleep on the UI thread. - Comment only code that would otherwise be hard to parse quickly; don't over-engineer beyond the request.
References
references/module-map.md-- what lives in eachtimermeet_app/*.pyfile.references/validation.md-- the exact commands to run before calling a change done.