A skill is a directory under ~/.agents/skills/ containing a SKILL.md with name and description frontmatter (agentskills.io convention). Create one and it appears in every configured harness:
dotagents skill new review-checklist --description "Pre-merge review checklist"
dotagents syncAlready wrote a skill inside one harness? Promote it to canonical so every agent gets it:
dotagents skill promote my-skill # finds it in a native skill root, copies it under ~/.agentsPulling skills from other people's repos is installing prompt code from strangers — dotagents treats it like a dependency, not a download. Declare a source in dotagents.yaml:
external_skills:
- url: https://github.com/mattpocock/skills
branch: main
skill_dirs: [skills/productivity/grilling]
materialize: truedotagents.lockpins the source to an exact commit; agents only ever see the pinned tree.materialize: truecopies the selected directories into~/.agents/skills/<name>so the content is versioned in your repo and diffable on update.dotagents skill update [name ...]is the only thing that advances a pin — updates are deliberate, never implicit.dotagents doctorscans external sources for risky patterns (exfiltration, shell abuse) and detects drift between the lock and the materialized copies.
External sources with an agent-plugins-spec plugin.json get their skills and MCP servers discovered automatically. Native plugin projection (Codex .codex-plugin/) is planned.
Qwen Code reads the canonical skill directory through skills.directories in ~/.qwen/settings.json. This leaves its personal ~/.qwen/skills/ inventory untouched and avoids a duplicate symlink mirror.