Help us improve
Share bugs, ideas, or general feedback.
From ax
Performs a deep meta-retrospective across past retros and current setup to surface improvements missed by heuristic analysis. Use when proposals are sparse or you want broader exploration.
npx claudepluginhub necmttn/axHow this skill is triggered — by the user, by Claude, or both
Slash command
/ax:retro-metaThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The companion to `ax:retro`. Where `ax:retro` walks the heuristic-derived
Guides users through a structured retrospective of the ax agent-experience graph: reviewing open proposals, locking pending verdicts, and analyzing hook effectiveness signals.
Generates adaptive-depth session retrospective reports (retro.md) from plan.md and lessons.md, converting outcomes into persistent process improvements. Supports deep/light modes and directory resolution logic.
Reviews completed coding sessions to extract actionable improvements: DX friction, documentation gaps, architecture issues, anti-patterns, bug prevention, and tooling updates.
Share bugs, ideas, or general feedback.
The companion to ax:retro. Where ax:retro walks the heuristic-derived
proposals one by one, retro-meta asks: what improvements does the
existing pipeline NOT yet see?
The external agent (this one, Claude Code or Codex with high thinking) drives the reasoning. The CLI just produces structured evidence and takes user-approved plans back.
Explicit triggers only:
/ax:retro-meta slash commandax:retro finishes if the user wants broader explorationDo NOT auto-trigger on generic "look at recent work".
ax (axctl) is on PATH and the local SurrealDB is reachable. If
ax doctor fails, stop and tell the user scripts/db-start.sh.ax:retro first.ax retro meta --json --since=30 > /tmp/ax-meta.json
Read /tmp/ax-meta.json. The keys you care about:
experiment_status[] - read this FIRST (see Step 2). Each entry:
experiment_id, proposal_dedupe_sig, proposal_title,
proposal_form, artifact_path, days_since_accepted,
opportunities_count, addressed_count, address_ratio,
latest_checkpoint{kind,suggested,observed_at}, locked_verdict.
Pending verdicts (locked_verdict=null) come first.retros[] - raw tried/worked/failed/next per session.patterns.tool_failures - sorted by total_count desc.patterns.corrections - total + max-per-session + session_count.patterns.friction_kinds - recurring kinds across sessions.current_state.skills - what's already installed (do NOT propose
duplicates).current_state.open_proposals - existing heuristic proposals.current_state.accepted_experiments - accepted but verdict-pending.current_state.claude_md_user / claude_md_project - guidance file
paths (null if absent).investigation_prompts[] - the prompts you must walk.Walk experiment_status in order. For each entry with
locked_verdict=null:
a. If latest_checkpoint.suggested is ignored or regressed:
investigate why (read the artifact_path, sample the matching
opportunities), then run
ax improve verdict --set=<v> <proposal_dedupe_sig> to lock the
call.
b. If latest_checkpoint.suggested is adopted AND
days_since_accepted > 30: lock it as adopted so it stops
cluttering the open list:
ax improve verdict --set=adopted <proposal_dedupe_sig>.
c. If latest_checkpoint is null OR suggested is partial: leave
open. Note in the final summary that it's still gathering signal.
A rule of thumb mirrored from investigation_prompts: if
address_ratio < 0.1 after t+30, default to locking as ignored
unless the artifact has an obvious "not yet exercised" reason.
For EACH prompt in investigation_prompts:
~/.claude/skills/ and ~/.agents/skills/claude_md_user if non-nullclaude_md_project if non-null~/.claude/plans/<YYYY-MM-DD>-<slug>.md,
30–100 lines. Sections: Problem, Evidence (cite retro ids),
Proposed change, Success signal.
b. Show the user a 4–6 line summary.
c. Ask explicitly: "Register this as an accepted experiment? (y/n)"
d. ONLY on yes:
ax retro plan \
--slug=<kebab-slug> \
--form=skill|hook|guidance|automation \
--title="<short title>" \
--hypothesis="<one sentence>" \
--plan-path=~/.claude/plans/<file>.md \
--evidence-retros=<retro:id1,retro:id2> \
--confidence=low|medium|high
For each plan you registered, you may run:
ax improve accept --with-agent <dedupe_sig>
This spawns the internal scaffolding agent to draft an artifact (SKILL.md, hook script, etc) from the plan. Skip if the plan is already self-sufficient.
Print one paragraph:
~/.claude/skills/. Use ax retro plan +
ax improve accept --with-agent.# Snapshot only (no side effects)
ax retro meta --since=30 [--limit-retros=50] [--pretty]
# Register a user-approved plan as accepted proposal + experiment
ax retro plan \
--slug=<kebab> \
--form=skill|hook|guidance|automation \
--title="<title>" \
--hypothesis="<hyp>" \
--plan-path=<path-to-plan.md> \
[--evidence-retros=retro:a,retro:b] \
[--artifact-path=<path>] \
[--confidence=low|medium|high] \
[--frequency=<N>] \
[--json]
# Optionally hand off scaffolding to the internal agent
ax improve accept --with-agent <dedupe_sig>
# Lock the verdict on a previously-accepted experiment
ax improve verdict --set=adopted|ignored|regressed|partial|no_longer_needed <dedupe_sig>
Output of ax retro meta defaults to JSON because the reader is you,
not a human.