qa

Use after code changes, before releases, or when testing features - runs the right level of QA based on what changed

6 stars

Best use case

qa is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Use after code changes, before releases, or when testing features - runs the right level of QA based on what changed

Teams using qa should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/qa/SKILL.md --create-dirs "https://raw.githubusercontent.com/karloscodes/fusionaly-oss/main/.claude/skills/qa/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/qa/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How qa Compares

Feature / AgentqaStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Use after code changes, before releases, or when testing features - runs the right level of QA based on what changed

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# QA Testing

## What did you change? Start here.

| Change | Test level | Command |
|--------|-----------|---------|
| Bug fix, refactor, small feature | **Unit** | `make test` |
| Feature, UI, big change | **Unit + E2E** | `make test` then `make test-e2e` |
| Visual / UI verification | **Agent-browser** | `make dev` + agent-browser |
| Install script, matcha, infra | **VM install** | multipass VM |
| Release | **All of the above** | See release checklist |

---

## Level 1: Unit Tests (~3 seconds)

```bash
make test
```

Run after every change. No excuses.

---

## Level 2: E2E Tests (~5 minutes)

```bash
# CRITICAL: Kill any running dev server first — E2E uses its own database
lsof -ti :3000 | xargs kill -9 2>/dev/null
make test-e2e
```

Playwright tests that run onboarding, create websites, check dashboards, ingest events. Run after features or big changes.

---

## Level 3: Visual QA with agent-browser

For verifying UI rendering, checking that data displays correctly, or testing flows that E2E doesn't cover.

### Setup (one-time)
```bash
npm i -g agent-browser
agent-browser install
```

### Start dev server
```bash
make dev    # MUST use make dev (Go + Vite together)
```

### Dev credentials
- Email: `admin@example.com`
- Password: `password`
- Created by `make db-seed`

### Login
```bash
agent-browser open "http://localhost:3000/login"
agent-browser snapshot -i
agent-browser fill @e1 "admin@example.com"
agent-browser fill @e3 "password"
agent-browser click @e4
```

### Navigate and verify
```bash
agent-browser snapshot -i           # list interactive elements with refs
agent-browser click @e11            # click element by ref
agent-browser scroll down 1000      # scroll to find sections
agent-browser screenshot            # capture page as PNG
agent-browser get url               # check current URL
```

### Generate real browser events
```bash
# The /_demo page includes the tracking script — fires real pageviews
agent-browser open "http://localhost:3000/_demo"

# Wait for event processing (~10s), then check dashboard
```

### Key pages to verify

| Page | How to reach | What to check |
|------|-------------|---------------|
| Admin home | `/admin` | Website list loads |
| Dashboard | Click arrow (→) on a website | Charts, stats, time range |
| Browsers tab | Scroll to Device Analytics, click "Browsers" | Browser names (Brave, Edge, etc.) |
| Settings | Click "Settings" in nav | Forms save, flash messages |
| Events | Click "Events" tab on dashboard | Event list, sessions view |

### Important
- **Always `make dev`** — `make watch-go` alone won't render Inertia pages
- **Click through the UI** — don't force navigation with `open` after login (breaks Inertia state)
- **`/_demo` for real events** — sends actual `Sec-CH-UA` headers from the browser
- Dev database: `storage/fusionaly-development.db`

---

## Level 4: VM Install Test

Only needed when changing: install script, matcha, Docker setup, or release infrastructure.

### Create fresh VM
```bash
multipass delete fusionaly-test --purge 2>/dev/null || true
multipass launch 24.04 --name fusionaly-test --cpus 2 --memory 2G --disk 10G
```

### Run install
```bash
multipass exec fusionaly-test -- bash -c '
sudo apt-get update -qq && sudo apt-get install -y -qq expect

cat > /tmp/run_install.exp << '\''EXPECTSCRIPT'\''
#!/usr/bin/expect -f
set timeout 300
spawn sudo bash -c "curl -fsSL https://fusionaly.com/install | bash"
expect "Enter your domain name"
send "test.local\r"
expect "Proceed with this configuration"
send "Y\r"
expect eof
EXPECTSCRIPT

expect /tmp/run_install.exp
'
```

### Verify
```bash
multipass exec fusionaly-test -- bash -c '
echo "=== Containers ===" && sudo docker ps
echo "=== Version ===" && fusionaly version
echo "=== Health ===" && curl -s http://172.18.0.2:8080/_health
'
```

### Browser test via tunnel
```bash
VM_IP=$(multipass info fusionaly-test | grep IPv4 | awk '{print $2}')
ssh -L 8080:172.18.0.2:8080 ubuntu@$VM_IP
# Open http://localhost:8080/setup
```

