Skip to content

feat(templates): add Hermes Agent ability template#280

Open
Bradymck wants to merge 269 commits into
openhome-dev:mainfrom
Bradymck:feat/hermes-template
Open

feat(templates): add Hermes Agent ability template#280
Bradymck wants to merge 269 commits into
openhome-dev:mainfrom
Bradymck:feat/hermes-template

Conversation

@Bradymck

@Bradymck Bradymck commented Jun 9, 2026

Copy link
Copy Markdown

Summary

Adds a Hermes template alongside OpenClaw — voice interface to Hermes Agent, an open-source AI automation framework.

What it does:

  • Converts voice commands into hermes CLI commands via exec_local_command()
  • One-shot tasks: "research AI news and send to Telegram"
  • Create automations: "schedule a morning digest every day at 9"
  • Manage automations: "what automations are running", "pause the email checker"

How it differs from OpenClaw:

OpenClaw Hermes
Runs Arbitrary terminal commands AI-powered tasks and automations
Scheduling No Yes — cron + human-readable intervals
Webhooks No Yes
Delivery Terminal output Telegram, Discord, Slack, email, GitHub
Model choice OpenClaw's model Any — Claude, GPT, DeepSeek, local
Open source No Yes (MIT)

Requirements: pip install hermes-agent + Local Connect or OpenClaw client.

Files

  • templates/Hermes/main.py — ability with LLM command routing + voice formatting
  • templates/Hermes/README.md — setup guide, examples, customization
  • templates/Hermes/__init__.py

🤖 Generated with Claude Code

