# anasss/qa-orchestra architecture

> Architecture diagram of the GitHub repository anasss/qa-orchestra, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/anasss/qa-orchestra
- Repository: https://github.com/anasss/qa-orchestra

## Overview

QA Orchestra is a Claude Code toolkit of ten standalone QA agents. The usual workflow is a user invokes an agent with a PR, diff, acceptance criteria, or test request; the agent produces a Markdown report in `qa-output/`, which another agent can use for follow-up. The README also documents browser-based validation and an optional orchestrated pipeline. Agent prompts and data-flow links are mapped from the README; their implementation details were not sampled, so uncertain agent-to-agent handoffs are not expanded.

Main entry points: [`qa-output`](https://github.com/anasss/qa-orchestra/tree/main/qa-output) (QA Output Reports), [`.claude/agents/orchestrator.md`](https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/orchestrator.md) (Orchestrator), [`.claude/agents/functional-reviewer.md`](https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/functional-reviewer.md) (Functional Reviewer), [`.claude/agents/browser-validator.md`](https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/browser-validator.md) (Browser Validator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_analysis["Standalone QA"]
  node_functional["Functional Reviewer"]
  node_scenarios["Scenario Designer"]
  node_selector["Smart Test Selector"]
  node_bug["Bug Reporter<br/>[bug-reporter.md]"]
end

subgraph group_validation["Live Validation"]
  node_environment["Environment Manager"]
  node_browser["Browser Validator"]
end

subgraph group_workflow["Pipeline and Release"]
  node_orchestrator["Orchestrator<br/>[orchestrator.md]"]
  node_release["Release Analyzer"]
  node_automation["Automation Writer"]
  node_manual["Manual Validator"]
end

node_user(("User"))
node_context["Project Context<br/>[CONTEXT.md]"]
node_reports["QA Output Reports"]
node_mcp{{"MCP Servers"}}
node_claude{{"Claude Code"}}

node_user -->|"invokes"| node_claude
node_claude -->|"runs agent"| node_functional
node_claude -->|"runs agent"| node_scenarios
node_claude -->|"runs agent"| node_selector
node_claude -->|"runs agent"| node_bug
node_claude -->|"runs agent"| node_environment
node_claude -->|"runs agent"| node_browser
node_claude -->|"runs agent"| node_orchestrator
node_claude -->|"runs agent"| node_release
node_claude -->|"runs agent"| node_automation
node_claude -->|"runs agent"| node_manual
node_functional -->|"writes report"| node_reports
node_scenarios -->|"writes report"| node_reports
node_selector -->|"writes report"| node_reports
node_bug -->|"writes report"| node_reports
node_environment -->|"writes report"| node_reports
node_browser -->|"writes report"| node_reports
node_orchestrator -->|"writes report"| node_reports
node_release -->|"writes report"| node_reports
node_automation -->|"writes output"| node_reports
node_manual -->|"writes report"| node_reports
node_context -->|"describes setup"| node_environment
node_mcp -.->|"enables browser"| node_browser
node_mcp -.->|"provides PR data"| node_functional
node_mcp -.->|"provides repo data"| node_release
node_orchestrator -.->|"routes workflow"| node_functional
node_orchestrator -.->|"routes workflow"| node_scenarios
node_orchestrator -.->|"routes workflow"| node_browser
node_orchestrator -.->|"routes workflow"| node_release
node_reports -.->|"feeds follow-up"| node_functional
node_reports -.->|"feeds follow-up"| node_bug

click node_functional "https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/functional-reviewer.md"
click node_scenarios "https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/test-scenario-designer.md"
click node_selector "https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/smart-test-selector.md"
click node_bug "https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/bug-reporter.md"
click node_environment "https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/environment-manager.md"
click node_browser "https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/browser-validator.md"
click node_orchestrator "https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/orchestrator.md"
click node_release "https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/release-analyzer.md"
click node_automation "https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/automation-writer.md"
click node_manual "https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/manual-validator.md"
click node_context "https://github.com/anasss/qa-orchestra/blob/main/context/CONTEXT.md"
click node_reports "https://github.com/anasss/qa-orchestra/tree/main/qa-output"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_functional,node_scenarios,node_selector,node_bug,node_user toneBlue
class node_environment,node_browser toneAmber
class node_orchestrator,node_release,node_automation,node_manual,node_mcp toneMint
class node_context,node_reports toneTeal
class node_claude toneIndigo
```

## Components

### Standalone QA

- [Functional Reviewer](https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/functional-reviewer.md): `.claude/agents/functional-reviewer.md`
- [Scenario Designer](https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/test-scenario-designer.md): `.claude/agents/test-scenario-designer.md`
- [Smart Test Selector](https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/smart-test-selector.md): `.claude/agents/smart-test-selector.md`
- [Bug Reporter](https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/bug-reporter.md): `.claude/agents/bug-reporter.md`

### Live Validation

- [Environment Manager](https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/environment-manager.md): `.claude/agents/environment-manager.md`
- [Browser Validator](https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/browser-validator.md): `.claude/agents/browser-validator.md`

### Pipeline and Release

- [Orchestrator](https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/orchestrator.md): `.claude/agents/orchestrator.md`
- [Release Analyzer](https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/release-analyzer.md): `.claude/agents/release-analyzer.md`
- [Automation Writer](https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/automation-writer.md): `.claude/agents/automation-writer.md`
- [Manual Validator](https://github.com/anasss/qa-orchestra/blob/main/.claude/agents/manual-validator.md): `.claude/agents/manual-validator.md`

### Other components

- **User**
- [Project Context](https://github.com/anasss/qa-orchestra/blob/main/context/CONTEXT.md): `context/CONTEXT.md`
- [QA Output Reports](https://github.com/anasss/qa-orchestra/tree/main/qa-output): `qa-output`
- **MCP Servers**
- **Claude Code**

## Connections

- User → Claude Code: invokes (evidence: `README.md`)
- Claude Code → Functional Reviewer: runs agent (evidence: `README.md`)
- Claude Code → Scenario Designer: runs agent (evidence: `README.md`)
- Claude Code → Smart Test Selector: runs agent (evidence: `README.md`)
- Claude Code → Bug Reporter: runs agent (evidence: `README.md`)
- Claude Code → Environment Manager: runs agent (evidence: `README.md`)
- Claude Code → Browser Validator: runs agent (evidence: `README.md`)
- Claude Code → Orchestrator: runs agent (evidence: `README.md`)
- Claude Code → Release Analyzer: runs agent (evidence: `README.md`)
- Claude Code → Automation Writer: runs agent (evidence: `README.md`)
- Claude Code → Manual Validator: runs agent (evidence: `README.md`)
- Functional Reviewer → QA Output Reports: writes report (evidence: `README.md`)
- Scenario Designer → QA Output Reports: writes report (evidence: `README.md`)
- Smart Test Selector → QA Output Reports: writes report (evidence: `README.md`)
- Bug Reporter → QA Output Reports: writes report (evidence: `README.md`)
- Environment Manager → QA Output Reports: writes report (evidence: `README.md`)
- Browser Validator → QA Output Reports: writes report (evidence: `README.md`)
- Orchestrator → QA Output Reports: writes report (evidence: `README.md`)
- Release Analyzer → QA Output Reports: writes report (evidence: `README.md`)
- Automation Writer → QA Output Reports: writes output (evidence: `README.md`)
- Manual Validator → QA Output Reports: writes report (evidence: `README.md`)
- Project Context → Environment Manager: describes setup (evidence: `README.md`)
- MCP Servers → Browser Validator: enables browser (evidence: `README.md`)
- MCP Servers → Functional Reviewer: provides PR data (evidence: `README.md`)
- MCP Servers → Release Analyzer: provides repo data (evidence: `README.md`)
- Orchestrator → Functional Reviewer: routes workflow (evidence: `README.md`)
- Orchestrator → Scenario Designer: routes workflow (evidence: `README.md`)
- Orchestrator → Browser Validator: routes workflow (evidence: `README.md`)
- Orchestrator → Release Analyzer: routes workflow (evidence: `README.md`)
- QA Output Reports → Functional Reviewer: feeds follow-up (evidence: `README.md`)
- QA Output Reports → Bug Reporter: feeds follow-up (evidence: `README.md`)
