Active Agents
Running or recently active
Recently Completed
Services
Platforms
Message Hermes
Recent History
MCP Servers
Tools
Skills
Scheduled Jobs
Job Output
Drop files to upload
.pdf, .docx, .txt, .md
Documents
0
Total Size
0 KB
Words
0
Categories
0
Documents
Document Detail
Quick Actions
SOUL.md
Changes require a gateway restart.
config.yaml
Memory
Skill-Building Playbook
Everything you need to build, modify, and maintain Hermes skills.
Full reference at /root/hermes-dashboard/public/SKILL_PLAYBOOK.md
Key File Locations
| What | Path | |
|---|---|---|
| All skills | /root/.hermes/skills/ | |
| SOUL.md (routing) | /root/.hermes/SOUL.md | |
| config.yaml | /root/.hermes/config.yaml | |
| CRM database | /root/.hermes/crm.db | |
| Pe-brand template | /root/.hermes/skills/productivity/pe-brand/templates/base_document.py | |
| Generated documents | /root/.hermes/plans/ | |
| LOI generator | /root/.hermes/skills/pe-os/pe-acquisition-loi/generate_loi.py | |
| Deal screener | /root/.hermes/skills/pe-os/deal-screener/SKILL.md | |
| Agent memories | /root/.hermes/memories/ | |
| Dashboard public files | /root/hermes-dashboard/public/ |
Critical Technical Rules
Breaking these causes failures — some silent, some cryptic.
| Rule | Correct | Wrong |
|---|---|---|
| Python env for docx | ~/pptxenv/bin/python3 | python3 |
| Calling helpers | add_header_bar(doc, ...) | doc.add_header_bar(...) |
| Color to sf() | sf(180, 140, 30) — RGB tuple | sf('C8A84B') — hex string |
| Color to set_cell_bg() | set_cell_bg(cell, 'C8A84B') — no # | set_cell_bg(cell, '#C8A84B') |
| File delivery | MEDIA:/absolute/path/file.docx | Any other method |
| Document creation | doc.save() in Python script | write_file tool |
| Delegation | Agent runs script directly | Delegate doc creation to subagent |
| Script retry limit | Max 2 retries on same error | Endless retry loop |
Type A — Instruction Skills
Pure markdown instructions. Agent reads and behaves accordingly. Best for behavioral guidance, context, and reference info.
Examples
pe-os/pe-investment-thesis
creative/stop-slop
pe-os/pe-buy-box
pe-os/pe-100-day-playbook
Agent re-invents approach each session. Good for reference info, not repeatable workflows.
Type B — Script-Backed Skills
SKILL.md tells agent to run a Python script on disk. Far more reliable — deterministic output, specific errors, easy to test.
Examples
pe-os/pe-acquisition-loi → generate_loi.py
pe-os/deal-screener → extract.py + post.py
productivity/pe-brand → base_document.py
Code fixed on disk. Errors specific and fixable. Output deterministic. Preferred for all document generation.
How to Build a New Script-Backed Skill
1
Create the directory
mkdir -p /root/.hermes/skills/pe-os/my-new-skill
2
Write the Python generator script
Copy helpers from
base_document.py. Use ~/pptxenv/bin/python3 always. Target: runs in <5s, output >30KB.~/pptxenv/bin/python3 /root/.hermes/skills/pe-os/my-new-skill/generate_X.py --deal-id 2
3
Write the SKILL.md
Frontmatter with name, description, version, tags, trigger. Body: 4-step workflow — (1) identify target, (2) run script via execute_code, (3) verify size >30KB, (4) deliver with
MEDIA:4
Add routing to SOUL.md
Edit
/root/.hermes/SOUL.md. Add routing section BEFORE "CRM Queries". Include exact trigger phrases.5
Test in Hermes Slack
Say the trigger phrase. Confirm the document is delivered in-thread. Verify the file opens correctly.
SOUL.md Routing Priority
Skills are matched top-to-bottom. First match wins. Insert new skills above CRM Queries.
HIGHEST
Deal Screening
screen, screening, protocol, analyze this deal, deal PDF
2
LOI Generation
LOI, letter of intent, draft LOI, generate LOI
3
Documents (General)
any .docx, report, brief, plan, showcase request
↓ NEW
Insert your new skill here
Add before CRM Queries to prevent catch-all from intercepting
CATCH-ALL
CRM Queries
deals, pipeline, investors, operators, contacts
SKILL.md Frontmatter Reference
--- name: skill-name # must match folder name exactly description: >- # one sentence — what it does Short description here. version: 1.0.0 # increment on meaningful changes tags: [tag1, tag2, tag3] # free-form tags trigger: Trigger phrase # when agent should auto-load this skill ---
name:
Must exactly match the folder name. Mismatches cause skill_view failures.
trigger:
Must also be echoed in SOUL.md routing. Keep both in sync.
version:
Patch = bug fix, Minor = new feature, Major = architecture change.