The fastest path from a fresh checkout to a first agentic QA run. Audience: a junior contributor who has never seen the kit before.
| Tool | Version | Check command |
|---|---|---|
| Bun | ≥ 1.3.0 | bun --version |
| Node | ≥ 22 LTS | node --version |
| Git | any modern | git --version |
| GitHub CLI | optional | gh --version |
Windows users: PowerShell 7+ is the supported shell. WSL also works.
cd path/to/your/project
bun add -D @aqa/kit @aqa/schemasUntil v0.1.0 publishes to npm, consume the kit via this monorepo's workspace:
"@aqa/kit": "workspace:*".
bunx aqa initThis writes four files (non-destructive — existing files are skipped):
.aqa/
├── project.yaml # project name, runtime, framework, DB, SUT type
├── risk-map.yaml # one starter risk; replace with the ones that matter
├── profiles.yaml # `smoke` and `release-gate` profiles, both orchestrator-mode
└── testing.md # human-readable rationale for the QA conventions
Open each file and tailor them to your SUT. The risk map is the heart of the kit — generic risks produce generic findings.
bunx aqa doctor # ✓/⚠/✗ checklist
bunx aqa validate # schema-check .aqa/* against @aqa/schemas (CI-safe)
aqa install-agent-fileslands with the Task 4 follow-up. Until then, copy the templates frompackages/adapters/src/*.tsinto your repo manually (CLAUDE.md,AGENTS.md,GEMINI.md,.github/copilot-instructions.md).
Replace the placeholder in .aqa/risk-map.yaml:
- id: r-token-replay
category: auth
title: Tokens remain valid past rotation
severity: critical
likelihood: possible
invariants:
- id: inv-token-rotation
statement: Old tokens become invalid within 60 seconds of rotation.A good invariant is one sentence, falsifiable, and independent of implementation.
Full
aqa run --profile smokelands with the Task 5 HTTP-probe-driver follow-up. Until then, exercise the runner programmatically:
import { runScenario, EventChainWriter } from '@aqa/runner';
const events = new EventChainWriter('.aqa/runs/demo/events.jsonl');
const result = await runScenario({
scenario, run_id: 'demo',
probeRunner: async (p) => ({ probe_id: p.id, status: 401 }), // mocked
events,
});
console.info(result.finding ? 'FAIL' : 'PASS');The runner appends a hash-chained event log under .aqa/runs/demo/ and emits
a Finding when an oracle fails. That Finding is the smallest unit your CI gate
will fail on.
docs/methodology/agentic-qa.md— the Risk × Invariant × Probe × Oracle methodology, in long form.docs/ecosystem-explained.md— every concept in the kit, with a worked example.docs/architecture/reference.md— the component map and data flow.docs/design/admin-panel-template.md— the full admin UI spec.docs/RULES.md— the hard rules every contribution must obey.docs/adr/— architecture decisions (start with ADR-001).
When you hit something the docs don't cover, file an issue. The kit is junior-friendly on purpose.