Skip to content

feat(skills): add hermes platform target - #953

Merged
platinummonkey merged 1 commit into
DataDog:mainfrom
jgiunti-coatue1:feat/skills-hermes-platform
Oct 27, 2026
Merged

platinummonkey merged 1 commit into
DataDog:mainfrom
jgiunti-coatue1:feat/skills-hermes-platform

Conversation

@jgiunti-coatue1

Copy link
Copy Markdown

Summary

Add Hermes Agent as a supported platform for pup skills install, following the same shape as the devin target (#b333373). Hermes reads SKILL.md skills from ~/.hermes/skills/ (user-global) and <repo>/.hermes/skills/ (project-local), and exports HERMES_AGENT=true into every shell command it runs, so pup can both install skills for it and auto-detect it.

Changes

  • Register hermes in PLATFORMS and add SkillsPlatform::Hermes + as_canonical arm (src/skills.rs:681, src/skills.rs:717, src/skills.rs:736). Both scopes resolve to .hermes/skills; agents fall back to SKILL.md like cursor/codex/devin.
  • Add a hermes detector keyed on the HERMES_AGENT truthy marker, placed before generic-agent (src/useragent.rs:109). Source: Hermes exports HERMES_AGENT="${HERMES_AGENT:-true}" in tools/environments/base_session_env.py.
  • Surface hermes in the skills help text (src/main.rs:2758), the resolve error hints (src/commands/skills.rs:18-33), the README Agent Skills section, docs/COMMANDS.md, and the agent detection list in docs/ARCHITECTURE.md.

Not included (intentionally, to keep one concern per PR): honoring HERMES_HOME for user-scope installs, analogous to CLAUDE_CONFIG_DIR. Happy to follow up if wanted.

Testing

  • cargo fmt --check, cargo clippy --all-targets -- -D warnings: clean.
  • New positive tests: test_lookup_platform_hermes, test_skills_dir_hermes_project_scope, test_skills_dir_hermes_user_scope, test_install_path_agent_hermes_as_skill, test_detect_agent_info_hermes; resolve_or_bail_expands_all now also asserts devin and hermes.
  • New negative test: test_detect_agent_info_hermes_false_not_detected (HERMES_AGENT=false must not detect).
  • Existing platform_enum_matches_table enforces the enum/table sync.
  • cargo test: all new tests pass. 5 pre-existing mock-HTTP tests (model_lab, notebooks, security, users, debugger) fail identically on untouched main in my local environment with DNS errors against unused.local, so they are unrelated to this change.

Related Issues

None.


🤖 Generated with Claude Code

Add Hermes Agent (Nous Research's open-source agent) as a supported
platform for `pup skills install`. Hermes reads skills from
`~/.hermes/skills/` (user-global) and `<repo>/.hermes/skills/`
(project-local, loaded only for repos trusted via `hermes skills trust`);
like cursor, codex, and devin it uses `SKILL.md` files, not Claude-style
`<name>.md` subagents.

- Register `hermes` in PLATFORMS and add the SkillsPlatform::Hermes
  variant (+ as_canonical arm), kept in sync by platform_enum_matches_table
- Auto-detect Hermes sessions via HERMES_AGENT, which Hermes exports as a
  truthy marker (`HERMES_AGENT=true`) into every shell command it runs
- Surface `hermes` in the `skills` --help text, the resolve error hints,
  the README Agent Skills section, docs/COMMANDS.md, and the agent
  detection list in docs/ARCHITECTURE.md
- Add positive and negative unit tests: lookup, install paths for both
  scopes, SKILL.md (not subagent) format, `all` expansion, and env
  detection (truthy vs. non-truthy)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@jgiunti-coatue1
jgiunti-coatue1 requested a review from a team as a code owner October 27, 2026 14:27

@datadog-datadog-prod-us1 datadog-datadog-prod-us1 Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bits Code Review: PASS

More details

Hermes uses the existing SKILL.md installation handling for both scopes, and its detector excludes HERMES_AGENT=false. The completed static review found no reportable defect.

Was this helpful? React 👍 or 👎

Open Bits AI session

🤖 Bits Code Review · Commit b1ab1a9

@platinummonkey
platinummonkey merged commit cd65921 into DataDog:main Oct 27, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants