Content
# qa-agentic-pipeline
> One command. Three AI agents. From JIRA ticket to Draft PR in ~30 minutes.
An AI-powered QA automation system built with **Claude Code + MCP servers**. It reads your JIRA tickets, generates test cases in BrowserStack, writes Playwright tests, and creates Draft PRs — all orchestrated by AI agents following your team's SOPs.
## What's Inside
```
├── CLAUDE.md # Generic orchestrator (routes to your team)
├── .mcp.json # MCP server connections (JIRA, BS, GitHub)
│
├── squads/
│ └── your-team/ # ← Rename to your team name
│ ├── orchestrator.md # Pipeline definition
│ ├── agents/
│ │ ├── testcase-agent.md # Reads JIRA → creates test cases → pushes to BS
│ │ ├── scraper-agent.md # Scrapes test data from your UI
│ │ └── automation-agent.md # Writes Playwright tests → creates PR
│ ├── skills/
│ │ ├── createTestcasesSkill.md
│ │ ├── createPlaywrightTestSkill.md
│ │ └── runScraperSkill.md
│ └── config/
│ ├── squad-context.md # Your domain knowledge
│ ├── test-conventions.md # Your testing patterns
│ └── jira-fields-mapping.md
│
├── shared/
│ └── skills/
│ ├── readJiraTicketSkill.md # Common across all teams
│ ├── updateJiraSkill.md
│ └── createDraftPRSkill.md
│ └── createBugInJiraSkill.md
│
└── .claude/
└── commands/ # Slash commands for Claude Code
├── qa-pipeline.md
├── create-testcases.md
├── automate-tests.md
├── scrape-data.md
├── update-jira.md
└── create-pr.md
└── report-bug.md
```
## Quick Start (5 minutes)
### 1. Clone & rename
```bash
git clone https://github.com/ParthiCM/qa-agentic-pipeline.git
cd qa-agentic-pipeline
# Rename the team folder
mv squads/your-team squads/my-actual-team
```
### 2. Configure MCP connections
Edit `.mcp.json` — add your GitHub Personal Access Token:
```json
{
"mcpServers": {
"atlassian": {
"type": "url",
"url": "https://mcp.atlassian.com/v1/mcp"
},
"browserstack": {
"type": "url",
"url": "https://mcp.browserstack.com/sse"
},
"github": {
"type": "command",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<your-pat>"
}
}
}
}
```
Atlassian and BrowserStack authenticate via OAuth on first use — no tokens needed.
### 3. Customize your team config
Edit these files with your actual details:
| File | What to change |
|------|---------------|
| `config/squad-context.md` | Your product domain, terminology, what you test |
| `config/test-conventions.md` | Your test file locations, patterns, coding style |
| `config/jira-fields-mapping.md` | Your JIRA base URL, project key, BrowserStack project ID |
| `shared/skills/createDraftPRSkill.md` | Your GitHub org/repo, base branch |
### 4. Run it
```bash
claude # Start Claude Code in your repo
```
Then type:
```
/qa-pipeline YOUR-TICKET-123
```
## How It Works
```
You provide a JIRA ticket
│
┌────▼─────┐
│ Phase 1 │ Scraper (conditional)
│ Scrape UI│ → Asks: "Need to scrape?" → runs scraper → you review data
└────┬─────┘
│
┌────▼─────┐
│ Phase 2 │ Collect inputs
│ Inputs │ → Ticket key + BrowserStack folder ID
└────┬─────┘
│
┌────▼─────────────────────────┐
│ Phase 3 — Parallel Agents │
│ │
│ Agent A Agent B │
│ Test cases Playwright │
│ → BrowserStack → Draft PR │
│ → JIRA update │
└────────────┬─────────────────┘
│
┌────────────▼──────────────┐
│ Phase 4 — Final Report │
│ Summary with all links │
└───────────────────────────┘
```
## Slash Commands
| Command | What it does |
|---------|-------------|
| `/qa-pipeline TICKET-123` | Full pipeline (scrape → test cases → automation → PR) |
| `/create-testcases TICKET-123` | Test cases only → BrowserStack + JIRA |
| `/automate-tests TICKET-123` | Playwright tests only → Draft PR |
| `/scrape-data <url>` | Scrape UI data only |
| `/update-jira TICKET-123` | Post test summary to JIRA |
| `/create-pr TICKET-123` | Create Draft PR only |
| `/report-bug <Bug Title>` | Create a bug ticket in JIRA with test evidence |
## The Three-Layer Design
| Layer | Purpose | Files |
|-------|---------|-------|
| **Agents** | Define WHAT to do | `agents/*.md` |
| **Skills** | Define HOW to do it (step-by-step SOPs) | `skills/*.md` |
| **Config** | Define the CONTEXT (domain, conventions) | `config/*.md` |
**Why skills matter:** Instead of the AI figuring out HOW to create a BrowserStack test case from scratch, it reads your skill file and follows the exact steps. Update the skill = every future run improves. No code changes needed.
## Multi-Team Support
The system is designed for multiple teams sharing the same repo:
```
squads/
├── team-alpha/ ← Team A's agents, skills, config
├── team-beta/ ← Team B's agents, skills, config
shared/ ← Common skills reusable by all teams
```
Each team owns their folder. Merging to the main branch = zero conflicts. New team onboarding = create a folder + write your prompts.
## Cost
- **~$0.20–$0.35 per pipeline run** (token usage)
- Covered by Claude Code Pro subscription ($20/month)
## Requirements
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code) installed
- JIRA (Atlassian Cloud)
- BrowserStack Test Management
- GitHub
- Node.js + Playwright in your repo
## Customization Guide
See [CUSTOMIZATION.md](./CUSTOMIZATION.md) for a detailed walkthrough on:
- Adding your own scraper script
- Changing the test data file path
- Adding new skills
- Onboarding a new team
- Modifying the pipeline order
---
Built by [Parthiban Murugan](https://www.linkedin.com/in/parthibanmurugan/) — AI Driven Senior QA Automation Specialist.