Web Application Testing
anthropics/skills
Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.
Enforce evidence bar, coverage gates, and regression guards.
$ npx skills add athola/claude-night-market --skill night-market-validation-and-qa -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install athola/claude-night-market night-market-validation-and-qa --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/athola/claude-night-market.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/night-market-validation-and-qa .claude/skills/night-market-validation-and-qa && rm -rf skills-srcUse ~/.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/
Install the "night-market-validation-and-qa" agent skill from https://github.com/athola/claude-night-market/tree/master/.claude/skills/night-market-validation-and-qa into .claude/skills/night-market-validation-and-qa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "night-market-validation-and-qa", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/athola/claude-night-market/tree/master/.claude/skills/night-market-validation-and-qaType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add athola/claude-night-market --skill night-market-validation-and-qa -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install athola/claude-night-market night-market-validation-and-qa --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/athola/claude-night-market.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/night-market-validation-and-qa .agents/skills/night-market-validation-and-qa && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "night-market-validation-and-qa" agent skill from https://github.com/athola/claude-night-market/tree/master/.claude/skills/night-market-validation-and-qa into .agents/skills/night-market-validation-and-qa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "night-market-validation-and-qa", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add athola/claude-night-market --skill night-market-validation-and-qa -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install athola/claude-night-market night-market-validation-and-qa --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/athola/claude-night-market.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/night-market-validation-and-qa .cursor/skills/night-market-validation-and-qa && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "night-market-validation-and-qa" agent skill from https://github.com/athola/claude-night-market/tree/master/.claude/skills/night-market-validation-and-qa into .cursor/skills/night-market-validation-and-qa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "night-market-validation-and-qa", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/athola/claude-night-market.git --path .claude/skills/night-market-validation-and-qa--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add athola/claude-night-market --skill night-market-validation-and-qa -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install athola/claude-night-market night-market-validation-and-qa --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/athola/claude-night-market.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/night-market-validation-and-qa .gemini/skills/night-market-validation-and-qa && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "night-market-validation-and-qa" agent skill from https://github.com/athola/claude-night-market/tree/master/.claude/skills/night-market-validation-and-qa into .gemini/skills/night-market-validation-and-qa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "night-market-validation-and-qa", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install athola/claude-night-market night-market-validation-and-qaInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add athola/claude-night-market --skill night-market-validation-and-qa -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/athola/claude-night-market.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/night-market-validation-and-qa .github/skills/night-market-validation-and-qa && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "night-market-validation-and-qa" agent skill from https://github.com/athola/claude-night-market/tree/master/.claude/skills/night-market-validation-and-qa into .github/skills/night-market-validation-and-qa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "night-market-validation-and-qa", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add athola/claude-night-market --skill night-market-validation-and-qa -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install athola/claude-night-market night-market-validation-and-qa --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/athola/claude-night-market.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/night-market-validation-and-qa .opencode/skills/night-market-validation-and-qa && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "night-market-validation-and-qa" agent skill from https://github.com/athola/claude-night-market/tree/master/.claude/skills/night-market-validation-and-qa into .opencode/skills/night-market-validation-and-qa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "night-market-validation-and-qa", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
night-market-validation-and-qaEnforce evidence bar, coverage gates, and regression guards.
Night Market Validation And QA is an agent skill from athola/claude-night-market. Enforce evidence bar, coverage gates, and regression guards. Use when adding tests or claiming done. Do not use to run suites; use night-market-operations.
Its SKILL.md is about 3.3k 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. The repository describes itself as: 23 Claude Code plugins: TDD enforcement hooks, git/PR workflows, spec-driven development, code review, project lifecycle, fix-from-error, maintenance automation, context… The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 9f3eb00. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
rguvmakegitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv and git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Night Market Validation And QA loads about 3.3k tokens when it runs. Until then it costs about 47 tokens; SKILL.md has 1,587 words of instructions outside code blocks.
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.
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.
The full file from athola/claude-night-market at commit 9f3eb00, republished under its MIT licence (© athola). 1,587 words, ~3,303 tokens.
.claude/skills/night-market-validation-and-qa/SKILL.md (or your agent's skills folder).This skill defines the evidence bar for claiming work complete, the coverage and quality thresholds that gate merges, the golden regression tests that guard settled battles, and the procedure for adding tests. The one-line thesis: a green check proves spec-satisfaction, not correctness, so every completion claim needs cited evidence and every test needs proof it can fail.
Never claim "should work". Run the thing, capture the output, cite it.
The house discipline comes from Skill(imbue:proof-of-work):
[E1], [E2], each with the exact
command and its captured output.Criterion: [E2] -> PASS or -> FAIL.COMPLETE (all
criteria passed), PARTIAL (list blockers), BLOCKED (explain
why). A blocked task reported as blocked with evidence is a
successful report. A guessed "done" is not.A passing verifier can mislead two ways (from the prover-verifier
research, codified in commit 29081fda, module
plugins/imbue/skills/proof-of-work/modules/verifier-integrity.md):
| Failure mode | What it looks like |
|---|---|
| Wrong spec | The check confirms the code matches the spec, not that the spec matches intent |
| Hollow check | assert True, a mock returning the expected value, a stubbed service: all green, all worthless |
Rules that follow:
CONSTITUTION.md rule 3: no implementation without a failing test first. Scope:
plugins/*/src/, plugins/*/scripts/, plugins/*/hooks/).test_skill_<name>.py proving the structure.A structural validation test asserts observable content in the skill
file: required sections exist, the referenced modules exist on disk,
tables and examples the skill promises are present. Model on
plugins/imbue/tests/unit/skills/test_proof_of_work.py, which checks
SKILL.md sections, module files, and enforcement tables. The test must
fail if someone deletes the section it guards (see the
tautological-test trap below).
| Gate | Value | Where defined | Enforced by |
|---|---|---|---|
| Root coverage | fail_under = 85 | root pyproject.toml [tool.coverage.report] | root pytest runs |
| Per-plugin coverage | coverage_threshold in [tool.nightmarket], 90 for most plugins, 85 for gauntlet | plugins/<p>/pyproject.toml | scripts/run-plugin-tests.sh passes --cov-fail-under only when the key is set and > 0 |
| Mutation testing | weekly Sunday 00:00 UTC cron mutates only sanctum (the matrix falls back to sanctum when the dispatch input is empty); abstract/imbue/attune run only via manual dispatch with plugin=all or a named plugin | .github/workflows/mutation-testing.yml | mutmut: exit 0 = no survivors, exit 2 = survivors (allowed), anything else = crash |
| Critical issues | max_critical_issues: 3, enforce_blocking: true | .claude/quality_gates.json | quality-gate tooling |
| File size | < 20KB and < 5000 tokens per file | .claude/quality_gates.json | advisory (block_on_violation: false) |
| Function length | <= 60 lines, complexity < 12, nesting <= 5, debt ratio < 0.3 | .claude/quality_gates.json | advisory, except security dimension which blocks |
Notes:
run-plugin-tests.sh awk parser reads coverage_threshold from
[tool.nightmarket], never from addopts. Use
scripts/fix_coverage_threshold.py to migrate a plugin still using
the old location.coverage_threshold. If
the key is absent, no --cov-fail-under flag is passed at all, so a
plugin without the key has no coverage gate in the runner.addopts force --cov=scripts plus term and HTML
coverage reports on every run, including single-file runs.PR review here repeatedly catches tests that assert nothing. Evidence
in history: a94240e2 (12 tests of constants tightened to behavioral
coverage), f1cbbcf1 (strengthened tautological assertions),
30e58586 (validation-floor regression test), 42f7ce84 (round-trip
test replacing a structure-only check). The pattern: a test that
restates the code, mocks the unit under test, or asserts a constant
equals itself.
The counter-discipline is the revert test, executed by
sanctum:validate-pr:
When writing a new test, apply the same standard preemptively: write the test so it would catch the bug's return, then confirm it fails before the fix lands (that is the Iron Law's RED step).
These tests lock in lessons from settled incidents. Do not weaken or delete them without understanding the incident they guard.
| Guard | Location | What it locks |
|---|---|---|
| py39 datetime alias | plugins/leyline/tests/test_python39_compat.py | AST-scans leyline source for datetime.UTC (a 3.11+ alias). Hooks run under system Python 3.9, and this alias broke the whole hook import chain three-plus times. Ruff UP017 kept auto-reverting manual fixes, so only this AST invariant test holds the line. |
| Lazy-import blocker | plugins/gauntlet/tests/unit/test_challenges.py | Installs a sys.meta_path blocker that raises on any re-import of anthropic, proving gauntlet's heavy deps stay lazily imported. Eager imports made every git commit emit hook ModuleNotFoundError. |
| Hook timeout budget | plugins/herald/tests/unit/test_double_shot_latte.py (test_llm_timeout_fits_within_hook_timeout) | Asserts LLM_TIMEOUT_SECONDS is strictly less than the Stop-hook timeout registered in hooks.json. A timeout above the budget once cost the hook its verdict entirely (full record: night-market-failure-archaeology SB7). |
| Hook stdin contract | plugins/abstract/tests/hooks/test_hook_io.py | Locks the input contract of shared/hook_io.py: stdin JSON is primary, legacy CLAUDE_TOOL_* env vars are fallback only. Env-reading hooks were once silent no-ops for months (full record: night-market-failure-archaeology SB9). |
When you fix an incident of a similar class, add its guard here in the same spirit: an invariant test that fails loudly if the lesson is unlearned.
plugins/<plugin>/tests/ with unit/,
integration/ subdirectories and its own conftest.py and pytest
config in the plugin's pyproject.toml.pyproject.toml sets norecursedirs = ["plugins/*", ...].
Plugin tests MUST run per-plugin. Running them from the repo root
causes ImportPathMismatchError from duplicate module names (the root
conftest.py documents this).# Single test file (fastest loop)
cd plugins/imbue
uv run pytest tests/unit/test_deferred_capture.py -x -q
# Full suite for one plugin
cd plugins/<plugin>
uv run python -m pytest tests/ --tb=short -q
# or, where the plugin has a Makefile target:
make -C plugins/<plugin> test
# Everything (what `make test` at root does)
./scripts/run-plugin-tests.sh --all
# Only plugins with staged changes
./scripts/run-plugin-tests.sh --changed
# Mutation testing for one plugin, locally
cd plugins/<plugin>
uv run mutmut run --paths-to-mutate=scripts/,src/ --tests-dir=tests/Root pytest runs with --strict-markers, so only registered markers
are legal. Registered in root pyproject.toml: unit, integration,
e2e, slow, network, plugin, skill, hook, command, bdd,
benchmark (skip benchmarks in CI with -m "not benchmark").
unit/ or
integration/ accordingly.uv run python -m pytest tests/ --cov-fail-under=<threshold>.test_skill_<name>.py structural test.The most recurrent bug class in this repo is the swallowed error. In
scanner-shaped code (anything that walks files and reports findings),
the signature is except-continue: a try/except that skips a file on
malformed input and reports success on the remainder. The scanner
looks healthy while ignoring exactly the inputs most likely to be
broken.
The house convention since commit 666171c3 (issue #575): a scanner
that cannot process an input emits an ADVISORY finding for it instead
of skipping silently. Examples from that commit:
check_hook_modernization.py emits findings on malformed
hooks.json, SyntaxError, or OSError instead of dropping the file.harden/scanner.py appends an ADVISORY finding for
unreadable files under --strict.dora_metrics warns and sets a partial flag on malformed
tag lines instead of silently classifying the repo Elite.When reviewing or writing scanner code, grep for the pattern:
rg -n "except .*:\s*$" -A2 plugins/<p>/scripts/ | rg -B1 "continue|pass"Any hit that discards an error without emitting a finding or an inline "why it is safe to discard" comment violates Constitution rule 10 (errors are not optional).
night-market-operations (command anatomy lives there).night-market-change-control.night-market-debugging-playbook.night-market-failure-archaeology.Skill(leyline:pytest-config) has the templates, and
Skill(leyline:testing-quality-standards) the anti-pattern catalog.[E1]...) with commands and captured output, and carries
a COMPLETE, PARTIAL, or BLOCKED status.[tool.nightmarket] coverage_threshold.test_skill_<name>.py
structural test.Compiled 2026-07-02 against repo v1.9.15, branch discussions-fix-1.9.14. Volatile facts and how to re-verify them:
rg -n "fail_under" pyproject.toml
(85 as of 2026-07-02).rg -n "coverage_threshold" plugins/*/pyproject.toml
(90 everywhere except gauntlet at 85, as of 2026-07-02).scripts/run-plugin-tests.sh (search tool.nightmarket).rg -n "cron|matrix" .github/workflows/mutation-testing.yml.cat .claude/quality_gates.json.ls plugins/leyline/tests/test_python39_compat.py plugins/gauntlet/tests/unit/test_challenges.py plugins/herald/tests/unit/test_double_shot_latte.py plugins/abstract/tests/hooks/test_hook_io.py.git log --oneline -1 <hash> for 29081fda,
a94240e2, f1cbbcf1, 30e58586, 42f7ce84, 666171c3,
268cff89.rg -n -A12 "^markers" pyproject.toml.© athola, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/night-market-validation-and-qa of athola/claude-night-market.
Open the folder on GitHubat commit 9f3eb00
Night Market Validation And QA 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Night Market Validation And QA this skillathola/claude-night-market | 341 | — | ~3.3k | Automated safety check: Pass | MIT | |
| Web Application Testinganthropics/skills | 180k | 51 repos | ~966 | Automated safety check: Pass | Apache-2.0 | |
| Diagnosing Bugsfossasia/eventyay-interpretation | 1.6k | 32 repos | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| TDDpietheinstrengholt/rssmonster | 564 | 30 repos | ~906 | Automated safety check: Pass | MIT | |
| TDD WorkflowhellangleZ/burn-in-cceverywhere-ralph | 112 | 11 repos | ~2.4k | Automated safety check: Pass | None | |
| TDDsanity-io/sanity | 6.4k | 20 repos | ~1k | Automated safety check: Pass | MIT |
anthropics/skills
Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.
fossasia/eventyay-interpretation
Diagnosis loop for hard bugs and performance regressions. An agent skill from fossasia/eventyay-interpretation.
pietheinstrengholt/rssmonster
Test-driven development. An agent skill from pietheinstrengholt/rssmonster.
hellangleZ/burn-in-cceverywhere-ralph
A skill your agent uses when writing new features, fixing bugs, or refactoring code.
sanity-io/sanity
Test-driven development with red-green-refactor loop. An agent skill from sanity-io/sanity.
Ibrahim-3d/orchestrator-supaconductor
A skill your agent uses when working with Conductor's context-driven development methodology, managing project context artifacts, or understanding the relationship between product.md, tech-stack.md…
athola/claude-night-market
Run and interpret repo diagnostic scripts (ratchets, validators, token stats).
athola/claude-night-market
Evaluate Claude skill quality through auditing. An agent skill from athola/claude-night-market.
athola/claude-night-market
Coordinates Claude agent teams via filesystem protocol. An agent skill from athola/claude-night-market.
athola/claude-night-market
Delegates execution to eight CLIs (Gemini, Qwen, MiniMax, GLM, Muse, Codex, OpenCode, Glimmer).
athola/claude-night-market
Guide minimal code via a decision ladder with full safety, edge, and negative-case coverage.
athola/claude-night-market
Build a project skill library in .claude/skills/ via discovery, parallel authoring, and review.
Categories
Enforce evidence bar, coverage gates, and regression guards. Night Market Validation And QA is an agent skill from athola/claude-night-market. Enforce evidence bar, coverage gates, and regression guards.
Night Market Validation And QA fits situations like: use night-market-operations.
Run `npx skills add athola/claude-night-market --skill night-market-validation-and-qa -a claude-code`. Or copy the skill folder (.claude/skills/night-market-validation-and-qa in athola/claude-night-market) into .claude/skills/night-market-validation-and-qa in your project. Claude Code loads it when a task matches its description.
Run `npx skills add athola/claude-night-market --skill night-market-validation-and-qa -a codex`. Or copy the skill folder (.claude/skills/night-market-validation-and-qa in athola/claude-night-market) into .agents/skills/night-market-validation-and-qa in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add athola/claude-night-market --skill night-market-validation-and-qa -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/night-market-validation-and-qa, .gemini/skills/night-market-validation-and-qa, .github/skills/night-market-validation-and-qa and .opencode/skills/night-market-validation-and-qa in your project.
Going by SKILL.md and its folder, Night Market Validation And QA needs the command-line tools its instructions call (rg, uv, make and git). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use uv and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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.
Night Market Validation And QA is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Night Market Validation And QA: Web Application Testing (anthropics/skills, 180k stars), Diagnosing Bugs (fossasia/eventyay-interpretation, 1.6k stars), TDD (pietheinstrengholt/rssmonster, 564 stars) and TDD Workflow (hellangleZ/burn-in-cceverywhere-ralph, 112 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
athola (a GitHub user) maintains it in athola/claude-night-market, which has 341 GitHub stars. The repository holds 152 skills in this directory. The repository was last updated on October 9, 2026.
Source: athola/claude-night-market on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.