Loading...
Loading...
Use this skill when the user doesn't yet know what to test. This is the "learn the site first" step — for unfamiliar websites, new projects, or any situation where Feature/Persona artifacts don't exist yet. Use when the user: gives a URL with no specific test in mind, asks what features or flows a site has, wants to explore or walk through a site, is new to a project, or says "explore before we test". Also use for bare "test [URL]" commands with no further context. Do not use when Feature artifacts already exist or the user references specific known tests or bugs.
npx skill4agent add help-me-test/skills helpmetest-discoverhow_to({ type: "authentication_state_management" })
how_to({ type: "tag_schema" })how_to({ type: "context_discovery" })helpmetest_run_interactive_commandGo To <url> timeout=10000how_to({ type: "authentication_state_management" })JourneyStep{
"name": "<Primary Goal> Flow",
"persona_id": "persona-<who>",
"steps": [
{ "action": "<What user does>", "feature_id": "feature-<x>", "status": "found|missing|blocked" }
],
"completion": "complete|partial|blocked",
"critical": true
}{
"type": "Persona",
"id": "persona-<name>",
"name": "Persona: <Name>",
"content": {
"persona_type": "primary|secondary|admin",
"description": "Who they are",
"goals": ["What they want"],
"pain_points": ["Frustrations"],
"username": "<generated-by-Create-Fake-Email>",
"password": "SecureTest123!",
"auth_state": "AdminState",
"permissions": ["what they can do"],
"environment": "staging"
}
}helpmetest_upsert_artifact{
"type": "ProjectOverview",
"id": "project-<domain>",
"name": "ProjectOverview: <Site Name>",
"content": {
"url": "<url>",
"summary": "What this site does and who it's for",
"industry": "e-commerce|saas|healthcare|etc",
"persona_ids": ["persona-admin", "persona-user"],
"features": [
{ "feature_id": "feature-search", "name": "Search", "status": "working" },
{ "feature_id": "feature-cart", "name": "Cart", "status": "partial" },
{ "name": "Checkout", "status": "missing", "priority": "critical", "reason": "Cannot complete purchases" },
{ "name": "Payment", "status": "missing", "priority": "critical", "reason": "No payment integration found" }
],
"user_journeys": [
{
"name": "Purchase Flow",
"persona": "customer",
"steps": [
{ "action": "Search for product", "feature_id": "feature-search", "status": "found" },
{ "action": "View product details", "feature_id": "feature-product-details", "status": "found" },
{ "action": "Add to cart", "feature_id": "feature-cart", "status": "found" },
{ "action": "Checkout", "status": "missing" },
{ "action": "Payment", "status": "missing" },
{ "action": "Confirmation", "status": "missing" }
],
"completion": "partial"
}
],
"tech_stack": [],
"auth_methods": [],
"notes": []
}
}{
"type": "Feature",
"id": "feature-<name>",
"name": "Feature: <Name>",
"content": {
"goal": "What business outcome",
"non_goals": ["What this is NOT"],
"status": "untested",
"persona_ids": ["persona-user"],
"functional": [],
"non_functional": [],
"edge_cases": [],
"bugs": [],
"notes": []
}
}helpmetest_run_interactive_commandAs <auth_state>
Go To <feature-url>
# Try action - observe outcome
<action steps>
# Document what worked and what the result was{
"name": "User can <accomplish goal>",
"given": "User on <page> with <precondition>",
"when": "User <performs action>",
"then": "<Expected successful outcome>",
"url": "<feature-url>",
"auth": ["<auth_state>"],
"priority": "critical|high|medium|low",
"test_ids": []
}As <auth_state>
Go To <feature-url>
# Try submitting with empty required fields
Fill Text <selector> ${EMPTY}
Click <submit-button>
# Document: What error? Input preserved? State corrupted?# Try invalid email format
Fill Text input[type=email] notanemail
# Try non-numeric in number field
Fill Text input[type=number] abc
# Document error handling# Try too long
Fill Text <selector> ${'x' * 1000}
# Try too short (if min length exists)
Fill Text <selector> a
# Try negative numbers (if applicable)
Fill Text <selector> -1
# Document validation errors# Try duplicate username/email/identifier
Fill Text <selector> <existing-value>
# Document conflict handling# Try accessing without proper role
As <lower-privilege-state>
Go To <restricted-page>
# Document access denial{
"name": "<Error scenario name>",
"given": "User on <page> with <state>",
"when": "User <performs invalid action>",
"then": "Error shown: <expected message>, input preserved, state unchanged",
"url": "<feature-url>",
"auth": ["<auth_state>"],
"priority": "high|medium|low",
"test_ids": []
}{
"name": "Search responds within 2 seconds",
"given": "User on search page",
"when": "User searches for common term",
"then": "Results displayed within 2000ms",
"url": "<search-url>",
"auth": ["<auth_state>"],
"priority": "medium",
"test_ids": []
}{
"functional": [<all happy path scenarios>],
"edge_cases": [<all error handling scenarios>],
"non_functional": [<performance/security scenarios if applicable>]
}{ "feature_id": "feature-checkout", "name": "Checkout", "status": "working" }
{ "name": "Payment", "status": "missing", "priority": "critical", "reason": "No Stripe integration" }