Problem
Installing browser-harness as a skill in Hermes Agent leaves the agent unable to discover domain-skills/ content — sites with a checked-in skill still get a reinvented approach. Verified by reading the Hermes source at ~/.hermes/hermes-agent/.
The same failure will affect any agent system combining (a) a lazy-loading skill loader with (b) a scanner that only indexes files literally named SKILL.md with YAML frontmatter.
1. Hermes is lazy-load — the SKILL.md body isn't in the default system prompt
build_skills_system_prompt (agent/prompt_builder.py:595) emits only - <name>: <description> per skill into <available_skills> (prompt_builder.py:786). The body is read only when the agent calls skill_view(name) as a tool — see _load_skill_payload at agent/skill_commands.py:152.
Hermes's own system prompt confirms the design (prompt_builder.py:792):
Before replying, scan the skills below. If a skill matches or is even partially relevant to your task, you MUST load it with skill_view(name) and follow its instructions.
browser-harness's SKILL.md says "After cloning the repo, search domain-skills/ first for the domain you are working on." But that instruction sits behind the lazy-load. If the agent doesn't match browser-harness to the task from the short description alone, it never sees the rule.
2. Files under domain-skills/ aren't named SKILL.md, so Hermes can't index them
Hermes's scanner looks only for files literally named SKILL.md:
iter_skill_index_files(skills_dir, "SKILL.md") — agent/prompt_builder.py:678
rglob("SKILL.md") — tools/skills_tool.py:572
It also requires YAML frontmatter with name and description.
browser-harness's domain skills are domain-skills/<site>/scraping.md, invitation-manager.md, upload.md, etc. — none named SKILL.md, none with frontmatter. Even if a Hermes user adds <repo>/domain-skills to skills.external_dirs in ~/.hermes/config.yaml, zero skills surface.
Impact
Even after loading the main browser-harness skill, a Hermes agent still has to rg --files domain-skills manually — same as if no skill had loaded. The ~70 checked-in domain skills are effectively invisible to Hermes users. The "contribute back" loop also suffers: agents that can't see what's already there are less likely to notice the gap and file it.
Reporter's experience: installed browser-harness as a Hermes skill, asked for site-specific work, agent didn't consult the existing domain skill for that site and produced a worse-than-necessary approach.
Current workaround (zero config)
Paste-in prompt per Hermes session:
Read ~/Developer/browser-harness/SKILL.md in full, then ~/Developer/browser-harness/helpers.py. The browser-harness CLI is on PATH — invoke via heredoc (no cd, no uv run). Set BU_NAME=hermes to avoid socket collisions with other agents. Before attempting a site-specific task, run rg --files ~/Developer/browser-harness/domain-skills and read any matching site's file.
Possible directions (non-prescriptive)
- Doc-only: add a Hermes section to
install.md alongside Codex / Claude Code, documenting the limitation and the paste-in prompt above.
- Structural: rename each domain-skill body to
SKILL.md with YAML frontmatter (name: <site>-<workflow>, description, category, optional metadata.hermes.tags). Each site becomes a first-class, auto-discoverable skill for any agent that follows the SKILL.md convention; Claude Code's @-import still works unchanged, and Hermes users only need to add the directory to skills.external_dirs once.
🤖 Filed with help from Claude Code — Hermes line references verified against the local checkout.
Problem
Installing browser-harness as a skill in Hermes Agent leaves the agent unable to discover
domain-skills/content — sites with a checked-in skill still get a reinvented approach. Verified by reading the Hermes source at~/.hermes/hermes-agent/.The same failure will affect any agent system combining (a) a lazy-loading skill loader with (b) a scanner that only indexes files literally named
SKILL.mdwith YAML frontmatter.1. Hermes is lazy-load — the SKILL.md body isn't in the default system prompt
build_skills_system_prompt(agent/prompt_builder.py:595) emits only- <name>: <description>per skill into<available_skills>(prompt_builder.py:786). The body is read only when the agent callsskill_view(name)as a tool — see_load_skill_payloadat agent/skill_commands.py:152.Hermes's own system prompt confirms the design (prompt_builder.py:792):
browser-harness's SKILL.md says "After cloning the repo, search
domain-skills/first for the domain you are working on." But that instruction sits behind the lazy-load. If the agent doesn't match browser-harness to the task from the short description alone, it never sees the rule.2. Files under
domain-skills/aren't namedSKILL.md, so Hermes can't index themHermes's scanner looks only for files literally named
SKILL.md:iter_skill_index_files(skills_dir, "SKILL.md")— agent/prompt_builder.py:678rglob("SKILL.md")— tools/skills_tool.py:572It also requires YAML frontmatter with
nameanddescription.browser-harness's domain skills are
domain-skills/<site>/scraping.md,invitation-manager.md,upload.md, etc. — none namedSKILL.md, none with frontmatter. Even if a Hermes user adds<repo>/domain-skillstoskills.external_dirsin~/.hermes/config.yaml, zero skills surface.Impact
Even after loading the main browser-harness skill, a Hermes agent still has to
rg --files domain-skillsmanually — same as if no skill had loaded. The ~70 checked-in domain skills are effectively invisible to Hermes users. The "contribute back" loop also suffers: agents that can't see what's already there are less likely to notice the gap and file it.Reporter's experience: installed browser-harness as a Hermes skill, asked for site-specific work, agent didn't consult the existing domain skill for that site and produced a worse-than-necessary approach.
Current workaround (zero config)
Paste-in prompt per Hermes session:
Possible directions (non-prescriptive)
install.mdalongside Codex / Claude Code, documenting the limitation and the paste-in prompt above.SKILL.mdwith YAML frontmatter (name: <site>-<workflow>,description,category, optionalmetadata.hermes.tags). Each site becomes a first-class, auto-discoverable skill for any agent that follows the SKILL.md convention; Claude Code's@-import still works unchanged, and Hermes users only need to add the directory toskills.external_dirsonce.🤖 Filed with help from Claude Code — Hermes line references verified against the local checkout.