Mira coach
MIRA AdultEdge — Memory-Imagination-Reason Architecture for adult learning diagnosis and coaching
npx -y skills add eidos11/mira-adultedge --skill mira-coachAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Run coaching (stage 4) on a MIRA diagnosis JSON produced by mira-diagnose-verify and emit the same JSON with a structured `coaching` key added. Unsupported patterns receive an explicit out-of-scope note — never a silent skip. Use when the user has a diagnosis JSON and wants coaching output, or wants to chain diagnose → coach in a pipeline.
SKILL.md
5.1 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
mira-coach
Add structured coaching to a MIRA diagnosis JSON.
When to use
Trigger this skill when the user has a diagnosis JSON from mira-diagnose-verify
(or python -m mira --format json) and wants:
- structured coaching for the detected cognitive pattern (
coaching.block,coaching.pattern_id), or - explicit out-of-scope marking when the detected pattern has no coaching template yet (see §5 honesty rule below).
Do not trigger for raw learner text — run mira-diagnose-verify first to get
the diagnosis JSON.
Input contract
Input must be a diagnosis JSON produced by mira-diagnose-verify:
| key | description |
|---|---|
schema_version | must be "0.2.2" |
input | the original learner claim text (required for coaching) |
route_vtype | verification type (I / A / D) |
psr | {P, S, R} PSR decomposition |
patterns | list of {pattern_id, lane2_status, evidence_trace} |
overlay_status | overall verdict |
evidence_summary | aggregated evidence text |
The coaching and report keys must be absent (pre-coaching stage output).
Output contract
The output is the input JSON with one key added: coaching.
{
"schema_version": "0.2.2",
"input": "...",
...all original diagnosis keys preserved...,
"coaching": {
"block": "## Coaching\n\n...",
"pattern_id": "fluency_illusion",
"note": null
}
}
coaching sub-fields
| field | description |
|---|---|
block | Coaching text (Socratic prompts + action invitation) |
pattern_id | Primary pattern addressed; null if none resolved |
note | null for a supported pattern OR no clear match; out-of-scope message for a resolved-but-unsupported pattern (disambiguate via pattern_id — see below) |
note=nullis ambiguous on its own — it covers two distinct cases. Consumers must readpattern_idto tell them apart:
pattern_idnotemeaning set nullsupported pattern — coaching provided in blocknullnullno clear match — no pattern evidenced; blockcarries no-match guidanceset out-of-scope message a pattern was resolved but has no coaching template
Honesty rule (§5) — ZERO silent skip
If a pattern is resolved but has no coaching template, coaching.note is set to:
"out of v0.x scope: pattern '<id>' has no coaching template"
It is never silently left as null. A silent skip is a P1 honesty violation.
(The "no clear match" case — pattern_id=null — is distinct: there is no
resolved pattern to mark out-of-scope, so note stays null.)
Supported patterns (v0.x): fluency_illusion, false_dilemma,
oversimplified_cause, sunk_cost, effort_heuristic, willpower_blame.
2-step CLI usage contract
# Step 1 — diagnose reasoning text
python skills/mira-diagnose-verify/scripts/diagnose.py \
"I failed because I'm not smart enough." \
> diag.json
# Step 2 — add coaching
python skills/mira-coach/scripts/coach.py < diag.json > coached.json
# or equivalently:
python skills/mira-coach/scripts/coach.py diag.json > coached.json
Language flag:
python skills/mira-coach/scripts/coach.py --lang ko < diag.json > coached_ko.json
API
# scripts directory must be on sys.path
import coach
coached_dict = coach.coach(diag_json_dict, lang="en")
coach(diag_json, *, lang="en") -> dict
Accepts the diagnosis JSON as a Python dict. Returns the same dict with
coaching added. Input dict is never mutated (immutability).
Structure
scripts/coach.py— thin wrapper: reconstructsDiagnoseResultfrom the diagnosis JSON → callsmira.pipeline.coach_from_overlay→ returns input dict withcoachingadded (additive, not re-serialized from scratch).
Design notes
- Thin wrapper only: all coaching and honest-skip logic lives in
mira.pipeline.coach_from_overlay(engine).coach.pycontains no coaching logic of its own. - Additive output: the input JSON is preserved exactly;
coachingis added as a new top-level key. This avoids a third from-scratch serializer (DRY — onlydiagnose.pyandmira/__main__.pyserialize from pipeline output;coach.pyreuses the diagnosis JSON directly). - Reconstruction: the diagnosis JSON lacks
lane1_pass(set byrun_reduced_criticinsidecoach_from_overlay). Alane1_pass=Trueplaceholder is used;coach_from_overlayoverwrites it immediately. - Immutability: input dict is never mutated;
coach()returns a new dict. - Pattern: mirrors
mira-diagnose-verifyconventions — argparse, stdin or file input, JSON stdout, errors to stderr + exit 1.
What ships with it: 1 file
8.5 KB alongside SKILL.md, 1 of them executable
scripts/
- coach.pyruns8.5 KB
Gives 0 of the 12 instructions most learn study skills give in ~1.3k tokens
Counted across 546 of the 573 authors here whose files we hold, read 2026-08-07
- Calculate the zone of proximal development before teachingin 25 of 546, across 8 files
- Produce self-contained HTML lessonsin 24 of 546, across 8 files
- Record user preferences in a notes filein 23 of 546, across 5 files
- Maintain a teaching workspace in the current directoryin 21 of 546, across 4 files
- Find high-quality resources before writing lessonsin 19 of 546, across 5 files
- Make lessons beautiful, short, and quickly completablein 19 of 546, across 3 files
- Create reusable components for lessonsin 19 of 546, across 5 files
- Create compressed reference documents for quick lookupin 19 of 546, across 3 files
- Update the mission file and records upon mission changesin 16 of 546, across 2 files
- Set min_dist to 0.0 for clustering preprocessingin 16 of 546, across 6 files
- Populate the mission file before teachingin 15 of 546, across 1 file
- Include interactive feedback loops in lessonsin 15 of 546, across 1 file
Said here and by no other author read
- Preserve the input diagnosis JSON exactly
- Add coaching as a new top-level key
- Set an out-of-scope note for unsupported resolved patterns
- Leave note null for supported patterns or no clear match
- Disambiguate note null cases using pattern_id
- Keep coaching logic out of the wrapper script
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.