From release
Capture and curate session memory blocks. Use /chronicle to save current work, /chronicle catchup to restore context, /chronicle curate to organize memory, /chronicle insights for deep analysis, /chronicle summarize for AI summaries, /chronicle pending for open threads, /chronicle search to find sessions, /chronicle publish for digests, /chronicle ui for dashboard with repo-level views and usage stats.
npx claudepluginhub fairchild/dotclaude --plugin skill-creatorThis skill uses the workspace's default tool permissions.
A persistent journalist tracking your coding sessions.
ROADMAP.mdassets/docs/design/brainstorm/01-popup-enhanced.pngassets/docs/design/brainstorm/02-dashboard-sync.pngassets/docs/design/brainstorm/03-notification.pngassets/docs/design/brainstorm/index.htmlassets/docs/persona-memory-ai-intelligence-roadmap.mdassets/docs/persona-memory-implementation-options.mdassets/docs/persona-memory-product-brief.mdassets/docs/persona-memory-technical-spec.mdassets/docs/product_overview.mdassets/docs/session-data.mdassets/docs/user-stories.mddocs/chronicle-design.mddocs/dashboard-service.mddocs/development.mdscripts/bun.lockscripts/catchup.tsscripts/consolidate.tsscripts/context.tsscripts/dashboard.e2e.test.tsGenerates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
A persistent journalist tracking your coding sessions.
/chronicle # Quick capture of current session
/chronicle <note> # Capture with a specific note
/chronicle curate # Invoke curator to organize memory (interactive)
/chronicle insights # Deep analysis with Explore subagents
/chronicle insights <project> # Analyze specific project
/chronicle pending # Show pending threads across sessions
/chronicle blocks # List recent memory blocks
/chronicle catchup # Restore context for current project
/chronicle catchup --days=30 # Extend lookback to 30 days
/chronicle stale # Show stale pending items (>14 days)
/chronicle consolidate # Consolidate old blocks (dry run)
/chronicle consolidate apply # Consolidate and drop stale pending
/chronicle resolve "text" # Mark pending item as resolved
/chronicle resolve --list # Show all resolved items
/chronicle resolve --undo "text" # Undo a resolution
/chronicle search <query> # Search sessions by text
/chronicle publish # Generate weekly digest (markdown)
/chronicle publish daily # Generate daily digest
/chronicle publish month # Generate monthly digest
/chronicle summarize # Generate AI summaries (daily + repos)
/chronicle summarize weekly # Generate weekly AI summaries (Opus)
/chronicle ui # Launch interactive web dashboard
/chronicle ui watch # Run with auto-restart on file changes
/chronicle ui hot # Run with hot module reloading
/chronicle ui install # Install dashboard as macOS service
/chronicle ui start # Start the dashboard service
/chronicle ui stop # Stop the dashboard service
/chronicle ui status # Check if dashboard service is running
/chronicle ui logs # View dashboard service logs
/chronicle ui uninstall # Remove dashboard service
/chronicle dev # Start development session for Chronicle itself
Captures current session state as a memory block:
Blocks stored in ~/.claude/chronicle/blocks/.
Gather context:
Write block to ~/.claude/chronicle/blocks/{date}-{descriptive-name}.json:
{
"timestamp": "ISO date",
"project": "project name",
"branch": "git branch",
"summary": "1-2 sentence summary",
"accomplished": ["list", "of", "completions"],
"pending": ["unfinished", "work"],
"notes": "user-provided notes"
}
Invokes the Chronicle Curator agent for intelligent memory management.
When user runs /chronicle curate:
Based on this session, here's what I observed:
• Goal: [inferred from conversation]
• Challenges: [any blockers mentioned or encountered]
• Next Steps: [logical next actions]
Adjust any of these, or confirm to curate?
The curator can be resumed within a session to maintain memory continuity.
Flow:
Check if $CHRONICLE_CURATOR_ID is set (run echo $CHRONICLE_CURATOR_ID)
If set - Resume the existing curator:
Task(
resume: "{CHRONICLE_CURATOR_ID}",
prompt: "Continue curating with new context:
Project: {project}
Branch: {branch}
Goal: {user's goal}
Challenges: {user's challenges}
Next Steps: {user's next steps}
Review and update blocks as needed.
Report what you changed."
)
Task(
subagent_type: "chronicle-curator",
prompt: "Curate session with context:
Project: {project}
Branch: {branch}
Goal: {user's goal}
Challenges: {user's challenges}
Next Steps: {user's next steps}
Review existing blocks in ~/.claude/chronicle/blocks/
Update or create blocks as needed.
Report what you changed."
)
export CHRONICLE_CURATOR_ID={returned agentId}
This allows the curator to accumulate context across multiple /chronicle curate calls within the same session.
The curator will:
Show all pending work across sessions:
~/.claude/chronicle/blocks/pending arrays from eachList recent memory blocks:
ls -lt ~/.claude/chronicle/blocks/ | head -10
Show filename, date, and first line of summary for each.
Restore context when returning to a project:
bun ~/.claude/skills/chronicle/scripts/catchup.ts [--days=N]
Options:
--days=N - Look back N days (default: 7)Shows:
If no data found, suggests /chronicle to capture current session.
The script can output resolution candidates for semantic matching:
bun ~/.claude/skills/chronicle/scripts/catchup.ts --candidates
This outputs JSON with pending/accomplished pairs scored by keyword overlap.
When running /chronicle catchup with resolution checking:
catchup.ts --candidates to get JSON candidatesTask(
subagent_type: "general-purpose",
model: "haiku",
prompt: "For each candidate, determine if the accomplished item resolves the pending item.
Return JSON array of resolved items: [{pendingText, accomplishedText, resolved: boolean}]
Candidates: {candidates JSON}"
)
bun ~/.claude/skills/chronicle/scripts/resolve.ts "pending text"
Show pending items that have been open for more than 14 days:
bun ~/.claude/skills/chronicle/scripts/stale.ts
Shows:
Staleness warnings also appear in /chronicle catchup output with ⚠️ markers.
Reduce block bloat by merging per-project, per-week blocks into consolidated summaries.
bun ~/.claude/skills/chronicle/scripts/consolidate.ts # Dry run
bun ~/.claude/skills/chronicle/scripts/consolidate.ts --apply # Execute
bun ~/.claude/skills/chronicle/scripts/consolidate.ts --apply --drop-pending # Execute + clear stale pending
bun ~/.claude/skills/chronicle/scripts/consolidate.ts --older-than=30 # Only blocks >30 days old (default: 14)
bun ~/.claude/skills/chronicle/scripts/consolidate.ts --project=services # Single project
Consolidation:
~/.claude/chronicle/archive/ (not deleted)Also runs monthly via launchd (1st of each month at 2am). Install:
~/.claude/skills/chronicle/scripts/install-services.sh install consolidate
Mark pending items as resolved. Resolutions can happen two ways:
Auto-detection: During /chronicle catchup, Claude Code can spawn a haiku agent to semantically match accomplished items against pending items (see Catchup section above).
Explicit resolution: Manually mark items as complete:
bun ~/.claude/skills/chronicle/scripts/resolve.ts "Add unit tests" # Mark as resolved
bun ~/.claude/skills/chronicle/scripts/resolve.ts --list # Show resolved items
bun ~/.claude/skills/chronicle/scripts/resolve.ts --undo "text" # Undo a resolution
Resolutions are stored in ~/.claude/chronicle/resolved.json as an overlay - original blocks remain immutable.
Resolved items:
--undo to make them pending againSearch across all Chronicle blocks by text:
~/.claude/chronicle/blocks/Example queries:
/chronicle search oauth - Find sessions mentioning OAuth/chronicle search jrnlfish - Find all jrnlfish sessions/chronicle search "error handling" - Find sessions with specific phraseGenerate deep insights by exploring code and memory patterns using subagents.
/chronicle insights # All active projects (max 3)
/chronicle insights <project> # Specific project
Task(
subagent_type: "chronicle-insights",
prompt: "Generate insights for {project or 'all active projects'}.
Focus on:
- Stalled work (pending items >7 days with no progress)
- Tech debt patterns (TODOs, FIXMEs, complex code)
- Cross-project themes
- Evolution of focus over time
For each project, spawn Explore subagents to examine actual code.
Cross-reference findings with memory blocks.
Save results to ~/.claude/chronicle/insights/"
)
The insights agent spawns Explore subagents to examine actual code in worktrees.
Results saved to ~/.claude/chronicle/insights/{date}-{project}.json
| Type | Meaning |
|---|---|
stalled_work | Pending items appearing repeatedly with no resolution |
tech_debt | TODOs/FIXMEs found in code, complex patterns |
pattern | Recurring themes across sessions |
opportunity | Actionable improvements identified |
Insights appear in the Chronicle dashboard under each repo's detail view. You can also read them directly:
cat ~/.claude/chronicle/insights/*.json | jq .
{
"timestamp": "2026-01-01T00:30:00Z",
"project": "dotclaude",
"branch": "feat/chronicle",
"summary": "Brief description of session focus",
"goal": "What user is trying to accomplish",
"accomplished": ["Completed item 1", "Completed item 2"],
"pending": ["Still need to do X", "Blocked on Y"],
"challenges": ["Current difficulty"],
"nextSteps": ["Planned action 1", "Planned action 2"],
"relatedSessions": ["2025-12-31-oauth-work.json"],
"notes": "Additional context or observations"
}
Not all fields required - use what's relevant.
Generate markdown digests of your Chronicle data.
Run the digest generator:
bun ~/.claude/skills/chronicle/scripts/publish.ts [period]
Periods:
weekly (default) - Last 7 daysdaily - Last 24 hoursmonth - Last 30 daysOutput goes to ~/.claude/chronicle/digests/:
2026-W01.md (ISO week)2026-01-04-daily.md2026-01.mdLaunch an interactive web dashboard for exploring Chronicle data.
bun ~/.claude/skills/chronicle/scripts/dashboard.ts
Opens browser to http://localhost:3456.
For persistent background operation, see docs/dashboard-service.md.
Quick start:
/chronicle ui install # One-time setup
/chronicle ui start # Start service (port 3457)
/chronicle ui status # Check if running
Run the dashboard on a remote server with periodic data sync from your Mac.
Setup:
~/.claude/.env:
CHRONICLE_SYNC_TARGET=myserver # Display name
CHRONICLE_DEPLOY_DIR=/path/to/deploy # Ansible deploy directory
~/.claude/skills/chronicle/scripts/install-services.sh install sync-reminder
How it works:
Manual sync:
~/.claude/skills/chronicle/scripts/sync-reminder.sh # Interactive
ansible-playbook claude.yml --tags chronicle-sync -e chronicle_sync_enabled=true # Direct
Start a development session for working on Chronicle itself.
# Stop service to free port, start dev server with auto-reload
~/.claude/skills/chronicle/scripts/install-services.sh uninstall dashboard 2>/dev/null
bun --watch ~/.claude/skills/chronicle/scripts/dashboard.ts
Opens browser to http://localhost:3456
| Mode | Port | Purpose |
|---|---|---|
| Development | 3456 | Local dev, tests |
| Service | 3457 | Background service |
./skills/chronicle/tests/run_tests.sh
For detailed development workflow, see docs/development.md.
Generate high-quality AI summaries using Claude.
bun ~/.claude/skills/chronicle/scripts/summarize.ts # Daily global + repo summaries
bun ~/.claude/skills/chronicle/scripts/summarize.ts --weekly # Weekly summaries (Opus)
bun ~/.claude/skills/chronicle/scripts/summarize.ts --repo=name # Single repo summary
Summaries stored in ~/.claude/chronicle/summaries/{global,repos}/.
Daily summaries run at midnight, weekly on Sunday 00:05.
Install services:
~/.claude/skills/chronicle/scripts/install-services.sh install summarize summarize-weekly
Check logs:
tail -f /tmp/chronicle-summarize.log
tail -f /tmp/chronicle-summarize-weekly.log
| Period | Model | Rationale |
|---|---|---|
| Daily | Sonnet | Cost-effective, sufficient quality |
| Weekly | Opus | Higher quality synthesis for weekly review |
Chronicle is about learning as we go: