Distribute a Skill Across All Agents

SkillAI & models

Distribute a newly-created agent skill across all 4 canonical skill folders on a local machine so Claude Code, Codex/OpenAI Agents, Pi Agent, and Hermes all see it. Use whenever the user says "give this skill to all agents", "distribute this skill", "sync skills across agents", or after creating a new skill that should be globally available. Covers the .claude/skills symlink and the ~/.pi/agent/skills (NOT ~/.pi/skills) trap.

Available today. Use it from your connected AI after setup.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the Distribute a Skill Across All Agents skill

What this skill tells your AI

The instructions your AI receives, as published by matyasstoch/david-skills in skills/distribute-skill-to-all-agents/SKILL.md and read by ahel’s review.

There are 4 agent skill locations. A skill must exist in each (or via symlink) to be discoverable by every agent.

The 4 Canonical Locations

AgentSkills FolderNotes
Codex / OpenAI Agents~/.agents/skills/Canonical — author skills here first
Claude Code~/.claude/skills/Symlink → ~/.agents/skills/ — writing to .agents/skills automatically covers Claude
Pi Agent~/.pi/agent/skills/Symlink → ~/.agents/skills/ — auto-covered. (Path is /agent/ nested — NOT ~/.pi/skills/)
Hermes Agent~/.hermes/skills/Independent copy — the only one needing a manual copy

Workflow

  1. Author the skill in ~/.agents/skills/<skill-name>/SKILL.md (canonical). Follow effective-agent-skills SKILL.md guidance.
  2. Verify the .claude symlink is intact (one-time check):
    ls -la ~/.claude/skills
    # Expect: ~/.claude/skills -> /Users/you/.agents/skills
    
    If it's a real directory instead of a symlink, the user has diverged copies — ask before touching.
  3. Copy to .hermes only (.claude and .pi are symlinks — already covered):
    SKILL=<skill-name>
    cp -r ~/.agents/skills/$SKILL ~/.hermes/skills/
    
  4. Verify all 4 locations show identical byte counts:
    for p in ~/.agents/skills/$SKILL ~/.claude/skills/$SKILL ~/.pi/agent/skills/$SKILL ~/.hermes/skills/$SKILL; do
      echo "$p: $(wc -c < $p/SKILL.md) bytes"
    done
    
    All four numbers must match. If .claude or .pi shows a different byte count, that symlink is broken — investigate before proceeding.

Updating an Existing Distributed Skill

Same flow — re-copy from ~/.agents/skills/ to .hermes/skills/. The .claude and .pi symlinks update automatically. cp -r overwrites by default; use rsync -a --delete if the skill folder has nested files that may have been removed:

rsync -a --delete ~/.agents/skills/$SKILL/ ~/.hermes/skills/$SKILL/

Pitfalls

  • ~/.pi/skills/ is the wrong location. Pi Agent loads from ~/.pi/agent/skills/ only. A skill placed in ~/.pi/skills/ is invisible. If you find skills already there, they're orphans — confirm with David before deleting.
  • ~/.claude/skills is a symlink, not a folder. cp -r ~/.agents/skills/foo ~/.claude/skills/ will error with "are identical". Skip the explicit Claude copy.
  • Project-local skills exist too — ./.pi/agent/skills/ (or .pi/skills/) inside a repo overrides the global one on collision (later-discovered wins). This skill only handles GLOBAL distribution.
  • .pi/agent/skills is a symlink → .agents/skills. Don't cp into it (errors "are identical"); it auto-syncs. Only .hermes/skills is an independent copy — don't unilaterally consolidate Hermes into a symlink unless David asks.
  • Hermes snapshots skills at session start. A newly-distributed skill won't appear inside a running Hermes session until restart (it works fine for future sessions and for the other 3 agents immediately).
  • Filename casing matters on case-sensitive volumes. SKILL.md must be uppercase.

When NOT to Use This Skill

  • Skill is project-specific → put it in ./.claude/skills/, ./.pi/agent/skills/, etc. inside the repo, not globally.
  • Editing one agent's skill only (e.g. a Hermes-only workflow) → patch that file directly, don't propagate.
  • Removing a skill globally → rm -rf from ~/.agents/skills/ (covers .claude + .pi symlinks) and from ~/.hermes/skills/ (and confirm with David first; deletion is destructive).

Signals

GitHub stars
59
Forks
11
Last commit
Jun 2026
Advanced
Item type
skill
Key
distribute-skill-to-all-agents-matyasstoch
Source
github.com/matyasstoch/david-skills