A pull request, or a good reason.
Your team assigns a Jira or Linear ticket to Ao Twin, and it decides before it codes. Clear, contained work comes back as a pull request that already passed your checks. Anything risky or vague comes back with the reason.
WEB-214
Projects table: add a sortable due date column
- Status
- In Progress
- Delegate
- Ao Twin
- 7m ago
You delegated this issue to Ao Twin
- Ao Twin Got it — I’ll take a look shortly.7m ago
- Ao Twin Reading through WEB-214 now…7m ago
- Ao Twin On it — making the change now.6m ago
- Ao Twinjust now
Done — PR is up: github.com/acme/web/pull/88
Ran install, typecheck, build; all green. Over to you for a look.
Delegate it like you’d assign a teammate.
1 Assign a ticket in Jira or Linear.
Pick Ao Twin as the assignee in Jira, or the delegate in Linear. It replies within seconds, so you know it has the ticket.
- Ao Twin Got it — I’ll take a look shortly.
2 It decides before it codes.
It reads your repository and the ticket, then chooses: a pull request, a draft with its doubts spelled out, or the ticket back to you with the reason.
- Ao Twin Reading through WEB-214 now…
3 It builds and checks.
It works on its own branch and runs your repository’s own checks. If a check fails, it tries once more with the error in hand. If it fails again, the ticket comes back to you.
install ✓ typecheck ✓ build ✓
4 You review and merge.
One pull request, linked to the ticket. Merging is yours: Ao Twin can’t merge.
Nothing merges without you.
These rules are enforced in code, not requested in a prompt, and they hold on every ticket.
It never merges.
Merging and closing pull requests are blocked. Approval stays with your team.
It never touches your default branch.
No pushes to main and no force-pushes. Every change lands on its own branch, named after the ticket.
Your credentials stay out of reach.
The checks it runs get no credentials, and your tokens never appear in its commands or its messages.
A ticket can’t give it orders.
It treats ticket text as a description of the work, so instructions hidden in a ticket don’t change its rules.
What you review is what passed.
The pull request holds exactly the code that passed your checks.
It stays where you put it.
It only works in the repositories you connect. Tickets from anywhere else come back to you.
Checked before they run
gh pr merge 88refused merging is your callgit push origin HEAD:mainrefused default branchgit push --force origin WEB-214refused force-pushpnpm typecheckallowed
Before you delegate your first ticket.
Can it merge or close pull requests?
No. Both are blocked. Every change waits for your team’s review.
Which tickets should we give it?
Clear, well-defined work: copy changes, styling fixes, a new column, a filter, simple create-and-edit screens. Tickets that spell out what done looks like are the easiest to hand over.
What happens when a ticket is vague?
It comes back to you with what’s missing. Ao Twin doesn’t guess.
Will it follow our conventions?
Yes. It follows your repository’s contributor and agent instructions, like AGENTS.md, and runs your own install, typecheck, lint, test and build steps.
What does it need access to?
Your Jira or Linear workspace and the repositories you connect. The checks it runs get no credentials.
Does it work on mobile apps?
Changes to native iOS or Android screens always open as drafts, because browser checks can’t prove them. You review those on a device.
Tell us about your backlog.
Ask a question, or describe your team and the tickets you’d hand over. We’ll reply by email.