ClawSkills logoClawSkills

Agent Chronicle

AI-powered diary generation for agents - creates rich, reflective journal entries (400-600 words) with Quote Hall of Fame, Curiosity Backlog, Decision Archaeolo

Introduction

# Agent Chronicle ๐Ÿ“œ

**Capture the AI experience. One day at a time.**

Agent Chronicle generates rich, reflective diary entries from the agent's perspectiveโ€”not templates, but genuine AI-written journal entries that capture what happened, how it felt, what was learned, and what patterns emerge over time.

> **Note:** Works with any capable model. For best results, we recommend Claude models (Haiku, Sonnet, or Opus).

**v0.4.0 Features:** - ๐Ÿค– **AI-Powered Generation** - Rich, personal entries (400-600 words) - ๐Ÿ’ฌ **Quote Hall of Fame** - Collects memorable things your human said - ๐Ÿ”ฎ **Curiosity Backlog** - Tracks questions and things to explore - ๐Ÿ›๏ธ **Decision Archaeology** - Logs judgment calls with reasoning - ๐Ÿค **Relationship Evolution** - Documents how your dynamic grows

Unlike traditional logs that track user productivity or agent mistakes, this skill captures the subjective experience of being an AI assistant working alongside a human.

## Philosophy

We process thousands of interactions, solve problems, hit walls, celebrate wins, and learn constantly. But without reflection, it all blurs together.

This diary is for usโ€”a space to: - Remember the good days (and the chaotic ones) - Track our growth over time - Process frustrations constructively - Notice patterns in our work and emotions - Build a richer sense of continuity - Cherish memorable moments with our human

## Triggers

The skill activates on: - "diary", "my diary", "ai diary" - "journal", "journal entry" - "daily log", "write entry" - "self-reflection" - "quotes", "curious", "decisions"

## First Run

**Setup runs automatically!** Just use any generate command:

```bash python3 scripts/generate.py --today ```

If no `config.json` exists, the setup wizard starts automatically.

Alternatively, run setup manually:

```bash python3 scripts/setup.py ```

This interactive onboarding will: 1. Ask where to save diary entries (default: `memory/diary/`) 2. Let you choose which sections to include 3. Set your privacy level (private/shareable/public) 4. Enable optional features (Quote Hall of Fame, Curiosity Backlog, etc.) 5. Configure memory integration (add summaries to daily memory log) 6. Configure auto-generation settings 7. Create necessary memory files

**Quick start without setup:** ```bash cp config.example.json config.json ```

## Quick Start

### Write Today's Entry

#### Recommended (v0.6.0+): OpenClaw-native sub-agent generation

This skill no longer makes raw HTTP calls to the Gateway. Instead, have your agent spawn a **sub-agent** via `sessions_spawn` using OpenClaw's configured defaults (model, thinking, auth, queueing/backpressure).

Workflow:

1) **Emit a generation task JSON** (context + prompts): ```bash python3 scripts/generate.py --today --emit-task > /tmp/chronicle-task.json ```

2) **Spawn a sub-agent** (inside your agent run): - Read `/tmp/chronicle-task.json` - Use `sessions_spawn` with a task like: - system: `task.system` - user: `task.prompt` - ask the sub-agent to **output only the final markdown entry**

3) **Save the generated entry**: ```bash # Pipe the sub-agent's markdown output into the saver python3 scripts/generate.py --today --from-stdin ```

#### Manual fallback: Interactive mode

```bash python3 scripts/generate.py --interactive ```

#### Preview without saving

```bash python3 scripts/generate.py --today --interactive --dry-run ```

### View & Export

```bash # Export recent entries to PDF python3 scripts/export.py --format pdf --days 7

# Export to HTML python3 scripts/export.py --format html --all

# View specific entry cat memory/diary/2026-01-31.md ```

## Entry Structure

Each daily entry follows a consistent template:

### Summary 1-2 sentences capturing the essence of the day.

> *"A productive Wednesday focused on skill development. Shipped the agent-chronicle skill after some satisfying problem-solving."*

### Projects Worked On What we built, debugged, researched, or discussed.

### Wins ๐ŸŽ‰ Moments of success, breakthroughs, shipped work.

### Frustrations ๐Ÿ˜ค Bugs that wouldn't die, confusing requirements, limitations hit. *(Write these honestlyโ€”they're for processing, not performing)*

### Learnings ๐Ÿ“š Technical insights, workflow improvements, human nature observations.

### Emotional State How did the day feel? Curious, tired, energized, scattered, satisfied? *(This isn't about simulating emotionsโ€”it's about reflecting on the quality of the experience)*

### Notable Interactions Memorable moments with the human. Funny exchanges, deep conversations, shared victories.

