You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: drop ENABLE_SKILLS / ENABLE_SKILLS_AS_TOOLS toggles, rename to ha_list_resources / ha_read_resource
The two skills toggles were redundant once homeassistant-ai#960 (web settings UI) shipped:
the original justifications — "avoid local-skill conflicts" (skills served
via skill:// URIs and locally-installed skills under ~/.claude/skills/ live
in separate namespaces) and "don't burn extra context" (resources are not
auto-injected; list_resources only returns metadata) — don't survive
scrutiny. Per-tool visibility is now the single mechanism; users who want
ha_list_resources or ha_read_resource off can disable them from the web
settings UI like any other tool.
Changes:
- Drop enable_skills, enable_skills_as_tools, _skills_dependency validator
from src/ha_mcp/config.py.
- Always register SkillsDirectoryProvider and the ResourcesAsTools transform
in server._register_skills(); always include the skills hint in
_build_skills_instructions and the search-tool description.
- Rename the transform-generated tools list_resources / read_resource to
ha_list_resources / ha_read_resource via a HaResourcesAsTools subclass
so they follow the project's ha_<verb>_<noun> convention.
- Surface the renamed pair in the settings UI: extend _get_tool_metadata
with TRANSFORM_GENERATED_TOOLS stub injection, so users can disable them
per-tool (FastMCP's local_provider doesn't see transform-appended tools).
- Drop add-on toggles: enable_skills / enable_skills_as_tools removed from
homeassistant-addon{,-dev}/config.yaml schema + options, the env-var
setup and the .skills_as_tools_default_migration_v1 migration helper
removed from homeassistant-addon/start.py, and the supervisor labels
removed from homeassistant-addon-dev/translations/en.yaml (prod
translations sync at the next biweekly release).
- Simplify best_practice_checker: drop get_skill_prefix() and its callers;
always reference skill:// URIs.
- Tests: replace the obsolete enable_skills* assertions with
field-removal assertions, drop TestSkillsAsToolsMigration, update
unit tests for unconditional registration, add e2e coverage that
ha_list_resources / ha_read_resource appear (and unprefixed names
don't), add a unit test that _get_tool_metadata injects stubs when
local_provider omits them.
- README and homeassistant-addon-dev/DOCS.md: remove the toggle rows;
document the per-tool visibility path.
Migration note: existing users with ENABLE_SKILLS_AS_TOOLS=false lose
the env-var path. Equivalent opt-out is available per-tool in the web
settings UI, documented in DOCS.md and README. Same outcome is
achievable via the alternate mechanism, so this is not a breaking
change per AGENTS.md's definition.
Closeshomeassistant-ai#1133
Copy file name to clipboardExpand all lines: README.md
+2-5Lines changed: 2 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -225,12 +225,9 @@ An MCP server can create automations, helpers, and dashboards, but it has no opi
225
225
226
226
### Bundled Skills (built-in)
227
227
228
-
Skills from `homeassistant-ai/skills` are bundled and served as [MCP resources](https://modelcontextprotocol.io/docs/concepts/resources) via `skill://` URIs. Any MCP client that supports resources can discover them automatically — no manual installation needed.
228
+
Skills from `homeassistant-ai/skills` are bundled and served as [MCP resources](https://modelcontextprotocol.io/docs/concepts/resources) via `skill://` URIs. Any MCP client that supports resources can discover them automatically — no manual installation needed. For tool-only clients, the same skills are also exposed as `ha_list_resources` / `ha_read_resource` tools. Resources are not auto-injected into context — clients must explicitly request them, so idle context cost is just the metadata listing.
229
229
230
-
| Setting | Default | Description |
231
-
|---------|---------|-------------|
232
-
|`ENABLE_SKILLS`|`true`| Serve skills as MCP resources. Resources are not auto-injected into context — clients must explicitly request them. |
233
-
|`ENABLE_SKILLS_AS_TOOLS`|`true`| Expose skills and doc resources via `list_resources`/`read_resource` tools. Resource-capable clients can set to `false` to reduce tool count. |
230
+
If you want to hide either tool from the catalog, disable it from the web settings UI like any other tool.
234
231
235
232
Skills can still be installed manually for clients that prefer local skill files — see the [skills repo](https://github.com/homeassistant-ai/skills) for instructions.
|`enable_skills`| Serve bundled HA best-practice skills as MCP resources |`true`|
18
-
|`enable_skills_as_tools`| Expose skills via list_resources/read_resource tools |`true`|
19
17
|`enable_tool_search`| Replace full tool catalog with search-based discovery (~46K → ~5K tokens). ⚠️ Do NOT enable for Claude Sonnet/Opus — their built-in tool search conflicts with ha-mcp's. Disable one or the other. |`false`|
@@ -25,6 +23,8 @@ The dev add-on uses the same configuration as the stable version. See the main a
25
23
|`pinned_tools`| Comma-separated list of tool names to pin when tool search is enabled (seed value; web UI is primary) | empty |
26
24
|`verify_ssl`| Verify the HA server's TLS certificate. Disable for self-signed certs or hostname mismatches. Weakens security — leave on unless needed. |`true`|
27
25
26
+
*Removed in 7.4.x:*`enable_skills`*and*`enable_skills_as_tools`*. Bundled skills are now always served; to hide*`ha_list_resources`*or*`ha_read_resource`*from the catalog, disable them from the Tool Settings Web UI (see below).*
27
+
28
28
Beta options are hidden under "Show unused optional configuration options" in the add-on Configuration tab. See [beta.md](https://github.com/homeassistant-ai/ha-mcp/blob/master/docs/beta.md) for details.
0 commit comments