Weekly Digest Synthesizer
This skill compiles status updates from multiple local .md and .txt files into a structured weekly digest. It groups content by project area, surfaces action items and blockers, and outputs a ready-to-share markdown file named weekly-digest-YYYY-MM-DD.md.
Input:
- Folder path or list of
.md / .txt files containing status updates
- Optional: digest date (defaults to today), output format preference (concise / detailed)
Output:
weekly-digest-YYYY-MM-DD.md — structured digest with Summary, Projects, Action Items table, Risks & Blockers
Language Detection
Detect the user's language from their message:
- If Russian (or contains Cyrillic): respond in Russian
- If English (or other Latin-script language): respond in English
- If ambiguous: respond in the language of the trigger phrase used
Instructions
Step 1: Validate Input
Determine input source from the user's message:
- Folder path → scan all
.md and .txt files in that folder
- List of files → use those files directly
- No path provided → scan the current working directory for
.md and .txt files
Verify files exist and are readable:
- If no files found: stop. Report "No .md or .txt files found at [path]. Provide a folder path or list of files to process."
- If a specific file path does not exist: stop. Report "File not found: [path]. Check the path and try again."
Check for unsupported file formats:
- If user provides only
.docx, .xlsx, .pdf, or similar: stop. Report "Unsupported file types. This skill processes .md and .txt files only."
Determine digest date:
- If user specifies a date → use that date in output filename
- If not specified → use today's date (YYYY-MM-DD format)
Step 2: Read and Parse Files
Read each file in turn and extract:
- Project or area name: inferred from filename, H1/H2 heading, or leading section header
- Status indicator: on track / at risk / blocked — detected from keywords ("blocked", "delayed", "at risk", "completed", "done", "✅", "⚠️", "🔴") or inferred from context
- Key updates: bullet points, sentences describing progress, decisions, or changes
- Action items: tasks with any mention of owner name and/or due date
- Blockers: sentences or bullets mentioning dependencies, blockers, or unresolved issues
Handle empty or sparse files:
- If a file is empty or contains only headings with no body content: skip it; note in digest footer as "Files with no updates: [filename]"
- If a file has content but no structured indicators: include as raw notes under the filename; add note "No structured status found — raw content included"
Step 3: Group and Deduplicate
Group extracted content by project or area:
- Use project name from file heading if available
- Use filename (without extension) as fallback project name
Identify cross-cutting signals across all files:
- Recurring blockers (same blocker mentioned in 2+ files)
- Action items with no identified owner
- Action items with no due date
- Projects with "blocked" status
Flag possible duplicate projects:
- If two file headings look similar (e.g., "Project Alpha" and "Alpha Q2"): group under a shared section and add note "[Possible duplicates — verify manually]"
- Do not silently merge
Check for large input:
- If 20+ files or total content exceeds ~10,000 words: add a note at digest header: "Large input: [N] files processed. Review for completeness."
Step 4: Check for Existing Output File
- Check if
weekly-digest-[date].md already exists in the working directory:
- If yes: ask user — "File weekly-digest-[date].md already exists. Overwrite or save as weekly-digest-[date]-v2.md?"
- Wait for response before writing
Step 5: Write Digest
- Write
weekly-digest-YYYY-MM-DD.md using the Output Format below
- Populate all sections; mark any empty section explicitly (e.g., "No blockers reported")
- Report in chat: "Digest written: weekly-digest-[date].md — [N] files processed, [N] projects, [N] action items"
Output Format
# Weekly Digest — [Date]
**Compiled from:** [N] files | **Projects covered:** [N] | **Action items:** [N]
[Note if large input: "Large input: N files — review for completeness"]
---
## Summary
[2–4 sentences: overall week health, key progress, main risks or blockers]
---
## Projects
### [Project / Area Name]
- **Status:** ✅ On track / ⚠️ At risk / 🔴 Blocked
- **Updates:** [key progress points, 1–3 bullets]
- **Action items:** [owner] — [action] by [date or TBD]
- **Blockers:** [if any; "None" if clear]
### [Next Project...]
---
## Cross-Cutting Action Items
| Owner | Action | Due | Source File |
|-------|--------|-----|-------------|
| [name or TBD] | [action description] | [date or TBD] | [filename.md] |
---
## Risks & Blockers
- [Blocker or risk description — source: filename.md]
- [Recurring blocker flagged across N files]
---
## Files Processed
Files included: [list]
Files with no updates: [list, or "None"]
[Possible duplicates: [list, or omit if none]]
Field rules:
- Status: use ✅ / ⚠️ / 🔴 based on detected keywords; default to ✅ if no risk signals found
- Action items: include owner when mentioned; use "TBD" if no owner identified; flag "No owner" items in Cross-Cutting section
- Summary: write from extracted content — do not invent progress or add assumptions
Edge Cases
- Empty or heading-only files: Skip; note in "Files with no updates" section
- No structured status indicators: Include raw content; add note "No structured status found"
- Possible duplicate project names: Group together; add "[Possible duplicates — verify manually]" note
- 20+ files or 10,000+ words total: Proceed; add "Large input" note at digest header
- Digest file already exists: Ask user before overwriting
Negative Cases
- No files found: Stop. Report "No .md or .txt files found at [path]."
- Invalid file path: Stop. Report "File not found: [path]."
- Only unsupported file formats: Stop. Report "Unsupported file types. Convert to .md or .txt first."
1---2name: weekly-digest-synthesizer3description: Compile weekly status digests from multiple .md/.txt files. Extracts project updates, action items, and blockers into a structured report. Use when aggregating team status notes into a weekly summary. Triggers: 'compile weekly digest', 'weekly digest', 'составь дайджест', 'скомпилируй статусы'.4---56# Weekly Digest Synthesizer78This skill compiles status updates from multiple local `.md` and `.txt` files into a structured weekly digest. It groups content by project area, surfaces action items and blockers, and outputs a ready-to-share markdown file named `weekly-digest-YYYY-MM-DD.md`.910**Input:**11- Folder path or list of `.md` / `.txt` files containing status updates12- Optional: digest date (defaults to today), output format preference (concise / detailed)1314**Output:**15- `weekly-digest-YYYY-MM-DD.md` — structured digest with Summary, Projects, Action Items table, Risks & Blockers1617---1819## Language Detection2021Detect the user's language from their message:22- If Russian (or contains Cyrillic): respond in Russian23- If English (or other Latin-script language): respond in English24- If ambiguous: respond in the language of the trigger phrase used2526---2728## Instructions2930### Step 1: Validate Input31321. Determine input source from the user's message:33 - Folder path → scan all `.md` and `.txt` files in that folder34 - List of files → use those files directly35 - No path provided → scan the current working directory for `.md` and `.txt` files36372. Verify files exist and are readable:38 - If no files found: stop. Report "No .md or .txt files found at [path]. Provide a folder path or list of files to process."39 - If a specific file path does not exist: stop. Report "File not found: [path]. Check the path and try again."40413. Check for unsupported file formats:42 - If user provides only `.docx`, `.xlsx`, `.pdf`, or similar: stop. Report "Unsupported file types. This skill processes .md and .txt files only."43444. Determine digest date:45 - If user specifies a date → use that date in output filename46 - If not specified → use today's date (YYYY-MM-DD format)4748### Step 2: Read and Parse Files49501. Read each file in turn and extract:51 - **Project or area name:** inferred from filename, H1/H2 heading, or leading section header52 - **Status indicator:** on track / at risk / blocked — detected from keywords ("blocked", "delayed", "at risk", "completed", "done", "✅", "⚠️", "🔴") or inferred from context53 - **Key updates:** bullet points, sentences describing progress, decisions, or changes54 - **Action items:** tasks with any mention of owner name and/or due date55 - **Blockers:** sentences or bullets mentioning dependencies, blockers, or unresolved issues56572. Handle empty or sparse files:58 - If a file is empty or contains only headings with no body content: skip it; note in digest footer as "Files with no updates: [filename]"59 - If a file has content but no structured indicators: include as raw notes under the filename; add note "No structured status found — raw content included"6061### Step 3: Group and Deduplicate62631. Group extracted content by project or area:64 - Use project name from file heading if available65 - Use filename (without extension) as fallback project name66672. Identify cross-cutting signals across all files:68 - Recurring blockers (same blocker mentioned in 2+ files)69 - Action items with no identified owner70 - Action items with no due date71 - Projects with "blocked" status72733. Flag possible duplicate projects:74 - If two file headings look similar (e.g., "Project Alpha" and "Alpha Q2"): group under a shared section and add note "[Possible duplicates — verify manually]"75 - Do not silently merge76774. Check for large input:78 - If 20+ files or total content exceeds ~10,000 words: add a note at digest header: "Large input: [N] files processed. Review for completeness."7980### Step 4: Check for Existing Output File81821. Check if `weekly-digest-[date].md` already exists in the working directory:83 - If yes: ask user — "File weekly-digest-[date].md already exists. Overwrite or save as weekly-digest-[date]-v2.md?"84 - Wait for response before writing8586### Step 5: Write Digest87881. Write `weekly-digest-YYYY-MM-DD.md` using the Output Format below892. Populate all sections; mark any empty section explicitly (e.g., "No blockers reported")903. Report in chat: "Digest written: weekly-digest-[date].md — [N] files processed, [N] projects, [N] action items"9192---9394## Output Format9596```markdown97# Weekly Digest — [Date]9899**Compiled from:** [N] files | **Projects covered:** [N] | **Action items:** [N]100[Note if large input: "Large input: N files — review for completeness"]101102---103104## Summary105106[2–4 sentences: overall week health, key progress, main risks or blockers]107108---109110## Projects111112### [Project / Area Name]113- **Status:** ✅ On track / ⚠️ At risk / 🔴 Blocked114- **Updates:** [key progress points, 1–3 bullets]115- **Action items:** [owner] — [action] by [date or TBD]116- **Blockers:** [if any; "None" if clear]117118### [Next Project...]119120---121122## Cross-Cutting Action Items123124| Owner | Action | Due | Source File |125|-------|--------|-----|-------------|126| [name or TBD] | [action description] | [date or TBD] | [filename.md] |127128---129130## Risks & Blockers131132- [Blocker or risk description — source: filename.md]133- [Recurring blocker flagged across N files]134135---136137## Files Processed138139Files included: [list]140Files with no updates: [list, or "None"]141[Possible duplicates: [list, or omit if none]]142```143144**Field rules:**145- Status: use ✅ / ⚠️ / 🔴 based on detected keywords; default to ✅ if no risk signals found146- Action items: include owner when mentioned; use "TBD" if no owner identified; flag "No owner" items in Cross-Cutting section147- Summary: write from extracted content — do not invent progress or add assumptions148149---150151## Edge Cases1521531. **Empty or heading-only files:** Skip; note in "Files with no updates" section1542. **No structured status indicators:** Include raw content; add note "No structured status found"1553. **Possible duplicate project names:** Group together; add "[Possible duplicates — verify manually]" note1564. **20+ files or 10,000+ words total:** Proceed; add "Large input" note at digest header1575. **Digest file already exists:** Ask user before overwriting158159---160161## Negative Cases162163- **No files found:** Stop. Report "No .md or .txt files found at [path]."164- **Invalid file path:** Stop. Report "File not found: [path]."165- **Only unsupported file formats:** Stop. Report "Unsupported file types. Convert to .md or .txt first."