π Documentation Issue
Where is the issue?
Other β contributor documentation (AGENTS.md and .gemini/styleguide.md)
What's wrong or unclear?
AGENTS.md and .gemini/styleguide.md give incongruent rules for MCP tool naming, which causes two concrete problems:
- A contributor who follows one doc will be flagged by Gemini Code Assist when the other runs on their PR.
- Neither doc matches the actual tool surface. A significant fraction of current tools don't fit the stated rule, and the rule's own examples contradict the rule's pattern line.
Specific incongruences:
AGENTS.md β Writing MCP Tools β Naming Convention:
- States the pattern is
ha_<verb>_<noun>.
- Lists 7 verbs:
get, list, search, set, delete, remove, call.
- But the examples for
set, delete, and remove all show a ha_config_<verb>_<noun> form (ha_config_set_helper, ha_config_delete_dashboard, ha_config_remove_area) β i.e., config sits in the verb slot, which doesn't match the opening pattern line. So the rule line and its own examples disagree about whether a ha_config_* namespace prefix is allowed.
.gemini/styleguide.md β Tool Naming Convention:
- Says tools MUST follow
ha_<verb>_<noun>.
- Lists only 6 verbs:
get, list, search, set, delete, call. remove is missing.
- Flags MEDIUM severity if tools don't follow the pattern.
- Doesn't mention the
ha_config_* namespace variant at all.
Result: any tool named ha_remove_* or ha_config_remove_* follows AGENTS.md but will be flagged MEDIUM by Gemini Code Assist. Any tool in the ha_config_<verb>_* family strictly violates both docs' opening pattern line but is blessed by AGENTS.md's examples.
Current state of the tool surface (86 tools audited):
- 34 strictly conforming to
ha_<verb>_<noun> (e.g., ha_get_state, ha_set_entity, ha_call_service, ha_set_config_entry_helper).
- 34 in the
ha_config_<verb>_<noun> family (e.g., ha_config_set_helper, ha_config_set_automation, ha_config_remove_area). Blessed by AGENTS.md examples; not by the pattern line; not mentioned in the gemini styleguide.
- ~18 exceptions using verbs outside the approved list (
backup_create, backup_restore, check_config, eval_template, hacs_*, import_blueprint, install_mcp_tools, read_file, reload_core, report_issue, restart, update_device, write_file, deep_search, bulk_control). Some of these (like ha_restart, ha_reload_core, ha_report_issue) are one-off operations where forcing a get/set/call verb would read worse than the current name; those should probably stay as-is and be documented as accepted exceptions.
How should it be fixed?
Pick one of these two directions and make both docs internally consistent with each other and with the tool surface:
Option A β Update the docs to match reality. Keep the current tool names. Rewrite AGENTS.md so the rule line explicitly permits the ha_[config_]<verb>_<noun> shape (or documents ha_config_* as an accepted namespace prefix for config-management tools). Add remove to the gemini styleguide. Document a short list of accepted one-off exceptions (ha_restart, ha_reload_core, ha_report_issue, etc.) so they stop being violations-that-aren't. This is the low-churn option and probably the right one.
Option B β Update the tool names to match the rule. Rename the 34-tool ha_config_* family to strictly follow ha_<verb>_<noun> (e.g., ha_config_set_helper β ha_set_helper, ha_config_set_automation β ha_set_automation, etc.). High churn, touches every client, every doc, every test, and collides with ha_set_config_entry_helper's existing name.
Either way, after the fix:
AGENTS.md's rule line and its examples should agree.
AGENTS.md and .gemini/styleguide.md should use the same verb list and the same pattern.
- Accepted exceptions should be listed explicitly so Gemini Code Assist and contributors stop flagging them.
Additional context
This came up while working on #942 (hardening ha_config_set_yaml's description). The investigation exposed that ha_config_set_helper doesn't accept helper_type="template" while ha_set_config_entry_helper does β which is a separate (semantic) issue, but the naming inconsistency between the two tools made the confusion worse. This issue is specifically about the documentation vs. tool-surface drift; the helper-tool-merge question is deliberately out of scope here.
One-off tools like ha_restart, ha_reload_core, ha_report_issue, ha_check_config, and similar should be explicitly allowed as exceptions rather than renamed β those names are clearer as-is than forcing them into a ha_call_<noun> or ha_get_<noun> shape.
Additionally I'd like to add "manage" as a verb, OR alternatively add into the agents/styleguide that we can add new verbs if no other verb fits when adding new types of tools.
π Documentation Issue
Where is the issue?
Other β contributor documentation (
AGENTS.mdand.gemini/styleguide.md)What's wrong or unclear?
AGENTS.mdand.gemini/styleguide.mdgive incongruent rules for MCP tool naming, which causes two concrete problems:Specific incongruences:
AGENTS.mdβWriting MCP Tools β Naming Convention:ha_<verb>_<noun>.get,list,search,set,delete,remove,call.set,delete, andremoveall show aha_config_<verb>_<noun>form (ha_config_set_helper,ha_config_delete_dashboard,ha_config_remove_area) β i.e.,configsits in the verb slot, which doesn't match the opening pattern line. So the rule line and its own examples disagree about whether aha_config_*namespace prefix is allowed..gemini/styleguide.mdβTool Naming Convention:ha_<verb>_<noun>.get,list,search,set,delete,call.removeis missing.ha_config_*namespace variant at all.Result: any tool named
ha_remove_*orha_config_remove_*followsAGENTS.mdbut will be flagged MEDIUM by Gemini Code Assist. Any tool in theha_config_<verb>_*family strictly violates both docs' opening pattern line but is blessed byAGENTS.md's examples.Current state of the tool surface (86 tools audited):
ha_<verb>_<noun>(e.g.,ha_get_state,ha_set_entity,ha_call_service,ha_set_config_entry_helper).ha_config_<verb>_<noun>family (e.g.,ha_config_set_helper,ha_config_set_automation,ha_config_remove_area). Blessed byAGENTS.mdexamples; not by the pattern line; not mentioned in the gemini styleguide.backup_create,backup_restore,check_config,eval_template,hacs_*,import_blueprint,install_mcp_tools,read_file,reload_core,report_issue,restart,update_device,write_file,deep_search,bulk_control). Some of these (likeha_restart,ha_reload_core,ha_report_issue) are one-off operations where forcing aget/set/callverb would read worse than the current name; those should probably stay as-is and be documented as accepted exceptions.How should it be fixed?
Pick one of these two directions and make both docs internally consistent with each other and with the tool surface:
Option A β Update the docs to match reality. Keep the current tool names. Rewrite
AGENTS.mdso the rule line explicitly permits theha_[config_]<verb>_<noun>shape (or documentsha_config_*as an accepted namespace prefix for config-management tools). Addremoveto the gemini styleguide. Document a short list of accepted one-off exceptions (ha_restart,ha_reload_core,ha_report_issue, etc.) so they stop being violations-that-aren't. This is the low-churn option and probably the right one.Option B β Update the tool names to match the rule. Rename the 34-tool
ha_config_*family to strictly followha_<verb>_<noun>(e.g.,ha_config_set_helperβha_set_helper,ha_config_set_automationβha_set_automation, etc.). High churn, touches every client, every doc, every test, and collides withha_set_config_entry_helper's existing name.Either way, after the fix:
AGENTS.md's rule line and its examples should agree.AGENTS.mdand.gemini/styleguide.mdshould use the same verb list and the same pattern.Additional context
This came up while working on #942 (hardening
ha_config_set_yaml's description). The investigation exposed thatha_config_set_helperdoesn't accepthelper_type="template"whileha_set_config_entry_helperdoes β which is a separate (semantic) issue, but the naming inconsistency between the two tools made the confusion worse. This issue is specifically about the documentation vs. tool-surface drift; the helper-tool-merge question is deliberately out of scope here.One-off tools like
ha_restart,ha_reload_core,ha_report_issue,ha_check_config, and similar should be explicitly allowed as exceptions rather than renamed β those names are clearer as-is than forcing them into aha_call_<noun>orha_get_<noun>shape.Additionally I'd like to add "manage" as a verb, OR alternatively add into the agents/styleguide that we can add new verbs if no other verb fits when adding new types of tools.