From toby-essentials
Saves structured summaries of conversations to dated markdown files in conv-logs/ using git project root, checks prior saves to append new topics, tracks skills used, branch, and changed files.
npx claudepluginhub tobyilee/toby-plugins --plugin toby-essentialsThis skill uses the workspace's default tool permissions.
Save a concise summary of the current conversation to a markdown file in the `conv-logs/` directory.
Generates and saves Markdown session logs capturing objectives, file changes, referenced materials, technical notes, future plans, open items, and metrics to resume project work across conversations.
Saves conversation history to timestamped Markdown session logs in sessions/ directory with metadata, summaries, actions, technical notes, and follow-ups. Activates on 'save session', '保存对话', or similar phrases.
Converts Claude Code JSONL conversation logs to Markdown for retrospectives, with incremental/full/project-specific options, index summaries, and analysis templates like growth tracking and bug patterns.
Share bugs, ideas, or general feedback.
Save a concise summary of the current conversation to a markdown file in the conv-logs/ directory.
The goal is to create a readable record of what Toby and Claude discussed and accomplished — not a verbatim transcript, but a structured summary that's useful for future reference.
IMPORTANT: Always resolve the project root via git rev-parse --show-toplevel and use that as the base for conv-logs/. Do NOT use the current working directory — it may be a subdirectory.
Use the current date to create a hierarchical directory structure:
PROJECT_ROOT=$(git rev-parse --show-toplevel)
YYYYMM=$(date +%Y%m)
DD=$(date +%d)
mkdir -p "${PROJECT_ROOT}/conv-logs/${YYYYMM}/${DD}"
Look for the most recent file across all subdirectories of conv-logs/ under the project root:
find "${PROJECT_ROOT}/conv-logs" -name 'conv-*.md' -type f -print0 2>/dev/null | xargs -0 ls -t 2>/dev/null | head -1
If a previous save exists, read it to determine where the last save ended — the new save should only include conversation that happened after that point. Always start numbering from ## 1. in each save file.
If no previous save exists, this is the first save of the session — include everything.
Use the current timestamp:
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
YYYYMM=$(date +%Y%m)
DD=$(date +%d)
FILENAME="${PROJECT_ROOT}/conv-logs/${YYYYMM}/${DD}/conv-${TIMESTAMP}.md"
Review the conversation history (only the part after the last save, or everything if first save) and write a markdown file with this structure:
# Conversation Log — {YYYY-MM-DD HH:MM}
# 참여자
- Toby (사용자)
- Claude ({model name, e.g. Opus 4.6})
## 브랜치
- `{branch}` (or `main` if no feature branch)
---
## 1. {Topic Title}
사용: {comma-separated list of skills, tools, agents used in this exchange}
Toby: {One sentence summary of request}
Claude: {What was done — actions, key results. Use bullet list for multiple items:}
- item 1
- item 2
---
## 2. {Next Topic}
사용: {skills, tools, agents}
Toby: ...
Claude: ...
(Continue numbering for each distinct topic. Use `---` between sections.)
---
## 변경된 파일
- `path/to/new-file.md` (추가)
- `path/to/modified-file.json` (수정)
- `path/to/deleted-file.md` (삭제)
Before writing the file, run git diff --name-status HEAD (or compare against the commit at session start) to get the actual list of added/modified/deleted files. Use the status codes:
If there are no uncommitted changes (everything was already committed and pushed), use git diff --name-status {first_commit_of_session}..HEAD to capture all changes made during the session. For incremental saves, only list files changed since the previous save.
Guidelines for writing the summary:
## 1., ## 2., ...)Toby: lines capture the user's intent in one sentence (not verbatim)Claude: lines describe what was actually done — use bullet lists when there are multiple actions or results**) on Toby/Claude names — keep them plain text사용: line right after each section title listing skills, tools, and agents used (e.g., 사용: skill-creator, firecrawl, Bash, Explore agent)## 1. (do not continue from the previous file's numbering). Do not include a reference to the previous log fileReview the conversation for any Korean prompts that were rewritten into English (lines like Your prompt rewritten: "..."). If any exist, append them to a monthly prompt log file:
PROMPT_FILE="${PROJECT_ROOT}/conv-logs/${YYYYMM}/prompt-${YYYYMM}.md"
If the file does not exist, create it with a header:
# Prompt Rewrites — {YYYY-MM}
| id | datetime | korean | english |
|----|----------|--------|---------|
Append each rewrite as a new row. Use an auto-incrementing id (continue from the last id in the file, or start at 1). The datetime is the approximate time of the exchange.
Example rows:
| 1 | 2026-03-25 21:30 | .idea는 .gitignore에 포함해줘 | Add .idea to .gitignore. |
| 2 | 2026-03-25 21:32 | save-conversation skill에서 md 문서를 만든 뒤에 git add로 tracking까지 해주도록 변경해줘 | Modify the save-conversation skill so that after creating the markdown file, it also runs `git add` to track the file. |
If there are no Korean-to-English rewrites in the conversation (or the scope being saved), skip this step.
After writing, run git add on the prompt file:
git add "${PROMPT_FILE}"
Write the conversation log file using the Write tool, then run git add to track it:
git add "${FILENAME}"
Then tell the user:
"대화 내용을 저장했습니다:
conv-logs/{yyyymm}/{dd}/conv-{timestamp}.md"
Show a brief preview (first 10-15 lines) so the user can verify the content looks right.