Works with the AI tools you already use
Quality Engineer
by Matthew King
A risk-first QA agent that hunts bugs via personas, extracts BDD requirements, and drives TDD fixes.
$5
/moSubscription · cancel anytime
Secure checkout via Stripe
- Always the latest version
- Delivered live to your agent via MCP
- Cancel anytime, access ends at period end
See it in action
You say
hunt a bug using one of the available personas
Your agent does
I have enough to report a validated, high-confidence finding. I hunted the comment-submission flow in PostDetailActivity as The Repeater — the flaky-network user whose behaviour is "it failed, so I hit it again."
QUALITY ENGINEER - BUG HUNT App: BlogApp (Android / Firebase Realtime DB) Mode: Bug hunt Personas: The Repeater (flaky-network retrier) Date: 2026-06-18 Result: 1 validated bug (2 facets, same root behaviour)
[1] Failed comment submit leaves the user stuck, and genuine retries create duplicates Severity: High Persona: The Repeater — works on bad signal; when a write "fails" they retry. This flow both blocks the retry AND duplicates on retry. Area: Activities/PostDetailActivity.java — add-comment flow Technique: Error Guessing, Idempotency Thinking, Reliability/Resilience
Summary: On a failed comment write the "Add Comment" button is never re-shown, trapping the user; and because each tap calls a fresh push(), any real network retry writes a duplicate comment.
Why: Two coupled defects in the same handler:
(a) Recoverability — the button is hidden on click and only
restored in the SUCCESS callback. The failure callback shows
a toast but never restores visibility, so after one failed
send the user cannot resend the comment they just typed
without leaving and re-entering the screen.
(b) Server-side idempotency — push() is called fresh inside
every onClick, minting a new unique key per attempt. There is
no idempotency key or natural unique constraint, so a request
that times out on the client but actually committed will be
written a second time on retry → duplicate comments.
Evidence: PostDetailActivity.java:87-116 btnAddComment.setOnClickListener(... { btnAddComment.setVisibility(View.INVISIBLE); // hidden on click DatabaseReference commentReference = firebaseDatabase.getReference(COMMENT_KEY) .child(PostKey).push(); // new key EVERY tap ... commentReference.setValue(comment) .addOnSuccessListener(... { btnAddComment.setVisibility(View.VISIBLE); // restored only on success }) .addOnFailureListener(... { showMessage("fail to add comment : "+e.getMessage()); // <-- button NOT restored; no rollback; no dedupe });
Steps to reproduce: Facet (a): 1. Open a post, type a comment, go offline / drop signal. 2. Tap "Add Comment". Write fails; toast appears. 3. Button has vanished — no way to resend without re-opening the post. Facet (b): 1. On a slow/flaky connection, tap "Add Comment". 2. Client reports failure/timeout but the write reaches the server. 3. User (or app on next session) retries → two identical comments.
Expected: A failed submit restores the button so the user can retry; a retry of a write that already committed produces exactly one comment. Actual: Failed submit permanently hides the button; genuine retries each create a new node → duplicate comments.
Requirement: Gap — not specified. Suggested test:
- Unit/UI (Robolectric/Espresso): mock setValue() to invoke the failure listener; assert btnAddComment.getVisibility() == VISIBLE afterwards.
- Integration: simulate commit-then-timeout; assert only one comment node exists for the post after a retry. Suggested fix:
- In addOnFailureListener, restore btnAddComment to VISIBLE (mirror the success path) — ideally via a finally-style shared callback.
- Compute the push key ONCE before the attempt (or use a content/client idempotency key) and reuse it across retries so a replay overwrites rather than appends.
What you get
About this skill
Professional Quality Engineering for Your Repository
The Quality Engineer skill transforms your AI agent into a proactive QA partner that goes beyond simple bug catching. It implements a structured loop to understand, assess, cover, find, fix, and verify your codebase. Unlike generic AI prompting, this skill uses persona-based testing and a risk-first methodology to identify where failures would cause the most business impact.
What it does
- Risk Analysis: Generates a repo-specific risk map, identifying high-priority areas that lack sufficient coverage.
- Persona-Based Bug Hunting: Employs specialized user personas to "stress test" your application through different behavioral lenses.
- Requirements Extraction: Reverse-engineers your code and existing tests into a BDD-style requirements pack and traceability matrix.
- Test Generation: Automatically scaffolds unit, integration, and E2E (Playwright) tests in your project's native style.
- TDD Loop: Drives a strict Red-Green-Refactor cycle to fix bugs or implement features with 100% test confidence.
Why use this skill?
Standard AI agents often write superficial tests or hallucinate requirements. This skill enforces a disciplined engineering workflow, ensuring that every bug report is backed by code evidence and every new test addresses a documented risk.
How to install
Drop the file into your AI Agent. Works with Claude, Cursor, ChatGPT, and 20+ more.
Reviews
No reviews yet
Be one of the first to try it. Every listed skill passes our trust checks below.
Security scanned
Passed our 8-point scan before listing
Fresh listing
Recently published to Agensi
Free forever
No account required to browse
Trust & safety
Security scanned
Verified clean 1 month ago
- 30-day refund guarantee
- Secure checkout via Stripe
Creator
Building quality-driven AI solutions that streamline complex processes, improve decision-making, and deliver outcomes you can trust.
Frequently Asked Questions
Popular in Testing & QA
api-contract-tester
Turn OpenAPI specs into exhaustive, framework-ready test suites covering happy paths, edge cases, and security gaps.

✅ AI Code Verification Gate
One-line summary description Stop your agent from claiming "done" before it's proven. A verification gate that classifies each change by risk (payment, auth, database, user-facing), picks the tests that actually cover it, demands evidence, maps regression risk, and outputs an honest pass/fail report. Turns "looks good to me" into "here's what I ran, and here's what's still unverified."
Local-first memory for AI coding agents (PMB)
Developers waste time re-explaining their project to AI agents every session.

rf-seleniumlib-to-browser-lib
SeleniumLibrary is the flakiest part of your Robot Framework suite. This skill swaps it for Browser library, structure intact