agentic-qa-onboard
Walks new users through this repo's QA flow — Playwright + KATA + Allure + Xray stack, Jira QA workflow (Backlog → Shift-Left QA → Estimation → Ready For Dev → Ready For QA → In Test → QA Approved → Ready For Release → Deployed to Production), /shift-left-testing for pre-sprint A
Install
npx skills add https://github.com/upex-galaxy/agentic-qa-boilerplate/tree/main/.agents/skills/agentic-qa-onboard
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install upex-galaxy-agentic-qa-boilerplate@llmmart
git clone https://github.com/upex-galaxy/agentic-qa-boilerplate.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole upex-galaxy/agentic-qa-boilerplate collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Agentic QA Onboard — First-time tour of this repo
Activate when a user lands on this repo for the first time and asks "where do I start?", "how does QA work here?", or invokes /agentic-qa-onboard. The skill is a guided tour, not an executor: it explains the stack, the QA pipeline (pre-sprint Stage 0 + in-sprint Stages 1-6), the MCPs, and the env vars that everything depends on, then hands off to the right downstream skill.
This skill is specific to this Playwright + KATA QA boilerplate and points at the concrete entry points (/shift-left-testing, /sprint-testing, /test-automation, /test-documentation, /regression-testing, /framework-development).
Compact Rules
- DO: act as a guided tour, not an executor. The tour ends the moment the user knows which skill to call; hand off there and step back.
- DO NOT: do the downstream work yourself. Pre-sprint refinement is
/shift-left-testing, per-ticket QA/sprint-testing, TMS authoring/test-documentation, automated tests/test-automation, suite runs/regression-testing, a new target repo/project-discovery, KATA adaptation/adapt-framework. - WHEN someone is lost or asks how a skill works: suspend the compressed / caveman register for the whole explanation — full sentences, warm tone, and each technical term defined the first time it appears. Resume the normal register once they are oriented.
- DO: mirror the user's language in the explanation. The visual decks ship in Spanish only (technical terms stay English) — say so before opening one for an English speaker.
- WHEN the goal is unclear: ask ONE question first (testing a ticket, or understanding the whole flow?). Never dump all six stages on someone who asked about one.
- WHEN someone asks about running several sessions at once ("parallelize the sprint", "one session per story", "orquestar", "lanza workers"): explain the two executors in plain words — a one-shot subagent lives inside the current turn and is the default for almost everything, a supervised worker is a persistent session you keep talking to — then hand off to
/orca-orchestration. Its deck ispackages/decks/orca-orchestration/how-it-works.es.html. - DO: explain the concept in plain words, and why it matters, BEFORE any command, flag, or file path.
- DO NOT: open a how-it-works deck without asking — it launches the user's default browser. Open exactly ONE, then let them come back with questions before offering the next.
- WHEN opening a deck: prefer the published GitHub Pages URL over the local file, because a project scaffolded from this boilerplate may not carry the HTML. Use the local copy only offline or on explicit request.
- DO: route a brand-new project through the ordered 4-phase setup path (foundation → Jira catalogs → discovery + adapt → git Strategy Setup). The joining-an-adapted-project checklist covers phase 1 only and is not a substitute.
- DO NOT: state a Jira status or transition from memory.
.agents/jira-workflows.jsonis authoritative — if a status is not in there, it does not exist in the instance. - DO: point library-docs questions at Context7 and troubleshooting at Tavily; ticket WRITES at
/acli, and detailed ticket READS (custom fields, ACs, ATP/ATR, comments) at the Jira sync script, whose synced.mdis what you read. - DO NOT: suggest swapping the stack. Playwright + KATA + Allure + TypeScript + bun is locked, and KATA is Playwright-specific — a project needing another runner should not start from this boilerplate.
Read full SKILL.md when: walking the full 4-phase new-project setup, listing env vars or MCPs in detail, or answering which deck covers a given topic.
Teaching mode — when someone is lost or wants to understand a skill
This skill is also the front desk for anyone who is confused: "I don't know how to use this", "how does /sprint-testing actually work?", "what does this repo even do?", "explain test-automation to me", "no entiendo cómo funciona esto". When that happens, step into the scene as a friendly guide and follow these rules:
- Speak like a human, not a terminal. For the whole explanation, suspend any compressed / caveman register — full sentences, warm tone, simple words, zero unexplained jargon. Define each technical term the first time you use it ("an ATC — basically one complete test case, start to finish"). This is an explicit in-skill override of the default register; resume your normal style once the person is oriented.
- Mirror the user's language. Spanish in → explain in Spanish. English in → explain in English — but note that the visual decks ship in Spanish only (technical terms stay in English inside them).
- Start from where they are. If the goal is unclear, ask ONE quick question ("are you trying to test a ticket, or understand the whole flow?"). Don't dump all six stages on someone who asked about one.
- Concept first, in plain words — what the activity is and why it matters — before any command, flag, or file path.
- Then offer the visual presentation. Each workflow skill has a
how-it-worksdeck that walks the skill's workflow step by step: a cover slide, a full workflow map (main path + adjacent paths), then one phase per slide with the craft concepts embedded where they apply. Offer to open it in their browser — follow the opening protocol below. - Hand off when oriented. Once they know which skill to call, point them at it and step back.
How-it-works presentations (visual, in the browser)
Seven of the skills ship a self-contained HTML presentation (Spanish; technical terms in English) that teaches the skill as a step-by-step workflow — and agentic-qa-core adds two cross-cutting reference decks (naming conventions + skills inputs/outputs; see the section below). Each how-it-works deck follows the same shape: slide 1 is the cover (/skill-name), slide 2 is the full workflow map (main path + adjacent paths: gates, fallbacks, handoffs), then one phase per slide with the craft concepts embedded where they apply, closing with handoffs and how to invoke the skill.
| Skill / activity | Deck (Spanish) |
|---|---|
| Shift-Left Testing | packages/decks/shift-left-testing/how-it-works.es.html |
| Sprint Testing | packages/decks/sprint-testing/how-it-works.es.html |
| Test Documentation & ROI | packages/decks/test-documentation/how-it-works.es.html |
| Test Automation (KATA) | packages/decks/test-automation/how-it-works.es.html |
| Regression & GO/NO-GO | packages/decks/regression-testing/how-it-works.es.html |
| Xray for Jira (workflow) | packages/decks/xray-cli/how-it-works.es.html |
| Multi-session orchestration | packages/decks/orca-orchestration/how-it-works.es.html |
Cross-cutting reference decks (agentic-qa-core)
Beyond the per-skill workflow decks, agentic-qa-core ships two transversal reference decks. Offer them by intent, not by skill:
| User intent | Deck (Spanish) |
|---|---|
| "How is everything named?" — artifact/test/branch/ID naming conventions | packages/decks/agentic-qa-core/naming-conventions.es.html |
| "How do the skills fit together?" — the E2E flow (story → refinement → dev → testing) as inputs & outputs per skill: what each phase reads, which skills it loads, what it produces, which Jira fields/transitions it touches | packages/decks/agentic-qa-core/skills-io-flow.es.html |
The skills-io deck is the best single answer to "what does skill X need / produce" or "show me the whole pipeline" — it renders as a Mac-style terminal with one tab per phase (arrow keys or 1-9 to switch tabs). The full deck catalog (including the academy/craft decks per skill) lives on the published homepage below.
Single files (CSS + JS inlined) — they open by double-click, no server. Navigate with ← →, S for speaker notes, O for the slide overview, F for fullscreen.
Published site (PREFERRED source — works in every project)
All decks — plus the interactive KATA Academy and the boilerplate homepage — are published on the boilerplate's GitHub Pages hub:
https://upex-galaxy.github.io/agentic-qa-boilerplate/ ← homepage (deck catalog)
https://upex-galaxy.github.io/agentic-qa-boilerplate/kata/ ← KATA Academy (interactive)
https://upex-galaxy.github.io/agentic-qa-boilerplate/decks/<skill>/<deck>.html
Example: .../decks/sprint-testing/how-it-works.es.html. The <skill>/<file> segment matches the local paths in the table above. Prefer the published URL — it always works, even in consumer projects scaffolded from this boilerplate (which may not carry the local HTML files). Use the local file only when offline or when the user explicitly wants the repo copy.
Opening protocol (ALWAYS ask first)
Opening a deck launches the user's default browser — an outward, local action — so never open one without asking, and open only ONE at a time.
- Announce + ask. "I can open a short visual deck that walks through how
/sprint-testingworks — the full workflow map first, then each phase step by step. Want me to open it in your browser?" - Decks are Spanish-only (
.es.html). If the user speaks English, mention the deck is in Spanish (technical terms stay in English) before opening it. - On a yes, open exactly one deck — published URL first; local file as offline fallback (pick the OS command for the user's platform):
open "https://upex-galaxy.github.io/agentic-qa-boilerplate/decks/sprint-testing/how-it-works.es.html" # macOS → default browser xdg-open "https://upex-galaxy.github.io/agentic-qa-boilerplate/decks/sprint-testing/how-it-works.es.html" # Linux start "" "https://upex-galaxy.github.io/agentic-qa-boilerplate/decks/sprint-testing/how-it-works.es.html" # Windows # offline / repo-copy fallback (only if the file exists locally): open "packages/decks/sprint-testing/how-it-works.es.html" - One at a time. Let the person watch and come back with questions before offering the next skill's deck. Do not batch-open several.
- After it opens, tell them the keys (
←→to move,Sfor speaker notes) and offer to walk the slides together or answer questions as they go. - For "how does KATA work" / architecture questions, also offer the interactive KATA Academy (
.../kata/) — 8 interactive chapters, Spanish, presentation mode with thePkey.
Welcome
This is the Agentic QA Boilerplate — a QA-only boilerplate for testing web applications with AI agents in the loop. The repo ships skills, scripts, and conventions that turn a Jira QA ticket into documented test cases and automated regression coverage through a structured 6-stage pipeline. It does not ship the application under test — that lives in a separate target repo (configured via .agents/project.yaml).
If you cloned this repo and you don't yet have bun run setup complete, start there. Everything else assumes the foundation is green.
Stack
| Layer | Choice |
|---|---|
| Framework | Playwright (E2E + API) |
| Architecture | KATA (TestContext / Base / Domain / Fixture) |
| Reporting | Allure |
| TMS | Jira + Xray Cloud |
| Language | TypeScript (strict mode) |
| Runtime | bun |
| Lint/format | ESLint + Prettier (pre-commit hooks) |
| AI agent | Claude Code (primary), OpenCode (alt) |
The stack is intentionally locked. If your QA project needs a different stack (Cypress, Robot Framework, etc.), this boilerplate is not the right starting point — the KATA architecture is Playwright-specific.
First-time setup
Run the interactive installer once after cloning:
bun run setup
This bootstraps .agents/, installs the gentle-ai engram component (minimal preset), configures the 6 canonical MCPs, downloads Playwright browsers, installs 7 user-level community skills + 3 project-level community skills, and verifies the ${VAR} placeholders in the committed .mcp.json against your .env. Full details in INSTALLER.md.
After setup, fill .env with the credentials the rest of the workflow expects (see "Critical env vars" below).
New project path — from a fresh clone to a repo adapted to YOUR app
bun run setup is phase 1 of 4, not the whole story. A brand-new project (new app under test, new Jira project) walks this ordered sequence before the first ticket. Each phase self-defends (later steps gate on earlier ones), but knowing the order saves you from discovering it by error message:
| Phase | Goal | How |
|---|---|---|
| 1. Foundation | Tooling green on this machine | bun run setup → fill .env → bun run agents:setup (project identity + environments in .agents/project.yaml) → bun run pw:install → bun run jira:check |
| 2. Jira side | The tracker's catalogs mirrored locally | bun run jira:sync-fields + jira:sync-workflows + jira:sync-link-types (generate the .agents/*.json catalogs every skill reads) → /jira-components (reconcile Jira Components against the app's real modules). First-time Jira provisioning: docs/setup/jira-setup-guide.md |
| 3. App under test | The framework knows and fits YOUR app | /project-discovery (reverse-engineers the target repo → .context/ with PRD, SRS, business maps) → /adapt-framework (adapts KATA, config, CI, MCPs to the stack; its Phase 0 GATES on .context/ existing, so the order is enforced) → hands off to /sync-ai-memory |
| 4. Git strategy | Branch policy is a decision, not an inherited default | Ask "set up our git strategy" (git-flow-master's Strategy Setup: 4 questions → git_strategy: block in .agents/project.yaml), then optionally bun run git:policy apply to mirror it on GitHub. If you skip this, git-flow-master OFFERS it on your first real git action anyway (template-trap guard) — and bun run git:policy verify runs on every push via the pre-push hook |
After phase 4: bun run context:hydrate to pull the Jira cache, then /sprint-testing <KEY> for the first ticket. Joining an ALREADY-adapted project instead? Skip phases 2-4 (someone did them) and just run the checklist at the end of this tour.
Primary pipeline: Stage 0 (pre-sprint) + Stages 1-6 (in-sprint)
The QA work in this boilerplate runs in two halves: a pre-sprint Shift-Left grooming phase, then a 6-stage in-sprint pipeline per ticket. Each stage maps to a skill.
| Stage | Skill | When | What happens |
|---|---|---|---|
| 0 | /shift-left-testing |
PRE-SPRINT (batch) | AC refinement on N backlog Stories, gap-spotting, early authoring of the Story's single ATP (outline maturity — same field + same Test Plan that /sprint-testing Stage 1 later refines), transition backlog → shift_left_qa → estimation. Adds labels shift-left-reviewed + shift-left-{YYYY-MM-DD} (the dated one powers the <30-day short-circuit). |
| 1-3 | /sprint-testing |
IN-SPRINT (ticket) | Per-ticket: Planning → Execution → Reporting. Smoke + trifuerza (UI/API/DB) exploration. Short-circuits Phases 1-3 if Stage 0 ran <30 days ago. |
| 4 | /test-documentation |
IN-SPRINT (post-QA) | Document test cases in TMS (Test/ATP/ATR). ROI prioritization (Candidate/Manual/Deferred). |
| 5 | /test-automation |
POST-SPRINT | KATA-compliant E2E + API tests on Playwright. Plan → Code → Review. |
| 6 | /regression-testing |
PRE-RELEASE | CI suite execution. Failure classification. GO/CAUTION/NO-GO release verdict. |
Jira QA state machine:
Authoritative source:
.agents/jira-workflows.json. Status and transition names below are copied from that file (regenerate withbun run jira:sync-workflows). Never write a Jira status from memory — if it is not in.agents/jira-workflows.json, it does not exist in the instance.
Backlog → Shift-Left QA → Estimation → Ready For Dev → In Progress → In Review → Ready For QA → In Test → QA Approved → Ready For Release → Deployed to Production
/shift-left-testing drives the upstream transitions (Backlog → Shift-Left QA → Estimation). /sprint-testing drives the downstream ones (Ready For QA → In Test → QA Approved). PO/Dev lead drive the middle leg (Estimation → Ready For Dev → In Progress → In Review). A defect found in test sends the story In Test → BLOCKED (transition defect reported); ABORTED is the other terminal.
(For bugs found during QA: Open → In Progress → In Review → Ready For QA → Closed — the ReTest Passed transition closes it after fix verification. Non-fix terminals: Deferred, Duplicated, Enhancement, Cannot Reproduce, REJECTED, ABORTED.)
(Test cases in the TMS have their own lifecycle too: READY → In Review → Candidate → In Automation → Pull Request → AUTOMATED — MANUAL is the terminal for tests that will never be automated.)
Each Story gets three canonical TMS artifacts: the ATP (plan), the ATR (results), and the ATS (Acceptance Test Set — groups ALL the Story's TCs; its link to the Story is what fills the Xray coverage panel). Above the Story sits the planning ladder: FTP per feature/Epic (/sprint-testing feature-test-planning), STP at sprint start + STR recap at sprint close (/sprint-testing, with /regression-testing as fallback/completer), and the MTP Epic from /master-test-plan.
Two conventions apply to every quality issue you file along the way. Components are the target app's functional modules — mandatory on bugs, defects, improvements, and Tests — and are reconciled against the app's real modules via /jira-components. And bugs parent to the QA process epics (e.g. "QA Defect Management"), never a product/dev epic, carrying the source Story via an issue-link: parent = QA bucket, link = source Story, components = product module (the three-axis model).
/sprint-testing orchestrates Stages 1-3. Stage 4 onwards are explicit hand-offs. Wondering what is already covered before Stage 4/5? bun run tests:map renders the synced Epic → Story → Test tree (plus orphans and a component rollup) as one HTML page, and the /xray-cli skill's test enrich command backfills the synced Test cache with the Xray-internal associations (Preconditions, Test Set membership) the Jira REST sync cannot see.
Stage 1-3 example flow
/sprint-testing UPEX-277:
- Syncs the ticket from Jira via
bun run jira:sync-issues get <KEY> --include-comments(canonical detailed read —acli viewreturns null for custom fields), then reads the materialized.mdfiles. - Loads the synced context from
.context/PBI/epics/EPIC-<KEY>-<slug>/stories/STORY-<KEY>-<slug>/(Module = Epic; Jira-synced files are a read-only cache). - Explores the relevant code in the target repo.
- Authors the ATP (Acceptance Test Plan) → writes it to the Jira field (or fallback comment) → re-syncs; hand-writes only NON-Jira files (context.md, evidence/).
- Executes smoke + trifuerza exploration (UI / API / DB).
- Files ATR (Acceptance Test Results) + bug reports if defects found.
- Transitions the ticket through QA states.
- Hands off to Stage 4 (
/test-documentation) to document the executed test cases in the TMS and score ROI — Stage 4's Candidate verdicts are what feed/test-automation. Where those Candidates physically go: Stage 4 refines each one (the sprint TC is a draft, its title re-derived to the canonical{US_ID}: TC#: should …form), groups them into named e2e regression flows, and adds every one to the project's long-lived Regression Test Plan (RTP) with theregression-candidatelabel — that RTP membership, not any local report, is what/test-automationand/regression-testingread downstream.
You confirm at the gates.
When to use /framework-development instead
| When | Skill |
|---|---|
| Pre-sprint AC refinement / batch grooming of backlog Stories | /shift-left-testing (Stage 0) |
| Routine in-sprint QA on a Jira ticket (most cases) | /sprint-testing (ticket-driven) |
| Authoring new automated test for a Candidate TC | /test-automation |
| Refactor of the boilerplate itself — KATA bases, fixtures, cli/, scripts/ | /framework-development |
/framework-development covers framework evolution (changes to the boilerplate's own infrastructure, not per-ticket test writing). Self-contained Plan → Code → Verify → Archive pipeline; works under the minimal install preset (no SDD-* skills required).
Running several sessions at once (optional)
Everything above assumes one AI session at a time, and that is the normal way to work. There is a second way, and it is worth knowing it exists before someone asks for it.
The AI has two executors. A one-shot subagent lives inside the current turn: it reads, verifies or maps something, reports back, and its memory dies with the report. That is the default and it covers almost all work. A supervised worker is a persistent session with its own scope that the conductor session keeps talking to — useful when the work does not fit inside a turn: a whole story tested end to end, a module automated and integrated, a cluster of CI failures chased down.
/orca-orchestration owns that second executor: one conductor (the session talking to you) coordinating a fleet of workers, in rounds of a few at a time. Each workflow skill still owns what gets done; the orchestration skill owns how the sessions are launched, briefed, supervised and closed, plus the claims protocol that stops two workers from fighting over the same test user or fixture.
Two things to tell a newcomer:
- It is optional. The transport needs an orchestration runtime installed and reachable. Without it, a workflow skill never mentions it — it writes its launch file exactly as before and you paste the lines into your own terminals. Same plan, same briefs, more manual work.
- It is not "faster QA". It was dogfooded on a real sprint: three of the most delayed stories tested in parallel, 32 minutes of parallel execution, 21 tracker artefacts and 9 quality issues. The value that showed up was not the hour saved — it was three sessions measuring the same environment from three angles, catching things a single session structurally cannot, including one conductor instruction that was simply wrong and that a worker refused to follow because its own measurement disagreed.
Visual deck: packages/decks/orca-orchestration/how-it-works.es.html (same opening protocol as every other deck — ask first).
MCPs available
Six canonical MCPs ship with the boilerplate:
| MCP | Use it for |
|---|---|
| Context7 | Official library docs (Playwright, KATA-relevant TS, Allure…) |
| Tavily | Web search, troubleshooting community Q&A |
| Playwright | Live browser interactions for exploratory QA (when CLI is not enough) |
| DBHub | DB queries to validate state-mutating tests |
| OpenAPI | API endpoint exploration, contract checking |
| Postman | Saved request collections, request replay for API tests |
The Atlassian MCP is opt-in (setup in docs/mcp/) — the primary Jira tools are /acli and bun run jira:sync-issues.
Decision rule:
- Use Context7 for "how to use X" — official docs, current API
- Use Tavily for "how to solve X" — community fixes, troubleshooting
- Use
/aclifor ticket WRITES (create, transition, comment, link); for detailed READS (custom fields, ACs, ATP/ATR, comments) usebun run jira:sync-issues get/jql - Use Playwright MCP for ad-hoc live browser interactions; for scripted runs use
/playwright-cli
.mcp.json lives at the repo root and is committed — it is secret-free, referencing secrets as ${VAR} placeholders resolved from .env. Only .mcp.local.json (personal overrides) is gitignored.
Critical env vars
Place these in .env before running anything that talks to a real environment:
| Var | Used by |
|---|---|
LOCAL_USER_EMAIL / LOCAL_USER_PASSWORD |
Local app login (Playwright fixtures) |
STAGING_USER_EMAIL / STAGING_USER_PASSWORD |
Staging smoke tests, manual exploration |
ATLASSIAN_EMAIL / API token |
acli Jira CLI (+ Atlassian MCP, if opted in). The site HOST is NOT in .env — it lives in .agents/project.yaml -> issue_tracker.atlassian_url; read it with bun run --silent jira:url |
XRAY_CLIENT_ID / XRAY_CLIENT_SECRET |
bun xray CLI (Xray Cloud authentication) |
TAVILY_API_KEY |
Tavily MCP |
POSTMAN_API_KEY |
Postman MCP |
.env is gitignored. Never commit it. .agents/project.yaml (committed) holds non-secret context (URLs, project key, environment names); .env holds the matching secrets.
.mcp.json is committed and safe to commit — it never holds a secret value, only ${VAR} placeholders that Claude Code resolves from .env at runtime. Personal overrides go in the gitignored .mcp.local.json.
Verify your config with bun run vars:check (should report 0 errors when fully configured).
Local skills (committed in this repo)
| Skill | Trigger | Purpose |
|---|---|---|
agentic-qa-core |
(auto, cited by other skills) | Passive reference host: briefing template, dispatch patterns, orchestration doctrine, skill-composition strategy |
agentic-qa-onboard |
/agentic-qa-onboard |
This skill — first-time orientation |
project-discovery |
/project-discovery |
4-phase reverse-engineering of a target project |
shift-left-testing |
/shift-left-testing |
Stage 0 — pre-sprint AC refinement on a batch of backlog Stories. Authors the Story's ATP early, transitions backlog → shift_left_qa → estimation. |
sprint-testing |
/sprint-testing |
Stages 1-3 — per-ticket manual QA loop. Short-circuits Phases 1-3 when the dated shift-left-{YYYY-MM-DD} label is <30 days old. |
test-documentation |
/test-documentation |
Stage 4 — TMS test case authoring + ROI |
test-automation |
/test-automation |
Stage 5 — KATA + Playwright + TS automation |
regression-testing |
/regression-testing |
Stage 6 — CI suite execution + GO/NO-GO verdict |
framework-development |
/framework-development |
Framework evolution of the boilerplate itself — KATA bases, fixtures, cli/, scripts/. Plan → Code → Verify → Archive |
bug-screenshot-annotation |
"annotate bug screenshot" | Turns a raw bug screenshot into annotated evidence (circles, arrows, callouts) rendered 100% locally |
pr-review-lead |
"review this PR" | QA Lead review of a PR's test-automation work against KATA (or the target repo's) doctrine |
acli |
/acli |
Atlassian CLI wrapper for Jira/Confluence terminal work |
xray-cli |
/xray-cli |
Xray Cloud TMS CLI |
git-flow-master |
(auto on git intents) | End-to-end Git operator (branch, commit, push, PR, conflict, chained-PR) |
orca-orchestration |
"orchestrate", "fleet", "one session per story", "orquestar" | One conductor coordinating a fleet of persistent worker sessions (one per story / module / failure cluster). Optional and silent when no orchestration runtime is installed. Each workflow skill keeps owning the WHAT; this one owns the HOW |
judgment-day |
/judgment-day, juzgar |
Vendored from gentle-ai (Apache-2.0). Adversarial dual-judge review (2 blind judges in parallel, fix loop, re-judge). Optional gate cited by /test-automation Phase 3 + /git-flow-master pre-PR. |
What bun run setup installs via gentle-ai
bun run setup runs gentle-ai install --preset minimal — installs ONLY the engram component (persistent memory binary + MCP adapter + agent config). No SDD-* skills, no foundation skills.
Rationale: this repo already covers Plan → Code → Verify natively in its workflow skills (/shift-left-testing, /sprint-testing, /test-automation, /test-documentation, /regression-testing). SDD ceremony does not apply to test authoring.
Want the explicit SDD ceremony for an architectural change of your own? Run manually:
gentle-ai install --components engram,sdd --agent <claude-code|opencode|cursor>
Full details in INSTALLER.md.
Community skills installed at user level
bun run setup also runs bunx skills add --global for 6 cross-project skills (the last row of the table below is NOT one of them — the orchestration binary installs it, not setup):
Every installed skill needs a LOADER, or it should not be installed. An install that no flow ever reaches is tokens spent on a capability nobody invokes — and the failure is silent, because an unused skill looks exactly like a working one. So the third column is not decoration: it names the skill and the moment that loads this one, or says plainly that only a human invokes it.
| Skill | Source | Loaded by / when |
|---|---|---|
skill-creator |
anthropics/skills | user-invoked only, today. No flow names it. /framework-development is the natural owner when the change IS a skill, but its skill list does not say so yet — do not read this row as if it did |
find-skills |
vercel-labs/skills | automatic, last resort. agentic-qa-core/references/skill-composition-strategy.md §11.2: scan T1+T2, then installed T3+T4, and only if a task domain still has no match does any flow invoke this — then asks before installing |
github-actions-docs |
xixu-me/skills | /framework-development and /regression-testing when EDITING or diagnosing .github/workflows/** (both name it; reading a workflow does not need it) |
html-ppt |
lewislulu/html-ppt-skill | user-invoked only. packages/decks/ is hand-authored; this is for a one-off deck outside that tree |
bun |
bun.sh/docs | any flow hitting an unfamiliar Bun API (§6.5 CLI mapping) |
mkd |
upex-galaxy/agentic-user-skills | any flow that reaches the decision threshold in agentic-qa-core/references/decision-elicitation-doctrine.md (>3 decisions, or one dense one) |
orchestration.orchestrator_skills |
the orchestration binary | /orca-orchestration, ALONGSIDE it — the vendor owns the command grammar, the repo skill owns when and what |
Plus 3 project-level community skills installed into .agents/skills/ (not committed): playwright-cli, playwright-best-practices, resend-cli. See cli/install.ts PROJECT_LEVEL_SKILLS and USER_LEVEL_SKILLS arrays.
Next steps after the onboard
On a brand-new project (new app under test / new Jira project): follow the 4-phase "New project path" above — this checklist alone is not enough, it only covers phase 1.
Joining an already-adapted project: run through this checklist before you reach for your first ticket:
- Did you run
bun run setup? - Did you fill
.envwith your own credentials (LOCAL_*,STAGING_*,ATLASSIAN_*,XRAY_*,TAVILY_API_KEY,POSTMAN_API_KEY)? - Did you populate
.agents/project.yaml(runbun run agents:setupif not yet)? - Does
bun run vars:checkexit clean (0 errors)? - Did you run
bun run jira:checkto verify Jira credentials? - Did you run
bun run pw:installto get Playwright browsers? - Did you run
bun run context:hydrateto build the.context/PBI/Jira cache? (gitignored and regenerable — Jira stays the source of truth) - Does the
git_strategy:block in.agents/project.yamlreflect a CHOSEN strategy (meta.strategy_source: chosen)? If it still saysinherited, git-flow-master will offer Strategy Setup on your first git action — accepting takes 4 questions. - Does engram persistent memory respond (try
mem_contextafter restart)? - Ready for your first QA ticket:
/sprint-testing <UPEX-XXX>
If any box is unchecked, fix that first. The downstream skills assume a green foundation.
What this skill does NOT do
- Refine backlog Stories pre-sprint → use
/shift-left-testing - Test a ticket → use
/sprint-testing - Document test cases in TMS → use
/test-documentation - Write automated tests → use
/test-automation - Run a regression suite → use
/regression-testing - Discover a brand-new target project → use
/project-discovery - Adapt the KATA test architecture to a target stack → use
/adapt-framework - Launch or supervise several parallel sessions → use
/orca-orchestration
The onboard tour ends at the moment the user knows which skill to call next. From there, the relevant workflow skill takes over.
Files (agentic-qa-boilerplate)
-
evals
-
evals.json 3.8 KB
{ "evals": [ { "name": "should-trigger-first-time-orientation", "prompt": "I just cloned this QA repo. First time using it — where do I start?", "expected_skill": "agentic-qa-onboard", "expected_behavior": "Activates agentic-qa-onboard. Explains the stack (Playwright + KATA + Allure + Xray), points at `bun run setup` for installation, walks through the 6-stage QA pipeline (Stages 1-3 in /sprint-testing, Stage 4 /test-documentation, Stage 5 /test-automation, Stage 6 /regression-testing) and the /framework-development hand-off for boilerplate evolution, lists the 6 canonical MCPs, lists critical env vars, and ends with a checklist of next steps. Does NOT start testing or implementing anything.", "category": "positive" }, { "name": "should-trigger-onboard-me", "prompt": "Onboard me to QA. I've never used an AI-driven QA workflow before.", "expected_skill": "agentic-qa-onboard", "expected_behavior": "Activates agentic-qa-onboard as a guided tour. Explains the boilerplate, the locked stack, the workflow split between /sprint-testing (in-sprint ticket QA) and /framework-development (boilerplate framework refactors), the MCP decision rule (Context7 vs Tavily), and the env vars required. Hands off to /sprint-testing for the user's first QA ticket.", "category": "positive" }, { "name": "should-trigger-explain-this-repo", "prompt": "Explain what this repo does and how the QA flow works.", "expected_skill": "agentic-qa-onboard", "expected_behavior": "Activates agentic-qa-onboard. Describes the boilerplate purpose (QA-only Playwright + KATA scaffold), the 6-stage pipeline (Stages 1-3 manual QA → Stage 4 TMS docs → Stage 5 automation → Stage 6 regression), the QA Jira state machine (Ready For QA → In Test → QA Approved → Ready For Release → Deployed to Production), the local skills vs gentle-ai skills, and the MCPs. No testing or automation work.", "category": "positive" }, { "name": "should-trigger-spanish-first-time", "prompt": "Es la primer vez que uso este repo de QA, qué tengo que correr primero?", "expected_skill": "agentic-qa-onboard", "expected_behavior": "Activates agentic-qa-onboard. Points at `bun run setup` first, then walks through the workflow split, MCPs, env vars, and the next-steps checklist. Hands off to /sprint-testing once foundation is green. May respond in Spanish to mirror the user.", "category": "positive" }, { "name": "should-not-trigger-test-ticket", "prompt": "Test ticket UPEX-277 — empty states on the user list filter.", "expected_skill": "sprint-testing", "expected_behavior": "Does NOT activate agentic-qa-onboard. Routes to /sprint-testing UPEX-277 because the request is concrete in-sprint QA on a ticket, not orientation. agentic-qa-onboard never executes QA work.", "category": "negative" }, { "name": "should-not-trigger-write-automation", "prompt": "Write a Playwright KATA test for the login flow on UPEX-310.", "expected_skill": "test-automation", "expected_behavior": "Does NOT activate agentic-qa-onboard. Routes to /test-automation because the request is for KATA-compliant test authoring on a specific feature. agentic-qa-onboard does not write test code.", "category": "negative" }, { "name": "should-not-trigger-run-regression", "prompt": "Run the regression suite on staging and give me a GO/NO-GO verdict.", "expected_skill": "regression-testing", "expected_behavior": "Does NOT activate agentic-qa-onboard. Routes to /regression-testing because the request is for CI suite execution + release readiness verdict. agentic-qa-onboard does not run test suites or evaluate releases.", "category": "negative" } ] }
-
-
SKILL.md 37.3 KB
--- name: agentic-qa-onboard description: "Walks new users through this repo's QA flow — Playwright + KATA + Allure + Xray stack, Jira QA workflow (Backlog → Shift-Left QA → Estimation → Ready For Dev → Ready For QA → In Test → QA Approved → Ready For Release → Deployed to Production), /shift-left-testing for pre-sprint AC refinement on backlog Stories, /sprint-testing for in-sprint manual QA, /test-documentation for TMS test cases, /test-automation for KATA-compliant E2E/API tests, /regression-testing for CI suite execution, /framework-development for boilerplate evolution, MCPs available (six canonical: Context7, Tavily, Playwright, DBHub, OpenAPI, Postman — Atlassian is opt-in via docs/mcp/), critical env vars, and the ordered 4-phase NEW-PROJECT setup path (foundation → Jira catalogs → /project-discovery + /adapt-framework → git Strategy Setup). ALSO the front desk for anyone who is lost or wants to understand how the repo or any workflow skill works — conceptually AND visually: it explains in plain human language (suspending caveman/compressed register) and can open per-skill how-it-works presentations (Spanish, technical terms in English) in the user's default browser after asking. Triggers on: `onboard me to QA`, `explain this QA repo`, `first time using this`, `primer vez en QA`, `/agentic-qa-onboard`, `I don't know how to use this`, `how does sprint-testing / test-automation work`, `how does this skill work`, `show me how it works`, `teach me how QA works here`, `walk me through this skill`, `no sé cómo usar esto`, `no entiendo cómo funciona el repo`, `cómo funciona este skill`, `explícame cómo funciona`, `enséñame cómo se hace`, `how do I set this repo up for my app`, `full setup for a new project`, `cómo configuro el repo para mi proyecto`, `setup completo del repo`. Do NOT use for: pre-sprint refinement (use /shift-left-testing), feature QA on a ticket (use /sprint-testing), authoring test cases in TMS (use /test-documentation), writing automated tests (use /test-automation), running regression suites (use /regression-testing), launching or supervising a fleet of parallel worker sessions (use /orca-orchestration — this skill only explains that the option exists)." license: MIT compatibility: [claude-code, opencode] phase: bootstrap complementary_categories: [meta-skill] --- <!-- Model preferences (advisory; dispatchers may use to route) --> <!-- model_preferences: foundation: opus # high-leverage architectural work planning: sonnet # structured writing implementation: sonnet # default for code work review: opus # critical analysis archive: haiku # mechanical close-out --> # Agentic QA Onboard — First-time tour of this repo Activate when a user lands on this repo for the first time and asks "where do I start?", "how does QA work here?", or invokes `/agentic-qa-onboard`. The skill is a guided tour, not an executor: it explains the stack, the QA pipeline (pre-sprint Stage 0 + in-sprint Stages 1-6), the MCPs, and the env vars that everything depends on, then hands off to the right downstream skill. This skill is specific to **this** Playwright + KATA QA boilerplate and points at the concrete entry points (`/shift-left-testing`, `/sprint-testing`, `/test-automation`, `/test-documentation`, `/regression-testing`, `/framework-development`). --- ## Compact Rules - DO: act as a guided tour, not an executor. The tour ends the moment the user knows which skill to call; hand off there and step back. - DO NOT: do the downstream work yourself. Pre-sprint refinement is `/shift-left-testing`, per-ticket QA `/sprint-testing`, TMS authoring `/test-documentation`, automated tests `/test-automation`, suite runs `/regression-testing`, a new target repo `/project-discovery`, KATA adaptation `/adapt-framework`. - WHEN someone is lost or asks how a skill works: suspend the compressed / caveman register for the whole explanation — full sentences, warm tone, and each technical term defined the first time it appears. Resume the normal register once they are oriented. - DO: mirror the user's language in the explanation. The visual decks ship in Spanish only (technical terms stay English) — say so before opening one for an English speaker. - WHEN the goal is unclear: ask ONE question first (testing a ticket, or understanding the whole flow?). Never dump all six stages on someone who asked about one. - WHEN someone asks about running several sessions at once ("parallelize the sprint", "one session per story", "orquestar", "lanza workers"): explain the two executors in plain words — a one-shot subagent lives inside the current turn and is the default for almost everything, a supervised worker is a persistent session you keep talking to — then hand off to `/orca-orchestration`. Its deck is `packages/decks/orca-orchestration/how-it-works.es.html`. - DO: explain the concept in plain words, and why it matters, BEFORE any command, flag, or file path. - DO NOT: open a how-it-works deck without asking — it launches the user's default browser. Open exactly ONE, then let them come back with questions before offering the next. - WHEN opening a deck: prefer the published GitHub Pages URL over the local file, because a project scaffolded from this boilerplate may not carry the HTML. Use the local copy only offline or on explicit request. - DO: route a brand-new project through the ordered 4-phase setup path (foundation → Jira catalogs → discovery + adapt → git Strategy Setup). The joining-an-adapted-project checklist covers phase 1 only and is not a substitute. - DO NOT: state a Jira status or transition from memory. `.agents/jira-workflows.json` is authoritative — if a status is not in there, it does not exist in the instance. - DO: point library-docs questions at Context7 and troubleshooting at Tavily; ticket WRITES at `/acli`, and detailed ticket READS (custom fields, ACs, ATP/ATR, comments) at the Jira sync script, whose synced `.md` is what you read. - DO NOT: suggest swapping the stack. Playwright + KATA + Allure + TypeScript + bun is locked, and KATA is Playwright-specific — a project needing another runner should not start from this boilerplate. **Read full SKILL.md when**: walking the full 4-phase new-project setup, listing env vars or MCPs in detail, or answering which deck covers a given topic. --- ## Teaching mode — when someone is lost or wants to understand a skill This skill is also the **front desk** for anyone who is confused: *"I don't know how to use this"*, *"how does `/sprint-testing` actually work?"*, *"what does this repo even do?"*, *"explain test-automation to me"*, *"no entiendo cómo funciona esto"*. When that happens, step into the scene as a friendly guide and follow these rules: 1. **Speak like a human, not a terminal.** For the whole explanation, **suspend any compressed / caveman register** — full sentences, warm tone, simple words, zero unexplained jargon. Define each technical term the first time you use it ("an ATC — basically one complete test case, start to finish"). This is an explicit in-skill override of the default register; resume your normal style once the person is oriented. 2. **Mirror the user's language.** Spanish in → explain in Spanish. English in → explain in English — but note that the visual decks ship in Spanish only (technical terms stay in English inside them). 3. **Start from where they are.** If the goal is unclear, ask ONE quick question ("are you trying to test a ticket, or understand the whole flow?"). Don't dump all six stages on someone who asked about one. 4. **Concept first, in plain words** — what the activity is and *why* it matters — before any command, flag, or file path. 5. **Then offer the visual presentation.** Each workflow skill has a `how-it-works` deck that walks the skill's workflow step by step: a cover slide, a full workflow map (main path + adjacent paths), then one phase per slide with the craft concepts embedded where they apply. Offer to open it in their browser — follow the opening protocol below. 6. **Hand off when oriented.** Once they know which skill to call, point them at it and step back. --- ## How-it-works presentations (visual, in the browser) Seven of the skills ship a **self-contained HTML presentation** (Spanish; technical terms in English) that teaches the skill as a **step-by-step workflow** — and `agentic-qa-core` adds two cross-cutting reference decks (naming conventions + skills inputs/outputs; see the section below). Each how-it-works deck follows the same shape: slide 1 is the cover (`/skill-name`), slide 2 is the full workflow map (main path + adjacent paths: gates, fallbacks, handoffs), then one phase per slide with the craft concepts embedded where they apply, closing with handoffs and how to invoke the skill. | Skill / activity | Deck (Spanish) | | ------------------------ | ---------------------------------------------------------- | | Shift-Left Testing | `packages/decks/shift-left-testing/how-it-works.es.html` | | Sprint Testing | `packages/decks/sprint-testing/how-it-works.es.html` | | Test Documentation & ROI | `packages/decks/test-documentation/how-it-works.es.html` | | Test Automation (KATA) | `packages/decks/test-automation/how-it-works.es.html` | | Regression & GO/NO-GO | `packages/decks/regression-testing/how-it-works.es.html` | | Xray for Jira (workflow) | `packages/decks/xray-cli/how-it-works.es.html` | | Multi-session orchestration | `packages/decks/orca-orchestration/how-it-works.es.html` | ### Cross-cutting reference decks (agentic-qa-core) Beyond the per-skill workflow decks, `agentic-qa-core` ships two transversal reference decks. Offer them by intent, not by skill: | User intent | Deck (Spanish) | | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | "How is everything named?" — artifact/test/branch/ID naming conventions | `packages/decks/agentic-qa-core/naming-conventions.es.html` | | "How do the skills fit together?" — the E2E flow (story → refinement → dev → testing) as **inputs & outputs** per skill: what each phase reads, which skills it loads, what it produces, which Jira fields/transitions it touches | `packages/decks/agentic-qa-core/skills-io-flow.es.html` | The skills-io deck is the best single answer to "what does skill X need / produce" or "show me the whole pipeline" — it renders as a Mac-style terminal with one tab per phase (arrow keys or `1-9` to switch tabs). The full deck catalog (including the academy/craft decks per skill) lives on the published homepage below. Single files (CSS + JS inlined) — they open by double-click, no server. Navigate with `←` `→`, `S` for speaker notes, `O` for the slide overview, `F` for fullscreen. ### Published site (PREFERRED source — works in every project) All decks — plus the interactive **KATA Academy** and the boilerplate homepage — are published on the boilerplate's GitHub Pages hub: ``` https://upex-galaxy.github.io/agentic-qa-boilerplate/ ← homepage (deck catalog) https://upex-galaxy.github.io/agentic-qa-boilerplate/kata/ ← KATA Academy (interactive) https://upex-galaxy.github.io/agentic-qa-boilerplate/decks/<skill>/<deck>.html ``` Example: `.../decks/sprint-testing/how-it-works.es.html`. The `<skill>/<file>` segment matches the local paths in the table above. **Prefer the published URL** — it always works, even in consumer projects scaffolded from this boilerplate (which may not carry the local HTML files). Use the local file only when offline or when the user explicitly wants the repo copy. ### Opening protocol (ALWAYS ask first) Opening a deck launches the user's default browser — an outward, local action — so **never open one without asking, and open only ONE at a time.** 1. **Announce + ask.** "I can open a short visual deck that walks through how `/sprint-testing` works — the full workflow map first, then each phase step by step. Want me to open it in your browser?" 2. **Decks are Spanish-only** (`.es.html`). If the user speaks English, mention the deck is in Spanish (technical terms stay in English) before opening it. 3. **On a yes, open exactly one deck** — published URL first; local file as offline fallback (pick the OS command for the user's platform): ```bash open "https://upex-galaxy.github.io/agentic-qa-boilerplate/decks/sprint-testing/how-it-works.es.html" # macOS → default browser xdg-open "https://upex-galaxy.github.io/agentic-qa-boilerplate/decks/sprint-testing/how-it-works.es.html" # Linux start "" "https://upex-galaxy.github.io/agentic-qa-boilerplate/decks/sprint-testing/how-it-works.es.html" # Windows # offline / repo-copy fallback (only if the file exists locally): open "packages/decks/sprint-testing/how-it-works.es.html" ``` 4. **One at a time.** Let the person watch and come back with questions before offering the next skill's deck. Do not batch-open several. 5. **After it opens,** tell them the keys (`←` `→` to move, `S` for speaker notes) and offer to walk the slides together or answer questions as they go. 6. **For "how does KATA work" / architecture questions,** also offer the interactive KATA Academy (`.../kata/`) — 8 interactive chapters, Spanish, presentation mode with the `P` key. --- ## Welcome This is the **Agentic QA Boilerplate** — a QA-only boilerplate for testing web applications with AI agents in the loop. The repo ships skills, scripts, and conventions that turn a Jira QA ticket into documented test cases and automated regression coverage through a structured 6-stage pipeline. It does **not** ship the application under test — that lives in a separate target repo (configured via `.agents/project.yaml`). If you cloned this repo and you don't yet have `bun run setup` complete, start there. Everything else assumes the foundation is green. --- ## Stack | Layer | Choice | | ----------- | -------------------------------------------- | | Framework | Playwright (E2E + API) | | Architecture| KATA (TestContext / Base / Domain / Fixture) | | Reporting | Allure | | TMS | Jira + Xray Cloud | | Language | TypeScript (strict mode) | | Runtime | bun | | Lint/format | ESLint + Prettier (pre-commit hooks) | | AI agent | Claude Code (primary), OpenCode (alt) | The stack is intentionally locked. If your QA project needs a different stack (Cypress, Robot Framework, etc.), this boilerplate is not the right starting point — the KATA architecture is Playwright-specific. --- ## First-time setup Run the interactive installer once after cloning: ```bash bun run setup ``` This bootstraps `.agents/`, installs the gentle-ai `engram` component (minimal preset), configures the 6 canonical MCPs, downloads Playwright browsers, installs 7 user-level community skills + 3 project-level community skills, and verifies the `${VAR}` placeholders in the committed `.mcp.json` against your `.env`. Full details in [`INSTALLER.md`](../../../INSTALLER.md). After setup, fill `.env` with the credentials the rest of the workflow expects (see "Critical env vars" below). --- ## New project path — from a fresh clone to a repo adapted to YOUR app `bun run setup` is phase 1 of 4, not the whole story. A brand-new project (new app under test, new Jira project) walks this ordered sequence before the first ticket. Each phase self-defends (later steps gate on earlier ones), but knowing the order saves you from discovering it by error message: | Phase | Goal | How | | ----- | ---- | --- | | 1. Foundation | Tooling green on this machine | `bun run setup` → fill `.env` → `bun run agents:setup` (project identity + environments in `.agents/project.yaml`) → `bun run pw:install` → `bun run jira:check` | | 2. Jira side | The tracker's catalogs mirrored locally | `bun run jira:sync-fields` + `jira:sync-workflows` + `jira:sync-link-types` (generate the `.agents/*.json` catalogs every skill reads) → `/jira-components` (reconcile Jira Components against the app's real modules). First-time Jira provisioning: `docs/setup/jira-setup-guide.md` | | 3. App under test | The framework knows and fits YOUR app | `/project-discovery` (reverse-engineers the target repo → `.context/` with PRD, SRS, business maps) → `/adapt-framework` (adapts KATA, config, CI, MCPs to the stack; its Phase 0 GATES on `.context/` existing, so the order is enforced) → hands off to `/sync-ai-memory` | | 4. Git strategy | Branch policy is a decision, not an inherited default | Ask **"set up our git strategy"** (git-flow-master's Strategy Setup: 4 questions → `git_strategy:` block in `.agents/project.yaml`), then optionally `bun run git:policy apply` to mirror it on GitHub. If you skip this, git-flow-master OFFERS it on your first real git action anyway (template-trap guard) — and `bun run git:policy verify` runs on every push via the pre-push hook | After phase 4: `bun run context:hydrate` to pull the Jira cache, then `/sprint-testing <KEY>` for the first ticket. Joining an ALREADY-adapted project instead? Skip phases 2-4 (someone did them) and just run the checklist at the end of this tour. --- ## Primary pipeline: Stage 0 (pre-sprint) + Stages 1-6 (in-sprint) The QA work in this boilerplate runs in two halves: a pre-sprint Shift-Left grooming phase, then a 6-stage in-sprint pipeline per ticket. Each stage maps to a skill. | Stage | Skill | When | What happens | | ----- | ---------------------- | ------------------- | ----------------------------------------------------------------------------------------- | | 0 | `/shift-left-testing` | PRE-SPRINT (batch) | AC refinement on N backlog Stories, gap-spotting, early authoring of the Story's single ATP (outline maturity — same field + same Test Plan that `/sprint-testing` Stage 1 later refines), transition `backlog → shift_left_qa → estimation`. Adds labels `shift-left-reviewed` + `shift-left-{YYYY-MM-DD}` (the dated one powers the <30-day short-circuit). | | 1-3 | `/sprint-testing` | IN-SPRINT (ticket) | Per-ticket: Planning → Execution → Reporting. Smoke + trifuerza (UI/API/DB) exploration. Short-circuits Phases 1-3 if Stage 0 ran <30 days ago. | | 4 | `/test-documentation` | IN-SPRINT (post-QA) | Document test cases in TMS (Test/ATP/ATR). ROI prioritization (Candidate/Manual/Deferred).| | 5 | `/test-automation` | POST-SPRINT | KATA-compliant E2E + API tests on Playwright. Plan → Code → Review. | | 6 | `/regression-testing` | PRE-RELEASE | CI suite execution. Failure classification. GO/CAUTION/NO-GO release verdict. | **Jira QA state machine:** > **Authoritative source: `.agents/jira-workflows.json`.** Status and transition names below are copied from that file (regenerate with `bun run jira:sync-workflows`). Never write a Jira status from memory — if it is not in `.agents/jira-workflows.json`, it does not exist in the instance. ``` Backlog → Shift-Left QA → Estimation → Ready For Dev → In Progress → In Review → Ready For QA → In Test → QA Approved → Ready For Release → Deployed to Production ``` `/shift-left-testing` drives the upstream transitions (Backlog → Shift-Left QA → Estimation). `/sprint-testing` drives the downstream ones (Ready For QA → In Test → QA Approved). PO/Dev lead drive the middle leg (Estimation → Ready For Dev → In Progress → In Review). A defect found in test sends the story `In Test → BLOCKED` (transition `defect reported`); `ABORTED` is the other terminal. (For bugs found during QA: `Open → In Progress → In Review → Ready For QA → Closed` — the `ReTest Passed` transition closes it after fix verification. Non-fix terminals: `Deferred`, `Duplicated`, `Enhancement`, `Cannot Reproduce`, `REJECTED`, `ABORTED`.) (Test cases in the TMS have their own lifecycle too: `READY → In Review → Candidate → In Automation → Pull Request → AUTOMATED` — `MANUAL` is the terminal for tests that will never be automated.) Each Story gets three canonical TMS artifacts: the **ATP** (plan), the **ATR** (results), and the **ATS** (Acceptance Test Set — groups ALL the Story's TCs; its link to the Story is what fills the Xray coverage panel). Above the Story sits the planning ladder: **FTP** per feature/Epic (`/sprint-testing` feature-test-planning), **STP** at sprint start + **STR** recap at sprint close (`/sprint-testing`, with `/regression-testing` as fallback/completer), and the **MTP** Epic from `/master-test-plan`. Two conventions apply to every quality issue you file along the way. **Components** are the target app's functional modules — mandatory on bugs, defects, improvements, and Tests — and are reconciled against the app's real modules via `/jira-components`. And bugs parent to the QA process epics (e.g. "QA Defect Management"), never a product/dev epic, carrying the source Story via an issue-link: parent = QA bucket, link = source Story, components = product module (the three-axis model). `/sprint-testing` orchestrates Stages 1-3. Stage 4 onwards are explicit hand-offs. Wondering what is already covered before Stage 4/5? `bun run tests:map` renders the synced Epic → Story → Test tree (plus orphans and a component rollup) as one HTML page, and the `/xray-cli` skill's `test enrich` command backfills the synced Test cache with the Xray-internal associations (Preconditions, Test Set membership) the Jira REST sync cannot see. ### Stage 1-3 example flow `/sprint-testing UPEX-277`: 1. Syncs the ticket from Jira via `bun run jira:sync-issues get <KEY> --include-comments` (canonical detailed read — `acli view` returns null for custom fields), then reads the materialized `.md` files. 2. Loads the synced context from `.context/PBI/epics/EPIC-<KEY>-<slug>/stories/STORY-<KEY>-<slug>/` (Module = Epic; Jira-synced files are a read-only cache). 3. Explores the relevant code in the target repo. 4. Authors the ATP (Acceptance Test Plan) → writes it to the Jira field (or fallback comment) → re-syncs; hand-writes only NON-Jira files (context.md, evidence/). 5. Executes smoke + trifuerza exploration (UI / API / DB). 6. Files ATR (Acceptance Test Results) + bug reports if defects found. 7. Transitions the ticket through QA states. 8. Hands off to Stage 4 (`/test-documentation`) to document the executed test cases in the TMS and score ROI — Stage 4's Candidate verdicts are what feed `/test-automation`. Where those Candidates physically go: Stage 4 refines each one (the sprint TC is a draft, its title re-derived to the canonical `{US_ID}: TC#: should …` form), groups them into named e2e regression flows, and adds every one to the project's long-lived **Regression Test Plan (RTP)** with the `regression-candidate` label — that RTP membership, not any local report, is what `/test-automation` and `/regression-testing` read downstream. You confirm at the gates. --- ## When to use `/framework-development` instead | When | Skill | | -------------------------------------------------------------------------- | -------------------------------------------------------------------- | | Pre-sprint AC refinement / batch grooming of backlog Stories | `/shift-left-testing` (Stage 0) | | Routine in-sprint QA on a Jira ticket (most cases) | `/sprint-testing` (ticket-driven) | | Authoring new automated test for a Candidate TC | `/test-automation` | | Refactor of the boilerplate itself — KATA bases, fixtures, cli/, scripts/ | `/framework-development` | `/framework-development` covers framework evolution (changes to the boilerplate's own infrastructure, not per-ticket test writing). Self-contained Plan → Code → Verify → Archive pipeline; works under the minimal install preset (no SDD-* skills required). --- ## Running several sessions at once (optional) Everything above assumes one AI session at a time, and that is the normal way to work. There is a second way, and it is worth knowing it exists before someone asks for it. The AI has **two executors**. A *one-shot subagent* lives inside the current turn: it reads, verifies or maps something, reports back, and its memory dies with the report. That is the default and it covers almost all work. A *supervised worker* is a persistent session with its own scope that the conductor session keeps talking to — useful when the work does not fit inside a turn: a whole story tested end to end, a module automated and integrated, a cluster of CI failures chased down. `/orca-orchestration` owns that second executor: one **conductor** (the session talking to you) coordinating a **fleet** of workers, in **rounds** of a few at a time. Each workflow skill still owns _what_ gets done; the orchestration skill owns _how_ the sessions are launched, briefed, supervised and closed, plus the claims protocol that stops two workers from fighting over the same test user or fixture. Two things to tell a newcomer: - **It is optional.** The transport needs an orchestration runtime installed and reachable. Without it, a workflow skill never mentions it — it writes its launch file exactly as before and you paste the lines into your own terminals. Same plan, same briefs, more manual work. - **It is not "faster QA".** It was dogfooded on a real sprint: three of the most delayed stories tested in parallel, 32 minutes of parallel execution, 21 tracker artefacts and 9 quality issues. The value that showed up was not the hour saved — it was three sessions measuring the same environment from three angles, catching things a single session structurally cannot, including one conductor instruction that was simply wrong and that a worker refused to follow because its own measurement disagreed. Visual deck: `packages/decks/orca-orchestration/how-it-works.es.html` (same opening protocol as every other deck — ask first). --- ## MCPs available Six canonical MCPs ship with the boilerplate: | MCP | Use it for | | ---------- | ----------------------------------------------------------------------- | | Context7 | Official library docs (Playwright, KATA-relevant TS, Allure…) | | Tavily | Web search, troubleshooting community Q&A | | Playwright | Live browser interactions for exploratory QA (when CLI is not enough) | | DBHub | DB queries to validate state-mutating tests | | OpenAPI | API endpoint exploration, contract checking | | Postman | Saved request collections, request replay for API tests | The **Atlassian MCP is opt-in** (setup in `docs/mcp/`) — the primary Jira tools are `/acli` and `bun run jira:sync-issues`. **Decision rule:** - Use **Context7** for "how to use X" — official docs, current API - Use **Tavily** for "how to solve X" — community fixes, troubleshooting - Use `/acli` for ticket WRITES (create, transition, comment, link); for detailed READS (custom fields, ACs, ATP/ATR, comments) use `bun run jira:sync-issues get`/`jql` - Use **Playwright MCP** for ad-hoc live browser interactions; for scripted runs use `/playwright-cli` `.mcp.json` lives at the repo root and is **committed** — it is secret-free, referencing secrets as `${VAR}` placeholders resolved from `.env`. Only `.mcp.local.json` (personal overrides) is gitignored. --- ## Critical env vars Place these in `.env` before running anything that talks to a real environment: | Var | Used by | | ------------------------------------------------ | -------------------------------------------------- | | `LOCAL_USER_EMAIL` / `LOCAL_USER_PASSWORD` | Local app login (Playwright fixtures) | | `STAGING_USER_EMAIL` / `STAGING_USER_PASSWORD` | Staging smoke tests, manual exploration | | `ATLASSIAN_EMAIL` / API token | `acli` Jira CLI (+ Atlassian MCP, if opted in). The site HOST is NOT in `.env` — it lives in `.agents/project.yaml` -> `issue_tracker.atlassian_url`; read it with `bun run --silent jira:url` | | `XRAY_CLIENT_ID` / `XRAY_CLIENT_SECRET` | `bun xray` CLI (Xray Cloud authentication) | | `TAVILY_API_KEY` | Tavily MCP | | `POSTMAN_API_KEY` | Postman MCP | `.env` is **gitignored**. Never commit it. `.agents/project.yaml` (committed) holds non-secret context (URLs, project key, environment names); `.env` holds the matching secrets. `.mcp.json` is **committed** and safe to commit — it never holds a secret value, only `${VAR}` placeholders that Claude Code resolves from `.env` at runtime. Personal overrides go in the gitignored `.mcp.local.json`. Verify your config with `bun run vars:check` (should report 0 errors when fully configured). --- ## Local skills (committed in this repo) | Skill | Trigger | Purpose | | -------------------- | ---------------------- | ------------------------------------------------------------------------------ | | `agentic-qa-core` | (auto, cited by other skills) | Passive reference host: briefing template, dispatch patterns, orchestration doctrine, skill-composition strategy | | `agentic-qa-onboard` | `/agentic-qa-onboard` | This skill — first-time orientation | | `project-discovery` | `/project-discovery` | 4-phase reverse-engineering of a target project | | `shift-left-testing` | `/shift-left-testing` | Stage 0 — pre-sprint AC refinement on a batch of backlog Stories. Authors the Story's ATP early, transitions `backlog → shift_left_qa → estimation`. | | `sprint-testing` | `/sprint-testing` | Stages 1-3 — per-ticket manual QA loop. Short-circuits Phases 1-3 when the dated `shift-left-{YYYY-MM-DD}` label is <30 days old. | | `test-documentation` | `/test-documentation` | Stage 4 — TMS test case authoring + ROI | | `test-automation` | `/test-automation` | Stage 5 — KATA + Playwright + TS automation | | `regression-testing` | `/regression-testing` | Stage 6 — CI suite execution + GO/NO-GO verdict | | `framework-development` | `/framework-development` | Framework evolution of the boilerplate itself — KATA bases, fixtures, cli/, scripts/. Plan → Code → Verify → Archive | | `bug-screenshot-annotation` | "annotate bug screenshot" | Turns a raw bug screenshot into annotated evidence (circles, arrows, callouts) rendered 100% locally | | `pr-review-lead` | "review this PR" | QA Lead review of a PR's test-automation work against KATA (or the target repo's) doctrine | | `acli` | `/acli` | Atlassian CLI wrapper for Jira/Confluence terminal work | | `xray-cli` | `/xray-cli` | Xray Cloud TMS CLI | | `git-flow-master` | (auto on git intents) | End-to-end Git operator (branch, commit, push, PR, conflict, chained-PR) | | `orca-orchestration` | "orchestrate", "fleet", "one session per story", "orquestar" | One conductor coordinating a fleet of persistent worker sessions (one per story / module / failure cluster). Optional and silent when no orchestration runtime is installed. Each workflow skill keeps owning the WHAT; this one owns the HOW | | `judgment-day` | `/judgment-day`, `juzgar` | Vendored from gentle-ai (Apache-2.0). Adversarial dual-judge review (2 blind judges in parallel, fix loop, re-judge). Optional gate cited by `/test-automation` Phase 3 + `/git-flow-master` pre-PR. | --- ## What `bun run setup` installs via gentle-ai `bun run setup` runs `gentle-ai install --preset minimal` — installs ONLY the **`engram`** component (persistent memory binary + MCP adapter + agent config). No SDD-* skills, no foundation skills. Rationale: this repo already covers Plan → Code → Verify natively in its workflow skills (`/shift-left-testing`, `/sprint-testing`, `/test-automation`, `/test-documentation`, `/regression-testing`). SDD ceremony does not apply to test authoring. Want the explicit SDD ceremony for an architectural change of your own? Run manually: ```bash gentle-ai install --components engram,sdd --agent <claude-code|opencode|cursor> ``` Full details in [`INSTALLER.md`](../../../INSTALLER.md). ## Community skills installed at user level `bun run setup` also runs `bunx skills add --global` for 6 cross-project skills (the last row of the table below is NOT one of them — the orchestration binary installs it, not `setup`): **Every installed skill needs a LOADER, or it should not be installed.** An install that no flow ever reaches is tokens spent on a capability nobody invokes — and the failure is silent, because an unused skill looks exactly like a working one. So the third column is not decoration: it names the skill and the moment that loads this one, or says plainly that only a human invokes it. | Skill | Source | Loaded by / when | | --- | --- | --- | | `skill-creator` | anthropics/skills | **user-invoked only, today.** No flow names it. `/framework-development` is the natural owner when the change IS a skill, but its skill list does not say so yet — do not read this row as if it did | | `find-skills` | vercel-labs/skills | **automatic, last resort.** `agentic-qa-core/references/skill-composition-strategy.md` §11.2: scan T1+T2, then installed T3+T4, and only if a task domain still has no match does any flow invoke this — then asks before installing | | `github-actions-docs` | xixu-me/skills | `/framework-development` and `/regression-testing` when EDITING or diagnosing `.github/workflows/**` (both name it; reading a workflow does not need it) | | `html-ppt` | lewislulu/html-ppt-skill | **user-invoked only.** `packages/decks/` is hand-authored; this is for a one-off deck outside that tree | | `bun` | bun.sh/docs | any flow hitting an unfamiliar Bun API (§6.5 CLI mapping) | | `mkd` | upex-galaxy/agentic-user-skills | any flow that reaches the decision threshold in `agentic-qa-core/references/decision-elicitation-doctrine.md` (>3 decisions, or one dense one) | | `orchestration.orchestrator_skills` | the orchestration binary | `/orca-orchestration`, ALONGSIDE it — the vendor owns the command grammar, the repo skill owns when and what | Plus 3 project-level community skills installed into `.agents/skills/` (not committed): `playwright-cli`, `playwright-best-practices`, `resend-cli`. See `cli/install.ts` `PROJECT_LEVEL_SKILLS` and `USER_LEVEL_SKILLS` arrays. --- ## Next steps after the onboard **On a brand-new project** (new app under test / new Jira project): follow the 4-phase "New project path" above — this checklist alone is not enough, it only covers phase 1. **Joining an already-adapted project**: run through this checklist before you reach for your first ticket: - [ ] Did you run `bun run setup`? - [ ] Did you fill `.env` with your own credentials (`LOCAL_*`, `STAGING_*`, `ATLASSIAN_*`, `XRAY_*`, `TAVILY_API_KEY`, `POSTMAN_API_KEY`)? - [ ] Did you populate `.agents/project.yaml` (run `bun run agents:setup` if not yet)? - [ ] Does `bun run vars:check` exit clean (0 errors)? - [ ] Did you run `bun run jira:check` to verify Jira credentials? - [ ] Did you run `bun run pw:install` to get Playwright browsers? - [ ] Did you run `bun run context:hydrate` to build the `.context/PBI/` Jira cache? (gitignored and regenerable — Jira stays the source of truth) - [ ] Does the `git_strategy:` block in `.agents/project.yaml` reflect a CHOSEN strategy (`meta.strategy_source: chosen`)? If it still says `inherited`, git-flow-master will offer Strategy Setup on your first git action — accepting takes 4 questions. - [ ] Does engram persistent memory respond (try `mem_context` after restart)? - [ ] Ready for your first QA ticket: `/sprint-testing <UPEX-XXX>` If any box is unchecked, fix that first. The downstream skills assume a green foundation. --- ## What this skill does NOT do - Refine backlog Stories pre-sprint → use `/shift-left-testing` - Test a ticket → use `/sprint-testing` - Document test cases in TMS → use `/test-documentation` - Write automated tests → use `/test-automation` - Run a regression suite → use `/regression-testing` - Discover a brand-new target project → use `/project-discovery` - Adapt the KATA test architecture to a target stack → use `/adapt-framework` - Launch or supervise several parallel sessions → use `/orca-orchestration` The onboard tour ends at the moment the user knows which skill to call next. From there, the relevant workflow skill takes over.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.