Skills¶
DOTS installs agent skills via the upstream skills CLI into a global store.
This document is the authority for how skills are declared. Do not confuse it
with per-skill SKILL.md files inside a skill directory.
Generated inventory: skills reference
(from configs/skills/manifest.toml).
Concepts¶
Skill pack¶
Selectable via:
./setup.sh --with skills # engineering pack (includes Archify)
./setup.sh --with ai-skills # AI/agent harness pack
./setup.sh --with skills,ai-skills # union (set semantics, deduped)
Declared in configs/skills/manifest.toml:
Pack install does not normally require a new optional component.
Standalone selectable skill¶
Example: --with archify.
Unusual — only when the skill must be selectable alone. Requires:
- A
[[components]]entry inconfigs/components.toml(platforms, optionalbrewfile,omit_from_allas needed). - A mapping in
helpers/agent_skills.sh→agent_skill_package(owner/repo). - Homebrew deps only if needed (
brewfile = "brew/Brewfile.<id>"on the component; Archify/skills/ai-skills sharebrew/Brewfile.archify).
SUPPORTED_WITH in setup.sh is loaded from configs/components.toml —
do not edit a hard-coded list in setup.sh.
Installed skill (runtime)¶
| Location | Role |
|---|---|
~/.agents/skills/<name> |
Canonical global store |
~/.hermes/skills/<name> |
Hermes discovery (often a symlink created by the skills CLI) |
DOTS verifies a valid SKILL.md at either path. It does not require a
duplicate tree under both. When Hermes is co-selected, landing only under
~/.hermes/skills can still satisfy verification.
Provenance lock: ~/.agents/.skill-lock.json (copied under
~/.config/dots/skills/ after pack install). Content-hash via skills CLI — not
git SHA pinning.
In-repo skill sources (e.g. skills/agent-router/) are separate from pack
install; packs pull remote owner/repo specs from the manifest.
Packs (summary)¶
| Pack | Groups (from manifest) |
|---|---|
skills |
security, core, engineering, infrastructure, testing, visualization |
ai-skills |
security, ai |
Do not install the entire magnus919 catalog — only rows listed in the
manifest with enabled = true.
How to add¶
Skill to an existing pack¶
- Add
[[skills]]toconfigs/skills/manifest.toml(name,source,group,enabled = true). - Ensure
groupis listed under the pack’sgroups. - Run skill tests +
./scripts/ci/test.sh.
No new component.
New skill group¶
- Add the group name to the relevant
[packs.*] groups = [...]. - Add
[[skills]]rows with thatgroup.
Standalone selectable skill¶
- Register component in
configs/components.toml. - Map
agent_skill_packageinhelpers/agent_skills.sh. - Optional
brewfileif Homebrew deps are required. - Document in TOOLS if notable.
Skill with Homebrew dependencies¶
Prefer brewfile = on the component (shared file allowed, e.g. Archify). Apply
path is resolved by dots_component_brewfile — see Extending.
Updates¶
Security review of installed skills is advisory by default. Set
DOTS_SKILLS_STRICT_REVIEW=1 to fail on findings (does not delete skills).
Validation¶
Focused tests: scripts/tests/skills_location_test.sh,
scripts/tests/skills_desired_state_test.sh, plus
scripts/tests/repository_contract_test.sh (manifest integrity).
Related¶
- Maintainer operating manual: root
SKILL.md(dots-maintainer) - Routing policy skill:
skills/agent-router/SKILL.md(distinct) - Agent harness