Appearance
Triage new GitHub issues automatically
Every new issue is classified and summarized in one operational thread, while changes to the repository remain an explicit later decision.
- What you'll build — A read-oriented routine plus a disabled GitHub connector-event trigger for New issue opened. It validates the payload, classifies the issue, suggests labels, and produces a two-line summary.
- Who it's for — A maintainer, founder, or small team that wants consistent intake without automatically modifying issues.
- Time & plan — About 20 minutes. You need an Agents balance and a GitHub OAuth connection.
Build it with Claude Code or Codex through the Agents MCP. Start with Build routines with Claude or Codex if the account is not connected yet.
Ingredients
| # | Resource | How it is configured | Needed for |
|---|---|---|---|
| 1 | A routine-capable Agent | Claude or Codex reuses one from account inventory | Classification and summary |
| 2 | GitHub connector | Claude/Codex returns an OAuth consent URL | Reading issue data and receiving events |
| 3 | New-issue trigger | Claude/Codex stages it disabled | Starting the routine immediately |
| 4 | Friday digest schedule (optional) | Claude/Codex stages it disabled | Weekly operational review |
1. Give Claude or Codex the repository and policy
text
Build a read-only GitHub issue-triage routine for acme/webapp. When a new issue
opens, validate the payload, classify it as security, bug, feature, question, or
other, suggest existing labels, identify missing reproduction information, and
write a two-line summary with the issue link. Do not apply labels, comment,
close, assign, or otherwise change GitHub.
Use the MyChatBot Agents MCP. Inspect my account, trigger catalog and complete
routine docs first. Reuse existing resources. Validate and show the canonical
YAML before saving, run readiness, and ask separately before a billed tool-free
preview. Stage the GitHub New issue opened trigger for acme/webapp disabled and
do not enable it.The coding agent should ask if the repository or taxonomy is ambiguous. It should not guess a source slug or trigger-config field; get_account_authoring_inventory contains the curated trigger catalog used for preflight.
2. Authorize GitHub
If GitHub is not connected, Claude or Codex calls start_connector_authorization and returns a consent URL. Open the URL yourself and approve only the organization and repositories the routine needs. Ask the coding agent to refresh inventory afterward.
With separate approval, probe_connector can verify the MCP handshake and list the available GitHub tools. It does not call a tool, read an issue, or prove that the selected repository is accessible.
3. Validate and preview with a synthetic event
After reviewing the full canonical YAML, approve the save and inspect get_routine_readiness. Then ask separately for a billed dry run using a synthetic payload:
json
{
"action": "opened",
"repository": "acme/webapp",
"issue": {
"number": 212,
"title": "Login redirect loops on Safari",
"body": "After SSO, Safari 17 redirects between /login and /callback.",
"author": "sample-user",
"url": "https://github.com/acme/webapp/issues/212"
}
}The preview should produce something like:
Bug · suggested labels:
bug,needs-repro#212 “Login redirect loops on Safari” — likely SSO callback loop on Safari 17; browser details are present but exact reproduction steps are missing.
The MCP preview tests parsing and model behavior with all tools removed. It does not fetch issue #212 or touch GitHub.
4. Stage and inspect the trigger
The coding agent calls create_trigger with the catalog's exact GitHub source, repository-specific source_config, a stable deduplication path, and an appropriate hourly limit. The MCP always creates it disabled.
Before enabling, verify:
- the target is the saved routine;
- the selected event is New issue opened;
- organization and repository filters are exact;
- the event id or delivery id drives deduplication;
- no Agent prompt asks to mutate GitHub;
- expected event volume fits the trigger and Agents budgets.
If the source requires configuration the MCP cannot accept safely, create it in the routine's Automations panel instead.
5. Run the narrow live check
The Agents MCP has no immediate live-run tool. Enable the trigger only when you are ready to open one clearly marked test issue in the selected repository. Confirm the routine reads the real issue, classifies it, and writes its summary without applying labels or posting a comment. Then keep it enabled or disable it while refining.
Each fire remains in the trigger's own operational conversation, so one busy repository does not create a new Agents Platform chat per issue.
Add a weekly digest
Ask Claude or Codex to create a separate read-oriented digest routine that gathers the week's issues and groups them by category, then stage a Friday schedule such as 0 17 * * 5 in the correct IANA timezone. Review the result of a narrow live read and separately approve schedule enablement.
Keeping event triage and the weekly digest as separate routines makes their cost, failure history and cadence easier to understand.
Optional: apply labels or post a comment
Those are external writes. Add one effect at a time, require stable issue ids, and first test against a repository where automated changes are acceptable.
Routines never pause for approval
A routine that starts runs every step to the end. There is no approval card, no review pause, and no switch that turns one on — the mechanism was removed, not disabled.
approval, approval_message, requires_iteration_review and requires_output_review are still accepted so existing YAML keeps loading and saving, but none of them stops a run. If a routine of yours was written around a gate, treat that step as fully live and re-read its prompt.
So an owner-authored step does whatever its task says, including effects that reach real people — messages, calls, outreach, publication, deletion, live record changes. Writing the step is the authorization; there is no second checkpoint before a customer is contacted. Scope each prompt to exactly the action you want, and rehearse with a dry run (tools switched off) before you attach a schedule or trigger.
(Router requires_user_input is unrelated and still works: it supplies a branch choice the workflow needs, not permission to act.)
Variations
- Add a
routerfor security, bug and feature playbooks. - Use a
conditionto produce a security escalation draft only when the classifier returnssecurity. - Create a separate trigger for Pull request opened or closed.
- Use the adaptive research pattern to loop over an issue-quality review before returning the final triage.
See also
- Build routines with Claude or Codex — complete authoring and activation flow
- App-event triggers — GitHub event catalog and setup
- Triggers — queueing, deduplication and limits
- Routine YAML reference — router and condition syntax
- Usage & billing — how every triggered run bills
