agentleFS
wachawowachawo/claude-skills/skills/qa/SKILL.md

qa

Skill0 starsChanged 6 months agoMITView on GitHub

Interactive QA session in which the user freely reports bugs or issues, and the agent files the corresponding GitHub issues. Explores the codebase in the background to gather context and domain language. Use when the user wants to report bugs, run QA, file issues conversationally, or mentions a "QA session".

We split this skill into the rules it gives an agent

9 rules. About 0 are common, 8 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈8

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Run an interactive QA session.

    line 8
  2. Distinctive:

    Do NOT interrogate. If the description is enough to file an issue, move on.

    line 20
  3. Distinctive:

    Before filing, decide: is this one issue or should it be broken down into several?

    line 34
  4. Distinctive:

    Keep it as one issue when:

    line 42
  5. Distinctive:

    All symptoms stem from the same root behavior

    line 45
  6. Very specific:

    Create issues via gh issue create.

    line 49
  7. Distinctive:

    Create issues in dependency order (blockers first), so you can reference real issue numbers.

    line 79
  8. Distinctive:

    Use this template for each sub-issue:

    line 81
  9. Distinctive:

    After filing, print all issue URLs (with a brief summary of blocking relationships) and ask: "Next issue, or are we done?"

    line 126

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

QA Session

Run an interactive QA session. The user describes problems they have encountered. You ask clarifying questions, explore the codebase for context, and file GitHub issues that are durable, user-focused, and use the project's domain language.

For each issue the user raises

1. Listen and clarify lightly

Let the user describe the problem in their own words. Ask at most 2-3 short clarifying questions, focused on:

  • What they expected and what actually happened
  • Reproduction steps (if not obvious)
  • Whether the behavior is stable or flaky

Do NOT interrogate. If the description is enough to file an issue, move on.

2. Explore the codebase in the background

While talking with the user, launch an agent (subagent_type=Explore) in the background to investigate the relevant area. The goal is NOT to find a fix, but to:

  • Learn the domain language used in this area (check UBIQUITOUS_LANGUAGE.md)
  • Understand what the feature is supposed to do
  • Identify the boundary of user-facing behavior

This context helps write a higher-quality issue, but the issue itself MUST NOT reference specific files, line numbers, or internal implementation details.

3. Assess scope: single issue or breakdown?

Before filing, decide: is this one issue or should it be broken down into several?

Break down when:

  • The fix touches multiple independent areas (e.g., "form validation is wrong AND the success message is missing AND the redirect is broken")
  • There are clearly separable tasks that different people could work on in parallel
  • The user describes something with several distinct failure modes or symptoms

Keep it as one issue when:

  • It is a single behavior that is wrong in one place
  • All symptoms stem from the same root behavior

4. File the GitHub issue

Create issues via gh issue create. Do NOT ask the user to review first — just file and share the URL.

Issues should be durable — they should remain meaningful after major refactors. Write from the user's point of view.

For a single issue

Use this template:

## What happened

[Describe the actual behavior the user experienced, in plain language]

## What I expected

[Describe the expected behavior]

## Steps to reproduce

1. [Concrete, numbered steps a developer can follow]
2. [Use domain terms from the codebase, not internal module names]
3. [Include relevant inputs, flags, or configuration]

## Additional context

[Any extra observations from the user or from codebase exploration that help frame the issue — e.g. "this only happens when using the Docker layer, not the filesystem layer" — use domain language but don't cite files]

For a breakdown (multiple issues)

Create issues in dependency order (blockers first), so you can reference real issue numbers.

Use this template for each sub-issue:

## Parent issue

#<parent-issue-number> (if you created a tracking issue) or "Reported during QA session"

## What's wrong

[Describe this specific behavior problem — just this slice, not the whole report]

## What I expected

[Expected behavior for this specific slice]

## Steps to reproduce

1. [Steps specific to THIS issue]

## Blocked by

- #<issue-number> (if this issue can't be fixed until another is resolved)

Or "None — can start immediately" if no blockers.

## Additional context

[Any extra observations relevant to this slice]

When breaking down:

  • Prefer many thin issues over a few thick ones — each should be independently fixable and verifiable
  • Be honest about blocking relationships — if issue B truly cannot be tested until issue A is fixed, say so. If they are independent, mark both as "None — can start immediately"
  • Create issues in dependency order, so you can reference real numbers in "Blocked by"
  • Maximize parallelism — the goal is for several people (or agents) to be able to pick up different issues simultaneously

Rules for all issue bodies

  • No file paths or line numbers — they go stale
  • Use the project's domain language (check UBIQUITOUS_LANGUAGE.md if it exists)
  • Describe behavior, not code — "the sync service fails to apply the patch", not "applyPatch() throws on line 42"
  • Reproduction steps are required — if you cannot determine them, ask the user
  • Be concise — a developer should be able to read the issue in 30 seconds

After filing, print all issue URLs (with a brief summary of blocking relationships) and ask: "Next issue, or are we done?"

5. Continue the session

Continue until the user says they are done. Each issue is independent — do not batch them.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.