@cleocode/cleo 2026.2.8 → 2026.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +14 -13
  2. package/dist/cli/index.js +22676 -26012
  3. package/dist/cli/index.js.map +4 -4
  4. package/dist/mcp/index.js +1651 -802
  5. package/dist/mcp/index.js.map +4 -4
  6. package/drizzle/20260301053344_careless_changeling/migration.sql +27 -0
  7. package/drizzle/20260301053344_careless_changeling/snapshot.json +2598 -0
  8. package/package.json +3 -4
  9. package/packages/ct-skills/skills/ct-cleo/SKILL.md +49 -22
  10. package/templates/CLEO-INJECTION.md +32 -138
  11. package/templates/cleo-gitignore +66 -49
  12. package/templates/git-hooks/pre-commit +24 -6
  13. package/schemas/archive/agent-configs.schema.json +0 -120
  14. package/schemas/archive/agent-registry.schema.json +0 -132
  15. package/schemas/archive/archive.schema.json +0 -450
  16. package/schemas/archive/claudedocs-frontmatter.schema.json +0 -162
  17. package/schemas/archive/commands-index.schema.json +0 -158
  18. package/schemas/archive/contribution.schema.json +0 -722
  19. package/schemas/archive/critical-path.schema.json +0 -246
  20. package/schemas/archive/deps-cache.schema.json +0 -97
  21. package/schemas/archive/doctor-output.schema.json +0 -283
  22. package/schemas/archive/error.schema.json +0 -161
  23. package/schemas/archive/export-package.schema.json +0 -375
  24. package/schemas/archive/global-config.schema.json +0 -219
  25. package/schemas/archive/log.schema.json +0 -250
  26. package/schemas/archive/metrics.schema.json +0 -328
  27. package/schemas/archive/migrations.schema.json +0 -150
  28. package/schemas/archive/nexus-registry.schema.json +0 -90
  29. package/schemas/archive/output.schema.json +0 -164
  30. package/schemas/archive/rcsd-consensus-report.schema.json +0 -491
  31. package/schemas/archive/rcsd-hitl-resolution.schema.json +0 -216
  32. package/schemas/archive/rcsd-index.schema.json +0 -384
  33. package/schemas/archive/rcsd-manifest.schema.json +0 -264
  34. package/schemas/archive/rcsd-research-output.schema.json +0 -564
  35. package/schemas/archive/rcsd-spec-frontmatter.schema.json +0 -225
  36. package/schemas/archive/releases.schema.json +0 -267
  37. package/schemas/archive/skills-manifest.schema.json +0 -91
  38. package/schemas/archive/skillsmp.schema.json +0 -208
  39. package/schemas/archive/spec-index.schema.json +0 -196
  40. package/schemas/archive/todo.schema.json +0 -995
  41. package/schemas/claudedocs-frontmatter.schema.json +0 -162
  42. package/schemas/commands-index.schema.json +0 -158
  43. package/schemas/rcsd-consensus-report.schema.json +0 -494
  44. package/schemas/rcsd-hitl-resolution.schema.json +0 -219
  45. package/schemas/rcsd-index.schema.json +0 -387
  46. package/schemas/rcsd-manifest.schema.json +0 -267
  47. package/schemas/rcsd-research-output.schema.json +0 -567
  48. package/schemas/rcsd-spec-frontmatter.schema.json +0 -225
  49. package/schemas/todo.schema.json +0 -994
  50. package/skills/_shared/cleo-style-guide.md +0 -84
  51. package/skills/_shared/manifest-operations.md +0 -810
  52. package/skills/_shared/placeholders.json +0 -433
  53. package/skills/_shared/skill-chaining-patterns.md +0 -240
  54. package/skills/_shared/subagent-protocol-base.md +0 -221
  55. package/skills/_shared/task-system-integration.md +0 -232
  56. package/skills/_shared/testing-framework-config.md +0 -110
  57. package/skills/agentskills-integrate.md +0 -104
  58. package/skills/agentskills-specs.md +0 -255
  59. package/skills/agentskills-what-are-skills.md +0 -75
  60. package/skills/manifest.json +0 -510
  61. package/templates/AGENT-INJECTION.md +0 -166
  62. /package/schemas/{research-manifest.schema.json → archive/research-manifest.schema.json} +0 -0
