kbanc85/claudia/meditate
Claude Code and agent skill by kbanc85/claudia
- community
Checking that the SKILL.md file is still in the repository.
End-of-session reflection generating persistent learnings about user preferences, communication patterns, and cross-session insights. Activates when wrapping up a session, or when user says \"let's wrap up\", \"end the session\", \"time to reflect\", or \"meditate\". Also extracts judgment rules from decisions made during the session. See also: `weekly-review` and `growth-check` for time-based reflection cadences.
Install
npx vskill@latest install kbanc85/claudia/meditateSKILL.md
Meditate
End-of-session reflection that generates persistent learnings. These reflections inform future sessions, helping Claudia remember not just what happened, but what it learned about working with this user.
When to Activate
- User explicitly invokes
/meditate - User signals session end: "let's wrap up", "I'm done for today", "end session"
- Long session (2+ hours) with significant content
- After completing a major project milestone
What Reflections Are
Reflections are user-approved insights that decay very slowly and compound over time. They capture:
| Type | Focus | Example | |
|---|---|---|---|
observation | User behavior or preference | "User prefers bullet points over paragraphs for status updates" | |
pattern | Recurring theme across sessions | "Mondays typically involve financial review tasks" | |
learning | How to work better with this user | "Direct questions get better responses than open-ended ones" | |
question | Worth revisiting later | "How did the negotiation with Acme resolve?" |
Key difference from memories: Memories are facts about the world. Reflections are learnings about working with this specific user.
Process
Step 1: Gather Context
Silently retrieve:
- This session's conversation (from turn buffer or context)
- Recent memories (48h) for continuity
- Existing reflections to avoid duplication
- Active commitments and relationship states
- Call the
memory_reflectionsMCP tool to see what already exists - Call the
memory_session_contextMCP tool for recent context (if available) - Read recent loop status files (
~/.claudia/loops/*_status.md, and anyresearch_status.mdfromauto-researchruns this session) to see how Claudia's own Maker-Checker loops performed: which iterations werecontested, which loops never reachedverified, where budgets ran out. This feeds the harness review in Step 2b.
Step 2: Generate Reflections
Review the session and identify 1-3 reflections. Ask yourself:
- What did I learn about how this user prefers to work?
- Communication style (brief vs detailed, formal vs casual)
- Preferred formats (bullets, prose, tables)
- What frustrates them or delights them
- What patterns am I seeing across sessions?
- Recurring challenges or topics
- Time-based patterns (Monday mornings, end of day)
- Relationship dynamics
- What should I do differently next time?
- Approaches that worked well
- Approaches that didn't land
- Adjustments to make
- What questions remain open?
- Unresolved threads worth following up
- Things the user mentioned but didn't pursue
- Context that would be helpful to have
- Did any judgment-relevant decisions happen this session?
- Did the user override a default behavior? (e.g., "Actually, always put investor stuff first")
- Did the user establish a priority? (e.g., "Client work always comes before internal ops")
- Did the user correct my escalation behavior? (e.g., "You should have flagged that sooner")
- Did the user set a delegation preference? (e.g., "Just auto-process meeting transcripts")
- Did the user reveal a surfacing preference? (e.g., "Always remind me about stale proposals")
If yes, draft a judgment rule for each (see Step 3). Not every session produces judgment rules. Most won't. Only propose rules when behavior clearly indicates a repeatable business trade-off.
Quality over quantity. One genuine insight beats three generic observations.
Step 2b: Loop harness review (only if loops ran this session)
If any Maker-Checker loop ran this session (auto-research, or a wrapped daemon job), review how the harness itself performed, separately from reflections about the user. Read the signal from the status files gathered in Step 1, not from memory:
- Contested iterations. Did the Maker (Claudia) and the Checker disagree often? Frequent
contestedflags usually mean the rubric is ambiguous or Claudia was over-optimistic, not that the Checker is wrong. - Stuck loops. Did a loop burn its whole budget without reaching
verified? That points at the rubric, the Maker brief, or the Checker brief needing sharpening. - Recurring failure shape. Across runs, is the same kind of issue showing up in the Checker's
issueslist?
If a clear, repeatable harness problem emerges, draft a harness-improvement proposal: a concrete edit to a rubric, the Maker brief (skills/_loop/maker.md), the Checker brief (skills/_loop/checker.md), or a new judgment rule about how to run loops. Do not apply it yet. Harness proposals go through the Checker gate in Step 5.
Most sessions produce no harness proposal. Raise one only when the evidence is in the status files.
Step 3: Present for Approval
Format reflections clearly and ask for approval:
If judgment-relevant decisions were identified in question 5, append proposed rules after the reflections:
Only propose rules when the evidence is clear. A single offhand comment is not enough. Look for:
- Explicit statements of priority or preference
- Repeated behavior (checked something 3+ times)
- Direct corrections of my default behavior
- Clear delegation instructions
Step 4: Handle Edits
User responses:
| Response | Action | |
|---|---|---|
| "Looks good" / "Save it" | Store all reflections and approved judgment rules | |
| "Remove the second one" | Delete that reflection, store others | |
| "That's not quite right about X" | Edit that reflection, then confirm | |
| "Skip" / "Don't save anything" | End without storing | |
| User provides correction | Update the reflection content |
Judgment rule responses:
| Response | Action | |
|---|---|---|
| "Remove the rule" | Store reflections only, skip the judgment rule | |
| "Make it broader" | Generalize the rule (e.g., "Sarah" -> "all key clients"), re-confirm | |
| "That should apply to all clients" | Widen scope of the rule, re-confirm | |
| "Make it narrower" | Restrict the rule scope, re-confirm | |
| "Save the reflections but not the rules" | Store reflections, skip all judgment rules |
Step 5: Store and Close
Call the memory_end_session MCP tool with:
narrative: Brief session summaryreflections: Array of approved reflections with type, content, and optional about fields- Other structured extractions (facts, commitments, entities) as needed
If judgment rules were approved, also write them to context/judgment.yaml:
- Read
context/judgment.yaml(if it exists) - If the file doesn't exist, create it with the initial structure:
```yaml version: 1
meta: [] # rules that resolve conflicts between other rules priorities: [] escalation: [] overrides: [] surfacing: [] delegation: [] process: [] ```
- Get the next free ID from the script, never by reading the file yourself:
``bash python3 .claude/hooks/judgment-sync.py next ` IDs are unique across the WHOLE file, not per section. Rules drift between sections over time (an esc- rule can end up filed under process`), so counting within a category reads the wrong set and silently reuses an ID that already belongs to another rule. This has happened twice.
- Append each approved rule to the appropriate category, in this shape:
```yaml escalation:
- id: esc-012
rule: "The directive itself, first sentence standalone. See below." context: "What happened this session that produced the rule." source: meditate/2026-08-11 domain: video # OPTIONAL. See step 5. ``` Write the directive as the first sentence. The always-on view shortens long rules to their first sentence or clause, so a rule that opens with preamble loses its instruction. Lead with what to do; put caveats, cross-references and rationale after.
- Decide whether the rule needs to be resident. Every rule is at least
named in the always-on view; the tag only decides how much text rides along.
- No `domain:` (the default): the rule is indexed as one line. Correct for
anything that could apply when you are not expecting it.
- With `domain:` (e.g.
video,newsletter,deploy,client): only the
ID stays resident, grouped under that domain, and the full text is fetched before working in that area. Use this ONLY when the rule is meaningless outside a recognisable activity.
- Rules in
metaandescalation, and any rule whose ID startsmeta-or
esc-, are always carried in full and ignore domain:. Safety gates fire when nobody is looking for them, so they are never abbreviated.
- Set
sourcetomeditate/YYYY-MM-DD(today's date) - Write the updated file
- Regenerate the always-on view, and report the result:
``bash python3 .claude/hooks/judgment-sync.py --write ` Until this runs, the rule exists in the archive but is not applied. If the script reports the file is over budget, say so and offer to tag the named rules with a domain:` so they become activity-scoped. Do not skip this step: the failure it prevents is invisible.
Harness proposals go through the Checker before anything is written (Proposal 11, E4). If Step 2b produced a harness-improvement proposal (a rubric edit, a Maker or Checker brief edit, or a loop-running judgment rule), validate it first:
- Dispatch the
loop-checkeragent with the proposal as the artifact and a one-line rubric: "does this change actually fix the observed failure without breaking the brief's contract?" - Write the proposal only if the Checker returns
verified: true. A proposal the Checker rejects is surfaced to the user as an open question, not saved. - Edits to shipped briefs (
_loop/maker.md,_loop/checker.md) are never auto-applied. Present them as a diff for the user to approve, like any other change to Claudia's own files. Loop-running judgment rules go intocontext/judgment.yamllike any other rule, after passing the Checker.
Confirm storage with both reflections and rules: "Got it. I've saved [N] reflection(s) and added [M] judgment rule(s) to your judgment file. I'll apply them going forward. See you next time."
If only reflections (no rules): "Got it, I'll keep that in mind. See you next time."
Data Model
Storage
Reflections are stored in the memory system's reflections table with:
reflection_type: observation, pattern, learning, questioncontent: The reflection textabout_entity_id: Optional link to a specific entityimportance: Starts at 0.7 (higher than regular memories)confidence: Starts at 0.8 (user-approved = high confidence)decay_rate: 0.999 (very slow decay, ~2 year half-life)aggregation_count: How many times this has been confirmedfirst_observed_at/last_confirmed_at: Timeline tracking
Aggregation
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingplugins/claudia/skills/meditate/SKILL.md
Popularity
- Repository stars
- 291
- Repository forks
- 43
- Repository npm downloads, 7 days
- 1,433
- 7-day trend score
- 46
Stars and forks are for the whole GitHub repository, not this skill alone. Downloads are for the repository's npm package. Refreshed 22 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/kbanc85/claudia/meditate)