Initial commit
This commit is contained in:
13
.claude-plugin/plugin.json
Normal file
13
.claude-plugin/plugin.json
Normal file
@@ -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",
|
||||||
|
"./"
|
||||||
|
]
|
||||||
|
}
|
||||||
47
.claude/commands/pkm.md
Normal file
47
.claude/commands/pkm.md
Normal file
@@ -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.
|
||||||
60
.claude/commands/pkm:daily-review.md
Normal file
60
.claude/commands/pkm:daily-review.md
Normal file
@@ -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
|
||||||
45
.claude/commands/pkm:daily-setup.md
Normal file
45
.claude/commands/pkm:daily-setup.md
Normal file
@@ -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.
|
||||||
148
.claude/commands/pkm:gcal-add.md
Normal file
148
.claude/commands/pkm:gcal-add.md
Normal file
@@ -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
|
||||||
219
.claude/commands/pkm:gcal-block.md
Normal file
219
.claude/commands/pkm:gcal-block.md
Normal file
@@ -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)
|
||||||
240
.claude/commands/pkm:gcal-complete.md
Normal file
240
.claude/commands/pkm:gcal-complete.md
Normal file
@@ -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
|
||||||
82
.claude/commands/pkm:gcal-today.md
Normal file
82
.claude/commands/pkm:gcal-today.md
Normal file
@@ -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
|
||||||
69
.claude/commands/pkm:monthly-review.md
Normal file
69
.claude/commands/pkm:monthly-review.md
Normal file
@@ -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
|
||||||
67
.claude/commands/pkm:weekly-review.md
Normal file
67
.claude/commands/pkm:weekly-review.md
Normal file
@@ -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
|
||||||
3
README.md
Normal file
3
README.md
Normal file
@@ -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
|
||||||
349
SKILL.md
Normal file
349
SKILL.md
Normal file
@@ -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/`.
|
||||||
101
plugin.lock.json
Normal file
101
plugin.lock.json
Normal file
@@ -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": []
|
||||||
|
}
|
||||||
|
}
|
||||||
337
skills/integration/gcalcli/SKILL.md
Normal file
337
skills/integration/gcalcli/SKILL.md
Normal file
@@ -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 <YYYY-MM-DD>`
|
||||||
|
|
||||||
|
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)
|
||||||
111
skills/temporal/daily-review/SKILL.md
Normal file
111
skills/temporal/daily-review/SKILL.md
Normal file
@@ -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.
|
||||||
100
skills/temporal/daily-setup/SKILL.md
Normal file
100
skills/temporal/daily-setup/SKILL.md
Normal file
@@ -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.
|
||||||
137
skills/temporal/monthly-review/SKILL.md
Normal file
137
skills/temporal/monthly-review/SKILL.md
Normal file
@@ -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.
|
||||||
129
skills/temporal/weekly-review/SKILL.md
Normal file
129
skills/temporal/weekly-review/SKILL.md
Normal file
@@ -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.
|
||||||
Reference in New Issue
Block a user