← Back to Skills Marketplace
usimic

Ha Integration Patterns

by usimic · GitHub ↗ · v1.0.0
cross-platform ✓ Security Clean
1066
Downloads
0
Stars
1
Active Installs
1
Versions
Install in OpenClaw
/install ha-integration-patterns
Description
Home Assistant custom integration patterns and architectural decisions. Use when building HACS integrations, custom components, or API bridges for Home Assistant. Covers service response data, HTTP views, storage APIs, and integration architecture.
README (SKILL.md)

Home Assistant Integration Patterns

Service Response Data Pattern

The Problem

By default, HA services are "fire-and-forget" and return empty arrays [].

The Solution (HA 2023.7+)

Register service with supports_response:

from homeassistant.helpers.service import SupportsResponse

hass.services.async_register(
    domain, 
    "get_full_config", 
    handle_get_full_config,
    schema=GET_CONFIG_SCHEMA,
    supports_response=SupportsResponse.ONLY,  # ← KEY PARAMETER
)

Call with ?return_response flag:

curl -X POST "$HA_URL/api/services/your_domain/get_full_config?return_response"

Response Handler

async def handle_get_full_config(hass: HomeAssistant, call: ServiceCall):
    """Handle the service call and return data."""
    # ... your logic ...
    return {"entities": entity_data, "automations": automation_data}

HTTP View vs Service: When to Use Each

Use Case Use Don't Use
Return complex data HTTP View Service (without response support)
Fire-and-forget actions Service HTTP View
Trigger automations Service HTTP View
Query state/config HTTP View Internal storage APIs

HTTP View Pattern

For data retrieval APIs:

from homeassistant.components.http import HomeAssistantView

class OpenClawConfigView(HomeAssistantView):
    """HTTP view for retrieving config."""
    url = "/api/openclaw/config"
    name = "api:openclaw:config"
    requires_auth = True

    async def get(self, request):
        hass = request.app["hass"]
        config = await get_config_data(hass)
        return json_response(config)

# Register in async_setup:
hass.http.register_view(OpenClawConfigView())

Critical: Avoid Internal APIs

Never use underscore-prefixed APIs — they're private and change between versions.

Wrong:

storage_collection = hass.data["_storage_collection"]

Right:

# Use public APIs only
from homeassistant.helpers.storage import Store
store = Store(hass, STORAGE_VERSION, STORAGE_KEY)

Storage Patterns

For Small Data (Settings, Cache)

from homeassistant.helpers.storage import Store

STORAGE_KEY = "your_domain.storage"
STORAGE_VERSION = 1

store = Store(hass, STORAGE_VERSION, STORAGE_KEY)

# Save
data = {"entities": modified_entities}
await store.async_save(data)

# Load
data = await store.async_load()

For Large Data (History, Logs)

Use external database or file storage, not HA storage helpers.


Breaking Changes to Watch

Change Version Migration
Conversation agents 2025.x+ Use async_process directly
Service response data 2023.7+ Add supports_response param
Config entry migration 2022.x+ Use async_migrate_entry

Always check: https://www.home-assistant.io/blog/ for your target version range.


HACS Integration Structure

custom_components/your_domain/
├── __init__.py          # async_setup_entry
├── config_flow.py       # UI configuration
├── manifest.json        # Dependencies, version
├── services.yaml        # Service definitions
└── storage_services.py  # Your storage logic

Minimal manifest.json

{
  "domain": "your_domain",
  "name": "Your Integration",
  "codeowners": ["@yourusername"],
  "config_flow": true,
  "dependencies": [],
  "requirements": [],
  "version": "1.0.0"
}

Testing Checklist

  • Service calls return expected data (with ?return_response)
  • HTTP views accessible with auth token
  • No underscore-prefixed API usage
  • Storage persists across restarts
  • Config flow creates config entry
  • Error handling returns meaningful messages

Documentation Resources

  • Integration basics: developers.home-assistant.io/docs/creating_integration_index
  • Service calls: developers.home-assistant.io/docs/dev_101_services
  • HTTP views: developers.home-assistant.io/docs/api/webserver
  • Breaking changes: home-assistant.io/blog/ (filter by version)
  • HACS guidelines: hacs.xyz/docs/publish/start

