Session Summarizer
Reads the current Claude Code session and produces a clean, structured summary
the user can paste into notes, share with teammates, or use to resume work in a
future session.
The summary is language-matched: if the conversation has been in Turkish,
output Turkish. If English, output English. If mixed, follow the user's most
recent messages.
Phase 1 — Detect scope
Before summarizing, decide what to cover:
- Default: full session from the first user message to the most recent.
- If the user says "son N mesajı özetle" / "summarize the last N messages" →
scope to that window.
- If the user says "X konusunu özetle" / "summarize the X part" → filter to
messages relevant to that topic only.
- If the user says "kısaca özetle" / "tldr" / "brief" → produce the short form
(see Phase 3, "Short form").
Also detect if any files were changed in the session by running:
git diff --name-only HEAD 2>/dev/null
git status --short 2>/dev/null
If there are changed files, include them in the "Changes Made" section.
If not, omit that section entirely (don't show empty sections).
Phase 2 — Extract signals from the conversation
Read the conversation top-to-bottom and pull out:
Goals & intent
- What the user originally asked for
- How the goal evolved or was refined mid-session
Decisions
- Choices made (e.g. "we decided to use Postgres over SQLite because…")
- Tradeoffs accepted
- Things explicitly ruled out
Actions taken
- Files created, edited, or deleted
- Commands run that had meaningful effect (installs, migrations, deploys)
- External operations (PRs opened, issues filed, services called)
Findings
- Bugs discovered
- Things learned about the codebase or system
- Surprises or non-obvious behavior uncovered
Open questions / unresolved
- Things the user asked but were not answered
- Errors that were worked around but not fixed
- "We'll come back to this" items
Next steps
- Explicit TODOs the user stated
- Logical next actions implied by where the session left off
Skip:
- Routine tool calls without meaningful outcome
- Back-and-forth clarifications that didn't change direction
- Anthropic boilerplate / system messages
Phase 3 — Format the output
Standard form (default)
# 📋 Oturum Özeti — {YYYY-MM-DD}
## 🎯 Amaç
{1-2 cümle: kullanıcı bu oturumda ne yapmak istedi}
## ✅ Yapılanlar
- {Eylem 1 — somut, fiil ile başla}
- {Eylem 2}
- {…}
## 🧠 Kararlar
- {Karar 1 — neden alındı}
- {Karar 2}
## 📁 Değişen Dosyalar
- `path/to/file.ext` — {ne değişti, kısaca}
- `path/to/other.ext` — {…}
## 🔍 Bulgular
- {Bulgu 1}
- {Bulgu 2}
## ❓ Açık Konular
- {Cevaplanmamış soru veya çözülmemiş sorun}
## ⏭️ Sonraki Adımlar
- [ ] {TODO 1}
- [ ] {TODO 2}
For English sessions, use the same structure with English headers:
Goal, Done, Decisions, Files Changed, Findings, Open Questions,
Next Steps.
Omit any section that has no content. Do not output empty headers.
Short form ("tldr" / "kısaca")
3-5 bullet points, no headers:
**Özet ({YYYY-MM-DD})**
- {En önemli nokta 1}
- {En önemli nokta 2}
- {Sonraki adım}
Phase 4 — Quality rules
- Be specific. "Auth middleware refactored" beats "made some changes".
Name files, functions, decisions.
- Be honest. If something failed or was worked around, say so. Don't
paint over partial work as complete.
- One pass, no fluff. No "In this session we explored…" intros, no
"Hope this helps!" outros. Start with the heading, end with the last bullet.
- Preserve user voice. If the user used a specific term ("ingestion
pipeline", "ödeme akışı"), reuse it instead of paraphrasing.
- Group related items. Don't list five separate "edited X" bullets when
they all belong to one feature — collapse them.
- Time-anchor open items. If the user said "Thursday" or "next sprint",
convert to absolute date (today is {{todays date}}) so the summary stays
readable later.
Phase 5 — Delivery
Output the summary directly in the chat as markdown. Do not write it to
a file unless the user explicitly asks ("dosyaya kaydet", "save to file").
If the user does ask to save:
- Default path:
./session-summary-{YYYY-MM-DD}.md
- If file exists, append a counter:
-2.md, -3.md
- Confirm the path after writing.
Edge cases
- Empty / very short session: If the conversation has fewer than 3
meaningful exchanges, say:
"Oturum çok kısa, özetlenecek bir şey yok henüz."
/ "Session is too short to summarize yet."
- Only questions, no actions: Produce the Goal + Findings + Open Questions
sections only; skip Done/Files Changed.
- Multi-topic session: Group the summary by topic with
## Konu: X
subheaders if there were 2+ unrelated workstreams.
- User asks for re-summary: If a summary was already produced earlier in
the session, summarize what happened since that point and reference the
prior summary briefly.
Trigger phrases → behavior
| User says |
Action |
| "özetle" / "özet çıkar" |
Standard form, full session |
| "kısaca özetle" / "tldr" |
Short form |
| "son 10 mesajı özetle" |
Standard form, scoped to last N |
| "X konusunu özetle" |
Standard form, filtered to topic X |
| "summarize" / "summary" / "recap" |
Standard form, English |
| "dosyaya kaydet özeti" |
Standard form, write to file |
1---2name: session-summarizer3description: Summarizes the current Claude Code session — the entire conversation from start to now — into a structured, readable report covering goals, decisions, changes made, open questions, and next steps. Always use this skill when the user says "özetle", "özet", "özet çıkar", "oturumu özetle", "konuşmayı özetle", "session özeti", "summarize", "summarize this session", "summary", "recap", "tldr", "wrap up", or anything implying they want a digest of what was discussed and done. Also trigger proactively when the user signals end of session ("bitirelim", "tamam bu kadar", "done for today") and a summary would help them resume later.4---56# Session Summarizer78Reads the current Claude Code session and produces a clean, structured summary9the user can paste into notes, share with teammates, or use to resume work in a10future session.1112The summary is **language-matched**: if the conversation has been in Turkish,13output Turkish. If English, output English. If mixed, follow the user's most14recent messages.1516---1718## Phase 1 — Detect scope1920Before summarizing, decide what to cover:2122- **Default**: full session from the first user message to the most recent.23- If the user says "son N mesajı özetle" / "summarize the last N messages" →24 scope to that window.25- If the user says "X konusunu özetle" / "summarize the X part" → filter to26 messages relevant to that topic only.27- If the user says "kısaca özetle" / "tldr" / "brief" → produce the short form28 (see Phase 3, "Short form").2930Also detect if any files were changed in the session by running:3132```bash33git diff --name-only HEAD 2>/dev/null34git status --short 2>/dev/null35```3637If there are changed files, include them in the "Changes Made" section.38If not, omit that section entirely (don't show empty sections).3940---4142## Phase 2 — Extract signals from the conversation4344Read the conversation top-to-bottom and pull out:4546**Goals & intent**47- What the user originally asked for48- How the goal evolved or was refined mid-session4950**Decisions**51- Choices made (e.g. "we decided to use Postgres over SQLite because…")52- Tradeoffs accepted53- Things explicitly ruled out5455**Actions taken**56- Files created, edited, or deleted57- Commands run that had meaningful effect (installs, migrations, deploys)58- External operations (PRs opened, issues filed, services called)5960**Findings**61- Bugs discovered62- Things learned about the codebase or system63- Surprises or non-obvious behavior uncovered6465**Open questions / unresolved**66- Things the user asked but were not answered67- Errors that were worked around but not fixed68- "We'll come back to this" items6970**Next steps**71- Explicit TODOs the user stated72- Logical next actions implied by where the session left off7374Skip:75- Routine tool calls without meaningful outcome76- Back-and-forth clarifications that didn't change direction77- Anthropic boilerplate / system messages7879---8081## Phase 3 — Format the output8283### Standard form (default)8485```markdown86# 📋 Oturum Özeti — {YYYY-MM-DD}8788## 🎯 Amaç89{1-2 cümle: kullanıcı bu oturumda ne yapmak istedi}9091## ✅ Yapılanlar92- {Eylem 1 — somut, fiil ile başla}93- {Eylem 2}94- {…}9596## 🧠 Kararlar97- {Karar 1 — neden alındı}98- {Karar 2}99100## 📁 Değişen Dosyalar101- `path/to/file.ext` — {ne değişti, kısaca}102- `path/to/other.ext` — {…}103104## 🔍 Bulgular105- {Bulgu 1}106- {Bulgu 2}107108## ❓ Açık Konular109- {Cevaplanmamış soru veya çözülmemiş sorun}110111## ⏭️ Sonraki Adımlar112- [ ] {TODO 1}113- [ ] {TODO 2}114```115116For English sessions, use the same structure with English headers:117`Goal`, `Done`, `Decisions`, `Files Changed`, `Findings`, `Open Questions`,118`Next Steps`.119120**Omit any section that has no content.** Do not output empty headers.121122### Short form ("tldr" / "kısaca")1231243-5 bullet points, no headers:125126```markdown127**Özet ({YYYY-MM-DD})**128- {En önemli nokta 1}129- {En önemli nokta 2}130- {Sonraki adım}131```132133---134135## Phase 4 — Quality rules136137- **Be specific.** "Auth middleware refactored" beats "made some changes".138 Name files, functions, decisions.139- **Be honest.** If something failed or was worked around, say so. Don't140 paint over partial work as complete.141- **One pass, no fluff.** No "In this session we explored…" intros, no142 "Hope this helps!" outros. Start with the heading, end with the last bullet.143- **Preserve user voice.** If the user used a specific term ("ingestion144 pipeline", "ödeme akışı"), reuse it instead of paraphrasing.145- **Group related items.** Don't list five separate "edited X" bullets when146 they all belong to one feature — collapse them.147- **Time-anchor open items.** If the user said "Thursday" or "next sprint",148 convert to absolute date (today is {{todays date}}) so the summary stays149 readable later.150151---152153## Phase 5 — Delivery154155Output the summary directly in the chat as markdown. Do **not** write it to156a file unless the user explicitly asks ("dosyaya kaydet", "save to file").157158If the user does ask to save:159- Default path: `./session-summary-{YYYY-MM-DD}.md`160- If file exists, append a counter: `-2.md`, `-3.md`161- Confirm the path after writing.162163---164165## Edge cases166167- **Empty / very short session**: If the conversation has fewer than 3168 meaningful exchanges, say:169 > "Oturum çok kısa, özetlenecek bir şey yok henüz."170 > / "Session is too short to summarize yet."171- **Only questions, no actions**: Produce the Goal + Findings + Open Questions172 sections only; skip Done/Files Changed.173- **Multi-topic session**: Group the summary by topic with `## Konu: X`174 subheaders if there were 2+ unrelated workstreams.175- **User asks for re-summary**: If a summary was already produced earlier in176 the session, summarize what happened *since* that point and reference the177 prior summary briefly.178179---180181## Trigger phrases → behavior182183| User says | Action |184|-----------|--------|185| "özetle" / "özet çıkar" | Standard form, full session |186| "kısaca özetle" / "tldr" | Short form |187| "son 10 mesajı özetle" | Standard form, scoped to last N |188| "X konusunu özetle" | Standard form, filtered to topic X |189| "summarize" / "summary" / "recap" | Standard form, English |190| "dosyaya kaydet özeti" | Standard form, write to file |