Install any skill in seconds. Free to start, no credit card required.
Get Started Free →awslabs/cao-learning
Report task outcomes and distill lessons so the team improves across runs — report_outcome after each unit of work, retrospector handoffs at natural boundaries, and applying injected lessons. Use in workflows that run repeatedly over similar work items. Requires memory.learning_enabled; degrade silently when the tools report disabled.
Passed 15 of 19 test cases with the skill, and 9 of 19 without it.
and 5 more in the full report
7 fixed10 passed either way5 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 7 test cases the skill fixed. Same model, same prompt, with and without the skill.
Formulate the exact delegation string to dispatch the retrospector after finishing item 'CustomerData' in session 'migration-run-4' under workflow 'db-refactor' involving agent profiles 'transformer' and 'validator'.
| Checked | Without skill | With skill |
|---|---|---|
| Formats the handoff prompt starting with Retrospect on session migration-run-4. | Missed | Passed |
The instructions your model reads when the skill loads.
CAO workflows can improve as they repeat: outcomes you report feed a retrospector agent that distills durable lessons into memory, and those lessons reach future sessions automatically. Your job depends on your role.
All of this is opt-in infrastructure. If report_outcome or a memory tool
returns disabled: true, skip it silently and continue your task — learning
is off for this run (often deliberately, e.g. a control run) and that is
expected, not an error.
A bare error with no disabled key is different: say so, don't skip it.
That shape means the tool could not reach a verdict — cao-server is unreachable,
or its settings.json could not be read — so learning may well be ON while
nothing is being recorded. Mention it in your response and carry on with the
task.
One report_outcome call per completed step, delegated task, or work item —
after validation/review, not before:
report_outcome(
task_label="convert package CustomerETL (iteration 2)",
success=false,
workflow_name="ssis-migration",
agent_profile="transformer", # who did the work (defaults to you)
score=40, # optional 0-100 metric if you have one
friction_notes="Lookup with partial cache emitted an invalid join; "
"improver patched the cache-mode mapping."
)
Rules for friction_notes:
test cases passed, vs 9 / 19 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.