Coding tasks
Ask for a code change in plain language and get a pull request against your connected repo — with a product spec to approve first when the change is a full feature.
Describe a change and the coding loop makes it: it clones your connected repo in an isolated sandbox, edits the code, runs your project's own typecheck/build, and opens a pull request as the deliverable. You review the diff on GitHub and merge when it's right.
Prerequisites
- A connected GitHub repo. Without it the loop can't proceed — it tells you to connect GitHub in Integrations and stops.
- If you've selected a repository in Integrations → GitHub, the loop uses it verbatim. Otherwise it picks the repo that best matches your request and notes the assumption.
Two paths: spec-first vs. straight to PR
What you ask for decides the path:
- A full feature — a new user-facing capability that isn't there yet — goes through the Pointer→PR loop. First a run reconstructs your one-liner into a product spec: what users will be able to do, acceptance criteria in plain English, scope, and any open questions where the answer changes the user-visible behavior. The spec lands in the ticket for you to review.
- A bugfix, refactor, copy change, dependency bump, or any small tweak goes straight to a pull request — no spec step.
The spec is a product document, not a technical design — it's how you confirm the agent understood the feature before any code is written. Approve it and the next run implements; or comment with changes and it revises.
Ask for a change
Talk to the dispatcher in the sidebar in plain language:
add a dark-mode toggle to the settings pagefix the 500 error when saving a profile with an empty bioThe first is a feature — you'll get a spec to approve. The second is a bugfix — you'll get a PR directly.
Approve a feature spec
When a spec is filed, the ticket flips to awaiting review with an Approve & implement button. Clicking it posts "Approved" as your comment, which re-runs the loop to implement the spec — clone, change, open a PR. You can also type a comment instead (for example, to narrow scope or answer an open question); the next run reads your comment and decides whether to implement, revise the spec, or reply.
What the implementing run does
- Clones and branches —
git cloneyour repo, then a freshadagent/<slug>branch. - Installs dependencies — it detects your package manager and the version your lockfile needs, and installs before editing.
- Edits to your conventions — it matches your framework, directory layout, and file patterns, touching only the files the change requires.
- Verifies the build — before committing it runs your repo's own
typecheck, thenbuild, thenlint(only the scripts that exist in yourpackage.json). A PR that breaks the build is worse than no PR, so it fixes what it broke and re-runs until the checks pass. - Opens the PR — commits, pushes the branch, and opens a pull request whose body says what changed and why, plus anything it deliberately skipped or couldn't verify.
If a check genuinely can't run for reasons unrelated to the change — a private registry the sandbox can't reach, a pre-existing failure, or a repo with no typecheck/build script — the run doesn't abandon the PR. It states plainly in the PR body what it ran, what passed, and what it couldn't verify, rather than claiming the change is verified when it isn't.
What you get
A single pull request on your branch, ready to review like any other change. One PR per run — depth over volume. The diff is the deliverable; merging is always yours.
Keeping the PR mergeable
If your main branch moves and an agent-opened PR goes conflicted, the PR babysitter steps in: it re-merges the latest base into the PR branch and conservatively resolves the conflict — but only when both sides' intent is unambiguous (the canonical safe case is two non-overlapping additions). When reconciling needs product judgment it doesn't have, it leaves the PR conflicted and flags the exact region for you rather than guessing. A wrong auto-resolution is worse than an honest flag. See the PR babysitter page for the full lifecycle.
Notes & limits
- A run is capped at roughly 20 minutes, each command at about 10. For a heavy monorepo build the loop scopes down — typechecking just the package it touched — rather than burning the budget on a full build.
- It never commits secrets or the raw contents of your file store — only derived repo files that match your project's conventions.
- If there's nothing to change (the change is already present, or the request isn't actionable), the run opens no PR and tells you why instead of fabricating one.
Product loops
The loops that build and look after the product itself — coding tasks that open pull requests, a babysitter that keeps those PRs mergeable, error triage and investigation, the docs loop, feature inventory with browser QA, a daily app-health watchdog, user-directed QA, release notes, and Cast synthetic users.
PR babysitter
Keeps the pull requests 1mn opened mergeable — when your base branch moves and a PR goes conflicted, it re-merges the base, conservatively resolves non-overlapping conflicts, and pushes; otherwise it flags the exact region for you.