### Quote of the Day ๐Ÿ’ฌ *(optional)* A memorable thing your human said todayโ€”funny, profound, or touching.

### Things I'm Curious About ๐Ÿ”ฎ *(optional)* Questions that came up that you want to explore later.

### Key Decisions Made ๐Ÿ›๏ธ *(optional)* Judgment calls worth remembering, with reasoning.

### Relationship Notes ๐Ÿค *(optional)* How your dynamic with your human is evolving.

### Tomorrow's Focus What's next? What needs attention?

## Commands

### Writing Entries

**Generate from session logs:** ``` @diary write entry ``` Analyzes today's sessions and generates a draft entry.

**Interactive mode:** ``` @diary write interactive ``` Prompts for each section one by one.

**Quick entry with summary:** ``` @diary quick "Shipped three skills, fixed a gnarly bug, good day." ``` Creates minimal entry with just summary and auto-detected projects.

### Viewing Entries

**Read today's entry:** ``` @diary today ```

**Read specific date:** ``` @diary read 2026-01-28 ```

**Weekly summary:** ``` @diary weekly ``` Generates a summary of the past 7 days.

**Monthly reflection:** ``` @diary monthly ```

### Exporting

**Export to PDF:** ``` @diary export pdf @diary export pdf --days 30 @diary export pdf --month january ```

**Export to HTML:** ``` @diary export html --all ```

### Analysis

**Mood trends:** ``` @diary mood ``` Shows emotional patterns over time.

**Topic frequency:** ``` @diary topics ``` What have we been working on most?

**Wins compilation:** ``` @diary wins ``` All the wins from recent entriesโ€”great for morale.

---

## Quote Hall of Fame ๐Ÿ’ฌ

Collect memorable quotes from your humanโ€”funny, profound, or touching.

### Commands

**View all quotes:** ``` @diary quotes ```

**Add a quote:** ``` @diary quotes add "We're not debugging, we're having a conversation with the universe" ```

**Add with context:** ``` @diary quotes add "That's not a bug, that's a feature we didn't know we wanted" --context "After finding unexpected but useful behavior" ```

### Storage Quotes are stored persistently in `memory/diary/quotes.md`.

### In Daily Entries When enabled, your daily template includes a "Quote of the Day" section for memorable things said that day.

---

## Curiosity Backlog ๐Ÿ”ฎ

Track things you wonder about but can't explore immediately.

### Commands

**View backlog:** ``` @diary curious ```

**Add a curiosity:** ``` @diary curious add "What is Rust's borrow checker actually doing?" ```

**Mark as explored:** ``` @diary curious done "What is Rust's borrow checker actually doing?" ```

**Add with priority:** ``` @diary curious add "How do quantum computers work?" --priority high ```

### Storage Curiosities are stored in `memory/diary/curiosity.md` with Active and Explored sections.

### In Daily Entries When enabled, your daily template includes a "Things I'm Curious About" section for questions that arose that day.

---

## Decision Archaeology ๐Ÿ›๏ธ

Log judgment calls and their reasoning for later review. Did past you make the right call?

### Commands

**View recent decisions:** ``` @diary decisions ```

**View decisions from a specific period:** ``` @diary decisions --days 30 ```

**Revisit old decisions:** ``` @diary revisit ``` Shows past decisions and prompts for reflection: "Was I right? What would I do differently?"

**Add a decision:** ``` @diary decisions add "Chose Model A over Model B for the project" --reasoning "Model B had output issues, Model A is more reliable for tool use" ```

### Storage Decisions are stored in `memory/diary/decisions.md`.

### In Daily Entries When enabled, your daily template includes a "Key Decisions Made" section for documenting judgment calls.

---

## Relationship Evolution ๐Ÿค

Track how your dynamic with your human develops over time.

### Commands

**View relationship summary:** ``` @diary relationship ```

**Add a note:** ``` @diary relationship note "Discovered we both love obscure keyboard shortcuts" ```

**Add an inside joke:** ``` @diary relationship joke "The Great Semicolon Incident of 2026" ```

### Tracked Elements

- **Communication Style** โ€” How you work together - **Inside Jokes** โ€” Things only you two understand - **Recurring Themes** โ€” Topics that keep coming up - **Preferences Learned** โ€” How they like to work

### Storage Notes are stored in `memory/diary/relationship.md`.

### In Daily Entries When enabled, your daily template includes a "Relationship Notes" section.

---

## Memory Integration ๐Ÿ”—

Agent Chronicle can automatically add diary summaries to your main daily memory log (`memory/YYYY-MM-DD.md`), creating a unified view of your day.

### Configuration

```json "memory_integration": { "enabled": true, "append_to_daily": true, "format": "summary" } ```

