Skip to main content

Manifest Schema

The skills/manifest.json is the source of truth for skill metadata, dispatch configuration, and taxonomy.

Schema Overview

{
  "$schema": "https://cleo-dev.com/schemas/v1/skills-manifest.schema.json",
  "_meta": {
    "schemaVersion": "2.1.0",
    "lastUpdated": "2026-01-27",
    "totalSkills": 15,
    "architectureNote": "Universal Subagent Architecture..."
  },
  "dispatch_matrix": { ... },
  "skills": [ ... ]
}

Top-Level Structure

FieldTypeDescription
$schemastringJSON Schema reference
_metaobjectManifest metadata
dispatch_matrixobjectSkill selection rules
skillsarraySkill definitions

_meta Object

{
  "_meta": {
    "schemaVersion": "2.1.0",
    "lastUpdated": "2026-01-27",
    "totalSkills": 15,
    "architectureNote": "Universal Subagent Architecture: All spawns use single agent type 'cleo-subagent' with skill/protocol injection."
  }
}
FieldTypeDescription
schemaVersionstringManifest schema version (semver)
lastUpdatedstringISO date of last update
totalSkillsnumberCount of skills in manifest
architectureNotestringArchitecture documentation

Dispatch Matrix

The dispatch matrix defines how skills are automatically selected:

by_task_type

Maps CLEO task types to skills:
{
  "dispatch_matrix": {
    "by_task_type": {
      "research": "ct-research-agent",
      "planning": "ct-epic-architect",
      "implementation": "ct-task-executor",
      "testing": "ct-test-writer-bats",
      "documentation": "ct-documentor",
      "specification": "ct-spec-writer",
      "validation": "ct-validator",
      "bash-library": "ct-library-implementer-bash",
      "release": "ct-dev-workflow",
      "consensus": "ct-validator",
      "contribution": "ct-task-executor"
    }
  }
}

by_keyword

Maps regex patterns to skills:
{
  "dispatch_matrix": {
    "by_keyword": {
      "research|investigate|explore|discover": "ct-research-agent",
      "epic|plan|decompose|architect": "ct-epic-architect",
      "implement|build|execute|create": "ct-task-executor",
      "test|bats|coverage|integration": "ct-test-writer-bats",
      "doc|document|readme|guide": "ct-documentor",
      "spec|rfc|protocol|contract": "ct-spec-writer",
      "validate|verify|audit|compliance|consensus|vote": "ct-validator",
      "lib/|bash|shell|function": "ct-library-implementer-bash",
      "release|version|publish|deploy|ship|changelog": "ct-dev-workflow"
    }
  }
}

by_protocol

Maps protocol files to skills:
{
  "dispatch_matrix": {
    "by_protocol": {
      "research": "ct-research-agent",
      "consensus": "ct-validator",
      "specification": "ct-spec-writer",
      "decomposition": "ct-epic-architect",
      "implementation": "ct-task-executor",
      "contribution": "ct-task-executor",
      "release": "ct-dev-workflow"
    }
  }
}

Skill Definition

Each skill in the skills array follows this structure:
{
  "name": "ct-research-agent",
  "version": "1.0.0",
  "description": "Information gathering and analysis skill...",
  "path": "skills/ct-research-agent",
  "tags": ["research", "investigation", "discovery"],
  "status": "active",
  "tier": 2,
  "token_budget": 5000,
  "references": [
    "skills/ct-research-agent/SKILL.md",
    "skills/_shared/subagent-protocol-base.md"
  ],
  "capabilities": {
    "inputs": ["TASK_ID", "EPIC_ID", "SESSION_ID"],
    "outputs": ["research-output", "manifest-entry"],
    "dependencies": [],
    "dispatch_triggers": ["research", "investigate"]
  }
}

Field Reference

FieldTypeRequiredDescription
namestringUnique skill identifier (ct-* prefix)
versionstringSkill version (semver)
descriptionstringHuman-readable description
pathstringDirectory path relative to skills/
tagsarrayCategory tags for filtering
statusenumactive, deprecated, experimental
tiernumber0-3 hierarchy level
token_budgetnumberRecommended context budget
referencesarraySupporting documentation paths
capabilitiesobjectDetailed capability specification

Capabilities Object

{
  "capabilities": {
    "inputs": ["TASK_ID", "EPIC_ID", "SESSION_ID"],
    "outputs": ["research-output", "manifest-entry"],
    "dependencies": ["ct-research-agent"],
    "dispatch_triggers": [
      "orchestrate",
      "coordinate agents",
      "multi-agent workflow"
    ]
  }
}
FieldTypeDescription
inputsarrayRequired token variables
outputsarrayTypes of output produced
dependenciesarrayOther skills this skill may invoke
dispatch_triggersarrayKeywords/phrases that trigger this skill

Tier Hierarchy

TierNamePurposeSkills
0OrchestrationHITL entry pointct-orchestrator
1PlanningDecompositionct-epic-architect
2ExecutionImplementationct-task-executor, ct-research-agent, ct-spec-writer, ct-test-writer-bats, ct-library-implementer-bash, ct-validator, ct-dev-workflow
3SupportUtilitiesct-documentor, ct-docs-lookup, ct-docs-write, ct-docs-review, ct-skill-creator, ct-skill-lookup

Tags Taxonomy

Standard tags for skill categorization:
CategoryTags
Workflowworkflow, multi-agent, coordination
Planningplanning, architecture, task-management
Executionexecution, implementation
Researchresearch, investigation, discovery
Testingtesting, bats, integration
Documentationdocumentation, writing, review
Specificationspecification, rfc
Validationvalidation, compliance, audit
Skillsskills, creation, discovery

Querying the Manifest

List Skills by Tier

cat skills/manifest.json | jq '.skills | map(select(.tier == 2))'

List Skills by Tag

cat skills/manifest.json | jq '.skills | map(select(.tags | contains(["documentation"])))'

Get Dispatch Mapping

cat skills/manifest.json | jq '.dispatch_matrix.by_task_type'

Check Skill Status

cat skills/manifest.json | jq '.skills | map(select(.status == "active")) | length'

Validation

Validate manifest against schema:
cleo skills validate manifest

SkillsMP Integration

External skills from SkillsMP are stored in skills/mp/ with their own manifest:
skills/
├── ct-orchestrator/        ← Built-in (Tier 0-3)
├── ...
├── mp/                     ← SkillsMP external
│   ├── code-review/
│   ├── security-audit/
│   └── manifest.json       ← External skill metadata
└── manifest.json           ← Primary (merges with mp/)
The primary manifest can reference external skills:
{
  "skills": [
    {
      "name": "mp-code-review",
      "path": "skills/mp/code-review",
      "external": true,
      "source": "skillsmp",
      "scopedName": "@wshobson/code-review"
    }
  ]
}

Schema Reference

Full JSON Schema: schemas/skills-manifest.schema.json
cat schemas/skills-manifest.schema.json | jq '.properties'