Skip to content

Commit 45ea508

Browse files
committed
docs(skills): improve daily-recap, meeting-note, quick-note with obsidian cli
daily-recap: - add step 2h: dia browser daily activity summary parsing - add bash command to find latest dia context index.html - add instructions for parsing completed/meetings/tomorrow sections - add guidance for merging dia data into synthesis buckets - add gitlab mr link formatting guidance with full url examples - update step 2 description to include 2h in parallel execution meeting-note: - replace manual file creation with obsidian create cli - simplify to use meeting-template for all frontmatter/structure - add post-creation obsidian append instructions for attendees/agenda - add summary field reminder and obsidian property:set example quick-note: - replace manual file creation with obsidian create cli path parameter - simplify to minimal structure (no frontmatter) - add obsidian append for inline content captures - clarify title slug format and newline escaping
1 parent 4d679b7 commit 45ea508

File tree

3 files changed

+70
-57
lines changed

3 files changed

+70
-57
lines changed

ai-stuff/claude/skills/daily-recap/SKILL.md

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ allowed-tools:
1313
- Bash(obsidian create:*)
1414
- Bash(obsidian help:*)
1515
- Bash(sleep:*)
16+
- Bash(ls:*)
17+
- Bash(find:*)
1618
# Slack (read-only)
1719
- mcp__claude_ai_Slack__slack_search_public_and_private
1820
- mcp__claude_ai_Slack__slack_search_public
@@ -54,7 +56,7 @@ Parse from `$ARGUMENTS`:
5456
- If a date like `2026-03-23`: use that
5557
- If empty: use today's date
5658

57-
### Step 2: Gather data (do ALL of these in parallel)
59+
### Step 2: Gather data (do ALL of these in parallel, including 2h)
5860

5961
#### 2a. Today's calendar events
6062

@@ -165,6 +167,30 @@ Look for:
165167
- Unresolved items (pending reviews, open feedback)
166168
- Skip pure automation spam or FYI-only notifications
167169

