From 01aec15f7a8890b137c23b50c223cc602249854f Mon Sep 17 00:00:00 2001 From: Jordan Burger Date: Tue, 23 Jun 2026 14:05:48 -0400 Subject: [PATCH] feat(slack): briefing continuity lead-line + Slack-renderable link refinement MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two rules upstreamed from accumulated instance experience into the slack notification slot (assembles into SKILL only, requires: slack): - Lead the briefing wrap-DM with a "Today's Focus" continuity line — open with the throughline from recent work to today, before the counts. Counts say how much, not what to care about first. - Slack-renderable link refinement (extends the existing DM-legibility rule): Slack does not auto-linkify custom URL schemes (obsidian://, file://) — a bare URI renders as inert text. Wrap in mrkdwn angle-bracket form ; GFM [label](url) also fails for custom schemes. A clickable-link fix only lands when the link renders in the destination's markup dialect. Generic rules; originating examples dropped. Co-Authored-By: Claude Opus 4.8 (1M context) --- CHANGELOG.md | 3 +++ phases/connectors/slack.md | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee62a93..bba5102 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ this project adheres to [Semantic Versioning](https://semver.org/). ## [Unreleased] +### Added +- **Slack notification refinements** (`phases/connectors/slack.md`) — two rules upstreamed from accumulated instance experience: **lead the briefing wrap-DM with a "Today's Focus" continuity line** (open with the throughline from recent work to today, before the counts — counts say *how much*, not *what to care about first*); and a **Slack-renderable link refinement** to the existing DM-legibility rule (Slack does not auto-linkify custom URL schemes like `obsidian://` / `file://` — wrap them in mrkdwn angle-bracket form ``; GFM `[label](url)` also fails for custom schemes — a clickable-link fix only lands when the link renders in the destination's markup dialect). + ## [0.7.2] - 2026-06-22 diff --git a/phases/connectors/slack.md b/phases/connectors/slack.md index 04421a8..70c614d 100644 --- a/phases/connectors/slack.md +++ b/phases/connectors/slack.md @@ -216,6 +216,7 @@ Slightly more detail. Example format: ``` Scout morning briefing ready. +*Today's focus:* [the 1–2 things today is really about — the throughline from recent work to now] - Today's meetings: [count] ([first meeting time]) - Action items: X urgent, Y to-do, Z watching - New since yesterday: [brief summary of new items] @@ -223,6 +224,8 @@ Scout morning briefing ready. - Review queue: [count] items pending your review ``` +**Lead the briefing DM with a continuity line.** A briefing wrap-DM must **open with a one-line "Today's Focus" continuity statement** that connects recent work to what matters today — *before* the counts and lists. Counts ("3 urgent, 5 to-do") tell {{USER_NAME}} *how much* without telling him *what to care about first*; the action-items file already carries this throughline, and the DM is where it most needs to surface. Lead with the one or two things today is really about, then the breakdown. + ### Sources-Checked Footer End every consolidation/briefing notification with a one-line transparency footer stating what was actually scanned, so coverage is auditable and "quiet" claims are backed by evidence: @@ -238,7 +241,7 @@ Only count sources you genuinely queried this run. A "quiet window" claim must b Applies to every wrap DM. Two parts: 1. **No bare internal `#SHORTCODE` tags in the user-facing DM.** Action-items use `#SHORTCODE` tags as an *internal* continuity-keying convention (they match an item across daily files); they mean nothing to the reader as bare tokens. Either **expand inline** — `*semantic-layer weekly update* (#TAG)` or just the plain-English label — or **drop the tag from the DM**. A DM line whose only handle on an item is a bare `#CODE` is forbidden: the reader must understand it from plain English. The file-side `#SHORTCODE` machinery is untouched — this is presentation-layer only. -2. **Link the action-items file.** Any wrap DM that references "today's list" / action items must include a clickable link to today's file — an Obsidian URI `obsidian://open?vault={{INSTANCE_NAME}}&file=action-items%2Faction-items-` and/or a `file://{{SCOUT_DIR}}/action-items/action-items-.md` — so a tap opens the list. +2. **Link the action-items file — and write the link so Slack renders it.** Any wrap DM that references "today's list" / action items must include a clickable link to today's file. **Slack does not auto-linkify custom URL schemes** (`obsidian://`, `file://`) — a bare `obsidian://open?…` pasted into a DM renders as inert text, not a link. Wrap it in Slack mrkdwn angle-bracket syntax with a label: `|Today's list>` (or `.md|Today's list>`). GitHub-flavored `[label](url)` **also** fails for custom schemes in the Slack renderer; only `http(s)://` / `mailto:` auto-link when bare. The principle generalizes: a "make it clickable" fix is only delivered when the link actually renders clickable in the **destination surface's markup dialect** — Slack mrkdwn ≠ GFM ≠ bare-URL auto-linking. ### Notification Rules