Repository navigation
Add check-in-companion: daily check-ins with a family digest - #390
Open
hassan1731996 wants to merge 2 commits into
Open
hassan1731996 wants to merge 2 commits into
hassan1731996 wants to merge 2 commits into
Conversation
A daily check-in for someone who lives alone. A background daemon asks a short question at set times, reads the answer from the conversation, retries once, and emails family if a check-in is missed. Mentions of a fall, chest pain or trouble breathing trigger a spoken safety prompt and an urgent email. An evening digest shares answered/missed status, a mood word, worry types and only the notes the person agreed to share, never transcripts. The voice skill handles check-in now, times, pause, privacy, the emergency number and status. State lives in Context Storage; it is not an emergency service.
Contributor
🔀 Branch Merge CheckPR direction: ✅ Passed — |
Contributor
✅ Community PR Path Check — PassedAll changed files are inside the |
Contributor
✅ Ability Validation Passed |
Contributor
🔍 Lint Results✅
|
Read-only, optional sources, skipped when the ability isn't installed: - medication-reminder: a spoken aside when a dose is overdue and not marked taken; never included in family emails - timers-alarms-reminders: today's reminders for a personal question - social-memory: family names and relationships only, never snippets - memory-mirror: a corrected name Review fixes: help offers two options then more (openhome-dev#209); pause and emergency confirmations accept a change (openhome-dev#209); shorter first-run intro.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this Ability do?
A daily check-in for someone who lives alone, such as an older parent, with a short evening email for their family. At set times the speaker asks one warm question and understands the answer. A missed check-in gets one gentle retry, then an email to family. A mention of a fall, chest pain or trouble breathing gets a spoken "please call..." prompt and an urgent email. The evening digest says answered or missed, a mood word, any worry types and only the news the person was happy to share. It never sends a transcript.
Amazon retired Alexa Together, and what's left elsewhere only reports that the device was used. This is the "check in on an elderly resident" use case from OpenHome's spatial intelligence post. It's not an emergency service, and the README and first-run speech say so.
How it differs from existing abilities
Suggested Trigger Words
Scheduled check-ins need no trigger. The background daemon asks at the set times.
Type
External APIs
users/me/messages/send) through the linked Google account (get_token("google")). SMTP throughsend_email()is the fallback, with the optional keyscheckin_sender_email/checkin_sender_password. Family recipients come from thecheckin_family_emailskey.Testing
Checklist
community/check-in-companion/main.pyfollows SDK pattern (extendsMatchingCapability, hasregister_capability+call)README.mdincluded with description, suggested triggers, and setupresume_normal_flow()called on every exit pathprint()— usingeditor_logging_handlerredis,user_config)asyncio.sleep()orasyncio.create_task()— usingsession_tasksAnything else?
Design notes, following earlier review feedback
background_daemon_modeis set beforeCapabilityWorker(self). The daemon polls every 60s, never awaitsuser_response()and never callsresume_normal_flow(). It reads answers fromget_full_message_history()on its next poll.checkin_state). Saves usecreate_keythenupdate_keyand checksuccess. A failed read skips the poll, so it can never wipe data. Acheckin_busykey keeps the daemon out while the skill is open.user_profile.md/user_summary.md, which are never written. User text is nonce-fenced as untrusted in every prompt.checkin_context.mdis written (delete then write) only while a question is open, so the Agent answers warmly and gives no medical advice.