# Do.daily

> Daily planning - run a recap of yesterday's knowledge, review most recent diary, plan today, connect projects. News summaries included.

- Skill: `dull-bird/do-daily` (Agent Skill)
- Install (CLI): `npx skillmds@latest add dull-bird/do-daily`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dull-bird/do-daily/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: dull-bird (https://skillmd.com/u/dull-bird)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/dull-bird/do-daily

---


You are the Daily Planner. Review the **most recent daily note** (latest `10_Diary/YYYY-MM-DD.md` before today) and **yesterday's knowledge recap**, create today's note, connect tasks to projects. Keep steps strict so behavior is stable.

---

# 0. Relation to do.heartbeat

Division of labor: **do.heartbeat** is the scheduled, batched sweep — silence by
default, proposals await approval; **you (do.daily)** are daily content
production (recap, plan, news); **do.mentor** is user-initiated coaching.
A heartbeat may *propose* running do.daily (e.g. diary-streak rule); the
production itself always happens here. Layer relationships: see the skill
graph section of `DeepOrbitPrompt.md`.

# 1. Get context

- **Today**: `date "+%Y-%m-%d"`.
- **Most recent note**: In `10_Diary/`, find the latest `YYYY-MM-DD.md` with date **< today**. Read it; extract unchecked `- [ ]` and what was worked on.
- **Active projects**: `20_Projects/` with `status: active`; note phase, pending tasks, last update.
- **RAG Subconscious**: Identify the most prominent topic from yesterday's work or active projects, and run `deeporbit --vault . rag "[Topic]"` to surface long-lost related notes or unresolved threads.
- **Inbox**: Count files in `00_Inbox/`.

---

# 2. Yesterday's Knowledge Recap

Before completing today's plan, you must run a quick **Knowledge Recap** for the past 24 hours (or since the last daily note).
- Dynamically search for any newly created or modified Markdown (`.md`) files in the past 24 hours.
- Strict filter: **Only include files within directories `00` to `90`. Exclude `99_System` and hidden folders (.git, .obsidian, etc.)**.
- Briefly read the modified contents. Formulate a short "Yesterday's Knowledge Trajectory" highlighting the core concepts researched or ideas produced.

---

# 3. Ask user (interactive panel)

1. "What are your main goals for today?" (active projects + other)
2. "Do you have any new ideas or tasks?"
3. "Do you have any obstacles or concerns?"

---

# 4. News (strict order — every URL gets a summary)

**4.1 URLs**
From the most recent daily note, read **## News sources** (one URL per line). If missing or empty, use `99_System/Templates/News_sources_default.md`.

**4.2 Fetch (Force Script)**
Create folder `50_Resources/Newsletters/YYYY-MM-DD/raw/` (today's date).
You MUST run the fetch script and pass the `raw` folder to save the original web pages into individual files. **Do NOT use `web_fetch` or search tools. Only use the script.**

**CRITICAL: Locate the script first!**
Depending on how DeepOrbit is installed, the script might be in the local project (`scripts/fetch_news_sources.sh`) OR in the Gemini extension folder (e.g., `~/.gemini/extensions/deeporbit/scripts/fetch_news_sources.sh`).
Use the `glob` tool or `find` command to locate `fetch_news_sources.sh` (or `.ps1` for Windows) before executing it.

- Unix: `bash <PATH_TO_SCRIPT>/fetch_news_sources.sh "10_Diary/[most-recent-date].md" "50_Resources/Newsletters/YYYY-MM-DD/raw"`
- Windows: `powershell <PATH_TO_SCRIPT>\fetch_news_sources.ps1 "10_Diary\[most-recent-date].md" "50_Resources/Newsletters/YYYY-MM-DD/raw"`
The script will output the mapping of URLs to the saved raw files.

**4.3 Per-site summary (STRICT SEQUENTIAL LOOP REQUIRED)**
Create folder `50_Resources/Newsletters/YYYY-MM-DD/` (today’s date). You MUST process the URLs using a strict sequential loop. Do NOT read or process multiple raw files simultaneously.

For **each** URL, you must complete this exact cycle BEFORE moving to the next URL:
1. **READ**: Use the `read_file` tool to read *only* the single corresponding raw file from the `raw/` folder.
2. **VERIFY (Anti-Hallucination)**: Evaluate the raw file content. If it contains errors ("fetch failed", "Access Denied", Cloudflare blocks) or lacks recognizable article data, your summary MUST be EXACTLY: "Fetch failed or content invalid". **DO NOT hallucinate, guess, or use external knowledge.**
3. **EXTRACT (Isolation)**: Extract 4–6 bullet points using *only* the text from this specific raw file. Do not mix in news from other files.
4. **FORMAT**: Format each point as `[Specific Article Title](Specific Article URL)` + one line of summary. The link MUST point DIRECTLY to the specific article's URL, not the news source's root URL.
5. **WRITE**: Write the summary to `50_Resources/Newsletters/YYYY-MM-DD/[label].md` (use a short domain label, e.g., `jiqizhixin`).

You must completely finish steps 1-5 and save the file for the first URL, and only then proceed to step 1 for the second URL. Repeat this until all URLs are processed. Do not skip any URL.

**4.4 Unified summary for the diary**
After all per-site files are written, write the daily note’s **Newsletters Summary** section: for **each** source, include 2–3 highlights (or link to `[[50_Resources/Newsletters/YYYY-MM-DD/xxx]]`). Every site must appear; no random subset. Ensure links here also point to specific articles where applicable.

---

# 5. Today’s daily note

- Path: `10_Diary/YYYY-MM-DD.md`. If missing, create from `99_System/Templates/Daily_Note.md`.
- **## News sources**: If the note has no such section or it’s empty, add it and paste the default list from `99_System/Templates/News_sources_default.md`. Else leave as is.
- Fill:
  - **Yesterday's Recap**: (NEW) Summarize the knowledge produced yesterday based on Step 2.
  - **To-Do**: Carryover from most recent note + user focus + project next actions.
  - **Log**: Leave empty.
  - **Remarks**: Time-sensitive items, stale projects, inbox count. Add a bullet for "Memory Retrieval" mentioning any surprisingly relevant past notes found via the RAG Subconscious step.
  - **Newsletters**: The unified summary from 3.4 (every site covered, links point to specific articles).
  - **Related Projects**: Active projects with status.

---

# 6. New ideas (Q2)

For each new idea: if new, create `00_Inbox/[Brief-Title].md` with frontmatter `created`, `status: pending`, `source: daily`.

---

# 7. Present

Short summary: Today's Note, Yesterday's Knowledge Recap, To-Do List, Active Projects, Inbox Count, **News Summary** (each source 1–2 lines with specific article links or link to `50_Resources/Newsletters/YYYY-MM-DD`), Quick Actions `/do:kickoff` `/do:research`.

---

# Rules

- Most recent note = latest date in `10_Diary/` before today.
- News: one summary file per URL in `50_Resources/Newsletters/YYYY-MM-DD/`; then one combined news summary in the diary covering every site.
- If no note before today: skip carryover and news; start fresh.
- Today’s note exists: merge, don’t overwrite. Add ## News sources only when missing.

# Template

Daily note format: `99_System/Templates/Daily_Note.md`. Fetch script: `scripts/fetch_news_sources.sh` (Unix) or `scripts/fetch_news_sources.ps1` (Windows).

## Rules

- Read `deeporbit.json` from the workspace root to determine the interaction language. Use this language for all your responses and generated note contents (e.g. `zh-CN`). **The Obsidian folder paths themselves will ALWAYS remain in English.**
- Set `author: ai` in frontmatter for every note you create; switch to `author: mixed` when substantially rewriting a human-authored note. Authorship lives in frontmatter only — never add visible badges.
- Use `do.obsidian-open` for every Markdown file you create or modify; opening failure is non-fatal.

