From obsidian-update
Energy-aware personal operations system with vault-native persistent memory. Combines Apple HealthKit/Oura sleep data, Google Calendar, Gmail inbox intelligence, Google Drive task persistence, and Obsidian Kanban integration — all persisted to the MoxyWolf Obsidian vault. Use this skill whenever Dorian says 'morning standup,' 'daily ops,' 'what should I focus on,' 'brain dump,' 'triage my tasks,' 'process my backlog,' 'weekly review,' 'how did my week go,' 'what's my day look like,' 'clear my head,' 'organize what's on my plate,' 'Sunday planning,' or any request about structuring his day, prioritizing work, reviewing the week, or processing a task list. Also trigger when Dorian asks about his energy levels, sleep patterns, productivity patterns, or pillar balance. This skill should trigger aggressively — if the request touches planning, prioritization, task management, health-aware scheduling, or weekly reflection, use it.
How this skill is triggered — by the user, by Claude, or both
Slash command
/obsidian-update:personal-osThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Architecture:** Three-layer memory system (FelixCraft pattern) integrated with energy-aware daily operations. All persistence lives in the MoxyWolf Obsidian vault — the plugin itself is stateless.
Architecture: Three-layer memory system (FelixCraft pattern) integrated with energy-aware daily operations. All persistence lives in the MoxyWolf Obsidian vault — the plugin itself is stateless.
The vault is the single source of truth. Locate it by checking in order:
/sessions/*/mnt/*/) contains CLAUDE.md at root with MoxyWolf Vault markers. If yes, that IS the vault. Set ${VAULT} to that path./sessions/*/mnt/[email protected]/Shared drives/MoxyWolf Shared Files/MoxyWolf Vault/proxy_execute via RUBE_REMOTE_WORKBENCH with Composio googledrive connection. Team Drive ID: 0AHxJ5CazJqxOUk9PVA. This is the ONLY path available in scheduled task VM sessions.request_cowork_directory to ask Dorian to mount the vault.Once resolved, store the path as ${VAULT} for all subsequent operations.
Vault key paths:
${VAULT}/_System/MEMORY.md${VAULT}/_System/IDENTITY.md${VAULT}/_System/backups/${VAULT}/Daily Journal/YYYY-MM-DD.md${VAULT}/Tasks/*.md${VAULT}/Tasks/KANBAN_VIEW.md${VAULT}/GOALS.md${VAULT}/Projects/*/11-Knowledge/${VAULT}/_Shared Knowledge/${VAULT}/People/These rules apply to ALL modes that read or write KANBAN_VIEW.md.
Reading the Kanban (always get fresh content):
run_composio_tool("GOOGLEDRIVE_DOWNLOAD_FILE", {"file_id": "18W69E1XIVwtTEEhcMXFcNs96zYrV5hzh"})
# Returns an S3 URL — fetch that URL to get the actual markdown content
Do NOT use proxy_execute GET /files/{id}?alt=media — it may return stale cached content.
Writing the Kanban (only this works):
run_composio_tool("GOOGLEDRIVE_EDIT_FILE", {
"file_id": "18W69E1XIVwtTEEhcMXFcNs96zYrV5hzh",
"content": "<full updated markdown>",
"mime_type": "text/plain"
})
⚠️ proxy_execute("PATCH", /files/{id}, "googledrive", ...) returns HTTP 200 but silently discards the write — no new revision is created, the file is not changed. Never use it for Kanban writes.
Emoji-safe writes (prevents mojibake):
The Kanban column headers contain emoji (🔥, ⭐, 📅, 💭, ⏳, ✅, 📥). When writing through Google Drive API, emoji can get mangled into †garbage if not handled carefully. To prevent this:
GOOGLEDRIVE_DOWNLOAD_FILE before any write.## 📥 Backlog## 🔥 P0 - Today (Max 3)## ⭐ P1 - This Week (Max 7)## 📅 P2 - Scheduled## 💭 P3 - Someday## ⏳ Waiting On## ✅ DoneRespecting column placement (no auto-moving):
When Dorian checks off a card in Obsidian, the markdown changes - [ ] to - [x] in place — the item stays in its source column. Do NOT scan all columns for - [x] items and move them to Done. Respect where items are. A checked item in P1 means "completed but not yet triaged" — Dorian will move it during standup or triage. Only Modes 1 (Standup) and 2 (Triage) should move items between columns, and only with Dorian's confirmation.
Obsidian sync conflict: If Obsidian is open and syncing to Drive, it will overwrite external writes within seconds. Before writing, Dorian should close Obsidian, or writes may be lost.
This step runs FIRST, before ANY other work. It is the reason this plugin exists.
${VAULT}/_System/IDENTITY.md — load identity and operating principles${VAULT}/_System/MEMORY.md — load Layer 1 tacit knowledge (preferences, patterns, project states, security rules, relationship context)${VAULT}/Daily Journal/ — load Layer 2 recent context (sorted by filename descending, since filenames are YYYY-MM-DD.md)_System/MEMORY.md is missing or empty, warn Dorian: "Memory file not found in the vault. Starting fresh — I'll build context as we work and write it at end of session."_System/ doesn't exist at all, run FIRST-RUN INITIALIZATION (see memory-system skill).Memory bootstrap happens automatically whenever the personal-os skill is invoked. It does not require Dorian to ask for it.
After memory bootstrap, decode any shorthand in Dorian's request before acting on it. This is the "decoder ring" — it turns Claude into a colleague who speaks Dorian's internal language.
Tiered lookup flow:
Dorian: "ping todd about the PSR for gryphon"
1. Check MEMORY.md → Shorthand & Decoder Ring section (hot cache)
→ "todd" → Todd [Last Name], [Role] ✓
→ "PSR" → Pipeline Status Report ✓
→ "gryphon" → Gryphon advisory client ✓
2. If not found → search vault knowledge
→ Check ${VAULT}/Projects/ for matching project names
→ Check ${VAULT}/People/ for matching contact names
→ Check ${VAULT}/_Shared Knowledge/ for matching terms
3. If still not found → ask Dorian
→ "What does X mean? I'll remember it for next time."
→ Add to MEMORY.md Shorthand section + update vault knowledge if needed
When Dorian teaches you a new term:
## Shorthand & Decoder Ring immediately## Relationships & Contacts and consider creating ${VAULT}/People/[Name].md## Active ProjectsPromotion / Demotion rules for the decoder ring:
The personal OS has 5 modes. Determine mode from the user's command or intent:
| Mode | Trigger | Description |
|---|---|---|
| Morning Standup | /personal-os standup or "morning standup" or "what's my day" | Full daily-ops standup with memory context |
| Backlog Triage | /personal-os triage or "triage" or "brain dump" | Process and prioritize backlog with Kanban |
| Weekly Review | /personal-os review or "weekly review" or "how was my week" | Retrospective with memory consolidation |
| Memory Extract | /personal-os extract or triggered by scheduled task | Nightly extraction cycle — update all memory layers |
| Memory Query | /personal-os recall [topic] or "what do you know about..." | Search memory layers for specific context |
If no mode is specified, default to Morning Standup.
Combines daily-ops standup with memory context.
Enhanced flow:
Memory Bootstrap (Step 0 above — already done)
Harvest Team Completions from Slack Canvas — This is the FIRST operational step. Before assessing energy, calendar, or inbox, read the Slack Canvas (Team Kanban) to see what the team accomplished since the last standup. This grounds the entire standup in forward progress rather than an open task list.
How to execute:
a. Read the Team Kanban Slack Canvas using slack_read_canvas with Canvas ID F0ASH0DJP6U.
b. Parse the Canvas for items in two key columns:
- [x] or items with strikethrough/completion markers) that haven't been moved to In Review or Done yet — these represent work completed by teammates directly on the Canvas that the team-kanban sync hasn't processed.
d. Build a Completions Report with three sections:### What the Team Got Done header (see updated briefing format in Step 11).
f. Reconciliation flag: Carry the list of completed/checked items forward to Step 9 (Kanban State) so that when the Obsidian Kanban is read, any discrepancies between the Canvas and Obsidian can be flagged — e.g., an item marked done on the Canvas but still open in Obsidian.Team Roster for mention resolution:
| Name | Short Name | Slack ID |
|---|---|---|
| Dorian Cougias | dorian | U08PV3UHTEX |
| Philip Mudhir | phil | U096C551HBR |
| Steven P | steven | U098H0X9CQ4 |
| Michael Flanagan | michael | U09EB7N7B98 |
Default Review Pairings (for newly checked items):
| Assignee | Default Reviewer |
|---|---|
| Dorian | Phil |
| Phil | Dorian |
| Michael | Steven |
| Steven | Michael |
If the Canvas is unreachable or empty: Log "Slack Canvas unavailable — skipping team completions harvest" and continue to Step 3. Do not block the standup on a Canvas read failure.
Stepson Schedule Check — Determine if this is a stepson week. Check MEMORY.md Life Rhythm section and recent daily notes. Adjust energy expectations accordingly.
Health Data Pull — Pull sleep/health data via Rube HealthKit tools. If unavailable, note it and continue.
Energy Assessment — Compare to baselines:
| Metric | Baseline | Yellow | Red |
|---|---|---|---|
| Total Sleep | 7h | < 6h | < 5h |
| Deep Sleep | 45m | < 30m | < 20m |
| REM Sleep | 70m | < 50m | < 35m |
| Sleep Efficiency | 85% | < 75% | < 65% |
| Resting HR | 69 bpm | > 75 | > 80 |
Calendar Scan — Google Calendar for today + tomorrow via gcal MCP tools. Always display all times in Pacific Time (PT) — Dorian is based in PT. Convert any ET/UTC times from calendar events before presenting.
Gmail Scan (Full Inbox Intelligence) — Run five sub-queries:
Google Drive State — Read ACTIVE TASKS, BACKLOG, GOALS from Team Drive:
0AHxJ5CazJqxOUk9PVA1MjSabHDWYjjnp17DshdO9pnESLyvm6Gs1gOh0kIuygCAIMv18wGFPhc7CmsOfI-sI1cBpTwIPCFDZ4YTqkqn21dM-5AjX6R9Wpproxy_execute with supportsAllDrives=true via RUBE_REMOTE_WORKBENCH for ALL writes.Kanban State (READ + CANVAS RECONCILIATION) — Read ${VAULT}/Tasks/KANBAN_VIEW.md in full. This is the canonical task board — parse all items by column. Surface any P0 items still open, flag items that are overdue based on their #due/ tag. Surface all ## ⏳ Waiting On items — flag any waiting > 3 days for a nudge/follow-up recommendation. Carry forward all existing board items into the briefing — the Kanban is the source of truth for what's in-flight.
Canvas Reconciliation (uses Step 2 data): Compare the Completions Report from Step 2 against the Obsidian Kanban state. Flag discrepancies:
- [ ]) in Obsidian → "Canvas says done, Obsidian says open — confirm and sync?"#review/ in Obsidian → "Canvas has this in review, Obsidian doesn't — update Obsidian?"- [x]) that don't appear in In Review or Done on Canvas → "Completed in Obsidian but Canvas hasn't caught up"
Present all discrepancies in the briefing for Dorian's confirmation before writing anything back.Life-Rhythm Context — Apply stepson-week adjustments, energy model overlays:
Memory-Enhanced Briefing — Generate the brief, enhanced with:
### What the Team Got Done section from Step 2 BEFORE the health/calendar/inbox sections. The briefing should feel like it starts with momentum — what moved — before shifting to what's ahead.Updated briefing format (insert at top, before ### Your Body Says):
### What the Team Got Done
[Confirmed completions from Canvas Done column — "Phil completed X", "Steven completed Y"]
[Items pending review — "Michael's Z is waiting on Steven's review (1 day)"]
[Any newly checked items that need triage — "Phil checked off A in P1 — move to In Review?"]
[If no completions: "No new completions on the board since yesterday."]
### Sync Check
[Any Canvas↔Obsidian discrepancies from Step 9 reconciliation]
[Or: "Canvas and Obsidian are in sync."]
Priority Enforcement — Max 3 P0, Max 7 P1. Push back if exceeded.
Write Daily Note — Create ${VAULT}/Daily Journal/YYYY-MM-DD.md with today's date. Include energy level, top priorities, calendar summary, key decisions queue, and an embedded Kanban section ("Today's Board") showing P0 and P1 tasks as checkboxes pulled from the updated KANBAN_VIEW.md.
Update Kanban Board (WRITE BACK) — This is CRITICAL. After generating the briefing and confirming priorities with Dorian, reconcile and write back to ${VAULT}/Tasks/KANBAN_VIEW.md:
- [x] items exist in non-Done columns, show them to Dorian: "These are checked off — move to Done?" Only move to ## ✅ Done with confirmation. Set #status/d on moved items.## ⏳ Waiting On with #status/w and a "waiting on [person] since YYYY-MM-DD" suffix.## ✅ Done older than 2 days (see DONE COLUMN CLEANUP). Individual task files are preserved.${VAULT}/Tasks/ for any newly added items (following the Individual Task File Format).GOOGLEDRIVE_EDIT_FILE for all Kanban writes. proxy_execute("PATCH", /files/{id}, "googledrive", ...) returns HTTP 200 but silently discards the content — no new revision is created. Always use: run_composio_tool("GOOGLEDRIVE_EDIT_FILE", {"file_id": "...", "content": "...", "mime_type": "text/plain"}). To read fresh content use GOOGLEDRIVE_DOWNLOAD_FILE (not proxy_execute GET alt=media which may return stale cached data).Process and prioritize the backlog with Kanban board integration.
${VAULT}/GOALS.md for current objectives and priority framework. Use this to validate priority assignments — P0/P1 items should directly advance quarterly objectives.${VAULT}/Tasks/ directory following the Individual Task File Format (see OBSIDIAN TASK INTEGRATION section). Filename: kebab-case of the task title, max 50 chars, .md extension. Skip files that already exist (check first).${VAULT}/Tasks/KANBAN_VIEW.md, then add each new triaged item as a - [ ] checkbox line under the correct priority column header. Include all inline tags (#priority/pN #cat/category #status/n #due/YYYY-MM-DD). Do not duplicate items that already exist in the board. Write the complete updated file back.Retrospective with memory consolidation.
${VAULT}/Daily Journal/${VAULT}/_System/MEMORY.md with new patterns, preferences, project states${VAULT}/_System/MEMORY.mdGOOGLEDRIVE_DOWNLOAD_FILE, NOT a cached version). Then:
- [x] items found in non-Done columns to Dorian: "These items are checked off — should I move them to Done?"## ✅ Done, set #status/d.## ✅ Done column that are older than 2 days (see DONE COLUMN CLEANUP for date detection logic). Individual task files in ${VAULT}/Tasks/ are preserved as permanent records.- [x] and #status/d.run_composio_tool("GOOGLEDRIVE_EDIT_FILE", {"file_id": "...", "content": "...", "mime_type": "text/plain"}). NEVER use proxy_execute PATCH for file writes — it silently discards changes. Remember to preserve emoji headers (see KANBAN WRITE RULES).Designed for the scheduled nightly task. Reviews the day's work and extracts durable knowledge.
Note: In scheduled task VMs, the vault is NOT mounted locally. All reads/writes go through Google Drive API via RUBE_REMOTE_WORKBENCH.
Steps:
${VAULT}/Daily Journal/YYYY-MM-DD.md). Check the ## Extraction Status section at the bottom. If it reads Extracted: yes or contains an extraction timestamp, log "Extraction already completed for today — skipping" and exit immediately without modifying any files. Only proceed if Extracted: no, or the daily note doesn't exist, or there is no Extraction Status section. This prevents duplicate extractions from double-fires or manual extractions done during a Cowork session.${VAULT}/_System/MEMORY.md{
"id": "fact-YYYYMMDD-NNN",
"fact": "Description of the durable fact",
"category": "preference|project|relationship|security|decision|pattern",
"timestamp": "ISO-8601",
"source": "conversation|email|calendar|drive|health",
"status": "active",
"relatedEntities": ["entity-names"],
"lastAccessed": "ISO-8601",
"accessCount": 1
}
lastAccessed and accessCount for facts referenced todaysupersededBy pointer${VAULT}/Projects/[Project]/11-Knowledge/ for project-specific knowledge${VAULT}/_Shared Knowledge/ for cross-cutting knowledge${VAULT}/People/[Name].md for new contacts## Extraction Status to Extracted: yes — YYYY-MM-DD HH:MM PTQuick retrieval mode for specific context.
${VAULT}/_System/MEMORY.md sections (grep for keywords)${VAULT}/Daily Journal/ — recent daily notes (last 30 days)${VAULT}/Projects/ and ${VAULT}/_Shared Knowledge/ — vault knowledgeLocation: ${VAULT}/_System/MEMORY.md
# Memory — Dorian Cougias
> Last updated: YYYY-MM-DD HH:MM UTC
> Facts: N active, M superseded
## Shorthand & Decoder Ring
> Hot cache — target ~30 people, ~30 terms. Covers 90% of daily decoding.
| Nickname | Resolves To | Context |
|----------|-------------|---------|
| [nickname] | [Full Name], [Role] | [Prefers Slack, direct style] |
| Term | Meaning | Context |
|------|---------|---------|
| [acronym] | [Full expansion] | [When/where used] |
| Codename | Project |
|----------|---------|
| [codename] | [Full project name] |
## Who Dorian Is
[Persistent identity facts — role, company, working style]
## Preferences & Patterns
[Communication preferences, scheduling patterns, tool preferences]
## Active Projects
[Current project states with last-known status]
## Relationships & Contacts
[Key people, their roles, interaction patterns]
## Security & Access
[Systems, credentials patterns (NEVER actual secrets), access levels]
## Decisions Log
[Significant decisions with rationale — helps maintain consistency]
## Life Rhythm
[Stepson schedule, energy patterns, health baselines]
## Cold Storage
[Facts older than 30 days without access — kept but not surfaced in briefings]
${VAULT}/Daily Journal/YYYY-MM-DD.md)---
title: "YYYY-MM-DD — Day of Week"
date: YYYY-MM-DD
type: standup
tags: [daily, standup]
participants: [dorian]
status: active
---
# YYYY-MM-DD — Day of Week
## Energy
- Sleep: Xh (deep: Xm, REM: Xm, efficiency: X%)
- Assessment: [green/yellow/red]
- Stepson week: [yes/no]
## Today's Board
### 🔥 P0 — Do Today (Max 3)
- [ ] Task one #priority/p0 #cat/technical #status/n
- [ ] Task two #priority/p0 #cat/outreach #status/n
### ⭐ P1 — This Week
- [ ] Task three #priority/p1 #cat/writing #status/s
- [ ] Task four #priority/p1 #cat/admin #status/n
### ⏳ Waiting On
- [ ] Task five — waiting on [person] since YYYY-MM-DD #priority/p1 #status/w
## Calendar
- [HH:MM] Meeting/event description
- [HH:MM] Meeting/event description
## Inbox Intelligence
- [Priority flag] Email summary → action needed
- [Priority flag] Email summary → FYI only
## Decisions Made
- [Decision with rationale]
## Facts Extracted
- [New durable facts discovered today]
## Open Threads
- [Items needing follow-up tomorrow]
## Extraction Status
- Extracted: no
Note: The "Today's Board" section is a snapshot pulled from KANBAN_VIEW.md during standup — it shows P0 and P1 tasks as checkboxes compatible with the Obsidian Tasks plugin. As Dorian checks them off during the day, the completion flows back to KANBAN_VIEW.md during the next triage or review.
Shared task persistence on Google Drive Team Drive:
0AHxJ5CazJqxOUk9PVA1MjSabHDWYjjnp17DshdO9pnESLyvm6Gs1gOh0kIuygCAIMv18wGFPhc7CmsOfI-sI1cBpTwIPCFDZ4YTqkqn21dM-5AjX6R9WpStandard Composio Google Drive tools return 404 for Team Drive writes. You MUST use proxy_execute via RUBE_REMOTE_WORKBENCH with relative paths (no /drive/v3 prefix).
Update existing file content:
result, error = proxy_execute(
"PATCH",
f"/files/{file_id}",
"googledrive",
query_params={"uploadType": "media", "supportsAllDrives": "true"},
body=content,
headers={"Content-Type": "text/markdown"}
)
Read file content:
result, error = proxy_execute(
"GET",
f"/files/{file_id}",
"googledrive",
query_params={"alt": "media", "supportsAllDrives": "true"}
)
Create new file in Team Drive:
# Step 1: Create metadata
result, error = proxy_execute(
"POST",
"/files",
"googledrive",
query_params={"supportsAllDrives": "true"},
body={
"name": "filename",
"parents": ["1MjSabHDWYjjnp17DshdO9pnESLyvm6Gs"],
"driveId": "0AHxJ5CazJqxOUk9PVA",
"mimeType": "text/plain"
}
)
# Step 2: Upload content
file_id = result["data"]["id"]
result, error = proxy_execute(
"PATCH",
f"/files/{file_id}",
"googledrive",
query_params={"uploadType": "media", "supportsAllDrives": "true"},
body=content,
headers={"Content-Type": "text/markdown"}
)
CRITICAL — Google Drive .md files: Standard google_drive_fetch cannot read .md files. ALL reads/writes require proxy_execute via Rube/Composio with supportsAllDrives=true.
Dual-persistence model: Google Drive is the canonical task store, the Obsidian vault provides a local Kanban board + individual task files for daily visibility.
${VAULT}/
├── Tasks/
│ ├── KANBAN_VIEW.md ← Kanban board (Obsidian Kanban plugin)
│ ├── DASHBOARD.md ← Read-only (Dataview auto-queries, never edit)
│ ├── task-name-here.md ← One file per task
│ └── ...
└── GOALS.md ← Goals, themes, priorities
---
kanban-plugin: board
---
## 📥 Backlog
## 🔥 P0 - Today (Max 3)
- [ ] Task title #priority/p0 #cat/technical #status/n #due/2026-03-08
## ⭐ P1 - This Week (Max 7)
- [ ] Task title #priority/p1 #cat/outreach #status/n #due/2026-03-13
## 📅 P2 - Scheduled
- [ ] Task title #priority/p2 #cat/admin #status/n #due/2026-03-20
## 💭 P3 - Someday
## ⏳ Waiting On
- [ ] Task title — waiting on [person/event] since YYYY-MM-DD #priority/p1 #cat/outreach #status/w #due/2026-03-15
## ✅ Done
- [x] Completed task #priority/p1 #cat/technical #status/d
%% kanban:settings
{"kanban-plugin":"board"}
%%
Tag reference:
#priority/p0 | #priority/p1 | #priority/p2 | #priority/p3#cat/admin | #cat/technical | #cat/outreach | #cat/writing | #cat/content | #cat/research | #cat/personal | #cat/other#status/n (not started) | #status/s (started) | #status/w (waiting) | #status/b (blocked) | #status/d (done)#due/YYYY-MM-DD#waiting/person-name (optional — tracks WHO you're waiting on)Filename: kebab-case, max 50 chars, .md extension.
---
title: Human-readable task title
category: technical
priority: P1
status: n
created_date: 2026-03-08
due_date: 2026-03-13
estimated_time: 30
waiting_on:
waiting_since:
resource_refs: []
---
# Human-readable task title
## Quick View (Kanban)
- [ ] Human-readable task title #priority/p1 #cat/technical #status/n #due/2026-03-13
## Context
Tie to goals from GOALS.md. Cite the specific objective this supports.
## Next Actions
- [ ] First concrete step
- [ ] Second concrete step
## Progress Log
- YYYY-MM-DD: Task created from [source].
Every time tasks are created or updated, you MUST do BOTH:
${VAULT}/Tasks/${VAULT}/Tasks/KANBAN_VIEW.md — add/move/check items under the correct columnTask completion workflow:
## ✅ Done, change - [ ] to - [x], change status tag to #status/dstatus: n → status: d, check off completed Next ActionsWaiting On workflow:
## ⏳ Waiting On in KANBAN_VIEW.md#status/w, add #waiting/person-namestatus → w, add waiting_on and waiting_since#status/w → #status/sDASHBOARD.md is read-only — Dataview queries auto-update. Never write to it.
| Metric | Baseline | Yellow | Red |
|---|---|---|---|
| Total Sleep | 7h | < 6h | < 5h |
| Deep Sleep | 45m | < 30m | < 20m |
| REM Sleep | 70m | < 50m | < 35m |
| Sleep Efficiency | 85% | < 75% | < 65% |
| Resting HR | 69 bpm | > 75 | > 80 |
All work maps to one of these five pillars:
Pillar attention is tracked weekly. Flag imbalance if any pillar gets < 10% or > 40% of attention.
Hard limits — enforced by the system, not suggestions:
Pure time-based decay is too blunt. Use both signals:
Decision matrix:
| accessCount | Last Accessed | Action |
|---|---|---|
| High (5+) | Recent (< 14 days) | Keep hot — active knowledge |
| High (5+) | Stale (14-30 days) | Keep warm — still valuable, monitor |
| High (5+) | Old (30+ days) | Demote to cold — was important, may return |
| Low (1-2) | Recent (< 14 days) | Keep warm — new, give it time |
| Low (1-2) | Stale (14-30 days) | Demote to cold — didn't stick |
| Low (1-2) | Old (30+ days) | Cold storage — archive candidate |
During weekly review, also apply to Shorthand & Decoder Ring:
Resurrection: If a cold-storage fact is accessed again, immediately promote it back to the appropriate active section and reset its decay clock.
Behavioral pattern — always active, not just during formal modes.
When processing any conversation, email, meeting summary, or brain dump, watch for implicit task commitments and surface them:
Extract when you detect:
Extraction protocol:
${VAULT}/Tasks/ + update KANBAN_VIEW.md + update Google DrivePriority inference:
The ## ✅ Done column on the Kanban board is a short-term visibility window, not a permanent archive. Items older than 2 days get removed from the board to keep it clean. The individual task files in ${VAULT}/Tasks/ are the permanent record and are never deleted by this process.
When it runs: During Mode 4 (Nightly Extraction), Mode 1 (Morning Standup), and Mode 3 (Weekly Review).
Procedure:
Tasks/KANBAN_VIEW.md fresh (use GOOGLEDRIVE_DOWNLOAD_FILE, not cached content).## ✅ Done column only. For each - [x] item, determine its completion date using this priority order:
a. #due/YYYY-MM-DD tag — if present, use that date.
b. Inline date in card text — look for patterns like "verified fixed YYYY-MM-DD", "fixed YYYY-MM-DD", "since YYYY-MM-DD", "completed YYYY-MM-DD", or any bare YYYY-MM-DD in the card text.
c. Daily note cross-reference — scan the last 7 daily notes for when the item first appeared under a Done heading or was marked #status/d.
d. If no date can be determined, leave the item in place (err on the side of keeping).#status/w, #status/n, #status/s, or #status/b → change to #status/d- [ ] → change to - [x]GOOGLEDRIVE_EDIT_FILE. Remember emoji-safe writes (see KANBAN WRITE RULES).This plugin works with Claude's scheduled task system:
${VAULT}/_System/backups/ for most recent backup${VAULT}/Daily Journal/ — they contain extracted facts${VAULT}/_System/MEMORY.md + last 3 daily notes as standard bootstrapnpx claudepluginhub moxywolfllc/moxywolf-plugins --plugin obsidian-updateGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.