170+
#### 2h. Dia browser — daily activity summary
171+
172+
Dia is a browser that generates its own daily activity summaries as HTML artifacts. These often capture work context that Slack/Gmail misses (browsing activity, GitLab MR reviews done in the browser, etc.).
173+
174+
**Find and read in one step:**
175+
176+
```bash
177+
find "$HOME/Library/Application Support/Dia/User Data/Profile 1/AgentServer/contexts" -name "index.html" -print0 | xargs -0 ls -t 2>/dev/null | head -1
178+
```
179+
180+
This returns the path to the most recently modified `index.html` across all contexts. **Read that file** using the Read tool.
181+
182+
**Parse the HTML content** — look for these sections (the structure is consistent):
183+
- `.section` with section-label **"Completed"**`.item h3` (title) + `.item p` (description) + `.tag` spans
184+
- `.section` with section-label **"Meetings"**`.meeting` rows with time + title
185+
- `.section` with section-label **"Tomorrow"**`.next-item` rows
186+
187+
**If no context was modified today**, skip this step silently (don't fail).
188+
189+
**Merge Dia data into synthesis (Step 4):**
190+
- Dia "Completed" items → merge into Bucket 1 (what you did today). Avoid duplicating items already captured from Slack/Gmail. Dia tends to have richer descriptions of browser-based work (MR reviews, Datadog investigations, etc.)
191+
- Dia "Tomorrow" items → merge into Bucket 2 (notes for tomorrow)
192+
- Dia tags (e.g. `DEVX-1111`, `Datadog`) → use as context when writing task descriptions, but don't include them literally as Obsidian tags
193+
168194
### Slack filtering guidance
169195

170196
When synthesizing Slack data, apply these filters:
@@ -230,6 +256,8 @@ Write these like a human would — casual, concise, lowercase-ish. Examples from
230256

231257
Keep the voice natural. Don't over-formalize. Use wikilinks for people: `[[ben minter]]`.
232258

259+
**GitLab MR links**: When mentioning MRs, always include a markdown link using the full GitLab URL. GitLab is at `https://git.treatwell.net`. Derive the project path from the Slack/email context (e.g. `devx/k8s-gitops`). Format: `[!31](https://git.treatwell.net/devx/k8s-gitops/-/merge_requests/31)`. Never write bare `!31` without a link.
260+
233261
#### Bucket 2: Forward-looking stuff (`## notes for tomorrow` section)
234262

235263
This goes into the existing `## notes for tomorrow` section. Include:
Lines changed: 23 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,42 @@
11
---
22
name: meeting-note
3-
description: Create a meeting note in the vault with proper frontmatter and structure. Use when starting or documenting a meeting.
4-
tools: Write, Read, Glob
3+
description: "Create a meeting note in the vault with proper frontmatter and structure. Use when the user mentions a meeting, wants to take notes for a call, says 'meeting with X', 'sync with X', 'let me document this call', or is about to join or just finished a meeting."
4+
tools: Bash, Read
55
argument-hint: <meeting title>
66
---
77

88
# Create Meeting Note
99

10-
Create a meeting note in the Obsidian vault following the established template.
10+
Create a meeting note in the Obsidian vault using the `meeting-template` via the Obsidian CLI.
1111

1212
## Instructions
1313

1414
1. Parse the meeting title from: `$ARGUMENTS`
1515
- If no arguments provided, ask for the meeting title
16-
2. Get today's date in `YYYY-MM-DD` format
17-
3. Create the file at: `~/vault/work/meetings/YYYY-MM-DD <title>.md`
18-
- Use the vault path: `/Users/denizgokcin/Library/Mobile Documents/iCloud~md~obsidian/Documents/vault`
16+
2. Create the note using the Obsidian CLI:
17+
```bash
18+
obsidian create name="<meeting title>" template="meeting-template"
19+
```
20+
The template handles everything — frontmatter, date prefix, folder placement (`work/meetings/`), and structure. No need to manually construct paths or content.
21+
3. Confirm creation and report the file path
1922

20-
### File Format
23+
### What the template produces
2124

22-
```markdown
23-
---
24-
date: YYYY-MM-DD HH:mm
25-
type: meeting
26-
client: N/A
27-
tags: meeting
28-
summary: " "
29-
---
30-
tags: [[salonized/meetings/moc]]
31-
Date: [[YYYY-MM-DD]]
32-
33-
# [[YYYY-MM-DD <title>]]
34-
35-
**Attendees**:
36-
-
25+
The meeting-template creates a note at `work/meetings/YYYY-MM-DD <title>.md` with:
26+
- Frontmatter: date, type, client, tags, summary
27+
- Sections: Attendees, Agenda, Questions, Notes, Action Items
28+
- Wikilinks to the daily note and meetings MoC
3729

38-
## Agenda
30+
### After creation
3931

40-
*What is the meeting agenda*
41-
42-
## Questions
43-
-
32+
If the user provided attendees, agenda items, or context in their message, use `obsidian append` to fill in the relevant sections:
33+
```bash
34+
obsidian append file="YYYY-MM-DD <title>" content="- @person1\n- @person2"
35+
```
4436

45-
## Notes
46-
-
37+
### Summary field
4738

48-
## Action Items
39+
The `summary` frontmatter field is important — it powers the meeting views (MoC, date summary, monthly summary). Remind the user to fill it in after the meeting, or offer to set it if they share what the meeting was about:
40+
```bash
41+
obsidian property:set file="YYYY-MM-DD <title>" name="summary" value="discussed X and decided Y"
4942
```
50-
51-
4. Use the current time for the `date` field (YYYY-MM-DD HH:mm format)
52-
5. The H1 title must be a wikilink wrapping the full filename (without .md)
53-
6. Report the created file path when done
Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,35 @@
11
---
22
name: quick-note
3-
description: Quick capture a note to work/random or personal/random. Use for ad-hoc ideas, links, or anything that needs a quick home.
4-
tools: Write, Read, Glob
3+
description: "Quick capture a note to work/random or personal/random. Use when the user says 'jot this down', 'save this thought', 'note to self', 'remember this idea', or mentions a random idea, link, or snippet they want to capture. Also trigger when the user wants to quickly save something without specifying a particular note type."
4+
tools: Bash, Read
55
argument-hint: <note title> [--personal]
66
---
77

88
# Quick Note
99

10-
Quickly capture a note to the vault's random folders.
10+
Quickly capture a note to the vault's random folders using the Obsidian CLI.
1111

1212
## Instructions
1313

1414
1. Parse input from: `$ARGUMENTS`
15-
- If `--personal` flag is present: file to `personal/random/`
15+
- If `--personal` flag is present: target `personal/random/`
1616
- Otherwise: default to `work/random/`
1717
- The remaining text is the note title
1818
- If no arguments: ask what to capture
19-
2. Create the file at the appropriate path:
20-
- Work: `~/vault/work/random/<title-slug>.md`
21-
- Personal: `~/vault/personal/random/<title-slug>.md`
22-
- Use the vault path: `/Users/denizgokcin/Library/Mobile Documents/iCloud~md~obsidian/Documents/vault`
23-
- title-slug: lowercase with spaces (e.g., "devx support bot idea.md")
24-
25-
### File Format
26-
27-
```markdown
28-
# <Title>
29-
30-
<content from conversation or user input>
31-
```
19+
2. Create the note using the Obsidian CLI:
20+
```bash
21+
obsidian create path="<work|personal>/random/<title slug>.md" content="# <Title>"
22+
```
23+
- title slug: lowercase with spaces (e.g., `devx support bot idea.md`)
24+
- No template needed — quick notes are intentionally minimal
25+
3. If the user provided content in the same message, append it:
26+
```bash
27+
obsidian append file="<title slug>" content="<the content>"
28+
```
29+
4. Report the created file path when done
3230

3331
### Rules
3432

35-
- Minimal structure - no frontmatter needed (random notes don't use it)
36-
- Just a title and content
37-
- If the user provides content in the same message, include it
38-
- If only a title, create the note with the title and leave room for content
39-
- Report the created file path when done
33+
- Minimal structure — no frontmatter, just a title and content
34+
- If only a title is given, create the note with just the H1 heading
35+
- Use `\n` for newlines in content values passed to the CLI

0 commit comments

Comments
 (0)