Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions src/recipes/software-delivery/skills/github-pr-workflow/skill.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,17 @@ Discussion: https://dembraneworkspace.slack.com/archives/<channel_id>/p<thread_t

Drop the `.` from the `thread_ts` (e.g. `1778661386.209989` → `p1778661386209989`).

### Worked Example: Mapping a Live Slack Thread Permalink

When a PR is opened during a session, retrieve the channel ID and thread timestamp from your session context and format them exactly as below. Do not leave the dot (`.`) in the timestamp or the webhook notification route will fail (as happened historically on PR #182):

- **Raw Slack Channel ID:** `C0884QPQF6W`
- **Raw Slack Thread Timestamp:** `1785231017.536359`
- **Formated Discussion Line:**
```
Discussion: https://dembraneworkspace.slack.com/archives/C0884QPQF6W/p1785231017536359
```

**Why this is required in the PR body even when the Linear ticket also has the permalink:** the daemon's GitHub webhook receiver walks `PR body → Linear ticket → Slack thread` to find the right thread to post `ack()` notifications into when a review/CI/comment event lands. If the PR has no Linear ticket (small docs PRs, housekeeping fixes — happens often), the chain breaks unless the permalink is in the PR body too. Dual metadata closes that gap. See `src/recipes/software-delivery/skills/github-webhook-events/skill.md` for the chain logic.

If there was no Slack thread (the PR was opened from a Linear ticket alone, or it's a Sam-noticed self-maintenance PR), write `Discussion: none (Sam-noticed during <session_id> on <date>)` so the chain knows there's no thread to ack into and Sam can still attribute the work.
Expand Down
Loading