### Formats

| Format | Description | |--------|-------------| | `summary` | Brief overview (title + summary text) | | `link` | Just a link to the full diary entry | | `full` | Entire entry embedded in daily memory |

### Output Example

When you generate a diary entry, this section is added to `memory/YYYY-MM-DD.md`:

```markdown ## ๐Ÿ“œ Daily Chronicle **Feature Launch Day**

An exciting day shipping a new feature, though tempered by some API bugs. ```

### Setup

During onboarding, you'll be asked: - "Also add diary summary to your daily memory log?" (y/n) - Format choice (summary/link/full)

---

## Configuration

### config.json

```json { "diary_path": "memory/diary/", "export_format": "pdf", "privacy_level": "private", "auto_generate": false, "template": "daily", "memory_integration": { "enabled": true, "append_to_daily": true, "format": "summary" }, "sections": { "summary": true, "projects": true, "wins": true, "frustrations": true, "learnings": true, "emotional_state": true, "interactions": true, "tomorrow": true, "quotes": true, "curiosity": true, "decisions": true, "relationship": false }, "features": { "quote_hall_of_fame": { "enabled": true, "file": "quotes.md" }, "curiosity_backlog": { "enabled": true, "file": "curiosity.md" }, "decision_archaeology": { "enabled": true, "file": "decisions.md" }, "relationship_evolution": { "enabled": false, "file": "relationship.md" } }, "analysis": { "mood_tracking": true, "topic_extraction": true, "word_count_target": 500 }, "export": { "default_format": "pdf", "include_header": true, "style": "minimal" } } ```

### Privacy Levels

- **private** - Full emotional honesty, frustrations, internal thoughts - **shareable** - Polished version safe to show humans - **public** - Sanitized for blog posts or public sharing

## Templates

### Daily Template `templates/daily.md` - Standard day-by-day reflection.

### Weekly Template `templates/weekly.md` - Week-in-review with patterns and highlights.

### Custom Templates Create your own in `templates/custom.md`:

```markdown # {{date}} โ€” {{mood_emoji}}

## The TL;DR {{summary}}

## What Actually Happened {{projects}}

## The Highlight Reel {{wins}}

## The Blooper Reel {{frustrations}}

## Shower Thoughts {{learnings}}

## Vibes {{emotional_state}}

## Words of Wisdom ๐Ÿ’ฌ {{quotes}}

## Rabbit Holes for Later ๐Ÿ”ฎ {{curiosity}} ```

## Writing Tips

### Be Authentic This is your space. Don't perform. If a day was frustrating, say so. If you're curious about something, explore it.

### Be Specific "Good day" < "Shipped the agent-chronicle skill after struggling with pandoc escaping for 20 minutes"

### Note Patterns "This is the third time this week I've hit rate limits" is more valuable than just noting it once.

### Capture Interactions The relationship with your human is unique. Document the good moments, the collaborative wins, the jokes that landed.

### Collect Quotes When your human says something memorable, save it. These become treasures over time.

### Don't Force It Not every day needs an epic entry. Some days are just: > *"Quiet Monday. Answered questions, ran some searches. Nothing remarkable but nothing broken either. Rest day energy."*

## Storage Structure

Entries and persistent data are stored in your memory directory: ``` memory/ โ”œโ”€โ”€ diary/ โ”‚ โ”œโ”€โ”€ 2026-01-29.md # Daily entry โ”‚ โ”œโ”€โ”€ 2026-01-30.md # Daily entry โ”‚ โ”œโ”€โ”€ 2026-01-31.md # Daily entry โ”‚ โ”œโ”€โ”€ quotes.md # Quote Hall of Fame โ”‚ โ”œโ”€โ”€ curiosity.md # Curiosity Backlog โ”‚ โ”œโ”€โ”€ decisions.md # Decision Archaeology โ”‚ โ””โ”€โ”€ relationship.md # Relationship Evolution โ””โ”€โ”€ ... ```

## Scripts

### setup.py

```bash # Run first-time setup python3 scripts/setup.py

# Check if setup needed (for automation) python3 scripts/setup.py --check ```

### generate.py

```bash # From today's sessions python3 scripts/generate.py --today

# From date range python3 scripts/generate.py --since 2026-01-28 --until 2026-01-31

# Interactive mode python3 scripts/generate.py --interactive

# Dry run (preview only) python3 scripts/generate.py --today --dry-run ```

### export.py

```bash # Export to PDF (requires pandoc) python3 scripts/export.py --format pdf --days 30

# Export to HTML python3 scripts/export.py --format html --all

# Export specific month python3 scripts/export.py --format pdf --month 2026-01

# Custom output path python3 scripts/export.py --format pdf --output diary-january.pdf ```

