obsidian-memory-keeper
# Obsidian Memory Keeper Skill
What this skill does
# Obsidian Memory Keeper Skill
## Description
Manages daily notes, session tracking, and knowledge base synchronization for Aaron's Obsidian vault located at `~/Documents/Obsidian/Aaron/`.
## Purpose
This skill provides automated daily note creation, session summaries, and bidirectional synchronization between CLAUDE.md and Obsidian vault content. It ensures Aaron's personal knowledge base stays current and organized.
## When to Invoke
**Auto-Invoke** (proactive):
- Daily note doesn't exist for today
- Session summary requested
- After significant development milestones
- Weekly review periods (Sundays)
**Manual Invoke** (explicit):
- User types `/daily-note` command
- User requests Obsidian integration
- User asks to "update daily notes", "sync Obsidian", or similar
## Core Capabilities
### 1. Daily Note Management
Create or update daily notes in Obsidian vault following the Daily-Note template:
**Location**: `~/Documents/Obsidian/Aaron/Daily/YYYY-MM-DD.md`
**Template Structure**:
```markdown
# YYYY-MM-DD
## Morning Review
- [ ] Check CLAUDE.md status
- [ ] Review active projects
- [ ] Plan today's priorities
## Session Notes
### Session 1: [Time]
**Project**:
**Focus**:
### Session 2: [Time]
**Project**:
**Focus**:
## Accomplishments
-
## Learnings
-
## Tomorrow
- [ ]
- [ ]
## Links
- [[Projects]]
- [[CLAUDE.md]]
---
Tags: #daily-note #YYYY #MM
```
**Daily Note Creation Rules**:
- Create new daily note at first session of the day
- Use ISO 8601 date format (YYYY-MM-DD)
- Auto-link to related project notes in Aaron vault
- Add session summaries as conversations occur
- Timestamp each session entry
- Include tags for searchability
### 2. Session Tracking
Track Claude Code sessions with context:
**What to Capture**:
- Session start/end time
- Working directory / project
- Key tasks completed
- Files modified (from git status if available)
- Significant decisions or insights
- Errors encountered and solutions
**How to Capture**:
1. Read git status in current working directory
2. Analyze conversation history for key activities
3. Extract file modifications, test results, commands
4. Summarize as bullet points under session heading
5. Append to today's daily note
**Example Session Entry**:
```markdown
### Session 3: 14:30-16:15
**Project**: ~/projects/xai (PhD Dissertation)
**Focus**: Experimental validation sprint Week 2
**Completed**:
- Ran Experiment 6.1 with n=500 samples (GPU cluster)
- Fixed type errors in attribution methods (3 files)
- Updated test suite (12 new tests added)
- Compiled thesis PDF (479 pages, no errors)
**Files Modified**:
- src/attribution/methods.py (+45, -12)
- tests/test_attribution.py (+150, -0)
- outputs/thesis/chapters/chapter6.tex (+23, -8)
**Decisions**: Chose SHAP over LIME for efficiency on n=500
**Next**: Week 3 - Experiment 6.2 with demographic analysis
```
### 3. CLAUDE.md Synchronization
Bidirectional sync between CLAUDE.md and Obsidian vault:
**CLAUDE.md → Obsidian**:
- Extract active projects from CLAUDE.md
- Create/update project notes in `~/Documents/Obsidian/Aaron/Projects/`
- Link projects to daily notes
- Sync session notes to daily notes
- Update project status in vault
**Obsidian → CLAUDE.md**:
- Extract insights from daily notes
- Update session notes in CLAUDE.md
- Add learnings to infrastructure/patterns
- Sync project status changes
- Preserve CLAUDE.md structure
**Sync Process**:
1. Read both CLAUDE.md and latest daily notes
2. Identify differences (new sessions, project updates, learnings)
3. Apply changes bidirectionally
4. Maintain consistency (Last Updated timestamp, project metrics)
5. Log sync operations
### 4. Knowledge Base Integration
Connect daily notes to Aaron's broader knowledge base:
**Auto-Linking**:
- Link project names to `~/Documents/Obsidian/Aaron/Projects/` notes
- Link tech concepts to `~/Documents/Obsidian/Aaron/Knowledge/` notes
- Create backlinks from projects to daily notes
- Tag notes appropriately (#daily-note, #project-name, #tech-stack)
**Content Organization**:
- Archive completed project notes to `~/Documents/Obsidian/Aaron/Archive/`
- Create indexes (MOCs - Maps of Content) for major topics
- Maintain clean folder structure (Daily, Projects, Knowledge, Archive)
- Remove duplicate content
### 5. Weekly Review Automation
Every Sunday, create weekly review note:
**Location**: `~/Documents/Obsidian/Aaron/Daily/Weekly-Reviews/YYYY-WXX.md`
**Content**:
- Summary of week's accomplishments
- Project progress (from CLAUDE.md metrics)
- Lessons learned
- Next week priorities
- Links to all daily notes from the week
**Process**:
1. Aggregate all daily notes from Monday-Sunday
2. Extract accomplishments and learnings
3. Pull project metrics from CLAUDE.md
4. Generate weekly summary
5. Create links to individual daily notes
6. Update CLAUDE.md session notes with weekly insights
## Analysis Process
**Step 1: Environment Check**
```bash
# Verify Obsidian vault exists
if [ ! -d ~/Documents/Obsidian/Aaron ]; then
echo "ERROR: Aaron vault not found. Run migration first."
exit 1
fi
# Check daily notes directory
mkdir -p ~/Documents/Obsidian/Aaron/Daily/
# Get today's date
TODAY=$(date +%Y-%m-%d)
```
**Step 2: Daily Note Creation/Update**
```bash
# Check if today's note exists
DAILY_NOTE=~/Documents/Obsidian/Aaron/Daily/$TODAY.md
if [ ! -f "$DAILY_NOTE" ]; then
# Create from template
cp ~/Documents/Obsidian/Aaron/Templates/Daily-Note.md "$DAILY_NOTE"
# Replace date placeholders
sed -i "s/YYYY-MM-DD/$TODAY/g" "$DAILY_NOTE"
fi
```
**Step 3: Session Analysis**
```bash
# Analyze current working directory
CWD=$(pwd)
PROJECT=$(basename $CWD)
# Get git status if in git repo
if [ -d .git ]; then
GIT_STATUS=$(git status --short)
FILES_MODIFIED=$(echo "$GIT_STATUS" | wc -l)
fi
# Capture session context
SESSION_TIME=$(date +%H:%M)
```
**Step 4: Content Extraction**
From conversation history, extract:
- Commands executed
- Files read/written
- Tests run (results)
- Decisions made
- Errors encountered
**Step 5: Note Formatting**
Format session entry as markdown:
```markdown
### Session N: HH:MM
**Project**: $CWD
**Focus**: [extracted from conversation context]
**Completed**:
- [bullet points from task list]
- [file modifications]
- [test results]
**Files Modified**: [from git status]
**Decisions**: [from conversation analysis]
**Next**: [from todo list or user intent]
```
**Step 6: Append to Daily Note**
```bash
# Find "## Session Notes" section
# Append new session entry
# Increment session counter
```
**Step 7: Sync with CLAUDE.md**
```python
# Read CLAUDE.md
with open(os.path.expanduser('~/.claude/CLAUDE.md'), 'r') as f:
claude_md = f.read()
# Extract session notes section
# Compare with Obsidian daily notes
# Apply bidirectional updates
# Write back to CLAUDE.md
```
## Update Rules
### Safety Rules
**Never**:
- Delete user content without explicit confirmation
- Overwrite manually edited notes without backup
- Modify dates on existing daily notes
- Remove tags or links set by user
- Change vault structure (folder organization)
**Always**:
- Preserve manual edits in daily notes
- Create backups before major sync operations
- Log all modifications
- Verify vault structure before operations
- Exit gracefully if vault not found
### Update Frequency
**Auto-Updates** (SessionEnd hook):
- Daily note creation (once per day)
- Session entry addition (per session)
- CLAUDE.md timestamp update (daily)
**Manual Updates** (/daily-note command):
- Full sync with CLAUDE.md
- Weekly review generation (Sundays)
- Knowledge base reorganization
- Project note updates
### Conflict Resolution
When conflicts arise between CLAUDE.md and Obsidian:
1. **Timestamps**: Most recent wins
2. **Project status**: CLAUDE.md is source of truth
3. **Session notes**: Merge both (append)
4. **User edits**: Preserve always
5. **Metrics**: CLAUDE.md canonical
## Examples
### Example 1: Create Daily Note (First Session)
**InRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.