Agent skill

Sitl Testing

by ArduPilot in ArduPilot/MethodicConfigurator

Set up and run SITL integration tests for backendflightcontroller.py.

GPL-3.0Auto-check passedTesting & QA

Install Sitl Testing

skills CLI
$ npx skills add ArduPilot/MethodicConfigurator --skill sitl-testing -a claude-code

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

GitHub CLI
$ gh skill install ArduPilot/MethodicConfigurator sitl-testing --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/ArduPilot/MethodicConfigurator.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/sitl-testing .claude/skills/sitl-testing && 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
sitl-testing
GitHub stars
163
Token cost
~1.7k tokens
SKILL.md length
584 words
Files
1
Skills in repo
11
Repo updated
First seen
Licence
GPL-3.0

At a glance

Set up and run SITL integration tests for backendflightcontroller.py.

  • Works in 4 steps: Direct Download: Tests download… → Pytest Fixtures: Session-scoped… → TCP Connection: SITL runs on TCP port… → …
  • Testing real MAVLink communication
  • SKILL.md covers Overview, Architecture, Prerequisites and Usage, plus 6 more sections
  • Reaches firmware.ardupilot.org

What it does

Sitl Testing is an agent skill from ArduPilot/MethodicConfigurator. Set up and run SITL integration tests for backendflightcontroller.py. Use when testing real MAVLink communication, downloading pre-built SITL binaries from firmware.ardupilot.org, running sitl-marked pytest tests, or debugging connection failures on TCP port 5760.

Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering Unit testing, Integration testing and CI/CD. It works with pytest. The repository describes itself as: A clear ArduPilot configuration sequence. The licence is GPL-3.0.

When your agent uses it

  • Testing real MAVLink communication
  • Downloading pre-built SITL binaries from firmware.ardupilot.org
  • Running sitl-marked pytest tests
  • Debugging connection failures on TCP port 5760

Example prompts

  • “/sitl-testing”

Requirements

  • Python 3

Workflow steps

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

  1. Direct Download: Tests download pre-built ArduCopter SITL binaries directly from the official ArduPilot firmware server…
  2. Pytest Fixtures: Session-scoped SITLManager class manages SITL process lifecycle
  3. TCP Connection: SITL runs on TCP port 5760 with MAVLink protocol
  4. Parameter Configuration: SITL uses sitl/copter.parm with battery monitoring enabled

What it can do on your machine

Read from SKILL.md and the folder at commit 1a6392c. 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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • firmware.ardupilot.org

    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

Sitl Testing loads about 1.7k tokens when it runs. Until then it costs about 70 tokens; SKILL.md has 584 words of instructions outside code blocks.

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

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 ArduPilot/MethodicConfigurator at commit 1a6392c, republished under its GPL-3.0 licence (© ArduPilot). 584 words, ~1,661 tokens.

