Architecture Overview
dq-awesomeqa is a zero-runtime plugin. It adds no application code - every skill is a SKILL.md instruction file that your coding agent executes. The architecture has three layers.
Layer diagram
┌─────────────────────────────────────────────────────────────────────┐
│ Plugin-Capable Coding Agent │
│ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ dq-awesomeqa plugin │ │
│ │ │ │
│ │ ┌────────────────────┐ ┌──────────────────────────────┐ │ │
│ │ │ SKILLS. │ │ 3 Hooks (JS + bash) │ │ │
│ │ │ │ │ │ │ │
│ │ │ /qa-init │ │ sanitize-input.js │ │ │
│ │ │ /qa-setup │ │ audit-log.js │ │ │
│ │ │ /qa-onboard │ │ qa-safety.js │ │ │
│ │ │ /qa-requirement │ │ session-start (bash) │ │ │
│ │ │ /qa-plan │ │ stop (bash) │ │ │
│ │ │ /qa-impact │ └──────────────────────────────┘ │ │
│ │ │ /qa-api │ │ │
│ │ │ /qa-ui │ ┌──────────────────────────────┐ │ │
│ │ │ /qa-a11y │ │ dq-qa.config.json │ │ │
│ │ │ /qa-perf │ │ (written by /qa-onboard, │ │ │
│ │ │ /qa-exec │ │ read by all skills) │ │ │
│ │ │ /qa-triage │ └──────────────────────────────┘ │ │
│ │ │ /qa-coverage │ │ │
│ │ │ /qa-report │ │ │
│ │ │ /qa-codegen │ │ │
│ │ └────────────────────┘ │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │ │
│ delegates to ▼ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ External Tools │ │
│ │ │ │
│ │ democratize-quality MCP a11y-cli dq-nbomber-cli │ │
│ │ (bundled in plugin) (npm global) (.NET global) │ │
│ │ API testing UI + A11y Load testing │ │
│ └──────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘Design principles
| Principle | What it means in practice |
|---|---|
| Config-first | Every skill starts with dq-qa.config.json. If missing, /qa-onboard is triggered automatically |
| Domain isolation | Each skill owns exactly one domain. Skills do not call each other - the phase gate in /qa-init sequences them |
| Tools do the heavy lifting | Skills orchestrate; CLIs generate. A skill never writes test code from scratch |
| Separate reports, unified summary | Each domain writes to its own reportDir. /qa-report aggregates them into qa-summary.md |
| Consultant tone | Skills explain why they ask what they ask and always close with recommended next steps |
Data flow per cycle
User opens project
│
▼
session-start hook fires
→ injects skill index + config contract into context
│
▼
User runs /qa-init (or individual skill)
│
├─ reads dq-qa.config.json
├─ reads requirements/ folder
├─ reads qa-plan.md
│
▼
Skill runs → delegates to external tool
│
├─ democratize-quality MCP → API reports in qa-reports/api/
├─ a11y-cli → UI + A11y reports in qa-reports/ui|a11y/
├─ dq-nbomber-cli → Perf reports in qa-reports/perf/
│
▼
/qa-report aggregates → qa-summary.mdArtifact versioning
All QA documents use dated sections rather than separate files. New versions prepend a new section - history is preserved below the current entry.
Affected files: requirements/*.md, qa-plan.md, qa-triage.md, qa-coverage.md, qa-summary.md.
Skills always read only the first (most recent) dated section.
