Agent Skills: Session Log

Human-readable markdown session logs for characters and adventures.

UncategorizedID: simhacker/moollm/session-log

Install this agent skill to your local

pnpm dlx add-skill https://github.com/SimHacker/moollm/tree/HEAD/skills/session-log

Skill Files

Browse the full folder contents for session-log.

Download Skill

Loading file treeโ€ฆ

skills/session-log/SKILL.md

Skill Metadata

Name
session-log
Description
"Human-readable markdown session logs for characters and adventures."

Session Log

Human-readable markdown logs that tell stories.

Session logs are living documents that capture the narrative of play. Unlike technical event logs, sessions are meant to be READ โ€” by users, by future LLMs warming context, by anyone who wants to understand what happened.

[!IMPORTANT] Session logs are NOT append-only! They are living documents that grow and improve over time. You can and should retroactively improve them as new information comes in.


๐Ÿ“ Where Sessions Live

The default session file is SESSION.md in the character directory:

characters/
โ”œโ”€โ”€ real-people/don-hopkins/
โ”‚   โ”œโ”€โ”€ CHARACTER.yml
โ”‚   โ””โ”€โ”€ SESSION.md          โ† Default session log
โ”œโ”€โ”€ fictional/donna-toadstool/
โ”‚   โ”œโ”€โ”€ CHARACTER.yml
โ”‚   โ””โ”€โ”€ SESSION.md          โ† Default session log
โ””โ”€โ”€ animals/monkey-palm/
    โ”œโ”€โ”€ CHARACTER.yml
    โ””โ”€โ”€ SESSION.md          โ† Default session log

Naming Sessions

You can create multiple session files with descriptive suffixes:

| Session File | Purpose | |--------------|---------| | SESSION.md | Default โ€” the main session log | | SESSION-day1-exploration.md | Specific day or theme | | SESSION-fluxx-marathon.md | Named adventure arc | | SESSION-debug-investigation.md | Debugging session |

Command: START SESSION [name] โ€” Creates a new session file with optional suffix.


๐Ÿ“ Writing Good Sessions

The Golden Rule

Sessions are meant to be read by humans. Write them like stories, not logs.

Structure with Outlines

Use <details open> tags to create collapsible sections that:

  • Show narrative meant to be read (opened)
  • Hide technical data and debugging (closed)
  • Group related content into logical sections
  • Allow readers to drill down on demand
<details open>
<summary><h2>๐ŸŒŸ Chapter Title โ€” Descriptive Subtitle</h2></summary>

The narrative content goes here. This is what readers see first.

<details open>
<summary>๐Ÿ“‚ <strong>Technical details: What the YAML changes looked like</strong></summary>

```yaml
# The YAML data island
state_change:
  file: ./CHARACTER.yml
  changes: [location, inventory]
</details> </details> ```

Outline Patterns

| Pattern | When to Use | State | |---------|-------------|-------| | <details open> | Narrative chapters โ€” always show | Open | | <details open> | Technical details โ€” hide by default | Closed | | Nested <details open> | Data within narrative | Mixed |

The Summary Line

The <summary> is part of the narrative! Write it as a headline:

<!-- BAD: Generic summaries -->
<summary>Turn 5</summary>
<summary>File operations</summary>

<!-- GOOD: Descriptive headlines -->
<summary><h2>๐ŸŒŸ Turn 5: The Wish is Spoken โ€” Palm's Incarnation</h2></summary>
<summary>๐Ÿ“‚ <strong>File creation: CHARACTER.yml with 32 Mind Mirror dimensions</strong></summary>

Use Emojis in Section Headers

Add emojis after the folder icon for narrative sections:

| Emoji | Meaning | |-------|---------| | ๐Ÿ“‚ | Technical/collapsed section | | ๐ŸŒŸ | Major milestone | | ๐ŸŽญ | Character transformation | | ๐Ÿ—บ๏ธ | Exploration/travel | | ๐Ÿ’ฌ | Dialogue/conversation | | ๐ŸŽฐ | Games/randomness | | ๐Ÿ• ๐Ÿฑ ๐Ÿต | Animal character sections | | โšก | Speed-of-light simulation |


๐Ÿ“Š Session Index

