Sam approved all three: (1) deploy with backup and rollback, (2) fix the Teams send path, (3) build and migrate the cloud version.
Runtime constraint, stated honestly: these approvals came in during a claude.ai web chat session, which is a sandboxed Linux container with no access to Sam's Mac filesystem, no Desktop Commander, no Messages host, and no vault. The Daily Morning Briefing is a local Mac scheduled task (not a GitHub-tracked skill; confirmed the sail-skills repo does not contain it). So the live file swap, the Teams send, and iMessage all require the Cowork or Claude Code session running on the Mac. The reliable GitHub commit tools and the credential vault are also Mac-side. Nothing was written to the Mac from the web session.
The full rewritten playbook content is embedded at the bottom of this page as the canonical source, so the Mac agent does not need any local file from the web session.
/Users/samaguiar/Documents/Projects/admin/scheduled-tasks/ (the path the preload header references), and confirm against what the 7 AM cron actually runs before overwriting. If the canonical file lives elsewhere, prefer the real runtime location.SKILL.md.bak-2026-05-31-pre-lean-rewrite. This is the rollback..bak file.The prior failures were on the Pipedream microsoft_teams-send-chat-message wrapper, which demands a fresh OAuth handshake every run and cannot self-heal. A durable fix is a Microsoft Graph application-permission send path: register an Azure AD app with ChatMessage.Send or a bot identity, store the client id and secret in the vault and in Notion "API Keys & App Secrets", and have the briefing post to the self-chat via Graph with a client-credentials token. The one step that genuinely needs Sam is the Azure admin consent for the app. Everything else can be built and stored by the agent.
Build a Cloudflare Worker that any agent or device hits with a Bearer token. The Worker can own the data fetch (Outlook, Litify, Google Ads), the Notion page write, the Teams Graph send, and an email or SMS fallback. Design note that needs a decision: a cloud Worker cannot send iMessage, since iMessage requires a Mac running Messages. Options are to keep a thin iMessage relay on the Mac that the Worker pings, or to treat SMS or email as the mobile channel and retire iMessage from the cloud path. Credentials can be pulled from Notion "API Keys & App Secrets" and set as Worker secrets.
Importance: Medium. Status of work: Rewrite DONE. One item PENDING Sam approval (deploy to the live scheduled task).
Rewrote the Daily Morning Briefing scheduled-task playbook into a lean version per Sam's request. Three goals: strip the change-log and retired-channel history, lead with the info most important to Sam, and put Teams plus iMessage back as the delivery channels.
Key changes from the prior version: