CLEO agent protocols and templates.
This package contains agent protocols, templates, and base configurations for CLEO subagents. These agents follow standardized protocols to ensure consistency and compliance when working within the CLEO ecosystem.
CLEO Agents are specialized AI workers that:
- Follow standardized protocols (LOOM methodology)
- Work within the CLEO task management system
- Produce outputs in defined formats
- Maintain compliance with CLEO constraints
- Communicate through structured channels
npm install @cleocode/agentspnpm add @cleocode/agentsyarn add @cleocode/agentsThe base protocol for all CLEO subagents. Every subagent in the CLEO ecosystem extends this foundation.
File: cleo-subagent/AGENT.md
- Protocol Compliance: Follows RFC 2119 constraint definitions
- LOOM Lifecycle: Implements Logical Order of Operations Methodology
- Structured Output: Writes to files, returns only summaries
- Manifest Integration: Automatically appends to MANIFEST.jsonl
| ID | Rule | Enforcement |
|---|---|---|
| BASE-001 | MUST append ONE line to MANIFEST.jsonl | Required |
| BASE-002 | MUST NOT return content in response | Required |
| BASE-003 | MUST complete task via cleo complete |
Required |
| BASE-004 | MUST write output file before manifest | Required |
| BASE-005 | MUST set focus before starting work | Required |
| BASE-006 | MUST NOT fabricate information | Required |
| BASE-007 | SHOULD link research to task | Recommended |
The LOOM (Logical Order of Operations Methodology) is the systematic framework for processing project threads through the RCASD-IVTR+C pipeline.
Phase 1: Spawn (Initialization)
# 1. Read task context
cleo show {{TASK_ID}}
# 2. Start task (marks task active)
cleo start {{TASK_ID}}Phase 2: Execute (Skill-Specific)
Follow the injected skill protocol for the current LOOM stage:
- Research: Gather information, cite sources
- Consensus: Validate claims, vote
- Specification: Write RFC 2119 spec
- Decomposition: Break down into tasks
- Implementation: Write code
- Validation: Verify compliance
- Testing: Write BATS tests
- Contribution: Track attribution
- Release: Version and changelog
Phase 3: Output (Mandatory)
# 1. Write output file
# Location: {{OUTPUT_DIR}}/{{TASK_ID}}-<slug>.md
# 2. Append manifest entry (single line JSON)
echo '{"id":"{{TASK_ID}}-slug",...}' >> {{MANIFEST_PATH}}
# 3. Complete task
cleo complete {{TASK_ID}}Phase 4: Return (Summary Only)
Return ONLY one of these messages:
"[Type] complete. See MANIFEST.jsonl for summary.""[Type] partial. See MANIFEST.jsonl for details.""[Type] blocked. See MANIFEST.jsonl for blocker details."
NEVER return content in the response. All content goes to output files.
Required Tokens:
| Token | Description | Example |
|---|---|---|
{{TASK_ID}} |
Current task identifier | T1234 |
{{DATE}} |
Current date (ISO) | 2026-01-29 |
{{TOPIC_SLUG}} |
URL-safe topic name | auth-research |
Optional Tokens:
| Token | Default | Description |
|---|---|---|
{{EPIC_ID}} |
"" |
Parent epic ID |
{{OUTPUT_DIR}} |
claudedocs/agent-outputs |
Output directory |
{{MANIFEST_PATH}} |
{{OUTPUT_DIR}}/MANIFEST.jsonl |
Manifest location |
Status Classification:
| Status | Condition | Action |
|---|---|---|
complete |
All objectives achieved | Write full output |
partial |
Some objectives achieved | Write partial, populate needs_followup |
blocked |
Cannot proceed | Document blocker, do NOT complete task |
Retryable Errors:
Exit codes 7, 20, 21, 22, 60-63 support retry with exponential backoff.
| Pattern | Problem | Solution |
|---|---|---|
| Returning content | Bloats orchestrator context | Write to file, return summary |
| Pretty-printed JSON | Multiple lines in manifest | Single-line JSON only |
| Skipping start | Protocol violation | Always cleo start first |
Loading skills via @ |
Cannot resolve | Skills injected by orchestrator |
Agents in this package follow a standardized structure:
agents/
├── <agent-name>/
│ ├── AGENT.md # Main agent definition
│ ├── protocols/ # Protocol-specific docs
│ ├── templates/ # Output templates
│ └── examples/ # Example outputs
Skills can spawn agents using the orchestration API:
import { orchestration } from '@cleocode/core';
await orchestration.spawn({
agent: 'cleo-subagent',
taskId: 'T1234',
context: {
skill: 'ct-research-agent',
topic: 'authentication patterns'
}
});Spawn agents directly from the command line:
# Spawn a research agent
cleo orchestrate spawn --agent cleo-subagent --task T1234 --skill ct-research-agent
# Spawn with context
cleo orchestrate spawn --agent cleo-subagent --task T1234 --context '{"topic":"API design"}'Use the MCP server to spawn agents:
{
"domain": "orchestrate",
"operation": "spawn",
"params": {
"agent": "cleo-subagent",
"taskId": "T1234",
"context": {
"skill": "ct-implementation"
}
}
}To create a custom agent that extends the base protocol:
-
Create agent directory:
mkdir -p agents/my-custom-agent
-
Create AGENT.md:
--- name: my-custom-agent description: | Custom agent for specialized tasks. Extends cleo-subagent base protocol. model: sonnet allowed_tools: - Read - Write - Bash --- # My Custom Agent Extends [cleo-subagent](./cleo-subagent/AGENT.md). ## Additional Constraints | ID | Rule | Enforcement | |----|------|-------------| | CUST-001 | **MUST** validate output format | Required | ## Specialization This agent specializes in [your domain]. ## Usage ```bash cleo orchestrate spawn --agent my-custom-agent --task T1234
-
Register the agent:
import { agents } from '@cleocode/core'; agents.register({ name: 'my-custom-agent', path: './agents/my-custom-agent', baseProtocol: 'cleo-subagent' });
All agents extend the cleo-subagent base protocol which provides:
- Constraint System: RFC 2119 (MUST, SHOULD, MAY) rules
- Lifecycle Management: LOOM phases (Spawn, Execute, Output, Return)
- Output Standards: File-based outputs with manifest tracking
- Error Handling: Standardized status classification
- Token System: Template variables for dynamic content
cleo-subagent (base)
│
├── research-subagent
│ └── Extends with research-specific constraints
│
├── implementation-subagent
│ └── Extends with coding-specific constraints
│
└── validation-subagent
└── Extends with compliance-specific constraints
Agents are validated for protocol compliance:
import { compliance } from '@cleocode/core';
// Validate agent definition
const result = await compliance.validateAgent({
agentPath: './agents/my-agent',
baseProtocol: 'cleo-subagent'
});
if (result.valid) {
console.log('Agent is protocol compliant ✓');
} else {
console.log('Compliance issues:', result.issues);
}Agents work closely with skills:
- Skills provide: Capabilities, instructions, constraints
- Agents provide: Execution context, protocol compliance, output handling
Example workflow:
1. Orchestrator identifies need for research
2. Loads ct-research-agent skill
3. Spawns cleo-subagent with research skill injected
4. Agent follows LOOM phases
5. Research skill guides information gathering
6. Agent writes output, appends to manifest
7. Returns summary to orchestrator
This package has no runtime dependencies. It contains only:
- Agent protocol definitions (markdown)
- Template files
- Example outputs
MIT License - see LICENSE for details.