// Document AI-assisted development sessions to Obsidian vault using Chronicle data. Works with MCP (fastest) or CLI commands (portable). Use when completing a coding session, creating development logs, or maintaining a knowledge base of past work. Automatically creates structured notes with metadata, summaries, and wikilinks.
| name | chronicle-session-documenter |
| description | Document AI-assisted development sessions to Obsidian vault using Chronicle data. Works with MCP (fastest) or CLI commands (portable). Use when completing a coding session, creating development logs, or maintaining a knowledge base of past work. Automatically creates structured notes with metadata, summaries, and wikilinks. |
This skill helps you document development sessions to your Obsidian vault using Chronicle's database. Works with both MCP server (fast, structured) or CLI commands (portable, everywhere).
This skill auto-activates! (Milestone #13)
Prompts like "document session 75" or "export to Obsidian" automatically trigger a recommendation to use this skill. No need to manually load it!
Trigger patterns: document session, export to obsidian, save to vault See:
docs/HOOKS.mdfor full details
Use this skill when:
Option 1: With MCP (Preferred)
mcp__chronicle__get_session_summary(session_id) → Get structured JSON with full summarymcp__obsidian__write_note(...) → Write directly to Obsidian vaultOption 2: With CLI (Portable)
chronicle session <id> → Get formatted session details and summarymcp__obsidian__write_note(...) OR manually create note fileDecision Tree:
Document session to Obsidian
├─ MCP available? → Use mcp__chronicle__get_session_summary() + mcp__obsidian__write_note()
└─ CLI only? → Use `chronicle session <id>`, parse output, write note
Note: Summaries are automatically generated in background when session ends (may still be processing for recent sessions)
Create notes in Chronicle/Sessions/Session-{id}.md with this format:
---
session_id: {id}
date: "{YYYY-MM-DD}"
started: "{HH:MM AM/PM}"
duration_minutes: {minutes}
ai_tool: "{tool}"
repo: "{repo_name}"
tags: ["chronicle-session", "{ai_tool}", "{topics}"]
---
# Session {id} - {Brief Title}
**Duration:** {duration}
**Repository:** [[{repo_name}]]
**Tool:** {AI Tool Name}
## Summary
{AI-generated summary from Chronicle}
## What Was Accomplished
- {Key accomplishment 1}
- {Key accomplishment 2}
## Key Technical Decisions
- {Decision 1 and rationale}
## Files Created or Modified
- `path/to/file.py` - {what changed}
## Issues & Blockers
- {Any problems encountered}
## Related
- Previous: [[Session-{prev_id}]]
- Commits: [[Commit-{sha}]]
- Repository: [[{repo_name}]]
After completing a session:
# Step 1: Get session data from Chronicle MCP
session_data = mcp__chronicle__get_session_summary(session_id=10)
# Step 2: Extract key information
session_id = session_data["id"]
timestamp = session_data["timestamp"] # "2025-10-24T14:30:00"
tool = session_data["tool"] # "claude-code"
duration = session_data["duration_minutes"] # 45
repo_path = session_data["repo_path"] # "/Users/.../my-project"
summary = session_data["summary"] # AI-generated summary (multi-paragraph)
# Step 3: Format note content
note_content = f"""# Session {session_id} - {brief_title}
**Duration:** {duration} minutes
**Repository:** [[{repo_name}]]
**Tool:** {tool_emoji} {tool_name}
## Summary
{summary}
## What Was Accomplished
- {extracted_accomplishments}
## Key Technical Decisions
- {extracted_decisions}
## Files Created or Modified
- {extracted_files}
## Issues & Blockers
- {extracted_blockers}
## Related
- Previous: [[Session-{prev_id}]]
"""
# Step 4: Prepare frontmatter
frontmatter = {
"session_id": session_id,
"date": "2025-10-24",
"started": "14:30",
"duration_minutes": duration,
"ai_tool": tool,
"repo": repo_name,
"tags": ["chronicle-session", tool, "feature-work"]
}
# Step 5: Write to Obsidian vault (if MCP available)
mcp__obsidian__write_note(
path="Chronicle/Sessions/Session-10.md",
content=note_content,
frontmatter=frontmatter,
mode="overwrite"
)
After completing a session:
# Step 1: Get session data from Chronicle CLI
chronicle session 10 > /tmp/session_10.txt
# Step 2: Parse the output to extract:
# - Session ID, timestamp, tool, duration
# - Repository path
# - AI-generated summary
# - Files mentioned
# - Keywords/tags
# Step 3: Create note content using parsed data
# (Similar structure to MCP approach above)
# Step 4: If Obsidian MCP available, use it to write note:
# mcp__obsidian__write_note(...)
#
# OR manually create file in Obsidian vault:
# Write to ~/Documents/Obsidian/Chronicle/Sessions/Session-10.md
Note: CLI approach requires parsing Chronicle's formatted output, which is less elegant but fully portable to any system with Chronicle installed.
User: "Can you document session 10 to my Obsidian vault?"
Assistant (with MCP):
mcp__chronicle__get_session_summary(session_id=10)mcp__obsidian__write_note(...) to save to vaultAssistant (without MCP):
chronicle session 10 to get formatted outputmcp__obsidian__write_note(...) if available, or creates file manuallyMCP Approach (Preferred):
mcp__chronicle__get_session_summary(session_id) - Get full session details with AI summarymcp__chronicle__get_sessions(limit, days, tool, repo_path) - List recent sessions to find session IDmcp__chronicle__search_sessions(query, limit) - Search for sessions by keywordmcp__chronicle__get_commits(repo_path, days, limit) - Get related commits for linkingmcp__chronicle__get_sessions_summaries(session_ids) - Batch get summaries (up to 20 at once)CLI Alternatives:
chronicle session <id> - Get session details with summarychronicle sessions --limit 10 - List recent sessionschronicle search "keyword" --limit 10 - Search sessionschronicle show today - Get commits for linkingMCP Approach (Preferred):
mcp__obsidian__write_note(path, content, frontmatter, mode) - Write note to vaultmcp__obsidian__read_note(path) - Check if note already exists (optional)mcp__obsidian__list_directory(path) - List existing session notes (optional)Manual Alternative (No MCP):
~/Documents/Obsidian/<vault>/Chronicle/Sessions/Session-<id>.md[[Session-{id}]], [[{repo_name}]], [[Commit-{short_sha}]] for navigationrepo_path: /Users/.../my-app → my-appget_sessions() to find recent sessions, then document each in loopread_note() to avoid overwriting manually edited notes (ask user first)["chronicle-session", "{tool}", ...] for filtering in Obsidian2025-10-24T14:30:00 → date: "2025-10-24", started: "14:30"With MCP:
# Get today's sessions
sessions = mcp__chronicle__get_sessions(days=1, limit=20)
# Document each to vault
for session in sessions:
if session["is_session"]: # Only full sessions, not one-shots
document_to_vault(session["id"])
With CLI:
# List today's sessions
chronicle sessions --days 1 --limit 20
# Manually document each one
chronicle session 10 # View details
# Parse and create Obsidian note
With MCP:
# Direct documentation
session = mcp__chronicle__get_session_summary(session_id=10)
# Create note from structured data
With CLI:
# Get session details
chronicle session 10
# Parse output and create note
With MCP:
# Search first
results = mcp__chronicle__search_sessions(query="authentication", limit=5)
# Document each match
for result in results:
document_to_vault(result["id"])
With CLI:
# Search for sessions
chronicle search "authentication" --limit 5
# Document each match
chronicle session <id>
# Create note from parsed output