with one click
ln-636-manual-test-auditor
// Checks manual test scripts for harness adoption, golden files, fail-fast, config sourcing, idempotency. Use when auditing manual test quality.
// Checks manual test scripts for harness adoption, golden files, fail-fast, config sourcing, idempotency. Use when auditing manual test quality.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | ln-636-manual-test-auditor |
| description | Checks manual test scripts for harness adoption, golden files, fail-fast, config sourcing, idempotency. Use when auditing manual test quality. |
| allowed-tools | Read, Grep, Glob, Bash |
| license | MIT |
Paths: File paths (
references/,../ln-*) are relative to this skill directory.
Type: L3 Worker
Specialized worker auditing manual test scripts for quality and best-practice compliance.
tests/manual/ against quality dimensionsMANDATORY READ: Load references/audit_worker_core_contract.md.
Receives contextStore with: tech_stack, testFilesMetadata (filtered to type: "manual"), codebase_root, output_dir.
Manual test metadata includes: suite_dir, has_expected_dir, harness_sourced.
Detection policy: use two-layer detection (candidate scan, then context verification); load references/two_layer_detection.md only when the verification method is ambiguous.
tests/manual/config.sh -- shared configurationtests/manual/test_harness.sh -- shared test framework (if exists)tests/manual/test-all.sh -- master runnertests/manual/TEMPLATE-*.sh -- test templates (if exist)tests/manual/regenerate-golden.sh -- golden file regeneration (if exists)00-setup/*.sh, tools/*.sh)? Setup scripts have different requirements -- skip harness/golden checkstest-all.sh)? Master runners orchestrate, not test -- skip all checks except fail-fasttest_harness.sh exists, harness adoption check is N/Areferences/templates/audit_worker_report_template.md, write to {output_dir}/ln-636--global.md in single Write callWhat: Test script uses shared framework (run_test, init_test_state) instead of custom assertion logic
Detection:
run_test, init_test_state in scripttest_harness.sh does not exist in project -> skip this check entirelySeverity: HIGH (custom logic = maintenance burden, inconsistent reporting)
Recommendation: Refactor to use shared run_test from test_harness.sh
Effort: M
What: Test suite has expected/ directory with reference files matching test scenarios
Detection:
expected/ subdirectoryrun_test calls) vs number of expected filesdiff against expected files but expected dir is missing -> findingLayer 2: Not all tests need golden files. Tests validating HTTP status codes, timing, or dynamic data may legitimately skip golden comparison -> skip if test has no diff or comparison against files
Severity: HIGH (no golden files = no regression detection for output correctness)
Recommendation: Add expected/ directory with reference output files
Effort: M
What: Script sources shared config.sh for consistent configuration
Detection:
source.*config.sh or . .*config.shLayer 2: If script is self-contained utility (e.g., tools/*.sh) -> skip
Severity: MEDIUM
Recommendation: Add source "$THIS_DIR/../config.sh" for shared configuration
Effort: S
What: Script uses set -e and returns exit code 1 on failure
Detection:
set -e (or set -eo pipefail)|| true everywhere)Severity: HIGH (silent failures mask broken tests)
Recommendation: Add set -e at script start, ensure test failures propagate
Effort: S
What: Script follows project test templates (TEMPLATE-api-endpoint.sh, TEMPLATE-document-format.sh)
Detection:
tests/manual/, check structural alignment:
THIS_DIR, EXPECTED_DIR)source config.sh, check_jq, setup_auth)Layer 2: Older scripts written before templates may diverge. Flag as MEDIUM, not HIGH
Severity: MEDIUM
Recommendation: Align script structure with project TEMPLATE files
Effort: M
What: Script can be rerun safely without side effects from previous runs
Detection:
trap.*EXIT, rm -f, cleanup functionsLayer 2: Scripts that only READ data (GET requests, queries) are inherently idempotent -> skip
Severity: MEDIUM
Recommendation: Add cleanup trap or use unique identifiers per run
Effort: S-M
What: Test suite directory has README.md explaining purpose and prerequisites
Detection:
NN-feature/) contains README.mdLayer 2: Setup directories (00-setup/) and utility directories (tools/) may not need README -> skip
Severity: LOW
Recommendation: Add README.md with test purpose, prerequisites, usage
Effort: S
MANDATORY READ: Load references/audit_scoring.md.
Severity mapping:
MANDATORY READ: Load references/templates/audit_worker_report_template.md.
Write JSON summary per references/audit_summary_contract.md. In managed mode the caller passes both runId and summaryArtifactPath; in standalone mode the worker generates its own run-scoped artifact path per shared contract.
Write report to {output_dir}/ln-636--global.md with category: "Manual Test Quality" and checks: harness_adoption, golden_file_completeness, config_sourcing, fail_fast_compliance, template_compliance, idempotency, documentation.
Return summary per references/audit_summary_contract.md.
When summaryArtifactPath is absent, write the standalone runtime summary under .hex-skills/runtime-artifacts/runs/{run_id}/evaluation-worker/{worker}--{identifier}.json and optionally echo the same summary in structured output.
Report written: .hex-skills/runtime-artifacts/runs/{run_id}/audit-report/ln-636--global.md
Score: X.X/10 | Issues: N (C:N H:N M:N L:N)
Apply the already-loaded references/audit_worker_core_contract.md.
tests/manual/ directory exists, return score 10/10 with zero findingsconfig.sh, test_harness.sh, test-all.sh, regenerate-golden.sh, TEMPLATE-*.sh, files in tools/, results/, test-runs/00-setup/) have relaxed requirements (no golden files, no harness needed)Apply the already-loaded references/audit_worker_core_contract.md.
{output_dir}/ln-636--global.md (atomic single Write call)references/audit_output_schema.mdVersion: 1.0.0 Last Updated: 2026-03-13