Automated summary
Analyzes the day's Claude Code conversation logs and produces a draft daily journal entry formatted for Obsidian.
Strengths
- Turns today's JSONL log files into a structured Markdown draft with Todo, Done, Memo and Reference sections.
- Sorts activity into explicit buckets: development, non-development, learning, plus matching todo lists.
- Handles several log files at once and filters out system noise such as system-reminders and task notifications.
- Takes a free-text argument so non-engineering tasks or extra notes can be folded into the draft.
Limitations
- Relies on Claude Code's exact ~/.claude/projects/-<converted-path>/ location, so it does not work with other tools.
- Truncates each extracted message to 400 characters, which can drop detail on long-running tasks.
- The output template is Korean and assumes an Obsidian vault convention (the [[YYYY M월 목표]] link).
Run it at the end of the workday, after a Claude Code session, when you want a personal journal entry written quickly.
Not useful if you don't use Claude Code, don't keep an Obsidian vault, or actually need a detailed project report rather than a personal daily log.
Security analysis
CautionThe skill is transparent and local-only: it enumerates today's Claude Code JSONL logs and extracts user messages into a diary draft. There is real execution via bash and Python, and it touches private conversation logs, but nothing leaves the machine and there are no destructive or exfiltrating actions, so it is low-risk caution rather than risky.
- •Delegates to an Agent subagent instructed to run shell commands (`pwd`, `ls -la ~/.claude/projects/...`) and an inline Python script over local JSONL files
- •Reads the user's full Claude Code conversation history from ~/.claude/projects/, which may contain sensitive code, credentials, or business context; the extracted content is written into an Obsidian draft
- •No network calls, no exfiltration, no destructive commands, no obfuscated payloads, no safety-disabling instructions
- •Bare `except: pass` in the script silently swallows parse errors (robustness, not security)
Examples
/my-daily-log/my-daily-log 오후에 채용 인터뷰 2건 진행했고, 다음 주 온보딩 문서 초안이 필요해/my-daily-log API 스키마 검토랑 팀 회고 준비한 것도 Done에 넣어줘name: my-daily-log description: 오늘 Claude Code 대화 로그를 분석하여 Obsidian 일지 초안을 생성합니다. 업무 종료 후 일지 작성 시 사용하세요. disable-model-invocation: true argument-hint: [비개발 업무 또는 추가 메모] allowed-tools: Agent
오늘 하루 작업한 내용을 분석하여 Obsidian 일지 초안을 생성합니다.
Agent tool을 호출하세요. 파라미터:
- description: "일일 업무 일지 초안 생성"
- prompt: 아래 내용 전달
오늘 날짜 기준으로 Claude Code 대화 로그를 분석하여 Obsidian 일지 초안을 생성합니다. 추가 컨텍스트: $ARGUMENTS
1단계: 로그 파일 탐색
현재 작업 디렉토리를 확인합니다 (pwd).
Claude Code 프로젝트 로그 경로를 계산합니다:
- 현재 경로의
/를-로 치환하여~/.claude/projects/{변환된경로}/구성 - 예:
/Users/mosong/Project→~/.claude/projects/-Users-mosong-Project/
오늘 날짜(YYYY-MM-DD)의 JSONL 파일을 찾습니다:
ls -la ~/.claude/projects/{로그디렉토리}/*.jsonl
수정 날짜가 오늘인 파일을 모두 대상으로 합니다. 파일이 여러 개면 모두 처리합니다.
2단계: 사용자 질의 추출
오늘의 각 JSONL 파일에서 사용자 메시지를 다음 Python 스크립트로 추출합니다:
import sys, json
def extract_messages(filepath):
messages = []
with open(filepath) as f:
for line in f:
line = line.strip()
if not line:
continue
try:
obj = json.loads(line)
if obj.get('type') == 'user' and 'message' in obj:
msg = obj['message']
if isinstance(msg, dict) and msg.get('role') == 'user':
content = msg.get('content', '')
ts = obj.get('timestamp', '')[:19]
if isinstance(content, list):
for c in content:
if isinstance(c, dict) and c.get('type') == 'text':
text = c.get('text', '').strip()
if text and not text.startswith('<') and len(text) > 10:
messages.append((ts, text[:400]))
elif isinstance(content, str):
text = content.strip()
if text and not text.startswith('<') and len(text) > 10:
messages.append((ts, text[:400]))
except:
pass
return messages
for path in sys.argv[1:]:
for ts, m in extract_messages(path):
print(f"[{ts}] {m}")
print()
system-reminder, task-notification, command-message 등 메타 메시지는 무시합니다.
3단계: 내용 분류
추출된 질의를 아래 기준으로 분류합니다:
| 버킷 | 기준 | |------|------| | 개발 Done | 코드 구현, API 설계/분석, 버그 수정, 스크립트 작성 완료 | | 비개발 Done | 기획 검토, 팀 운영, 환경 세팅, 기술 조사, 불필요 작업 차단 | | 학습 Done | 문서 리딩, 기술 개념 탐구, 개인 학습 | | 기술 Todo | 오늘 알게 된 개념 중 더 깊이 파야 할 것, 미완성 기술 작업 | | 경영지원 Todo | 팀 운영 후속, 미완성 비개발 업무 | | 기타 Todo | 개인 후속 처리 | | Memo | 오늘 얻은 인사이트, 다음 작업 시 참고할 패턴, 주의사항 |
Done 항목은 "무엇을 왜 했는지"가 드러나도록 한 줄로 작성합니다. 단순 명령 실행이나 중단된 요청은 제외합니다.
4단계: 초안 출력
아래 형식을 코드블록으로 감싸서 복붙 가능하게 출력합니다. 항목이 없는 섹션은 비워두되 섹션 제목은 유지합니다.
# {YYYY-MM-DD}
[[{YYYY} {M}월 목표]]
## Todo
### 기술
-
### 경영지원
-
### 기타
-
## Done
### 개발
-
### 비개발
-
### 학습
-
## Memo
-
## Reference
-
에이전트 완료 후 사용자에게 안내합니다:
- 생성된 초안을 Obsidian 일지에 복붙하면 됩니다
- $ARGUMENTS 에 추가 업무 내용을 넣으면 Done/Todo에 반영됩니다
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/my-daily-log-to-obsidian-ms2s7byl/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/my-daily-log-to-obsidian-ms2s7byl' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/my-daily-log-to-obsidian-ms2s7byl/download' --output '.skill-downloads/my-daily-log-to-obsidian-ms2s7byl/SKILL.md.part' && mv '.skill-downloads/my-daily-log-to-obsidian-ms2s7byl/SKILL.md.part' '.skill-downloads/my-daily-log-to-obsidian-ms2s7byl/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
Tools declared by the author (check availability in your agent): Agent
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.
Claude Code
test -f '.skill-downloads/my-daily-log-to-obsidian-ms2s7byl/SKILL.md' && test -s '.skill-downloads/my-daily-log-to-obsidian-ms2s7byl/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/my-daily-log' && cp -R '.skill-downloads/my-daily-log-to-obsidian-ms2s7byl' '.claude/skills/my-daily-log'OpenSkills
OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.
Official OpenSkills installationopenskills install './.skill-downloads/my-daily-log-to-obsidian-ms2s7byl'openskills read 'my-daily-log-to-obsidian-ms2s7byl'Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.
For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.
openskills syncManual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/my-daily-log-to-obsidian-ms2s7byl/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
PDF Reader
Productivity
Read and extract text from PDF files, including documents, reports, contracts, and spreadsheets. Works with local files, URLs, and WhatsApp attachments. Use whenever PDF content is needed, even if not explicitly requested.
Discord Messaging Workflows
Productivity
Use the message tool to send, edit, and moderate Discord messages with interactive components.
Interactive Verdict Preview
Productivity
Generate an interactive HTML preview of keep/drop verdicts for maintainer review, then process the pasted feedback JSON.