| name | notify-slack |
| description | Post a concise software-factory status update to a Slack channel via an incoming webhook after a factory phase completes a handoff. Use when a triage decision is made, a specs PR is opened, an implementation PR is opened, or an automated review verdict is published, and the SLACK_WEBHOOK_URL secret is configured. |
Notify Slack
Post a short, well-formed status update to the team's Slack channel after a factory phase finishes its handoff.
When to use
Invoke this skill as the final step of a factory phase when a handoff has occurred:
- Triage — a triage decision was made and the issue moved to a new status.
- Spec — a specs PR was opened.
- Implementation — an implementation PR was opened.
- Review — an automated review verdict was published on a PR.
If the SLACK_WEBHOOK_URL environment variable or secret is not configured, skip silently. A missing webhook must never fail the parent workflow.
Message contract
Send a single message with:
- Lead line — one sentence: what happened and to which item (issue key or PR number, with title).
- Links — the Jira issue and/or GitHub PR involved, plus the Oz run link when available.
- Next step — one line naming the next actor (e.g. "Awaiting human review of the specs PR").
Keep messages under ~6 lines. One message per handoff — do not post incremental progress to Slack.
Example payload:
curl -fsS -X POST -H 'Content-type: application/json' \
--data @payload.json "$SLACK_WEBHOOK_URL"
{
"text": "Triage: PROJ-142 \"Export fails for >10k rows\" moved to Implementation.\nIssue: <https://example.atlassian.net/browse/PROJ-142|PROJ-142> | Oz run: <https://oz.warp.dev/runs/...|follow along>\nNext: implementation agent opens a PR."
}
Guardrails
- Never print, log, or echo the webhook URL or any other secret. Pass it only via the environment variable.
- Never include secrets, tokens, raw command output, or internal reasoning in the message.
- Do not post to any channel other than the configured webhook's destination.
- Do not retry more than twice on failure; report the failure in your final response instead of blocking the phase.