skills/chandlerhardy/chronicle-assistant-guide/SKILL.md
Project-agnostic guidance for AI assistants using Chronicle. Provides search-first directives, best practices, and workflow patterns across ALL Chronicle-tracked projects. Works with or without MCP server.
npx skillsauth add aiskillstore/marketplace chronicle-assistant-guideInstall 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.
Purpose: Universal directives for AI assistants using Chronicle Scope: Works across ALL projects (with MCP server OR CLI-only) Priority: Load this FIRST when Chronicle is available
This skill auto-activates! (Milestone #13)
Prompts like "how do I use chronicle?" automatically trigger this skill. Lower priority than other skills.
Trigger patterns: how to use chronicle, chronicle help, chronicle guide See:
docs/HOOKS.mdfor full details
Before starting ANY Chronicle-related task, run through this checklist:
✅ SEARCH FIRST: Search Chronicle's history
mcp__chronicle__search_sessions(query="relevant keywords", limit=5)chronicle search "relevant keywords" --limit 5✅ Check Skills: Is there a Chronicle skill for this task?
chronicle-workflow - Session workflow guidancechronicle-session-documenter - Document to Obsidianchronicle-context-retriever - Search past workchronicle-project-tracker - Roadmap and milestones✅ Prefer MCP over CLI: Use best available tool
✅ Check roadmap: View current milestones and next steps
mcp__chronicle__get_roadmap(days=7)chronicle roadmap --days 7Why this matters: Chronicle dogfoods itself. Every mistake we make is recorded. Learn from history!
The Rule (use whichever is available):
Option 1: MCP (if available)
# Before implementing ANY feature:
mcp__chronicle__search_sessions(query="feature name", limit=5)
# Before debugging:
mcp__chronicle__search_sessions(query="error or symptom", limit=5)
# When user questions something:
mcp__chronicle__search_sessions(query="topic keywords", limit=5)
Option 2: CLI (always works)
# Before implementing ANY feature:
chronicle search "feature name" --limit 5
# Before debugging:
chronicle search "error or symptom" --limit 5
# When user questions something:
chronicle search "topic keywords" --limit 5
Real examples from Chronicle's own history:
Example 1: Session 21 transcript cleaning confusion
User: "I can't believe there's no cleaning to be done on session 21"
❌ Without search: Spent time debugging, confused why 0% reduction
✅ With search: Would have found Session 13 implemented transcript cleaning
→ Result: Immediately understood cleaning happens at storage time
→ Time saved: 15+ minutes of debugging
Example 2: Sessions 30 & 31 - Duplicate MCP optimization
Session 30 (Oct 24): Fixed MCP response size by excluding summaries from get_sessions()
Session 31 (Oct 24): SAME issue - MCP responses too large, same fix needed
❌ What happened: Session 31 didn't search for "MCP response size"
✅ What should have happened: Search finds Session 30's solution immediately
→ Result: Could have referenced Session 30's approach instead of rediscovering
→ Time saved: 10+ minutes of diagnosis and implementation
Example 3: Skill documentation update (Session 32)
Task: Update chronicle-session-documenter skill with MCP tool instructions
❌ What I did: Jumped straight to editing SKILL.md without searching
✅ What I should have done: Search "skill documentation update" first
→ Result: Might have found context about skill format standards
→ Lesson: Even when search finds nothing, the habit prevents future mistakes
Cost Calculator:
Time to search: <1 second
Time saved (average): 10-20 minutes per incident
Incidents so far: 3+ documented cases
Total time wasted: ~45+ minutes that could have been saved
Cost of skipping: 45 minutes / 1 second = 2,700x ROI on searching!
Make it a reflex: The 1-second search is ALWAYS worth it. No exceptions.
Priority Order:
Why MCP is preferred when available:
When to use CLI:
Examples:
With MCP Available:
# Fast, structured responses
roadmap = mcp__chronicle__get_roadmap(days=7)
sessions = mcp__chronicle__search_sessions(query="storage", limit=5)
summary = mcp__chronicle__get_session_summary(session_id=16)
Without MCP (CLI Fallback):
# Portable, works everywhere
chronicle roadmap --days 7
chronicle search "storage" --limit 5
chronicle session 16
Decision Pattern:
Need Chronicle data
├─ MCP available? → Use mcp__chronicle__<tool>()
└─ MCP not available? → Use chronicle <command>
Note: All operations below work with BOTH MCP tools and CLI commands. Use MCP for speed when available, CLI for portability.
Session & Commit Tracking:
MCP Approach:
# List sessions (summaries excluded by default for performance)
mcp__chronicle__get_sessions(limit=10, tool="claude-code", repo_path="/path", days=7)
mcp__chronicle__get_sessions(limit=10, include_summaries=True) # Optional: include summaries
# Get single session details with full summary
mcp__chronicle__get_session_summary(session_id=16)
# Batch retrieve summaries for multiple sessions
mcp__chronicle__get_sessions_summaries(session_ids=[15, 16, 17])
# Search and other queries
mcp__chronicle__search_sessions(query="MCP server", limit=10)
mcp__chronicle__get_commits(limit=20, repo_path="/path", days=7)
mcp__chronicle__search_commits(query="retry logic", limit=20)
mcp__chronicle__get_timeline(days=1, repo_path="/path")
mcp__chronicle__get_stats(days=7)
CLI Equivalents:
# List and view sessions
chronicle sessions --limit 10 --tool claude-code
chronicle session 16 # Get details with summary
# Search
chronicle search "MCP server" --limit 10
# Commits and timeline
chronicle show today --limit 20
chronicle timeline today
# Statistics
chronicle stats --days 7
Project Tracking:
MCP Approach:
mcp__chronicle__get_milestones(status="in_progress", milestone_type="feature", limit=20)
mcp__chronicle__get_milestone(milestone_id=1)
mcp__chronicle__get_next_steps(completed=False, milestone_id=1, limit=20)
mcp__chronicle__get_roadmap(days=7)
mcp__chronicle__update_milestone_status(milestone_id=1, new_status="completed")
mcp__chronicle__complete_next_step(step_id=1)
CLI Equivalents:
# Milestones
chronicle milestones --status in_progress
chronicle milestone 1
# Roadmap and next steps
chronicle roadmap --days 7
chronicle next-steps --pending
# Updates
chronicle milestone-status 1 completed
chronicle complete-step 1
With MCP:
# 1. Search for related past work
results = mcp__chronicle__search_sessions(query="authentication", limit=5)
# 2. Check roadmap
roadmap = mcp__chronicle__get_roadmap(days=7)
# 3. If needed, check specific session
if results:
session = mcp__chronicle__get_session_summary(session_id=results[0]["id"])
# 4. Now implement with full context
With CLI:
# 1. Search for related past work
chronicle search "authentication" --limit 5
# 2. Check roadmap
chronicle roadmap --days 7
# 3. View specific session details
chronicle session <id>
# 4. Now implement with full context
With MCP:
# 1. Search for error message or symptom
results = mcp__chronicle__search_sessions(query="hang freeze stuck", limit=5)
# 2. Get full context from relevant session
if results:
session = mcp__chronicle__get_session_summary(session_id=results[0]["id"])
# Read how it was solved before
With CLI:
# 1. Search for error message or symptom
chronicle search "hang freeze stuck" --limit 5
# 2. View relevant session
chronicle session <id>
# Read how it was solved before
With MCP:
# Get overview
stats = mcp__chronicle__get_stats(days=30)
timeline = mcp__chronicle__get_timeline(days=7)
# Find specific work
sessions = mcp__chronicle__search_sessions(query="optimization", limit=10)
With CLI:
# Get overview
chronicle stats --days 30
chronicle timeline week
# Find specific work
chronicle search "optimization" --limit 10
❌ DON'T:
✅ DO:
Session Organization (Phase 6):
# Organize sessions (use CLI for these)
chronicle rename-session 32 "Feature Implementation"
chronicle tag-session 32 optimization,phase-6
chronicle link-session 32 --related-to 30,31
chronicle auto-title 31 # AI-generated title
chronicle graph --sessions 28-32 # Visualize relationships
Current State:
~/.ai-session/sessions.db (SQLite)~/.ai-session/sessions/*.cleaned (file-based)~/.ai-session/config.yamlStorage:
get_sessions_summaries() for multiple sessions at oncechronicle graph to see session relationshipschronicle-workflow, chronicle-context-retriever, etc.MCP_SERVER.md in Chronicle repoRemember: This skill applies to ALL projects using Chronicle. The directives here are universal best practices for AI assistants.
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.