github-actions Bot and others added 30 commits February 13, 2026 07:53
Signed-off-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Signed-off-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Co-authored-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Signed-off-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Signed-off-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Signed-off-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Signed-off-by: Artur Kozhushnyi <137943726+ArturKozhushnyi@users.noreply.github.com>
Signed-off-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Co-authored-by: Muhammad Rizwan <awanrizwan615@gmail.com>
… API (openhome-dev#44)

Co-authored-by: Muhammad Rizwan <awanrizwan615@gmail.com>
…h persistence (openhome-dev#47)

Co-authored-by: Samson Admasu <samsona@act.com.et>
Co-authored-by: Muhammad Rizwan <awanrizwan615@gmail.com>
…-dev#51)

Co-authored-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Signed-off-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Signed-off-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Co-authored-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Co-authored-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Signed-off-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Co-authored-by: Muhammad Rizwan <awanrizwan615@gmail.com>
github-actions Bot and others added 19 commits March 10, 2026 04:09
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Signed-off-by: Uzair Ullah <uzairullahmail@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Uzair Ullah <uzairullahmail@gmail.com>
Co-authored-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Signed-off-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Signed-off-by: Akio9090-dev <kana72867@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Abubakar Abbasi <abubakarabbasi541@gmail.com>
Co-authored-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Signed-off-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Signed-off-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Signed-off-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Signed-off-by: Muhammad Rizwan <awanrizwan615@gmail.com>
Signed-off-by: Muhammad Rizwan <awanrizwan615@gmail.com>
…ity.md

Signed-off-by: Muhammad Rizwan <awanrizwan615@gmail.com>
…ties

magic8ball — 20 classic answers, no API keys required
calculator — AST-safe voice math (add/subtract/multiply/divide/powers/
             sqrt/percentages/trig), understands spoken numbers
volume-control — cross-platform (Mac/Linux/Windows) via LocalLink,
                 raise/lower/mute/max/set to level

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Voice interface to Hermes Agent automation framework.
Converts voice input to hermes CLI commands via exec_local_command().
Supports one-shot tasks, cron automations, webhooks, and status checks.
Works with Local Connect or OpenClaw client.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@Bradymck Bradymck requested review from a team as code owners June 9, 2026 11:47
@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

🚫 Community PR Path Check — Failed

Community PRs can only modify files inside the community/ folder.

❌ Not Allowed

  • .github/PULL_REQUEST_TEMPLATE.md
  • .github/PULL_REQUEST_TEMPLATE/community-ability.md
  • .github/workflows/auto-label.yml
  • .github/workflows/branch-merge-check.yml
  • .github/workflows/lint.yml
  • .github/workflows/path-check.yml
  • .github/workflows/update-contributors.yml
  • .github/workflows/validate-ability.yml
  • CONTRIBUTING.md
  • CONTRIBUTORS.md
  • README.md
  • SECURITY.md

✅ Allowed

  • community/Bedtime-Wind-Down/README.md
  • community/Bedtime-Wind-Down/__init__.py
  • community/Bedtime-Wind-Down/main.py
  • community/Hubspot/README.md
  • community/Hubspot/__init__.py
  • community/Hubspot/main.py
  • community/MicrosoftMail/README.md
  • community/MicrosoftMail/__init__.py
  • community/MicrosoftMail/main.py
  • community/MicrosoftMail/refresh_token/README.md
  • community/MicrosoftMail/refresh_token/__init__.py
  • community/MicrosoftMail/refresh_token/get_refresh_token.py
  • community/Outlook/README.md
  • community/Outlook/__init__.py
  • community/Outlook/access_token/README.md
  • community/Outlook/access_token/__init__.py
  • community/Outlook/access_token/auth.py
  • community/Outlook/main.py
  • community/README.md
  • community/Twilio-SMS/README.md
  • community/Twilio-SMS/__init__.py
  • community/Twilio-SMS/main.py
  • community/WeatherPro/README.md
  • community/WeatherPro/__init__.py
  • community/WeatherPro/main.py
  • community/add-flight-information-email/README.md
  • community/add-flight-information-email/__init__.py
  • community/add-flight-information-email/main.py
  • community/air-quality-checker/README.md
  • community/air-quality-checker/__init__.py
  • community/air-quality-checker/main.py
  • community/alarm-timer/README.md
  • community/alarm-timer/__init__.py
  • community/alarm-timer/background.py
  • community/alarm-timer/main.py
  • community/astronomy-guide/README.md
  • community/astronomy-guide/__init__.py
  • community/astronomy-guide/main.py
  • community/calculator/README.md
  • community/calculator/__init__.py
  • community/calculator/config.json
  • community/calculator/main.py
  • community/coding-agent-runner/README.md
  • community/coding-agent-runner/__init__.py
  • community/coding-agent-runner/main.py
  • community/coin-flipper/README.md
  • community/coin-flipper/__init__.py
  • community/coin-flipper/main.py
  • community/crypto-insight/README.md
  • community/crypto-insight/__init__.py
  • community/crypto-insight/main.py
  • community/dad-joke-teller/README.md
  • community/dad-joke-teller/__init__.py
  • community/dad-joke-teller/main.py
  • community/daily-briefing/README.md
  • community/daily-briefing/__init__.py
  • community/daily-briefing/main.py
  • community/dev-standup-assistant/README.md
  • community/dev-standup-assistant/__init__.py
  • community/dev-standup-assistant/main.py
  • community/discord-connector/README.md
  • community/discord-connector/__init__.py
  • community/discord-connector/main.py
  • community/dungeon-master-voice/README.md
  • community/dungeon-master-voice/__init__.py
  • community/dungeon-master-voice/dm_personalities.py
  • community/dungeon-master-voice/main.py
  • community/earthquake-monitor/README.md
  • community/earthquake-monitor/__init__.py
  • community/earthquake-monitor/main.py
  • community/flight-price-checker/README.md
  • community/flight-price-checker/__init__.py
  • community/flight-price-checker/main.py
  • community/food-water-log/README.md
  • community/food-water-log/__init__.py
  • community/food-water-log/main.py
  • community/gdrive-voice-manager/README.md
  • community/gdrive-voice-manager/__init__.py
  • community/gdrive-voice-manager/main.py
  • community/github-voice-manager/README.md
  • community/github-voice-manager/__init__.py
  • community/github-voice-manager/main.py
  • community/gmail-connector/README.md
  • community/gmail-connector/__init__.py
  • community/gmail-connector/main.py
  • community/google-daily-brief/README.md
  • community/google-daily-brief/__init__.py
  • community/google-daily-brief/main.py

Please remove changes to files outside community/.
If you need changes elsewhere, open an issue to discuss with maintainers.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

🔀 Branch Merge Check

PR direction: feat/hermes-templatemain

Failed — Community PRs must target 'dev', not 'main'. Close this PR and re-open against 'dev'.

Allowed for community contributors:

your-ability-branch  →  dev     ✅

Blocked patterns:

anything             →  main    ❌
dev                 →  dev     ❌
main                →  dev     ❌

Close this PR and re-open it with the correct branch direction.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

❌ Ability Validation Failed

📋 Validating: community/Bedtime-Wind-Down
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/Hubspot
  ✅ All checks passed!

📋 Validating: community/MicrosoftMail
  ✅ All checks passed!

📋 Validating: community/Outlook
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ 1 error(s) found

📋 Validating: community/README.md
  ❌ Not a directory: community/README.md

📋 Validating: community/Twilio-SMS
  ✅ All checks passed!

📋 Validating: community/WeatherPro
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/add-flight-information-email
  ✅ All checks passed!

📋 Validating: community/air-quality-checker
  ✅ All checks passed!

📋 Validating: community/alarm-timer
  ✅ All checks passed!

📋 Validating: community/astronomy-guide
  ✅ All checks passed!

📋 Validating: community/calculator
  ✅ All checks passed!

📋 Validating: community/coding-agent-runner
  ✅ All checks passed!

📋 Validating: community/coin-flipper
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/crypto-insight
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/dad-joke-teller
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/daily-briefing
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/dev-standup-assistant
  ✅ All checks passed!

📋 Validating: community/discord-connector
  ✅ All checks passed!

📋 Validating: community/dungeon-master-voice
  ✅ All checks passed!

📋 Validating: community/earthquake-monitor
  ✅ All checks passed!

📋 Validating: community/flight-price-checker
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ 1 error(s) found

📋 Validating: community/food-water-log
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/gdrive-voice-manager
  ✅ All checks passed!

📋 Validating: community/github-voice-manager
  ✅ All checks passed!

📋 Validating: community/gmail-connector
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/google-daily-brief
  ✅ All checks passed!

📋 Validating: community/google-tasks
  ✅ All checks passed!

📋 Validating: community/grocery-list-manager
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/hn-digest
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/language-phrase-helper
  ✅ All checks passed!

📋 Validating: community/live-flight-status
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Must declare 'worker: AgentWorker = None' as a class attribute
  ❌ Must declare 'capability_worker: CapabilityWorker = None' as a class attribute
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 4 error(s) found

📋 Validating: community/local-event-explorer
  ⚠️  Found 2 classes — only one class per main.py is recommended
  ✅ All checks passed!

📋 Validating: community/magic8ball
  ✅ All checks passed!

📋 Validating: community/mealmate-ability
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/meditation-breathing-guide
  ✅ All checks passed!

📋 Validating: community/micro-adventure-planner
  ✅ All checks passed!

📋 Validating: community/movie-recommender
  ✅ All checks passed!

📋 Validating: community/mtg-game-master
  ✅ All checks passed!

📋 Validating: community/n8n-commander
  ✅ All checks passed!

📋 Validating: community/noise-machine
  ✅ All checks passed!

📋 Validating: community/outlook-daily-brief
  ✅ All checks passed!

📋 Validating: community/package-tracker
  ✅ All checks passed!

📋 Validating: community/pet-care-assistant
  ⚠️  Found 5 classes — only one class per main.py is recommended
  ✅ All checks passed!

📋 Validating: community/plant-care-reminder
  ✅ All checks passed!

📋 Validating: community/pomodoro-timer
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/quiet-company
  ✅ All checks passed!

📋 Validating: community/real-time-forex-metal-data
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Must declare 'worker: AgentWorker = None' as a class attribute
  ❌ Must declare 'capability_worker: CapabilityWorker = None' as a class attribute
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 4 error(s) found

📋 Validating: community/recipe-coach
  ✅ All checks passed!

📋 Validating: community/redcast-checker
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/reddit-daily-digest
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/restaurant-recommendation
  ✅ All checks passed!

📋 Validating: community/salesforce
  ✅ All checks passed!

📋 Validating: community/smart-sous-chef
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/todoist-voice-tasks
  ✅ All checks passed!

📋 Validating: community/traffic-travel-time
  ✅ All checks passed!

📋 Validating: community/vibe-trivia
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ assert statements are not allowed — use proper error handling instead
  ❌ Must declare 'worker: AgentWorker = None' as a class attribute
  ❌ Must declare 'capability_worker: CapabilityWorker = None' as a class attribute
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 5 error(s) found

📋 Validating: community/voice-journal
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/voice-memory-capture
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/voice-unit-converter
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/volume-control
  ✅ All checks passed!

📋 Validating: community/whatsapp-messenger
  ✅ All checks passed!

📋 Validating: community/x-news-feed
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 2 error(s) found

📋 Validating: community/youtube-search-play
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ MD5 is a weak hash and not allowed — use a stronger algorithm like SHA-256
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 3 error(s) found

📋 Validating: official/audius-music-dj
  ❌ Use self.worker.session_tasks.sleep() instead of asyncio.sleep()
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 3 error(s) found

📋 Validating: official/basic-advisor
  ❌ Missing required file: __init__.py
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 3 error(s) found

📋 Validating: official/date-and-time
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ resume_normal_flow() must be called — without it, the Personality gets stuck
  ❌ Must declare 'worker: AgentWorker = None' as a class attribute
  ❌ Must declare 'capability_worker: CapabilityWorker = None' as a class attribute
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 5 error(s) found

📋 Validating: official/music-player
  ❌ Missing required file: __init__.py
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 3 error(s) found

📋 Validating: official/perplexity-web-search
  ✅ All checks passed!

📋 Validating: official/quiz-game
  ❌ Missing required file: __init__.py
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 3 error(s) found

📋 Validating: official/sound-generator
  ❌ Missing required file: __init__.py
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 3 error(s) found

📋 Validating: official/weather
  ❌ Missing required file: __init__.py
  ❌ raw open() is not allowed — use capability_worker file helpers (read_file, write_file, etc.) instead
  ❌ Missing register capability tag — add one of the following to your class:
    #{{register_capability}}
    # {{register_capability}}
See: https://docs.openhome.com/how_to_build_an_ability
  ❌ 3 error(s) found

📚 How to fix

@github-actions github-actions Bot added ci-cd CI/CD and automation community-ability Community-contributed ability official-ability Official ability maintained by OpenHome documentation Documentation improvements templates Starter templates labels Jun 9, 2026
@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

🔍 Lint Results

__init__.py — Empty as expected

Files linted: community/Bedtime-Wind-Down/main.py community/Hubspot/main.py community/MicrosoftMail/main.py community/MicrosoftMail/refresh_token/get_refresh_token.py community/Outlook/access_token/auth.py community/Outlook/main.py community/Twilio-SMS/main.py community/WeatherPro/main.py community/add-flight-information-email/main.py community/air-quality-checker/main.py community/alarm-timer/background.py community/alarm-timer/main.py community/astronomy-guide/main.py community/calculator/main.py community/coding-agent-runner/main.py community/coin-flipper/main.py community/crypto-insight/main.py community/dad-joke-teller/main.py community/daily-briefing/main.py community/dev-standup-assistant/main.py community/discord-connector/main.py community/dungeon-master-voice/dm_personalities.py community/dungeon-master-voice/main.py community/earthquake-monitor/main.py community/flight-price-checker/main.py community/food-water-log/main.py community/gdrive-voice-manager/main.py community/github-voice-manager/main.py community/gmail-connector/main.py community/google-daily-brief/main.py

✅ Flake8 — Passed

✅ All checks passed!

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

Labels

ci-cd CI/CD and automation community-ability Community-contributed ability documentation Documentation improvements official-ability Official ability maintained by OpenHome templates Starter templates

Projects

None yet

Development

Successfully merging this pull request may close these issues.