diff --git a/agent/prompt_builder.py b/agent/prompt_builder.py index 080a3525e..b11cade39 100644 --- a/agent/prompt_builder.py +++ b/agent/prompt_builder.py @@ -1164,7 +1164,7 @@ def build_skills_system_prompt( or get_session_env("HERMES_SESSION_PLATFORM") or "" ) - disabled = get_disabled_skill_names() + disabled = get_disabled_skill_names(_platform_hint or None) cache_key = ( str(skills_dir.resolve()), tuple(str(d) for d in external_dirs), diff --git a/agent/skill_utils.py b/agent/skill_utils.py index 62bcc5a2b..f8676e2f6 100644 --- a/agent/skill_utils.py +++ b/agent/skill_utils.py @@ -305,13 +305,14 @@ def get_disabled_skill_names(platform: str | None = None) -> Set[str]: or os.getenv("HERMES_PLATFORM") or get_session_env("HERMES_SESSION_PLATFORM") ) + global_disabled = _normalize_string_set(skills_cfg.get("disabled")) if resolved_platform: platform_disabled = (skills_cfg.get("platform_disabled") or {}).get( resolved_platform ) if platform_disabled is not None: - return _normalize_string_set(platform_disabled) - return _normalize_string_set(skills_cfg.get("disabled")) + return global_disabled | _normalize_string_set(platform_disabled) + return global_disabled def _normalize_string_set(values) -> Set[str]: diff --git a/tests/agent/test_prompt_builder.py b/tests/agent/test_prompt_builder.py index e6c302fdb..07d5a2145 100644 --- a/tests/agent/test_prompt_builder.py +++ b/tests/agent/test_prompt_builder.py @@ -419,6 +419,7 @@ class TestBuildSkillsSystemPrompt: second = build_skills_system_prompt() assert "cached-skill" not in second + def test_includes_setup_needed_skills(self, monkeypatch, tmp_path): monkeypatch.setenv("HERMES_HOME", str(tmp_path)) monkeypatch.delenv("MISSING_API_KEY_XYZ", raising=False) diff --git a/tests/hermes_cli/test_skills_config.py b/tests/hermes_cli/test_skills_config.py index 7e2170a3e..094d79c5b 100644 --- a/tests/hermes_cli/test_skills_config.py +++ b/tests/hermes_cli/test_skills_config.py @@ -164,7 +164,7 @@ class TestGetDisabledSkillNames: from agent.skill_utils import get_disabled_skill_names result = get_disabled_skill_names(platform="telegram") - assert result == {"tg-only-skill"} + assert result == {"tg-only-skill", "global-skill"} def test_session_platform_env_var(self, tmp_path, monkeypatch): """HERMES_SESSION_PLATFORM should be used when HERMES_PLATFORM is unset.""" @@ -183,7 +183,7 @@ class TestGetDisabledSkillNames: from agent.skill_utils import get_disabled_skill_names result = get_disabled_skill_names() - assert result == {"discord-skill"} + assert result == {"discord-skill", "global-skill"} def test_hermes_platform_takes_precedence(self, tmp_path, monkeypatch): """HERMES_PLATFORM should win over HERMES_SESSION_PLATFORM."""