Lesson Learned

From HA-OpenClaw Bridge attempt:

"80% of our issues were discoverable with 30-60 minutes of upfront docs reading. We jumped straight to coding based on assumptions rather than reading how HA actually works."

Use skills/pre-coding-research/ methodology before starting.

Usage Guidance
This appears to be a straightforward, coherent guide for writing Home Assistant integrations. Before using it in a production project: (1) cross-check examples and breaking-change notes against the official Home Assistant developer docs (the skill provides links); (2) be aware example commands reference an HA_URL and auth token — keep tokens secret and test in a dev instance; (3) the skill has no source/homepage listed — if you plan to copy templates or manifest content into a published integration (HACS), confirm licensing and origin; (4) always review any code you paste into an integration (the guidance is safe, but mistakes in your implementation can introduce vulnerabilities).
Capability Analysis
Type: OpenClaw Skill Name: ha-integration-patterns Version: 1.0.0 The skill bundle contains metadata and a markdown document providing architectural guidance and best practices for developing Home Assistant integrations. The content is purely educational, offering advice on service responses, HTTP views, storage, and avoiding internal APIs. There are no executable commands for the agent, no prompt injection attempts, no data exfiltration, or any other malicious indicators. The provided code snippets are illustrative examples for human developers, not instructions for the AI agent to execute.
Capability Assessment
Purpose & Capability
The name/description (HA integration patterns) matches the SKILL.md content: service responses, HTTP views, storage, manifest structure, and testing guidance. There are no unrelated requirements (no binaries, env vars, or installs) that conflict with the stated purpose.
Instruction Scope
The instructions stay on-topic: describe HA APIs, code examples, and testing checks. The doc does not ask the agent to read unrelated system files, exfiltrate data, or call unexpected external endpoints. Minor note: examples reference an environment variable ($HA_URL) and mention using auth tokens, but these are illustrative examples relevant to testing and expected for integration development.
Install Mechanism
No install spec and no code files — instruction-only content. This minimizes on-disk execution risk; nothing is downloaded or installed by the skill itself.
Credentials
The skill declares no required environment variables or credentials, which is proportional for documentation/guidance. Example snippets reference an HA_URL and auth tokens for testing, which is expected for Home Assistant integrations but are not requested by the skill itself.
Persistence & Privilege
always is false and the skill is not asking for any elevated or persistent platform privileges. Autonomous model invocation is allowed (platform default) but the skill is instruction-only so it cannot execute code or persist artifacts on its own.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install ha-integration-patterns
  3. After installation, invoke the skill by name or use /ha-integration-patterns
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release of Home Assistant Integration Patterns documentation. - Provides architectural guidance for Home Assistant custom integrations, HACS components, and API bridges. - Explains how to return data from services with the new `supports_response` parameter. - Details when to use HTTP views versus services, with code samples. - Highlights safe use of storage APIs, avoiding internal/private APIs. - Includes HACS integration file structure and minimal `manifest.json` example. - Features a practical testing checklist and documentation links. - Summarizes key lessons learned from real integration scenarios.
Metadata
Slug ha-integration-patterns
Version 1.0.0
License
All-time Installs 1
Active Installs 1
Total Versions 1
Frequently Asked Questions

What is Ha Integration Patterns?

Home Assistant custom integration patterns and architectural decisions. Use when building HACS integrations, custom components, or API bridges for Home Assistant. Covers service response data, HTTP views, storage APIs, and integration architecture. It is an AI Agent Skill for Claude Code / OpenClaw, with 1066 downloads so far.

How do I install Ha Integration Patterns?

Run "/install ha-integration-patterns" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Ha Integration Patterns free?

Yes, Ha Integration Patterns is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Ha Integration Patterns support?

Ha Integration Patterns is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Ha Integration Patterns?

It is built and maintained by usimic (@usimic); the current version is v1.0.0.

💬 Comments