Agent skill

Hands On Test

by ktnyt in ktnyt/cclsp

Performs manual hands-on testing of a web application using playwright-cli.

MITAuto-check passedTesting & QA

Install Hands On Test

skills CLI
$ npx skills add ktnyt/cclsp --skill hands-on-test -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ktnyt/cclsp hands-on-test --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ktnyt/cclsp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/hands-on-test .claude/skills/hands-on-test && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
hands-on-test
GitHub stars
675
Token cost
~1.7k tokens
SKILL.md length
351 words
Files
1
Skills in repo
3
Repo updated
First seen
Licence
MIT

At a glance

Performs manual hands-on testing of a web application using playwright-cli.

  • Works in 5 steps: Environment Setup → Browser Session → Outcome Verification → …
  • The user wants to visually verify a web feature
  • SKILL.md covers Workflow, Example: Full Test Session and Tips
  • Calls curl and docker

What it does

Hands On Test is an agent skill from ktnyt/cclsp. Performs manual hands-on testing of a web application using playwright-cli. Spawns the dev server if needed, navigates to pages, performs browser actions, captures screenshots, checks outcomes, and produces a structured test report. Use when the user wants to visually verify a web feature, perform exploratory testing, or validate UI behavior.

Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering QA and bug reports and Browser testing. It works with Playwright and Model Context Protocol. The repository describes itself as: Claude Code LSP: enhance your Claude Code experience with non-IDE dependent LSP integration. The licence is MIT.

When your agent uses it

  • The user wants to visually verify a web feature
  • Perform exploratory testing
  • Validate UI behavior

Example prompts

  • “Use the hands-on-test skill to perform manual hands-on testing of a web application using playwright-cli”
  • “/hands-on-test”

Requirements

  • Node.js
  • Docker
  • Pre-approved tools (allowed-tools): Bash(playwright-cli:*), Bash(docker compose:*), Bash(lsof:*), Bash(curl:*), Bash(mkdir:*), Bash(date:*), Read, Write

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Environment Setup
  2. Browser Session
  3. Outcome Verification
  4. Cleanup
  5. Report Generation

What it can do on your machine

Read from SKILL.md and the folder at commit 93414a1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash(playwright-cli:*)
    • Bash(docker compose:*)
    • Bash(lsof:*)
    • Bash(curl:*)
    • Bash(mkdir:*)
    • Bash(date:*)
    • Read
    • Write

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl
    • docker

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use curl and docker, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Hands On Test loads about 1.7k tokens when it runs. Until then it costs about 90 tokens; SKILL.md has 351 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~90
When it runs · the whole SKILL.md, loaded when a task matches
~1.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from ktnyt/cclsp at commit 93414a1, republished under its MIT licence (© ktnyt). 351 words, ~1,690 tokens.