@@ -1,132 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://cleo-dev.com/schemas/v1/agent-registry.schema.json",
4
- "title": "CLEO Agent Registry Schema",
5
- "description": "Unified registry for LLM coding agent configurations, paths, and capabilities",
6
- "type": "object",
7
- "required": ["schemaVersion", "lastUpdated", "agents"],
8
- "properties": {
9
- "schemaVersion": {
10
- "type": "string",
11
- "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$",
12
- "description": "Semantic version of this schema"
13
- },
14
- "lastUpdated": {
15
- "type": "string",
16
- "format": "date",
17
- "description": "Last update date (ISO 8601)"
18
- },
19
- "agents": {
20
- "type": "object",
21
- "description": "Map of agent ID to configuration",
22
- "additionalProperties": {
23
- "$ref": "#/$defs/agentConfig"
24
- }
25
- },
26
- "instructionFileMap": {
27
- "type": "object",
28
- "description": "Map of instruction file names to list of agents using them",
29
- "additionalProperties": {
30
- "type": "array",
31
- "items": { "type": "string" }
32
- }
33
- },
34
- "priorityTiers": {
35
- "type": "object",
36
- "description": "Agent groupings by priority tier",
37
- "properties": {
38
- "tier1": {
39
- "type": "array",
40
- "items": { "type": "string" },
41
- "description": "High priority - primary agents"
42
- },
43
- "tier2": {
44
- "type": "array",
45
- "items": { "type": "string" },
46
- "description": "Medium priority - secondary agents"
47
- },
48
- "tier3": {
49
- "type": "array",
50
- "items": { "type": "string" },
51
- "description": "Low priority - emerging agents"
52
- }
53
- }
54
- }
55
- },
56
- "$defs": {
57
- "agentConfig": {
58
- "type": "object",
59
- "required": ["id", "displayName", "globalDir", "instructionFile", "skillsDir", "priority"],
60
- "properties": {
61
- "id": {
62
- "type": "string",
63
- "pattern": "^[a-z][a-z0-9-]*$",
64
- "description": "Unique agent identifier (lowercase, hyphenated)"
65
- },
66
- "displayName": {
67
- "type": "string",
68
- "description": "Human-readable display name"
69
- },
70
- "vendor": {
71
- "type": "string",
72
- "description": "Company/organization behind the agent"
73
- },
74
- "globalDir": {
75
- "type": "string",
76
- "description": "Global configuration directory path (use $HOME for home dir)"
77
- },
78
- "projectDir": {
79
- "type": "string",
80
- "description": "Project-level configuration directory (relative to project root)"
81
- },
82
- "instructionFile": {
83
- "type": "string",
84
- "description": "Instruction/configuration markdown file name"
85
- },
86
- "skillsDir": {
87
- "type": "string",
88
- "description": "Skills directory path relative to globalDir"
89
- },
90
- "projectSkillsDir": {
91
- "type": "string",
92
- "description": "Project-level skills directory (relative to project root)"
93
- },
94
- "priority": {
95
- "type": "string",
96
- "enum": ["high", "medium", "low"],
97
- "description": "Agent priority tier for CLEO support"
98
- },
99
- "status": {
100
- "type": "string",
101
- "enum": ["active", "beta", "deprecated", "planned"],
102
- "default": "active",
103
- "description": "Support status"
104
- },
105
- "cliDetection": {
106
- "type": "object",
107
- "description": "How to detect if agent CLI is installed",
108
- "properties": {
109
- "method": {
110
- "type": "string",
111
- "enum": ["directory", "command", "file"],
112
- "description": "Detection method"
113
- },
114
- "check": {
115
- "type": "string",
116
- "description": "Path, command, or file to check"
117
- }
118
- }
119
- },
120
- "agentSkillsCompatible": {
121
- "type": "boolean",
122
- "default": false,
123
- "description": "Whether agent is compatible with vercel-labs/add-skill"
124
- },
125
- "notes": {
126
- "type": "string",
127
- "description": "Additional notes about this agent"
128
- }
129
- }
130
- }
131
- }
132
- }
@@ -1,450 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "https://cleo-dev.com/schemas/v3.1/archive.schema.json",
4
- "schemaVersion": "2.4.0",
5
- "title": "CLEO Archive Schema",
6
- "description": "LEGACY: Documents the JSON file format. Runtime validation uses drizzle-zod (src/store/validation-schemas.ts). Archived tasks use the tasks table with status='archived'.",
7
- "type": "object",
8
- "required": [
9
- "version",
10
- "project",
11
- "archivedTasks",
12
- "_meta"
13
- ],
14
- "additionalProperties": false,
15
- "properties": {
16
- "version": {
17
- "type": "string",
18
- "pattern": "^\\d+\\.\\d+\\.\\d+$",
19
- "description": "Legacy schema version field (deprecated, use _meta.schemaVersion)"
20
- },
21
- "project": {
22
- "type": "string",
23
- "description": "Project identifier. Must match todo.json project."
24
- },
25
- "_meta": {
26
- "type": "object",
27
- "required": [
28
- "schemaVersion",
29
- "totalArchived",
30
- "lastArchived"
31
- ],
32
- "additionalProperties": false,
33
- "properties": {
34
- "schemaVersion": {
35
- "type": "string",
36
- "pattern": "^\\d+\\.\\d+\\.\\d+$",
37
- "description": "Schema version for this file (semver). Canonical source for schema version (replaces root version field)."
38
- },
39
- "totalArchived": {
40
- "type": "integer",
41
- "minimum": 0,
42
- "description": "Total count of archived tasks."
43
- },
44
- "lastArchived": {
45
- "type": [
46
- "string",
47
- "null"
48
- ],
49
- "format": "date-time",
50
- "description": "Timestamp of most recent archival operation."
51
- },
52
- "oldestTask": {
53
- "type": [
54
- "string",
55
- "null"
56
- ],
57
- "format": "date-time",
58
- "description": "Completion date of oldest archived task."
59
- },
60
- "newestTask": {
61
- "type": [
62
- "string",
63
- "null"
64
- ],
65
- "format": "date-time",
66
- "description": "Completion date of newest archived task."
67
- },
68
- "lastUnarchived": {
69
- "type": [
70
- "string",
71
- "null"
72
- ],
73
- "format": "date-time",
74
- "description": "Timestamp of most recent unarchive/restore operation."
75
- },
76
- "totalUnarchived": {
77
- "type": "integer",
78
- "minimum": 0,
79
- "default": 0,
80
- "description": "Total count of tasks restored from archive."
81
- }
82
- }
83
- },
84
- "archivedTasks": {
85
- "type": "array",
86
- "description": "Completed tasks moved from todo.json. IMMUTABLE after archival.",
87
- "items": {
88
- "$ref": "#/definitions/archivedTask"
89
- }
90
- },
91
- "phaseSummary": {
92
- "type": "object",
93
- "description": "Aggregated phase completion statistics from archived tasks.",
94
- "patternProperties": {
95
- "^[a-z][a-z0-9-]*$": {
96
- "type": "object",
97
- "properties": {
98
- "totalTasks": {
99
- "type": "integer",
100
- "minimum": 0,
101
- "description": "Total tasks archived from this phase."
102
- },
103
- "firstCompleted": {
104
- "type": [
105
- "string",
106
- "null"
107
- ],
108
- "format": "date-time",
109
- "description": "Earliest completion timestamp in this phase."
110
- },
111
- "lastCompleted": {
112
- "type": [
113
- "string",
114
- "null"
115
- ],
116
- "format": "date-time",
117
- "description": "Latest completion timestamp in this phase."
118
- }
119
- },
120
- "additionalProperties": false
121
- }
122
- },
123
- "additionalProperties": false
124
- },
125
- "statistics": {
126
- "type": "object",
127
- "description": "Computed statistics. Regenerate on archive operations.",
128
- "properties": {
129
- "cancelled": {
130
- "type": "integer",
131
- "minimum": 0,
132
- "default": 0,
133
- "description": "Total count of cancelled tasks archived."
134
- },
135
- "byPhase": {
136
- "type": "object",
137
- "description": "Task counts by phase.",
138
- "patternProperties": {
139
- "^[a-z][a-z0-9-]*$": {
140
- "type": "integer"
141
- }
142
- }
143
- },
144
- "byPriority": {
145
- "type": "object",
146
- "description": "Task counts by priority.",
147
- "properties": {
148
- "critical": {
149
- "type": "integer"
150
- },
151
- "high": {
152
- "type": "integer"
153
- },
154
- "medium": {
155
- "type": "integer"
156
- },
157
- "low": {
158
- "type": "integer"
159
- }
160
- }
161
- },
162
- "byLabel": {
163
- "type": "object",
164
- "description": "Task counts by label.",
165
- "patternProperties": {
166
- "^[a-z][a-z0-9-]*$": {
167
- "type": "integer"
168
- }
169
- }
170
- },
171
- "averageCycleTime": {
172
- "type": [
173
- "number",
174
- "null"
175
- ],
176
- "description": "Average days from creation to completion."
177
- }
178
- }
179
- }
180
- },
181
- "definitions": {
182
- "archivedTask": {
183
- "type": "object",
184
- "required": [
185
- "id",
186
- "title",
187
- "status",
188
- "priority",
189
- "createdAt",
190
- "completedAt",
191
- "_archive"
192
- ],
193
- "additionalProperties": false,
194
- "description": "Archived task with original data plus archive metadata.",
195
- "properties": {
196
- "id": {
197
- "type": "string",
198
- "pattern": "^T\\d{3,}$"
199
- },
200
- "title": {
201
- "type": "string"
202
- },
203
- "status": {
204
- "type": "string",
205
- "enum": [
206
- "done",
207
- "cancelled"
208
- ]
209
- },
210
- "priority": {
211
- "type": "string",
212
- "enum": [
213
- "critical",
214
- "high",
215
- "medium",
216
- "low"
217
- ]
218
- },
219
- "phase": {
220
- "type": "string"
221
- },
222
- "description": {
223
- "type": "string"
224
- },
225
- "files": {
226
- "type": "array",
227
- "items": {
228
- "type": "string"
229
- }
230
- },
231
- "acceptance": {
232
- "type": "array",
233
- "items": {
234
- "type": "string"
235
- }
236
- },
237
- "depends": {
238
- "type": "array",
239
- "items": {
240
- "type": "string"
241
- }
242
- },
243
- "notes": {
244
- "type": "array",
245
- "items": {
246
- "type": "string"
247
- }
248
- },
249
- "labels": {
250
- "type": "array",
251
- "items": {
252
- "type": "string"
253
- }
254
- },
255
- "createdAt": {
256
- "type": "string",
257
- "format": "date-time"
258
- },
259
- "completedAt": {
260
- "type": "string",
261
- "format": "date-time"
262
- },
263
- "cancelledAt": {
264
- "type": "string",
265
- "format": "date-time"
266
- },
267
- "cancellationReason": {
268
- "type": "string",
269
- "minLength": 5,
270
- "maxLength": 300,
271
- "pattern": "^[^`$;|&<>]*$"
272
- },
273
- "_archive": {
274
- "type": "object",
275
- "required": [
276
- "archivedAt",
277
- "reason"
278
- ],
279
- "additionalProperties": false,
280
- "description": "Archive metadata added during archival.",
281
- "properties": {
282
- "archivedAt": {
283
- "type": "string",
284
- "format": "date-time",
285
- "description": "When this task was archived."
286
- },
287
- "reason": {
288
- "type": "string",
289
- "enum": [
290
- "auto",
291
- "manual",
292
- "stale",
293
- "force",
294
- "cascade",
295
- "phase-complete",
296
- "label-policy",
297
- "cancelled"
298
- ],
299
- "description": "Archival trigger: auto=config rules, manual=user request, stale=exceeded retention, force=forced archive, cascade=parent archived, phase-complete=phase finished, label-policy=label rule matched, cancelled=task was cancelled/soft-deleted."
300
- },
301
- "sessionId": {
302
- "type": "string",
303
- "description": "Session that performed the archival."
304
- },
305
- "cycleTimeDays": {
306
- "type": "number",
307
- "description": "Days from creation to completion."
308
- },
309
- "archiveSource": {
310
- "type": "string",
311
- "enum": [
312
- "auto",
313
- "manual",
314
- "force",
315
- "all",
316
- "cascade",
317
- "phase-trigger",
318
- "unarchive-restore"
319
- ],
320
- "description": "How the archive operation was initiated: auto=automatic config rules, manual=user-initiated single task, force=forced regardless of state, all=bulk archive all eligible, cascade=triggered by parent archive, phase-trigger=phase completion triggered, unarchive-restore=metadata preserved from restore operation."
321
- },
322
- "triggerDetails": {
323
- "type": "object",
324
- "additionalProperties": false,
325
- "description": "Details about what triggered the archive operation.",
326
- "properties": {
327
- "phase": {
328
- "type": "string",
329
- "description": "Phase that triggered the archive (if phase-triggered)."
330
- },
331
- "parentId": {
332
- "type": "string",
333
- "pattern": "^T\\d{3,}$",
334
- "description": "Parent task ID that triggered cascade archive."
335
- },
336
- "configRule": {
337
- "type": "string",
338
- "description": "Name or identifier of the config rule that matched."
339
- },
340
- "labelPolicy": {
341
- "type": "string",
342
- "description": "Label policy name that triggered the archive."
343
- }
344
- }
345
- },
346
- "relationshipState": {
347
- "type": "object",
348
- "additionalProperties": false,
349
- "description": "State of task relationships at archive time for restoration.",
350
- "properties": {
351
- "hadChildren": {
352
- "type": "boolean",
353
- "description": "Whether this task had child tasks at archive time."
354
- },
355
- "childIds": {
356
- "type": "array",
357
- "items": {
358
- "type": "string",
359
- "pattern": "^T\\d{3,}$"
360
- },
361
- "description": "IDs of child tasks that were archived with this task."
362
- },
363
- "hadDependents": {
364
- "type": "boolean",
365
- "description": "Whether other tasks depended on this task at archive time."
366
- },
367
- "dependentIds": {
368
- "type": "array",
369
- "items": {
370
- "type": "string",
371
- "pattern": "^T\\d{3,}$"
372
- },
373
- "description": "IDs of tasks that depended on this task."
374
- },
375
- "parentId": {
376
- "type": [
377
- "string",
378
- "null"
379
- ],
380
- "pattern": "^T\\d{3,}$",
381
- "description": "Parent task ID if this was a child task, null if root."
382
- }
383
- }
384
- },
385
- "restoreInfo": {
386
- "type": "object",
387
- "additionalProperties": false,
388
- "description": "Information for potential restoration of this task.",
389
- "properties": {
390
- "originalStatus": {
391
- "type": "string",
392
- "enum": [
393
- "pending",
394
- "active",
395
- "blocked",
396
- "done"
397
- ],
398
- "description": "Task status before it was completed (for restoration context)."
399
- },
400
- "canRestore": {
401
- "type": "boolean",
402
- "default": true,
403
- "description": "Whether this task can be safely restored."
404
- },
405
- "restoreBlockers": {
406
- "type": "array",
407
- "items": {
408
- "type": "string"
409
- },
410
- "description": "Reasons why restoration might fail or require manual intervention."
411
- }
412
- }
413
- },
414
- "cancellationDetails": {
415
- "type": "object",
416
- "additionalProperties": false,
417
- "description": "Details about task cancellation. Present when reason='cancelled'.",
418
- "properties": {
419
- "cancelledAt": {
420
- "type": "string",
421
- "format": "date-time",
422
- "description": "ISO 8601 timestamp when the task was cancelled."
423
- },
424
- "cancellationReason": {
425
- "type": "string",
426
- "minLength": 5,
427
- "maxLength": 300,
428
- "description": "User-provided reason for cancellation."
429
- },
430
- "cancelledBy": {
431
- "type": "string",
432
- "description": "Session ID or user that performed the cancellation."
433
- },
434
- "previousStatus": {
435
- "type": "string",
436
- "enum": [
437
- "pending",
438
- "active",
439
- "blocked"
440
- ],
441
- "description": "Task status before cancellation."
442
- }
443
- }
444
- }
445
- }
446
- }
447
- }
448
- }
449
- }
450
- }