--- name: weekly-digests description: Generate a serial week-by-week narrative digest of a project's full claude-mem timeline. Splits the timeline into per-ISO-week files, then runs one consecutive subagent per week — each receiving the prior week's carry-forward block — to produce one chapter per ISO week of data. Use when asked for "weekly digests", "week-by-week story", "serial timeline", or "narrative chapters" of a project's history. --- # Weekly Digests Produce a serial, multi-chapter narrative digest of a project's complete claude-mem history. Differs from `timeline-report` (one long report) — this generates one digest *per ISO week*, with each subagent reading the prior week's carry-forward block so the story stays coherent. **The chapter count equals the number of ISO weeks the timeline covers.** A project with 2 weeks of data produces 2 chapters; one with 30 weeks produces 30. There is no fixed length — count the weeks first, then drive the pipeline off that count. ## When to Use Trigger when the user asks for: - "Weekly digests" - "Week-by-week story" - "Serial timeline" - "Story chapters of [project]" - "Run a digest for each week" - "Continue the story week by week" If the user wants a single sweeping report, use `timeline-report` instead. This skill is for serial chapter format. ## Prerequisites - claude-mem worker running - Project has at least one ISO week of observations (the pipeline degenerates gracefully — even N=1 works) - A clean output directory the user is comfortable writing into **Resolve the worker port** (do this once, reuse `$WORKER_PORT`): ```bash WORKER_PORT="${CLAUDE_MEM_WORKER_PORT:-$(node -e "const fs=require('fs'),p=require('path'),os=require('os');const uid=(typeof process.getuid==='function'?process.getuid():77);const fallback=String(37700+(uid%100));try{const s=JSON.parse(fs.readFileSync(p.join(os.homedir(),'.claude-mem','settings.json'),'utf-8'));process.stdout.write(String(s.CLAUDE_MEM_WORKER_PORT||fallback));}catch{process.stdout.write(fallback);}" 2>/dev/null)}" ``` ## Workflow ### Step 1: Determine the Project Name Same worktree-detection pattern as `timeline-report`. In a worktree, the data source is the **parent project**: ```bash git_dir=$(git rev-parse --git-dir 2>/dev/null) git_common_dir=$(git rev-parse --git-common-dir 2>/dev/null) if [ "$git_dir" != "$git_common_dir" ]; then parent_project=$(basename "$(dirname "$git_common_dir")") else parent_project=$(basename "$PWD") fi echo "$parent_project" ``` ### Step 2: Fetch the Full Timeline and Save It ```bash mkdir -p .scratch curl -s "http://localhost:${WORKER_PORT}/api/context/inject?project=PROJECT_NAME&full=true" \ > .scratch/cm-timeline.md wc -l .scratch/cm-timeline.md ``` Sanity-check: confirm the file is non-empty and has the expected structure (preamble, then date headers like `### Mon DD, YYYY`, then numeric observation lines `