skills/chandlerhardy/chronicle-session-documenter/SKILL.md
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.
npx skillsauth add aiskillstore/marketplace chronicle-session-documenterInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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
development
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.