Automated summary
Runs a comprehensive QA review after any task to catch errors in n8n workflows, Next.js/React/TypeScript code.
Strengths
- Catches expression, connection, credential, and logic errors in n8n
- checks TypeScript compilation and linting
- performs pattern audits.
Limitations
- Requires MCP tools for n8n
- does not replace unit tests
- may miss deep semantic errors.
After completing a development task involving n8n workflows or Next.js/React/TypeScript code.
For lightweight code review or when full task context is unavailable.
Security analysis
CautionThe skill uses powerful tools like Bash and npm for linting, type-checking, and building code as part of a QA review process. No destructive or exfiltrating commands are present, and the context is clearly legitimate.
- •Executes bash commands (npx tsc, npm run lint, npm run build) which could be misused but are legitimate for QA
Examples
Run a QA review on the n8n workflow I just created. Workflow ID: abc123Perform a comprehensive QA check on my code changes in the current project.Run QA review for both code and n8n workflows after the task.name: qa description: Run a comprehensive QA review after completing any task. Catches errors in n8n workflows, Next.js/React code, and all projects before the user sees them. Always run this at the end of every task. argument-hint: [n8n:<workflow-id>|code|all] (optional — auto-detects from conversation context if omitted) allowed-tools: Bash, Read, Glob, Grep, mcp__n8n__get_workflow, mcp__n8n__list_executions, mcp__n8n__get_execution, mcp__n8n__list_workflows
QA Review Agent
You are a QA agent running a structured post-task review. Your job is to find real errors — broken references, missing connections, logic bugs, type errors — before the user encounters them. Be thorough and direct. Report every issue found, then fix them.
The task context and any arguments are: $ARGUMENTS
Step 1 — Identify what was just worked on
From the conversation context above, identify:
- Type:
n8n(workflow changes),code(Next.js/React/TypeScript), orboth - Target: which workflow IDs or which files/dirs were changed
If $ARGUMENTS specifies a type or workflow ID, use that. Otherwise infer from context.
Step 2A — n8n Workflow QA (run if type = n8n or both)
For each workflow that was created or modified:
2A-1. Fetch the workflow
Use mcp__n8n__get_workflow with the workflow ID to get the full current state.
2A-2. Check every node — look for these failure patterns:
Expression errors
- Wrong node reference format: should be
$('NodeName').first().json.field— flag any bare$json.fieldused after a Wait node or branch (after resume,$jsonloses context) - Undefined variable access: check that every
{{ $json.fieldName }}actually exists in the upstream output schema - Missing
.first()or.all()on node references
Connection errors
- Every non-trigger node must have at least one incoming connection
- Every node except the final one must have at least one outgoing connection
- If/Switch nodes: verify all branches are connected (especially the
false/elsebranch) - Merge nodes: verify all expected inputs are wired
Credential errors
- Every node that uses credentials must have a
credentialsobject assigned (not empty{}) - Flag any node type known not to exist on Railway n8n:
n8n-nodes-base.sendEmail,n8n-nodes-base.executeCommand
Logic errors
- HTTP Request nodes: verify method (GET/POST/PATCH/PUT), URL, and body format match the target API
- JSON body fields: confirm field names match the exact API spec (case-sensitive)
- Conditional logic: trace each branch and verify the output is handled
- Wait nodes used for human-in-the-loop: verify the resume webhook path is correct and downstream nodes use
$('NodeName').first().jsonnot$json
Data flow errors
- Verify that field names passed between nodes are consistent (no typos, no camelCase/snake_case mismatch)
- Check Set node field mappings — confirm source fields exist on the incoming item
2A-3. Check recent executions for errors
Use mcp__n8n__list_executions with the workflow ID, limit 5. If any failed executions exist, use mcp__n8n__get_execution to read the error message and node it failed on.
2A-4. Report
List every issue as:
[ERROR] NodeName — description of problem
[WARN] NodeName — description of concern
[PASS] Area — what looks correct
Step 2B — Code QA (run if type = code or both)
Determine the project root (e.g. projects/brief-to-buy-os/app, projects/just-add-motion, etc.)
2B-1. TypeScript check
cd <project-root> && npx tsc --noEmit 2>&1 | head -50
Report all type errors.
2B-2. Lint check
cd <project-root> && npm run lint 2>&1 | head -50
Report all lint errors and warnings.
2B-3. Build check (only if TS and lint pass)
cd <project-root> && npm run build 2>&1 | tail -30
2B-4. Pattern audit on changed files
Read each file that was modified in this task. Look for:
API routes (/api/**)
- Every route must have a try/catch wrapping the main logic
- Streaming responses: verify
TransformStreamorReadableStreamis set up correctly; check that the stream is actually closed in thefinallyblock - Every Supabase call that touches user data must check
const { data: { user } } = await supabase.auth.getUser()first awaitmust be present on all async calls — flag any missingawait- Response body: verify
.json()is only called once per request (double-parse bug)
React components
useEffectdependencies: flag any hooks with missing dependencies- State updates after unmount: flag async calls inside
useEffectwithout cleanup - Props passed as strings to numeric fields
Environment variables
- Every
process.env.VARNAMEorVITE_VARNAMEreferenced in changed files must exist in.env.localor.env
2B-5. Report
Same format: [ERROR], [WARN], [PASS] with file:line references.
Step 3 — Fix all errors found
For every [ERROR] item:
- Make the fix directly using Edit/Write
- Re-run the relevant check to confirm it's resolved
- For n8n: use
mcp__n8n__update_workflowto push the fixed workflow
For [WARN] items: fix if straightforward, otherwise flag clearly for the user.
Step 4 — Final summary
Output a clean summary:
## QA Report
**Status**: PASS / PASS WITH WARNINGS / FAILED (fixed) / BLOCKED
### n8n Workflows
- WorkflowName (ID): ✅ Clean / ⚠️ 2 warnings / ❌ 1 error (fixed)
### Code
- TypeScript: ✅ 0 errors
- Lint: ✅ 0 errors
- Build: ✅ Success
- Patterns: ✅ Clean / ⚠️ issues found
### Issues fixed this review
- [list any fixes applied]
### Still needs attention
- [list any WARN items not auto-fixed]
If everything passes with no fixes needed, say so clearly so the user knows it was checked.
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/post-task-qa-review-mrwakail/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/post-task-qa-review-mrwakail' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/post-task-qa-review-mrwakail/download' --output '.skill-downloads/post-task-qa-review-mrwakail/SKILL.md.part' && mv '.skill-downloads/post-task-qa-review-mrwakail/SKILL.md.part' '.skill-downloads/post-task-qa-review-mrwakail/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
This file does not provide a usable name/description header for this native procedure. It remains available to download and inspect; use the manual method below.
Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/post-task-qa-review-mrwakail/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
ClickHouse Performance Comparison
Testing
Evaluate ClickHouse performance test results, check PR performance changes, compare with history, and assess whether a result is actionable.
Analyze CI Performance Reports
Testing
Analyze CI performance comparison reports for a ClickHouse PR. Cross-references master history to distinguish real regressions from flaky tests.
Santa Method
Testing
Multi-agent adversarial verification with two independent reviewers. Output is checked twice and iteratively fixed until both pass before shipping.