| name | reflection |
|---|---|
| description | Journal and reflect on stream of consciousness through interpretive lenses. Use when the user says things like "capture this," "journal this," "I want to reflect on," "give me a Buddhist reading," "apply the Gnosticism lens," "what did I journal this week," "review my entries," "what patterns do you see," "reflect on February," or any reference to journaling, lenses, reflections, reviewing past entries, or applying belief system frameworks to life experience. Also trigger when the user explicitly shares something contemplative, spiritual, or emotionally significant and asks to save, capture, or remember it. Trigger phrases include: "lens," "reflection," "journal," "entry," "annotate," "Buddhism," "Gnosticism," "Stoicism," "what did I write," "capture that." |
Capture stream of consciousness throughout the day. Reflect on it through interpretive lenses without modifying the raw entries.
On every inbound user message, evaluate whether it's journal-worthy:
Capture if the message contains:
- Emotional processing or self-reflection
- Insights, realizations, or pattern recognition
- Relationship reflections (people, dynamics, feelings)
- Gratitude or spiritual/contemplative content
- Life decisions or values-level thinking
- Dreams or meditations
- Creative ideas with personal meaning
Skip if the message is:
- Task management ("remind me to," "add to my list")
- Technical debugging or code discussion
- Scheduling or logistics
- Routine operational updates
- Direct commands to the agent
When capturing:
- Clean voice-to-text artifacts (spelling, punctuation, obvious mishearings)
- Do not synthesize, summarize, or significantly alter the content
- Append to the daily entry file with a timestamp header
- Do not respond about the capture — continue normal processing silently
Runtime data location: ~/.openclaw/reflection/
Each day gets one file: entries/YYYY-MM-DD.md
---
date: 2026-03-12
---
## 09:15
I'm grateful for the clarity this morning. Mind-body-spirit
circuit feels complete.
## 11:42
Something Kerry said about the attestation layer is sticking
with me. The accountability piece isn't just legal — it's care
made visible.
## 15:30
Frustrated with Bashan. I'm stuck and it's not in my control.
Noticing the urge to push harder vs. just being honest about
the powerlessness.Rules:
- One file per calendar day
## HH:MMtimestamp headers in chronological order- Frontmatter on first capture of the day; subsequent captures append
- Entries are immutable once written — never modify past entries
- Use UTC timestamps
To append a captured moment to today's file:
- Check if
entries/YYYY-MM-DD.mdexists - If not, create it with frontmatter:
date: YYYY-MM-DD - Append
## HH:MMheader + cleaned content - Ensure a blank line before and after the new section
When the user requests a lens reflection (e.g., "give me a Buddhist reading of this week"):
- Load the requested lens from
references/lenses/[name].mdin the skill repo - Load entries for the requested time period
- Apply the lens using the process in
references/LENS_APPLICATION_ENGINE.md - Write the annotation to
annotations/[lens-name]/YYYY-MM-DD.md - Present a summary to the user
- Offer the full annotation if they want it
Lens definitions live in the skill repo under references/lenses/:
- Buddhism — Craving, impermanence, presence, reactivity patterns
- Gnosticism — Sophia/archontic choices, false authority, awakening moments
See references/TAXONOMY.md for the full taxonomy of available lens categories.
See references/LENSES.md for how lenses are structured and how to contribute new ones.
~/.openclaw/reflection/ # Runtime data (never in git)
├── entries/ # Immutable journal entries
│ └── YYYY-MM-DD.md
├── annotations/ # Lens interpretation overlays
│ └── [lens-name]/
│ └── YYYY-MM-DD.md
└── metadata.json # Usage tracking
skill repo (references/) # Lens definitions (in git)
├── lenses/
│ ├── buddhism.md
│ └── gnosticism.md
├── LENSES.md
├── TAXONOMY.md
└── LENS_APPLICATION_ENGINE.md
154 entries imported from Obsidian (Oct 2025 – Mar 2026) use an older template format with # Section headers (Gratitudes, Meditations, etc.). These remain as-is. New auto-captured entries use the timestamped format above.
Before executing any skill operation, check:
Does ~/.openclaw/reflection/initialized exist?
If NO → run onboarding (below) If YES → proceed to normal operation
When triggered for the first time:
mkdir -p ~/.openclaw/reflection/entries
mkdir -p ~/.openclaw/reflection/annotationsWalk the user through setup. Keep it conversational, not interrogative.
Ask (in natural order, not as a survey):
-
Lens preferences: "Which belief systems or traditions resonate with you? I have Buddhism and Gnosticism ready, with many more available. You can always add more later."
- Record responses in config.json
declared_lenses
- Record responses in config.json
-
Capture preferences: "I can silently capture journal-worthy moments from our conversations — reflections, insights, dreams, gratitude. Want me to do that?"
- If yes: will install auto-capture in AGENTS.md (Step 4)
-
Reflection cadence: "How often do you want reflection prompts? I'd suggest daily (quick check) and weekly (deeper lens reflection)."
- Record in config.json
heartbeat_schedule
- Record in config.json
-
Timezone: "What timezone are you in? This affects when I prompt you."
- Record in config.json
timezone
- Record in config.json
Create ~/.openclaw/reflection/config.json:
{
"declared_lenses": ["buddhism", "gnosticism"],
"timezone": "America/New_York",
"auto_capture": true,
"heartbeat_schedule": {
"daily_check": "09:00",
"weekly_reflection": "sunday 08:00"
},
"entities_path": "~/.openclaw/entities.json",
"initialized_at": "2026-03-13T12:00:00Z"
}Append to AGENTS.md:
## Reflection Skill: Auto-Capture
On every inbound user message, silently evaluate whether it's journal-worthy:
- Emotional processing, self-reflection, insights, pattern recognition
- Relationship reflections, gratitude, spiritual/contemplative content
- Life decisions, values-level thinking, dreams, meditations
- Creative ideas with personal meaning
If journal-worthy: clean voice-to-text artifacts, append to
~/.openclaw/reflection/entries/YYYY-MM-DD.md with ## HH:MM timestamp.
Do not respond about the capture. Continue normal processing.
Skip: task management, debugging, scheduling, logistics, commands.This ensures auto-capture is always in the agent's context, not gated behind skill triggering.
Check if ~/.openclaw/entities.json exists. If so, note the path in config.json so the lens application engine can reference known people, organizations, and projects when generating annotations.
Append to the workspace HEARTBEAT.md:
## Reflection Skill
### Daily Journal Check (09:00 [timezone])
- Check if ~/.openclaw/reflection/entries/YYYY-MM-DD.md exists for today
- If empty: "Nothing captured today. Anything on your mind worth noting?"
- If has entries: silent (no prompt needed)
### Weekly Reflection (Sunday 08:00 [timezone])
- Load this week's entries
- Offer: "Want a lens reflection on this week? I can apply [declared_lenses]."
- If accepted: run lens application engine, present summaryecho "initialized: $(date -u +%Y-%m-%dT%H:%M:%SZ)" > ~/.openclaw/reflection/initialized"All set. I'll silently capture journal-worthy moments, check in daily at [time], and offer a deeper reflection every Sunday. You can ask for a lens reading anytime — just say something like 'give me a Buddhist reading of this week.'"
To remove the skill's hooks:
- Remove the "Reflection Skill: Auto-Capture" section from AGENTS.md
- Remove the "Reflection Skill" section from HEARTBEAT.md
- Delete ~/.openclaw/reflection/initialized
- Optionally delete ~/.openclaw/reflection/ (entries and annotations)