Add action-items-todo skill - #293
Conversation
Captures action items directed at the user across Teams chats, meeting transcripts, and Outlook mail, and files them as Microsoft To Do tasks with a due date, importance, owner tagging, and a source link. Includes a first-run setup wizard that asks for the To Do list, scan frequency, and schedule, then creates the recurring automation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove rhetorical padding and hypothetical-reader framing. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds a new Scout submission, action-items-todo, intended to scan Microsoft Teams chats, meeting transcripts, and Outlook email for action items directed at the user and capture them into Microsoft To Do with scheduling, dedupe state, and a strict automation output format.
Changes:
- Added the
action-items-todoskill definition (SKILL.md) including a first-run setup wizard and recurring automation procedure. - Added a human-facing
README.mddescribing setup, capture rules, and privacy/requirements. - Added
metadata.jsonto register the submission in the gallery with platforms/tags/author info.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| submissions/action-items-todo/SKILL.md | Defines the Scout skill behavior, setup, scanning rules, and Microsoft To Do write procedure. |
| submissions/action-items-todo/README.md | Human-facing documentation for what the skill does, setup flow, and operational notes. |
| submissions/action-items-todo/metadata.json | Catalog metadata for the new submission (name/description/platforms/tags/author/version/dates). |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.
Suppressed comments (2)
submissions/action-items-todo/SKILL.md:49
- SETUP step 2 hard-depends on PowerShell (
Get-TimeZone), which is not guaranteed to exist in Scout and also doesn’t reliably return an IANA time zone on Windows. Since this skill targets Scout (cross-OS), the time zone should be obtained via a cross-platform runtime API (or by asking the user as a fallback) and stored as an IANA name.
2. Read the machine time zone (PowerShell Get-TimeZone) and store the IANA name.
submissions/action-items-todo/README.md:60
- README uses the Windows-only
%USERPROFILE%path. Since this skill targets Scout (cross-OS), the documentation should describe a home-relative path (e.g.,~/.scout/...) and explicitly note that~must be resolved via the runtime rather than shell-specific variables (see similar guidance insubmissions/work-brief/SKILL.md).
Configuration and dedupe state live in `%USERPROFILE%\.scout\action-items-todo\`. Delete that folder to reset the skill completely.
Get-TimeZone returns a Windows zone ID (e.g. 'W. Europe Standard Time'), not an IANA name, so SETUP now reads the zone via Intl.DateTimeFormat().resolvedOptions().timeZone and warns against the PowerShell call. Config and state paths are described relative to the user's home directory instead of %USERPROFILE%, in SKILL.md as well as the README. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.
Suppressed comments (4)
submissions/action-items-todo/SKILL.md:95
- The SCAN procedure hardcodes meeting/transcript tool names, but in Scout some calendar/meeting/transcript and Teams-post tool names can vary by build. Without an explicit “resolve from live tool list or fail clearly” rule, this skill may break in environments where these tool names differ.
Sources, all three every run:
(a) TEAMS CHATS — workiq_list_chats, then workiq_list_chat_messages on candidates.
(b) MEETING TRANSCRIPTS — workiq_list_meetings for meetings that ended inside the window, then workiq_list_meeting_transcripts and workiq_get_meeting_transcript. Transcripts for a recurring series come back out of order: filter transcripts[] by createdDateTime to the target meeting date, never take transcripts[0].
(c) OUTLOOK MAIL — workiq_list_emails on the Inbox for the window.
submissions/action-items-todo/SKILL.md:147
- STATE says to keep only the last 500 seen entries, but the write procedure only appends and never trims. Over time this can grow the state file without bound and slow down dedupe (and make the JSON more error-prone).
4. Append the item to state.seen.
5. After all items, set state.last_scan = now and write STATE atomically. Write STATE even on a run with no items, so the window advances.
submissions/action-items-todo/SKILL.md:50
- SETUP step 2 currently suggests shelling out to
node -p ...to read the time zone. On Scout you can’t assume the underlying shell (cmd/PowerShell/sh) or thatnodeis on PATH, and this is exactly the kind of shell dependency the repo guidance warns against. Prefer using the runtime API directly (or asking the user) rather than relying on a shell command example.
This issue also appears on line 91 of the same file.
2. Read the machine time zone as an IANA name with a cross-platform runtime API: Intl.DateTimeFormat().resolvedOptions().timeZone, e.g. `node -p "Intl.DateTimeFormat().resolvedOptions().timeZone"`. Do NOT use PowerShell Get-TimeZone: on Windows it returns a Windows zone ID such as "W. Europe Standard Time", which is not an IANA name and will not match the format the rest of the skill expects. If the lookup fails, ask the user for their IANA zone rather than guessing.
submissions/action-items-todo/SKILL.md:63
- The “Working hours only, weekdays” option claims “8am–6pm”, but the cron schedules below use hour range
8-17(latest run is before 6pm). Either adjust the description or the cron mapping so users aren’t misled about the scan window.
This issue also appears on line 146 of the same file.
- "Working hours only, weekdays" (desc: 8am-6pm in your local time zone) -> "workhours"
0bb3472
into
microsoft:main
What this adds
submissions/action-items-todo/, a Scout skill that watches Teams chats, meeting transcripts, and Outlook mail for things people have asked you to do, then files each one as a Microsoft To Do task with a due date, importance, owner tagging, and a link back to the source.Why
Asks turn up in three different places, and the ones I lose are almost never the urgent ones. A "when you get a chance, could you look at this?" in a 1:1 chat carries no deadline and stops existing the moment it scrolls off screen.
The skill only captures asks made to you. It ignores promises you make to other people, which is a separate problem with different failure modes, and combining them in one list makes both harder to act on.
First-run setup
The skill hardcodes nothing about the person running it. On first use a wizard asks three questions, writes a config file, and creates the recurring automation:
Capture rules
An action item is anything asking you to do, decide, respond, review, attend, prepare, or follow up. Urgency isn't part of the test, so tentative and far-future asks still count.
The ask has to be aimed at you. That means you're named, you're @mentioned, it arrived in a 1:1, or the conversation around it clearly puts the item on your plate. The skill skips generic group asks, FYIs, status updates and newsletters, and it never reads "this is your topic area" as ownership.
Titles come out in English whatever language the source was in. Owner tagging (
Customer:/Workstream:) gets left off whenever the evidence is thin.Validation
npm run check:submissionspasses: 91 submissions, nothing written.Checklist
SKILL.mdfrontmatternamematches the folder slugSKILL.md, catalog description inmetadata.jsonREADME.mdis human-facing only, no stray docs beside the payload