Agent skill

Image Matcher Integration

by Vincentqyw in Vincentqyw/image-matching-webui

Adds a new local feature matching model from a GitHub repository to the image-matching-webui project as a working WebUI option.

Apache-2.0Auto-check passedAI & LLM Engineering

Install Image Matcher Integration

skills CLI
$ npx skills add Vincentqyw/image-matching-webui --skill integrate-matcher -a claude-code

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

GitHub CLI
$ gh skill install Vincentqyw/image-matching-webui integrate-matcher --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/Vincentqyw/image-matching-webui.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/integrate-matcher .claude/skills/integrate-matcher && 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
integrate-matcher
GitHub stars
1.3k
Token cost
~4.8k tokens
SKILL.md length
1,580 words
Files
1
Skills in repo
2
Repo updated
First seen
Licence
Apache-2.0

At a glance

Adds a new local feature matching model from a GitHub repository to the image-matching-webui project as a working WebUI option.

  • Works in 9 steps: Analyze the Target Repository → Add Git Submodule → Create Matcher Implementation → …
  • Adding a new feature matching model to image-matching-webui
  • SKILL.md covers Prerequisites, Step-by-Step Integration Guide, File Change Summary and Reference Implementations
  • Calls git, python and gh; reaches github.com and claude.com

What it does

Given the URL of a feature matching repository, the skill follows the project's established pattern for integrating a matcher. It starts by cloning the repository to a temporary folder for analysis: whether the matcher is dense or standalone, taking raw images, or sparse, taking keypoints and descriptors; how the model class is initialized and run; what it outputs; where weights are downloaded; its dependencies; and its variants. It also checks for mixed-precision and device issues on MPS and CPU.

Next the repository is added as a git submodule under `imcui/third_party/`, using the original repository name or a fork in the project's organization when one exists. Third-party code there is pinned and must never be edited in place; if a compatibility fix is needed, the fix goes into a fork and the submodule URL is pointed at it. You must be working in the `image-matching-webui` project root, and the target must be a local feature matching method.

When your agent uses it

  • Adding a new feature matching model to image-matching-webui
  • Classifying a matcher as dense or sparse before wiring it in
  • Fixing a dependency compatibility problem without editing third-party submodules

Example prompts

  • “Integrate the matcher from this GitHub repo into image-matching-webui.”
  • “Check whether this feature matching method is dense or sparse and what inputs it needs.”
  • “The new matcher breaks with the current kornia version. Handle it the way the project expects.”

Requirements

  • A checkout of the image-matching-webui project
  • Git with submodule support

Workflow steps

9 steps, taken from the step headings in SKILL.md.

  1. Analyze the Target Repository
  2. Add Git Submodule
  3. Create Matcher Implementation
  4. Add Matcher Configuration
  5. Handle Platform Compatibility
  6. Update README.md Algorithm Table
  7. Pre-Commit Check (MANDATORY)
  8. Verification Checklist
  9. Commit and Create PR

What it can do on your machine

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

    • git
    • python
    • gh
    • ruff

    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:

    • github.com
    • claude.com

    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

Image Matcher Integration loads about 4.8k tokens when it runs. Until then it costs about 49 tokens; SKILL.md has 1,580 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~49
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 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 Vincentqyw/image-matching-webui at commit aa4a6d0, republished under its Apache-2.0 licence (© Vincentqyw). 1,580 words, ~4,797 tokens.