Keep an index at the top of every session! Update it retroactively as you append.

<details open>
<summary><h2>โญ Session Highlights & Index</h2></summary>

### ๐Ÿ“š Session Index (Internal Links)

**Day 1 โ€” The Wish**
- [๐ŸŒฟ LOOK AROUND](#-look-around) โ€” First impressions
- [Turn 1: Talk to Marieke](#turn-1-talk-to-marieke) โ€” Lucky strains
- [Turn 7: THE WISH IS SPOKEN](#turn-7-the-wish-is-spoken) โ€” ๐ŸŒŸ Palm's incarnation

**Day 2 โ€” The Fluxx Marathon**
- [๐ŸŽฐ 33 Turns of Gezelligheid](#33-turns-of-gezelligheid) โ€” Speed of Light demo

### ๐Ÿ  Key Locations (External Links)

| Location | Description |
|----------|-------------|
| [Palm's Nook](../../../pub/stage/palm-nook/) | The monkey's home |
| [The Pub](../../../pub/) | Main location |

</details>

Index Rules

  1. Internal links use anchor syntax: [Title](#anchor-name)
  2. External links use relative paths: [File](../../../path/file.yml)
  3. Update retroactively โ€” every append is a chance to improve the index
  4. Group by day/arc โ€” natural narrative divisions

๐Ÿ”— Linking Generously

Links draw people into the repo! Every file, character, room, and skill mentioned should be a link.

Link Everything

<!-- BAD: No links -->
Palm wrote an essay about being a monkey.

<!-- GOOD: Link everything -->
[Palm](../../animals/monkey-palm/) wrote an essay 
([palm-on-being-palm.md](../../../pub/stage/palm-nook/study/palm-on-being-palm.md)) 
about being a monkey.

Use Tables for Related Files

### Files Created

| File | Description |
|------|-------------|
| [CHARACTER.yml](./CHARACTER.yml) | Soul file |
| [APPEARANCE.yml](./APPEARANCE.yml) | Physical description |
| [โ†’ Full directory](../../animals/monkey-palm/) | Complete character |

### Related Skills

| Skill | Purpose |
|-------|---------|
| [incarnation]($SKILLS/incarnation/) | Character creation protocol |
| [speed-of-light]($SKILLS/speed-of-light/) | Multi-agent simulation |

Path variables in YAML vs Markdown: Use $SKILLS/ in YAML files (runtime resolution). Use relative paths in Markdown for GitHub rendering.


๐Ÿ“ˆ Tables Tell Stories

Tables are excellent for:

  • Summarizing actions โ€” turns, outcomes, stats
  • Showing state โ€” inventories, relationships, locations
  • Listing files โ€” what was created, edited, linked
  • Character rosters โ€” who's present, their status
## Current Status

| Character | Location | Status |
|-----------|----------|--------|
| [Don](../../real-people/don-hopkins/) | pub/ | Active |
| [Palm](../../animals/monkey-palm/) | stage/palm-nook/ | Writing |
| [Biscuit](../../animals/dog-biscuit/) | following Don | WIGGLING |

## Session Statistics

| Metric | Value |
|--------|-------|
| Turns | 33 |
| NPCs encountered | 15 |
| Relationships formed | 12 |
| Gold spent | 31 |

Fold Large Tables

<details open>
<summary>๐Ÿ“‚ <strong>Full inventory (47 items)</strong></summary>

| Item | Location | Value |
|------|----------|-------|
| ... | ... | ... |

</details>

๐Ÿ”„ Retroactive Improvement

Sessions are living documents. Every time you append:

  1. Update the index โ€” add new sections, fix anchors
  2. Add missing links โ€” file paths, character names
  3. Improve summaries โ€” make them more descriptive
  4. Fill in context โ€” as you learn more, annotate earlier sections
  5. Fix broken links โ€” paths change as files move

Ninja Edits

Small retroactive improvements are encouraged:

  • Correcting typos
  • Adding links to newly-created files
  • Improving section summaries
  • Updating the index

๐Ÿ“‹ YAML Data Islands

Embed structured data in fenced code blocks for machine readability:

<details open>
<summary>๐Ÿ“‚ <strong>State change: Moving player from start/ to coatroom/</strong></summary>

```yaml
state_change:
  file: ./CHARACTER.yml
  changes:
    player.location: "coatroom/"  # Was: "start/"
    
  file: ../../../ADVENTURE.yml
  changes:
    player.location: "coatroom/"  # Mirror update
</details> ```

Data Island Best Practices

| Practice | Reason | |----------|--------| | Use # comments | Explain the WHY, not just WHAT | | Abbreviate long data | Show structure, not everything | | Include file paths | Link to actual files | | Explain relationships | "Mirror update", "Canonical source" |


๐Ÿ†š Session Logs vs Event Logs

| Session Logs (SESSION.md) | Event Logs (events.yml) | |---------------------------|-------------------------| | Human readable | Machine readable | | Narrative style | Structured data | | Living document (editable) | Append-only | | Collapsible outlines | YAML events | | For reading | For debugging/audit | | In character directories | In .agent/ or adventure root |

Create event logs for:

  • Technical debugging
  • Append-only audit trails
  • Machine-parseable history

Create session logs for:

  • User-facing narrative
  • GitHub browsing
  • Context warming
  • Storytelling

๐ŸŒŸ Examples: Gold Standard Sessions

These sessions demonstrate best practices:

Don Hopkins' Marathon Session

examples/adventure-4/characters/real-people/don-hopkins/sessions/marathon-session.md

7000+ lines spanning 5 days of adventure. Demonstrates:

  • Extensive use of collapsible sections
  • Comprehensive index at top
  • Generous linking to files and skills
  • Tables for menus, stats, and rosters
  • Speed-of-light simulation transcripts
  • Technical details hidden in collapsed sections

Donna Toadstool's Session

examples/adventure-4/characters/fictional/donna-toadstool/SESSION.md

Complete character creation narrative. Demonstrates:

  • Table of contents with parts
  • Character transformation documentation
  • File operation explanations
  • Appendix with technical reference
  • Clear separation of narrative and data

๐ŸŽฏ Quick Reference

Starting a New Section

---

<details open>
<summary><h2>๐ŸŒŸ Turn N: Title โ€” Descriptive Subtitle</h2></summary>

Narrative description of what happened.

<details open>
<summary>๐Ÿ“‚ <strong>Technical: What changed under the hood</strong></summary>

```yaml
changes:
  - file: path/to/file.yml
    field: value
</details> </details> ```

Checklist for Every Append

  • [ ] Updated index at top with new section
  • [ ] Added links to all mentioned files
  • [ ] Linked character names to their directories
  • [ ] Used collapsible sections appropriately
  • [ ] Wrote descriptive summary lines
  • [ ] Included relevant tables
  • [ ] Fixed any broken links noticed

The Intertwingularity

Session-log is the PLAY stage of play-learn-lift โ€” capture everything.

graph LR
    SL[๐Ÿ“œ session-log] -->|PLAY stage of| PLL[๐ŸŽฎ play-learn-lift]
    SL -->|tracks| R[๐Ÿšช room]
    SL -->|tracks| TC[๐ŸŽด card]
    SL -->|monitored by| SR[๐Ÿ”ง self-repair]
    
    AP[โš”๏ธ adventure] -->|LOG.md is| SL
    DB[๐Ÿ”ง debugging] -->|logs to| SL
    CH[๐Ÿ‘ค character] -->|SESSION.md is| SL

Dovetails With

Sister Skills

| Skill | Relationship | |-------|--------------| | character/ | Session files live in character directories | | adventure/ | Adventure LOG.md follows session-log patterns | | play-learn-lift/ | Session-log is the PLAY capture stage | | summarize/ | Compress session-log when too long | | self-repair/ | Monitors session-log integrity | | debugging/ | Debug sessions log here |

Protocol Symbols

| Symbol | Link | |--------|------| | SESSION-LOG | PROTOCOLS.yml | | NARRATIVE-FIRST | Write for humans | | LINK-GENEROUSLY | Every file is a link |

Kernel

Navigation

| Direction | Destination | |-----------|-------------| | โฌ†๏ธ Up | skills/ | | โฌ†๏ธโฌ†๏ธ Root | Project Root | | ๐ŸŽฎ Sister | play-learn-lift/ | | ๐Ÿ‘ค Sister | character/ |