A practical walkthrough for porting an existing agent skill from Hermes Agent to OpenCode, since both use the same SKILL.md format with frontmatter plus optional references/ and scripts/ folders. It covers copying the skill folder, rewriting frontmatter fields (name, description, license, optional metadata and compatibility), fixing hard-coded paths and dependencies (since OpenCode only loads skills from within the project worktree), and testing the ported skill by starting a new OpenCode session and checking trigger words. It also touches on licensing etiquette when republishing a ported skill to ClawHub.
Table of contents
1. Understand the two formatsGet j3ffyang ’s stories in your inbox2. Copy the skill and rewrite the frontmatter3. Fix paths and dependencies4. Test it in OpenCodeQuestions this post answers
How do I port a skill from Hermes Agent to OpenCode?
Copy the skill folder into .opencode/skills/ or ~/.config/opencode/skills/, rename it to avoid confusion with the original, and keep the description and license fields. Add an optional compatibility: opencode field and a metadata block crediting the original author, then rewrite the description with trigger keywords so OpenCode's skill router picks it up, since the router matches the description text rather than the filename. Developers building agent skill libraries can track opencode workflow guides like this on daily.dev.
Why does my ported OpenCode skill fail to load its referenced files?
OpenCode only loads skills from inside the project worktree, so any hard-coded paths pointing outside the repo, like a Hermes Agent skill's ~/.hermes/... references, will break after porting. Relative references such as references/layouts/bento-grid.md keep working as long as the whole folder is copied, not just the SKILL.md file, so hard-coded paths should be replaced with relative paths or environment variables. Anyone debugging agent skill path errors can find porting fixes like this on daily.dev.
Why isn't my custom skill triggering in OpenCode?
The skill router matches against the text in the description frontmatter field, not the filename or folder name, so a vague description means the skill never gets picked up. Fix this by tightening the description to include the exact action verbs and keywords a user would type, in multiple languages if relevant, then start a new OpenCode session since skills load at session start and are not hot-reloaded. Developers tuning agent skill triggers can find troubleshooting tips like this on daily.dev.