Emc
aklofas/kicad-happy
EMC pre-compliance risk analysis for KiCad PCB designs — 18 check categories, 44 rule IDs covering ground planes, decoupling, I/O filtering, switching harmonics, clock routing, differential pair…
Executes QA test cases created by /aif-qa in human-guided or automated-agent mode.
$ npx skills add unxed/f4 --skill aif-qa-check -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install unxed/f4 aif-qa-check --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/unxed/f4.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/aif-qa-check .claude/skills/aif-qa-check && 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 "aif-qa-check" agent skill from https://github.com/unxed/f4/tree/main/.agents/skills/aif-qa-check into .claude/skills/aif-qa-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aif-qa-check", 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/unxed/f4/tree/main/.agents/skills/aif-qa-checkType 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 unxed/f4 --skill aif-qa-check -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install unxed/f4 aif-qa-check --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unxed/f4.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/aif-qa-check .agents/skills/aif-qa-check && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "aif-qa-check" agent skill from https://github.com/unxed/f4/tree/main/.agents/skills/aif-qa-check into .agents/skills/aif-qa-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aif-qa-check", 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 unxed/f4 --skill aif-qa-check -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install unxed/f4 aif-qa-check --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unxed/f4.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/aif-qa-check .cursor/skills/aif-qa-check && 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 "aif-qa-check" agent skill from https://github.com/unxed/f4/tree/main/.agents/skills/aif-qa-check into .cursor/skills/aif-qa-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aif-qa-check", 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/unxed/f4.git --path .agents/skills/aif-qa-check--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 unxed/f4 --skill aif-qa-check -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install unxed/f4 aif-qa-check --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unxed/f4.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/aif-qa-check .gemini/skills/aif-qa-check && 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 "aif-qa-check" agent skill from https://github.com/unxed/f4/tree/main/.agents/skills/aif-qa-check into .gemini/skills/aif-qa-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aif-qa-check", 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 unxed/f4 aif-qa-checkInstalls 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 unxed/f4 --skill aif-qa-check -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/unxed/f4.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/aif-qa-check .github/skills/aif-qa-check && 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 "aif-qa-check" agent skill from https://github.com/unxed/f4/tree/main/.agents/skills/aif-qa-check into .github/skills/aif-qa-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aif-qa-check", 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 unxed/f4 --skill aif-qa-check -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install unxed/f4 aif-qa-check --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unxed/f4.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/aif-qa-check .opencode/skills/aif-qa-check && 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 "aif-qa-check" agent skill from https://github.com/unxed/f4/tree/main/.agents/skills/aif-qa-check into .opencode/skills/aif-qa-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aif-qa-check", 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.
aif-qa-checkExecutes QA test cases created by /aif-qa in human-guided or automated-agent mode.
Aif QA Check is an agent skill from unxed/f4. Executes QA test cases created by /aif-qa in human-guided or automated-agent mode. Use when you need to walk through QA one case at a time, record pass/fail results, or have an agent verify cases through browser, CLI, API, automated tests, or file/document checks.
Its SKILL.md is about 8.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `templates/QA-CHECK.md`).
It sits in Testing & QA, covering Test generation. The repository describes itself as: dual pane like a charm. The licence is BSD-3-Clause.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 772edc7. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteGrepGlobBashAskUserQuestionBrowsermcp__playwright__*From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use 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.
Aif QA Check loads about 8.3k tokens when it runs. Until then it costs about 69 tokens; SKILL.md has 4,317 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Write, Grep, Glob, Bash, AskUserQuestion, Browser, mcp__playwright__*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 unxed/f4 at commit 772edc7, republished under its BSD-3-Clause licence (© unxed). 4,317 words, ~8,307 tokens.
.claude/skills/aif-qa-check/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Runs the test-cases.md artifact produced by /aif-qa and records execution status in qa-check.md.
In agent mode, it also maintains reusable cross-QA execution memory under the QA root:
agent-context.md — curated, current, reusable non-sensitive setup facts for future automated QA runsagent-history.md — append-only reusable learnings extracted from prior runs, not a per-run audit logThe skill is stack-free and agent-free: it does not assume a framework, package manager, browser tool name, or agent runtime. In agent mode, it uses the appropriate available execution surface for each case: live browser automation, CLI commands, project test runners, HTTP/API calls, database-safe read checks, file/document inspection, or other non-destructive automated verification.
| Argument | Mode | What you do |
|---|---|---|
human | Human-guided QA | Show exactly one test case, ask the user whether it works, and record their answer |
agent | Automated-agent QA | Execute test cases through the most appropriate available capability and record observed results |
If no mode is provided, ask the user which mode to run.
FIRST: Read .ai-factory/config.yaml if it exists to resolve:
paths.description, paths.architecture, paths.qa (default: .ai-factory/qa)language.ui for AskUserQuestion prompts, progress messages, summaries, and next-step guidancelanguage.artifacts for the persisted qa-check.md artifactlanguage.technical_terms for human-readable technical terminology style in the artifactlanguage.artifacts is missing, use language.uiengit.enabled for branch resolutionIf config.yaml does not exist, use defaults:
.ai-factory/DESCRIPTION.md.ai-factory/ARCHITECTURE.md.ai-factory/qa/ui_language: enartifact_language: entechnical_terms_policy: keeptrueStore:
ui_language = language.ui || "en"artifact_language = language.artifacts || language.ui || "en"technical_terms_policy = language.technical_terms || "keep"git_enabled = git.enabled when present, otherwise trueqa_root = resolved paths.qa || ".ai-factory/qa/"qa_agent_context_path = <qa_root>/agent-context.mdqa_agent_history_path = <qa_root>/agent-history.mdAll AskUserQuestion prompts, user-visible explanations, per-case summaries, and final summaries MUST be written in ui_language.
The persisted qa-check.md artifact MUST be written in artifact_language.
Templates define structure, not language. Use the canonical English template in templates/QA-CHECK.md. If artifact_language is not en, translate headings, labels, status text, comments you author, and explanatory text to artifact_language before saving. Preserve checkbox syntax, test case IDs (TC-001), commands, paths, config keys, URLs, selectors, package names, API names, branch names, and raw error messages.
For artifact_language = ru, write human-readable prose, headings, statuses, summaries, and agent-authored comments in Russian. Preserve user wording except mandatory redaction of sensitive values before writing.
Apply technical_terms_policy while writing artifacts:
keep — keep common technical terms such as browser, selector, viewport, endpoint, payload, regression, and fixture when clearertranslate — translate human-readable technical terms where a natural target-language term existsmixed — translate ordinary prose terms while keeping code, infrastructure, and ecosystem terms unchangedRead the resolved description path if it exists.
Read the resolved architecture path if it exists.
Read .ai-factory/skill-context/aif-qa-check/SKILL.md — MANDATORY if the file exists. Treat it as project-level overrides for this skill.
Read <paths.qa>/agent-context.md if it exists. Treat it as reusable, user-approved QA execution context for future automated runs: stable environment classes, canonical local/staging URLs, login route, test account role, allowed non-sensitive usernames, required seed data patterns, stable selectors, field identifiers, known redirects, startup prerequisites, safe command patterns, reusable test-filter conventions, environment notes, and service startup instructions.
Read <paths.qa>/agent-history.md if it exists. Treat it as append-only cross-QA memory from prior /aif-qa-check runs. Before asking the user or attempting automated execution, search it for reusable prior answers to the same blocker so the skill does not repeat avoidable mistakes.
agent-context.md and agent-history.md are global to all QA sets under paths.qa. They MUST NOT become logs for a specific QA plan. Do not write branch names, branch slugs, QA target paths, current artifact_dir, TC-* mappings, per-run summary counts, exhaustive command transcripts, assertion counts from a single run, one-off file checks, or plan-specific labels such as a numbered QA folder name. Write those details only to <paths.qa>/<branch-slug>/qa-check.md.
Only promote information into agent-context.md or agent-history.md when it is likely to help future unrelated QA runs. Prefer stable patterns over concrete one-off run facts. Example: Laravel backend checks use php artisan test --filter=<TestClass> is reusable; 05-profile-formula-recommendations ran ProfileReaderTest with 4 tests / 13 assertions is run-specific and belongs only in qa-check.md.
Never write global negative capability or scope claims unless they are true for the whole project. Do not write statements like browser automation is not required, browser URL is not used, all QA is backend/CLI, or these cases are backend-test/cli/file-docs to agent-context.md or agent-history.md when that conclusion came from one QA plan. Instead, keep it branch-specific in qa-check.md, or phrase a reusable conditional rule such as For backend-only QA cases, browser automation is not required; browser/UI cases still require Browser or Playwright MCP.
Never treat either file as a source of secrets. If either file contains an apparent password, token, cookie, authorization header, one-time code, or other secret, ignore that value for execution and redact it the next time the file is rewritten or appended to.
Parse $ARGUMENTS:
human or agent; remove it from arguments.ui_language which mode to run:Resolve the working branch:
If git_enabled = false or the repository is not a git work tree:
If branch was provided in arguments → use it as the resolved branch label
Otherwise → set resolved_branch = "manual"
If git_enabled = true and the repository is a git work tree:
If branch was provided in arguments → use it as the resolved branch
Otherwise → run: git branch --show-currentStore:
resolved_branchartifact_dir = <resolved paths.qa>/<branch-slug>test_cases_path = <artifact_dir>/test-cases.mdqa_check_path = <artifact_dir>/qa-check.mdCompute branch-slug with the exact same algorithm as /aif-qa:
[A-Za-z0-9._-] with -, collapse consecutive -, trim leading/trailing -, and use branch if empty. Then MUST truncate safe_slug to the first 40 ASCII characters. Because the normalized safe_slug alphabet is [A-Za-z0-9._-], byte length and character length are identical.git hash-object --stdin <<< "<resolved_branch>" and take the first 8 hex characters as hash8.branch-slug = "<safe_slug>-<hash8>".Check for <artifact_dir>/test-cases.md.
If it is missing, STOP and ask in ui_language whether to:
/aif-qa test-cases <resolved_branch> firstRead test-cases.md. Extract test cases by IDs (TC-001, TC-002, etc.), titles, priority, type, execution surface when present, preconditions, steps, expected results, and test data. Preserve their order.
Compute source binding metadata before creating or modifying qa-check.md:
source_digest — deterministic digest of the full test-cases.md content using git hash-object --no-filters <test_cases_path> when available, or git hash-object --stdin over the exact file content.case_digests — deterministic per-case digest for each extracted TC-NNN, computed from that case's canonical block including title, priority, type, preconditions, steps, expected result, and test data.tested_revision — when git_enabled = true and the repository is a git work tree, run git rev-parse HEAD and record the resolved commit SHA.worktree_digest — when git_enabled = true and the repository is a git work tree, record a deterministic digest of the current working tree state so dirty-tree QA cannot be reused after local changes without a commit.manual_build_id — when git_enabled = false or the repository is not a git work tree, ask the user for an explicit build/version identifier before creating or resuming results. Do not accept an empty identifier.Canonicalize each per-case digest input exactly:
TC-NNN identifier through the line before the next TC-NNN block or end of file.BEGIN TC-NNN\n<normalized block>\nEND TC-NNN\n.git hash-object --stdin when available, or another stable SHA-1/SHA-256 digest if git is unavailable.Compute worktree_digest exactly when git is enabled and a git work tree exists:
git status --porcelain=v1 --untracked-files=all.git diff --binary HEAD --.qa_check_path from the status, diff, and untracked-file digest inputs so saving qa-check.md does not stale its own results. Do not exclude test_cases_path; source changes are also tracked by source_digest.qa_check_path, append UNTRACKED <path> <content-digest> where <content-digest> is git hash-object --no-filters <path> when the file is readable.git hash-object --stdin.clean\n.If mode = agent, perform Step 1.1 before creating or modifying qa-check.md. Existing qa-check.md may be inspected read-only during this gate.
If qa-check.md exists, read it and resume from existing statuses only after comparing stored binding metadata to the current binding metadata:
tested_revision changed, mark every prior result as Stale and unchecked, preserve prior comments/evidence as historical context, and require retest. Do not count stale pass/fail/block statuses as current.worktree_digest changed, mark every prior result as Stale and unchecked, preserve prior comments/evidence as historical context, and require retest. Do not count stale pass/fail/block statuses as current.manual_build_id changed, treat it the same as a tested revision change.source_digest changed, compare case_digests. Preserve current status only for cases whose per-case digest is unchanged and whose tested revision/manual build id and worktree digest are unchanged.Stale, unchecked, and require retest.Pending.test-cases.md, keep its historical entry marked Stale or move it to an artifact-language "Stale / Removed Cases" section; never count it as current.If qa-check.md does not exist, create it from templates/QA-CHECK.md using the extracted test cases and source binding metadata. Every case starts unchecked and Pending.
Agent mode is user-only (disable-model-invocation: true) because it can perform live browser actions, shell commands, local service calls, and other checks with meaningful side effects.
Before executing any case or writing qa-check.md in agent mode:
browser-ui, cli, backend-test, api, file-docs, database-read, hybrid, human, or unknown. If the case has an explicit Execution surface: field, use it unless the case text clearly contradicts it; record any override in agent-history.md.Blocked, ask the user in ui_language to enable a live browser capability, and append this blocker to <paths.qa>/agent-history.md. Continue with other cases that can be verified through CLI, tests, API, or file/document checks.<paths.qa>/agent-context.md, <paths.qa>/agent-history.md, test-cases.md, change-summary.md, project docs, current browser state, and repository scripts to determine the target URL, service startup commands, test commands, and environment.agent-context.md, agent-history.md, test data, seeders/factories/fixtures, docs, local database-safe reads, and existing test users for a matching non-sensitive test identity.local, test, or disposable development, and repository tooling provides a safe way to create or seed a synthetic test user/state, create the minimal disposable fixture needed for the case. Record the fixture identifier and setup command/evidence in qa-check.md.local or test environment, use them for this run. Store credentials in agent-context.md only if the user explicitly says they are reusable test-only credentials and safe to persist. Otherwise store only the username/role and where to retrieve the secret.agent-context.md or agent-history.md.<paths.qa>/agent-context.md immediately only when the answer is general enough to help future QA sets. Append the redacted answer summary to <paths.qa>/agent-history.md only when it captures a reusable lesson; otherwise keep it in the branch-specific qa-check.md evidence/comment.local, development, staging, test, production, or unknown.production or unknown targets without explicit user authorization immediately before execution. Record the authorization decision and target class in qa-check.md. Append it to agent-history.md only when it creates a reusable cross-QA policy or recurring authorization lesson; do not persist broad production authorization for future runs.rm, git reset, git checkout --, database resets, migrations against shared environments, deploy commands, or cleanup commands that delete user data unless the user explicitly authorizes the exact action.Blocked, and write the blocker to qa-check.md without executing the risky action. Append the decision to agent-history.md only when it is a reusable cross-QA lesson, not merely a case-specific denial.Redaction is mandatory for agent comments/evidence and all human-entered comments/evidence:
token, access_token, refresh_token, id_token, code, secret, password, passwd, pwd, auth, key, api_key, session, sid, and jwt.[REDACTED] before writing comments or evidence to qa-check.md.Run exactly one pending or selected test case at a time.
For each case:
ui_language.ui_language = ru, use exactly: Протестируйте и ответьте работает или нет.[x]) in qa-check.md, set status to Passed, and add the current mode as human.[ ]), set status to Failed, ask for the reason, and write the user's explanation as the comment while preserving user wording except mandatory redaction of sensitive values.qa-check.md after every case so progress survives context resets.Do not show the next test case until the current one has a result or the user stops.
Agent mode MUST produce concrete, case-appropriate evidence. Browser execution, CLI output, automated test output, API responses, backend command results, database-safe read results, or file/document inspection can each be enough to mark a case passed when that evidence directly covers the case steps and expected result.
Internal deterministic invariants MUST be treated as automated checks, not manual QA. Cases involving service-method calls, cache state, materialized rows, exact arrays, raw database values, formula outputs, CLI internals, or similar non-human-observable behavior should be classified as backend-test, cli, api, or database-read as appropriate. First look for existing tests or commands that already cover the invariant. If existing tests are found and pass, mark the corresponding TC-* case Passed with the test class/name, command/filter, exit status, and assertion/result summary as evidence. If one test run covers multiple TC-* cases, reuse that evidence on every covered case and optionally summarize the shared run under "Supporting Automated Checks". If no suitable automated coverage exists, keep the case Blocked with a blocker such as Missing automated test coverage for backend invariant; do not ask the user to manually verify internal arrays or raw database values.
Determine the test target:
agent-context.md, agent-history.md, test-cases.md, change-summary.md, project docs, or current browser state clearly identify a URL, use it.agent-context.md.For each pending or selected case:
browser-ui: navigate with Browser or Playwright MCP and execute UI steps.cli: run the relevant project command and inspect exit code/output.backend-test: find and run the narrowest existing relevant test command or test filter first; broaden only when needed for confidence. Passing automated coverage is valid pass evidence for the case.api: call the endpoint through existing project tooling, safe local commands, or browser/network capability as appropriate.file-docs: inspect generated files, docs, config, or repository contents with Read/Grep/Glob and, when useful, project validation commands.database-read: use only safe read-only checks unless the user explicitly authorizes mutation in a test-scoped environment.hybrid: combine the necessary surfaces and record each evidence type.agent-context.md and agent-history.md first. For browser/UI auth or user-state gaps, try safe local/test fixture discovery or creation as described in Step 1.1 before blocking. If the answer or fixture is not already available, ask the user exactly for the missing information or authorization before marking the case blocked.agent-context.md with durable cross-QA facts and append the resolved friction to agent-history.md only if it is likely to recur in future QA sets. Keep case-specific details in qa-check.md.[ ]), set status to Blocked, and write the blocker.[x]), set status to Passed, and add concise redacted evidence. Evidence may be a browser observation, command and exit status, test name and result, API response summary, file path and matched condition, or other concrete observation.[ ]), set status to Failed, and write a concrete redacted problem comment with observed vs expected behavior.qa-check.md after every case.Before the final summary, write detailed per-run evidence to qa-check.md, not to root-level memory. This includes the current branch/QA target, commands executed, exit codes, assertion counts, supporting file checks, case mappings, summary counts, and one-off blockers.
After writing qa-check.md, extract only reusable cross-QA learnings:
<paths.qa>/agent-context.md when a discovered fact is durable and likely useful for future QA sets.<paths.qa>/agent-history.md only when a blocker, selector, command pattern, test-filter convention, API endpoint pattern, route, setup note, or authorization decision is likely to recur beyond the current QA set.agent-history.md for a successful run that produced no new reusable learning.agent-history.md.Keep <paths.qa>/agent-context.md concise and current; prefer stable facts over one-off observations. Do not write raw passwords, tokens, cookies, authorization headers, one-time codes, private personal data, token-bearing URLs, branch names, QA target paths, or run summaries.
Use screenshots or browser state observations when the active runtime makes them available, but do not require screenshots to pass a test.
After stopping or finishing, report in ui_language:
qa-check.mdagent-context.md and agent-history.md when agent mode ran or requested missing execution contextIf mode = agent and one or more current cases are Blocked, split them into human-verifiable blocked cases and automation-only blocked cases before ending.
human, browser-ui, hybrid with human-observable steps, or unknown.backend-test, cli, api, file-docs, or database-read cases when the blocker is missing automated coverage, missing command/test filter, unavailable service, or another technical automation prerequisite. For those cases, recommend adding/running the appropriate automated check or providing the missing command/fixture/context.ui_language whether to run those eligible blocked cases now in human-guided mode.Blocked.qa-check.md. Append to agent-history.md only when the handoff revealed a reusable cross-QA lesson.If any case failed, the next recommended action should be to fix the issue and rerun /aif-qa-check <mode> <resolved_branch>.
If human-verifiable cases remain blocked after an agent-mode run and the user did not continue them in human mode, the next recommended action should be to run /aif-qa-check human <resolved_branch> for those cases or provide the missing execution context. If automation-only cases remain blocked, recommend adding/running the required automated test, command, fixture, service, or context instead. Do not imply that a blocked case is a product defect unless there is concrete observed evidence.
<paths.qa>/<branch-slug>/qa-check.md, <paths.qa>/agent-context.md, and <paths.qa>/agent-history.md.<paths.qa>/<branch-slug>/change-summary.md, test-plan.md, test-cases.md, <paths.qa>/agent-context.md, and <paths.qa>/agent-history.md as QA context.qa-check.md, agent-context.md, and agent-history.md; do not rewrite test-cases.md, test-plan.md, change-summary.md, or config.yaml.paths.description, paths.architecture, paths.qa, language.ui, language.artifacts, language.technical_terms, and git.enabled; never writes config.yaml.test-cases.md.tested_revision and worktree_digest) or manual_build_id, plus source_digest and case_digests.agent-context.md and agent-history.md before automated execution and before asking the user for setup facts, so prior answers are reused.agent-context.md only after explicit user permission, and MUST never persist production credentials, personal credentials, cookies, session tokens, one-time codes, or shared secrets.agent-context.md, and MUST append to agent-history.md only when a recurring reusable learning or blocker pattern was discovered.Blocked cases.© unxed, BSD-3-Clause. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in .agents/skills/aif-qa-check of unxed/f4.
Open the folder on GitHubat commit 772edc7
Aif QA Check 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 |
|---|---|---|---|---|---|---|
| Aif QA Check this skillunxed/f4 | 243 | — | ~8.3k | Automated safety check: Notes | BSD-3-Clause | |
| Emcaklofas/kicad-happy | 1.4k | 1 repos | ~2.8k | Automated safety check: Pass | MIT | |
| Swig Testswig/swig | 6.3k | — | ~2.3k | Automated safety check: Pass | Custom licence | |
| Generate Test Cases342164796/generate-test-cases | 120 | 1 repos | ~2.9k | Automated safety check: Pass | None | |
| Wioworkersio/skills | 204 | — | ~5.8k | Automated safety check: Pass | MIT | |
| Verify Cc Safety Netkenryu42/cc-safety-net | 1.6k | — | ~2k | Automated safety check: Pass | MIT |
aklofas/kicad-happy
EMC pre-compliance risk analysis for KiCad PCB designs — 18 check categories, 44 rule IDs covering ground planes, decoupling, I/O filtering, switching harmonics, clock routing, differential pair…
swig/swig
Run SWIG test suite for specific languages. An agent skill from swig/swig.
342164796/generate-test-cases
自主学习型测试文档生成器。从需求文档(Markdown)生成测试用例 XMind 文件,支持持久化记忆和持续学习。当用户提到"生成测试用例"、"根据需求生成测试"时触发。
workersio/skills
Testing workflow skill for finding high-value test candidates, writing focused tests, generating realistic workloads, reviewing test value, and diagnosing test-suite health.
kenryu42/cc-safety-net
Launch and drive the real cc-safety-net CLI — the hook decision path, explain, status/doctor, logs, and the local policy GUI — against an isolated home, capturing evidence.
microsoft/WindowsProtocolTestSuites
ALWAYS LOAD THIS SKILL when working with FileServer, SMB, SMB2, SMB3, CIFS, file sharing, MS-SMB2, MS-FSCC, MS-FSA, MS-DFSC, MS-FSRVP, MS-RSVD, MS-SQOS, or any file server protocol test…
unxed/f4
Comprehensive documentation guide for Golang projects, covering godoc comments, README, CONTRIBUTING, CHANGELOG, Go Playground, Example tests, API docs, and llms.txt.
unxed/f4
Golang code style conventions — line length and breaking, variable declarations, control flow clarity, when comments help vs hurt.
unxed/f4
Comprehensive guide for Go database access — parameterized queries, struct scanning, NULLable columns, transactions, isolation levels, SELECT FOR UPDATE, connection pool, batch processing, context…
unxed/f4
Security audit checklist based on OWASP Top 10 and best practices.
unxed/f4
Go (Golang) naming conventions — covers packages, constructors, structs, interfaces, constants, enums, errors, booleans, receivers, getters/setters, functional options, acronyms, test functions, and…
unxed/f4
Golang concurrency design — goroutine lifecycle and leak prevention, channels and select, channel ownership and direction, sync.Mutex/RWMutex/sync.Map/sync.Once/atomics, errgroup, singleflight…
Categories
Executes QA test cases created by /aif-qa in human-guided or automated-agent mode. Aif QA Check is an agent skill from unxed/f4. Executes QA test cases created by /aif-qa in human-guided or automated-agent mode.
Aif QA Check fits situations like: you need to walk through QA one case at a time; record pass/fail results; have an agent verify cases through browser; automated tests.
Run `npx skills add unxed/f4 --skill aif-qa-check -a claude-code`. Or copy the skill folder (.agents/skills/aif-qa-check in unxed/f4) into .claude/skills/aif-qa-check in your project. Claude Code loads it when a task matches its description.
Run `npx skills add unxed/f4 --skill aif-qa-check -a codex`. Or copy the skill folder (.agents/skills/aif-qa-check in unxed/f4) into .agents/skills/aif-qa-check 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 unxed/f4 --skill aif-qa-check -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/aif-qa-check, .gemini/skills/aif-qa-check, .github/skills/aif-qa-check and .opencode/skills/aif-qa-check in your project.
Going by SKILL.md and its folder, Aif QA Check needs the command-line tools its instructions call (git). Its frontmatter pre-approves these tools: Read, Write, Grep, Glob, Bash, AskUserQuestion, Browser, mcp__playwright__*.
SKILL.md contains no URLs. Its commands use 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 notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Aif QA Check is published under the BSD-3-Clause licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 8.3k tokens (SKILL.md is roughly 33k 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 Aif QA Check: Emc (aklofas/kicad-happy, 1.4k stars), Swig Test (swig/swig, 6.3k stars), Generate Test Cases (342164796/generate-test-cases, 120 stars) and Wio (workersio/skills, 204 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
unxed (a GitHub user) maintains it in unxed/f4, which has 243 GitHub stars. The repository holds 36 skills in this directory. The repository was last updated on October 10, 2026.
Source: unxed/f4 on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.