A team of Claude Code agents for work on PIE projects. You tell Ada what you need. The team builds it, reviews it and tests it, and gives you a pull request (PR) for PIE to review.
| Who | What they do |
|---|---|
| Ada, the architect | Talks to you. Writes the brief. Directs the others. Opens the PR. |
| Bob, the builder | Builds what the brief says, and nothing more. |
| Claudia, the reviewer | Reviews Bob's code against PIE's standards and the project's rules. |
| Tess, the tester | Writes tests from the brief. Runs them. Reports what she checked and what she didn't. |
| Grace, the bug hunter | Finds the cause of a problem on the live site, reading production only. Hands her findings to Ada. |
| Iris, the designer | Designs what people will see, as options on a Claude Design canvas, with you. Checks it meets the accessibility rules. Keeps your project's design system in DESIGN.md. Hands the agreed design to Ada. |
In a build you talk only to Ada. She gets the other agents to do their work. When a change needs
designing, Ada brings Iris in, and you work with Iris on the design in the same session. For a
problem on the live site, you talk to Grace first (/ada:bughunt).
Each developer needs:
- Claude Code 2.1.242 or later.
git, andgh(the GitHub command line tool), logged in.- bash 3.2 or later, and Python 3.8 or later.
- PHP and Composer, for the tests and the code checks.
- Linux or macOS. Windows with Git Bash or WSL is expected to work, but isn't tested yet.
Do this only if the repo has no .claude/team/PROJECT.md file. If one developer has done it,
nobody does it again.
- Start
claudein the repo. - Run
/ada:onboard. Ada writes the team's files and drafts what the team must know about the project. - Read the files in
.claude/team/, and correct them. The team trusts them, so they must be correct. - Merge the onboarding PR. Then every developer gets the team's files with the repo.
-
Start
claudein the repo. -
When Claude Code asks you to trust the folder, say yes. If you don't, the team's commands ask for permission each time.
-
When Claude Code asks you to install the
adaplugin, say yes. If it doesn't ask, run:claude plugin marketplace add pie/ada-and-friends claude plugin install ada@pie --scope project
-
Run
composer install -d tools. This installs the tools that run the tests and the code checks. -
If the project uses a local copy of the site, put your own paths and the site's URL (
LOCAL_URL) in.claude/team/local.env.PROJECT.mdsays what goes there. This file stays on your machine. If the project's dates matter, set up its clock too (A local site's clock, below). -
If the project has a PressTest suite (
PROJECT.md, Tests), also put inlocal.envwhere your clone of pie/presstest.io is (PRESSTEST_DIR) and the local site's report token (PRESSTEST_SECRET).presstest configshows what it found. Thenpresstest runruns the project's suite against your local site, for you or for Tess.presstest run --env stagingruns it on the project's staging site, ifPROJECT.mdnames one; its token goes inPRESSTEST_STAGING_SECRET. It needs Docker, and never runs on production.
| Command | Use it to |
|---|---|
/ada:onboard |
Set up a repo for the team. Once per repo (see above). |
/ada:begin |
Start a piece of work. Give Ada the Asana task. |
/ada:pickup |
Continue work from where you stopped. |
/ada:bughunt |
Have Grace find the cause of a problem on the live site, before anything is built. |
/ada:design |
Have Iris design something with no build behind it yet, such as concepts for a proposal. For a build, /ada:begin brings her in. |
- You agree the brief with Ada. The brief says what to build and how to know it's done.
- An approver approves the brief, if the project needs it (see below).
- The team builds it. Tess writes the tests. Bob builds. Claudia reviews. Tess runs the tests.
- You agree to open the PR. Ada gives you a summary first. Nothing is merged by the team.
Ada asks you before she changes the brief. She also asks you about anything that changes what the customer sees or pays.
Start a new session when Ada tells you to. She does this at the end of each stage. Run
/ada:pickup in the new session. A new session uses fewer tokens than a long one.
Each step gets its own worktree: a separate checkout of the repo, on the step's branch, in
.claude/worktrees/<slug>. Ada makes it with ada-worktree new when the step starts and moves
the session into it. So you can run several steps at once, each in its own session. No session
reads another step's brief, checkpoint or build log.
/ada:pickupchecks the checkpoint is this branch's. If it belongs to another step, Ada moves to that step's worktree, or tells you where it is and stops. If that step's PR is merged or closed, she asks whether to archive it, and does it once you say yes.- A plan stays in the main checkout. Agree it there. Each unit is built in its own worktree.
- A fix after a bughunt starts from Grace's findings, when she tried a fix in a worktree.
She writes them in the worktree she tried her fix in.
/ada:beginasks which bughunt the fix is for and copies itsFINDINGS.mdinto the fix's worktree. - Finished steps are tidied from the main checkout. When a step's PR is merged or closed,
/ada:beginin the main checkout offers to remove its worktree. It asks about each one. The branch stays, and the step's handoff files go to.claude/handoff/archive/. ada-worktree listshows each worktree with its branch, step and PR.- Your local site still runs one checkout. To test a step on it, point the site at the
step's worktree, as
PROJECT.mdsays.
If your Claude Code can't move a session into a worktree, Ada gives you a cd … && claude
command to run instead. ada-onboard gitignore keeps .claude/worktrees/ out of git;
ada-worktree new refuses until it has.
A PR must be small enough to review in one sitting. If the work is too large, Ada makes a plan. The plan breaks the work into units. Each unit has its own brief, branch, PR and Asana subtask. You agree the plan before Ada writes the briefs.
Some sites behave differently by day or time: a cut-off at noon on Friday, a weekly renewal. To
test that, ada-clock puts your local site at a fake time, and puts it back. Tess uses it for
her date checks, and you can run it yourself. It works only on a site at localhost,
127.0.0.1, or an address ending in .local or .test.
/ada:onboard sets it up in a project whose PROJECT.md says it is clock-sensitive. On your
own machine, or in a project onboarded before ada-clock, run this in the repo:
ada-onboard clock LOCAL_WP_PATH="<the site's WordPress root>" LOCAL_WP="wp --path=<the same root>"It writes your setup to .claude/team/local.env, which stays on your machine. The site's
LOCAL_URL goes there too.
- Linux with Local (the
local-linuxsetup): only that site's clock moves, and your computer's stays real. Install libfaketime once withsudo apt install faketime, runada-clock install, then restart the site in Local (Stop site, Start site).ada-clock uninstallundoes the install. - Mac and Windows (the
manualsetup): runada-clock installonce.ada-clock setthen prints the steps to change your computer's clock, andada-clock resetthe steps to switch automatic time back on.
Then:
ada-clock set "2026-11-06 12:30" # in the site's timezone
ada-clock status # exits 0 when the site has that time
ada-clock reset # back to real timeFor the site's own JavaScript, run ada-clock extension and load the folder it names in Chrome
(chrome://extensions, Developer mode, Load unpacked). While the clock is set, new Date() on
the site gives the fake time.
Test payments on real time: payment webhooks fail their signature checks while the clock is moved.
On some projects, PIE approves each brief before the team builds anything. This makes sure that PIE agrees with the work before time is spent on it.
The Brief approval section of PROJECT.md says who needs approval:
| Who | Needs approval? | Can approve? |
|---|---|---|
| Approvers | No | Yes |
| Trusted developers | No | No |
| All other developers | Yes | No |
A new developer is in the last group until someone adds them to a list. If the Approvers list is
none, nobody needs approval.
When your brief needs approval:
- Ada opens a draft PR that contains the brief. Then she stops.
- Give the PR link to an approver.
- The approver reads the brief on GitHub, and does one of these:
- Approve: add the
brief-approvedlabel to the PR. - Ask for changes: add review comments to the PR.
- Approve: add the
- Run
/ada:pickup. If the brief is approved, the build starts. If the approver asked for changes, Ada goes through them with you, changes the brief, and sends it for approval again.
Only a label that an approver adds after the last change to the brief counts. The draft PR
becomes the PR for the work. You need gh, logged in.
Link each PR to its Asana task: on the task, open Apps, then GitHub, then Add GitHub pull request.
To change the plugin or make a release, see DEVELOPING.md.
MIT. The team's structure comes from Three Man Team (MIT, Russell Aaron). Both notices are in
LICENSE. A project's DESIGN.md follows Google's
DESIGN.md format, the one Stitch uses.