
Security News
Re-Enabled GitHub Actions Expose Thousands of Repositories to Mini Shai-Hulud
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.
@cleocode/agents
Advanced tools
Universal subagent protocol, canonical worker templates, and meta-agents for the CLEO ecosystem.
Per ADR-068, this package ships exactly three surfaces:
cleo-subagent.cant — the universal protocol base every agent extends.templates/ — five named worker templates with {{variable}} placeholders.
Filename basename equals declared agent <name>: per the install-validator contract.meta/ — meta-agents that synthesize other agents from project context.CleoCode-team dogfood personas (the former cleo-prime, cleo-dev,
cleo-historian, cleo-rust-lead, cleo-db-lead, cleoos-opus-orchestrator)
live in .cleo/cant/agents/ in the cleocode repository and are NOT shipped to
users.
packages/agents/
├── package.json
├── README.md # this file
├── cleo-subagent.cant # universal protocol base
├── templates/
│ ├── project-orchestrator.cant # coordinates the starter team
│ ├── project-dev-lead.cant # decides HOW, reviews workers
│ ├── project-code-worker.cant # writes code within globs
│ ├── project-docs-worker.cant # writes/edits documentation
│ └── project-security-worker.cant # security review and audits
└── meta/
├── README.md
├── agent-architect.cant # meta-agent: synthesizes agents
└── playbook-architect.cant # meta-agent: synthesizes playbooks
cleo-subagent.cantEvery CLEO agent extends cleo-subagent.cant. It defines:
cleo complete as the terminal, output-before-manifest ordering,
focus before work, no fabrication, research linking.The five worker templates are parameterized blueprints with {{variable}}
placeholders. They MUST remain project-agnostic — no CLEO-internal references,
no tool-chain assumptions beyond what the template explicitly parameterizes.
| Template | Role | Purpose |
|---|---|---|
project-orchestrator.cant | orchestrator | Reads tasks, routes to the dev-lead, synthesizes results. Does not execute code. |
project-dev-lead.cant | lead | Decomposes work, reviews output, decides technical direction. Dispatch-only authority; no Edit/Write/Bash (TEAM-002). |
project-code-worker.cant | worker | Writes code within declared globs. Runs {{test_command}} and {{build_command}}. Holds Edit/Write/Bash. |
project-docs-worker.cant | worker | Writes documentation (README, TSDoc, guides) within doc globs. Holds Edit/Write/Bash scoped to docs. |
project-security-worker.cant | worker | Security review, OWASP threat modelling, dependency audits. Read-only — escalates findings. |
These five make a complete starter team: one orchestrator + one lead + three
workers. For projects that need richer topologies, the agent-architect
meta-agent (see below) synthesizes additional personas.
Every .cant filename basename MUST equal the agent <name>: declaration inside
it. Templates use the project-<role> prefix to match the classifier output
(packages/core/src/orchestration/classify.ts). This is enforced by the install
validator at packages/core/src/store/agent-install.ts.
CLEO uses mustache {{var}} syntax for template substitution, per
ADR-055 D033.
{{name}} — simple variable{{object.key}} — dot-notation for nested values{{inputs.taskId}} — already used in starter .cantbook playbooksVariables resolve in priority order at spawn time (not install time):
bindings: shadow playbook bindings.bindings: field.playbook_runs.bindings, task + epic identifiers, user..cleo/project-context.json, traversed via dot-notation.CLEO_* or CANT_* prefix.SubstitutionOptions.defaultValue is set.E_TEMPLATE_RESOLUTION.Templates install with {{...}} placeholders intact. Resolution happens inside
orchestrateSpawnExecute right before composeSpawnPayload, which means:
cleo initPer ADR-068 Decision 3, plain cleo init (no flags) automatically walks
@cleocode/agents/templates/ and calls installAgentFromCant() for each of the
5 worker templates. Each template is registered in signaldock.db.agents with
tier='project'.
A fresh cleo init followed by cleo orchestrate spawn for any of the 5 worker
roles succeeds without E_AGENT_NOT_FOUND.
The --install-seed-agents flag is preserved as a deprecated no-op alias with
a deprecation notice.
cleo-subagent.cantcp packages/agents/templates/project-code-worker.cant \
my-project/.cleo/cant/agents/my-worker.cant
Edit the agent name, tune the description + skills + tool list, replace
{{variable}} placeholders with either literal values (if project-specific) or
leave them for lazy resolution at spawn time.
cleo cant validate my-project/.cleo/cant/agents/my-worker.cant
cleo agent install my-project/.cleo/cant/agents/my-worker.cant
cleo agent doctor --json
Agent resolution at spawn time walks tiers in order (ADR-055 / ADR-068):
{projectRoot}/.cleo/cant/agents/{agentId}.cant~/.local/share/cleo/cant/agents/{agentId}.cantpackages/agents/templates/{agentId}.cantcleo-subagent.cant synthesized envelope (ADR-068 Decision 6)E_AGENT_NOT_FOUND is only thrown when cleo-subagent.cant itself is
unreachable, indicating a corrupt installation.
packages/core/src/store/agent-install.ts wraps the
.cant copy, agents row upsert, and agent_skills junction rewrite in a
single BEGIN IMMEDIATE TRANSACTION.packages/core/src/agents/seed-install.ts
compares .seed-version against the bundled package.json version and
returns early when they match.packages/core/src/store/agent-doctor.ts emits
D-001…D-010 codes for orphan files, SHA mismatch, legacy paths, missing
skills, and legacy JSON registries.MIT — see LICENSE.
FAQs
CLEO agent protocols and templates
The npm package @cleocode/agents receives a total of 674 weekly downloads. As such, @cleocode/agents popularity was classified as not popular.
We found that @cleocode/agents demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.

Research
/Security News
A malicious Firefox extension fetches its payload after installation to evade detection, steal Google session cookies, and automate account takeover.

Research
/Security News
The compromise affects MemTensor's MemOS, an open source memory framework for large language models (LLMs) and AI agents. Both npm package @memtensor/memos-cloud-openclaw-plugin and the PyPI package MemoryOS are compromised. They drop cross-platform Go binaries that exfiltrate developer secrets.