platforms/hermes/skills/autonomous-ai-agents/trace-skill-provenance/SKILL.md
Investigate where a Hermes skill came from, when it was created, and whether it was builtin, promoted/imported, or locally created via skill_manage.
npx skillsauth add codingsamss/ai-dotfiles trace-skill-provenanceInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this when a user asks questions like:
Determine, with evidence:
builtin or localimported-codex / manifest) or was created later via skill_manageRun:
hermes skills list | grep -n '<skill-name>'
Interpretation:
builtin | builtin => official built-in skilllocal | local => local skill in the runtime environmentDo not rely on memory alone.
Check likely skill roots directly:
~/.hermes/skills~/.codex/skills (older/shared runtime copies may still exist)Example shell approach:
for d in ~/.hermes/skills ~/.codex/skills; do
[ -d "$d" ] || continue
find "$d" -type d -name '<skill-name>'
done
If needed, inspect SKILL.md under the found path.
For the skill directory and SKILL.md, inspect:
st_birthtime on macOS when available)Example Python snippet:
from pathlib import Path
from datetime import datetime
p = Path('~/.hermes/skills/<category>/<skill-name>/SKILL.md').expanduser()
st = p.stat()
print(datetime.fromtimestamp(getattr(st, 'st_birthtime', st.st_ctime)))
print(datetime.fromtimestamp(st.st_mtime))
print(datetime.fromtimestamp(st.st_ctime))
Use this only as approximate creation evidence; later edits can change mtime/ctime.
Look for promotion manifests such as:
~/.hermes/skill-promotions/<timestamp>/promotion-manifest.json
Read them and see whether the skill appears in entries.
Interpretation:
imported-codex or another sourceImportant: verify against the specific manifest timestamp instead of assuming all local skills came from promotion.
Search Hermes session files and/or use session search for:
skill_manageaction":"create"action":"patch"Useful targets:
~/.hermes/sessions/*.jsonsession_search(query='"<skill-name>"')High-signal evidence is a session snippet containing:
skill_manageaction: createname: <skill-name>If found, report:
Use the evidence to classify one of these outcomes:
skill_manage(action='create', ...)patch / edithermes skills listskill_manageThis makes the conclusion auditable and easy to trust.
hermes skills inspect <name> may fail even when skill_view(name) works; do not stop there.~/.hermes/skills can miss older copies in ~/.codex/skills.local without being imported; do not equate local with promoted.You should be able to answer, with citations/evidence:
builtin vs local)development
Safely search MX users or groups and send Midea MX / 美信 IM messages from Codex. Use when the user asks to notify someone, send a message to a person or group, use a configured group alias, @ users, @ all, or send MX file/image messages. Read lookups need no extra authorization; every live send needs explicit user authorization for that exact target and message.
development
Use when Sam wants to collect, save, translate, or reformat official source articles/blog posts/research/product announcements into the Obsidian vault, especially requests mentioning 官方文章, 官网排版, 原始排版, 美观, 收录, 1:1, 原文1:1, or 英文中文对照1:1. Preserve the source site's information architecture and visual hierarchy rather than forcing a generic Markdown template.
development
Query Midea MX / 美信 local message cache through the MX local HTTP query service from Codex. Use when the user asks to read MX sessions, search chat history, search messages globally or inside a group/session, list recent messages, or page message history. This is read-only and does not require send authorization. Never fall back to reading SQLite or app cache files directly.
tools
MX channel output rules. Always active in MX conversations.