Agent skill

Add New Plugin

by ArduPilot in ArduPilot/MethodicConfigurator

Create or extend an AMC parameter-editor plugin. An agent skill from ArduPilot/MethodicConfigurator.

GPL-3.0Auto-check passed

Install Add New Plugin

skills CLI
$ npx skills add ArduPilot/MethodicConfigurator --skill add-new-plugin -a claude-code

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

GitHub CLI
$ gh skill install ArduPilot/MethodicConfigurator add-new-plugin --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/add-new-plugin .claude/skills/add-new-plugin && 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
add-new-plugin
GitHub stars
163
Token cost
~2.1k tokens
SKILL.md length
837 words
Files
1
Skills in repo
11
Repo updated
First seen
Licence
GPL-3.0

At a glance

Create or extend an AMC parameter-editor plugin. An agent skill from ArduPilot/MethodicConfigurator.

  • Works in 7 steps: Add PLUGIN_ in → Create… → Create… → …
  • SKILL.md covers Integration points, Factory pattern, Step wiring and conditions and Views, lifecycle and staged…, plus 1 more section
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Add New Plugin is an agent skill from ArduPilot/MethodicConfigurator. Create or extend an AMC parameter-editor plugin. Covers plugin-local model/view factories, startup registration, schema and step wiring, lifecycle, offline operation, conditional visibility, architecture documentation and tests.

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

The repository describes itself as: A clear ArduPilot configuration sequence. The licence is GPL-3.0.

Example prompts

  • “/add-new-plugin”

Requirements

  • Python 3

Workflow steps

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

  1. Add PLUGIN_ in
  2. Create ardupilot_methodic_configurator/plugins/data_model_.py for the
  3. Create ardupilot_methodic_configurator/plugins/frontend_tkinter_.py
  4. Add (module_name, registration_function_name) to the lazy registrations
  5. Append the name to
  6. Wire relevant ardupilot_methodic_configurator/configuration_steps_.json
  7. Document architecture in the project-root ARCHITECTURE_.md.

What it can do on your machine

Read from SKILL.md and the folder at commit 9cd3ca1. 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 python and json).

    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

Add New Plugin loads about 2.1k tokens when it runs. Until then it costs about 61 tokens; SKILL.md has 837 words of instructions outside code blocks.

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

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 9cd3ca1, republished under its GPL-3.0 licence (© ArduPilot). 837 words, ~2,066 tokens.

