Monitor With Haoleme
HaolemeApp/Haoleme
Selectively monitor important long-running or resource-intensive commands with Haoleme by prefixing them with hao, so status, output, and completion notifications sync to the mobile app.
Test quality assurance workflow for LeetCode problems - verifies reproducibility, fixes linting issues, and ensures test structure matches JSON templates.
$ npx skills add wislertt/leetcode-py --skill test-quality-assurance -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install wislertt/leetcode-py test-quality-assurance --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/wislertt/leetcode-py.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/test-quality-assurance .claude/skills/test-quality-assurance && 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 "test-quality-assurance" agent skill from https://github.com/wislertt/leetcode-py/tree/main/.claude/skills/test-quality-assurance into .claude/skills/test-quality-assurance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-quality-assurance", 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/wislertt/leetcode-py/tree/main/.claude/skills/test-quality-assuranceType 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 wislertt/leetcode-py --skill test-quality-assurance -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install wislertt/leetcode-py test-quality-assurance --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wislertt/leetcode-py.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/test-quality-assurance .agents/skills/test-quality-assurance && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "test-quality-assurance" agent skill from https://github.com/wislertt/leetcode-py/tree/main/.claude/skills/test-quality-assurance into .agents/skills/test-quality-assurance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-quality-assurance", 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 wislertt/leetcode-py --skill test-quality-assurance -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install wislertt/leetcode-py test-quality-assurance --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wislertt/leetcode-py.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/test-quality-assurance .cursor/skills/test-quality-assurance && 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 "test-quality-assurance" agent skill from https://github.com/wislertt/leetcode-py/tree/main/.claude/skills/test-quality-assurance into .cursor/skills/test-quality-assurance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-quality-assurance", 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/wislertt/leetcode-py.git --path .claude/skills/test-quality-assurance--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 wislertt/leetcode-py --skill test-quality-assurance -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install wislertt/leetcode-py test-quality-assurance --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wislertt/leetcode-py.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/test-quality-assurance .gemini/skills/test-quality-assurance && 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 "test-quality-assurance" agent skill from https://github.com/wislertt/leetcode-py/tree/main/.claude/skills/test-quality-assurance into .gemini/skills/test-quality-assurance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-quality-assurance", 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 wislertt/leetcode-py test-quality-assuranceInstalls 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 wislertt/leetcode-py --skill test-quality-assurance -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/wislertt/leetcode-py.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/test-quality-assurance .github/skills/test-quality-assurance && 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 "test-quality-assurance" agent skill from https://github.com/wislertt/leetcode-py/tree/main/.claude/skills/test-quality-assurance into .github/skills/test-quality-assurance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-quality-assurance", 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 wislertt/leetcode-py --skill test-quality-assurance -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install wislertt/leetcode-py test-quality-assurance --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/wislertt/leetcode-py.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/test-quality-assurance .opencode/skills/test-quality-assurance && 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 "test-quality-assurance" agent skill from https://github.com/wislertt/leetcode-py/tree/main/.claude/skills/test-quality-assurance into .opencode/skills/test-quality-assurance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "test-quality-assurance", 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.
test-quality-assuranceTest quality assurance workflow for LeetCode problems - verifies reproducibility, fixes linting issues, and ensures test structure matches JSON templates.
Test Quality Assurance is an agent skill from wislertt/leetcode-py. Test quality assurance workflow for LeetCode problems - verifies reproducibility, fixes linting issues, and ensures test structure matches JSON templates. Use ONLY when user explicitly requests test quality assurance via /test-quality-assurance command.
Its SKILL.md is about 2.9k 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, Linting and formatting and Reproducible research. It works with Python. The repository describes itself as: Python LeetCode practice environment with automated problem generation, data structure visualizations, and comprehensive testing. Includes all Grind 75, partial Blind, Neetcode… The licence is Apache-2.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 9155db3. 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:
uvnoderuffFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, 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.
Test Quality Assurance loads about 2.9k tokens when it runs. Until then it costs about 69 tokens; SKILL.md has 1,275 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 wislertt/leetcode-py at commit 9155db3, republished under its Apache-2.0 licence (© wislertt). 1,275 words, ~2,939 tokens.
.claude/skills/test-quality-assurance/SKILL.md (or your agent's skills folder).uv run python -m leetcode_py.tools.check_test_cases --threshold=10 --max=1MANDATORY 6-Step Process - Execute in Order:
# Step 1: Backup original files
cp -r leetcode/{problem_name} leetcode/{problem_name}_backup
# Step 2: Regenerate from JSON template (use bake, NOT uv run)
bake p-gen -p {problem_name} -f
# Step 3: Restore original solution ONLY
cp leetcode/{problem_name}_backup/solution.py leetcode/{problem_name}/solution.py
# Step 4: Verify linting pass (CRITICAL for CI)
bake lint
# Step 5: Verify tests pass (expected to fail if solution is incomplete)
bake p-test -p {problem_name}
# NOTE: in the batch-problem-creation flow the solution is implemented BEFORE this
# step, so tests MUST pass here. A failure = real defect: wrong expected values in
# the JSON test_cases (most common — see problem-creation.md tree gotchas) or a
# wrong solution. Debug it; do not dismiss it as "incomplete solution".
# SPIN GUARD: 12-20 tiny cases finish in well under a minute. If a pytest run
# exceeds ~1 min wall, it is an INFINITE LOOP in the solution or helper, not
# slowness — kill it (check `ps aux` for a pytest process burning ~100% CPU),
# run the parametrize cases one by one to find the spinner, fix the root cause.
# Never trust a truncated/backgrounded output file as a pass: an exit code
# observed on a run that ended early after logging only the first test is NOT
# a pass (hit with 1265 — a spinning pytest burned ~34 min and an early-truncated
# "exit 0" output masqueraded as green).
# Step 6: Cleanup
rm -rf leetcode/{problem_name}_backup{{cookiecutter.problem_name}}/ files)uv run python -m leetcode_py.cli.main gen - use bake p-gen insteadnull in JSON templates - use None for Python None valuesbake p-gen -p {problem_name} -f for regenerationassert_assert_ bugs)None not null in JSON templates for Python None valuesNone NOT null for Python None values in test casesNone directly: "[1, None, 2]" NOT "[1, null, 2]"null)'hello' not "hello"# Generate enhanced problem
uv run lcpy gen -s {problem_name} -o leetcode --force
# Test specific problem
bake p-test -p {problem_name}
# Lint check
bake lint# Find problems needing enhancement
uv run python -m leetcode_py.tools.check_test_cases --threshold=10
# Check all problems (no limit)
uv run python -m leetcode_py.tools.check_test_cases --threshold=10 --max=none
# Check with custom threshold
uv run python -m leetcode_py.tools.check_test_cases --threshold=12
# Generate from JSON template (uses uv run lcpy internally)
bake p-gen -p {problem_name} -fCause: JSON template has `helpersassert_name: "assert_missing_number"` but template adds `assert` prefix Solution: Change JSON to `helpers_assert_name: "missing_number"` so template generates `assert_missing_number`
Cause: Regenerated helpers.py doesn't match test imports Solution: Use `bake p-gen` (not uv run) and verify JSON template is correct
Expected: Tests may fail if solution is incomplete (returns 0 or placeholder) Action: This is normal - focus on ty passing, not test results Exception: if the solution is already implemented (batch flow), failures are real defects — fix the JSON test cases or the solution, then re-run the 6 steps
Cause: bake lint during QA runs a narrower ruff config than the pre-commit hook, so zip() without strict= (B905), variable names like l (E741), mutable class-attribute defaults (RUF012), uppercase locals like MOD (N806), and list-invariance type mismatches in ty pass QA and surface only at batch finalization.
zip(s, t) → zip(s, t, strict=True); rename l/I/O variables (left_val, etc.); class-level constant lists → tuples (BELOW_20: tuple[str, ...] = (...)) or annotate with typing.ClassVar; MOD = 1_000_000_007 → lowercase mod (N806, recurs on every modulo problem); annotate accumulators with the full return element type (result: list[TreeNode[int] | None], not list[TreeNode[int]] returned against -> list[TreeNode[int] | None] — ty rejects the narrowing under list invariance); a float('-inf') sentinel in an int-returning DP poisons derived values into float (ty invalid-return-type) — prefer a type-pure int sentinel like -1 for non-negative domains (hit with 741 Cherry Pickup); a nested dfs(node: TreeNode[int] | None, ...) whose body touches node.val/node.left/node.right passes bake lint but fails pre-commit ty with one unresolved-attribute per access — ty does not narrow through the call site when root is Optional, so add if node is None: return at the top of the DFS (hit with 988, 7 errors at once). Generated helpers add four more: RUF005 list concatenation in return expressions → unpack instead ([node.val, *left, *right], hit with 889); E731 lambda assigned to a name → rewrite as a def with return type (hit with 894); ty unresolved-attribute when calling .to_list() on a TreeNode | None element — assert all(x is not None ...) does NOT narrow a comprehension variable; filter into a new list (roots = [t for t in result if t is not None]) and assert equal length (hit with 894); ty does NOT narrow subscripts — while vals[i] is not None and even assert vals[i] is not None still yield int | None at the use site (invalid-argument-type in helpers_content); hoist to a local first (v = vals[i]; assert v is not None; ... v, hit with 428). All are fixed at the JSON level (helpers_assert_body / helpers_content) or in solution.py, never in other generated filesBELOW_20 = [...]) at class level flagged RUF012 Mutable default value for class attributeMOD → N806) and 652 (ty invalid-return-type on list invariance)# Time: get O(index), add_at_index O(index), ...) overflows col 100 — compress or split it (hit with 707 Design Linked List)Node classes (custom linked-list/design problems, e.g. 708 circular list, 716 MaxStack DLL) whose pointer fields are Node | None pass bake p-gen QA and bake lint but fail pre-commit ty with one unresolved-attribute/invalid-assignment error per pointer access — ty cannot narrow attribute fields, and the dead-node marker node.prev = None assignment also fails (invalid-assignment). Fix at the solution level with self-linking non-Optional fields: self.next: Node = next if next is not None else self in __init__, dead marker node.prev = node.next = node plus node.prev is not node liveness checks (hit with 708/716, 12 errors at once). Recurs on linked-list/design problems in the unscrapable queue (919, 428, 431, 510, 369)bake lint is orchestrator-owned and skipped in the QA chain): scoped lint is STILL REQUIRED before reporting PASS, and it must read the repo config — from the repo root run uv run ruff check leetcode/{problem_name}, uv run ruff format --check leetcode/{problem_name}, and uv run ty check leetcode/{problem_name} (uv resolves the pyproject ruff/ty settings, so these mirror what pre-commit's repo-wide run enforces). A bare ruff check outside uv run, or skipping the scoped lint entirely because the step was "not yours", lets SIM110/E501-class issues surface first at batch pre-commit and cost a fix + full pre-commit rerun (hit with 1849, whose agent skipped scoped lint and shipped a SIM110 for-loop-return that pre-commit caught)Cause: JSON template uses `null` which causes linting errors in generated Python code
Solution: Update JSON template to use `None` instead of `null`
Cause: verifying each entry against value ranges (`grid[i][j]` is 0 or 1, `nums[i] <= 10^4`) is not enough — shape invariants stated in the constraints must be checked too. Hit with 827 Making A Large Island: the statement guarantees an `n x n` (square) grid, but a test case like `[[1], [1]]` is 2x1; it passes all value checks and then crashes matrix-indexing solutions with `IndexError`, which reads as a solution bug rather than a test-data bug
© wislertt, Apache-2.0. 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/test-quality-assurance of wislertt/leetcode-py.
Open the folder on GitHubat commit 9155db3
Test Quality Assurance 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 |
|---|---|---|---|---|---|---|
| Test Quality Assurance this skillwislertt/leetcode-py | 142 | — | ~2.9k | Automated safety check: Pass | Apache-2.0 | |
| Monitor With HaolemeHaolemeApp/Haoleme | 157 | — | ~1.3k | Automated safety check: Pass | AGPL-3.0 | |
| Wobbling Ty Constraint Orderastral-sh/ruff | 50k | — | ~838 | Automated safety check: Pass | MIT | |
| Fake Model Provider Faultsdifferent-ai/openwork | 24k | — | ~642 | Automated safety check: Pass | Custom licence | |
| Agentacct Workflowmikehasa/agentacct | 766 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Simple Modern Uvjlevy/simple-modern-uv | 301 | — | ~1.9k | Automated safety check: Pass | MIT |
HaolemeApp/Haoleme
Selectively monitor important long-running or resource-intensive commands with Haoleme by prefixing them with hao, so status, output, and completion notifications sync to the mobile app.
astral-sh/ruff
A skill your agent uses when a user asks to wobble ty constraint ordering, check constraint-set or TDD ordering determinism, test reversed constraint/typevar IDs, or investigate nondeterministic ty…
different-ai/openwork
Makes the desktop app's model provider fail on demand, with refused connections, resets, stalls and HTTP 4xx and 5xx errors, so error and retry states can be reproduced.
mikehasa/agentacct
A skill your agent uses when working in a repo with agentacct MCP configured, or when asked to track coding-agent work, smoke-test agentacct integrations, or report objective AI-agent task evidence.
jlevy/simple-modern-uv
Start, selectively modernize, fully migrate, or update Python projects using simple-modern-uv practices: uv, ruff, BasedPyright, pytest, GitHub Actions CI, and tag-driven PyPI publishing.
i3sey/pipensx
Decodes QR-code bug report photos and screenshots from the pipensx app into a log, then triages crashes and update, download or install failures.
wislertt/leetcode-py
Generates Python LeetCode practice environments and manages a 307-problem catalog with the lcpy CLI.
wislertt/leetcode-py
Batch creation workflow for multiple LeetCode problems - loops through problem creation, solution implementation, and quality assurance for a specified count.
wislertt/leetcode-py
Guide for creating a single LeetCode problem scaffold - scrape, transform to JSON template, generate files, and verify.
wislertt/leetcode-py
Use ONLY when user explicitly requests "update tags" or "/update-tags", or after running .claude/.dev/updatetags.py and seeing "Missing" or "Removed" discrepancy lines.
Works with
Categories
Test quality assurance workflow for LeetCode problems - verifies reproducibility, fixes linting issues, and ensures test structure matches JSON templates. Test Quality Assurance is an agent skill from wislertt/leetcode-py. Test quality assurance workflow for LeetCode problems - verifies reproducibility, fixes linting issues, and ensures test structure matches JSON templates.
Test Quality Assurance fits situations like: explicitly requests test quality assurance via /test-quality-assurance command; tasks that involve QA and bug reports; tasks that involve Linting and formatting.
Run `npx skills add wislertt/leetcode-py --skill test-quality-assurance -a claude-code`. Or copy the skill folder (.claude/skills/test-quality-assurance in wislertt/leetcode-py) into .claude/skills/test-quality-assurance in your project. Claude Code loads it when a task matches its description.
Run `npx skills add wislertt/leetcode-py --skill test-quality-assurance -a codex`. Or copy the skill folder (.claude/skills/test-quality-assurance in wislertt/leetcode-py) into .agents/skills/test-quality-assurance 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 wislertt/leetcode-py --skill test-quality-assurance -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/test-quality-assurance, .gemini/skills/test-quality-assurance, .github/skills/test-quality-assurance and .opencode/skills/test-quality-assurance in your project.
Going by SKILL.md and its folder, Test Quality Assurance needs the command-line tools its instructions call (uv, node and ruff). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use uv, 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.
Test Quality Assurance is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k 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 Test Quality Assurance: Monitor With Haoleme (HaolemeApp/Haoleme, 157 stars), Wobbling Ty Constraint Order (astral-sh/ruff, 50k stars), Fake Model Provider Faults (different-ai/openwork, 24k stars) and Agentacct Workflow (mikehasa/agentacct, 766 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
wislertt (a GitHub user) maintains it in wislertt/leetcode-py, which has 142 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 10, 2026.
Source: wislertt/leetcode-py on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.