| name | weekly-summary |
| description | Summarize your week — synthesizes daily notes, contributions, decisions, and task completions into a structured weekly review with self-reflection prompts. Appends a new section each run. Includes team health snapshot when enabled. |
| user-invocable | true |
| argument-hint | [week of YYYY-MM-DD | last week] |
myna-weekly-summary
If vault_path is not in context, read ~/.myna/config.yaml first. If the file does not exist, tell the user to run /myna:setup and stop.
Generates or updates the weekly summary. Each run appends a fresh ## Weekly Summary — {date} section to the weekly note. Re-runs are additive — previous sections stay untouched.
Intent check: Before reading an external source (email/Slack/calendar) or making your first vault write — proceed only if the user's request addressed Myna (contains "myna") or explicitly named this action. Otherwise, confirm intent before proceeding.
Step 1: Determine Target Week
No argument: Default to the current week (Monday–Sunday, using today's date and timezone from workspace.yaml).
"last week": Previous Monday–Sunday.
Specific date: "week of April 7" → find the Monday for that week.
Weekly note path: Journal/{YYYY-W\d\d}.md (e.g. 2026-W18.md)
Step 2: Read Config
Read workspace.yaml:
user.role → context only (used for display in output, does not select categories)
Step 3: Read Existing Weekly Note
Read the weekly note if it exists. Note any prior "Weekly Summary" sections for context. Each run always appends a full new summary section — do not skip or abbreviate because a prior section exists.
Step 4: Gather Weekly Data
Read in parallel:
Daily notes for the week: Glob both Journal/{YYYY-MM-DD}.md and Journal/Archive/Daily/{YYYY-MM-DD}.md for each weekday — prior notes are archived to Journal/Archive/Daily/ after each sync run. From each found daily note, extract:
- End of Day "Completed" items (from wrap-up sections, if they exist)
- End of Day "Not started" / "Partially done" items that ended up carrying forward
- Any quick notes from wrap-up sections
Contributions log: Read Journal/contributions-{YYYY-MM-DD}.md (Monday date). Collect all entries for the week.
Decisions logged this week: Grep {vault.path}/Projects/ for [!info] Decision blocks with dates in the target week.
Blockers this week: Grep {vault.path}/Projects/ for [!warning] Blocker blocks with dates in the target week, plus any blockers that opened before the week and are still unresolved.
Tasks completed vs carried: Grep {vault.path}/Projects/ for:
- \[x\] with completion dates in the target week → completed count
- \[ \] tasks with 📅 {date} where the date falls in the target week and the task is still open at week's end → carried count (tasks due during the week that were not completed)
Team Health: Read all People/{slug}.md files for direct reports (those with relationship_tier: direct in people.yaml). For each, gather: open task count, overdue task count, last 1:1 date, feedback gap (days since the last delivered feedback — count only observations with type strength or growth-area that have been explicitly noted; general observations that aren't feedback do not reset this clock), attention gap (days since any interaction was logged — 1:1, observation, or quick note). Check Team/{team}.md for any existing health snapshots this week. If people.yaml has no entries with relationship_tier: direct, skip this section silently.
Step 5: Write Weekly Summary Section
Append a new section to the end of the weekly note:
## Weekly Summary — {YYYY-MM-DD}
### Accomplishments
{Key completed work this week. Not a raw task dump — synthesize into meaningful outcomes. Lead with the most impactful items.}
- {outcome or completed work} [{provenance if from contributions log}]
- ...
### Decisions Made
{Decisions logged this week across all projects.}
- [{date}] {project}: {decision summary} [Auto] (project timeline)
- ...
{If none: "(no decisions logged this week)"}
### Blockers
{Blockers opened or unresolved this week.}
- {project}: {blocker description} — open since {date}
- ...
{If none: "(no open blockers)"}
### Tasks: Completed vs Carried
Completed {N} tasks. Carried {M} to next week.
{If M > 0: List the carried tasks. If M is large (5+): "Consider reviewing what's chronically deferred."}
### Self-Reflection
{2–4 agent-generated prompts based on this week's patterns. These are questions, not judgments.}
Pattern triggers (all users):
- Multiple carry-overs: "3 tasks carried forward multiple times — still the right priorities, or should they be deferred?"
- Light meeting week: "Did you get the deep work time you needed, or did other things fill it?"
- Heavy meeting week: "{N} hrs in meetings. What would you protect next week for focused work?"
- Low task completion vs. meeting time: "You completed {M} tasks against {N} hrs of meetings. Is that the balance you wanted?"
- General: "What would have made this week better?"
Pattern triggers (only when there are direct reports in people.yaml):
- Feedback gap > threshold: "You haven't logged any observations for {person} in {N} days. Anything worth capturing?"
- Delegation overdue: "{Person}'s {task} is {N} days overdue. Is it blocked? Did the priority change?"
- Persistent overdue delegations: "{N} overdue delegations at week start, {M} still open. What's blocking resolution?"
Step 6: Team Health Snapshot
If people.yaml has direct reports (relationship_tier: direct), append a team health snapshot to Team/{team-slug}.md. The team slug comes from the team name in people.yaml (e.g., "Platform" → platform.md). If no team file exists, create it with:
---
created: {YYYY-MM-DD}
---
#team
## Overview
**Team:** {team name}
**Members:** {wiki-links to direct reports}
## Timeline
## Health Snapshots
Append under ## Health Snapshots:
### {YYYY-MM-DD}
| Person | Open Tasks | Overdue | Feedback Gap | Attention Gap | Last 1:1 |
|--------|-----------|---------|--------------|---------------|----------|
| {name} | {N} | {N} | {N} days | {N} days | {date} |
| ...
Flag entries:
- Feedback gap > 30 days → append
⚠️ to the gap cell
- Overdue > 2 → append
⚠️ to the overdue cell
- Last 1:1 > 14 days → append
⚠️ to the date cell
Also include in the weekly summary section:
### Team Snapshot
> All flags reflect your records and follow-through, not an assessment of each person's state.
| Person | Open Tasks | Overdue | Feedback Gap | Attention Gap | Last 1:1 |
|--------|-----------|---------|--------------|---------------|----------|
| {data} |
Step 7: Output
Print summary inline for quick review, then:
✅ Weekly summary written.
Week of {YYYY-MM-DD}: {N} accomplishments, {M} decisions, {O} blockers, {P} tasks completed, {Q} carried.
{If team health: "{R} team members — {S} with alerts."}
Weekly note: {obsidian-uri}
{If team health updated: "Team file updated: {obsidian-uri}"}
Then suggest:
- "Say 'monthly update' to draft an MBR or status report from this week's data."
- "Say 'wrap up' to close out today's daily note." (if it's end of week and today's wrap-up hasn't run)
Edge Cases
Weekly note doesn't exist: Create it with frontmatter (week_start: {YYYY-MM-DD}) and #weekly tag. Add empty ## Week Capacity, ## Weekly Goals, and ## Carry-Forwards sections, then append the summary.
No daily notes for the week (notes not written or lost): Work from what's available in project files and contributions log. Note in summary: "Note: daily notes not found for this week — summary based on project timelines and contributions log only."
Contributions log missing: Skip contributions section. Note it.
No direct reports: If people.yaml has no entries with relationship_tier: direct, skip the team health section silently.
Partial week (running mid-week, e.g., Wednesday): Summarize the days available so far. Note in the summary header: "Note: summary covers {Mon}–{today} — run again at week's end for a complete picture." Self-reflection prompts should reflect partial data (e.g., don't flag "light meeting week" if the week isn't over).