Download SKILL.mdSave it as .claude/skills/add-new-plugin/SKILL.md (or your agent's skills folder).
name
add-new-plugin
description
Create or extend an AMC parameter-editor plugin. Covers plugin-local model/view factories, startup registration, schema and step wiring, lifecycle, offline operation, conditional visibility, architecture documentation and tests.
argument-hint
plugin name (e.g. radio_calibration)

Add or Extend an AMC Plugin

Read .github/copilot-instructions.md and relevant architecture guidance. Use CodeGraph when available to inspect PluginFactory, PluginModelContext, ParameterEditor.create_plugin_data_model() and a similar existing plugin.

Integration points

Plugin-specific Python modules belong under ardupilot_methodic_configurator/plugins/, not directly in the package root.

  1. Add PLUGIN_<NAME> in ardupilot_methodic_configurator/plugins/plugin_constants.py.
  2. Create ardupilot_methodic_configurator/plugins/data_model_<name>.py for the model and its typed business logic dependencies.
  3. Create ardupilot_methodic_configurator/plugins/frontend_tkinter_<name>.py for the view and both factories.
  4. Add (module_name, registration_function_name) to the lazy registrations tuple in ardupilot_methodic_configurator/__main__.py:register_plugins(). Preserve independent import/error handling so one broken plugin does not prevent others from registering.
  5. Append the name to ardupilot_methodic_configurator/configuration_steps_schema.json at plugin > properties > name > enum.
  6. Wire relevant ardupilot_methodic_configurator/configuration_steps_<VehicleType>.json entries.
  7. Document architecture in the project-root ARCHITECTURE_<name>.md.

ParameterEditor.create_plugin_data_model() is the shared dispatch point: it checks registration and flight-controller requirements, builds a PluginModelContext, and calls the registered model factory. Keep plugin model logic in data_model_<name>.py; do not add plugin-specific imports or branches to the shared dispatcher. The four shared source integration points are the constant, startup registration, plugin-local registration and schema; step wiring and documentation complete the feature.

Factory pattern

Use actual plugin types for view constructors. Factory adapters accept shared interfaces; follow existing narrowly scoped typing adaptations.

Minimal illustrative fragment for ardupilot_methodic_configurator/plugins/frontend_tkinter_<name>.py; it shows the factory wiring and assumes the example model and view classes are defined in that module.

python
from ardupilot_methodic_configurator.plugins.plugin_constants import PLUGIN_EXAMPLE
from ardupilot_methodic_configurator.plugins.plugin_factory import PluginModelContext, plugin_factory


def _create_model(context: PluginModelContext) -> ExampleDataModel:
    return ExampleDataModel(context.parameter_editor)


def _create_view(parent: tk.Frame | ttk.Frame, model: object, base_window: object) -> ExampleView:
    return ExampleView(parent, model, base_window)  # type: ignore[arg-type]


def register_example_plugin() -> None:
    plugin_factory.register(
        PLUGIN_EXAMPLE,
        _create_view,
        _create_model,
        requires_flight_controller=False,
    )

The context provides flight_controller, local_filesystem and parameter_editor; inject only needed dependencies. FC-required plugins use requires_flight_controller=True (the default). Explicitly opt out for plugins that transform staged parameters and should work offline.

Step wiring and conditions

placement is "left" or "top". Use existing JSON "if" support for firmware/component-dependent visibility instead of duplicating rules in views. For example, a plugin restricted to firmware below 4.7.0:

json
"plugin": {
    "name": "example",
    "placement": "top",
    "if": "Version(vehicle_components['Flight Controller']['Firmware']['Version'].split(' ')[0]) < Version('4.7.0')"
}

ParameterEditor.get_plugin() evaluates conditions and hides plugins when false or evaluation fails. Test thresholds and unresolved versions as relevant. Use existing version sources consistently; do not assume a connected FC. Respect requested comparison semantics, including prereleases.

Update every applicable bundled vehicle-type JSON. Customized project JSON can override bundled configuration: document required custom-project wiring. Check the actual parameter groups and firmware support for each vehicle before wiring a step. Include a vehicle family only when its firmware provides the plugin's controls; do not infer support from similar names such as ATC_* and AR_*. For firmware-gated behavior, verify the parameter's first supported release and use that evidence to justify the condition.

Views, lifecycle and staged values

  • Keep domain rules in models, without Tkinter or external I/O in pure domain calculations. Use existing backend adapters for external operations.
  • Implement PluginView behavior, including activation, deactivation and destruction. Cancel timers, callbacks and resources when hidden or removed. Simple views can have no-op lifecycle hooks.
  • Wrap user-facing text in _() and provide tooltips for interactive controls.
  • Use BaseWindow for standalone windows; follow existing embedded-view patterns.
  • Distinguish editing New values from saving or uploading to the FC.
  • Respect read-only, forced/derived and metadata constraints. Validate bulk edits before mutation or explicitly report partial outcomes.
  • When changing a parameter's explanation, use parameter.change_reason and the parameter's setter APIs. change_reason_for_file is the serialized form and can include markers such as @manual_override; do not feed that form back as user text or append markers yourself.
  • For numeric UI input, handle conversion errors separately from range errors and show translated guidance with the accepted range rather than raw Python exception text.
  • Refresh with existing helpers in plugins/frontend_tkinter_helpers.py.
  • Define whether repeated clicks compound, replace or are idempotent. Test this behavior and disclose potentially surprising effects in the UI.

Optional renderer modules also belong under plugins/; keep them independent of Tkinter. Do not add a renderer if ordinary widgets suffice.

Show full SKILL.md (245 more words)Show less

Documentation and verification

Architecture documentation should explain components, file map, requirements, data flow, external operations and lifecycle. Link domain research separately when useful. Cite upstream ArduPilot source with a stable tag or commit permalink, not a local checkout path, and verify firmware claims including the first release that supports a parameter or feature.

When adding or moving documentation, check the exact path against REUSE.toml. Root-level globs such as *.md do not cover nested directories; add an SPDX header or a matching annotation for the file's path.

Because plugins are imported dynamically, inspect the Windows, macOS and Linux PyInstaller specs when adding a plugin package or registration. Ensure the plugin modules and any required package data are collected in frozen builds.

Follow .github/skills/pytest-testing/SKILL.md. Test:

  • Real domain objects, boundary inputs and unrelated parameter preservation.
  • View/button behavior, invalid input, table refresh and lifecycle cleanup.
  • Model/view factory registration, startup and FC requirements.
  • Configuration/schema coverage and conditional visibility.
  • Repeated-action semantics, manual-override reasons and marker stability.
  • Non-numeric and out-of-range input, including translated error messages.
  • Vehicle and firmware eligibility for each configured step.
  • REUSE coverage for added or moved files; frozen-build collection when dynamic imports or plugin data change.

Run focused and affected regression tests, Ruff formatting/checks, type checks and Pylint. Use markdownlint for Markdown, not Ruff. Distinguish pre-existing or environment errors from regressions. Sync CodeGraph when appropriate.

Verify importability, registration, schema, eligible steps, tests and architecture documentation before finishing. Keep inline guidance in plugin_constants.py and __main__.py consistent with the factory design.

© 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/add-new-plugin of ArduPilot/MethodicConfigurator.

Open the folder on GitHubat commit 9cd3ca1

Compare with similar skills

Add New Plugin 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.

Add New Plugin compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Add New Plugin this skillArduPilot/MethodicConfigurator163—~2.1kAutomated safety check: PassGPL-3.0
Parametersthedaviddias/Front-End-Checklist74k—~638Automated safety check: PassMIT
Handsontable Cell Editor Developerhandsontable/handsontable22k—~3.8kAutomated safety check: PassCustom licence
Editor Test Harvesterudecode/plate17k—~7.6kAutomated safety check: PassCustom licence
Java Refactoring Remove Parametergithub/awesome-copilot40k1 repos~738Automated safety check: PassMIT
Extending Hobby Smoke TestsPostHog/posthog40k—~1.5kAutomated safety check: PassCustom licence

Similar skills

  • Parameters

    thedaviddias/Front-End-Checklist

    A skill your agent uses when auditing URL structure or configuring search engine handling of filtered, sorted, or tracked URLs.

    74k GitHub stars~638 tokensUpdated 2 days ago
    Sales & SupportAuto-check passed
  • Handsontable Cell Editor Developer

    handsontable/handsontable

    Guides building a new Handsontable cell editor through its four-state lifecycle, DOM setup, viewport-aware positioning and async validation, matching the grid's existing editor classes.

    22k GitHub stars~3.8k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Mine external editor repositories for portable editor-behavior tests with ClawSweeper-style discipline: multi-pass exhaustive inventory, confidence scoring, framework-specific skip reasons…

    17k GitHub stars~7.6k tokensUpdated today
    Auto-check passed
  • Java Refactoring Remove Parameter

    github/awesome-copilot

    Official

    Refactoring using Remove Parameter in Java Language. An agent skill from github/awesome-copilot.

    40k GitHub starsUsed in 1 repo~738 tokens
    DevelopmentAuto-check passed
  • Official

    Design, extend, review, or debug PostHog Hobby end-to-end smoke tests in bin/hobby-ci.py and .github/workflows/ci-hobby.yml.

    40k GitHub stars~1.5k tokensUpdated today
    Testing & QAAuto-check passed
  • Editor Harvest Plan

    udecode/plate

    Turn an editor-test-harvester report into one lane-specific execution plan, e.g.

    17k GitHub stars~3.5k tokensUpdated today
    Auto-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

Questions about Add New Plugin

What does Add New Plugin do?

Create or extend an AMC parameter-editor plugin. An agent skill from ArduPilot/MethodicConfigurator. Add New Plugin is an agent skill from ArduPilot/MethodicConfigurator. Create or extend an AMC parameter-editor plugin.

How do I install Add New Plugin in Claude Code?

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

How do I install Add New Plugin in Codex?

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

Can I use Add New Plugin 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 add-new-plugin -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/add-new-plugin, .gemini/skills/add-new-plugin, .github/skills/add-new-plugin and .opencode/skills/add-new-plugin in your project.

What does Add New Plugin need to run?

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

Does Add New Plugin 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 Add New Plugin 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 Add New Plugin use?

Add New Plugin 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 Add New Plugin use?

About 2.1k tokens (SKILL.md is roughly 8.3k 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 Add New Plugin?

Skills that share tags, products or a category with Add New Plugin: Parameters (thedaviddias/Front-End-Checklist, 74k stars), Handsontable Cell Editor Developer (handsontable/handsontable, 22k stars), Editor Test Harvester (udecode/plate, 17k stars) and Java Refactoring Remove Parameter (github/awesome-copilot, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Add New Plugin?

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