Download SKILL.mdSave it as .claude/skills/integrate-matcher/SKILL.md (or your agent's skills folder).
name
integrate-matcher
description
Integrate a new image matching model into the image-matching-webui project. Invoke when user provides a GitHub repo URL of a feature matching method and asks to add/integrate it.

Integrate Matcher into image-matching-webui

This skill automates the integration of a new local feature matching method into the image-matching-webui project. Given a GitHub repository URL, it follows the project's established patterns to add the matcher as a fully functional option in the WebUI.

Prerequisites

  • The target repository must be a local feature matching method (sparse or standalone)
  • You must be working inside the image-matching-webui project root

Step-by-Step Integration Guide

Step 1: Analyze the Target Repository
  1. Clone the repo to /tmp/<repo-name> for analysis (do NOT add as submodule yet)
  2. Identify the matcher type:
    • Dense/Standalone matcher: Takes raw images as input, performs detect+describe+match internally (e.g., LoMa, RoMa, LoFTR). required_inputs = ["image0", "image1"]
    • Sparse matcher: Takes keypoints+descriptors as input, performs matching only (e.g., LightGlue, SuperGlue). required_inputs includes keypoints0, descriptors0, etc.
  3. Find the core model class and its API:
    • How to initialize the model (constructor args, config options)
    • How to run inference (forward method signature)
    • What the model outputs (keypoints, matches, scores, etc.)
    • Model weight download URLs
  4. Check dependencies in pyproject.toml or requirements.txt
  5. Identify model variants (e.g., different sizes: B/L/G/R)
  6. Check for device/amp issues:
    • Does the model use torch.autocast or mixed precision (mp, amp)?
    • Does it manage its own device placement (like LoMa's loma.device)?
    • On MPS/CPU, does it produce dtype mismatches?
Step 2: Add Git Submodule
bash
git submodule add <repo-url> imcui/third_party/<RepoName>
  • Use the original repo name (PascalCase) as the submodule directory name
  • If the repo has a fork in the project's org (e.g., Vincentqyw/xxx or agipro/xxx), prefer the fork
⚠️ CRITICAL: Never modify third_party code directly

imcui/third_party/ contains pinned third-party submodules — you are NOT the owner of this code. If a dependency needs a compatibility fix (e.g., API changes in PyTorch/kornia, import path changes):

  1. Fork the original repo to the agipro GitHub account
  2. Apply the fix in the fork and push
  3. Replace the submodule URL in the main repo to point to the fork:
    bash
    git submodule deinit -f imcui/third_party/<RepoName>
    git rm -f imcui/third_party/<RepoName>
    rm -rf .git/modules/imcui/third_party/<RepoName>
    git submodule add https://github.com/agipro/<RepoName>.git imcui/third_party/<RepoName>
  4. Update .gitmodules — the URL must point to the fork

Example: EfficientLoFTR was forked to agipro/EfficientLoFTR to fix a kornia.utils.grid → kornia.utils import change required by kornia 0.8+.

Step 3: Create Matcher Implementation

Create imcui/hloc/matchers/<matcher-name>.py following these rules:

3.1 Import Pattern
python
import sys
from pathlib import Path

from .. import logger
from ..utils.base_model import BaseModel

# Add third_party to sys.path for import
<matcher>_path = Path(__file__).parent / "../../third_party/<RepoName>/src"
sys.path.append(str(<matcher>_path))

# Import the model class
from <module> import <ModelClass>
  • If the third_party repo has src/ as the package root, append <path>/src
  • Some repos put the package directly at root level — adjust accordingly
3.2 Class Definition

The class MUST:

  • Inherit from BaseModel
  • Be the only BaseModel subclass in the file (the dynamic_load function asserts this)
  • Define default_conf dict with all configurable parameters
  • Define required_inputs list
python
class MatcherName(BaseModel):
    default_conf = {
        "name": "two_view_pipeline",
        "model_name": "<default_variant>",
        "max_keypoints": 2048,
        # ... other config
    }
    required_inputs = [
        "image0",
        "image1",
        # For sparse matchers, also include:
        # "keypoints0", "scores0", "descriptors0",
        # "keypoints1", "scores1", "descriptors1",
    ]
3.3 _init Method
  • Use self.conf (not the conf parameter) to access merged config
  • Log model loading with logger.info()
  • Handle model weight downloading:
    • If weights are on HuggingFace: use self._download_model(repo_id=MODEL_REPO_ID, filename=...)
    • If weights are auto-downloaded by the model (e.g., torch.hub), let it handle
    • If weights need manual download, document the URL
  • Platform compatibility: On non-CUDA devices, disable mixed precision:
    python
    if not torch.cuda.is_available():
        # Disable mp/amp for CPU/MPS compatibility
3.4 _forward Method

For standalone matchers (input: raw images):

The data dict contains preprocessed tensors:

  • data["image0"]: shape (1, C, H, W), float32, range [0, 1]
  • data["image1"]: shape (1, C, H, W)`, float32, range [0, 1]

If the model expects PIL images or file paths, convert:

python
img0 = data["image0"].cpu().numpy().squeeze() * 255
img0 = img0.transpose(1, 2, 0)  # CHW -> HWC
img0 = Image.fromarray(img0.astype("uint8"))

For sparse matchers (input: keypoints + descriptors):

python
# Repackage data for the model's expected format
input = {
    "image0": {"image": data["image0"], "keypoints": data["keypoints0"], ...},
    "image1": {"image": data["image1"], "keypoints": data["keypoints1"], ...},
}
return self.net(input)
3.5 Output Format

The _forward method MUST return a dict with these keys:

Dense matchers that output matched keypoints only:

python
pred = {
    "keypoints0": kpts0,      # torch.Tensor, shape (N, 2), pixel coords in resized image
    "keypoints1": kpts1,      # torch.Tensor, shape (N, 2)
    "mconf": confidence,      # torch.Tensor, shape (N,), match confidence scores
}

Dense matchers that can separate detected vs matched keypoints (PREFERRED):

python
pred = {
    "keypoints0": all_kpts0,     # All detected keypoints (for UI "Keypoints" display)
    "keypoints1": all_kpts1,     # All detected keypoints
    "mkeypoints0": matched_kpts0, # Matched keypoints (for UI match lines)
    "mkeypoints1": matched_kpts1, # Matched keypoints
    "mconf": confidence,          # Match confidence scores
}

Sparse matchers (LightGlue-style):

python
# Return the model's raw output — match_dense.py handles the rest
return self.net(input)

Key output rules:

  • keypoints0/1: ALL detected keypoints (shown in UI "Open for More: Keypoints")
  • mkeypoints0/1: Only MATCHED keypoints (shown as match lines in UI)
  • If mkeypoints0/1 is missing, match_dense.py falls back to keypoints0/1
  • Coordinates must be in pixel space of the resized image (not normalized [-1,1])
  • mconf should be real confidence scores (not all-ones)
Step 4: Add Matcher Configuration
4.1 imcui/hloc/configs/matchers.py

Add a configuration entry for each model variant:

python
"<matcher-name>": {
    "output": "matches-<matcher-name>",
    "model": {
        "name": "<matcher-module-name>",  # Must match the .py filename in matchers/
        "model_name": "<variant>",         # Passed as conf["model_name"]
        "max_keypoints": 2048,
        # ... other model-specific config
    },
    "preprocessing": {
        "grayscale": False,     # True for LoFTR-style; False for most modern matchers
        "force_resize": True,
        "resize_max": 1024,
        "width": 640,
        "height": 480,
        "dfactor": 8,          # Image dimensions must be divisible by this
    },
},

Key rules:

  • "name" in model must match the Python filename (e.g., "loma" → loma.py)
  • Each model variant gets its own top-level entry (e.g., loma-b, loma-l, loma-g)
  • preprocessing.grayscale: Set True only for models that expect 1-channel input (e.g., LoFTR)
  • preprocessing.dfactor: Ensure resized dimensions are divisible by this value
4.2 config/app.yaml (local dev) AND imcui/config/app.yaml (package default)

BOTH files must be updated identically. Add an entry under matcher_zoo:

yaml
<DisplayName>:
  matcher: <matcher-config-name>    # Must match key in matchers.py
  standalone: true                   # true = takes two images directly (no separate extractor needed)
  skip_ci: false                     # DEFAULT: false. Only set to true for heavy matchers (see rule below)
  info:
    name: <DisplayName>              # Display name in WebUI dropdown
    source: "Venue Year"             # e.g., "ECCV 2026", "ICCV 2023"
    paper: <paper-url>               # arXiv or published paper URL
    github: <github-url>             # Official GitHub repo
    display: true                    # Whether to show in WebUI
    efficiency: medium               # low (heavy), medium, high (fast)

Key rules:

  • standalone: true means the matcher takes two raw images directly (no separate feature extractor needed)
  • standalone: false means the matcher requires a feature extractor (e.g., SuperPoint+LightGlue)
  • For feature+matcher combos, use <extractor>+<matcher> format (e.g., superpoint+lightglue)
  • Set enable: false for very heavy models that most users won't use by default
  • CRITICAL: Both config/app.yaml and imcui/config/app.yaml must be kept in sync
skip_ci rule

skip_ci defaults to false — you can omit the field entirely for most matchers. Only set skip_ci: true when the model is too heavy to run in CI (GitHub Actions CPU-only Ubuntu runner with 7GB RAM):

Conditionskip_ci
Lightweight matcher (e.g., LightGlue, SuperGlue, XFeat, ALIKED-based)false (or omit)
Heavy dense matcher prone to CI OOM/timeout (e.g., RoMa, DKM, GIM, Mast3R, LoMa-L/G/R, MINIMA large)true

Rule of thumb: if the model has variants like B/L/G/R, the "B" (base) variant usually passes CI, larger ones may not. When unsure, omit skip_ci (defaults to false) and let CI tell you — if it OOMs, set it to true in a follow-up commit.

Step 5: Handle Platform Compatibility

Common issues and fixes:

5.1 Mixed Precision (MP/AMP) Issues

On MPS/CPU, torch.autocast with float16/bfloat16 causes:

  • RuntimeError: Input type (c10::Half) and bias type (float) should be the same
  • RuntimeError: Input type (MPSFloatType) and weight type (torch.FloatTensor) should be the same

Fix pattern (before importing third-party code):

python
# Patch module-level amp_dtype before import
import <module>.device as _device
if not torch.cuda.is_available():
    _device.amp_dtype = torch.float32

# Also patch submodule local bindings
import <module>.submod as _submod
if not torch.cuda.is_available():
    _submod.amp_dtype = torch.float32

After model construction:

python
if not torch.cuda.is_available():
    cfg = dataclasses.replace(cfg, mp=False)
    for module in self.net.modules():
        if hasattr(module, "amp"):
            module.amp = False
5.2 Device Mismatch Issues

If the model manages its own device (like LoMa's loma.device):

python
# Override .to() to keep model on its expected device
def to(self, device=None, **kwargs):
    return super().to(<model_expected_device>, **kwargs)
5.3 Inference Mode vs No Grad

If a model uses @torch.inference_mode() but you need to pass its outputs to another module that requires grad tracking:

python
with torch.no_grad():
    output = model.detect_and_describe(...)
    output = output.clone()  # Detach from inference mode graph
Show full SKILL.md (636 more words)Show less
Step 6: Update README.md Algorithm Table

The README.md contains a "The tool currently supports..." table listing all algorithms with their support status.

6.1 Table Format
markdown
| Algorithm        | Supported | Conference/Journal | Year | GitHub Link |
|------------------|-----------|--------------------|------|-------------|
| LoMa             | ✅ | ECCV    | 2026 | [Link](https://github.com/davnords/LoMa) |
| RIPE             | ✅ | ICCV    | 2025 | [Link](https://github.com/fraunhoferhhi/RIPE) |

Rows are sorted by year descending, then alphabetically by algorithm name within the same year.

6.2 Rules
ScenarioAction
Algorithm exists with ❌Change to ✅
Algorithm not in tableAdd new row, maintaining sort order
Algorithm already has ✅Skip (no change needed)
6.3 Example

After integrating "DaD" published at ARXIV 2025:

markdown
| DaD            | ✅ | ARXIV   | 2025 | [Link](https://github.com/Parskatt/dad) |

Insert between RIPE (ICCV 2025) and MINIMA (ARXIV 2024).

Step 7: Pre-Commit Check (MANDATORY)

Before committing, pre-commit MUST pass. This is non-negotiable — commits that fail pre-commit will be rejected at the PR stage.

bash
# Run ALL pre-commit hooks on all files
pre-commit run -a

# Or run specific hooks if you only changed certain files
pre-commit run ruff --all-files       # Python linting
pre-commit run mypy --all-files       # Type checking (if new Python code)

Common issues and fixes:

HookCommon failureFix
ruffunused imports, line too longRemove unused imports, wrap long lines
ruff-formatinconsistent indentationLet ruff format: ruff format <file>
mypymissing type annotationsAdd type hints to new functions
trailing-whitespaceblank lines with spacesStrip trailing whitespace
check-yamlinvalid YAML syntaxFix indentation/quoting in app.yaml
end-of-file-fixermissing newline at EOFAdd trailing newline

If pre-commit run -a fails, fix all errors before proceeding to commit. Do NOT skip hooks with --no-verify.

Step 8: Verification Checklist

After integration and pre-commit pass, verify:

  1. Import test: python -c "from imcui.hloc.matchers import <name>"
  2. Model loading: The model loads without errors on CPU/MPS/CUDA
  3. Inference test: Run matching on a test image pair
  4. WebUI test: python app.py → select the matcher → run matching
  5. Keypoints display: UI "Open for More: Keypoints" shows detected keypoints
  6. Match lines display: UI shows correct match lines between images
  7. Both config files: config/app.yaml and imcui/config/app.yaml are identical for the new matcher
  8. Pre-commit passes: pre-commit run -a exits with zero
Step 9: Commit and Create PR

Once pre-commit passes and all verification checks are green:

bash
# Stage the changes
git add .gitmodules imcui/third_party/<RepoName>
git add imcui/hloc/matchers/<name>.py
git add imcui/hloc/configs/matchers.py
git add imcui/config/app.yaml
git add config/app.yaml
git add README.md

# Commit with a descriptive message following convention
git commit -m "feat: integrate <MatcherName>

Add <MatcherName> matcher from <venue> <year>.

- Add submodule: imcui/third_party/<RepoName>
- Add matcher implementation: imcui/hloc/matchers/<name>.py
- Add matcher config entries
- Update app.yaml matcher zoo (both package and user configs)
- Update README.md algorithm table

Co-Authored-By: Claude <noreply@anthropic.com>"

# Push and create PR
git push origin main
gh pr create --title "feat: integrate <MatcherName>" \
  --body "Integrate <MatcherName> matcher from <paper-link>.

## Changes
- [x] Submodule added
- [x] Matcher implementation
- [x] Config entries in both app.yaml files
- [x] README.md updated
- [x] Pre-commit passes

## Tested on
- [ ] CPU
- [ ] CUDA
- [ ] MPS

🤖 Generated with [Claude Code](https://claude.com/claude-code)"

Important notes:

  • Use feat: prefix for new matcher integrations (following conventional commits)
  • Always include Co-Authored-By: Claude <noreply@anthropic.com> in commit messages
  • End PR body with 🤖 Generated with [Claude Code](https://claude.com/claude-code)
  • If CI fails after pushing, check the logs — if it's an OOM on your new matcher, set skip_ci: true in a follow-up commit

File Change Summary

For each integration, these files are typically modified:

FileActionDescription
.gitmodulesModifyAdd submodule entry
imcui/third_party/<RepoName>AddGit submodule
imcui/hloc/matchers/<name>.pyCreateMatcher implementation
imcui/hloc/configs/matchers.pyModifyAdd matcher config entries
config/app.yamlModifyAdd WebUI display config
imcui/config/app.yamlModifyAdd WebUI display config (must match config/app.yaml)
README.mdModifyUpdate supported algorithms table (add row or flip ❌→✅)

Before committing all changes, run pre-commit run -a — all hooks must pass.

Reference Implementations

PatternFileDescription
Dense standaloneimcui/hloc/matchers/roma.pyRoMa — raw images → matched keypoints
Dense standalone + separate detected/matched kptsimcui/hloc/matchers/loma.pyLoMa — separates all detected from matched keypoints
Sparse matcherimcui/hloc/matchers/lightglue.pyLightGlue — keypoints+descriptors → matches
Detector-only + external descriptorimcui/hloc/extractors/raco.pyRaCo — detects keypoints, delegates descriptor to ALIKED
RaCo pattern: detector that needs a descriptor extractor

Some models are keypoint detectors only — they output keypoints/scores but no descriptors. The RaCo integration demonstrates chaining RaCo detection with ALIKED description:

  1. Create an extractor (not matcher) in imcui/hloc/extractors/raco.py
  2. In _forward, first run RaCo detection → keypoints, then run ALIKED descriptor on those keypoints
  3. Register in configs/extractors.py with max_num_keypoints / nms_radius parameters
  4. Register a matcher config in configs/matchers.py with features: "raco-aliked" — a custom LightGlue+ checkpoint trained for RaCo+ALIKED features
  5. In app.yaml, the entry uses feature: raco (the extractor) + matcher: raco-lightglue (the LightGlue variant)
Fork priority for third-party fixes

When a submodule needs a compatibility fix:

Repo ownerAction
Vincentqyw/*Push fix directly to the Vincentqyw fork
agipro/*Push fix directly to the agipro fork
Anyone elseFork to agipro, apply fix, switch submodule URL

Always verify push succeeded with git log --oneline -1 in the submodule directory.

Kornia compatibility (kornia >= 0.8)

Kornia 0.8.0 removed the kornia.utils.grid submodule. create_meshgrid moved to kornia.utils (0.8.0-0.8.2), then to kornia.geometry (0.8.3+). When fixing submodule imports, use this future-proof pattern:

python
try:
    from kornia.geometry import create_meshgrid  # kornia >= 0.8.3
except ImportError:
    from kornia.utils import create_meshgrid  # kornia < 0.8.3

© Vincentqyw, 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

Just SKILL.md in .claude/skills/integrate-matcher of Vincentqyw/image-matching-webui.

Open the folder on GitHubat commit aa4a6d0

Compare with similar skills

Image Matcher Integration 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.

Image Matcher Integration compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Image Matcher Integration this skillVincentqyw/image-matching-webui1.3k—~4.8kAutomated safety check: PassApache-2.0
Matlab Integrate Pytorch Visionmatlab/matlab-agentic-toolkit1.1k—~3.7kAutomated safety check: PassCustom licence
Fix Art IssuesOpenPipe/ART11k—~840Automated safety check: NotesApache-2.0
Performance Optimizationalbumentations-team/AlbumentationsX567—~1.7kAutomated safety check: PassAGPL-3.0
Issue Triageintel/torch-xpu-ops115—~2.5kAutomated safety check: PassApache-2.0
Fix Issuepytorch/pytorch104k—~2.3kAutomated safety check: PassCustom licence

Similar skills

  • Matlab Integrate Pytorch Vision

    matlab/matlab-agentic-toolkit

    Creates MATLAB interfaces to Python image processing and computer vision models from GitHub repositories or pip-installable packages using MPyReq.

    1.1k GitHub stars~3.7k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • Fix Art Issues

    OpenPipe/ART

    Fix a GitHub issue on OpenPipe/ART and open a PR. An agent skill from OpenPipe/ART.

    11k GitHub stars~840 tokensUpdated today
    AI & LLM EngineeringAuto-check: notes
  • Performance Optimization

    albumentations-team/AlbumentationsX

    Systematic performance audit for AlbumentationsX runtime code.

    567 GitHub stars~1.7k tokensUpdated today
    AI & LLM EngineeringAuto-check passed
  • Issue Triage

    intel/torch-xpu-ops

    Official

    Shallow, text-only triage of a GitHub issue on pytorch or torch-xpu-ops.

    115 GitHub stars~2.5k tokensUpdated today
    AI & LLM EngineeringAuto-check passed
  • Fix Issue

    pytorch/pytorch

    Fix bugs reported in PyTorch GitHub issues by reproducing, root-causing, and implementing a fix in the local working tree.

    104k GitHub stars~2.3k tokensUpdated today
    AI & LLM EngineeringAuto-check passed
  • Homepage Generator

    wanshuiyin/ARIS-in-AI-Offer

    Generate a fact-checked academic personal homepage from a CV, optionally augmented by an existing manual homepage and an assets directory.

    582 GitHub stars~4.8k tokensUpdated 3 days ago
    AI & LLM EngineeringAuto-check: notes

More from Vincentqyw/image-matching-webui

  • Hugging Face Spaces Deploy

    Vincentqyw/image-matching-webui

    Releases a new imcui version on GitHub, then deploys it to a test and a production Hugging Face Space from a dedicated huggingface branch.

    1.3k GitHub stars~721 tokensUpdated 4 days ago
    Auto-check passed

Works with

Questions about Image Matcher Integration

What does Image Matcher Integration do?

Adds a new local feature matching model from a GitHub repository to the image-matching-webui project as a working WebUI option. Given the URL of a feature matching repository, the skill follows the project's established pattern for integrating a matcher. It starts by cloning the repository to a temporary folder for analysis: whether the matcher is dense or standalone, taking raw images, or sparse, taking keypoints and descriptors; how the model class is initialized and run; what it outputs; where weights are downloaded; its dependencies; and its variants.

When should I use Image Matcher Integration?

Image Matcher Integration fits situations like: adding a new feature matching model to image-matching-webui; classifying a matcher as dense or sparse before wiring it in; fixing a dependency compatibility problem without editing third-party submodules.

How do I install Image Matcher Integration in Claude Code?

Run `npx skills add Vincentqyw/image-matching-webui --skill integrate-matcher -a claude-code`. Or copy the skill folder (.claude/skills/integrate-matcher in Vincentqyw/image-matching-webui) into .claude/skills/integrate-matcher in your project. Claude Code loads it when a task matches its description.

How do I install Image Matcher Integration in Codex?

Run `npx skills add Vincentqyw/image-matching-webui --skill integrate-matcher -a codex`. Or copy the skill folder (.claude/skills/integrate-matcher in Vincentqyw/image-matching-webui) into .agents/skills/integrate-matcher in your project. Codex loads it when a task matches its description.

Can I use Image Matcher Integration 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 Vincentqyw/image-matching-webui --skill integrate-matcher -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/integrate-matcher, .gemini/skills/integrate-matcher, .github/skills/integrate-matcher and .opencode/skills/integrate-matcher in your project.

What does Image Matcher Integration need to run?

Going by SKILL.md and its folder, Image Matcher Integration needs the command-line tools its instructions call (git, python, gh and ruff). Our summary lists: A checkout of the image-matching-webui project; Git with submodule support.

Does Image Matcher Integration access the network?

SKILL.md names 2 domains. In commands or code: github.com and claude.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Image Matcher Integration 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 Image Matcher Integration use?

Image Matcher Integration 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 Image Matcher Integration 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 Image Matcher Integration?

Skills that share tags, products or a category with Image Matcher Integration: Matlab Integrate Pytorch Vision (matlab/matlab-agentic-toolkit, 1.1k stars), Fix Art Issues (OpenPipe/ART, 11k stars), Performance Optimization (albumentations-team/AlbumentationsX, 567 stars) and Issue Triage (intel/torch-xpu-ops, 115 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Image Matcher Integration?

Vincentqyw (a GitHub user) maintains it in Vincentqyw/image-matching-webui, which has 1,308 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 5, 2026.

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