session-log
npx skills add https://github.com/simhacker/moollm --skill session-log
Agent 安装分布
Skill 文档
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]
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
- Internal links use anchor syntax:
[Title](#anchor-name) - External links use relative paths:
[File](../../../path/file.yml) - Update retroactively â every append is a chance to improve the index
- 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:
- Update the index â add new sections, fix anchors
- Add missing links â file paths, character names
- Improve summaries â make them more descriptive
- Fill in context â as you learn more, annotate earlier sections
- 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
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
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
- kernel/event-logging-protocol.md â Technical event format
- schemas/event-schema.yml â YAML block schema
Navigation
| Direction | Destination |
|---|---|
| â¬ï¸ Up | skills/ |
| â¬ï¸â¬ï¸ Root | Project Root |
| ð® Sister | play-learn-lift/ |
| ð¤ Sister | character/ |