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:

  1. .agents/skills/ — the canonical Colibri skill corpus (colibri-*).
  2. .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


Back to top

Colibri — documentation-first MCP runtime. Apache 2.0 + Commons Clause.

This site uses Just the Docs, a documentation theme for Jekyll.