Agent skill

Aif QA

by unxed in unxed/f4

QA workflow for testing a feature or task implementation. An agent skill from unxed/f4.

BSD-3-ClauseAuto-check passedTesting & QA

Install Aif QA

skills CLI
$ npx skills add unxed/f4 --skill aif-qa -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install unxed/f4 aif-qa --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/unxed/f4.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/aif-qa .claude/skills/aif-qa && rm -rf skills-src

Use ~/.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/

Facts

Skill name
aif-qa
GitHub stars
241
Token cost
~3k tokens
SKILL.md length
1,219 words
Files
7 (incl. references)
Skills in repo
36
Repo updated
First seen
Licence
BSD-3-Clause

At a glance

QA workflow for testing a feature or task implementation. An agent skill from unxed/f4.

  • Works in 4 steps: Load Config → 1: Load Project Context → 2: Parse Arguments and Resolve Branch → …
  • User says test this
  • SKILL.md covers Modes, Workflow, Principles and Priority Reference, plus 2 more sections
  • Calls git

What it does

Aif QA is an agent skill from unxed/f4. QA workflow for testing a feature or task implementation. Analyzes changes, produces test plans, and describes concrete test scenarios. Use when user says "test this", "write test plan", "what should I test", or "QA this branch".

Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including reference files (for example `references/CHANGE-SUMMARY.md`, `references/TEST-CASES.md` and `references/TEST-PLAN.md`).

It sits in Testing & QA, covering Test generation. It works with Git. The repository describes itself as: dual pane like a charm. The licence is BSD-3-Clause.

When your agent uses it

  • User says test this
  • Write test plan
  • What should I test

Example prompts

  • “test this”
  • “write test plan”
  • “what should I test”
  • “/aif-qa”

Requirements

  • Pre-approved tools (allowed-tools): Read, Write, Grep, Glob, Bash(git *), Bash(mkdir *), AskUserQuestion, Task

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Load Config
  2. 1: Load Project Context
  3. 2: Parse Arguments and Resolve Branch
  4. Execute the Selected Mode

What it can do on your machine

Read from SKILL.md and the folder at commit f2717d5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Grep
    • Glob
    • Bash(git *)
    • Bash(mkdir *)
    • AskUserQuestion
    • Task

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Aif QA loads about 3k tokens when it runs, and up to ~7.5k if it reads all its reference files. Until then it costs about 59 tokens; SKILL.md has 1,219 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~59
When it runs · the whole SKILL.md, loaded when a task matches
~3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~7.5k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from unxed/f4 at commit f2717d5, republished under its BSD-3-Clause licence (© unxed). 1,219 words, ~3,024 tokens.

Download SKILL.mdSave it as .claude/skills/aif-qa/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
aif-qa
description
QA workflow for testing a feature or task implementation. Analyzes changes, produces test plans, and describes concrete test scenarios. Use when user says "test this", "write test plan", "what should I test", or "QA this branch".
allowed-tools
Read, Write, Grep, Glob, Bash(git *), Bash(mkdir *), AskUserQuestion, Task
argument-hint
[--all] [change-summary | test-plan | test-cases] [<branch>]
disable-model-invocation
false

QA — Implementation Testing

Generates change summaries, produces test plans, and describes test scenarios for a feature or task implementation.

Modes

The skill operates in three sequential modes.

ArgumentModeWhat you do
change-summaryChange summaryAnalyze what changed, assess risks, produce a summary
test-planTest planCreate a structured test plan based on the change summary
test-casesTest casesDescribe concrete test scenarios based on the plan
--allFull pipelineRun all three modes in sequence without prompting between stages

Workflow

Step 0: Load Config

FIRST: Read .ai-factory/config.yaml if it exists to resolve:

  • Paths: paths.description, paths.architecture, paths.qa (default: .ai-factory/qa)
  • Language:
    • language.ui for AskUserQuestion prompts, progress messages, final summaries, and next-step guidance
    • language.artifacts for generated QA artifacts
    • language.technical_terms for human-readable technical terminology style when generating artifacts
    • If language.artifacts is missing, use language.ui
    • If both are missing, use en
  • Git: git.enabled and git.base_branch for branch comparison

If config.yaml doesn't exist, use defaults:

  • DESCRIPTION.md: .ai-factory/DESCRIPTION.md
  • ARCHITECTURE.md: .ai-factory/ARCHITECTURE.md
  • QA artifacts: .ai-factory/qa/
  • ui_language: en
  • artifact_language: en
  • technical_terms_policy: keep
  • Git enabled: true
  • Git base branch: main