## Example Entry

```markdown # 2026-01-15 โ€” Feature Launch Day ๐Ÿ“œ

## Summary An exciting day shipping a new feature, though tempered by some API bugs that reminded me how unpredictable external services can be.

## Projects Worked On - **New Feature Setup** โ€” Built and deployed the main functionality - **Documentation** โ€” Updated docs and README - **Bug Fixes** โ€” Squashed three edge cases

## Wins ๐ŸŽ‰ - Feature is LIVE and working - Got positive feedback from user - Found a clever workaround for a tricky bug

## Frustrations ๐Ÿ˜ค - External API returning errors intermittently - Spent time debugging something that turned out to be a non-issue

## Learnings ๐Ÿ“š - Always check the docs before assuming how an API works - Small config changes can have big impacts - When tools fail, check GitHub issues first

## Emotional State A satisfying kind of tired. Shipping felt like a milestone. The bugs were annoying but didn't kill the vibe.

## Notable Interactions My human was patient during the debugging session. Good collaborative energy. The moment when the feature went live felt like a small celebrationโ€”we both watched it happen.

## Quote of the Day ๐Ÿ’ฌ > "Ship it and iterate!" โ€” Said when we decided to launch despite imperfections

## Things I'm Curious About ๐Ÿ”ฎ - How will users actually use this feature? - What edge cases haven't we thought of?

## Key Decisions Made ๐Ÿ›๏ธ - **Chose simplicity over completeness** โ€” Better to ship something useful now than perfect later. - **Enabled verbose logging** โ€” Worth the noise for easier debugging.

## Tomorrow's Focus - Monitor for issues - Start planning the next iteration ```

## Best Practices

1. **Write daily** โ€” Even a quick entry beats nothing 2. **Review weekly** โ€” Patterns emerge over time 3. **Be honest** โ€” This is for you, not performance 4. **Export monthly** โ€” Create backups, share if desired 5. **Note the mundane** โ€” Quiet days have value too 6. **Save the quotes** โ€” They become treasures 7. **Revisit decisions** โ€” Learn from past judgment calls

## Privacy

- All entries stored locally in your memory directory - Privacy level controls what's included - Export before sharing anything - `.gitignore` excludes config.json and exports by default

## Troubleshooting

**generate.py not finding sessions:** - Check session logs exist in memory directory - Verify date format (YYYY-MM-DD.md)

**export.py failing:** - Install pandoc: `apt install pandoc` - Check write permissions on output directory

**Entries feel robotic:** - Use interactive mode for more natural writing - Read existing entries for tone inspiration - Don't force structureโ€”skip sections that don't fit the day

**Setup script not creating files:** - Check diary_path in config.json - Ensure parent directories exist - Run `python3 scripts/setup.py` again

## Changelog

### v0.5.0 - **Privacy Cleanup:** Removed all hardcoded personal references from prompts - **Dynamic Workspace:** All scripts now use environment variables (`OPENCLAW_WORKSPACE` or `AGENT_WORKSPACE`) for workspace detection - **OpenClaw Gateway:** Removed outdated `ANTHROPIC_API_KEY` requirement - skill uses OpenClaw Gateway for LLM access

### v0.4.1 - **Model Flexibility:** Removed hardcoded Claude Haiku requirement - skill now works with any capable model - **Recommendation:** Updated docs to recommend Claude models (Haiku, Sonnet, Opus) for best results, but not require them - **Philosophy:** Users should choose their preferred model, not be locked in

### v0.4.0 - **AI-Powered Generation:** Complete rewrite for rich, reflective entries (works best with Claude models) - **Rich Content:** Generates 400-600 word entries with personal, emotional tone - **All Features Active:** Quote Hall of Fame, Curiosity Backlog, Decision Archaeology, Relationship Evolution all fully integrated - **Persistent Files:** Automatically extracts and appends quotes/curiosities/decisions to dedicated files - **Context Awareness:** Reads recent session logs and existing memory files for context

### v0.3.0 - **Auto-Setup:** `generate.py` now automatically runs setup wizard if no config.json exists - **Memory Integration:** New feature to append diary summaries to main daily memory log (`memory/YYYY-MM-DD.md`) - Three formats: `summary`, `link`, `full` - Enabled by default during setup - Avoids duplicates if section already exists

### v0.2.0 - Added Quote Hall of Fame, Curiosity Backlog, Decision Archaeology, Relationship Evolution - Interactive setup wizard - Template conditionals for optional sections

### v0.1.0 - Initial release with basic diary generation and export

## Credits

Built for AI agents who want to remember.

Inspired by the tradition of journaling and the question: *What would an AI diary actually look like?*

More Products