Test Loop Skill
SkillAI & modelsPlan, generate, and heal an executable E2E test suite from approved acceptance criteria (web and mobile).
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Test Loop Skill skill
What this skill tells your AI
The instructions your AI receives, as published by hoangnguyen0403/agent-skills-standard in .codex/skills/test-loop/SKILL.md and read by ahel’s review.
[!IMPORTANT] Plan, generate, and heal an executable E2E test suite from approved acceptance criteria (web and mobile).
Optional args: slug=, ticket=<id/url>, mode=interactive|autonomous|channel, channel=, auto_continue=true|false, profile=business|hybrid|technical.
Instructions
When the user asks to perform this workflow, execute the following steps:
Test Loop Workflow
Goal: Turn approved ACs into an executable, traced E2E suite, and classify any failure as a repair or a real bug instead of leaving it to manual triage.
Steps
- Load scope:
slug,operator_profile(carried, not re-inferred),AC-*, SRS lanes, build/app target, matched testing skills for the target stack.- Run the driver preflight for each lane in scope (
quality-engineering-playwright-cli/quality-engineering-appium-mcpscripts/preflight.sh); record lanes with no usable driver indriver_blocked[].
- Plan:
- Run
specialist-test-plannerto producetest_plan_pathandselector_gaps(the specialist'sPLAN:becomes this workflow'stest_plan_path;SELECTOR_GAPS:becomesselector_gaps). - BLOCKED (no stable
AC-*trace) if no stableAC-*trace exists; route toplan-feature/design-solution. - BLOCKED (HALT: ) when the planner returns a
HALT:trigger; ask before generating, never invent expected results.
- Run
- Prepare selectors:
- Run
specialist-testid-inserteronselector_gaps; in interactive mode stop for approval on itsAPPROVAL: requiredfile list; in autonomous mode passapproved_production_editsonly when the operator granted it, else carry gaps forward asselector_gaps_remaining[]; every gap not inINSERTED:(unresolvedSKIPPED,BLOCKED, or declined approval) also lands inselector_gaps_remaining[]. - For
lane: web, build or extend one page object per screen perquality-engineering-playwright-pom-generation; record paths inpage_objects[]; gaps a page object emits re-run the first bullet before step 4.
- Run
- Generate:
- One scenario per
specialist-integration-test-generatorcall, seed-first, using the lane's driver (web:playwright-cli, fallback Playwright MCP; mobile: Appium MCP) per the driver skills' ladder; aTest: BLOCKEDnaming a missing page object routes back to step 3; aTest: BLOCKED (driver)lands indriver_blocked[]. - Skip scenarios whose only elements are in
selector_gaps_remaining[]; list them under Selector Gaps Remaining, never generate against an unstable locator.
- One scenario per
- Run and heal:
- Run the generated suite once; per failure, run
specialist-test-healerwith the run artifact; append its block toheal_verdicts[]as{test, class, verdict, route, evidence}. HEALEDonly withRERUNS: 3/3 greenandASSERTION_DELTA: none;REAL_BUG_DO_NOT_HEALappends toreal_bugs[]and routes todev-fix;QUARANTINE_CANDIDATEopens a ticket perquality-engineering-flaky-triageand appends{test, ticket, expiry, bucket}toflake_quarantine[];BLOCKEDwithROUTE: testid-inserter(no stable locator target) returns to step 3;BLOCKED(no evidence artifact) reruns the test once with tracing on and re-runs the healer; if still no artifact, it stays inheal_verdicts[]unresolved and is listed undermissing_evidence.- Screenshot failures follow
quality-engineering-visual-baseline: a baseline changes only through a reviewed diff with a named approver, never by--update-snapshotsinside this loop.
- Run the generated suite once; per failure, run
- Handoff:
- Compute Automation Health per
quality-engineering-automation-healthand carryrelease_confidence. - Route to
verify-workwith the generated suite and any unresolvedreal_bugs[].
- Compute Automation Health per
Runtime Contract
- Use after
implement-featurereaches GREEN, or whenever ACs have E2E/mobile lanes without executable coverage. - Required inputs: slug, stable
AC-*trace, a runnable build/app target. - Return BLOCKED (no build target or AC trace) only when the build target cannot be established or
AC-*is missing.
Handoff Payload
slug,operator_profile,test_plan_path,assumed_results[],halt_triggers[],page_objects[],generated_tests[],driver_blocked[],heal_verdicts[],flake_quarantine[],selector_gaps_remaining[],real_bugs[],release_confidence, outcome report, next workflow.
Blocking Questions
- Ask max 3 at a time with a recommended default and 2-3 options.
Output Template
# Test Loop Report: [Name]
## Scope
## Plan
## Generated Tests
## Page Objects
## Selector Gaps Remaining
## Heal Verdicts
## Flake Quarantine
## Real Bugs Found
## Automation Health
feedback_loop_minutes: ; suite_reliability_pct: ; release_cadence: ; prod_escape_rate: ; release_confidence: high | medium | low
## Outcome Report
feature_status: implemented | partially_implemented | blocked
requirement_trace: BRD-OBJ-* -> REQ-* -> AC-* -> SRS-* -> evidence
completed_evidence: []; missing_evidence: []; decision_needed: []; recommended_next_workflow: verify-work | dev-fix
## Next Workflow
verify-work | dev-fix
## Cost Report
Call `get_session_cost(workflow="test-loop")` before final handoff.
Signals
- GitHub stars
- 565
- Forks
- 164
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
test-loop- Source
- github.com/hoangnguyen0403/agent-skills-standard