Project Diaries in ContextSwitch: Your AI-Powered Development Journal

I’ve been using ContextSwitch to manage my todos for a while now, but the new diary feature has made it much more valuable. Combined with Claude Code hooks, it’s become an automated daily journal that keeps me honest about what I’m actually accomplishing, and provides a long term memory of project decisions and progress.

What Are Diary Entries?

The diary feature in ContextSwitch is a structured journaling system built right into your todo database. Unlike traditional diary apps, these entries are designed specifically for tracking project work, decisions, and development progress. Each entry can include:

  • Optional title - Or just use the first line of content
  • Markdown-formatted content - Write as much or as little as you need
  • Mood tags - Track your state of mind:
    • 🔥 Productive
    • 🔧 Struggling
    • 💡 Breakthrough
    • 📋 Planning
    • ⚠️ Blocked
  • Custom tags - Organize entries by project, sprint, feature, or whatever makes sense
  • Automatic timestamps - Created and updated dates tracked automatically

How It Works

In the macOS App

The diary view uses a clean two-pane layout. On the left, you see all your entries grouped by month. Click one to open it in the editor on the right. The interface is dead simple:

  • Search across all entry content and tags
  • Quick-add new entries with the toolbar button
  • Edit in place with live save indicators
  • Set mood with a dropdown menu
  • Add/remove tags with inline controls

Everything auto-saves, and entries are stored in the same SQLite database as your todos.

Via the MCP Server

Here’s where it gets interesting. ContextSwitch includes an MCP (Model Context Protocol) server that exposes diary operations to Claude Desktop. The available tools are:

  • add-diary-entry - Create new entries
  • update-diary-entry - Modify existing ones
  • get-diary-entry - Retrieve specific entries
  • delete-diary-entry - Remove entries
  • list-diary-entries - Browse all entries with filtering
  • search-diary - Full-text search across content

This means Claude can read and write your diary entries programmatically.

Database Schema

Under the hood, diary entries are stored in a diary table with proper indexes for fast search:

CREATE TABLE diary (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT,
    content TEXT NOT NULL,
    mood TEXT,
    tags TEXT,
    created_at TEXT NOT NULL,
    updated_at TEXT NOT NULL
)

The mood column stores the enum values (PRODUCTIVE, STRUGGLING, etc.), and tags are stored as comma-separated strings that get parsed into arrays in the app.

Why Use This?

1. Automatic Daily Logs with Claude Hooks

This is the killer feature for me. I’ve configured a Claude Code hook that fires before context compaction:

{
  "hook": "pre-compaction",
  "prompt": "Use the daily-log slash command to create today's project diary entry"
}

Claude automatically:

  • Reviews what todos I completed during this session
  • Checks what I’m working on
  • Asks me a few questions about blockers or wins
  • Writes up a structured diary entry and saves it

I never have to remember to do it. The automation happens naturally as part of my workflow.

2. Built-In Slash Commands

ContextSwitch includes several MCP prompts (slash commands) that work with diaries:

  • /daily-log - Guided daily standup and diary creation
  • /weekly-summary - Reviews the week’s diary entries and creates a summary
  • /retrospective - Structured retrospective format (what went well, what to improve, etc.)
  • /decision-log - Documents architectural decisions with context

These prompts pull in your recent diary entries and todos to provide context, then guide you through creating new entries.

3. Search and Reflection

Having a searchable history of your work is invaluable. Need to remember when you decided to switch frameworks? Search for “framework” in your diary. Want to see all your “breakthrough” moments? Filter by mood tag.

The monthly grouping makes it easy to browse chronologically, and the full-text search means you can find anything instantly.

4. Multi-Database Support

Since ContextSwitch supports multiple databases, you can have separate diaries for different projects or contexts. Your personal database can have personal diary entries, while your work database tracks work progress. Claude can access whichever database you point it to.

5. Privacy and Control

Everything stays local. Your diary entries live in a SQLite file on your machine. No cloud sync, no third-party servers, no privacy concerns. You own your data.

My Workflow

Here’s how I use this daily:

  1. Morning: Open ContextSwitch, glance at yesterday’s diary entry to remember context
  2. Throughout the day: Work on todos, occasionally jot quick notes in a diary entry if something important happens
  3. End of day: Claude hook fires automatically, prompts me for a quick update, saves the entry
  4. Friday: Run /weekly-summary to reflect on the week
  5. When needed: Search diary to find past decisions, blockers, or patterns

The automation removes all friction. I don’t have to remember to journal: it just happens.

Why This Matters

I’ve tried many project journal approaches: markdown files, Notion pages, daily standup bots. They all failed because they required me to remember to do them. Automation is the only thing that works long-term.

My day to day personal tasks still live in a notion todolist like always, but complex programming projects really require more context and detail than that has, and I haven’t worked this hard to spend my day in Jira.

By integrating the diary directly into my todo app and letting Claude handle the daily logging, I’ve finally built a habit that sticks. When it’s time to summarize recent work, or provide context to a model for new development, it’s all there waiting.