Download SKILL.mdSave it as .claude/skills/hands-on-test/SKILL.md (or your agent's skills folder).
name
hands-on-test
description
Performs manual hands-on testing of a web application using playwright-cli. Spawns the dev server if needed, navigates to pages, performs browser actions, captures screenshots, checks outcomes, and produces a structured test report. Use when the user wants to visually verify a web feature, perform exploratory testing, or validate UI behavior.
allowed-tools
Bash(playwright-cli:*), Bash(docker compose:*), Bash(lsof:*), Bash(curl:*), Bash(mkdir:*), Bash(date:*), Read, Write

Hands-On Testing with playwright-cli

Perform manual browser-based testing of a web application and produce a structured test report with screenshots and console output.

Workflow

Phase 1: Environment Setup
1.1 Create the test output directory

Generate a timestamp-based output directory for this test run:

bash
TEST_OUTPUT_DIR="$CLAUDE_PROJECT_DIR/test-output/$(date +%Y%m%d%H%M)"
mkdir -p "$TEST_OUTPUT_DIR"

All screenshots and the report for this run will be saved under this directory.

1.2 Check if the dev server is running
bash
# Check if something is listening on the expected port
lsof -i :3000 -sTCP:LISTEN
# or
curl -s -o /dev/null -w "%{http_code}" http://localhost:3000
1.3 Start the dev server if not running

Detect the project's dev server command from project files (compose.yml, package.json, Makefile, etc.) and start it in the background.

bash
# Example: Docker Compose project
docker compose up -d

# Example: Node.js project
# npm run dev &

Wait for the server to become ready:

bash
# Poll until the server responds
for i in $(seq 1 30); do
  curl -s -o /dev/null -w "%{http_code}" http://localhost:3000 | grep -q "200" && break
  sleep 1
done
Phase 2: Browser Session
2.1 Open the browser and navigate
bash
playwright-cli open http://localhost:3000

Or navigate to a specific page to test:

bash
playwright-cli open http://localhost:3000/path/to/test
2.2 Take a snapshot to understand the page structure
bash
playwright-cli snapshot

Use the snapshot output to identify element refs (e.g., e1, e5, e12) for subsequent interactions.

2.3 Perform test actions

Interact with the page based on the test scenario. Common actions:

bash
# Click elements
playwright-cli click e3

# Fill form fields
playwright-cli fill e5 "test input"

# Type text (simulates keystrokes)
playwright-cli type "search query"

# Press keys
playwright-cli press Enter

# Select dropdown options
playwright-cli select e9 "option-value"

# Check/uncheck checkboxes
playwright-cli check e12
playwright-cli uncheck e12

# Hover
playwright-cli hover e4

# Navigate
playwright-cli goto http://localhost:3000/other-page

After each significant action, take a snapshot to verify the page state:

bash
playwright-cli snapshot
2.4 Capture screenshots

Save screenshots to $TEST_OUTPUT_DIR/ with descriptive filenames:

bash
# Full page screenshot
playwright-cli screenshot --filename=$TEST_OUTPUT_DIR/<test-name>-<step>.png

# Screenshot of a specific element
playwright-cli screenshot e5 --filename=$TEST_OUTPUT_DIR/<test-name>-<element>.png

Naming convention: <test-name>-<step-number>-<description>.png

Examples:

  • login-01-initial.png
  • login-02-filled-form.png
  • login-03-after-submit.png
  • dashboard-01-loaded.png
2.5 Collect console messages
bash
playwright-cli console

Check for errors, warnings, or relevant log output.

2.6 Collect network activity (if relevant)
bash
playwright-cli network
Show full SKILL.md (147 more words)Show less
Phase 3: Outcome Verification

After performing actions and capturing state:

  1. Read the screenshot using the Read tool to visually inspect the result
  2. Review the snapshot to verify DOM state matches expectations
  3. Check console output for errors or unexpected warnings
  4. Compare the actual outcome against the intended behavior described in the test scenario
Phase 4: Cleanup
bash
playwright-cli close
Phase 5: Report Generation

Write a structured test report to $TEST_OUTPUT_DIR/REPORT.md:

markdown
# Hands-On Test Report

**Date**: YYYY-MM-DD HH:MM
**Tester**: <agent-name>
**Target**: <URL tested>

## Test Scenario

<Brief description of what was being tested>

## Steps Performed

| # | Action | Target | Details |
|---|--------|--------|---------|
| 1 | Navigate | http://localhost:3000/page | Initial page load |
| 2 | Fill | e5 (Email field) | Entered "user@example.com" |
| 3 | Click | e8 (Submit button) | Submitted form |

## Screenshots

| Step | Screenshot | Description |
|------|-----------|-------------|
| 1 | ![Step 1](test-name-01-initial.png) | Page after initial load |
| 2 | ![Step 2](test-name-02-filled.png) | Form with data entered |
| 3 | ![Step 3](test-name-03-submitted.png) | Result after submission |

## Console Output

<relevant console messages, warnings, or errors>


## Result

**Status**: PASS / FAIL

<Explanation of whether the outcome matched expectations.
If FAIL, describe the discrepancy between expected and actual behavior.>

Example: Full Test Session

bash
# Phase 1: Setup
TEST_OUTPUT_DIR="$CLAUDE_PROJECT_DIR/test-output/$(date +%Y%m%d%H%M)"
mkdir -p "$TEST_OUTPUT_DIR"
curl -s -o /dev/null -w "%{http_code}" http://localhost:3000
# If not running:
docker compose up -d
# Wait for ready
for i in $(seq 1 30); do
  curl -s -o /dev/null -w "%{http_code}" http://localhost:3000 | grep -q "200" && break
  sleep 1
done

# Phase 2: Test
playwright-cli open http://localhost:3000/login
playwright-cli snapshot
playwright-cli screenshot --filename=$TEST_OUTPUT_DIR/login-01-initial.png

playwright-cli fill e5 "user@example.com"
playwright-cli fill e8 "password123"
playwright-cli screenshot --filename=$TEST_OUTPUT_DIR/login-02-filled.png

playwright-cli click e10
playwright-cli snapshot
playwright-cli screenshot --filename=$TEST_OUTPUT_DIR/login-03-result.png

playwright-cli console

# Phase 3: Verify
# Read screenshots to visually verify
# Check snapshot for expected DOM state
# Review console for errors

# Phase 4: Cleanup
playwright-cli close

# Phase 5: Write report to $TEST_OUTPUT_DIR/REPORT.md

Tips

  • Always take a snapshot before interacting to identify correct element refs
  • Capture screenshots at meaningful checkpoints, not after every micro-action
  • Include both "before" and "after" screenshots for state-changing actions
  • Check console output after actions that trigger API calls or state changes
  • Use playwright-cli resize 1280 720 for consistent screenshot dimensions
  • If a page takes time to load, use playwright-cli run-code "async page => { await page.waitForLoadState('networkidle'); }" before capturing

© ktnyt, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/hands-on-test of ktnyt/cclsp.

Open the folder on GitHubat commit 93414a1

Compare with similar skills

Hands On Test next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Hands On Test compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Hands On Test this skillktnyt/cclsp675—~1.7kAutomated safety check: PassMIT
Windows QA EngineerCodeAlive-AI/ai-driven-development158—~1.4kAutomated safety check: PassMIT
Agentic Browser Testingpetrkindlmann/qa-skills168—~4.5kAutomated safety check: PassMIT
Testing Course Samplesmicrosoft/ai-agents-for-beginners77k—~1.1kAutomated safety check: NotesMIT
Testing Course Samplesmicrosoft/ai-agents-for-beginners77k—~1.3kAutomated safety check: NotesMIT
Testing Course Samplesmicrosoft/ai-agents-for-beginners77k—~1.3kAutomated safety check: NotesMIT

Similar skills

  • Windows QA Engineer

    CodeAlive-AI/ai-driven-development

    A skill your agent uses when testing Windows 11 desktop apps (WinForms/WPF/UWP) via UFO UIA/Win32 automation MCP.

    158 GitHub stars~1.4k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Agentic Browser Testing

    petrkindlmann/qa-skills

    Goal-driven E2E testing where a browser agent (Playwright MCP / computer-use) reads a natural-language goal and explores the app via the accessibility tree to assert outcomes — no pre-written script.

    168 GitHub stars~4.5k tokensUpdated 4 mo ago
    Testing & QAAuto-check passed
  • Testing Course Samples

    microsoft/ai-agents-for-beginners

    Official

    A skill your agent uses when asked to validate, test, smoke-test, or run the course's notebook and code samples against a live Microsoft Foundry / Azure OpenAI configuration.

    77k GitHub stars~1.1k tokensUpdated 20 days ago
    Testing & QAAuto-check: notes
  • Testing Course Samples

    microsoft/ai-agents-for-beginners

    Official

    Koristite kada se zatraži validacija, testiranje, smoke-test ili pokretanje bilježnica i primjera koda tečaja protiv aktivne Microsoft Foundry / Azure OpenAI konfiguracije.

    77k GitHub stars~1.3k tokensUpdated 20 days ago
    Testing & QAAuto-check: notes
  • Testing Course Samples

    microsoft/ai-agents-for-beginners

    Official

    Use wen dem ask you to validate, test, smoke-test, or run di course notebook and code samples against live Microsoft Foundry / Azure OpenAI configuration.

    77k GitHub stars~1.3k tokensUpdated 20 days ago
    Testing & QAAuto-check: notes
  • Testing Course Samples

    microsoft/ai-agents-for-beginners

    Official

    Gamitin kapag hiniling na i-validate, subukan, smoke-test, o patakbuhin ang notebook ng kurso at mga halimbawa ng code laban sa isang live na Microsoft Foundry / Azure OpenAI na configuration.

    77k GitHub stars~1.5k tokensUpdated 20 days ago
    Testing & QAAuto-check: notes

More from ktnyt/cclsp

  • Architecture

    ktnyt/cclsp

    Guides the design of safely disposable code through contracts (traits/interfaces) and dependency inversion.

    675 GitHub stars~1.6k tokensUpdated 7 mo ago
    Auto-check passed
  • Security Review

    ktnyt/cclsp

    Request a security expert assessment for code changes that touch child process spawning, file system access, configuration loading, or environment variable handling.

    675 GitHub stars~565 tokensUpdated 7 mo ago
    Auto-check passed

Categories

Questions about Hands On Test

What does Hands On Test do?

Performs manual hands-on testing of a web application using playwright-cli. Hands On Test is an agent skill from ktnyt/cclsp. Performs manual hands-on testing of a web application using playwright-cli.

When should I use Hands On Test?

Hands On Test fits situations like: the user wants to visually verify a web feature; perform exploratory testing; validate UI behavior.

How do I install Hands On Test in Claude Code?

Run `npx skills add ktnyt/cclsp --skill hands-on-test -a claude-code`. Or copy the skill folder (.claude/skills/hands-on-test in ktnyt/cclsp) into .claude/skills/hands-on-test in your project. Claude Code loads it when a task matches its description.

How do I install Hands On Test in Codex?

Run `npx skills add ktnyt/cclsp --skill hands-on-test -a codex`. Or copy the skill folder (.claude/skills/hands-on-test in ktnyt/cclsp) into .agents/skills/hands-on-test in your project. Codex loads it when a task matches its description.

Can I use Hands On Test in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ktnyt/cclsp --skill hands-on-test -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/hands-on-test, .gemini/skills/hands-on-test, .github/skills/hands-on-test and .opencode/skills/hands-on-test in your project.

What does Hands On Test need to run?

Going by SKILL.md and its folder, Hands On Test needs the command-line tools its instructions call (curl and docker). Our summary lists: Node.js; Docker. Its frontmatter pre-approves these tools: Bash(playwright-cli:*), Bash(docker compose:*), Bash(lsof:*), Bash(curl:*), Bash(mkdir:*), Bash(date:*), Read, Write.

Does Hands On Test access the network?

SKILL.md contains no URLs. Its commands use curl and docker, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Hands On Test safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Hands On Test use?

Hands On Test is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Hands On Test use?

About 1.7k tokens (SKILL.md is roughly 6.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Hands On Test?

Skills that share tags, products or a category with Hands On Test: Windows QA Engineer (CodeAlive-AI/ai-driven-development, 158 stars), Agentic Browser Testing (petrkindlmann/qa-skills, 168 stars), Testing Course Samples (microsoft/ai-agents-for-beginners, 77k stars) and Testing Course Samples (microsoft/ai-agents-for-beginners, 77k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Hands On Test?

ktnyt (a GitHub user) maintains it in ktnyt/cclsp, which has 675 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on February 22, 2026.

Source: ktnyt/cclsp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.