### Cleanup
```bash
multipass delete fusionaly-test --purge
```

---

## Release Checklist

Before tagging a release:

- [ ] `make test` passes
- [ ] `make test-e2e` passes (kill dev server first!)
- [ ] Visual QA: dashboard loads, browser stats correct, events ingesting
- [ ] VM install test (if install/infra changed)
- [ ] Pro: update OSS submodule, build, test

---

## Common Issues

| Issue | Cause | Fix |
|-------|-------|-----|
| E2E fails "Setup already complete" | Dev server running (wrong DB) | `lsof -ti :3000 \| xargs kill -9` |
| agent-browser login doesn't work | Vite not running | Use `make dev`, not `make watch-go` |
| Dashboard shows JSON error | Navigated directly after forced POST | Start fresh browser, click through UI |
| `/_demo` events not appearing | Processing job hasn't run yet | Wait ~10 seconds, check `ingested_events` table |
| VM can't reach app | Docker internal network | Use SSH tunnel to 172.18.0.2:8080 |

Related Skills

tech

6
from karloscodes/fusionaly-oss

Use when writing or reviewing Go code in fusionaly-oss — adding routes, handlers, domain contexts, background jobs, the manager CLI, wiring the app, or writing tests. Covers the cartridge framework, matcha for the manager, Phoenix Contexts, lifecycle/shutdown, and the test conventions.

fusionaly

6
from karloscodes/fusionaly-oss

Use when user asks about website analytics, traffic, visitors, page views, referrers, or mentions "fusionaly". Queries Fusionaly analytics via SQL API.

fusionaly-deploy

6
from karloscodes/fusionaly-oss

Use ONLY when explicitly invoked. Installs Fusionaly on a server you can reach over SSH with a key. Optionally provisions a new Hetzner server or sets up Cloudflare DNS.

design

6
from karloscodes/fusionaly-oss

Use when styling Fusionaly UI components, pages, or charts - applies the Fusionaly design system with black/white palette and brand accents

workspace-surface-audit

144923
from affaan-m/everything-claude-code

Audit the active repo, MCP servers, plugins, connectors, env surfaces, and harness setup, then recommend the highest-value ECC-native skills, hooks, agents, and operator workflows. Use when the user wants help setting up Claude Code or understanding what capabilities are actually available in their environment.

DevelopmentClaude

ui-demo

144923
from affaan-m/everything-claude-code

Record polished UI demo videos using Playwright. Use when the user asks to create a demo, walkthrough, screen recording, or tutorial video of a web application. Produces WebM videos with visible cursor, natural pacing, and professional feel.

Developer ToolsClaude

token-budget-advisor

144923
from affaan-m/everything-claude-code

Offers the user an informed choice about how much response depth to consume before answering. Use this skill when the user explicitly wants to control response length, depth, or token budget. TRIGGER when: "token budget", "token count", "token usage", "token limit", "response length", "answer depth", "short version", "brief answer", "detailed answer", "exhaustive answer", "respuesta corta vs larga", "cuántos tokens", "ahorrar tokens", "responde al 50%", "dame la versión corta", "quiero controlar cuánto usas", or clear variants where the user is explicitly asking to control answer size or depth. DO NOT TRIGGER when: user has already specified a level in the current session (maintain it), the request is clearly a one-word answer, or "token" refers to auth/session/payment tokens rather than response size.

Productivity & Content CreationClaude

skill-comply

144923
from affaan-m/everything-claude-code

Visualize whether skills, rules, and agent definitions are actually followed — auto-generates scenarios at 3 prompt strictness levels, runs agents, classifies behavioral sequences, and reports compliance rates with full tool call timelines

DevelopmentClaude

santa-method

144923
from affaan-m/everything-claude-code

Multi-agent adversarial verification with convergence loop. Two independent review agents must both pass before output ships.

Quality AssuranceClaude

safety-guard

144923
from affaan-m/everything-claude-code

Use this skill to prevent destructive operations when working on production systems or running agents autonomously.

DevelopmentClaude

repo-scan

144923
from affaan-m/everything-claude-code

Cross-stack source code asset audit — classifies every file, detects embedded third-party libraries, and delivers actionable four-level verdicts per module with interactive HTML reports.

DevelopmentClaude

project-flow-ops

144923
from affaan-m/everything-claude-code

Operate execution flow across GitHub and Linear by triaging issues and pull requests, linking active work, and keeping GitHub public-facing while Linear remains the internal execution layer. Use when the user wants backlog control, PR triage, or GitHub-to-Linear coordination.

DevelopmentClaude