From 014d30daebf8d8b1da8f2db7d97ecf99622c4d90 Mon Sep 17 00:00:00 2001 From: yxtay <5795122+yxtay@users.noreply.github.com> Date: Fri, 17 Jul 2026 17:23:03 +0800 Subject: [PATCH 1/4] feat: add daily-summary skill Add skill that generates a repo-grouped standup digest from memsearch activity logs for a given date (defaults to yesterday). Co-Authored-By: Claude Sonnet 4.6 (1M context) --- .../skills/daily-summary/SKILL.md | 37 +++++++++++++++++++ .../skills/symlink_daily-summary | 1 + 2 files changed, 38 insertions(+) create mode 100644 chezmoi/private_dot_agents/skills/daily-summary/SKILL.md create mode 100644 chezmoi/private_dot_claude/skills/symlink_daily-summary diff --git a/chezmoi/private_dot_agents/skills/daily-summary/SKILL.md b/chezmoi/private_dot_agents/skills/daily-summary/SKILL.md new file mode 100644 index 00000000..36fd5a95 --- /dev/null +++ b/chezmoi/private_dot_agents/skills/daily-summary/SKILL.md @@ -0,0 +1,37 @@ +--- +name: daily-summary +description: Daily standup digest from memsearch activity logs, grouped by repo. +disable-model-invocation: true +argument-hint: "" +--- + +# Daily Summary + +Produce a **standup** — a repo-grouped bullet digest of the day's work — from +the memsearch memory log for the requested date. + +## Steps + +1. **Date** — use `args` (format `YYYY-MM-DD`); default to yesterday if omitted. + +2. **Load** — read `~/.memsearch/memory/.md`. Stop and tell the user if the file is missing. + +3. **Map** — identify every repo mentioned; assign each task to the repo where + the code change happened. Done when every distinct repo is identified and + every substantive task is assigned. + +4. **Output** the standup in a fenced code block. No preamble. One bullet per + distinct task. Each bullet ≤10 words. Nest sub-tasks only when they are + genuinely distinct steps of the parent, not just elaborations. Max 2 levels. + Skip sessions with no substantive outcome. + +````text +``` +- `` + - + - + - +- `` + - +``` +```` diff --git a/chezmoi/private_dot_claude/skills/symlink_daily-summary b/chezmoi/private_dot_claude/skills/symlink_daily-summary new file mode 100644 index 00000000..046b4635 --- /dev/null +++ b/chezmoi/private_dot_claude/skills/symlink_daily-summary @@ -0,0 +1 @@ +../../.agents/skills/daily-summary From 1388a4a481c680ed6bb228862b28fee844f51faf Mon Sep 17 00:00:00 2001 From: yxtay <5795122+yxtay@users.noreply.github.com> Date: Fri, 17 Jul 2026 20:17:50 +0800 Subject: [PATCH 2/4] fix(daily-summary): address review comments - Use $ARGUMENTS instead of args for argument binding - Change argument-hint to optional bracket syntax [YYYY-MM-DD] - Add timezone + date validation (calendar-valid YYYY-MM-DD only) - Add Other fallback group for tasks not tied to a repo - Clarify nesting: one level deep only, resolve "max 2 levels" contradiction Co-Authored-By: Claude Sonnet 4.6 (1M context) --- .../skills/daily-summary/SKILL.md | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/chezmoi/private_dot_agents/skills/daily-summary/SKILL.md b/chezmoi/private_dot_agents/skills/daily-summary/SKILL.md index 36fd5a95..f2dda4c6 100644 --- a/chezmoi/private_dot_agents/skills/daily-summary/SKILL.md +++ b/chezmoi/private_dot_agents/skills/daily-summary/SKILL.md @@ -2,7 +2,7 @@ name: daily-summary description: Daily standup digest from memsearch activity logs, grouped by repo. disable-model-invocation: true -argument-hint: "" +argument-hint: "[YYYY-MM-DD]" --- # Daily Summary @@ -12,18 +12,22 @@ the memsearch memory log for the requested date. ## Steps -1. **Date** — use `args` (format `YYYY-MM-DD`); default to yesterday if omitted. +1. **Date** — use `$ARGUMENTS` if provided; default to yesterday in the local + timezone if omitted. Validate the value is a calendar-valid `YYYY-MM-DD` + (digits only, no path separators or other characters). Reject and report any + malformed input before proceeding. 2. **Load** — read `~/.memsearch/memory/.md`. Stop and tell the user if the file is missing. 3. **Map** — identify every repo mentioned; assign each task to the repo where - the code change happened. Done when every distinct repo is identified and - every substantive task is assigned. + the code change happened. Tasks not tied to any specific repo go under + `Other`. Done when every distinct repo is identified and every substantive + task is assigned. 4. **Output** the standup in a fenced code block. No preamble. One bullet per - distinct task. Each bullet ≤10 words. Nest sub-tasks only when they are - genuinely distinct steps of the parent, not just elaborations. Max 2 levels. - Skip sessions with no substantive outcome. + distinct task. Each bullet ≤10 words. Under each repo, nest sub-tasks (one + level deep) only when they are genuinely distinct steps of the parent, not + just elaborations. Skip sessions with no substantive outcome. ````text ``` @@ -33,5 +37,7 @@ the memsearch memory log for the requested date. - - `` - +- Other + - ``` ```` From 49d2fefde66f37e0642178d7124242ded3fddfdf Mon Sep 17 00:00:00 2001 From: yxtay <5795122+yxtay@users.noreply.github.com> Date: Fri, 17 Jul 2026 21:21:56 +0800 Subject: [PATCH 3/4] fix(daily-summary): address code review findings - Clarify $ARGUMENTS handling: treat absent or empty string as omitted, default to yesterday (fixes empty-arg treated as malformed) - Fix nesting anchor: "under each task" not "under each repo" to match template - Define "substantive outcome" concretely: skip only pure read/search/ investigation sessions with no resulting change or decision - Add daily-summary to README Current plugins list Co-Authored-By: Claude Sonnet 4.6 (1M context) --- README.md | 1 + .../skills/daily-summary/SKILL.md | 15 ++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index b922acd0..d894b294 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ Loaded automatically as `okf@skills-dir` on session start — no install step. Current plugins: - `okf` — OKF skill + SessionEnd hook that distills memsearch journals into the `~/wiki` OKF bundle +- `daily-summary` — standup digest skill that groups the day's memsearch activity log by repository ## License diff --git a/chezmoi/private_dot_agents/skills/daily-summary/SKILL.md b/chezmoi/private_dot_agents/skills/daily-summary/SKILL.md index f2dda4c6..53ecb855 100644 --- a/chezmoi/private_dot_agents/skills/daily-summary/SKILL.md +++ b/chezmoi/private_dot_agents/skills/daily-summary/SKILL.md @@ -12,10 +12,10 @@ the memsearch memory log for the requested date. ## Steps -1. **Date** — use `$ARGUMENTS` if provided; default to yesterday in the local - timezone if omitted. Validate the value is a calendar-valid `YYYY-MM-DD` - (digits only, no path separators or other characters). Reject and report any - malformed input before proceeding. +1. **Date** — use `$ARGUMENTS` if provided and non-empty; treat absent or + empty as omitted and default to yesterday. Validate the value is a + calendar-valid `YYYY-MM-DD`. Reject and report any malformed input before + proceeding. 2. **Load** — read `~/.memsearch/memory/.md`. Stop and tell the user if the file is missing. @@ -25,9 +25,10 @@ the memsearch memory log for the requested date. task is assigned. 4. **Output** the standup in a fenced code block. No preamble. One bullet per - distinct task. Each bullet ≤10 words. Under each repo, nest sub-tasks (one - level deep) only when they are genuinely distinct steps of the parent, not - just elaborations. Skip sessions with no substantive outcome. + distinct task. Each bullet ≤12 words. Under each task, nest sub-tasks one + level deep only when they are genuinely distinct steps of the parent, not + just elaborations. Skip sessions where all entries are reads, searches, or + investigations with no resulting change or decision. ````text ``` From e30de32eed64da1d69e570b938438458b9f7570f Mon Sep 17 00:00:00 2001 From: yxtay <5795122+yxtay@users.noreply.github.com> Date: Fri, 17 Jul 2026 21:24:13 +0800 Subject: [PATCH 4/4] refactor(daily-summary): prune no-ops and tighten per writing-great-skills - Remove tautological Map completion criterion - Collapse "if provided and non-empty; treat absent or empty as omitted" to "if non-empty" (same meaning, half the tokens) - Drop "before proceeding" no-op in date step - Drop "identify every repo mentioned" (implied by assign) - Compact Output constraints to one line - Replace session-filter enumeration with leading word "exploration" Co-Authored-By: Claude Sonnet 4.6 (1M context) --- .../skills/daily-summary/SKILL.md | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/chezmoi/private_dot_agents/skills/daily-summary/SKILL.md b/chezmoi/private_dot_agents/skills/daily-summary/SKILL.md index 53ecb855..28f4bf37 100644 --- a/chezmoi/private_dot_agents/skills/daily-summary/SKILL.md +++ b/chezmoi/private_dot_agents/skills/daily-summary/SKILL.md @@ -7,28 +7,22 @@ argument-hint: "[YYYY-MM-DD]" # Daily Summary -Produce a **standup** — a repo-grouped bullet digest of the day's work — from -the memsearch memory log for the requested date. +Produce a **standup** from the memsearch memory log for the requested date. ## Steps -1. **Date** — use `$ARGUMENTS` if provided and non-empty; treat absent or - empty as omitted and default to yesterday. Validate the value is a - calendar-valid `YYYY-MM-DD`. Reject and report any malformed input before - proceeding. +1. **Date** — use `$ARGUMENTS` if non-empty; default to yesterday. Validate + `YYYY-MM-DD`; reject with an error message on malformed input. 2. **Load** — read `~/.memsearch/memory/.md`. Stop and tell the user if the file is missing. -3. **Map** — identify every repo mentioned; assign each task to the repo where - the code change happened. Tasks not tied to any specific repo go under - `Other`. Done when every distinct repo is identified and every substantive - task is assigned. +3. **Map** — assign each task to the repo where the change happened. Tasks + with no repo go under `Other`. 4. **Output** the standup in a fenced code block. No preamble. One bullet per - distinct task. Each bullet ≤12 words. Under each task, nest sub-tasks one - level deep only when they are genuinely distinct steps of the parent, not - just elaborations. Skip sessions where all entries are reads, searches, or - investigations with no resulting change or decision. + task, ≤12 words. Under each task, nest sub-tasks one level deep only when + they are genuinely distinct steps, not elaborations. Skip sessions with only + exploration and no resulting change or decision. ````text ```