architecture
Guides the design of safely disposable code through contracts (traits/interfaces) and dependency inversion. Use when designing new modules, refactoring…
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
$ npx -y skills add ktnyt/cclsp --skill hands-on-test --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/hands-on-testContext preview
The summary Claude sees to decide when to auto-load this skill.
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
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
Perform manual browser-based testing of a web application and produce a structured test report with screenshots and console output.
Generate a timestamp-based output directory for this test run:
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.
# 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:3000Detect the project's dev server command from project files (`compose.yml`, `package.json`, `Makefile`, etc.) and start it in the background.
# Example: Docker Compose project docker compose up -d # Example: Node.js project # npm run dev &
Wait for the server to become ready:
# 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
doneplaywright-cli open http://localhost:3000
Or navigate to a specific page to test:
playwright-cli open http://localhost:3000/path/to/test
playwright-cli snapshot
Use the snapshot output to identify element refs (e.g., `e1`, `e5`, `e12`) for subsequent interactions.
Interact with the page based on the test scenario. Common actions:
# 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:
playwright-cli snapshot
Save screenshots to `$TEST_OUTPUT_DIR/` with descriptive filenames:
# 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:
playwright-cli console
Check for errors, warnings, or relevant log output.
playwright-cli network
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
playwright-cli close
Write a structured test report to `$TEST_OUTPUT_DIR/REPORT.md`:
# 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 |  | Page after initial load | | 2 |  | Form with data entered | | 3 |  | 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.>
# 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
# Pcclsp is a Model Context Protocol (MCP) server that seamlessly integrates LLM-based coding agents with Language Server Protocol (LSP) servers.
Repo: ktnyt/cclsp
Guides the design of safely disposable code through contracts (traits/interfaces) and dependency inversion. Use when designing new modules, refactoring…
Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web…
Request a security expert assessment for code changes that touch child process spawning, file system access, configuration loading, or environment variable…