一键导入
daily-summary
Use when drafting the end-of-day summary. Reads today's meetings, Slack, and memory files to append a structured summary to today's daily note.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when drafting the end-of-day summary. Reads today's meetings, Slack, and memory files to append a structured summary to today's daily note.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when adding a new data source to the daily summary — MCP tools, CLI commands, local file paths, or HTTP endpoints. Triggered by "add source", "/add-source", "add to my daily summary", or "connect [tool] to my daily summary".
Use when setting up pm-ground-control for the first time. Creates the workspace folder structure, populates memory files through an interview, and installs skills.
Use when preparing for a job search, updating a resume, prepping for interviews, or doing a performance review. Triggered by "review accomplishments", "/accomplishments-review", "prepare for interviews", "update my resume", "performance review prep".
Use when capturing a specific accomplishment for job searching, performance reviews, or interview prep. Triggered by "log accomplishment", "/log-accomplishment", "add to my accomplishments", or "remember this for my resume".
Use when synthesizing the week's daily notes into a weekly summary document. Run at end of week.
Use when drafting the weekly stakeholder update. Run after weekly-summary is complete.
| name | daily-summary |
| description | Use when drafting the end-of-day summary. Reads today's meetings, Slack, and memory files to append a structured summary to today's daily note. |
Synthesize today's activity into a structured summary and append it to today's daily note.
Read memory/me.md to get:
{{WORKSPACE}}/daily-notes/YYYY/MM/YYYY-MM-DD.md){{WORKSPACE}}/meeting-notes/YYYY-MM-DD/)Use currentDate from context if available, otherwise infer from file timestamps.
Previous working day: step back one calendar day, skipping weekends.
Run a single grounding pass. Do not start Phase 2 until complete.
Tasks:
Meeting notes: Glob {{MEETING_NOTES_PATH}}/YYYY-MM-DD/*.md. If the folder doesn't exist, note that and continue. For each file:
offset/limit of 150 lines if needed)created field HH:MM — check memory/me.md for timezone; if using Granola, timestamps are UTC and must be converted to local time.md (for wikilink) and derive display name: replace _ → /, then _ before space or end-of-string → : Carry-forward to-dos: Read the last 5 working days' daily notes. For each, find ### To-dos inside ## Daily Summary and extract:
- [ ] items- [x] items (to avoid regenerating completed work)Context: Read memory/projects.md, memory/teams.md, memory/people-signal.md, and skim other memory files. Note active projects, key people, today's meeting themes, and initial to-do carry-forward candidates.
Output of Phase 1: Meeting summaries with times and action items, to-do carry-forward candidates (checked/unchecked), and a compact project/team context summary. Passed as context to all Phase 2 agents.
Dispatch subagents simultaneously. Each receives Phase 1 output as context. All return findings only — no file writes.
Read memory/me.md for your Slack user ID. Read memory/slack-channels.md for the full channel list with IDs and tiers. Do not use hardcoded values.
Tier 1 channels (full read):
Use a two-pass approach for each channel:
slack_read_channel with oldest set to today's midnight local time (compute Unix timestamp at runtime — do not hardcode). Follow every thread with replies via slack_read_thread.slack_search_public_and_private with in:#channel-name after:YYYY-MM-DD. For any result from a prior-day thread root, call slack_read_thread for full context.Deduplicate across passes.
Your messages (all channels including DMs):
slack_search_public_and_private with from:<@YOUR_SLACK_ID> after:YYYY-MM-DDslack_read_threadDMs:
slack_search_public_and_private with to:<@YOUR_SLACK_ID> after:YYYY-MM-DDmemory/people-signal.md, also read DM history via slack_read_channel with their user ID as channel_idTier 2 channels (signal filter):
Use slack_search_public_and_private with in:#channel-name after:YYYY-MM-DD. Include only:
Tier 3 channels: Include only if you participated or it's a company-wide announcement.
Discard all bot/automated messages. Only include messages from real humans.
Use Phase 1 context to filter: If a meeting already surfaced an action item, don't regenerate it. Flag as "confirmed in Slack" instead.
Return: notable signals grouped by source (channel name or "DM with X"), with sender and timestamp.
Read memory/me.md — if GitHub CLI is not configured, skip this subagent and return nothing.
gh search prs --author "@me" --created ">=YYYY-MM-DD" --json number,title,repository,state,url,createdAt --limit 20gh search prs --author "@me" --merged ">=YYYY-MM-DD" --json number,title,repository,state,url,mergedAt --limit 20Return: PRs created or merged today. If none, return nothing.
Read memory/projects.md for active projects and their tracker links (Asana, Linear, Jira, Notion). For each project with a tracking link, look for project-level status updates posted today or since the last working day. Do not enumerate individual tickets.
Asana: For each project with an Asana link, use get_status_overview. Only include updates from today or the previous working day.
Linear: For each project with a Linear link, use get_status_updates with type: "project" and createdAt set to the previous working day.
Jira: For each project with a Jira link, query for status changes or comments on epics/initiatives (not individual tickets) from today.
Notion: For each project with a Notion link, check for updates to the project page from today.
Skip any tracker that is not connected or returns an error — degrade gracefully.
Return: status updates grouped by project, with author, date, and 1-3 sentence summary. Flag discrepancies with Phase 1 meeting context.
Read memory/me.md for the workspace path.
find {{WORKSPACE_PATH}} -type f -newermt "YYYY-MM-DD 00:00:00" \
-not -path "*/daily-notes/*" \
-not -path "*/meeting-notes/*"
(Substitute today's date for YYYY-MM-DD.)Return: files modified today with path, type, project, and summary. If none, return nothing.
Read memory/custom-sources.md. If the file is empty or contains no entries outside the comment block, skip this subagent entirely and return nothing.
For each entry in the file:
today — only content from todaysince-last-working-day — today and the previous working dayalways — no date filterReturn: findings grouped by source name, with a brief summary per item. If a source errors or returns nothing, note it briefly and continue.
For every candidate to-do item, assign one of:
Carry-forwards: For each unchecked item, check Phase 2 signals for completion evidence. If it references a specific doc, read that file directly.
New items from meetings and Slack: Check whether completed same-day before including:
Ownership filter: Only your own tasks. Exclude delegated work, other teams' blockers (unless they gate your work directly), same-day completions.
Output: verified to-do list with KEEP / DROP / MERGE dispositions and one-line rationale. This feeds directly into Step 2 — do not re-litigate dispositions there.
What happened today: 2-4 sentences on the day's 2-3 main themes. Not a list of meetings — what actually mattered and why.
Project sections: Read memory/projects.md for the active project list. Structure:
Each section:
Formatting:
### Project Name), not bold inline labels.To-dos: Merge KEEP items, new AI-derived items, and manual items from today's note. Apply 5-day dedup pass against completed items. Use ownership filter before including any item.
#### Date-anchored
- [ ] [task] — [deadline or trigger] 🤖
#### Quick actions
- [ ] [task]
#### Deep work
- [ ] [task] 🤖
#### To-be-triaged
- [ ] [task]
What I drove today: 1-3 plain bullets. High bar: decisions made, documents produced, alignment achieved, PRs shipped, problems solved. Omit section entirely if nothing clears the bar.
Order:
# Meetings with wikilinks sorted by time ascendingFormat:
### To-dos
#### Date-anchored
...
#### Quick actions
...
#### Deep work
...
#### To-be-triaged
...
# Meetings
- HH:MM - [[meeting-notes/YYYY-MM-DD/FILENAME_WITHOUT_EXTENSION|Display Name]]
## Daily Summary
### What happened today
[2-4 sentence narrative]
### [Project Name]
[One sentence: where things stand.]
- [Top-level bullet]
- [Sub-bullet]
### What I drove today
- [plain bullet]
### Other
- [Short items that don't fit]
Handling existing content:
### To-dos block entirely# Meetings section as-is — do not overwrite## My To-dos section if present (items now in To-dos block)## Daily Summary — only append if none existsFix any gaps before proceeding.
People: Check today's Slack interactions against memory/people-signal.md. Add anyone you engaged with substantively 3+ times recently who isn't listed. Resolve Slack handle via slack_search_users if needed. Do not remove existing entries.
Channels: If you participated in a channel not in memory/slack-channels.md, flag it and ask whether to add it permanently.
"Daily summary written to
[path]. [N] to-dos ([M] carried forward, [K] new). [Any notable flags from consistency check or channels review.]"