Skill Registry (ε)
ε is the index of what agents in this system know how to do. It does not grant capability; it records declared capability. The β pipeline consults ε when it needs to dispatch work, and the μ integrity layer (deferred) audits ε to detect capability drift between rounds.
Authoritative taxonomy: ../../spec/s16-skill-taxonomy.md.
What a skill is
A skill is a directory, not a function. Its shape:
skills/<skill-name>/
├── SKILL.md ← required. frontmatter + prose contract
├── scripts/ ← optional. executable helpers
└── references/ ← optional. docs the skill points at
SKILL.md carries YAML frontmatter that declares the skill’s identity:
---
name: <skill-name>
description: <one-sentence trigger>
tier: <1|2|3>
invokable_by: [<agent-tier-list>]
---
The body of SKILL.md is prose: when to use the skill, what it does, what it refuses to do, known failure modes. The registry does not parse the body; it matches on the description to decide whether a skill triggers for a task.
Tiers
Skills are tiered by who may invoke them. This mirrors the 4-tier agent hierarchy:
- Tier 1 — invokable by any agent including T4 models.
- Tier 2 — invokable by T3 executors and above.
- Tier 3 — invokable only by T1 sigma or T0 human. Reserved for privileged or destructive capability.
A skill without an explicit tier defaults to Tier 2.
Registration
At boot, γ scans two directories:
.agents/skills/— the canonical Colibri skill corpus (colibri-*)..claude/skills/— the Claude Code compat mirror. Known drift from canonical; see../../colibri-system.md.
Each SKILL.md that parses cleanly becomes a row in the registry. Invalid frontmatter is logged and the skill is rejected; γ does not silently downgrade bad skills.
The one ε tool in Phase 0
Per ADR-004, the Phase 0 tool surface exposes exactly one ε tool: skill_list. It returns declared skills as a JSON array with name, description, tier, invokable_by, and source directory.
There is no skill_invoke in Phase 0. Invocation happens through Claude’s Task tool, which takes a skill by name and spawns a sub-agent with the skill’s prompt injected. Multi-model skill invocation is deferred to Phase 1.5 per ADR-005.
What ε is not
- Not a skill host. The registry knows skills exist; running them is the β dispatch layer’s job.
- Not a permission system. Tiers are advisory metadata, not enforcement. The actual gate is α’s
tool-lock, which operates on tool names, not skill names. - Not a versioned store. Skills evolve in-place in the repo. Version pinning against a skill is a later-phase addition.
Pool integration
When β’s dispatcher needs a pool, it queries ε for skills whose invokable_by includes the task’s assigned agent tier. Matching skills form the candidate pool. Pool strategy is then chosen per task-pipeline.md; ε does not pick a strategy.
Drift detection (deferred)
μ integrity monitor (Phase 4, see ../physics/enforcement/integrity.md) periodically diffs .agents/skills/ against .claude/skills/ and flags asymmetric drift as a warning. This detection is specified but not implemented in Phase 0; the known divergence is acknowledged manually.
See also
task-pipeline.md— β, the dispatcher that consults εdecision-trail.md— ζ, where skill invocations leave reflection records../physics/enforcement/integrity.md— μ, the future drift auditor../../spec/s16-skill-taxonomy.md— authoritative taxonomy../../architecture/decisions/ADR-004-tool-surface.md— the 19-tool Phase 0 surface