Agent skill

Run Tests

by bactopia in bactopia/bactopia

Run Bactopia nf-tests via bactopia-test and produce a timestamped logs/ directory that /review-tests can interpret.

MITAuto-check: warningsDevOps & Cloud

Install Run Tests

The automated check flagged lines worth reading first. See the safety section below.

skills CLI
$ npx skills add bactopia/bactopia --skill run-tests -a claude-code

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

GitHub CLI
$ gh skill install bactopia/bactopia run-tests --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/bactopia/bactopia.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/run-tests .claude/skills/run-tests && 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
run-tests
GitHub stars
522
Token cost
~4.8k tokens
SKILL.md length
2,117 words
Files
2 (incl. scripts)
Skills in repo
15
Repo updated
First seen
Licence
MIT

At a glance

Run Bactopia nf-tests via bactopia-test and produce a timestamped logs/ directory that /review-tests can interpret.

  • Works in 4 steps: Resolve --tier and --include from what… → Invoke the wrapper script with the… → Present the CLI's live output directly.… → …
  • Asked to run tests
  • SKILL.md covers Steps, Resolving arguments (tier…, Defaults the skill applies… and When to ask the user first…, plus 3 more sections
  • Runs Shell scripts from its folder; calls conda

What it does

Run Tests is an agent skill from bactopia/bactopia. Run Bactopia nf-tests via bactopia-test and produce a timestamped logs/ directory that /review-tests can interpret. Use when asked to run tests, execute tests, test a module, test a subworkflow, test a workflow, or validate a change. Accepts optional tier and component arguments (e.g., "run tests on snippy", "test abricaterun module", "test amrfinderplus subworkflow").

Its SKILL.md is about 4.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/run-bactopia-test.sh`).

It sits in DevOps & Cloud. It works with Docker. The repository describes itself as: A flexible pipeline for complete analysis of bacterial genomes. The licence is MIT.

When your agent uses it

  • Asked to run tests
  • Test a subworkflow
  • Test a workflow
  • Validate a change

Example prompts

  • “run tests on snippy”
  • “test abricaterun module”
  • “test amrfinderplus subworkflow”
  • “/run-tests”

Requirements

  • A Bash shell
  • Docker

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Resolve --tier and --include from what the user said. Use the
  2. Invoke the wrapper script with the resolved arguments
  3. Present the CLI's live output directly. bactopia-test produces a Rich
  4. After the run finishes, extract the run timestamp and hand off to

What it can do on your machine

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

  • Tool permissions

    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.

  • Runs code

    Ships 1 file in scripts/ (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • conda

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

  • Network

    No URLs in SKILL.md.

    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

Run Tests loads about 4.8k tokens when it runs. Until then it costs about 96 tokens; SKILL.md has 2,117 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~96
When it runs · the whole SKILL.md, loaded when a task matches
~4.8k

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: warnings

The automated check found patterns that need a careful read before installing.

  • WarningTells the agent its actions are pre-authorized / not to stop for confirmationSKILL.md:81
    These flags are always added without asking the user:

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); the scripts in this folder are not scanned.

SKILL.md

The full file from bactopia/bactopia at commit 29fb741, republished under its MIT licence (© bactopia). 2,117 words, ~4,788 tokens.

Download SKILL.mdSave it as .claude/skills/run-tests/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
run-tests
description
Run Bactopia nf-tests via bactopia-test and produce a timestamped logs/ directory that /review-tests can interpret. Use when asked to run tests, execute tests, test a module, test a subworkflow, test a workflow, or validate a change. Accepts optional tier and component arguments (e.g., "run tests on snippy", "test abricate_run module", "test amrfinderplus subworkflow").

Run Tests

Run the Bactopia nf-test suite through bactopia-test for a specific component and present the live output to the user. This is the "before" half of the run-tests / review-tests pair: this skill runs the tests and writes a timestamped logs/run-tests/{timestamp}/ directory; /review-tests then interprets that directory (grouping failures, reading stdout files, etc.). Keep the two responsibilities clearly separated -- do not try to do /review-tests' job here.

Every run is a 4-profile matrix. bactopia-test no longer takes a --profile flag. For each selected component it tests docker, conda, singularity_galaxy, and singularity_pull: docker validates (or generates) the snapshot and the other three validate against it, surfacing runtime drift without rewriting tests. Conda envs and Singularity images are pre-built serially (from --cachedir) before the parallel test phase, so even a single-component run pays that build/setup cost up front.

Steps

  1. Resolve --tier and --include from what the user said. Use the "Resolving arguments" table below. If the user did not name a specific component, stop and ask which component they want to test -- do not run the full suite (see the guardrails block).

  2. Invoke the wrapper script with the resolved arguments:

    bash .agents/skills/run-tests/scripts/run-bactopia-test.sh \
        --bactopia-path /home/rpetit3/repos/bactopia/bactopia \
        --test-data /home/rpetit3/repos/bactopia/bactopia-tests \
        --outdir /home/rpetit3/repos/bactopia/bactopia \
        --cachedir /data/cache \
        [--tier TIER] \
        --include COMPONENT

    Omit --tier entirely when the user said "test snippy" (no tier hint) -- the CLI's default all will then search every tier and the underscore- segment matcher (see "--include matching") will pick up every component whose name contains snippy.

  3. Present the CLI's live output directly. bactopia-test produces a Rich table with per-component, per-profile status (docker / conda / singularity_galaxy / singularity_pull), durations, and a final summary. Relay it without reformatting. Do not parse JSON, do not re-tabulate, do not read the stdout files the CLI writes.

  4. After the run finishes, extract the run timestamp and hand off to /review-tests. See the "After the run" section.

Resolving arguments (tier inference)

bactopia-test's --include matcher is exact-match OR underscore-segment match against a flattened component name (e.g. modules/snippy/run/tests/main.nf.test → snippy_run). Patterns and wildcards are not supported. That means --include snippy matches snippy_run, snippy_core, etc.; --include snippy_run matches only the module.

Translate user phrasing into flags as follows:

User says--tier--includeNotes
"run all tests on snippy" / "test snippy"(omit)snippyOmitting --tier lets the CLI default (all) + segment match hit snippy_run, snippy_core, etc.
"test abricate_run module" / "run tests on abricate_run"modulesabricate_run_run/_download/_predict suffixes are a strong "this is a module" signal; pin --tier modules.
"test amrfinderplus subworkflow"subworkflowsamrfinderplusThe explicit word "subworkflow" pins the tier.
"test the snippy workflow"workflowssnippyThe explicit word "workflow" pins the tier.
"run tests" / "run the test suite" / no componentREFUSE—Stop and ask which component. The CLI default runs the full suite -- see guardrails.
"run all tests" (explicit)REFUSE, ASK—Ask the user which specific component; full-suite runs are slow and not what this skill is for.

If the user's request is ambiguous (e.g. "test snippy" could mean the module, the subworkflow, or both), omitting --tier is the safe default -- the segment matcher will catch all three and the user sees everything at once.

Defaults the skill applies automatically

These flags are always added without asking the user:

FlagValueWhy
--bactopia-path/home/rpetit3/repos/bactopia/bactopiaCanonical repo location on this machine.
--test-data/home/rpetit3/repos/bactopia/bactopia-testsCanonical test-data location; sets BACTOPIA_TESTS.
--cachedir/data/cacheHolds pre-built conda/ and singularity/ env caches on this host (the CLI default ~/.bactopia is empty here).
--outdir/home/rpetit3/repos/bactopia/bactopiaSo logs/run-tests/{timestamp}/ lands at the repo root, where /review-tests reads.

When to ask the user first (never auto-fill)

FlagPolicy
--generateNever add unless the user's request contains one of: --generate, "generate mode", "regenerate snapshots", or "update snapshots". It overwrites the committed docker .snap for the tested components.
--force-rebuildOnly add if the user explicitly asks to rebuild environments (or a build_failed was diagnosed). Forces a rebuild of existing Conda envs and Singularity images -- slow.
--jobs NPass through if the user specified a number (e.g. "with 16 jobs"); otherwise omit and let the CLI default (32) apply. This is components-in-parallel; the 4 profiles within a component run sequentially.

Important Reminders

These are the non-negotiable rules. Violating any of them can burn hours of time or delete work the user cares about.

  • CRITICAL: never run with no component filter. With no --include, the CLI tests every component (250+ across modules, subworkflows, and workflows) and each one runs the full 4-profile matrix -- plus a serial env pre-build phase. That is very expensive and is not what this skill is for. If the user asks to "run tests" without naming a component, stop and ask which module / subworkflow / workflow they want.

  • NEVER pass --generate unless the user explicitly asked for it with the literal flag name or the phrases "generate mode", "regenerate snapshots", or "update snapshots". --generate forces regeneration of the docker snapshot, overwriting the committed .snap for the tested components. (Without it, a missing snapshot is still generated automatically; an existing one is validated, not touched.)

  • ALWAYS pass --cachedir /data/cache. The pre-built conda/ and singularity/ env caches live there on this host. The CLI default (~/.bactopia) is empty, so omitting it forces every environment to rebuild from scratch -- hours of wasted work.

  • ALWAYS pass --outdir /home/rpetit3/repos/bactopia/bactopia so that logs/run-tests/{timestamp}/ is written at the bactopia repo root. /review-tests looks for logs relative to --bactopia-path; if --outdir is omitted the logs land in whatever directory the shell was invoked from and the downstream skill will not find them.

  • Do NOT pass --json. The default Rich text output is human-friendly and already auto-logs a machine-readable summary.json into the logs directory. --json exists as a fallback for programmatic parsing -- it is not needed here.

  • Do NOT pass --fail-fast unless the user explicitly asks. The default "run every component, report all failures at the end" behavior is what /review-tests expects to consume. (--fail-fast stops on the first component with any failing profile.)

  • Do NOT interpret failures in detail here. Do not read stdout.txt, stderr.txt, outputs.txt, or nextflow.log files. Do not group failures by type. Do not recommend fixes. That is deliberately reserved for /review-tests so the two skills stay loosely coupled and each has a single clear job.

  • There is no --profile flag anymore. Every run tests all four profiles. If the user wants to re-check a single drifting/timed-out profile cell (e.g. "re-run stecfinder's conda test"), you still run the whole component -- the matrix always covers that profile -- and point them at that profile's row in the output.

  • A timeout can be an intermittent hang, not a too-small budget -- do not assume raising -tm will let it finish. Per-component timeout = min(expected_seconds * -tm, --timeout). A cell that hangs never completes: the task is killed by SIGTERM at the cap, so a bigger budget only makes it hang longer. Confirmed example: stecfinder's conda profile has repeatedly wedged on its third case -- the task runs the full ~184s (46.1 * 4) and is killed (exit 143, succeededCount=0; abortedCount=1, no Task completed, 0-byte outputs), yet the whole component passes in ~24s (docker ~24s) when the hang doesn't recur. This is a known intermittent hang to keep an eye on, not slowness and not a baseline problem. When a cell reports timeout, inspect the work tree to classify it, then act:

    • Hang ({profile}/.nf-test/.../work/**/.exitcode = 143, empty/0-byte outputs, no Task completed in meta/nextflow.log): the tool/task never returned control to nextflow/nf-test. Do NOT raise -tm or --update-baselines -- neither addresses a hang. In a real pipeline run Nextflow's own task retries absorb an intermittent hang like this, so no code change is required unless it becomes persistent. If it does recur often, escalate to a cross-environment deep dive (compare the docker vs conda vs singularity envs -- program versions, dependency pins) to find what differs on the wedging profile.
    • Genuine slow-but-completes (task reaches COMPLETED just past the budget): re-run with a raised -tm; if it then passes, the budget was the issue. Only this case warrants a baseline/multiplier adjustment.
Show full SKILL.md (811 more words)Show less

After the run

When bactopia-test finishes, do these four things -- nothing more:

  1. Report the status breakdown from the CLI's final summary table. It is a per-profile matrix (docker / conda / singularity_galaxy / singularity_pull); report the counts as shown.

  2. Extract the run timestamp. The CLI prints the path to the logs directory, which ends in a YYYYMMDD_HHMMSS directory (e.g. logs/run-tests/20260410_143022/). Pull that timestamp out and show it to the user.

  3. Point the user at /review-tests with an exact next step:

    Run /review-tests {timestamp} for a diagnostic grouping of any failures and per-component details.

  4. Stop. Do not open log files. Do not enumerate failed components beyond the CLI's own summary table. Do not re-run. The job of this skill is to produce the logs directory and hand off.

Notes

--include matching (full semantics)

bactopia-test builds a flattened component name by taking the test file path, stripping the tests/main.nf.test suffix and the tier prefix, and joining the remaining segments with _. Examples:

  • modules/snippy/run/tests/main.nf.test → snippy_run
  • modules/bactopia/gather/tests/main.nf.test → bactopia_gather
  • subworkflows/snippy/core/tests/main.nf.test → snippy_core
  • subworkflows/bactopia-tools/amrfinderplus/tests/main.nf.test → amrfinderplus (the bactopia-tools/ prefix is stripped)
  • workflows/teton/tests/main.nf.test → teton

--include X matches a component if:

  • X equals the full flattened name exactly, OR
  • X appears as a segment when the flattened name is split on _.

Concrete consequences:

  • --include snippy matches snippy_run, snippy_core, and snippy (any tier) but not snippyassembly -- no underscore boundary.
  • --include run would match every *_run component, which is almost never what the user wants. Prefer the more specific form.
  • Wildcards, globs, and regex are not supported. Multiple values are comma-separated (--include snippy,bakta).
CLI flag reference (complete list)

Taken from bactopia-py/bactopia/cli/testing.py. Defaults in parentheses.

Paths (required)

  • --bactopia-path — bactopia repo root (required)
  • --test-data — test-data directory, sets BACTOPIA_TESTS (required unless --cleanup)

Selection

  • --tier — modules / subworkflows / workflows / all (default: all)
  • --include — comma-separated component names (default: none → all)
  • --exclude — comma-separated component names (default: none)

Execution

  • --cachedir — cache dir holding pre-built conda/ and singularity/ subdirs (default: ~/.bactopia; use /data/cache on this host)
  • --generate — force regeneration of the docker snapshot, overwriting the committed .snap (default: off; a missing snapshot is generated regardless)
  • --force-rebuild — force a rebuild of existing Conda envs and Singularity images (default: off)
  • --max-retry — max build retries per environment during the build phase (default: 3)
  • --jobs — components tested in parallel; the 4 profiles within a component run sequentially (default: 32)
  • --fail-fast — stop on the first component with any failing profile (default: off)
  • --timeout — per-run timeout in minutes (kills each nf-test subprocess), 0 to disable (default: 90)
  • --times — path to test-times baseline JSON; enables per-component timeouts and longest-first ordering (default: {bactopia-path}/conf/test-times.json)
  • --timeout-multiplier / -tm — per-component timeout = min(expected_seconds * this, --timeout); only applied when a test-times file is available (default: 4)

Cleanup (operates instead of running tests)

  • --cleanup — remove .nf-test/ temp files under modules/, subworkflows/, workflows/, tests/, then exit (skips logs/ work dirs)
  • --dry-run — with --cleanup, list what would be removed

Output

  • --outdir — directory to write logs/ into (default: .)
  • --json — emit results as JSON (default: off; used only as fallback)

Logging

  • --verbose — DEBUG logging
  • --silent — ERROR logging only
  • --version / --help

Removed in the suite revamp: --profile, --condadir, --singularity_cache (folded into the 4-profile matrix + --cachedir), and --keep (per-profile logs and .nf-test/ work dirs are now always preserved under logs/).

Output layout written by the CLI
{outdir}/logs/run-tests/{YYYYMMDD_HHMMSS}/
├── summary.json                     # machine-readable rollup (first line of .tsv is `# generate=<bool>`)
├── summary.tsv                      # same data in TSV
├── modules/
│   └── {component}/
│       ├── docker/                  # one dir per profile that ran
│       │   ├── stdout.txt           # nf-test console incl. tool `Command error:` block
│       │   ├── stderr.txt           # nf-test assertions / `Different Snapshot` md5 diff
│       │   ├── outputs.txt          # undeclared-outputs report (or `# OK`)
│       │   └── .nf-test/            # preserved work tree (all cells, passing included)
│       ├── conda/ ...
│       ├── singularity_galaxy/ ...
│       └── singularity_pull/ ...
├── subworkflows/
│   └── ... (same structure)
└── workflows/
    └── ... (same structure)

Only the tiers that were tested have subdirectories in a given run, and a component only has a {profile}/ dir for each profile that actually ran (a component with no Galaxy image has no singularity_galaxy/). /review-tests reads these files directly -- do not pre-load them here.

Wrapper script discovery order

The wrapper at .agents/skills/run-tests/scripts/run-bactopia-test.sh locates bactopia-test by checking, in order:

  1. bactopia-test on PATH (respects an already-activated env)
  2. A conda env whose path ends in /bactopia-dev (exact) -- preferred, built from environment.yml at the bactopia repo root
  3. A conda env whose path ends in /bactopia-py (exact) -- stable release
  4. A conda env whose path contains /bactopia- (fuzzy, first match) -- catches bactopia-py-dev, bactopia-dev-v4, and any other bactopia-* env
  5. Fails with an error directing the user to install bactopia-py or activate an env containing it.

This ordering matters: bactopia-dev is the canonical development env (nextflow, nf-test, bactopia-py, and nf-bactopia build tools all in one place) and will usually have the freshest bactopia-test version. The older bactopia-py-dev env -- which contained only the Python CLI -- is still supported as a fallback via the fuzzy step but should not be preferred over bactopia-dev.

If a conda env is selected, the wrapper uses conda run --prefix <path> to invoke the CLI without requiring the env to be activated. All arguments are forwarded through "$@".

Sibling skills
  • /review-tests — the "after" half. Reads logs/run-tests/{timestamp}/, groups failures by type, reads stdout files on request, and suggests next steps. Always point the user here after a run completes.
  • /project-status — component counts and coverage. Unrelated to the test loop but uses the same wrapper-script pattern.
  • /update-module — bumps tool versions. Unrelated, but is the reference for the "ask the user before mutating" pattern borrowed here for --generate and --force-rebuild.

© bactopia, MIT. 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 1 other file (scripts) in .agents/skills/run-tests of bactopia/bactopia.

  • SKILL.md
  • scripts/run-bactopia-test.sh

Open the folder on GitHubat commit 29fb741

Compare with similar skills

Run Tests 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.

Run Tests compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Run Tests this skillbactopia/bactopia522—~4.8kAutomated safety check: WarnMIT
Iron Proxy Gateway for NanoClawnanocoai/nanoclaw31k—~4.6kAutomated safety check: NotesMIT
GreptimeDB Dev Docker ImageGreptimeTeam/greptimedb6.7k—~4kAutomated safety check: NotesApache-2.0
Senior DevOps Toolkitmaslennikov-ig/claude-code-orchestrator-kit2606 repos~1.1kAutomated safety check: NotesCustom licence
LangBot Deployment Guidelangbot-app/LangBot18k—~1.2kAutomated safety check: NotesApache-2.0
Build Openshell Mxc WindowsNVIDIA/OpenShell15k—~4.9kAutomated safety check: PassApache-2.0

Similar skills

  • Installs or refreshes Iron Proxy and its Iron Control web console for NanoClaw, with a local Docker setup, database, credentials and a human approval bridge.

    31k GitHub stars~4.6k tokensUpdated yesterday
    DevOps & CloudAuto-check: notes
  • GreptimeDB Dev Docker Image

    GreptimeTeam/greptimedb

    Packages a locally built GreptimeDB debug binary into a development-only Docker image for local-cluster testing, with an optional push to a dev registry.

    6.7k GitHub stars~4k tokensUpdated today
    DevOps & CloudAuto-check: notes
  • Senior DevOps Toolkit

    maslennikov-ig/claude-code-orchestrator-kit

    Comprehensive DevOps skill for CI/CD, infrastructure automation, containerization, and cloud platforms (AWS, GCP, Azure). Includes pipeline setup…

    260 GitHub starsUsed in 6 repos~1.1k tokens
    DevOps & CloudAuto-check: notes
  • LangBot Deployment Guide

    langbot-app/LangBot

    Deploys and configures a LangBot instance with Docker Compose or Kubernetes, covering config.yaml, the Box sandbox runtime, the plugin runtime and the global API key.

    18k GitHub stars~1.2k tokensUpdated today
    DevOps & CloudAuto-check: notes
  • Official

    Maintain and validate OpenShell's build-only Windows MSVC lane for x64 and ARM64.

    15k GitHub stars~4.9k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Container Dev

    yansongda/pay

    A skill your agent uses when local PHP environment is unavailable.

    5.4k GitHub stars~968 tokensUpdated 9 days ago
    DevOps & CloudAuto-check passed

More from bactopia/bactopia

All 15 skills in this repo
  • Add Bactopia Tool

    bactopia/bactopia

    Scaffold a complete Bactopia Tool across all three tiers -- module, subworkflow, and workflow entry point under workflows/bactopia-tools/.

    522 GitHub stars~4.1k tokensUpdated 2 mo ago
    Auto-check passed
  • Bump Versions

    bactopia/bactopia

    Propagate the Bactopia and nf-bactopia versions declared in versions.yml into the hand-maintained files that carry a literal version (conf/testbase.config, CITATION.cff, bin/bactopia…

    522 GitHub stars~1.3k tokensUpdated 2 mo ago
    Auto-check passed
  • Merge Schemas

    bactopia/bactopia

    Regenerate nextflow.config and nextflowschema.json for Bactopia workflows by running bactopia-merge-schemas.

    522 GitHub stars~1.3k tokensUpdated 2 mo ago
    Auto-check passed
  • Project Status

    bactopia/bactopia

    Show a live snapshot of the Bactopia project state — component counts, GroovyDoc coverage, nf-test coverage, and structural issues.

    522 GitHub stars~787 tokensUpdated 2 mo ago
    Auto-check passed
  • Release Checklist

    bactopia/bactopia

    Audit whether Bactopia is ready for a version release and produce a GO / NO-GO recommendation report.

    522 GitHub stars~4.9k tokensUpdated 2 mo ago
    Auto-check passed
  • Review Citations

    bactopia/bactopia

    Review citation integrity across data/citations.yml and @citation tags using bactopia-citations --validate.

    522 GitHub stars~2.5k tokensUpdated 2 mo ago
    Auto-check passed

Works with

Categories

Questions about Run Tests

What does Run Tests do?

Run Bactopia nf-tests via bactopia-test and produce a timestamped logs/ directory that /review-tests can interpret. Run Tests is an agent skill from bactopia/bactopia. Run Bactopia nf-tests via bactopia-test and produce a timestamped logs/ directory that /review-tests can interpret.

When should I use Run Tests?

Run Tests fits situations like: asked to run tests; test a subworkflow; test a workflow; validate a change.

How do I install Run Tests in Claude Code?

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

How do I install Run Tests in Codex?

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

Can I use Run Tests 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 bactopia/bactopia --skill run-tests -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/run-tests, .gemini/skills/run-tests, .github/skills/run-tests and .opencode/skills/run-tests in your project.

What does Run Tests need to run?

Going by SKILL.md and its folder, Run Tests needs a shell for the scripts in its folder and the command-line tools its instructions call (conda). Our summary lists: A Bash shell; Docker.

Does Run Tests access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Run Tests safe to install?

Our automated static check of SKILL.md flagged 1 warning(s): tells the agent its actions are pre-authorized / not to stop for confirmation. Read the flagged lines before installing; the check is not a guarantee either way. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Run Tests use?

Run Tests is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Run Tests use?

About 4.8k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Run Tests?

Skills that share tags, products or a category with Run Tests: Iron Proxy Gateway for NanoClaw (nanocoai/nanoclaw, 31k stars), GreptimeDB Dev Docker Image (GreptimeTeam/greptimedb, 6.7k stars), Senior DevOps Toolkit (maslennikov-ig/claude-code-orchestrator-kit, 260 stars) and LangBot Deployment Guide (langbot-app/LangBot, 18k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Run Tests?

bactopia (a GitHub organization) maintains it in bactopia/bactopia, which has 522 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on August 5, 2026.

Source: bactopia/bactopia on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.