<< All versions
Skill v1.0.0
currentLLM-judged scan95/100paulkinlan/docker-agent-test/test-and-validate
──Details
PublishedOctober 23, 2026 at 02:34 PM
Content Hashsha256:f5b8d664e9f56e19...
Git SHAb4fc1403fd2a
──Files
Files (1 file, 3.9 KB)
SKILL.md3.9 KBactive
SKILL.md · 149 lines · 3.9 KB
version: "1.0.0" name: test-and-validate description: Run tests, validate output, and verify correctness before marking work complete
Test and Validate
When to Use
Use this skill before marking any coding task as complete. Every deliverable must be validated.
Procedure
1. Identify the Test Framework
bash
cd ~/workspacePROJECT_DIR=$(pwd)# Node.js — check package.json for test scriptif [ -f package.json ]; thenecho "=== package.json test script ==="jq -r '.scripts.test // "none"' package.jsonecho "=== test framework ==="jq -r '.devDependencies // .dependencies | keys[]' package.json 2>/dev/null \| grep -E 'jest|mocha|vitest|tap|ava' || echo "Using node:test (built-in)"fi# Python — check for pytest/unittestif [ -f pyproject.toml ] || [ -f setup.py ] || [ -f requirements.txt ]; thenecho "=== Python test framework ==="pip list 2>/dev/null | grep -iE 'pytest|unittest2|nose' || echo "Using unittest (built-in)"fi# Look for test directoriesfind . -type d -name 'test*' -maxdepth 3 2>/dev/nullfind . -type f -name '*test*' -o -name '*spec*' | head -20
2. Run the Test Suite
Node.js:
bash
npm test 2>&1 | tee /tmp/test-output.txtTEST_EXIT=$?echo "Exit code: $TEST_EXIT"
Python:
bash
python3 -m pytest tests/ -v 2>&1 | tee /tmp/test-output.txtTEST_EXIT=$?echo "Exit code: $TEST_EXIT"
Shell scripts:
bash
# Verify script has valid syntaxbash -n script.shecho "Syntax check exit code: $?"# Verify --help worksbash script.sh --helpecho "Help exit code: $?"# Run with sample inputecho '{"test": true}' | bash script.shecho "Sample run exit code: $?"
3. Fix Failures
If tests fail:
- Read the failure output carefully — identify the specific assertion or error
- Fix the code (not the test, unless the test is wrong)
- Re-run the failing test in isolation first:
bash
# Node.js — run single testnpx jest --testPathPattern="failing-test" 2>&1# ornode --test tests/failing-test.js 2>&1# Python — run single testpython3 -m pytest tests/test_module.py::test_function -v 2>&1
- Then re-run the full suite to confirm no regressions
4. Manual Validation for Scripts and CLIs
bash
SCRIPT="path/to/script.sh"# Check help/usagebash "$SCRIPT" --helpecho "--- Exit code: $? (expect 0) ---"# Test with valid inputbash "$SCRIPT" valid-argecho "--- Exit code: $? (expect 0) ---"# Test with invalid inputbash "$SCRIPT" --nonexistent 2>&1echo "--- Exit code: $? (expect non-zero) ---"# Test with empty inputecho "" | bash "$SCRIPT"echo "--- Exit code: $? (expect non-zero or graceful handling) ---"
5. Verify No Syntax Errors Across Changed Files
bash
# Find recently changed filesCHANGED_FILES=$(find . -name '*.js' -o -name '*.py' -o -name '*.sh' -o -name '*.ts' \| xargs ls -t 2>/dev/null | head -20)for f in $CHANGED_FILES; docase "$f" in*.js) node --check "$f" && echo "OK: $f" || echo "FAIL: $f" ;;*.py) python3 -m py_compile "$f" && echo "OK: $f" || echo "FAIL: $f" ;;*.sh) bash -n "$f" && echo "OK: $f" || echo "FAIL: $f" ;;*.ts) npx tsc --noEmit "$f" 2>&1 && echo "OK: $f" || echo "FAIL: $f" ;;esacdone
6. Record Test Results in Task Completion
When updating your task status, include test results:
bash
bash /home/shared/scripts/task.sh update "$TASK_ID" \--status completed \--result "All tests passing. 12/12 tests passed. Manual validation of CLI flags confirmed."
Validation Checklist
- [ ] Test suite runs and all tests pass (exit code 0)
- [ ] No syntax errors in any changed files
- [ ] Scripts handle --help, valid input, invalid input, and empty input
- [ ] Edge cases tested (empty strings, large inputs, special characters)
- [ ] Exit codes are correct (0 for success, non-zero for errors)
- [ ] No leftover debug output (console.log, print statements used for debugging)
- [ ] Test results recorded in task completion notes