/journal-recall Workflow
Inputs
User provides:
- Natural language query describing what to find (date, keyword, topic, project, etc.)
- Optional: date range, entry type filter, project name
Scope parameters:
JOURNAL_BASE: ~/journal/ (hardcoded, matches /journal skill)
- Entry types: daily, meetings, projects, learnings, decisions
- Search modes: date lookup, date range, keyword search, topic search, project filter, weekly review
Step 0 — Classify Intent
Action: Determine what type of retrieval the user wants.
Intent classification:
- Specific date lookup: User mentions a date ("yesterday", "Feb 23", "2026-02-22", "last Tuesday")
- Date range: User mentions a span ("this week", "last month", "between X and Y")
- Keyword search: User provides search terms ("worktree isolation", "Docker socket")
- Topic/project: User asks about a specific topic or project ("what did I do on claude-devkit?")
- Meeting lookup: User asks about meetings ("what meetings did I have?", "standup notes")
- Weekly review: User asks for a summary ("summarize this week", "weekly review", "what happened this week")
- Project status: User asks about a project's current state ("what's the status of X?", "where am I on X?")
Disambiguation:
- If intent unclear, default to keyword search across all entries
- For time-based queries, resolve relative dates ("yesterday" = YYYY-MM-DD, "this week" = past 7 days)
Tool declarations: Bash (date calculations for relative dates)
Output: Search intent classification and search parameters
Step 1 — Retrieve Entries
Action: Use appropriate tools to find and read matching journal entries.
Retrieval strategies by intent:
Specific date lookup:
- Read
daily/YYYY-MM-DD.md directly
- If date is in past and daily entry doesn't exist, report "No daily entry for YYYY-MM-DD"
- Also check for meetings/decisions on that date using Glob:
meetings/YYYY-MM-DD-*.md, decisions/YYYY-MM-DD-*.md
Date range:
- Use Glob to find all daily entries in range:
daily/*.md
- Filter by date range (parse YYYY-MM-DD from filename)
- Use Glob for meetings/decisions in range
- Read all matching files
Keyword search:
- Use Grep with content output mode to search across all journal directories
- Pattern: user's search terms (case-insensitive)
- Glob pattern:
*.md (search all markdown files)
- Context: 3 lines before/after match for readability
- Return: file paths and matching excerpts
Topic/project search:
- Use Grep to find mentions of topic/project name
- Search in YAML frontmatter (
projects: [name]) and wikilinks ([[projects/name]])
- Also directly read
projects/{name}.md if it exists
Meeting lookup:
- Use Glob to find all meetings:
meetings/*.md
- Optionally filter by date range or keyword
- Read matching files
Weekly review:
- Calculate date range for "this week" or "last week" (Mon-Sun or last 7 days)
- Use Glob to find all daily entries in range
- Read all daily files
- Summarize: projects worked on, key wins, decisions made, learnings captured
Project status:
- Read
projects/{name}.md directly
- Extract: current status (YAML frontmatter), recent activity (Work Log section), open questions
- Also search daily entries for recent mentions
Tool declarations: Read (specific files), Glob (find files by pattern), Grep (keyword search), Bash (date calculations)
Checkpoint: Retrieved all matching entries
Step 2 — Present Results
Action: Format and present the retrieved information based on intent.
Presentation formats:
Specific date lookup:
- Show full daily entry for that date
- List any meetings or decisions from that date
- Format: markdown with clear sections
Date range:
- Show abbreviated daily entries (date + Morning Intention + key wins)
- List meetings and decisions in chronological order
- Format: bulleted timeline
Keyword search:
- Show file path, date (extracted from filename), and matching excerpt for each result
- Highlight search term context (3 lines before/after)
- Format: search result blocks with file references
- Example:
Found in: daily/2026-02-23.md
Date: 2026-02-23
Context:
...
- **Claude-devkit work:** Fixed Vertex AI model resolution issue — all Task tool calls used short aliases (`model=opus`, `model=sonnet`) that fail on Vertex. Standardized all 15 instances across 5 skills to use full IDs (`claude-opus-4-6`, `claude-sonnet-4-5`).
...
Topic/project search:
- Show project overview (from
projects/{name}.md)
- List recent daily entries mentioning the project (past 30 days)
- List related learnings and decisions
- Format: structured summary with links
Meeting lookup:
- List all meetings in chronological order
- For each meeting: date, title, attendees, key decisions, action items
- Format: bulleted list with meeting metadata
Weekly review:
- Summary sections:
- Date range: (Mon-Sun or last 7 days)
- Projects worked on: (unique list from all daily entries)
- Key wins: (aggregated from daily Wins sections)
- Decisions made: (list all decisions from the week)
- Learnings: (list all learnings from the week)
- Carry-overs: (open items from last daily entry)
- Format: structured markdown summary
Project status:
- Overview: (from project file)
- Current status: (YAML frontmatter
status field)
- Recent activity: (last 3 entries from Work Log)
- Open questions: (from project file)
- Recent daily mentions: (grep daily/ for project name, last 7 days)
- Format: structured report
Tool declarations: None (output formatting only)
Checkpoint: Results formatted and ready to present
Step 3 — Handle Missing Data
Action: Report clearly if no entries found, suggest alternatives.
No results handling:
- If specific date has no entry: "No daily entry found for YYYY-MM-DD. Nearest entries: [list files within ±3 days]"
- If keyword search returns no results: "No matches found for '{keyword}' in journal. Try broader terms or check spelling."
- If project doesn't exist: "No project file found for '{name}'. Available projects: [list all projects/*.md]"
- If date range is empty: "No entries found for {date range}. First entry: YYYY-MM-DD, last entry: YYYY-MM-DD"
Always include verdict:
- Success (results found):
PASS: found N entries matching '{query}'
- Success (no results):
PASS: no entries found for '{query}' (searched N files)
- Never use FAIL for legitimate "no results" scenarios (that's a successful search with zero matches)
Tool declarations: Glob (to find nearest entries or list available projects)
Checkpoint: Missing data handled, verdict reported
Timestamped Artifacts
Not applicable: Journal recall is a read-only search operation, not a workflow that produces artifacts.
Bounded Iterations
Not applicable: Journal search is a single-pass retrieval operation.
Archive on Success
Not applicable: Journal recall produces output directly to the user, not intermediate artifacts requiring archival.
1---2name: journal-recall3description: Search, retrieve, and summarize past journal entries. Use when the user says "what did I", "recall", "look up", "find in journal", "journal search", "last week", "weekly review", "what happened on", "summarize my week", "what have I been working on", "review my journal", or asks about past work, decisions, meetings, or notes.4---56# /journal-recall Workflow78## Inputs910**User provides:**11- Natural language query describing what to find (date, keyword, topic, project, etc.)12- Optional: date range, entry type filter, project name1314**Scope parameters:**15- `JOURNAL_BASE`: `~/journal/` (hardcoded, matches /journal skill)16- Entry types: daily, meetings, projects, learnings, decisions17- Search modes: date lookup, date range, keyword search, topic search, project filter, weekly review1819## Step 0 — Classify Intent2021**Action:** Determine what type of retrieval the user wants.2223**Intent classification:**241. **Specific date lookup**: User mentions a date ("yesterday", "Feb 23", "2026-02-22", "last Tuesday")252. **Date range**: User mentions a span ("this week", "last month", "between X and Y")263. **Keyword search**: User provides search terms ("worktree isolation", "Docker socket")274. **Topic/project**: User asks about a specific topic or project ("what did I do on claude-devkit?")285. **Meeting lookup**: User asks about meetings ("what meetings did I have?", "standup notes")296. **Weekly review**: User asks for a summary ("summarize this week", "weekly review", "what happened this week")307. **Project status**: User asks about a project's current state ("what's the status of X?", "where am I on X?")3132**Disambiguation:**33- If intent unclear, default to keyword search across all entries34- For time-based queries, resolve relative dates ("yesterday" = YYYY-MM-DD, "this week" = past 7 days)3536**Tool declarations:** Bash (date calculations for relative dates)3738**Output:** Search intent classification and search parameters3940## Step 1 — Retrieve Entries4142**Action:** Use appropriate tools to find and read matching journal entries.4344**Retrieval strategies by intent:**4546**Specific date lookup:**47- Read `daily/YYYY-MM-DD.md` directly48- If date is in past and daily entry doesn't exist, report "No daily entry for YYYY-MM-DD"49- Also check for meetings/decisions on that date using Glob: `meetings/YYYY-MM-DD-*.md`, `decisions/YYYY-MM-DD-*.md`5051**Date range:**52- Use Glob to find all daily entries in range: `daily/*.md`53- Filter by date range (parse YYYY-MM-DD from filename)54- Use Glob for meetings/decisions in range55- Read all matching files5657**Keyword search:**58- Use Grep with content output mode to search across all journal directories59- Pattern: user's search terms (case-insensitive)60- Glob pattern: `*.md` (search all markdown files)61- Context: 3 lines before/after match for readability62- Return: file paths and matching excerpts6364**Topic/project search:**65- Use Grep to find mentions of topic/project name66- Search in YAML frontmatter (`projects: [name]`) and wikilinks (`[[projects/name]]`)67- Also directly read `projects/{name}.md` if it exists6869**Meeting lookup:**70- Use Glob to find all meetings: `meetings/*.md`71- Optionally filter by date range or keyword72- Read matching files7374**Weekly review:**75- Calculate date range for "this week" or "last week" (Mon-Sun or last 7 days)76- Use Glob to find all daily entries in range77- Read all daily files78- Summarize: projects worked on, key wins, decisions made, learnings captured7980**Project status:**81- Read `projects/{name}.md` directly82- Extract: current status (YAML frontmatter), recent activity (Work Log section), open questions83- Also search daily entries for recent mentions8485**Tool declarations:** Read (specific files), Glob (find files by pattern), Grep (keyword search), Bash (date calculations)8687**Checkpoint:** Retrieved all matching entries8889## Step 2 — Present Results9091**Action:** Format and present the retrieved information based on intent.9293**Presentation formats:**9495**Specific date lookup:**96- Show full daily entry for that date97- List any meetings or decisions from that date98- Format: markdown with clear sections99100**Date range:**101- Show abbreviated daily entries (date + Morning Intention + key wins)102- List meetings and decisions in chronological order103- Format: bulleted timeline104105**Keyword search:**106- Show file path, date (extracted from filename), and matching excerpt for each result107- Highlight search term context (3 lines before/after)108- Format: search result blocks with file references109- Example:110 ```111 Found in: daily/2026-02-23.md112 Date: 2026-02-23113 Context:114 ...115 - **Claude-devkit work:** Fixed Vertex AI model resolution issue — all Task tool calls used short aliases (`model=opus`, `model=sonnet`) that fail on Vertex. Standardized all 15 instances across 5 skills to use full IDs (`claude-opus-4-6`, `claude-sonnet-4-5`).116 ...117 ```118119**Topic/project search:**120- Show project overview (from `projects/{name}.md`)121- List recent daily entries mentioning the project (past 30 days)122- List related learnings and decisions123- Format: structured summary with links124125**Meeting lookup:**126- List all meetings in chronological order127- For each meeting: date, title, attendees, key decisions, action items128- Format: bulleted list with meeting metadata129130**Weekly review:**131- Summary sections:132 - **Date range:** (Mon-Sun or last 7 days)133 - **Projects worked on:** (unique list from all daily entries)134 - **Key wins:** (aggregated from daily Wins sections)135 - **Decisions made:** (list all decisions from the week)136 - **Learnings:** (list all learnings from the week)137 - **Carry-overs:** (open items from last daily entry)138- Format: structured markdown summary139140**Project status:**141- **Overview:** (from project file)142- **Current status:** (YAML frontmatter `status` field)143- **Recent activity:** (last 3 entries from Work Log)144- **Open questions:** (from project file)145- **Recent daily mentions:** (grep daily/ for project name, last 7 days)146- Format: structured report147148**Tool declarations:** None (output formatting only)149150**Checkpoint:** Results formatted and ready to present151152## Step 3 — Handle Missing Data153154**Action:** Report clearly if no entries found, suggest alternatives.155156**No results handling:**157- If specific date has no entry: "No daily entry found for YYYY-MM-DD. Nearest entries: [list files within ±3 days]"158- If keyword search returns no results: "No matches found for '{keyword}' in journal. Try broader terms or check spelling."159- If project doesn't exist: "No project file found for '{name}'. Available projects: [list all projects/*.md]"160- If date range is empty: "No entries found for {date range}. First entry: YYYY-MM-DD, last entry: YYYY-MM-DD"161162**Always include verdict:**163- Success (results found): `PASS: found N entries matching '{query}'`164- Success (no results): `PASS: no entries found for '{query}' (searched N files)`165- Never use FAIL for legitimate "no results" scenarios (that's a successful search with zero matches)166167**Tool declarations:** Glob (to find nearest entries or list available projects)168169**Checkpoint:** Missing data handled, verdict reported170171## Timestamped Artifacts172173**Not applicable:** Journal recall is a read-only search operation, not a workflow that produces artifacts.174175## Bounded Iterations176177**Not applicable:** Journal search is a single-pass retrieval operation.178179## Archive on Success180181**Not applicable:** Journal recall produces output directly to the user, not intermediate artifacts requiring archival.