Download SKILL.mdSave it as .claude/skills/sitl-testing/SKILL.md (or your agent's skills folder).
name
sitl-testing
description
Set up and run SITL integration tests for backend_flightcontroller.py. Use when testing real MAVLink communication, downloading pre-built SITL binaries from firmware.ardupilot.org, running sitl-marked pytest tests, or debugging connection failures on TCP port 5760.

SITL Testing Setup

This document describes how to set up and run integration tests using ArduPilot SITL (Software In The Loop) for testing the backend_flightcontroller.py module.

Overview

SITL testing provides real MAVLink communication validation instead of mocked tests. This ensures the flight controller backend works correctly with actual ArduPilot firmware.

Architecture

The SITL testing setup consists of:

  1. Direct Download: Tests download pre-built ArduCopter SITL binaries directly from the official ArduPilot firmware server (firmware.ardupilot.org)
  2. Pytest Fixtures: Session-scoped SITLManager class manages SITL process lifecycle
  3. TCP Connection: SITL runs on TCP port 5760 with MAVLink protocol
  4. Parameter Configuration: SITL uses sitl/copter.parm with battery monitoring enabled

Prerequisites

For CI/CD (GitHub Actions)
  • No additional setup required - SITL binaries are downloaded automatically during tests
For Local Development

Download the latest pre-built SITL binary directly from the official ArduPilot firmware server:

bash
./scripts/run_sitl_tests.sh download

This downloads ArduCopter SITL from https://firmware.ardupilot.org/Copter/latest/SITL_x86_64_linux_gnu/arducopter

Usage

CI/CD Testing

SITL tests run automatically in GitHub Actions when SITL artifacts are available. The test workflow:

  1. Downloads the latest SITL artifact
  2. Extracts and sets up SITL binary
  3. Runs tests marked with @pytest.mark.sitl
  4. Falls back to mocked tests if SITL is unavailable
Local Development

Use the provided script for local SITL testing. You can either download pre-built SITL or use a locally built version:

On some Linux systems, run the commands through the project .venv and xvfb-run because the shared test fixtures import GUI libraries:

bash
PATH="$PWD/.venv/bin:$PATH" xvfb-run -a ./scripts/run_sitl_tests.sh test
bash
# Download ArduCopter SITL from official firmware server
./scripts/run_sitl_tests.sh download

# Download and run tests in one command
PATH="$PWD/.venv/bin:$PATH" xvfb-run -a ./scripts/run_sitl_tests.sh download-test

# Check if downloaded SITL is available
./scripts/run_sitl_tests.sh check
Using Locally Built SITL
bash
# Set up environment for locally built SITL
export ARDUPILOT_DIR="$HOME/ardupilot-sitl"

# Check if locally built SITL is available
./scripts/run_sitl_tests.sh check

# Set up SITL for testing
./scripts/run_sitl_tests.sh setup

# Run SITL integration tests
PATH="$PWD/.venv/bin:$PATH" xvfb-run -a ./scripts/run_sitl_tests.sh test
General Commands
bash
# Clean up SITL processes and cache
./scripts/run_sitl_tests.sh cleanup

# Show help
./scripts/run_sitl_tests.sh help
Manual Testing

Run specific SITL tests:

bash
# Run all SITL tests
SITL_BINARY="$PWD/sitl/arducopter" PATH="$PWD/.venv/bin:$PATH" \
  xvfb-run -a python -m pytest tests/test_backend_flightcontroller_sitl.py -v

# Run only SITL tests (skip if SITL unavailable)
SITL_BINARY="$PWD/sitl/arducopter" PATH="$PWD/.venv/bin:$PATH" \
  xvfb-run -a python -m pytest -m sitl -v

# Run SITL tests or fallback to mocked tests
SITL_BINARY="$PWD/sitl/arducopter" PATH="$PWD/.venv/bin:$PATH" \
  xvfb-run -a python -m pytest -m "sitl or not sitl" -v

The direct pytest commands require SITL_BINARY because the test fixture does not discover sitl/arducopter on its own. The run_sitl_tests.sh wrapper checks that path and exports the variable automatically.

Test Coverage

SITL tests cover:

  • Real MAVLink Connection: Validates actual protocol communication on TCP port 5760
  • Parameter Management: Download, set, and verify parameters with real firmware
  • Motor Testing: Test motor commands against actual ArduPilot firmware
  • Battery Monitoring: Test battery status reporting with enabled monitoring
  • Frame Information: Validate vehicle configuration queries

Implementation Details

SITL Configuration

SITL runs with the following command line parameters:

bash
arducopter --model quad --home "40.071374,-105.229930,1440,0" --defaults sitl/copter.parm --sysid 1 --speedup 10
Show full SKILL.md (240 more words)Show less
Connection Details
  • Protocol: MAVLink over TCP
  • Port: 5760
  • Connection String: "tcp:127.0.0.1:5760"
  • Vehicle Type: ArduCopter (Quadcopter)
  • System ID: 1
Parameter Requirements

Some tests require specific parameters to be set in sitl/copter.parm:

  • BATT_MONITOR = 4 (Analog voltage and current)
  • BATT_VOLT_PIN = 1
  • BATT_CURR_PIN = 2
  • BATT_VOLT_MULT = 10.0
  • BATT_AMP_PERVOLT = 17.0

Configuration

Environment Variables
  • SITL_BINARY: Path to ArduCopter SITL binary (auto-detected in CI)
  • ARDUPILOT_DIR: Path to ArduPilot directory for local development
Test Markers
  • @pytest.mark.sitl: Marks tests requiring SITL
  • Tests automatically skip if SITL is unavailable

Troubleshooting

SITL Not Found
  • For downloaded SITL: Run ./scripts/run_sitl_tests.sh download to download from ArduPilot website
  • For locally built SITL: Ensure ArduPilot is built with ./waf configure --board=sitl && ./waf copter
  • Check ARDUPILOT_DIR environment variable for locally built SITL
  • Verify SITL binary exists at expected path
Connection Failures
  • SITL may take time to start - tests include startup delays
  • Check for port conflicts on TCP port 5760
  • Verify MAVLink heartbeat detection
  • Ensure connection string format is "tcp:127.0.0.1:5760"
Test Timeouts
  • SITL tests are slower than mocked tests
  • Increase timeout values if needed
  • Check system performance for SITL simulation

Benefits

  1. Real Validation: Tests actual MAVLink protocol implementation
  2. Regression Detection: Catches firmware compatibility issues
  3. CI/CD Integration: Automated testing with pre-built artifacts
  4. Development Flexibility: Local testing with fallback to mocks
  5. Cost Efficiency: Monthly builds reduce CI resource usage

Future Enhancements

  • Multiple vehicle types (ArduPlane, Rover, etc.)
  • SITL version pinning for reproducible tests
  • Performance optimization for faster test execution
  • Multi-SITL instance testing for complex scenarios

© ArduPilot, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .github/skills/sitl-testing of ArduPilot/MethodicConfigurator.

Open the folder on GitHubat commit 1a6392c

Compare with similar skills

Sitl Testing 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.

Sitl Testing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Sitl Testing this skillArduPilot/MethodicConfigurator163—~1.7kAutomated safety check: PassGPL-3.0
Robotics Testingarpitg1304/robotics-agent-skills368—~4.7kAutomated safety check: PassApache-2.0
Megatron Core Testing GuideNVIDIA/Megatron-LM18k—~2.1kAutomated safety check: PassApache-2.0
Designing TestsCloudAI-X/claude-workflow-v21.4k1 repos~1.5kAutomated safety check: PassMIT
Simple Modern Uvjlevy/simple-modern-uv301—~1.9kAutomated safety check: PassMIT
JS-in-HTML Testingliaohch3/claude-tap3.3k—~924Automated safety check: PassMIT

Similar skills

  • Robotics Testing

    arpitg1304/robotics-agent-skills

    Testing strategies, patterns, and tools for robotics software.

    368 GitHub stars~4.7k tokensUpdated 1 mo ago
    Testing & QAAuto-check passed
  • Megatron Core Testing Guide

    NVIDIA/Megatron-LM

    Official

    Guide to the Megatron-LM test system: layout, recipe YAML, running and adding unit and functional tests, golden values, marker filters and CI parity.

    18k GitHub stars~2.1k tokensUpdated today
    Testing & QAAuto-check passed
  • Designing Tests

    CloudAI-X/claude-workflow-v2

    Designs and implements testing strategies for any codebase. An agent skill from CloudAI-X/claude-workflow-v2.

    1.4k GitHub starsUsed in 1 repo~1.5k tokens
    Testing & QAAuto-check passed
  • Simple Modern Uv

    jlevy/simple-modern-uv

    Start, selectively modernize, fully migrate, or update Python projects using simple-modern-uv practices: uv, ruff, BasedPyright, pytest, GitHub Actions CI, and tag-driven PyPI publishing.

    301 GitHub stars~1.9k tokensUpdated 1 mo ago
    Testing & QAAuto-check passed
  • JS-in-HTML Testing

    liaohch3/claude-tap

    Tests JavaScript embedded in an HTML file in two layers: pytest checks of the logic ported to Python, and Playwright runs in a real browser for the DOM.

    3.3k GitHub stars~924 tokensUpdated 15 days ago
    Testing & QAAuto-check passed
  • NIC Testing Patterns

    nginx/kubernetes-ingress

    Testing conventions for the NGINX Ingress Controller repo: Go table-driven tests, mandatory snapshot regeneration, Helm tests and Python pytest integration tests.

    5.1k GitHub stars~2.8k tokensUpdated today
    Testing & QAAuto-check passed

More from ArduPilot/MethodicConfigurator

All 11 skills in this repo
  • Update Gui Translations

    ArduPilot/MethodicConfigurator

    Update existing GUI translations using AI assistance. An agent skill from ArduPilot/MethodicConfigurator.

    163 GitHub stars~1.5k tokensUpdated yesterday
    Auto-check passed
  • Add UI Translation

    ArduPilot/MethodicConfigurator

    Add a new translation language to the application. An agent skill from ArduPilot/MethodicConfigurator.

    163 GitHub stars~1.8k tokensUpdated yesterday
    Auto-check passed
  • Architecture Validation

    ArduPilot/MethodicConfigurator

    Validate and update ARCHITECTUREn.md files against actual source code implementation.

    163 GitHub stars~3.8k tokensUpdated yesterday
    Auto-check passed
  • Codebase Analysis

    ArduPilot/MethodicConfigurator

    Analyze the codebase structure and count lines of code by category using cloc.

    163 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check: notes
  • Configuration Steps Reorder

    ArduPilot/MethodicConfigurator

    Add, delete, or re-order configuration steps in configurationsteps.json.

    163 GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed
  • Pytest Testing

    ArduPilot/MethodicConfigurator

    Write high-quality BDD pytest tests for the ArduPilot Methodic Configurator.

    163 GitHub stars~3.5k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Sitl Testing

What does Sitl Testing do?

Set up and run SITL integration tests for backendflightcontroller.py. Sitl Testing is an agent skill from ArduPilot/MethodicConfigurator.py.

When should I use Sitl Testing?

Sitl Testing fits situations like: testing real MAVLink communication; downloading pre-built SITL binaries from firmware.ardupilot.org; running sitl-marked pytest tests; debugging connection failures on TCP port 5760.

How do I install Sitl Testing in Claude Code?

Run `npx skills add ArduPilot/MethodicConfigurator --skill sitl-testing -a claude-code`. Or copy the skill folder (.github/skills/sitl-testing in ArduPilot/MethodicConfigurator) into .claude/skills/sitl-testing in your project. Claude Code loads it when a task matches its description.

How do I install Sitl Testing in Codex?

Run `npx skills add ArduPilot/MethodicConfigurator --skill sitl-testing -a codex`. Or copy the skill folder (.github/skills/sitl-testing in ArduPilot/MethodicConfigurator) into .agents/skills/sitl-testing in your project. Codex loads it when a task matches its description.

Can I use Sitl Testing 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 ArduPilot/MethodicConfigurator --skill sitl-testing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sitl-testing, .gemini/skills/sitl-testing, .github/skills/sitl-testing and .opencode/skills/sitl-testing in your project.

What does Sitl Testing need to run?

SKILL.md names no scripts, command-line tools or credentials: Sitl Testing is instructions for the agent only. Our summary lists: Python 3.

Does Sitl Testing access the network?

SKILL.md names 1 domain. In commands or code: firmware.ardupilot.org; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Sitl Testing 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 Sitl Testing use?

Sitl Testing is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Sitl Testing use?

About 1.7k tokens (SKILL.md is roughly 6.6k 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 Sitl Testing?

Skills that share tags, products or a category with Sitl Testing: Robotics Testing (arpitg1304/robotics-agent-skills, 368 stars), Megatron Core Testing Guide (NVIDIA/Megatron-LM, 18k stars), Designing Tests (CloudAI-X/claude-workflow-v2, 1.4k stars) and Simple Modern Uv (jlevy/simple-modern-uv, 301 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Sitl Testing?

ArduPilot (a GitHub organization) maintains it in ArduPilot/MethodicConfigurator, which has 163 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 6, 2026.

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