mcpbeat Sign in

Session Agent Skill

Extract conversation turns from AI session history files (.jsonl)

3k tokens
context cost
the whole folder, loaded on every use
4
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
856
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/axoviq-ai/synthadoc --skill session

The instruction itself

8 sections, as written by the author

Session Skill

Extracts human-readable conversation turns from AI coding session history files

(.jsonl). Supports two formats:

  • Claude Code — the JSONL format written by Anthropic's Claude Code CLI

(~/.claude/projects/<hash>/<session-id>.jsonl)

  • Codex / Cursor — the simpler {"role": ..., "content": ...} per-line format

used by OpenAI Codex and Cursor IDE sessions

Format is detected automatically from the first parseable line.

What gets extracted

Only substantive conversation turns are kept:

| Content type | Action |

|---|---|

| User text messages | Kept if ≥ 3 words |

| Assistant text responses | Kept if ≥ 20 words |

| Assistant thinking blocks | Skipped (internal reasoning, not final output) |

| Tool use / tool result blocks | Skipped (avoids leaking file contents or credentials) |

| Image / attachment blocks | Skipped |

| Sub-agent scaffolding (isSidechain: true) | Skipped (internal sub-agent turns) |

| Session metadata lines | Skipped (permission-mode, file-history-snapshot, system, last-prompt) |

The extracted text is then passed through Synthadoc's standard pre-LLM source sanitizer

(zero-width characters, bidi overrides, HTML comments, hidden CSS spans, base64 blobs,

instruction-override phrases), exactly like PDF, DOCX, URL, and every other source type.

Output format

Each turn is labelled [USER] or [ASSISTANT] and separated by ---:

[USER]
How do I implement a sliding window algorithm?

---

[ASSISTANT]
A sliding window algorithm maintains a contiguous subarray (the "window") …

suggested_slug

The skill returns a suggested_slug in metadata derived from the session file's

modification time and the first substantive user message:

session-2026-07-15-how-do-i-implement-a-sliding

Large sessions — chunking

Sessions longer than 30 substantive turns are split into 30-turn chunks.

Each chunk is labelled with a ## Part N of M header so the downstream LLM

can process sections independently. The metadata dict includes chunk_total

when chunking occurs; single-chunk sessions (≤ 30 turns) are unchanged.

Limitations

  • Tool output excluded — tool result blocks (shell output, file reads, etc.)

are stripped. This is intentional: it avoids leaking file contents and

credentials into the wiki.

  • Format auto-detection — detection inspects the first 30 parseable lines.

Corrupt or empty files produce an empty ExtractedContent.

  • No deduplication across ingest runs — re-ingesting the same session file

creates or updates the same wiki page (standard ingest dedup applies via

source hash).

When this skill is used

  • Source path ends with .jsonl
  • Intent phrases: "claude session", "codex session", "cursor session",

"ai session", "session history"

Standalone usage

import asyncio
from synthadoc.skills.session.scripts.main import SessionSkill

skill = SessionSkill()

async def main():
    result = await skill.extract("/path/to/session.jsonl")
    print(result.text)       # [USER]\n...\n\n---\n\n[ASSISTANT]\n...
    print(result.metadata)   # {"format": "claude_code", "turn_count": 42, "suggested_slug": "..."}

asyncio.run(main())

Other skills for the same job

different authors, same section of the catalogue
Skill Creator
by anthropics
vendor ×10

Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.

56k tokens scripts
Skill Creator
by vercel-labs
vendor ×10

Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.

12k tokens scripts
Skill Creator
by JayZeeDesign
×9

Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.

10k tokens scripts
Template Skill
by JayZeeDesign
×7

Replace with description of the skill and when Claude should use it.

35 tokens
Dispatching Parallel Agents
by ZhanlinCui
×5

Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies

2k tokens
Skill Development
by anthropics
vendor ×4

This skill should be used when the user wants to "create a skill", "add a skill to plugin", "write a new skill", "improve skill description", "organize skill content", or needs guidance on skill structure, progressive disclosure, or skill development best practices for Claude Code plugins.

9k tokens
Find Skills
by sanity-io
vendor ×4

Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.

1k tokens
Writing Skills
by ZhanlinCui
×4

Use when creating new skills, editing existing skills, or verifying skills work before deployment

26k tokens scripts

How to use it

Copy the folder

Take axoviq-ai/session from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.