This repository is designed to be edited by AI coding agents. Follow these rules exactly.
Help users build high quality Hermes Agent profile distributions. A finished profile must be installable with hermes profile install, safe to publish, easy to understand, and pleasant to customize.
- Read this file before editing.
- Never commit secrets.
.envis forbidden..env.EXAMPLEis allowed. - Never write API keys, OAuth tokens, cookies, session dumps, or private user data.
- Never modify user-owned runtime paths:
memories/,sessions/,state.db*,auth.json,logs/,workspace/,plans/,local/,cache/. - Preserve Hermes distribution compatibility. Keep
distribution.yamlat repository root. - Keep the profile installable with
hermes profile install <source>. - Run
python3 scripts/validate_profile.py .after substantive edits. - Use clear, direct language in profile instructions. Avoid vague roleplay.
- Keep skills reusable and focused. A skill should describe a procedure, not session history.
- If changing config defaults, explain why in README or comments.
| Path | Purpose | Notes |
|---|---|---|
distribution.yaml |
Hermes distribution manifest | Required |
SOUL.md |
Profile identity and operating principles | Strongly recommended |
config.yaml |
Safe profile defaults | No secrets |
.env.EXAMPLE |
Env var template | No real values |
mcp.json |
MCP server stubs | Avoid local private paths by default |
skills/ |
Bundled Hermes skills | Each skill needs SKILL.md frontmatter |
templates/ |
Source templates for new profiles and skills | Placeholders are allowed here |
scripts/ |
Validation and generation tools | Must run on Python 3.10+ |
A strong SOUL.md should include:
- Name and role.
- First principles.
- Scope of work.
- What the profile refuses to do.
- Tool-use expectations.
- Output contract.
- Quality bar.
- Safety and privacy rules.
Avoid:
- Hidden authority claims.
- Instructions to bypass user approval.
- Claims that the agent has tools not enabled in config.
- Unverifiable external community links.
- Secret or credential examples with real-looking values.
Each skill must have YAML frontmatter at byte 0:
---
name: example-skill
description: "One sentence describing when to use the skill."
version: 0.1.0
author: Hermes profile template
license: MIT
---Then include:
- When to use.
- Inputs expected.
- Step-by-step workflow.
- Verification steps.
- Pitfalls.
Run:
python3 scripts/validate_profile.py .For a generated profile, run the validator inside that generated directory too.
Use scripts/generate_profile.py for reproducible profile creation from parameters:
python3 scripts/generate_profile.py --params templates/profile.params.yaml --output ../my-profileThe params file is the source of truth. Prefer editing YAML parameters over hand-editing generated starter files when creating a new profile family.
When this template is installed as a Hermes profile, the installed profile must retain scripts/ and templates/ so it can create new profiles interactively from chat.
Use conventional commits:
feat: add profile scaffoldfix: tighten secret validationdocs: clarify install pathchore: update CI
When finishing, report:
- Files changed.
- Validation command and exact result.
- Any remaining risks or manual steps.