Files
denis-a-evdokimov 8cb29415be Add ai-team-orchestration plugin: multi-agent dev team with Producer, Dev Team, QA agents (#1504)
* Add ai-team-orchestration plugin: multi-agent dev team with Producer, Dev Team, QA agents

* fix: use kebab-case agent names to match filenames

* fix: regenerate README after agent name change

* fix: address Copilot review — add edit tools to Producer/QA, use GitHub closing keywords

* fix: update agent tools to official VS Code tool set names

Replace outdated/nonexistent tool names with current official tool sets:
- Producer: search, read, edit, web (removed nonexistent githubRepo)
- Dev Team: search, read, edit, execute, web (replaced runCommands, problems, usages, etc.)
- QA: search, read, edit, execute, web (removed nonexistent findTestFiles, runTests)

Ref: https://code.visualstudio.com/docs/copilot/reference/copilot-vscode-features#_chat-tools

* fix: remove frontmatter from plugin README per reviewer feedback

---------

Co-authored-by: Aaron Powell <me@aaron-powell.com>
2026-04-28 17:33:23 +10:00

3.7 KiB

Anti-Patterns

Lessons learned from real multi-agent projects. Each anti-pattern was encountered at least once and caused real problems.

Git & Branching

Don't Do Instead Why
Rebase feature branches Regular merge Rebase rewrites history and loses commits. When multiple chats contribute to a branch, rebase causes cascading regressions.
Squash merge PRs Regular merge Squash hides individual commits, making it impossible to revert a single fix.
Use worktrees on shared branches Separate clones Worktrees share the git index. Parallel teams stepping on each other's staging area causes confusion.
Push directly to main Feature branch → PR → merge Direct pushes bypass review and can't be reverted cleanly.
Force push (--force) Fix forward or revert Force push destroys remote history that other teams may have pulled.

Team Roles

Don't Do Instead Why
Producer writes code Producer only plans, merges, files issues When the coordinator starts coding, they lose track of the big picture. Fixes in the producer chat often conflict with dev team work.
One agent does everything Separate agents for dev, QA, coordination Context isolation prevents cross-contamination. QA shouldn't have edit tools.
Skip the brainstorm Run brainstorm → plan → execute Jumping straight to code produces generic results. Brainstorms surface edge cases early.
Vague brainstorm prompts ("you are the team") Name each agent with distinct perspective Named agents with defined tendencies produce real debate. Generic prompts produce bland consensus.

Sprint Management

Don't Do Instead Why
Batch "fix everything" commits One commit per fix with issue reference Batch commits make it impossible to track what was fixed. If one fix causes a regression, you can't revert just that fix.
Keep bugs only in chat File GitHub Issues Chat context dies when the conversation ends. Issues persist across all chats and teams.
Skip handoff docs (done.md) Mandatory done.md + PROJECT_BRIEF update Without handoff docs, the next chat starts blind. It may overwrite work or duplicate effort.
Skip progress tracker Update progress.md after each phase Without a progress tracker, context overflow recovery is impossible. The new chat doesn't know where the old one left off.
Rush the AI with time pressure "Take your time, do it right" Time pressure makes the LLM skip edge cases, write less tests, and produce lower quality code. "No rush" produces better results.

Testing & QA

Don't Do Instead Why
Merge before testing Playtest → file issues → fix → merge Merging untested code creates a broken main branch. QA can't test against a moving target.
QA modifies source code QA only files issues, dev team fixes QA fixes often miss context and introduce new bugs. Separation of concerns.
Close issues without verification Dev fixes → QA verifies → close Self-closing issues skips verification. The fix might not actually work.

Context & Communication

Don't Do Instead Why
Assume chats share memory Files are the shared memory Each chat is a fresh context. PROJECT_BRIEF.md and progress.md are the only things that survive.
Keep decisions in conversation Write decisions to files Decisions made in chat are lost when the chat closes. Write to docs/ or GitHub Issues.
Relay raw error logs between teams Summarize and file as GitHub Issue Raw logs waste context tokens. Summarize: component, steps, expected, actual.