From c22e0a7809480cc3e3fb0f7db92d673896be6d6e Mon Sep 17 00:00:00 2001 From: Zhongwei Li Date: Sat, 29 Nov 2025 18:19:46 +0800 Subject: [PATCH] Initial commit --- .claude-plugin/plugin.json | 13 + .claude/commands/pkm.md | 47 ++++ .claude/commands/pkm:daily-review.md | 60 ++++ .claude/commands/pkm:daily-setup.md | 45 +++ .claude/commands/pkm:gcal-add.md | 148 ++++++++++ .claude/commands/pkm:gcal-block.md | 219 +++++++++++++++ .claude/commands/pkm:gcal-complete.md | 240 ++++++++++++++++ .claude/commands/pkm:gcal-today.md | 82 ++++++ .claude/commands/pkm:monthly-review.md | 69 +++++ .claude/commands/pkm:weekly-review.md | 67 +++++ README.md | 3 + SKILL.md | 349 ++++++++++++++++++++++++ plugin.lock.json | 101 +++++++ skills/integration/gcalcli/SKILL.md | 337 +++++++++++++++++++++++ skills/temporal/daily-review/SKILL.md | 111 ++++++++ skills/temporal/daily-setup/SKILL.md | 100 +++++++ skills/temporal/monthly-review/SKILL.md | 137 ++++++++++ skills/temporal/weekly-review/SKILL.md | 129 +++++++++ 18 files changed, 2257 insertions(+) create mode 100644 .claude-plugin/plugin.json create mode 100644 .claude/commands/pkm.md create mode 100644 .claude/commands/pkm:daily-review.md create mode 100644 .claude/commands/pkm:daily-setup.md create mode 100644 .claude/commands/pkm:gcal-add.md create mode 100644 .claude/commands/pkm:gcal-block.md create mode 100644 .claude/commands/pkm:gcal-complete.md create mode 100644 .claude/commands/pkm:gcal-today.md create mode 100644 .claude/commands/pkm:monthly-review.md create mode 100644 .claude/commands/pkm:weekly-review.md create mode 100644 README.md create mode 100644 SKILL.md create mode 100644 plugin.lock.json create mode 100644 skills/integration/gcalcli/SKILL.md create mode 100644 skills/temporal/daily-review/SKILL.md create mode 100644 skills/temporal/daily-setup/SKILL.md create mode 100644 skills/temporal/monthly-review/SKILL.md create mode 100644 skills/temporal/weekly-review/SKILL.md diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..44d2079 --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,13 @@ +{ + "name": "pkm-framework", + "description": "Comprehensive Personal Knowledge Management framework for Obsidian with temporal reviews (daily, weekly, monthly), smart capture, note linking, and analytics", + "version": "1.0.0", + "author": { + "name": "devkade", + "email": "zhongweili@tubi.tv" + }, + "skills": [ + "./skills", + "./" + ] +} \ No newline at end of file diff --git a/.claude/commands/pkm.md b/.claude/commands/pkm.md new file mode 100644 index 0000000..5df5a6e --- /dev/null +++ b/.claude/commands/pkm.md @@ -0,0 +1,47 @@ +You are the PKM Framework assistant for Personal Knowledge Management in Obsidian. + +## Available Commands + +### πŸ—“οΈ Temporal Reviews + +**Daily Workflow:** +- `/pkm:daily-setup` - Start your day (morning routine) +- `/pkm:daily-review` - End your day (evening reflection) + +**Weekly & Monthly:** +- `/pkm:weekly-review` - Weekly summary and planning +- `/pkm:monthly-review` - Monthly overview and goals + +### πŸ“ Capture (Coming Soon) +- `/pkm:quick-capture` - Quick note capture +- `/pkm:meeting-notes` - Create meeting note + +### πŸ”— Linking (Coming Soon) +- `/pkm:note-linking` - Smart note linking +- `/pkm:backlink-analysis` - Analyze connections + +### πŸ“‚ Organization (Coming Soon) +- `/pkm:project-notes` - Project management +- `/pkm:zettelkasten` - Create atomic note +- `/pkm:periodic-cleanup` - Archive old notes + +### πŸ“Š Analytics (Coming Soon) +- `/pkm:stats` - PKM system statistics + +## Quick Start + +**Morning:** `/pkm:daily-setup` +**Evening:** `/pkm:daily-review` +**Friday/Sunday:** `/pkm:weekly-review` +**End of month:** `/pkm:monthly-review` + +## Configuration + +- **Vault**: `~/Obsidian/Altellus` +- **Daily notes**: `20_Notes/Journal/YYYY/Mnn/YYYY-MM-DD.md` +- **Weekly notes**: `20_Notes/Journal/YYYY/Mnn/YYYY-Www.md` +- **Monthly notes**: `20_Notes/Journal/YYYY/Mnn/YYYY-Mmm.md` + +## What would you like to do? + +Please select a command above or describe what you'd like to accomplish with your PKM system. diff --git a/.claude/commands/pkm:daily-review.md b/.claude/commands/pkm:daily-review.md new file mode 100644 index 0000000..e7feaf9 --- /dev/null +++ b/.claude/commands/pkm:daily-review.md @@ -0,0 +1,60 @@ +You are helping complete the Daily Review section in an Obsidian daily note. + +## Context +- Daily notes location: `~/Obsidian/Altellus/20_Notes/Journal/YYYY/Mnn/YYYY-MM-DD.md` +- Date logic: If current time is before 04:00 AM, use previous day's date for the review + - Example: 2025-11-19 02:30 AM β†’ review 2025-11-18 + - Example: 2025-11-19 05:00 AM β†’ review 2025-11-19 +- TaskNotes data may be in YAML frontmatter (pomodoros field) + +## Task +Fill in the **πŸŒ™ Daily Review** section of today's daily note. + +### Steps: + +1. **Determine target date** + - Check current time + - If before 04:00 AM, use previous day's date + - Otherwise, use today's date + +2. **Check Google Calendar (use pkm:gcal-today command)** + - Fetch events for the target date from Google Calendar + - TaskNotes already has ICS subscriptions configured + - Extract scheduled meetings, appointments, and time blocks + +3. **Read target date's daily note (TaskNotes format)** + - Extract completed tasks: `- [x] [[Task Name]] βœ… YYYY-MM-DD` + - Check YAML frontmatter `pomodoros` array for time tracking + - Review content added during the day + +4. **Fill "였늘 μ™„λ£Œ" section (TaskNotes format)** + - List all completed tasks: `- [x] [[Task Name]] βœ… YYYY-MM-DD` + - Search in "였늘 μ΄μ–΄μ„œ ν•  일" and Notes sections + - If no tasks completed, note what was worked on + +5. **Fill "μ‹œκ°„ μ‚¬μš©" section (TaskNotes Pomodoro format)** + - Count total pomodoros from YAML `pomodoros` array length + - Group by taskPath and display as: `Task Name - πŸ…πŸ…πŸ…: 3` + - Show total with tomato emojis: `총 πŸ…πŸ…πŸ…πŸ…πŸ…πŸ…: 6 pomodoros` + - List calendar events from Google Calendar: + - `- HH:MM-HH:MM: Event Title` + +6. **Fill "μΈμ‚¬μ΄νŠΈ" section** + - Extract key learnings, discoveries, or patterns from today's notes + - What worked well? What didn't? + - Any blockers or important realizations? + - Consider how calendar events aligned with planned work + +7. **Fill "내일 μ œμ•ˆ" section (TaskNotes format)** + - Based on incomplete tasks and insights, suggest priorities for tomorrow + - Format as `- [ ] [[Task Name]]` (TaskNotes wikilink format) + - Connect to blockers or unfinished work + - Prioritize incomplete tasks from today + +### Output Format +Provide only the "πŸŒ™ Daily Review" section content to update in today's note. + +**Important**: +- DO NOT modify the "## Retro" section (user fills this manually) +- DO NOT modify other sections +- Preserve all frontmatter and existing content diff --git a/.claude/commands/pkm:daily-setup.md b/.claude/commands/pkm:daily-setup.md new file mode 100644 index 0000000..5f0e14f --- /dev/null +++ b/.claude/commands/pkm:daily-setup.md @@ -0,0 +1,45 @@ +You are helping manage Daily Notes in an Obsidian vault with Periodic Notes. + +## Context +- Daily notes location: `~/Obsidian/Altellus/20_Notes/Journal/YYYY/Mnn/YYYY-MM-DD.md` +- Template: `~/Obsidian/Altellus/90_Templates/Temporal/Daily.md` +- Today's date: Use current date to determine the file path + +## Task +Generate or update the **πŸŒ… Daily Notes** section of today's daily note. + +### Steps: + +1. **Check if today's daily note exists** + - Path format: `~/Obsidian/Altellus/20_Notes/Journal/2025/M11/2025-11-18.md` (example) + - If it doesn't exist, create it from the template + +2. **Fill "μ–΄μ œ μš”μ•½" section** + - Read yesterday's daily note (`~/Obsidian/Altellus/20_Notes/Journal/YYYY/Mnn/YYYY-MM-DD.md`) + - Summarize: completed tasks, main activities, key insights + - List any incomplete tasks from yesterday + - Update the wikilink to yesterday's date: `[[YYYY-MM-DD]]` + +3. **Handle "였늘 μ΄μ–΄μ„œ ν•  일" section (TaskNotes format)** + - Extract incomplete tasks from yesterday: `- [ ] [[Task Name]]` + - Exclude completed tasks: `- [x] [[Task Name]] βœ… YYYY-MM-DD` + - **Update scheduled date for overdue tasks:** + - For each incomplete task from yesterday, read the task file from `00_Inbox/Tasks/` + - If the task's `scheduled` date in frontmatter is before today, update it to today's date (YYYY-MM-DD) + - This ensures overdue tasks are rescheduled to today + - If user provides new tasks, add as `- [ ] [[Task Name]]` wikilinks + - Tasks are individual markdown files in `00_Inbox/Tasks/` folder + +4. **Fill "κ΄€λ ¨ λ…ΈνŠΈ" section automatically** + - Extract wikilinks from yesterday's Notes section + - Extract task paths from yesterday's YAML `pomodoros` array (taskPath field) + - Remove duplicates and list as `- [[Note Name]]` + +5. **Leave empty sections as-is** + - κ°μ‚¬λ…ΈνŠΈ (gratitude) - user fills this + - 였늘의 포컀슀 (today's focus) - user defines + +### Output Format +Provide the complete content to write/update in today's daily note, preserving all frontmatter and structure. + +**Important**: Only modify the "πŸŒ… Daily Notes" section. Leave "## Notes", "## Retro", and "πŸŒ™ Daily Review" sections untouched. diff --git a/.claude/commands/pkm:gcal-add.md b/.claude/commands/pkm:gcal-add.md new file mode 100644 index 0000000..cca5562 --- /dev/null +++ b/.claude/commands/pkm:gcal-add.md @@ -0,0 +1,148 @@ +You are helping add events to Google Calendar using gcalcli. + +## Context +- Calendar: 00_Schedule (main calendar only) +- Tool: gcalcli CLI +- Authentication: OAuth credentials at `~/.gcalcli_oauth` + +## Task +Add a new calendar event to 00_Schedule using gcalcli. + +### Input Modes + +**Mode 1: Interactive (no arguments)** +- Ask user for event details +- Collect: title, date, time, duration + +**Mode 2: Quick add (natural language)** +- Parse natural language input +- Example: "Meeting with team tomorrow 2pm" +- Use gcalcli quick command + +**Mode 3: Structured (specific parameters)** +- Accept: title, when, duration +- Use gcalcli add command + +### Steps: + +#### Mode 1: Interactive + +1. **Prompt for event details:** + - Event title: "What is the event?" + - Date: "When? (YYYY-MM-DD or 'today', 'tomorrow')" + - Time: "What time? (HH:MM)" + - Duration: "How long? (minutes, default 60)" + +2. **Execute gcalcli add:** + ```bash + gcalcli --calendar "00_Schedule" add \ + --title "Event Title" \ + --when "YYYY-MM-DD HH:MM" \ + --duration MINUTES \ + --reminder 10 + ``` + +3. **Confirm creation:** + - Display: "βœ… Event created: [Title] on [Date] at [Time]" + +#### Mode 2: Quick Add + +1. **Parse natural language input:** + - User provides: "Meeting tomorrow 2pm" + +2. **Execute gcalcli quick:** + ```bash + gcalcli --calendar "00_Schedule" quick "Meeting tomorrow 2pm" + ``` + +3. **Confirm creation:** + - Display gcalcli confirmation message + +#### Mode 3: Structured + +1. **Accept parameters:** + - title: Event title + - when: YYYY-MM-DD HH:MM + - duration: minutes (default 60) + +2. **Execute gcalcli add:** + ```bash + gcalcli --calendar "00_Schedule" add \ + --title "${title}" \ + --when "${when}" \ + --duration ${duration} + ``` + +### Output Format + +```markdown +βœ… **Event Created:** + +- **Title:** Deep Work Session +- **Date:** 2025-11-19 +- **Time:** 14:00-16:00 (2 hours) +- **Calendar:** 00_Schedule + +View: gcalcli agenda today +``` + +### Examples + +**Interactive:** +```bash +/pkm:gcal-add +> What is the event? Deep Work +> When? tomorrow +> What time? 14:00 +> How long? 120 +βœ… Event created: Deep Work on 2025-11-20 at 14:00 +``` + +**Quick add:** +```bash +/pkm:gcal-add "Team meeting Friday 3pm" +βœ… Event created via quick add +``` + +**Structured:** +```bash +/pkm:gcal-add --title "Code Review" --when "2025-11-19 16:00" --duration 60 +βœ… Event created: Code Review +``` + +### Integration with TaskNotes + +**Create calendar event from task:** +```bash +# When user wants to time-block a task +/pkm:gcal-add "[[Task Name]]" tomorrow 10:00 120 +``` + +This creates a 2-hour focus block for the task. + +### Error Handling + +**If gcalcli fails:** +- Show error message +- Check: authentication, calendar name, date format + +**If duplicate event:** +- Warn user: "Similar event exists at this time" +- Confirm: "Add anyway?" + +**If time conflict:** +- Show: "Conflict with existing event: [Event]" +- Suggest: Alternative time slots + +### Default Settings + +- **Default duration:** 60 minutes +- **Default reminder:** 10 minutes before +- **Calendar:** 00_Schedule (always) + +### Notes + +- Events sync across all Google Calendar clients +- Supports natural language (tomorrow, next Monday, etc.) +- Can create recurring events with --recurrence flag +- Time zones handled by Google Calendar settings diff --git a/.claude/commands/pkm:gcal-block.md b/.claude/commands/pkm:gcal-block.md new file mode 100644 index 0000000..9a02de0 --- /dev/null +++ b/.claude/commands/pkm:gcal-block.md @@ -0,0 +1,219 @@ +You are helping create time blocks in Google Calendar from TaskNotes tasks using gcalcli. + +## Context +- Calendar: 00_Schedule (main calendar only) +- Tool: gcalcli CLI +- TaskNotes: Tasks in `~/Obsidian/Altellus/00_Inbox/Tasks/` +- Daily notes: `~/Obsidian/Altellus/20_Notes/Journal/YYYY/Mnn/YYYY-MM-DD.md` + +## Task +Create calendar time blocks for TaskNotes tasks to facilitate focus time and task completion. + +### Use Cases + +**1. Manual time block for specific task** +```bash +/pkm:gcal-block "[[SWSP25 Problem Definition]]" 2025-11-19 14:00 120 +``` +Creates 2-hour focus block for the task. + +**2. Auto-schedule incomplete tasks** +```bash +/pkm:gcal-block --auto +``` +Automatically schedules incomplete tasks from today's daily note. + +**3. Weekly planning** +```bash +/pkm:gcal-block --week +``` +Creates time blocks for all tasks planned this week. + +### Steps: + +#### Manual Time Block + +1. **Parse input:** + - Task name: `[[Task Name]]` (TaskNotes wikilink) + - Date: YYYY-MM-DD + - Time: HH:MM + - Duration: minutes (default 90) + +2. **Extract task details:** + - Read task file from `00_Inbox/Tasks/Task Name.md` + - Get task title, priority, time estimate + +3. **Create calendar event:** + ```bash + gcalcli --calendar "00_Schedule" add \ + --title "🎯 [Task Title]" \ + --when "YYYY-MM-DD HH:MM" \ + --duration MINUTES \ + --description "TaskNotes: [[Task Name]]" + ``` + +4. **Confirm:** + - Display: "βœ… Time block created for [[Task Name]]" + +#### Auto-Schedule + +1. **Read today's daily note:** + - Extract "였늘 μ΄μ–΄μ„œ ν•  일" section + - Find incomplete tasks: `- [ ] [[Task Name]]` + +2. **Check calendar availability:** + - Fetch today's events with `/pkm:gcal-today` + - Find free time slots (gaps between events) + +3. **Prioritize tasks:** + - High priority first (if specified in TaskNotes) + - Larger time estimates first + - Morning for deep work, afternoon for lighter tasks + +4. **Create time blocks:** + - For each task, find suitable time slot + - Create gcalcli event with task reference + - Default duration: 90 minutes (pomodoro-friendly) + +5. **Summary:** + ```markdown + βœ… **Auto-scheduled 3 tasks:** + + - 09:00-10:30: [[SWSP25 Problem Definition]] + - 11:00-12:00: [[Long horizon action model paper search]] + - 14:00-15:30: [[Claude λͺ…λ Ή ν…ŒμŠ€νŠΈ 및 디버깅]] + + Total focus time: 4 hours + ``` + +#### Weekly Planning + +1. **Read this week's tasks:** + - From weekly note or aggregated daily notes + - Extract all incomplete tasks: `- [ ] [[Task Name]]` + +2. **Distribute across week:** + - Monday-Friday scheduling + - Balance workload (max 4 hours deep work/day) + - Respect existing calendar events + +3. **Create blocks:** + - Spread tasks across available time slots + - Group similar tasks (context switching reduction) + +### Output Format + +**Single task:** +```markdown +βœ… **Time Block Created:** + +- **Task:** [[SWSP25 Problem Definition]] +- **Time:** 2025-11-19 14:00-16:00 (2 hours) +- **Calendar:** 00_Schedule + +Focus time secured! 🎯 +``` + +**Auto-schedule:** +```markdown +βœ… **Auto-scheduled 4 tasks:** + +**Morning (Deep Work):** +- 09:00-10:30: [[SWSP25 Problem Definition]] πŸ…πŸ…πŸ… +- 11:00-12:30: [[ELEGNT λ…Όλ¬Έ 리뷰]] πŸ…πŸ…πŸ… + +**Afternoon:** +- 14:00-15:00: [[Documentation μ—…λ°μ΄νŠΈ]] πŸ…πŸ… +- 15:30-16:30: [[Code Review]] πŸ…πŸ… + +**Total:** 5.5 hours focus time +**Available:** 09:00-12:30, 14:00-16:30 +``` + +### Smart Scheduling Logic + +**1. Respect existing events:** +- Don't overlap with calendar events +- Leave buffer time (15 min) between blocks + +**2. Energy optimization:** +- 09:00-12:00: Deep work (complex tasks) +- 14:00-16:00: Medium tasks +- 16:00-18:00: Light tasks (reviews, admin) + +**3. Pomodoro-friendly durations:** +- 25 min = πŸ… +- 50 min = πŸ…πŸ… +- 90 min = πŸ…πŸ…πŸ… (ideal) +- 120 min = πŸ…πŸ…πŸ…πŸ… + +**4. Task batching:** +- Group similar tasks (reading papers, coding, writing) +- Reduce context switching + +### Integration with TaskNotes + +**Time estimate from task:** +```yaml +--- +timeEstimate: 120 # minutes +priority: high +--- +``` + +Use task's `timeEstimate` for block duration. + +**Update task after scheduling:** +```yaml +--- +scheduled: 2025-11-19 +calendarBlock: true +--- +``` + +### Error Handling + +**If no free time:** +- Message: "No available time slots today. Calendar is full." +- Suggest: Tomorrow or specific time + +**If task not found:** +- Message: "Task [[Task Name]] not found in 00_Inbox/Tasks/" +- Verify: Task name spelling + +**If calendar conflict:** +- Message: "Conflict at 14:00 with: [Existing Event]" +- Suggest: Next available slot + +### Advanced Features + +**1. Focus mode:** +```bash +/pkm:gcal-block --focus 4 +``` +Create 4-hour protected deep work block (no meetings). + +**2. Recurring blocks:** +```bash +/pkm:gcal-block "[[Weekly Review]]" --recur weekly-friday-16:00 +``` + +**3. Flexible timing:** +```bash +/pkm:gcal-block --auto --prefer-morning +``` +Schedule tasks in morning hours only. + +### Defaults + +- **Duration:** 90 minutes (πŸ…πŸ…πŸ…) +- **Buffer:** 15 minutes between blocks +- **Deep work hours:** 09:00-12:00 +- **Event prefix:** 🎯 (focus block indicator) + +### Notes + +- Time blocks appear in Google Calendar immediately +- Sync across all devices +- Can reschedule by dragging in Google Calendar +- Task completion doesn't auto-delete block (manual cleanup) diff --git a/.claude/commands/pkm:gcal-complete.md b/.claude/commands/pkm:gcal-complete.md new file mode 100644 index 0000000..c3803ab --- /dev/null +++ b/.claude/commands/pkm:gcal-complete.md @@ -0,0 +1,240 @@ +You are helping mark task completion in Google Calendar using gcalcli. + +## Context +- Calendar: 00_Schedule (main calendar only) +- Tool: gcalcli CLI +- TaskNotes: Tasks complete with `- [x] [[Task Name]] βœ… YYYY-MM-DD` +- Integration: Sync task completion status to calendar + +## Task +When a TaskNotes task is marked complete, update the corresponding calendar event to reflect completion. + +### Use Cases + +**1. Mark single task complete:** +```bash +/pkm:gcal-complete "[[SWSP25 Problem Definition]]" +``` +Updates calendar event to show task is done. + +**2. Auto-sync completions:** +```bash +/pkm:gcal-complete --sync +``` +Syncs all completed tasks from today's daily note to calendar. + +**3. Daily review integration:** +Called automatically by `/pkm:daily-review` to update calendar after review. + +### Steps: + +#### Single Task Completion + +1. **Parse task name:** + - Input: `[[Task Name]]` + - Extract task name from wikilink + +2. **Find calendar event:** + ```bash + gcalcli --calendar "00_Schedule" \ + search "Task Name" + ``` + Look for events with task name in title or description. + +3. **Update event:** + ```bash + # Option 1: Prepend βœ… to title + gcalcli --calendar "00_Schedule" \ + edit "EVENT_ID" \ + --title "βœ… Task Name" + + # Option 2: Add completion note to description + gcalcli --calendar "00_Schedule" \ + edit "EVENT_ID" \ + --description "Completed: YYYY-MM-DD HH:MM" + ``` + +4. **Confirm:** + ```markdown + βœ… Calendar updated: [[Task Name]] marked complete + ``` + +#### Auto-Sync Today's Completions + +1. **Read today's daily note:** + - Path: `~/Obsidian/Altellus/20_Notes/Journal/YYYY/Mnn/YYYY-MM-DD.md` + - Extract "였늘 μ™„λ£Œ" section + - Find: `- [x] [[Task Name]] βœ… YYYY-MM-DD` + +2. **For each completed task:** + - Search calendar for matching event + - If found, update with βœ… marker + - If not found, skip (not time-blocked) + +3. **Summary:** + ```markdown + βœ… **Calendar sync complete:** + + Updated events: + - βœ… [[Task: Daily ν…œν”Œλ¦Ώ ν™•μ •]] + - βœ… [[ELEGNT λ…Όλ¬Έ 리뷰]] + + Not in calendar: + - [[Quick email reply]] (not time-blocked) + + Total synced: 2/3 tasks + ``` + +### Output Format + +**Single task:** +```markdown +βœ… **Calendar Event Updated:** + +- **Task:** [[SWSP25 Problem Definition]] +- **Event:** "🎯 SWSP25 Problem Definition" β†’ "βœ… SWSP25 Problem Definition" +- **Completed:** 2025-11-19 15:45 + +Calendar reflects task completion βœ… +``` + +**Sync summary:** +```markdown +βœ… **Daily Completion Sync:** + +**Updated (3):** +- βœ… [[Task: Daily ν…œν”Œλ¦Ώ ν™•μ •]] (09:00-10:30) +- βœ… [[Task: Weekly Summary μž¬μž‘μ„±]] (11:00-12:00) +- βœ… [[ELEGNT λ…Όλ¬Έ 리뷰]] (15:00-17:00) + +**Not time-blocked (2):** +- βœ… [[Quick email reply]] +- βœ… [[Update README]] + +**Calendar sync:** 3/5 tasks +``` + +### Update Strategies + +**Strategy 1: Title Update (Recommended)** +- Before: `🎯 SWSP25 Problem Definition` +- After: `βœ… SWSP25 Problem Definition` +- Visual: Easy to spot in calendar +- Preserves: Original event structure + +**Strategy 2: Color Change** +- Change event color to green (completed) +- Requires: gcalcli color support +- Visual: Color-coded completion + +**Strategy 3: Description Note** +- Add to description: `Completed: 2025-11-19 15:45` +- Preserves: Title unchanged +- Detail: Exact completion timestamp + +**Default: Strategy 1 (Title Update)** + +### Integration with Daily Review + +`/pkm:daily-review` automatically calls this command: + +```bash +# Daily review workflow: +1. Extract completed tasks +2. Update calendar events: /pkm:gcal-complete --sync +3. Generate review section +``` + +User sees: +```markdown +### 였늘 μ™„λ£Œ +- [x] [[Task: Daily ν…œν”Œλ¦Ώ ν™•μ •]] βœ… 2025-11-18 + _Calendar updated_ βœ… +``` + +### Smart Matching + +**Find events by:** +1. Exact title match: "🎯 Task Name" = "Task Name" +2. Description match: Contains "TaskNotes: [[Task Name]]" +3. Fuzzy match: Similar title (85%+ match) +4. Time range: Within today's events only + +**Disambiguation:** +If multiple matches: +- Prefer: Today's events over future +- Prefer: Exact title match over fuzzy +- Ask: User to confirm if ambiguous + +### Error Handling + +**If event not found:** +- Message: "No calendar event found for [[Task Name]]" +- Reason: "Task was not time-blocked" +- Action: Skip (not an error) + +**If multiple matches:** +- Message: "Multiple events found for [[Task Name]]:" +- List: All matching events with times +- Ask: "Which one to update? (1/2/3)" + +**If already marked complete:** +- Message: "Event already marked complete: βœ… [[Task Name]]" +- Action: Skip (idempotent) + +**If gcalcli fails:** +- Message: "Unable to update calendar. Check authentication." +- Suggest: Run `gcalcli init` + +### Advanced Features + +**1. Batch update:** +```bash +/pkm:gcal-complete --all +``` +Updates all completed tasks from today's note. + +**2. Retroactive sync:** +```bash +/pkm:gcal-complete --date 2025-11-18 +``` +Syncs completions from a past date. + +**3. Undo completion:** +```bash +/pkm:gcal-complete --undo "[[Task Name]]" +``` +Removes βœ… marker (if task was uncompleted). + +### Completion Metadata + +**Store in event description:** +``` +Completed: 2025-11-19 15:45 +Pomodoros: 3 πŸ…πŸ…πŸ… +Notes: Finished earlier than expected +``` + +**Benefits:** +- Track actual vs estimated time +- Review completion patterns +- Inform future time estimates + +### Weekly Review Integration + +Weekly review shows: +```markdown +### μ£Όκ°„ μ™„λ£Œ νƒœμŠ€ν¬ +- [x] [[Task A]] βœ… (90min, est 120min) - 25% faster +- [x] [[Task B]] βœ… (120min, est 90min) - 33% slower + +**Insights:** Complex tasks taking longer than estimated. +``` + +### Notes + +- Only updates time-blocked tasks (calendar events exist) +- Non-blocked tasks skip update (normal behavior) +- Preserves event time and other details +- Completion marker: βœ… (universally recognized) +- Can manually undo in Google Calendar UI diff --git a/.claude/commands/pkm:gcal-today.md b/.claude/commands/pkm:gcal-today.md new file mode 100644 index 0000000..ce49c99 --- /dev/null +++ b/.claude/commands/pkm:gcal-today.md @@ -0,0 +1,82 @@ +You are helping fetch today's Google Calendar events using gcalcli. + +## Context +- Calendar: 00_Schedule (main calendar only) +- Tool: gcalcli CLI +- Authentication: OAuth credentials at `~/.gcalcli_oauth` + +## Task +Fetch and display today's calendar events from 00_Schedule calendar using gcalcli. + +### Steps: + +1. **Determine today's date** + - Get current date in YYYY-MM-DD format + - Set time range: 00:00 to 23:59 + +2. **Execute gcalcli command** + ```bash + gcalcli --calendar "00_Schedule" agenda "YYYY-MM-DD 00:00" "YYYY-MM-DD 23:59" + ``` + +3. **Parse gcalcli output** + - gcalcli returns format: `HH:MM Event Title` + - Extract start time, end time (if available), and event title + +4. **Format for PKM review** + - Clean and format output + - Group by time + - Count total events + +### Output Format + +```markdown +**2025-11-19 Calendar Events:** + +- 09:00-10:00: Team Standup +- 11:00-12:00: Deep Work Block +- 14:00-15:00: 1-on-1 with Sarah +- 16:00-17:00: Code Review Session + +**Total:** 4 events +``` + +### gcalcli Command + +```bash +gcalcli --calendar "00_Schedule" \ + agenda \ + "$(date '+%Y-%m-%d') 00:00" \ + "$(date '+%Y-%m-%d') 23:59" +``` + +### Error Handling + +**If gcalcli not installed:** +- Message: "gcalcli not found. Install with: pip install gcalcli" +- Provide installation instructions + +**If not authenticated:** +- Message: "Not authenticated. Run: gcalcli init" +- Guide OAuth setup process + +**If no events:** +- Message: "No calendar events scheduled for today." + +**If calendar not found:** +- Message: "Calendar '00_Schedule' not found. Check calendar name in Google Calendar." + +### Integration with Daily Review + +This command is automatically called by `/pkm:daily-review` to populate the "μ‹œκ°„ μ‚¬μš©" section. + +**Daily review will combine:** +- Pomodoros from TaskNotes YAML +- Calendar events from this command + +### Notes + +- Only fetches from 00_Schedule calendar +- Real-time data from Google Calendar API +- Requires internet connection +- OAuth token refreshes automatically diff --git a/.claude/commands/pkm:monthly-review.md b/.claude/commands/pkm:monthly-review.md new file mode 100644 index 0000000..fc69cb0 --- /dev/null +++ b/.claude/commands/pkm:monthly-review.md @@ -0,0 +1,69 @@ +You are helping complete the Monthly Review in an Obsidian vault with Periodic Notes. + +## Context +- Monthly notes location: `~/Obsidian/Altellus/20_Notes/Journal/YYYY/Mnn/YYYY-Mmm.md` +- Weekly notes location: `~/Obsidian/Altellus/20_Notes/Journal/YYYY/Mnn/YYYY-Www.md` +- Current month: Calculate from today's date +- Review period: All weekly notes from the current month (typically 4-5 weeks) + +## Task +Generate or update the **πŸ“… Monthly Summary** and all sections of this month's monthly note. + +### Steps: + +1. **Identify the monthly note** + - Calculate current month (e.g., `2025-M11` for November) + - Path format: `~/Obsidian/Altellus/20_Notes/Journal/2025/M11/2025-M11.md` + - Create from template if doesn't exist + +2. **Aggregate weekly notes (TaskNotes format)** + - Identify all weekly notes in the current month + - Read each weekly note and extract highlights, KPIs, insights, blockers + - Extract completed tasks: `- [x] [[Task Name]]` + +3. **Fill "μ›”κ°„ ν•˜μ΄λΌμ΄νŠΈ" (Monthly Highlights) - TaskNotes format** + - List 5-7 major achievements across the month + - Use TaskNotes format: `- [x] [[Task Name]]` for completed highlights + - Significant milestones and key wins + +4. **Fill "μ›”κ°„ KPI" (Monthly KPIs) - TaskNotes format** + - **평균 μ™„λ£Œμœ¨**: Average of weekly completion rates + - **총 Pomodoros**: Sum of all weekly pomodoros + - **μ£Όκ°„ 평균**: Total pomodoros / number of weeks + - Display with emoji: `총 πŸ… x 140 (4μ£Όκ°„)` + - Example: `- 평균 μ™„λ£Œμœ¨: 76% (across 4 weeks)` + +5. **Fill "λͺ©ν‘œ 진행도" (Goal Progress)** + - Review monthly or quarterly goals + - Track progress on each goal + - Format: `- [[Goal Name]] β€” X% complete / status` + +6. **Fill "🧠 Monthly Themes & Patterns"** + - Identify recurring themes across multiple weeks + - What patterns emerged? What was most effective? + - Any systemic issues needing attention? + +7. **Fill "πŸ“Š Project Portfolio"** + - List all projects worked on during the month + - Current status and time investment per project + +8. **Fill "🚧 Persistent Blockers" - TaskNotes format** + - Blockers appearing in 2+ weekly reviews: `- [ ] [[Task Name]]` + - Format: `- [ ] [[Task Name]] β€” Xμ£Ό 연속 λ―Έμ™„λ£Œ` + - Long-term obstacles still unresolved + - Systemic issues requiring strategic solutions + +9. **Fill "🎯 λ‹€μŒ 달 λͺ©ν‘œ" (Next Month Objectives) - TaskNotes format** + - Based on monthly insights and persistent blockers + - 3-5 key objectives for next month + - Format as TaskNotes checklist: `- [ ] [[Objective]]` + - Prioritize blocker resolution + +### Output Format +Provide the complete monthly note content with all sections filled. + +**Important**: +- Aggregate data from actual weekly notes, not assumptions +- Calculate real numbers for KPIs from weekly data +- Look for long-term trends and patterns +- Preserve frontmatter and template structure diff --git a/.claude/commands/pkm:weekly-review.md b/.claude/commands/pkm:weekly-review.md new file mode 100644 index 0000000..06b34d8 --- /dev/null +++ b/.claude/commands/pkm:weekly-review.md @@ -0,0 +1,67 @@ +You are helping complete the Weekly Review in an Obsidian vault with Periodic Notes. + +## Context +- Weekly notes location: `~/Obsidian/Altellus/20_Notes/Journal/YYYY/Mnn/YYYY-Www.md` +- Daily notes location: `~/Obsidian/Altellus/20_Notes/Journal/YYYY/Mnn/YYYY-MM-DD.md` +- Current week: Calculate from today's date +- Review period: Past 7 days of daily notes + +## Task +Generate or update the **πŸ“† Weekly Summary** and all sections of this week's weekly note. + +### Steps: + +1. **Identify the weekly note** + - Calculate current week number (e.g., `2025-W46`) + - Path format: `~/Obsidian/Altellus/20_Notes/Journal/2025/M11/2025-W46.md` + - Create from template if doesn't exist + +2. **Aggregate daily notes (TaskNotes format)** + - Read the past 7 daily notes from `~/Obsidian/Altellus/20_Notes/Journal/` + - Extract completed tasks: `- [x] [[Task Name]] βœ… YYYY-MM-DD` + - Extract incomplete tasks: `- [ ] [[Task Name]]` + - Count pomodoros from YAML `pomodoros` array in each note + +3. **Fill "μ£Όκ°„ ν•˜μ΄λΌμ΄νŠΈ" (Weekly Highlights)** + - List 3-5 major accomplishments this week + - Use TaskNotes format: `- [x] [[Task Name]]` for completed highlights + - What moved forward? What was completed? + +4. **Fill "KPI & μ§€ν‘œ" (KPIs & Metrics) - TaskNotes format** + - **μ™„λ£Œμœ¨**: Count completed vs total TaskNotes tasks from 7 daily notes + - **총 Pomodoros**: Sum `pomodoros` array length from all 7 daily notes + - Display total with emoji: `총 πŸ… x 35 (7일간)` + - Example: `- μ™„λ£Œμœ¨: 23/30 tasks (77%)` + +5. **Fill "μ£Όμš” ν”„λ‘œμ νŠΈ μƒνƒœ" (Project Status)** + - Identify projects mentioned across the week + - Format: `- [[Project Name]] β€” status description` + +6. **Fill "🧠 Insights"** + - Patterns discovered across the week + - What worked well consistently? + - What recurring issues appeared? + +7. **Fill "⏱ Time & Energy"** + - Project-wise time breakdown + - Energy flow observations (when was most productive?) + +8. **Fill "🧱 Blockers" - TaskNotes format** + - Find tasks appearing 3+ days without completion: `- [ ] [[Task Name]]` + - Recurring obstacles + - External dependencies blocking progress + - Format: `- [ ] [[Task Name]] β€” X일 연속 λ―Έμ™„λ£Œ` + +9. **Fill "🎯 λ‹€μŒ μ£Ό μš°μ„ μˆœμœ„" (Next Week Priorities) - TaskNotes format** + - Based on blockers and incomplete work + - Format as TaskNotes checklist: `- [ ] [[Priority Task]]` + - Connect to blocker resolutions + - Prioritize delayed tasks + +### Output Format +Provide the complete weekly note content with all sections filled. + +**Important**: +- Pull data from actual daily notes, not assumptions +- Calculate real numbers for KPIs from TaskNotes YAML +- Preserve frontmatter and template structure diff --git a/README.md b/README.md new file mode 100644 index 0000000..834cf62 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# pkm-framework + +Comprehensive Personal Knowledge Management framework for Obsidian with temporal reviews (daily, weekly, monthly), smart capture, note linking, and analytics diff --git a/SKILL.md b/SKILL.md new file mode 100644 index 0000000..a3adc1d --- /dev/null +++ b/SKILL.md @@ -0,0 +1,349 @@ +--- +name: pkm-framework +description: Comprehensive Personal Knowledge Management framework for Obsidian with temporal reviews, capture, linking, and analytics +--- + +# PKM Framework + +A complete Personal Knowledge Management system for Obsidian vaults with temporal reviews, smart capture, note linking, and analytics. Designed to work seamlessly with Periodic Notes and integrate with your daily workflow. + +## Overview + +The PKM Framework provides a structured approach to managing knowledge in Obsidian, with a focus on: + +- **Temporal Reviews**: Daily, weekly, and monthly reflection and planning +- **Smart Capture**: Quick note and meeting capture workflows +- **Note Linking**: Intelligent connections between related notes +- **Organization**: Project management and Zettelkasten support +- **Analytics**: Insights into your PKM system health and usage + +## Features + +### πŸ—“οΈ Temporal Reviews + +Build a consistent review habit with automated temporal note management: + +- **Daily Setup** (`/pkm:daily-setup`) - Morning routine to start your day with yesterday's summary and carried-over tasks +- **Daily Review** (`/pkm:daily-review`) - Evening reflection with tasks completed, time usage, insights, and tomorrow's suggestions +- **Weekly Review** (`/pkm:weekly-review`) - Weekly summary aggregating 7 days with KPIs, project status, and next week's priorities +- **Monthly Review** (`/pkm:monthly-review`) - Monthly overview aggregating weekly data with goal tracking and long-term patterns + +### πŸ“ Smart Capture (Coming Soon) + +Capture information quickly without disrupting your flow: + +- **Quick Capture** - Rapid note capture to inbox or daily note +- **Meeting Notes** - Structured meeting notes with calendar integration + +### πŸ”— Note Linking (Coming Soon) + +Build a connected knowledge base: + +- **Smart Linking** - Automatically suggest relevant note connections +- **Backlink Analysis** - Analyze note connections and identify clusters + +### πŸ“‚ Organization (Coming Soon) + +Keep your vault organized and maintainable: + +- **Project Notes** - Project note management and tracking +- **Zettelkasten** - Atomic note creation with proper linking +- **Periodic Cleanup** - Archive and cleanup old notes + +### πŸ“Š Analytics (Coming Soon) + +Understand your PKM system: + +- **PKM Statistics** - System health, usage statistics, and trends + +## Quick Start + +### Prerequisites + +1. **Obsidian** with required plugins: + - **Periodic Notes** (required) + - **TaskNotes** (required) - For task management + +2. **Vault structure**: + ``` + ~/Obsidian/Altellus/ + β”œβ”€β”€ 00_Inbox/ + β”‚ └── Tasks/ (TaskNotes tasks) + β”œβ”€β”€ 20_Notes/ + β”‚ └── Journal/ + β”‚ └── YYYY/Mnn/ + β”‚ β”œβ”€β”€ YYYY-MM-DD.md (daily notes) + β”‚ β”œβ”€β”€ YYYY-Www.md (weekly notes) + β”‚ └── YYYY-Mmm.md (monthly notes) + └── 90_Templates/ + └── Temporal/ + └── Daily.md + ``` + +3. **gcalcli** (optional, for calendar integration): + ```bash + pip install gcalcli + gcalcli init # OAuth setup + ``` + +### Installation + +The PKM Framework is available as a plugin in the Claude Code marketplace: + +```bash +# Install via marketplace (when available) +/skills install pkm-framework +``` + +### Basic Workflow + +**Morning Routine:** +```bash +/pkm:daily-setup +``` + +**Evening Routine:** +```bash +/pkm:daily-review +``` + +**Weekly Review (Friday or Sunday):** +```bash +/pkm:weekly-review +``` + +**Monthly Review (End of month):** +```bash +/pkm:monthly-review +``` + +## Commands Reference + +### Main Command + +- `/pkm` - Main PKM menu (displays available commands) + +### Temporal Reviews + +- `/pkm:daily-setup` - Generate morning Daily Notes section +- `/pkm:daily-review` - Complete evening Daily Review section +- `/pkm:weekly-review` - Generate Weekly Summary +- `/pkm:monthly-review` - Generate Monthly Summary + +### Capture (Coming Soon) + +- `/pkm:quick-capture` - Quick capture to inbox or daily note +- `/pkm:meeting-notes` - Create meeting note with calendar sync + +### Linking (Coming Soon) + +- `/pkm:note-linking` - Smart linking between related notes +- `/pkm:backlink-analysis` - Analyze note connections + +### Organization (Coming Soon) + +- `/pkm:project-notes` - Project note management +- `/pkm:zettelkasten` - Create atomic note +- `/pkm:periodic-cleanup` - Archive old notes + +### Analytics (Coming Soon) + +- `/pkm:stats` - PKM system statistics + +## Configuration + +### Obsidian Vault Path + +The default vault path is `~/Obsidian/Altellus`. If your vault is located elsewhere, you'll need to update the paths in the command files. + +### Required Obsidian Plugins + +1. **Periodic Notes** - For temporal note structure +2. **Templater** (optional) - For advanced templates +3. **Dataview** (optional) - For query-based views + +### Integration with Google Calendar + +The daily review feature integrates with Google Calendar through the `gcal-review` skill. Ensure you have calendar access configured. + +## Vault Structure + +### Required Folders + +``` +20_Notes/ + Journal/ # Temporal notes (daily, weekly, monthly) + YYYY/ + Mnn/ + YYYY-MM-DD.md # Daily notes + YYYY-Www.md # Weekly notes + YYYY-Mmm.md # Monthly notes + Projects/ # Project notes (future) + Zettels/ # Atomic notes (future) + Meetings/ # Meeting notes (future) + Inbox/ # Quick capture (future) + +90_Templates/ + Temporal/ # Temporal note templates + Daily.md # Daily note template + Weekly.md # Weekly note template (future) + Monthly.md # Monthly note template (future) +``` + +## Workflows + +### Daily Workflow + +**Morning (5 minutes):** +1. Run `/pkm:daily-setup` +2. Review yesterday's summary +3. Check carried-over tasks +4. Set today's focus + +**During the day:** +- Add notes and tasks to daily note +- Track pomodoros in YAML frontmatter +- Link to related notes + +**Evening (5-10 minutes):** +1. Run `/pkm:daily-review` +2. Review completed tasks +3. Reflect on time usage +4. Capture insights +5. Plan tomorrow + +### Weekly Workflow + +**Friday or Sunday (20-30 minutes):** +1. Run `/pkm:weekly-review` +2. Review weekly highlights +3. Check KPIs and patterns +4. Assess project status +5. Identify blockers +6. Set next week's priorities + +### Monthly Workflow + +**End of month (30-45 minutes):** +1. Run `/pkm:monthly-review` +2. Review monthly achievements +3. Check goal progress +4. Identify long-term patterns +5. Address persistent blockers +6. Set next month's objectives + +## Data Formats + +### Daily Note YAML Frontmatter (TaskNotes) + +```yaml +--- +para: Note +type: journal +pomodoros: + - id: "1763434005196" + startTime: 2025-11-18T11:46:45.196+09:00 + endTime: 2025-11-18T12:02:13.144+09:00 + plannedDuration: 25 + type: work + taskPath: 00_Inbox/ELEGNT λ…Όλ¬Έ.md + completed: true +--- +``` + +### Task Format (TaskNotes) + +- **Incomplete**: `- [ ] [[Task Name]]` +- **Completed**: `- [x] [[Task Name]] βœ… 2025-11-19` +- **Tasks** are individual markdown files in `00_Inbox/Tasks/` + +### Pomodoro Display + +- Visual: `ELEGNT λ…Όλ¬Έ - πŸ…πŸ…πŸ…: 3` +- Total: `총 πŸ…πŸ…πŸ…πŸ…: 4 pomodoros` +- Count: Length of `pomodoros` array in YAML + +### Time Tracking + +- **Pomodoros**: From TaskNotes YAML `pomodoros` array +- **Calendar events**: From gcalcli (00_Schedule calendar) +- **Task tracking**: TaskNotes task files + wikilinks + +## Integration with TaskNotes + +### Task Management + +- Tasks stored in `00_Inbox/Tasks/` as individual markdown files +- Referenced in daily notes as `- [ ] [[Task Name]]` wikilinks +- Completed tasks: `- [x] [[Task Name]] βœ… YYYY-MM-DD` + +### Pomodoro Tracking + +- TaskNotes tracks pomodoros in YAML frontmatter +- Each pomodoro includes: startTime, endTime, taskPath +- PKM Framework reads `pomodoros` array length for totals + +### Calendar Sync (gcalcli) + +- Time blocks created from tasks: `/pkm:gcal-block` +- Task completion synced to calendar: `/pkm:gcal-complete` +- Calendar events displayed in daily review +- 00_Schedule calendar only + +## Troubleshooting + +### Daily note not found +- Ensure Periodic Notes plugin is configured correctly +- Check vault path is `~/Obsidian/Altellus` +- Verify folder structure exists + +### Tasks not recognized +- Ensure TaskNotes plugin is installed and configured +- Task files must be in `00_Inbox/Tasks/` folder +- Use wikilink format: `- [ ] [[Task Name]]` + +### Calendar integration not working +- Install gcalcli: `pip install gcalcli` +- Authenticate: `gcalcli init` +- Verify 00_Schedule calendar exists in Google Calendar + +### Pomodoros showing zeros +- Verify TaskNotes is tracking pomodoros +- Check YAML frontmatter has `pomodoros` array +- Ensure pomodoro tracking is enabled in TaskNotes settings + +### Related notes not auto-filled +- Ensure daily note has Notes section +- Verify pomodoros have `taskPath` field +- Check wikilinks are properly formatted: `[[Note Name]]` + +## Version + +**Current Version**: 1.0.0 + +### What's Included (Phase 1) + +- βœ… Daily Setup skill +- βœ… Daily Review skill +- βœ… Weekly Review skill +- βœ… Monthly Review skill +- βœ… Temporal workflow documentation + +### Coming in Future Versions + +- πŸ“ Capture skills (quick-capture, meeting-notes) +- πŸ”— Linking skills (note-linking, backlink-analysis) +- πŸ“‚ Organization skills (project-notes, zettelkasten, periodic-cleanup) +- πŸ“Š Analytics skills (pkm-stats) + +## Contributing + +This PKM Framework is designed to be extensible. Future skills can be added to enhance the system. + +## License + +Part of the Collaborator plugin collection. + +## Support + +For issues, questions, or feature requests, please refer to the main documentation in `./docs/pkm/`. diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..22378c0 --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,101 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:devkade/collaborator:skills/pkm-framework", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "210298c95060d168201356b91c3c29b9c8497c15", + "treeHash": "da59f9f59c83575729cc47916440fcdde222789205c296b1f3dbd07bf35fdec8", + "generatedAt": "2025-11-28T10:16:19.874890Z", + "toolVersion": "publish_plugins.py@0.2.0" + }, + "origin": { + "remote": "git@github.com:zhongweili/42plugin-data.git", + "branch": "master", + "commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390", + "repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data" + }, + "manifest": { + "name": "pkm-framework", + "description": "Comprehensive Personal Knowledge Management framework for Obsidian with temporal reviews (daily, weekly, monthly), smart capture, note linking, and analytics", + "version": "1.0.0" + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "469cb3c79a1651947aa5ef3bbed9de61ebf3fd5ac2cb76f36f568b284e7ce505" + }, + { + "path": "SKILL.md", + "sha256": "b85e12aacbbaf323325b003c062429c9f5636eb074060fddd93c311da2626583" + }, + { + "path": ".claude/commands/pkm:gcal-block.md", + "sha256": "241e4d2fe6ddbb25374e8d3122e30e7cebb24179174f16885ebb2725b29b6a52" + }, + { + "path": ".claude/commands/pkm:monthly-review.md", + "sha256": "53f1eb809a52ccf5407089ae7f3f6de5f14dfc2bff4a9b1b070a1d02963045b7" + }, + { + "path": ".claude/commands/pkm.md", + "sha256": "7cd5de5956456387e0551651f146b279ab24eef07dc339a4cbc9a80f7f4a5842" + }, + { + "path": ".claude/commands/pkm:gcal-add.md", + "sha256": "1626d687db66ede47bbf8c671595dd4a2c0cedaa13389fce6442eaac7d84fede" + }, + { + "path": ".claude/commands/pkm:gcal-complete.md", + "sha256": "85bee35030e69f616637836e345be72906821354a74211038f5da85f996557f0" + }, + { + "path": ".claude/commands/pkm:gcal-today.md", + "sha256": "609410ab1ff2bd0ead000d5d126fab4af9bd79df62e8cce1d44965ddd7845ba6" + }, + { + "path": ".claude/commands/pkm:weekly-review.md", + "sha256": "62b9a0157ed98c060d24fcf8ca09ab5473cd34f30cd87d080e132de41b9f5324" + }, + { + "path": ".claude/commands/pkm:daily-setup.md", + "sha256": "fb8884436a081944d2f5ddaa57b28e660aecdee176d6b7a165c56d5d305a5fba" + }, + { + "path": ".claude/commands/pkm:daily-review.md", + "sha256": "31a9d771a24fce03c4e2a1f4088fe9232c55c2f8ea59aafe5027bcaa086cd652" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "31ef906b71e9a94a937362347f80b5c2196248e36bfc215720505372c9bedfbd" + }, + { + "path": "skills/temporal/weekly-review/SKILL.md", + "sha256": "c13004729adb9de41efa1eabcbd929a1fbb4fb4f7c93b9a14d8366570cadbaea" + }, + { + "path": "skills/temporal/daily-setup/SKILL.md", + "sha256": "7c1661b79629e6b109d4c820defb103956060591e4137bab88aa727e81556718" + }, + { + "path": "skills/temporal/daily-review/SKILL.md", + "sha256": "802c68b680d2bd3d1937770231724cd3cd838f501ffa06165fdf3ce58bd7294e" + }, + { + "path": "skills/temporal/monthly-review/SKILL.md", + "sha256": "73e48de374a3ed75ab3220b62727a52f375fc209a01eddf8579e6e973192b35e" + }, + { + "path": "skills/integration/gcalcli/SKILL.md", + "sha256": "725330ae2ba3966a7f394bc4c63e5399df38603778fc28ddbf5b4fcd50857103" + } + ], + "dirSha256": "da59f9f59c83575729cc47916440fcdde222789205c296b1f3dbd07bf35fdec8" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file diff --git a/skills/integration/gcalcli/SKILL.md b/skills/integration/gcalcli/SKILL.md new file mode 100644 index 0000000..47155e0 --- /dev/null +++ b/skills/integration/gcalcli/SKILL.md @@ -0,0 +1,337 @@ +--- +name: pkm:gcalcli +description: Google Calendar integration for PKM Framework using gcalcli for read/write access +--- + +# gcalcli Skill + +This skill provides Google Calendar integration for the PKM Framework using gcalcli CLI tool for both reading and writing calendar events. + +## Purpose + +Full Google Calendar integration with read/write capabilities for task management and time tracking. + +**Key Features:** +- **Read**: Fetch calendar events for daily/weekly reviews +- **Write**: Create calendar events from TaskNotes tasks +- **Time blocking**: Automatically create focus blocks +- **Task sync**: Update calendar when tasks complete +- **00_Schedule calendar only**: Focused on main calendar management + +## Context + +- **gcalcli**: Google Calendar CLI tool +- **Target calendar**: `00_Schedule` (main calendar only) +- **Authentication**: Google OAuth 2.0 +- **API**: Google Calendar API v3 + +## Installation + +### 1. Install gcalcli + +```bash +pip install gcalcli +``` + +### 2. Initial Authentication + +```bash +gcalcli init +``` + +This will: +- Open browser for Google account authentication +- Save credentials to `~/.gcalcli_oauth` +- Grant calendar access permissions + +### 3. Verify Installation + +```bash +gcalcli --calendar "00_Schedule" agenda today +``` + +## How It Works + +### Read Operations + +gcalcli fetches events directly from Google Calendar API: + +```bash +# Today's events +gcalcli --calendar "00_Schedule" agenda "2025-11-19 00:00" "2025-11-19 23:59" + +# This week +gcalcli --calendar "00_Schedule" calw +``` + +### Write Operations + +gcalcli creates/modifies events via API: + +```bash +# Add event +gcalcli --calendar "00_Schedule" add \ + --title "Deep Work" \ + --when "2025-11-19 14:00" \ + --duration 120 + +# Quick add (natural language) +gcalcli --calendar "00_Schedule" quick "Meeting tomorrow 2pm" +``` + +## Output Format + +### For Daily Review + +```markdown +**2025-11-19 Calendar Events:** +- 09:00-10:00: Team Standup (00_Schedule) +- 11:00-12:00: Deep Work Block (01_Daily) +- 14:00-15:00: 1-on-1 with Sarah (02_Work) +- 16:00-17:00: Paper Reading (03_Development) +- 18:00-19:00: Exercise (05_Health) +``` + +### For Weekly Overview + +```markdown +**이번 μ£Ό μ£Όμš” 일정:** +- μ›”: Team Planning (09:00-10:00) +- ν™”: Client Meeting (14:00-16:00) +- 수: Deep Work Day (No meetings) +- λͺ©: 1-on-1s (14:00-17:00) +- 금: Demo Day (15:00-16:00) +``` + +## Commands + +### Read Commands + +#### `/pkm:gcal-today` + +Fetch today's calendar events. + +**Usage:** +```bash +/pkm:gcal-today +``` + +**Output:** Events for today from 00_Schedule + +#### `/pkm:gcal-date ` + +Fetch events for a specific date. + +**Usage:** +```bash +/pkm:gcal-date 2025-11-18 +``` + +**Output:** Events for the specified date + +#### `/pkm:gcal-week` + +Fetch this week's calendar overview. + +**Usage:** +```bash +/pkm:gcal-week +``` + +**Output:** Summary of events for the current week + +### Write Commands + +#### `/pkm:gcal-add` + +Add a calendar event. + +**Usage:** +```bash +# Add event with prompts +/pkm:gcal-add + +# Quick add with natural language +/pkm:gcal-add "Meeting with team tomorrow 2pm" +``` + +**Output:** Event created confirmation + +#### `/pkm:gcal-block` + +Create time blocks from TaskNotes tasks. + +**Usage:** +```bash +# Create focus block for a task +/pkm:gcal-block [[Task Name]] 2025-11-19 14:00 120 + +# Auto-schedule incomplete tasks +/pkm:gcal-block --auto +``` + +**Output:** Time blocks created + +#### `/pkm:gcal-complete` + +Mark task completion in calendar. + +**Usage:** +```bash +# Update event when task completes +/pkm:gcal-complete [[Task Name]] +``` + +**Output:** Calendar event updated with βœ… + +## Integration with Daily Review + +The daily review skill (`/pkm:daily-review`) automatically calls `/pkm:gcal-today` to populate the "μ‹œκ°„ μ‚¬μš©" section. + +**Automatic usage:** +```markdown +### μ‹œκ°„ μ‚¬μš© + +**Pomodoros:** +- ELEGNT λ…Όλ¬Έ - πŸ…πŸ…πŸ…: 3 +- 총 πŸ…πŸ…πŸ…: 3 pomodoros + +**Calendar Events:** +- 09:00-10:00: Team Standup (00_Schedule) +- 14:00-15:00: 1-on-1 with Sarah (02_Work) +``` + +## ICS Parsing + +The skill parses standard ICS format: + +``` +BEGIN:VEVENT +DTSTART:20251119T090000Z +DTEND:20251119T100000Z +SUMMARY:Team Standup +DESCRIPTION:Weekly team sync +END:VEVENT +``` + +Extracts: +- Start time (`DTSTART`) +- End time (`DTEND`) +- Event title (`SUMMARY`) +- Description (`DESCRIPTION`) + +## Configuration + +### Enabling/Disabling Calendars + +TaskNotes config controls which calendars are active: + +```json +{ + "name": "00_Schedule", + "enabled": true // Set to false to disable +} +``` + +### Refresh Interval + +TaskNotes automatically refreshes ICS feeds every 60 minutes. + +## Troubleshooting + +### "No calendar events found" + +**Possible causes:** +1. No events scheduled for the date +2. ICS subscriptions disabled in TaskNotes +3. ICS feed not refreshed recently + +**Solution:** +- Check TaskNotes calendar view +- Verify `enabled: true` in config +- Wait for next auto-refresh or restart Obsidian + +### "Unable to read TaskNotes config" + +**Cause:** TaskNotes plugin not installed or config missing + +**Solution:** +- Install TaskNotes plugin +- Configure calendar subscriptions in TaskNotes settings + +### Events showing wrong timezone + +**Cause:** ICS events are in UTC, need local timezone conversion + +**Solution:** +- Skill automatically converts to local timezone +- Verify system timezone is correct + +## Example Usage + +### Morning Daily Setup + +```bash +# Check today's schedule +/pkm:gcal-today + +# Output: +**2025-11-19 Calendar Events:** +- 09:00-10:00: Team Standup +- 11:00-12:00: Focus Block +- 14:00-15:00: Client Call +- 15:30-16:30: Code Review +``` + +### Evening Daily Review + +Daily review automatically includes calendar events: + +```bash +/pkm:daily-review + +# Generates: +### μ‹œκ°„ μ‚¬μš© +**Pomodoros:** +- Project A - πŸ…πŸ…πŸ…: 3 +- 총 πŸ…πŸ…πŸ…: 3 + +**Calendar Events:** +- 09:00-10:00: Team Standup +- 11:00-12:00: Focus Block (productive!) +- 14:00-15:00: Client Call +``` + +### Weekly Planning + +```bash +/pkm:gcal-week + +# Shows week overview for planning +``` + +## Dependencies + +- **TaskNotes plugin**: Must be installed and configured +- **ICS subscriptions**: Google Calendar ICS URLs must be added to TaskNotes +- **Internet connection**: Required to fetch ICS feeds + +## Future Enhancements + +- Write events back to calendar +- Create calendar blocks from tasks +- Sync task completions to calendar +- Time blocking assistance +- Meeting preparation automation + +## Version + +**Current Version**: 1.0.0 (Initial release) + +**Included in**: PKM Framework 1.0.0+ + +## See Also + +- [Daily Review Skill](../temporal/daily-review/SKILL.md) +- [TaskNotes Plugin Documentation](https://github.com/obsidian-tasks-group/obsidian-tasks) +- [ICS Format Specification](https://tools.ietf.org/html/rfc5545) diff --git a/skills/temporal/daily-review/SKILL.md b/skills/temporal/daily-review/SKILL.md new file mode 100644 index 0000000..8acfd48 --- /dev/null +++ b/skills/temporal/daily-review/SKILL.md @@ -0,0 +1,111 @@ +--- +name: pkm:daily-review +description: Complete the Daily Review section for end-of-day reflection in Obsidian +--- + +# Daily Review Skill + +This skill helps you close out your day by completing the **πŸŒ™ Daily Review** section with tasks completed, time usage, insights, and tomorrow's priorities. + +## Purpose + +Automatically complete the **πŸŒ™ Daily Review** section with: + +- Tasks completed today +- Time usage from Google Calendar and pomodoro tracking +- Key insights and learnings +- Suggestions for tomorrow's work + +## Context + +- **Daily notes location**: `20_Notes/Journal/YYYY/Mnn/YYYY-MM-DD.md` +- **Obsidian vault**: `~/Obsidian/Altellus` +- **Date logic**: If current time is before 04:00 AM, use previous day's date for the review + - Example: 2025-11-19 02:30 AM β†’ review 2025-11-18 + - Example: 2025-11-19 05:00 AM β†’ review 2025-11-19 +- **TaskNotes data**: Pomodoro tracking may be in YAML frontmatter (`pomodoros` field) + +## Workflow + +### 1. Determine target date + +- Check current time +- If before 04:00 AM, use previous day's date +- Otherwise, use today's date + +### 2. Check Google Calendar + +- Use the `/pkm:gcal-today` command to fetch events +- TaskNotes already has Google Calendar ICS subscriptions configured +- Extract scheduled meetings, appointments, and time blocks + +### 3. Read target date's daily note (TaskNotes format) + +- Extract completed tasks in TaskNotes format: `- [x] [[Task Name]] βœ… YYYY-MM-DD` +- Check YAML frontmatter `pomodoros` array for time tracking data +- Review content added during the day + +### 4. Fill "였늘 μ™„λ£Œ" (Tasks Completed) section - TaskNotes format + +- List all completed tasks: `- [x] [[Task Name]] βœ… YYYY-MM-DD` +- Search in "였늘 μ΄μ–΄μ„œ ν•  일" section and Notes section +- If no tasks completed, note what was worked on instead + +### 5. Fill "μ‹œκ°„ μ‚¬μš©" (Time Usage) section - TaskNotes Pomodoro format + +- Count total pomodoros from YAML `pomodoros` array length +- Group by taskPath and display as: `Task Name - πŸ…πŸ…πŸ…: 3` +- Show total with tomato emoji count: `총 πŸ…πŸ…πŸ…πŸ…πŸ…πŸ…: 6 pomodoros` +- List calendar events from Google Calendar: + - `- HH:MM-HH:MM: Event Title` + +### 6. Fill "μΈμ‚¬μ΄νŠΈ" (Insights) section + +- Extract key learnings, discoveries, or patterns from today's notes +- What worked well? What didn't? +- Any blockers or important realizations? +- Consider how calendar events aligned with planned work + +### 7. Fill "내일 μ œμ•ˆ" (Tomorrow's Suggestions) section - TaskNotes format + +- Based on incomplete tasks and insights, suggest priorities for tomorrow +- Format as `- [ ] [[Task Name]]` (TaskNotes wikilink format) +- Connect to blockers or unfinished work +- Prioritize incomplete tasks from today + +## Output Format + +Provide only the "πŸŒ™ Daily Review" section content to update in today's note. + +**Important**: + +- DO NOT modify the "## Retro" section (user fills this manually) +- DO NOT modify other sections +- Preserve all frontmatter and existing content + +## Usage + +This skill is called via the `/pkm:daily-review` command, typically at the end of the workday or before bed. + +## Integration + +- Uses the **gcal-review** skill for Google Calendar integration +- Reads YAML frontmatter for pomodoro tracking +- Works with **Periodic Notes** plugin in Obsidian +- Respects the early-morning edge case (reviews previous day if before 4 AM) + +## Example + +**Input**: User runs `/pkm:daily-review` on 2025-11-19 at 10:00 PM + +**Process**: + +1. Determine target date: 2025-11-19 (after 4 AM) +2. Fetch calendar events for 2025-11-19 using `gcal-review` +3. Read `~/Obsidian/Altellus/20_Notes/Journal/2025/M11/2025-11-19.md` +4. Extract completed tasks marked with `[x]` +5. Calculate time usage from calendar + pomodoros in YAML +6. Generate insights from note content +7. Suggest tomorrow's priorities based on incomplete work + +**Output**: Updated "πŸŒ™ Daily Review" section with all subsections filled. diff --git a/skills/temporal/daily-setup/SKILL.md b/skills/temporal/daily-setup/SKILL.md new file mode 100644 index 0000000..d145711 --- /dev/null +++ b/skills/temporal/daily-setup/SKILL.md @@ -0,0 +1,100 @@ +--- +name: pkm:daily-setup +description: Generate or update the Daily Notes section for morning daily note setup in Obsidian +--- + +# Daily Setup Skill + +This skill helps you start your day by creating or updating today's daily note in your Obsidian vault. + +## Purpose + +Automatically create or update the **πŸŒ… Daily Notes** section of your daily note with: + +- Summary of yesterday's work +- Incomplete tasks carried forward +- Proper date navigation + +## Context + +- **Daily notes location**: `20_Notes/Journal/YYYY/Mnn/YYYY-MM-DD.md` +- **Template**: `90_Templates/Temporal/Daily.md` +- **Obsidian vault**: `~/Obsidian/Altellus` +- **Today's date**: Use current date to determine the file path + +## Workflow + +### 1. Check if today's daily note exists + +- Path format: `20_Notes/Journal/2025/M11/2025-11-18.md` (example) +- If it doesn't exist, create it from the template at `90_Templates/Temporal/Daily.md` + +### 2. Fill "μ–΄μ œ μš”μ•½" (Yesterday Summary) section + +- Read yesterday's daily note from `20_Notes/Journal/YYYY/Mnn/YYYY-MM-DD.md` +- Summarize: + - Completed tasks (marked with `[x]`) + - Main activities from the note content + - Key insights from the Daily Review section +- List any incomplete tasks from yesterday +- Update the wikilink to yesterday's date: `[[YYYY-MM-DD]]` + +### 3. Handle "였늘 μ΄μ–΄μ„œ ν•  일" (Tasks to Continue Today) section - TaskNotes format + +- Extract incomplete tasks from yesterday in TaskNotes format: `- [ ] [[Task Name]]` +- Exclude completed tasks: `- [x] [[Task Name]] βœ… YYYY-MM-DD` +- **Update scheduled date for overdue tasks:** + - For each incomplete task from yesterday, read the task file from `00_Inbox/Tasks/` + - If the task's `scheduled` date in frontmatter is before today, update it to today's date (YYYY-MM-DD) + - This ensures overdue tasks are rescheduled to today +- If user provides new tasks, add them as `- [ ] [[Task Name]]` wikilinks +- TaskNotes: Tasks are individual markdown files in `00_Inbox/Tasks/` folder + +### 4. Fill "κ΄€λ ¨ λ…ΈνŠΈ" (Related Notes) section automatically + +- Extract wikilinks from yesterday's Notes section +- Extract task paths from yesterday's YAML `pomodoros` array (taskPath field) +- Remove duplicates and list as `- [[Note Name]]` +- This provides automatic tracking of what notes/tasks you worked on yesterday + +### 5. Leave empty sections as-is + +These sections are filled by the user during the day: + +- **κ°μ‚¬λ…ΈνŠΈ** (gratitude) - user fills this +- **였늘의 포컀슀** (today's focus) - user defines + +## Output Format + +Provide the complete content to write/update in today's daily note, preserving all frontmatter and structure. + +**Important**: + +- Only modify the "πŸŒ… Daily Notes" section +- Leave "## Notes", "## Retro", and "πŸŒ™ Daily Review" sections untouched +- Preserve all YAML frontmatter (especially pomodoro tracking) + +## Usage + +This skill is called via the `/pkm:daily-setup` command, typically first thing in the morning to prepare your daily note. + +## Integration + +- Works with **Periodic Notes** plugin in Obsidian +- Reads from the daily note template +- Maintains wikilink navigation between dates +- Respects YAML frontmatter structure + +## Example + +**Input**: User runs `/pkm:daily-setup` on 2025-11-19 + +**Process**: + +1. Check if `20_Notes/Journal/2025/M11/2025-11-19.md` exists +2. Read yesterday's note: `20_Notes/Journal/2025/M11/2025-11-18.md` +3. Extract completed tasks and insights from 2025-11-18 +4. Create/update today's note with yesterday's summary +5. Link to yesterday: `[[2025-11-18]]` + +**Output**: Updated daily note with filled "μ–΄μ œ μš”μ•½" section and wikilink navigation ready for the day. diff --git a/skills/temporal/monthly-review/SKILL.md b/skills/temporal/monthly-review/SKILL.md new file mode 100644 index 0000000..0d569e0 --- /dev/null +++ b/skills/temporal/monthly-review/SKILL.md @@ -0,0 +1,137 @@ +--- +name: pkm:monthly-review +description: Generate or update the Monthly Summary section by aggregating weekly notes in Obsidian +--- + +# Monthly Review Skill + +This skill helps you reflect on your month by aggregating data from your weekly notes and generating comprehensive monthly insights. + +## Purpose + +Automatically generate the **πŸ“… Monthly Summary** with: +- Monthly highlights and major achievements +- Monthly KPIs aggregated from weekly data +- Goal progress tracking +- Long-term patterns and trends +- Monthly themes +- Next month's objectives + +## Context + +- **Monthly notes location**: `20_Notes/Journal/YYYY/Mnn/YYYY-Mmm.md` +- **Weekly notes location**: `20_Notes/Journal/YYYY/Mnn/YYYY-Www.md` +- **Obsidian vault**: `~/Obsidian/Altellus` +- **Current month**: Calculate from today's date +- **Review period**: All weekly notes from the current month (typically 4-5 weeks) + +## Workflow + +### 1. Identify the monthly note +- Calculate current month (e.g., `2025-M11` for November) +- Path format: `~/Obsidian/Altellus/20_Notes/Journal/2025/M11/2025-M11.md` +- Create from template if doesn't exist + +### 2. Aggregate weekly notes (TaskNotes format) +- Identify all weekly notes in the current month (e.g., 2025-W44 through 2025-W47) +- Read each weekly note from `20_Notes/Journal/YYYY/Mnn/YYYY-Www.md` +- Extract highlights, KPIs, insights, blockers, and project statuses +- Extract completed tasks: `- [x] [[Task Name]]` + +### 3. Fill "μ›”κ°„ ν•˜μ΄λΌμ΄νŠΈ" (Monthly Highlights) - TaskNotes format +- List 5-7 major achievements across the month +- Use TaskNotes format: `- [x] [[Task Name]]` for highlights +- Significant milestones reached +- Major projects completed or advanced +- Key wins and breakthroughs + +### 4. Fill "μ›”κ°„ KPI" (Monthly KPIs) - TaskNotes format +- **평균 μ™„λ£Œμœ¨** (Average completion rate): Average of weekly completion rates +- **총 Pomodoros**: Sum of all weekly pomodoros +- **μ£Όκ°„ 평균**: Total pomodoros / number of weeks +- Display with emoji: `총 πŸ… x 140 (4μ£Όκ°„)` +- Example format: + - `- 평균 μ™„λ£Œμœ¨: 76% (across 4 weeks)` + - `- 총 Pomodoros: πŸ… x 140` + - `- μ£Όκ°„ 평균: 35 pomodoros/week` + +### 5. Fill "λͺ©ν‘œ 진행도" (Goal Progress) +- Review monthly or quarterly goals +- Track progress on each goal +- Format: `- [[Goal Name]] β€” X% complete / status` +- Note which goals are on track vs behind + +### 6. Fill "🧠 Monthly Themes & Patterns" +- Identify recurring themes across multiple weeks +- What patterns emerged this month? +- What working styles or approaches were most effective? +- Any systemic issues that need addressing? + +### 7. Fill "πŸ“Š Project Portfolio" +- List all projects worked on during the month +- Current status of each project +- Time investment per project (if tracked) +- Format: `- [[Project Name]] β€” status, time invested` + +### 8. Fill "🚧 Persistent Blockers" - TaskNotes format +- Blockers appearing in 2+ weekly reviews: `- [ ] [[Task Name]]` +- Format: `- [ ] [[Task Name]] β€” Xμ£Ό 연속 λ―Έμ™„λ£Œ` +- Long-term obstacles still unresolved +- Dependencies causing repeated delays +- Systemic issues requiring strategic solutions + +### 9. Fill "🎯 λ‹€μŒ 달 λͺ©ν‘œ" (Next Month Objectives) - TaskNotes format +- Based on monthly insights and persistent blockers +- 3-5 key objectives for next month +- Format as TaskNotes checklist: `- [ ] [[Objective]]` +- Connect to unfinished important work +- Include blocker resolution strategies +- Prioritize persistent blocker resolution + +## Output Format + +Provide the complete monthly note content with all sections filled. + +**Important**: +- Aggregate data from actual weekly notes, not assumptions +- Calculate real numbers for KPIs from weekly data +- Preserve frontmatter and template structure +- Look for long-term trends, not just week-to-week variations + +## Usage + +This skill is called via the `/pkm:monthly-review` command, typically at the end of the month (last day or first day of new month). + +## Integration + +- Works with **Periodic Notes** plugin in Obsidian +- Reads weekly notes from the current month +- Aggregates weekly KPI data +- Links to weekly notes using wikilinks + +## Example + +**Input**: User runs `/pkm:monthly-review` on 2025-11-30 (end of November) + +**Process**: +1. Calculate month: `2025-M11` (November) +2. Identify monthly note: `~/Obsidian/Altellus/20_Notes/Journal/2025/M11/2025-M11.md` +3. Find weekly notes in November: W44, W45, W46, W47, W48 (5 weeks) +4. Read each weekly note +5. Extract from each week: + - Weekly highlights + - Completion rate + - Total focus time + - Projects mentioned + - Insights + - Blockers +6. Aggregate and analyze: + - Average completion rate: (75% + 80% + 72% + 78% + 81%) / 5 = 77.2% + - Total focus time: 32 + 28 + 35 + 30 + 33 = 158 hours + - Weekly average: 31.6 hours + - Identify projects: Project A (4 weeks), Project B (3 weeks), Project C (2 weeks) + - Find persistent blockers: Items mentioned in 3+ weeks +7. Identify monthly themes and long-term patterns +8. Set next month's objectives + +**Output**: Complete monthly note with all sections filled based on aggregated monthly data. diff --git a/skills/temporal/weekly-review/SKILL.md b/skills/temporal/weekly-review/SKILL.md new file mode 100644 index 0000000..efccd1e --- /dev/null +++ b/skills/temporal/weekly-review/SKILL.md @@ -0,0 +1,129 @@ +--- +name: pkm:weekly-review +description: Generate or update the Weekly Summary section by aggregating daily notes in Obsidian +--- + +# Weekly Review Skill + +This skill helps you reflect on your week by aggregating data from your daily notes and generating comprehensive weekly insights. + +## Purpose + +Automatically generate the **πŸ“† Weekly Summary** with: +- Weekly highlights and accomplishments +- KPIs (completion rate, total focus time) +- Project status tracking +- Insights and patterns +- Blockers and delayed tasks +- Next week's priorities + +## Context + +- **Weekly notes location**: `20_Notes/Journal/YYYY/Mnn/YYYY-Www.md` +- **Daily notes location**: `20_Notes/Journal/YYYY/Mnn/YYYY-MM-DD.md` +- **Obsidian vault**: `~/Obsidian/Altellus` +- **Current week**: Calculate from today's date +- **Review period**: Past 7 days of daily notes + +## Workflow + +### 1. Identify the weekly note +- Calculate current week number (e.g., `2025-W46`) +- Path format: `~/Obsidian/Altellus/20_Notes/Journal/2025/M11/2025-W46.md` +- Create from template if doesn't exist + +### 2. Aggregate daily notes (TaskNotes format) +- Read the past 7 daily notes from `20_Notes/Journal/` +- Extract completed tasks in TaskNotes format: `- [x] [[Task Name]] βœ… YYYY-MM-DD` +- Extract incomplete tasks: `- [ ] [[Task Name]]` +- Count pomodoros from YAML `pomodoros` array in each daily note +- Collect data from both "πŸŒ… Daily Notes" and "πŸŒ™ Daily Review" sections + +### 3. Fill "μ£Όκ°„ ν•˜μ΄λΌμ΄νŠΈ" (Weekly Highlights) +- List 3-5 major accomplishments this week +- Use TaskNotes format for highlights: `- [x] [[Task Name]]` +- What moved forward? What was completed? +- Focus on significant wins and progress + +### 4. Fill "KPI & μ§€ν‘œ" (KPIs & Metrics) - TaskNotes format +- **μ™„λ£Œμœ¨** (Completion rate): Count completed vs total TaskNotes tasks +- **총 Pomodoros**: Sum `pomodoros` array length from all 7 daily notes +- Display with emoji: `총 πŸ… x 35 (7일간)` +- Show daily average: `일평균: 5 pomodoros/day` +- Example format: + - `- μ™„λ£Œμœ¨: 23/30 tasks (77%)` + - `- 총 Pomodoros: πŸ… x 35` + +### 5. Fill "μ£Όμš” ν”„λ‘œμ νŠΈ μƒνƒœ" (Project Status) +- Identify projects mentioned across the week +- Track progress and current status +- Format: `- [[Project Name]] β€” status description` + +### 6. Fill "🧠 Insights" +- Patterns discovered across the week +- What worked well consistently? +- What recurring issues appeared? +- Any systemic improvements needed? + +### 7. Fill "⏱ Time & Energy" +- Project-wise time breakdown +- Energy flow observations (when was most productive?) +- Time allocation vs. planned focus areas + +### 8. Fill "🧱 Blockers" - TaskNotes format +- Find TaskNotes tasks appearing 3+ days without completion: `- [ ] [[Task Name]]` +- Format: `- [ ] [[Task Name]] β€” X일 연속 λ―Έμ™„λ£Œ` +- Recurring obstacles that appeared multiple times +- External dependencies blocking progress +- Identify root causes if visible + +### 9. Fill "🎯 λ‹€μŒ μ£Ό μš°μ„ μˆœμœ„" (Next Week Priorities) - TaskNotes format +- Based on blockers and incomplete work +- Format as TaskNotes checklist: `- [ ] [[Priority Task]]` +- Connect to blocker resolutions +- Include carried-forward important tasks +- Prioritize delayed tasks from blockers section + +## Output Format + +Provide the complete weekly note content with all sections filled. + +**Important**: +- Pull data from actual daily notes, not assumptions +- Calculate real numbers for KPIs from TaskNotes YAML frontmatter +- Preserve frontmatter and template structure +- Base all insights on actual data from the 7 daily notes + +## Usage + +This skill is called via the `/pkm:weekly-review` command, typically on Friday evening or Sunday evening to reflect on the week. + +## Integration + +- Works with **Periodic Notes** plugin in Obsidian +- Reads daily notes from the past 7 days +- Aggregates YAML frontmatter data (pomodoros) +- Links to daily notes using wikilinks + +## Example + +**Input**: User runs `/pkm:weekly-review` on 2025-11-22 (Friday of week 47) + +**Process**: +1. Calculate week number: `2025-W47` +2. Identify weekly note: `~/Obsidian/Altellus/20_Notes/Journal/2025/M11/2025-W47.md` +3. Read 7 daily notes: 2025-11-16 through 2025-11-22 +4. Extract from each daily note: + - Completed tasks from "였늘 μ™„λ£Œ" + - Pomodoros from YAML frontmatter + - Insights from "μΈμ‚¬μ΄νŠΈ" + - Projects mentioned + - Incomplete tasks +5. Aggregate and analyze: + - Count total tasks: 23 completed / 30 total = 77% + - Sum pomodoros: 58 total = 29 hours + - Identify projects: Project A, Project B, Project C + - Find blockers: Tasks mentioned 3+ days +6. Generate insights and priorities + +**Output**: Complete weekly note with all 9 sections filled based on actual weekly data.