Agent skill

Add Op

by onnx in onnx/onnx

Add a new ONNX operator or update an existing operator to a new opset version.

Apache-2.0Auto-check passedAI & LLM Engineering

Install Add Op

skills CLI
$ npx skills add onnx/onnx --skill add-op -a claude-code

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

GitHub CLI
$ gh skill install onnx/onnx add-op --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/onnx/onnx.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/add-op .claude/skills/add-op && 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-op
GitHub stars
22k
Token cost
~1.2k tokens
SKILL.md length
313 words
Files
3 (incl. references)
Skills in repo
4
Repo updated
First seen
Licence
Apache-2.0

At a glance

Add a new ONNX operator or update an existing operator to a new opset version.

  • Works in 5 steps: Move current schema from defs.cc to… → Create new version in defs.cc with the… → Update onnx/defs/operator_sets.h → …
  • Asked to define an operator schema
  • SKILL.md covers Files to Modify, Schema Registration Pattern, Updating an Existing Operator and Code Style: Prefer Named…, plus 3 more sections
  • Calls python

What it does

Add Op is an agent skill from onnx/onnx. Add a new ONNX operator or update an existing operator to a new opset version. Use when asked to define an operator schema, register an op, add inputs/outputs/attributes to an op, move an op to old.cc, or bump an op's opset version.

Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/node-test-pattern.md` and `references/reference-impl-pattern.md`).

It sits in AI & LLM Engineering, covering Deep learning. It works with ONNX. The repository describes itself as: Open standard for machine learning interoperability. The licence is Apache-2.0.

When your agent uses it

  • Asked to define an operator schema
  • Add inputs/outputs/attributes to an op
  • Move an op to old.cc
  • Bump an ops opset version

Example prompts

  • “/add-op”

Requirements

  • Python 3

Workflow steps

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

  1. Move current schema from defs.cc to old.cc in the same domain directory
  2. Create new version in defs.cc with the new opset version number
  3. Update onnx/defs/operator_sets.h
  4. Add a version converter adapter if behavior changed
  5. Add upgrade/downgrade tests

What it can do on your machine

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

    Shell commands in SKILL.md call:

    • python

    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 Op loads about 1.2k tokens when it runs, and up to ~1.8k if it reads all its reference files. Until then it costs about 60 tokens; SKILL.md has 313 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~60
When it runs · the whole SKILL.md, loaded when a task matches
~1.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~1.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 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 onnx/onnx at commit dc30c0b, republished under its Apache-2.0 licence (© onnx). 313 words, ~1,186 tokens.

Download SKILL.mdSave it as .claude/skills/add-op/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
add-op
description
Add a new ONNX operator or update an existing operator to a new opset version. Use when asked to define an operator schema, register an op, add inputs/outputs/attributes to an op, move an op to old.cc, or bump an op's opset version.

Follow the full procedure in docs/AddNewOp.md.

Files to Modify

ComponentFile
Schema definitiononnx/defs/<domain>/defs.cc
Operator set registrationonnx/defs/operator_sets.h
Type/shape inferenceInline in schema via .TypeAndShapeInferenceFunction(...)
Function body (if applicable)Inline in schema via .FunctionBody(...)
Reference implementationonnx/reference/ops/op_<lowercase_name>.py
Node testsonnx/backend/test/case/node/<lowercase_name>.py
Shape inference teststests/python/shape_inference_test.py
Version converter adapter (if behavior changed)onnx/version_converter/adapters/<name>_<from>_<to>.h
Upgrade/downgrade teststests/python/version_converter/automatic_upgrade_test.py and automatic_downgrade_test.py

Domain subdirectories under onnx/defs/: math/, nn/, tensor/, logical/, reduction/, rnn/, sequence/, image/, text/, quantization/, controlflow/, optional/, traditionalml/, training/

Schema Registration Pattern

cpp
ONNX_OPERATOR_SET_SCHEMA(
    OperatorName,
    OPSET_VERSION,
    OpSchema()
        .SetDoc(OperatorName_verN_doc)
        .Input(0, "X", "Description", "T", OpSchema::Single, true, 1, OpSchema::Differentiable)
        .Output(0, "Y", "Description", "T", OpSchema::Single, true, 1, OpSchema::Differentiable)
        .Attr("attr_name", "Description", AttributeProto::FLOAT, default_value)
        .TypeConstraint("T", {"tensor(float)", "tensor(double)", ...}, "Description")
        .TypeAndShapeInferenceFunction(InferShapeForOperatorName)
        // Function body uses ONNX text format — see the onnxtxt skill for syntax/conventions.
        .FunctionBody(R"ONNX(
          {
            ...
          }
        )ONNX", FUNCTION_OPSET_VERSION));

Updating an Existing Operator

  1. Move current schema from defs.cc to old.cc in the same domain directory
  2. Create new version in defs.cc with the new opset version number
  3. Update onnx/defs/operator_sets.h
  4. Add a version converter adapter if behavior changed
  5. Add upgrade/downgrade tests
Avoiding duplication between defs.cc and old.cc

When moving a schema to old.cc, avoid significant code/documentation duplication:

  • Extract common logic (doc strings, type constraint lists, shape inference helpers) into shared functions in the domain's header or utils file.
  • Use parameterized helpers when versions differ only slightly (e.g., expanded type list, additional optional input).
  • Some duplication is acceptable when sharing would create overly complicated logic. Prefer clarity over DRY when the alternative makes either version harder to understand independently.

Code Style: Prefer Named Functions

Define shape inference functions and function body builders as separate named functions rather than inline lambdas within ONNX_OPERATOR_SET_SCHEMA. The macro expansion makes setting breakpoints on inline lambdas unreliable in debuggers.

cpp
// PREFERRED: named function — easy to set breakpoints
static void InferShapeForMyOp(InferenceContext& ctx) {
    propagateElemTypeFromInputToOutput(ctx, 0, 0);
    // ...
}

ONNX_OPERATOR_SET_SCHEMA(
    MyOp, 21,
    OpSchema()
        // ...
        .TypeAndShapeInferenceFunction(InferShapeForMyOp));

Writing Tests

For test fixtures, prefer the ONNX text format via onnx.parser / C++ OnnxParser. See the onnxtxt skill for the per-file recommendations table, body-subgraph idioms, the argument-order convention, and the unk__* materialization gotcha. (Empirical: PR #7962 cut ~58–70% of test LOC by switching.)

After Making Changes

bash
python onnx/defs/gen_doc.py
python onnx/backend/test/stat_coverage.py
python onnx/gen_proto.py  # only if proto changed
lintrunner -a --output oneline

References

© onnx, Apache-2.0. 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 2 other files (references) in .agents/skills/add-op of onnx/onnx.

  • SKILL.md
  • references/node-test-pattern.md
  • references/reference-impl-pattern.md

Open the folder on GitHubat commit dc30c0b

Compare with similar skills

Add Op 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 Op compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Add Op this skillonnx/onnx22k—~1.2kAutomated safety check: PassApache-2.0
Segment Anything Model GuideOrchestra-Research/AI-Research-SKILLs13k8 repos~3.3kAutomated safety check: PassMIT
Technology Selectiondotnet/skills5.6k1 repos~2.1kAutomated safety check: PassMIT
Quark Torch Quant Perfamd/Quark181—~3kAutomated safety check: PassMIT
Model Builderqualcomm/qai-appbuilder247—~4.1kAutomated safety check: PassBSD-3-Clause
Embedded AI Deploymentmatlab/agent-skills-playground183—~3.4kAutomated safety check: PassCustom licence

Similar skills

  • Segment Anything Model Guide

    Orchestra-Research/AI-Research-SKILLs

    Guide to using Meta's Segment Anything Model for zero-shot image segmentation with point, box or mask prompts, or automatic mask generation.

    13k GitHub starsUsed in 8 repos~3.3k tokens
    AI & LLM EngineeringAuto-check passed
  • Official

    Guides technology selection and implementation of AI and ML features in .NET 8+ applications using ML.NET, Microsoft.Extensions.AI (MEAI), Microsoft Agent Framework (MAF), GitHub Copilot SDK, ONNX…

    5.6k GitHub starsUsed in 1 repo~2.1k tokens
    AI & LLM EngineeringAuto-check passed
  • Run, resume, monitor, diagnose, and report Quark Quant-Perf workflows for PyTorch and HuggingFace transformers models.

    181 GitHub stars~3k tokensUpdated 11 days ago
    AI & LLM EngineeringAuto-check passed
  • Model Builder

    qualcomm/qai-appbuilder

    QAI ModelBuilder. An agent skill from qualcomm/qai-appbuilder.

    247 GitHub stars~4.1k tokensUpdated today
    AI & LLM EngineeringAuto-check passed
  • Embedded AI Deployment

    matlab/agent-skills-playground

    Deploy AI models to embedded hardware using MathWorks tools (MATLAB, Simulink, Embedded Coder).

    183 GitHub stars~3.4k tokensUpdated today
    AI & LLM EngineeringAuto-check passed
  • Official

    Patterns and pitfalls for the ONNX-domain Attention operator's CUDA implementation in ONNX Runtime: dispatch cascade, eligibility limits, mask and bias kernels, and test routing.

    22k GitHub stars~6.5k tokensUpdated today
    AI & LLM EngineeringAuto-check passed

More from onnx/onnx

  • Add a function body definition to an ONNX operator, defining how it decomposes into simpler ops.

    22k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Add or update type and shape inference for an ONNX operator.

    22k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Onnxtxt

    onnx/onnx

    Read or write ONNX text format ("onnxtxt"). An agent skill from onnx/onnx.

    22k GitHub stars~1.3k tokensUpdated today
    Auto-check passed

Works with

Questions about Add Op

What does Add Op do?

Add a new ONNX operator or update an existing operator to a new opset version. Add Op is an agent skill from onnx/onnx. Add a new ONNX operator or update an existing operator to a new opset version.

When should I use Add Op?

Add Op fits situations like: asked to define an operator schema; add inputs/outputs/attributes to an op; move an op to old.cc; bump an ops opset version.

How do I install Add Op in Claude Code?

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

How do I install Add Op in Codex?

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

Can I use Add Op 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 onnx/onnx --skill add-op -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-op, .gemini/skills/add-op, .github/skills/add-op and .opencode/skills/add-op in your project.

What does Add Op need to run?

Going by SKILL.md and its folder, Add Op needs the command-line tools its instructions call (python). Our summary lists: Python 3.

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

Add Op is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Add Op use?

About 1.2k tokens (SKILL.md is roughly 4.7k 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 572 tokens, read only when the agent opens those files.

What are the alternatives to Add Op?

Skills that share tags, products or a category with Add Op: Segment Anything Model Guide (Orchestra-Research/AI-Research-SKILLs, 13k stars), Technology Selection (dotnet/skills, 5.6k stars), Quark Torch Quant Perf (amd/Quark, 181 stars) and Model Builder (qualcomm/qai-appbuilder, 247 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Add Op?

onnx (a GitHub organization) maintains it in onnx/onnx, which has 21,569 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 9, 2026.

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