Overview
ax ingests the transcripts of coding agents (Claude Code, Codex, Pi, OpenCode, Cursor and others), git history and tool calls into a local database. Nothing is uploaded and no daemon runs. This skill uses that database to answer one kind of question: what sequence of sessions, decisions and commits produced a given result, so the user can repeat it.
The work is strictly read-only: query, read, summarise in chat. Do not edit code, write recipe files or run ax commands that change state (ingest, improve accept, profile publish, contribute) unless the user asks for that separately.
Instructions
1. Confirm ax is usable
command -v ax || command -v axctl
ax doctor
- If neither binary exists, tell the user to install ax from https://ax.necmttn.com/docs. Do not install it for them and never pipe an installer into a shell. The npm package named
axis a different project. - If
ax doctorreports problems, orax sessions herereturns nothing for a repository the user has worked in, ask them to runax ingest(the first full import can take a while) and then retry.
2. Choose the anchor
| The user gives | Start with |
|---|---|
| a commit SHA | ax sessions near <sha> --json (run inside that repo) |
| a date or period | ax sessions around <YYYY-MM-DD> --days=3 --json (window is plus or minus N days) |
| a topic or feature name | ax recall "<topic>" --sources=commit --json, pick the best commit, then ax sessions near <sha> |
| nothing precise | ax sessions here --days=14 --json (current repository) |
ax recall is full-text search over past work; --sources takes turn, commit and skill (comma separated, default turn). Narrow it with --project or --since when the topic is common. If several commits fit, show the short list and ask which one before going on. sessions here hides subagent sessions unless you add --include-subagents.
3. Read the sessions that matter
Prefer sessions that overlap the anchor, show heavy activity, or mention the artifact in their summaries, files or commits. Two to five are usually enough.
ax sessions show 7c1d2e4a-58b0-4f0e-9a6d-3b5f21c8d0aa --json
ax sessions show 7c1d2e4a-58b0-4f0e-9a6d-3b5f21c8d0aa --by-role
ax sessions show 7c1d2e4a-58b0-4f0e-9a6d-3b5f21c8d0aa --expand=2f2b5d9e-7f89-4a0f-b8ee-9657cdbb8c10
- Copy session ids exactly as the listing printed it.
--by-rolegroups the skills used by role, which helps to order the steps.- Subagents appear as one-line summaries. Use
--expand=<uuid>with the subagent id (repeatable) or--allonly for the ones that carried the real work. --turnsadds short excerpts of the conversation when the summary is not enough.
4. Answer in chat
Give, briefly:
- Anchor: the commit, date window or topic used.
- Sessions read, with a line on why each mattered.
- The ordered steps that led to the result, naming skills and tools where visible.
- Two to four decisions where the user or agent changed direction.
- Evidence: commit SHAs, file names, command output, turn references.
- Gaps: missing telemetry, ambiguous sessions, parts that ax cannot show.
Examples
Example 1: from a topic to a workflow
User: "What made the retry fix in the billing webhook work?"
ax recall "billing webhook retry" --sources=commit --json
ax sessions near 9f31c2a --json
ax sessions show 7c1d2e4a-58b0-4f0e-9a6d-3b5f21c8d0aa --by-role
Reply shape:
Anchor: commit 9f31c2a "make webhook retries idempotent" (2026-09-14).
Sessions read: 7c1d2e4a... (Claude Code, 2h): closest to the commit, contains
the failing replay and the final patch.
Steps: 1) reproduced duplicate charges by replaying a stored event; 2) added an
idempotency key column; 3) wrapped the handler in a transaction; 4) replayed 40
events and checked there were no double writes.
Decisions: the user rejected a Redis lock in favour of a database unique
constraint (turn 31).
Gaps: no test output was captured, so the replay result rests on the agent's summary.
Example 2: from a date, with a subagent
User: "Extract the workflow around 2026-09-15 for the CSV export work."
ax sessions around 2026-09-15 --days=3 --json
ax sessions show c04e8b71-2d3a-4c55-8e19-70f6a1b9d2e3 --json
ax sessions show c04e8b71-2d3a-4c55-8e19-70f6a1b9d2e3 --expand=2f2b5d9e-7f89-4a0f-b8ee-9657cdbb8c10
Reply shape:
Anchor: sessions between 2026-09-12 and 2026-09-18 touching export/*.
Main session c04e8b71...: streaming CSV writer and the download endpoint.
Subagent 2f2b5d9e...: built fixtures with quoted commas and multiline cells.
Steps: 1) spec for column order; 2) streaming writer; 3) fixtures from the
subagent; 4) manual check of a 200k-row export.
Guidelines
- The ids above are illustrative. Always take ids from ax output, never invent or shorten them.
- Evidence beats memory. If ax data conflicts with what the user remembers, report what the graph shows.
- If no matching session exists, say the local ax data lacks evidence. Do not make up a workflow.
- If the roles in
--by-roleare mostly unclassified, order the steps by timestamps, tool calls and commits, and say the role grouping is incomplete. - Summarise, do not paste large JSON. Cite the session or commit instead.
ax sessions nearneeds to run inside the repository that holds the commit.