extended_openai_conversation
CLAUDE.md1.5k starsChanged 57 days agoMITView on GitHub
Extended OpenAI Conversation is a Home Assistant custom component that extends the built-in OpenAI Conversation integration. It adds a skills system, template functions, bash execution, file operations, AI Task entities, vision support, and multi-provider support (OpenAI, Azure OpenAI, compatible servers). CI dynamically fetches dependency versions from HA core's dev branch (openai, hassil, beautifulsoup4, etc.) and tests against both stable and dev Home Assistant. All source lives under customcomponents/extendedopenai_conversation/. Tests use pytest with pytest-asyncio and pytest-homeassistant-custom-component. All tests are async (asyncio_mode…
- Deletes or force-pushes
- Installs packages
We split this CLAUDE.md into the rules it gives an agent
3 rules. About 0 are common, 0 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 47
All source lives under custom_components/extended_openai_conversation/.
- Very specific: line 87
Import aliases enforced: voluptuous → vol, homeassistant.helpers.config_validation → cv
- Very specific: line 88
All I/O is async; use async_add_executor_job() for sync code
≈ “Common” is an estimate: at least 1 in 5 of the 25,680 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
Extended OpenAI Conversation is a Home Assistant custom component that extends the built-in OpenAI Conversation integration. It adds a skills system, template functions, bash execution, file operations, AI Task entities, vision support, and multi-provider support (OpenAI, Azure OpenAI, compatible servers).
Commands
Lint & Format
ruff check custom_components/
ruff format --check custom_components/
# Auto-fix:
ruff check --fix custom_components/
ruff format custom_components/Type Check
mypy custom_components/extended_openai_conversationTests
# All tests with coverage
pytest tests/ -v --timeout=30 --cov=custom_components/extended_openai_conversation --cov-report=term-missing
# Single test file
pytest tests/functions/test_native.py -v
# Single test
pytest tests/functions/test_native.py::test_function_name -vDev Setup
pip install -e ".[dev]"
pip install -r requirements_test.txtCI dynamically fetches dependency versions from HA core's dev branch (openai, hassil, beautifulsoup4, etc.) and tests against both stable and dev Home Assistant.
Architecture
All source lives under custom_components/extended_openai_conversation/.
Entry Point & Platforms
__init__.py sets up the OpenAI API client (AsyncClient or AsyncAzureOpenAI) and registers two platforms:
- conversation (
conversation.py,entity.py) —ExtendedOpenAIAgentEntityhandles user messages viaasync_process(): builds system prompt with exposed entities + skills, calls OpenAI API with tools, executes tool calls through Tools, iterates until completion. - ai_task (
ai_task.py) —ExtendedOpenAITaskEntityhandles background AI tasks with structured output (JSON schema), no tool calling.
Functions (functions/)
Abstract Function base class (functions/base.py) with implementations in separate files: native (HA services), template (Jinja2), script (HA scripts), web (REST/scrape), bash, file (read/write/edit), sqlite, composite (chains multiple). Each is registered by type string and resolved at tool-call time.
Skills System (skills.py)
SkillManager (singleton) discovers and loads skills from config/extended_openai_conversation/skills/. Each skill is a directory with a SKILL.md file (YAML frontmatter + markdown content). SkillMdParser handles parsing. Skills are lazy-loaded — only metadata is kept in memory until content is requested.
Config Flow (config_flow.py)
ConfigFlow for initial setup (API key, base URL, provider). ConfigSubentryFlow for per-conversation and per-ai-task settings (model, tokens, temperature, prompt template, functions YAML, skills selection).
Services (services.py)
query_image (vision API), change_config (runtime config updates), reload_skills, download_skill (from GitHub).
Security
- Workspace restriction for file operations (default:
extended_openai_conversation/) - Shell command deny patterns (rm -rf, format, etc.)
- File size limits (1 MB), bash timeout (300s), shell output limit (10,000 chars)
Test Structure
Tests use pytest with pytest-asyncio and pytest-homeassistant-custom-component. All tests are async (asyncio_mode = "auto" in pyproject.toml).
tests/
├── conftest.py # Fixtures: hass mock, llm_context, exposed_entities, temp_db_path
├── helpers.py # Test utilities
├── fixtures/ # Test data (functions YAML, mock responses)
└── functions/ # One test file per function typeKey Conventions
- Python 3.14+, HA minimum 2026.2.0b0
- Ruff rules: E, W, F, I, UP, RUF, B, SIM (E501 and B008 ignored)
- Import aliases enforced:
voluptuous→vol,homeassistant.helpers.config_validation→cv - All I/O is async; use
async_add_executor_job()for sync code - Custom exceptions in
exceptions.py(EntityNotFound, CallServiceError, TokenLengthExceededError, etc.) - System prompt uses Jinja2 templates with context:
ha_name,exposed_entities,current_device_id,user_input,skills
Trending
Steady talk.about the whole repository
Who's talking about jekalmin/extended_openai_conversation
- zigpy/zha-device-handlers“[Device Support Request] TS0601 _TZE284_o3x45p96”GitHub · Nov 27, 2024 · 8 reactions
- rhasspy/wyoming-satellite“Issue with conversation_id Being None in extended_openai_conversation”GitHub · Jan 30, 2024 · 7 reactions
- rhasspy/hassio-addons“[Question] Ability to call service to have Assist Microphone reactivate for continued conversation.”GitHub · Nov 14, 2023 · 4 reactions
- greghesp/ha-bambulab“[Bug] Warning on blocking call to load_default_certs”GitHub · Sep 6, 2024 · 3 reactions
- home-assistant/iOS“Assist on Watch results in endless spinner”GitHub · Mar 2, 2025 · 2 reactions
The biggest 5 of 45 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 45
Talked about on GitHub and Bluesky (45 times).
On GitHub · 44
- Nov 27, 2024[Device Support Request] TS0601 _TZE284_o3x45p96 — zigpy/zha-device-handlers8 reactions · 11 comments
- Jan 30, 2024Issue with conversation_id Being None in extended_openai_conversation — rhasspy/wyoming-satellite7 reactions · 17 comments
- Nov 14, 2023[Question] Ability to call service to have Assist Microphone reactivate for continued conversation. — rhasspy/hassio-addons4 reactions · 3 comments
- Sep 6, 2024[Bug] Warning on blocking call to load_default_certs — greghesp/ha-bambulab3 reactions · 5 comments
- Mar 2, 2025Assist on Watch results in endless spinner — home-assistant/iOS2 reactions · 5 comments
39 more on GitHub
- Aug 3, 2024Support Nested Parameters for Tools — ollama/ollama2 reactions · 10 comments
- May 20, 2025ECOVACS GOAT O800 RTK Robot Lawnmower — home-assistant/core1 reaction · 4 comments
- Jan 13, 2025Third Reality Motion Night Light - Min mireds is 0, setting to 153] Please open an issue on the quirks repo — zigpy/zha-device-handlers1 reaction · 2 comments
- Oct 13, 2026agent-skills.github.jekalmin.extended_openai_conversation: 2.0.2 → 2.0.3 — sudosubin/agents.nix0 reactions
- Oct 12, 2026Client: Home Assistant Extended OpenAI Conversation (OpenAI chat) — jjjermiah/opencode-plugboard0 reactions · 3 comments
- Oct 3, 2026agent-skills.github.jekalmin.extended_openai_conversation: 2.0.2-unstable-2026-05-17 → 2.0.2 — sudosubin/agents.nix0 reactions
- Sep 30, 2026fix(agent): include recommender-only companies in the post company registry — andrew-codes/andrew-codes0 reactions
- Sep 28, 2026agent-skills.github.jekalmin.extended_openai_conversation: init at 2.0.2-unstable-2026-05-17 — sudosubin/agents.nix0 reactions
- Sep 3, 2026Levoit/VeSync Core200S - subprofile without matching device — bramstroker/homeassistant-powercalc0 reactions · 4 comments
- Aug 26, 2026[VW EU] ID.4 — EU Data Act polls succeed but no data (continuous feed not provisioned) — its-me-prash/vwgroup-connect-ha0 reactions · 37 comments
- Aug 9, 2026Incomplete capability coverage for Samsung Refrigerator (TP1X_REF_21K) — mbillow/localthings0 reactions · 1 comment
- Aug 9, 2026Incomplete capability coverage for Samsung Microwave (TP2X_DA-KS-MICROWAVE-01011) — mbillow/localthings0 reactions · 1 comment
- Jul 13, 2026Add full DP exposure for _TZE200_68nvbio9/_TZE200_cf1sl3tj covers — zigpy/zha-device-handlers0 reactions · 1 comment
- Jun 30, 2026AstralPool Energy Connect (CC25017029) falling back to generic profile with swapped sensors <=v2.43.6) — foXaCe/Fluidra-pool0 reactions · 1 comment
- Jun 12, 2026[Bug]: Unknown loop_mode value: 5 for spotify song loop — mjcumming/wiim0 reactions · 1 comment
- Apr 20, 2026Minimum position mode switch for force override not working — jrhubott/adaptive-cover-pro0 reactions · 5 comments
- Feb 15, 2026[Bug] H2C showing image for H2D in card — greghesp/ha-bambulab0 reactions · 1 comment
- Feb 13, 2026Contact Sensor (unsupported) — azerty9971/xtend_tuya0 reactions · 3 comments
- Feb 1, 2026Feature request - use mcp tools configured in the llm — damiannos/ha-extended-openai-conversation-v20 reactions · 1 comment
- Jan 31, 2026Using this with "Extended OpenAI Conversation" doesn't seem to work — Pewidot/ha_voice_alarms0 reactions · 1 comment
- Aug 27, 2025Not working on latest HA 2025.8.3 — Uthagsvagen/openai_conversation_plus0 reactions · 1 comment
- Aug 22, 2025OpenAI Converasation not working — home-assistant/core0 reactions · 3 comments
- Jul 30, 2025Missing Programs for Miele Dishwasher "Unknown" — home-assistant/core0 reactions · 6 comments
- Jul 11, 2025[Bug] AMS entities lose personalized names every time the integration loads — greghesp/ha-bambulab0 reactions · 6 comments
- Jun 30, 2025Missing Custom Repositories From HACS Front End — hacs/integration0 reactions · 15 comments
- Jun 9, 2025Goodwe Inverter Problem with 2nd Battery Stack — home-assistant/core0 reactions · 9 comments
- Jun 5, 2025[Bug] Temperature of left and right nozzle on H2D always 0 — greghesp/ha-bambulab0 reactions · 1 comment
- Jun 5, 2025Missing solar production — WillCodeForCats/solaredge-modbus-multi0 reactions · 3 comments
- May 23, 2025Comfee MDDF-16DEN7 WF, missing water tank full entity — wuwentao/midea_ac_lan0 reactions · 1 comment
- Mar 10, 2025[Bug] Click in AMS Card raises: "The action requires responses and must be called with return_response=True." — greghesp/ha-bambulab0 reactions · 16 comments
- Mar 3, 2025[Bug] "Failed to connect. Check provided settings" — greghesp/ha-bambulab0 reactions · 10 comments
- Nov 11, 2024Govee to MQTT Bridge issue with Home Assistant — wez/govee2mqtt0 reactions · 6 comments
- Jul 23, 2024[Device Support Request] _TZE200_rmymn92d — zigpy/zha-device-handlers0 reactions · 3 comments
- May 22, 2024Jleinenbach patch adds is_exposed for 1.0.4 - for templates and scripts — jleinenbach/extended_openai_conversation0 reactions
- May 22, 2024Update README.md — jleinenbach/extended_openai_conversation0 reactions
- May 21, 2024Update helpers.py to solve issue 217 — jleinenbach/extended_openai_conversation0 reactions
- May 2, 2024Response needs to process functions [panic: Unrecognized schema: map[]] — mudler/LocalAI0 reactions · 30 comments
- Jan 15, 2024Building a fully local LLM voice assistant to control my smart home — guevara/read-it-later0 reactions
- Dec 31, 2023Adds new integration [jekalmin/extended_openai_conversation] — hacs/default0 reactions · 1 comment
On Bluesky · 1
- Dec 19, 2024Works great for me with github.com/jekalmin/ext... But yes, that's openAI. Difficult choice between privacy and performance... — @danieldejong.io1 likes and repost · 1 reply
In this repositoryOne other file it gives its agents.
- docs/AGENTS.mdAGENTS.md
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