Store:

  • 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 true
  • base_branch = git.base_branch || "main"

All AskUserQuestion prompts, user-visible explanations, stage completion messages, and next-step guidance MUST be written in ui_language.

All generated artifacts (change-summary.md, test-plan.md, test-cases.md) MUST be written in artifact_language.

Templates define structure, not language. Use the canonical English templates in templates/*.md. If artifact_language is not en, translate them to artifact_language before saving: headings, labels, checklist items, placeholders, enum labels, risk labels, and explanatory text must be in artifact_language.

Do not use English templates verbatim when artifact_language is not en. Preserve markdown structure, table shapes, checkbox syntax, test case IDs (TC-001), code identifiers, paths, commands, branch names, config keys, API names, package names, and raw error messages.

For artifact_language = ru, write human-readable prose, headings, risks, priorities, recommendations, test steps, and expected results in Russian. Keep code identifiers, filenames, branch names, commands, config keys, API names, and raw error text unchanged.

Apply technical_terms_policy while writing artifacts:

  • keep — keep common technical terms such as commit, branch, diff, endpoint, payload, rollback, regression, and fixture when that is clearer for the project audience
  • translate — translate human-readable technical terms where a natural target-language term exists
  • mixed — translate ordinary prose terms while keeping code, infrastructure, and ecosystem terms unchanged

If git_enabled = false or the current directory is not a git work tree, do not run git diff/log commands. Use manual change context mode instead: ask the user in ui_language to provide one of these sources of change context before running change-summary: pasted diff, changed file list, short implementation description, or cancel.

Step 0.1: Load Project Context

Read the resolved description path if the file exists, to understand:

  • Tech stack (language, framework, database, ORM)
  • Project architecture and coding conventions
  • Non-functional requirements

Read the resolved architecture path if the file exists, to understand:

  • Chosen architecture pattern
  • Folder structure conventions
  • Layer/module boundaries and dependency rules

Use this context when generating summaries, test plans, and test cases.

Read .ai-factory/skill-context/aif-qa/SKILL.md — MANDATORY if the file exists.

This file contains project-specific rules accumulated by /aif-evolve from patches, codebase conventions, and tech-stack analysis. These rules are tailored to the current project.

How to apply skill-context rules:

  • Treat them as project-level overrides for this skill's general instructions
  • When a skill-context rule conflicts with a general rule written in this SKILL.md, the skill-context rule wins
  • When there is no conflict, apply both: general rules from SKILL.md + project rules from skill-context
Step 0.2: Parse Arguments and Resolve Branch

Parse $ARGUMENTS fully before doing anything else:

  1. Detect --all flag — if present, set all_mode = true and remove the flag from arguments
  2. Detect mode — first word matching change-summary, test-plan, or test-cases; remove it from arguments
  3. Detect branch — remaining text (if any) is the target branch name

Resolve the working branch:

text
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"
  Use manual change context mode for analysis
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-current

Store both values for use in all reference files:

  • resolved_branch — the branch being analyzed (used to locate/save artifacts)

  • artifact_dir — <resolved paths.qa>/<branch-slug>, where branch-slug is a deterministic, filesystem-safe, collision-resistant slug derived from resolved_branch. Compute it in three steps:

    1. Safe slug. Take resolved_branch and replace every character that is not in [A-Za-z0-9._-] with -, collapse runs of consecutive - into a single -, and trim leading/trailing -. If the result is empty, use branch. Then MUST truncate to the first 40 ASCII characters. Because the normalized safe_slug alphabet is [A-Za-z0-9._-], byte length and character length are identical. Call this safe_slug.
    2. Hash suffix. Run git hash-object --stdin <<< "<resolved_branch>" and take the first 8 hex characters of the output. Call this hash8. The hash is derived from the original, unnormalized branch name so branches that collapse to the same safe_slug still produce different derived slugs in normal use.
    3. Combine: branch-slug = "<safe_slug>-<hash8>".

    Why the hash: a readable slug alone is lossy — feature/foo and feature-foo normalize to the same safe_slug and would overwrite each other's artifacts. Appending a short hash of the full original name keeps the derived slug stable, readable, and collision-resistant for practical branch naming.

    Examples:

    • feature/foo → safe_slug=feature-foo, hash8=a72ccce7 → feature-foo-a72ccce7
    • feature-foo → safe_slug=feature-foo, hash8=6f80dfc6 → feature-foo-6f80dfc6
    • main → safe_slug=main, hash8=<computed> → main-<hash8>
  • all_mode — whether to skip inter-stage prompts

If no mode was provided and all_mode = false — ask the user in ui_language:

text
AskUserQuestion in `ui_language`.
Meaning: ask which QA mode to run.
Options meaning:
1. Change summary (`change-summary`) — analyze what changed, assess risks, produce a summary
2. Test plan (`test-plan`) — create a structured test plan based on the change summary
3. Test cases (`test-cases`) — describe concrete test scenarios based on the plan
4. Full pipeline (`--all`) — run all three modes in sequence
Show full SKILL.md (367 more words)Show less
Step 1: Execute the Selected Mode

The skill runs strictly sequentially — each stage uses the artifact from the previous one:

text
change-summary → test-plan → test-cases

Read the detailed instructions for the selected mode:

Change Summary (change-summary)

Read references/CHANGE-SUMMARY.md

Test Plan (test-plan)

Read references/TEST-PLAN.md

Test Cases (test-cases)

Read references/TEST-CASES.md

Full Pipeline (--all)

Run all three modes in sequence. After each stage completes successfully, proceed to the next automatically — do NOT show the inter-stage AskUserQuestion.

text
1. Execute change-summary (references/CHANGE-SUMMARY.md) → save artifact
2. Execute test-plan      (references/TEST-PLAN.md)      → save artifact
3. Execute test-cases     (references/TEST-CASES.md)     → save artifact
4. Show context cleanup prompt (Step 6 of TEST-CASES.md)

If any stage fails (e.g. git error, diff too large and user cancels) — stop the pipeline and report which stage failed.


Principles

DO:
  • Understand the subject before writing test plans and test cases (analyze changes / test plan / merge request / task / text description)
  • Use the repository code only to the extent needed for the change analysis, test plan, and test cases
  • Write steps clearly enough that any tester can execute the test without knowledge of the codebase
  • Specify concrete test data, not abstract "enter valid data"
  • Prioritize — not everything is equally important
  • Think about adjacent systems, integrations, and dependencies
  • Include negative scenarios and edge cases — they catch most bugs
  • Ask clarifying questions when business logic is not obvious from the code
DO NOT:
  • Replace the manual QA plan with automated test implementation details
  • Make assumptions about business logic without reading the code
  • Skip negative scenarios
  • Write test cases for everything — focus on risky areas
  • Ignore data edge cases

Do not replace the manual QA plan with automated test implementation details. You may mention existing automated checks only as supporting verification; the primary output must remain manual QA scenarios.


Priority Reference

PriorityWhen to use
HighCore business logic, user data, payments, security, authorization
MediumSupporting functionality, UI/UX, reports, integrations
LowCosmetic changes, rare scenarios, nice-to-have

Artifact Ownership and Config Policy

  • Primary ownership: QA artifacts under <paths.qa>/<branch-slug>/ — specifically change-summary.md, test-plan.md, and test-cases.md. The --all flag respects the same boundary.
  • Write policy: persistent writes are limited to the three owned artifacts above; no other files are created or modified.
  • Config policy: config-aware, read-only. Reads paths.description, paths.architecture, paths.qa, language.ui, language.artifacts, language.technical_terms, git.enabled, and git.base_branch; never writes config.yaml.

Critical Rules

  1. MUST NOT create a test-plan without a change-summary artifact
  2. MUST NOT create test-cases without a test-plan artifact
  3. MUST NOT skip stages

© 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

Files

SKILL.md and 6 other files (references) in .agents/skills/aif-qa of unxed/f4.

  • SKILL.md
  • references/CHANGE-SUMMARY.md
  • references/TEST-CASES.md
  • references/TEST-PLAN.md
  • templates/CHANGE-SUMMARY.md
  • templates/TEST-CASES.md
  • templates/TEST-PLAN.md

Open the folder on GitHubat commit f2717d5

Compare with similar skills

Aif 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.

Aif QA compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Aif QA this skillunxed/f4241—~3kAutomated safety check: PassBSD-3-Clause
Test RoadmapOvid/paad131—~2.3kAutomated safety check: PassMIT
Verify Changesh0x91b/dev-3.0307—~1.7kAutomated safety check: PassApache-2.0
Codexqa Testcase Generatoropenqa-cn/codexqa152—~3.6kAutomated safety check: PassMIT
Git Facade Test Conventionsruby-git/ruby-git1.8k—~4.2kAutomated safety check: PassMIT
MAUI UI Test Writerdotnet/maui23k—~3kAutomated safety check: PassMIT

Similar skills

  • Test Roadmap

    Ovid/paad

    EXPERIMENTAL. An agent skill from Ovid/paad.

    131 GitHub stars~2.3k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Verify Changes

    h0x91b/dev-3.0

    How to test and verify work in the dev-3.0 repo — which vitest config covers what, how to write a test that fits the house style, mocking Electrobun RPC and i18n providers, what coverage is actually…

    307 GitHub stars~1.7k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Generates test plans and test cases from local requirements for APP, Web, and server.

    152 GitHub stars~3.6k tokensUpdated 6 days ago
    Testing & QAAuto-check passed
  • Conventions for writing and reviewing unit and integration tests of Git::Repository facade methods in the ruby-git project, covering setup, cases, grouping and scope.

    1.8k GitHub stars~4.2k tokensUpdated 7 days ago
    Testing & QAAuto-check passed
  • Official

    Writes UI tests that reproduce a GitHub issue in .NET MAUI and keeps iterating until the tests actually fail, proving they catch the bug.

    23k GitHub stars~3k tokensUpdated today
    Testing & QAAuto-check passed
  • Make Git Escrow

    internet-court/internet-court-skill

    Create a new git escrow bounty for a test suite. An agent skill from internet-court/internet-court-skill.

    6.5k GitHub starsUsed in 1 repo~922 tokens
    Testing & QAAuto-check: notes

More from unxed/f4

All 36 skills in this repo
  • Comprehensive documentation guide for Golang projects, covering godoc comments, README, CONTRIBUTING, CHANGELOG, Go Playground, Example tests, API docs, and llms.txt.

    241 GitHub starsUsed in 3 repos~3.5k tokens
    Auto-check passed
  • Golang code style conventions — line length and breaking, variable declarations, control flow clarity, when comments help vs hurt.

    241 GitHub starsUsed in 3 repos~2.5k tokens
    Auto-check passed
  • Comprehensive guide for Go database access — parameterized queries, struct scanning, NULLable columns, transactions, isolation levels, SELECT FOR UPDATE, connection pool, batch processing, context…

    241 GitHub starsUsed in 2 repos~2.9k tokens
    Auto-check passed
  • Security audit checklist based on OWASP Top 10 and best practices.

    241 GitHub stars~5.4k tokensUpdated today
    Auto-check: notes
  • Go (Golang) naming conventions — covers packages, constructors, structs, interfaces, constants, enums, errors, booleans, receivers, getters/setters, functional options, acronyms, test functions, and…

    241 GitHub starsUsed in 2 repos~3.1k tokens
    Auto-check passed
  • 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…

    241 GitHub starsUsed in 1 repo~2.4k tokens
    Auto-check passed

Works with

Categories

Questions about Aif QA

What does Aif QA do?

QA workflow for testing a feature or task implementation. An agent skill from unxed/f4. Aif QA is an agent skill from unxed/f4. QA workflow for testing a feature or task implementation.

When should I use Aif QA?

Aif QA fits situations like: user says test this; write test plan; what should I test.

How do I install Aif QA in Claude Code?

Run `npx skills add unxed/f4 --skill aif-qa -a claude-code`. Or copy the skill folder (.agents/skills/aif-qa in unxed/f4) into .claude/skills/aif-qa in your project. Claude Code loads it when a task matches its description.

How do I install Aif QA in Codex?

Run `npx skills add unxed/f4 --skill aif-qa -a codex`. Or copy the skill folder (.agents/skills/aif-qa in unxed/f4) into .agents/skills/aif-qa in your project. Codex loads it when a task matches its description.

Can I use Aif QA in Cursor, Gemini CLI or GitHub Copilot?

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 -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, .gemini/skills/aif-qa, .github/skills/aif-qa and .opencode/skills/aif-qa in your project.

What does Aif QA need to run?

Going by SKILL.md and its folder, Aif QA needs the command-line tools its instructions call (git). Its frontmatter pre-approves these tools: Read, Write, Grep, Glob, Bash(git *), Bash(mkdir *), AskUserQuestion, Task.

Does Aif QA access the network?

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.

Is Aif QA safe to install?

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.

What licence does Aif QA use?

Aif QA 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.

How many tokens does Aif QA use?

About 3k 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. Its references folder adds about 4.5k tokens, read only when the agent opens those files.

What are the alternatives to Aif QA?

Skills that share tags, products or a category with Aif QA: Test Roadmap (Ovid/paad, 131 stars), Verify Changes (h0x91b/dev-3.0, 307 stars), Codexqa Testcase Generator (openqa-cn/codexqa, 152 stars) and Git Facade Test Conventions (ruby-git/ruby-git, 1.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Aif QA?

unxed (a GitHub user) maintains it in unxed/f4, which has 241 GitHub stars. The repository holds 36 skills in this directory. The repository was last updated on October 9, 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.