OpenSRE provides GitHub workflow tools for engineering coordination. The public workflow is:
Read a GitHub snapshot.
Generate a report or community follow-up summary.
Render a mutation proposal for explicit Slack-sourced task requests.
Execute the proposal only through the runtime approval path.
The workflow tools deliberately separate read-only snapshots from mutating execution. Headless or non-approved runs can produce proposals, but they cannot execute workflow mutations.For ad-hoc chat mutations outside the Slack proposal flow (create issue, assign, merge, gh api, etc.), use github_cli instead — see GitHub.
Connect or reconnect GitHub in the OpenSRE app.Security alert endpoints require token scopes that GitHub enforces separately. If the token cannot read one alert class, the tool returns an error for that alert type while still returning any alert classes it can read.
list_github_security_alerts when security status is relevant
summarize_github_pr_status does not trust list-endpoint mergeability. It fetches each PR detail endpoint so mergeable and mergeable_state are authoritative. Unknown mergeability is reported as unknown, not as ready to merge.
Use generate_work_status_report for morning check-ins, Slack updates, blockers, owners, and next actions.If the report tool performs its own GitHub reads and a required read fails, it returns:
available: false
incomplete: true
an errors list
It must not produce a false “no blockers” report from partial data.Use summarize_community_followups for contributor questions, community meeting agenda items, and suggested replies. It reads repository issue comments directly with pagination instead of performing one request per issue.
execute_github_issue_mutation is the only workflow mutating tool. It has no confirm argument. Ad-hoc GitHub writes in chat go through github_cli.Mutation behavior:
create: searches for the idempotency marker first; creates only if no existing issue is found.
update: fetches the issue, adds the Slack follow-up as a comment unless the proposal marker is already present, and patches title/labels/assignees only when those fields are explicitly present. It never replaces the issue body.
close: fetches the issue, adds a closing comment unless the proposal marker is already present, then patches state=closed and state_reason=completed. It never replaces the issue body.
Do not expose execute_github_issue_mutation outside the runtime approval path. Headless runs may render proposals, but should not execute mutations directly.