Agent skill

Add Resolver

by devlint in devlint/GitWand

Add a format-specific resolver to GitWand core. An agent skill from devlint/GitWand.

MITAuto-check passedBackend & APIs

Install Add Resolver

skills CLI
$ npx skills add devlint/GitWand --skill add-resolver -a claude-code

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

GitHub CLI
$ gh skill install devlint/GitWand add-resolver --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/devlint/GitWand.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/add-resolver .claude/skills/add-resolver && 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-resolver
GitHub stars
180
Token cost
~1.6k tokens
SKILL.md length
421 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

Add a format-specific resolver to GitWand core. An agent skill from devlint/GitWand.

  • Works in 6 steps: Qualify the need → Create the resolver file → Wire into the dispatcher → …
  • Someone wants to add support for a new file format
  • SKILL.md covers Step 1 — Qualify the need, Step 2 — Create the resolver…, Step 3 — Wire into the… and Step 4 — Write tests, plus 3 more sections
  • Calls pnpm

What it does

Add Resolver is an agent skill from devlint/GitWand. Add a format-specific resolver to GitWand core. Use this skill whenever someone wants to add support for a new file format, file extension, lockfile, config file type, or format-specific conflict resolution strategy. Triggers: "add resolver for .prisma", "handle composer.lock conflicts", "resolve .tf files", "new format support", "add lockfile resolver", "teach GitWand about X files".

Its SKILL.md is about 1.6k 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 Backend & APIs, covering GraphQL and Dependency management. It works with Prisma and Git. The repository describes itself as: The Git client that actually resolves conflicts: 8 deterministic patterns auto-resolve the ones that were never decisions, full trace on the rest. Native (Tauri 2 + Rust), free… The licence is MIT.

When your agent uses it

  • Someone wants to add support for a new file format
  • Config file type
  • Format-specific conflict resolution strategy

Example prompts

  • “add resolver for .prisma”
  • “handle composer.lock conflicts”
  • “resolve .tf files”
  • “/add-resolver”

Requirements

  • Node.js

Workflow steps

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

  1. Qualify the need
  2. Create the resolver file
  3. Wire into the dispatcher
  4. Write tests
  5. Update the docs
  6. Validate

What it can do on your machine

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

    • pnpm

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

  • Network

    No URLs in SKILL.md. Its commands use pnpm, which can reach the network depending on how they are called.

    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 Resolver loads about 1.6k tokens when it runs. Until then it costs about 100 tokens; SKILL.md has 421 words of instructions outside code blocks.

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

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 devlint/GitWand at commit 20114ac, republished under its MIT licence (© devlint). 421 words, ~1,560 tokens.

Download SKILL.mdSave it as .claude/skills/add-resolver/SKILL.md (or your agent's skills folder).
name
add-resolver
description
Add a format-specific resolver to GitWand core. Use this skill whenever someone wants to add support for a new file format, file extension, lockfile, config file type, or format-specific conflict resolution strategy. Triggers: "add resolver for .prisma", "handle composer.lock conflicts", "resolve .tf files", "new format support", "add lockfile resolver", "teach GitWand about X files".

Skill: add-resolver

Guide the agent through adding a format-specific resolver to packages/core end to end — file creation, dispatcher wiring, tests, and docs — without missing any of the four required touch points.


Step 1 — Qualify the need

Answer these before writing any code:

  1. Format / extension? (e.g. .prisma, composer.lock, .tf, .toml)
  2. Is it a lockfile? If yes → confidence is 0.95 by convention. Lockfile conflicts are almost always trivially re-generable, so high confidence is appropriate.
  3. Resolution strategy? Examples:
    • Structured config (key = value) → merge non-conflicting keys
    • Lockfile → accept one side; file is regenerable
    • Source code → be conservative, 0.70–0.80 max
  4. Browser-compatible parsing available? packages/core must run in browsers — no Node.js imports (fs, path, child_process). If no parser lib is available, write a pure string-manipulation parser.

Confidence score guidelines:

File typeScore
Lockfile0.95
Structured config (JSON, YAML, TOML, dotenv)0.85–0.90
Source code0.70–0.80
Never exceed 0.95 unless perfectly deterministic—

Step 2 — Create the resolver file

Create packages/core/src/resolvers/<format>.ts. Follow this exact shape, which mirrors all existing resolvers in the directory:

typescript
/**
 * GitWand — <FORMAT> resolver
 *
 * Strategy: [describe the resolution strategy precisely]
 *
 * Handled cases:
 *  - [case 1]
 *  - [case 2]
 *  - [non-resolvable case → return null]
 */

// ✅ Allowed: pure string manipulation, parsing, algorithms
// ❌ FORBIDDEN: import * as fs from 'fs' / import * as path from 'path'

export interface ResolveResult {
  /** Resolved lines, or null if not resolvable */
  lines: string[] | null;
  /** Human-readable description of what was done (or why it failed) */
  reason: string;
}

/**
 * Attempts to resolve a <format> conflict.
 * Confidence: 0.XX — [justify the score here]
 */
export function tryResolve<Format>Conflict(
  baseLines: string[],
  oursLines: string[],
  theirsLines: string[],
): ResolveResult {
  // ... resolution logic ...

  return { lines: null, reason: "Non-resolvable: [reason]." };
}

Key points:

  • Zero Node.js imports — double-check every import before writing it
  • Justify the confidence score in the JSDoc comment
  • On parse failure, return lines: null rather than throwing — the dispatcher falls back gracefully when a resolver returns null

Step 3 — Wire into the dispatcher

Open packages/core/src/resolvers/dispatcher.ts and make four changes:

3a. Add a detection function in the // ─── Type detection ─── section:

typescript
/** Checks whether the file is a <format> file */
export function is<Format>File(filePath: string): boolean {
  return /\.<ext>$/i.test(filePath);
  // For exact filenames: /(?:^|[\\/])<name>$/i.test(filePath)
}

3b. Add the import at the top with the other resolver imports:

typescript
import { tryResolve<Format>Conflict } from "./<format>.js";

3c. Add the route in tryFormatAwareResolve(), keeping specificity order — more specific detections first (e.g. composer.lock before *.lock, a named lockfile before a generic JSON):

typescript
if (is<Format>File(filePath)) {
  const result = tryResolve<Format>Conflict(
    hunk.baseLines,
    hunk.oursLines,
    hunk.theirsLines,
  );
  return {
    lines: result.lines,
    reason: `[<format>] ${result.reason}`,
    resolverUsed: "<format>",
  };
}

3d. Extend the resolverUsed union in FormatResolveResult:

typescript
resolverUsed: "json" | "markdown" | ... | "<format>" | "structural" | "none";

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

Step 4 — Write tests

Create packages/core/src/__tests__/resolvers/<format>.test.ts with at least 5 cases:

typescript
import { describe, it, expect } from "vitest";
import { resolve } from "../../resolver.js";

// Case 1 — Simple resolvable conflict (happy path)
describe("<FORMAT> — non-conflicting addition", () => {
  it("auto-resolves and keeps both sides", () => { /* ... */ });
  it("reason mentions [<format>]", () => { /* ... */ });
});

// Case 2 — Irresolvable complex conflict
describe("<FORMAT> — irresolvable conflict", () => {
  it("returns resolved: false", () => { /* ... */ });
});

// Case 3 — Empty / minimal structure
describe("<FORMAT> — minimal file", () => {
  it("does not throw", () => { /* ... */ });
});

// Cases 4 & 5 — Representative real-world conflicts for this format
describe("<FORMAT> — real scenario 1", () => { /* ... */ });
describe("<FORMAT> — real scenario 2", () => { /* ... */ });

Build fixtures using real git conflict markers (<<<<<<< ours / ||||||| base / ======= / >>>>>>> theirs). Never mock the diff algorithms.


Step 5 — Update the docs

In packages/core/CLAUDE.md, add the new resolver name to the resolvers list.


Step 6 — Validate

bash
cd packages/core && pnpm test

If the resolver touches the main resolution pipeline, also run the parity probe to make sure Rust and TypeScript outputs stay in sync:

bash
cd apps/desktop && pnpm test:parity

Common mistakes to avoid

  • Forgetting step 3d — omitting the new name from the resolverUsed union causes a TypeScript error that only surfaces at build time.
  • Wrong specificity order — a generic *.lock matcher placed before pnpm-lock.yaml would silently shadow the existing pnpm resolver.
  • Importing Node.js builtins — packages/core runs in browsers and Tauri WebViews; any Node.js import will crash at runtime in those environments.
  • Throwing on parse errors — always return lines: null with a reason; let the dispatcher fall through to the text engine.

© devlint, MIT. 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/add-resolver of devlint/GitWand.

Open the folder on GitHubat commit 20114ac

Compare with similar skills

Add Resolver 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 Resolver compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Add Resolver this skilldevlint/GitWand180—~1.6kAutomated safety check: PassMIT
GitHub Opsdaymade/claude-code-skills1.4k—~3.7kAutomated safety check: PassMIT
Dependency Conflict Resolvermohitagw15856/pm-claude-skills1.4k—~709Automated safety check: PassMIT
Deskcomm Contribuirmelgarafael/DeskcommCRM4.5k—~3.6kAutomated safety check: NotesMIT
Breaking Change Analysisruby-git/ruby-git1.8k—~1.7kAutomated safety check: PassMIT
Qodo PR Resolversbusso/claudeclaw194—~4kAutomated safety check: PassMIT

Similar skills

  • GitHub Ops

    daymade/claude-code-skills

    Operates GitHub via gh CLI and REST/GraphQL — PRs, issues, Actions, repos, collaborators, org permissions, 2FA — with explicit target, authorization, and independent readback.

    1.4k GitHub stars~3.7k tokensUpdated today
    Backend & APIsAuto-check passed
  • Dependency Conflict Resolver

    mohitagw15856/pm-claude-skills

    Resolve a dependency or version conflict (npm, pip, yarn, pnpm, Maven, Go modules) step by step.

    1.4k GitHub stars~709 tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Deskcomm Contribuir

    melgarafael/DeskcommCRM

    Guia de contribuição ao DeskcommCRM para quem vai mexer no código e abrir um pull request, sobretudo de um fork.

    4.5k GitHub stars~3.6k tokensUpdated today
    DevelopmentAuto-check: notes
  • Breaking Change Analysis

    ruby-git/ruby-git

    Assesses what an API change would break before it is made, finds every usage, documents the impact and plans a deprecation or migration path.

    1.8k GitHub stars~1.7k tokensUpdated 5 days ago
    DevelopmentAuto-check passed
  • Qodo PR Resolver

    sbusso/claudeclaw

    Review and resolve PR issues with Qodo - get AI-powered code review issues and fix them interactively (GitHub, GitLab, Bitbucket, Azure DevOps)

    194 GitHub stars~4k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Dependency Resolver

    ArabelaTso/Skills-4-SE

    Identify, analyze, and manage software dependencies before deployment.

    253 GitHub stars~3.9k tokensUpdated 1 mo ago
    DevelopmentAuto-check: notes

More from devlint/GitWand

  • Add Pattern

    devlint/GitWand

    Add a new conflict-resolution pattern to GitWand core. An agent skill from devlint/GitWand.

    180 GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Add Tauri Command

    devlint/GitWand

    A skill your agent uses when the user wants to expose a Rust feature to the Vue frontend, add a Tauri IPC command, invoke something from a Vue component, or wire up any backend/frontend…

    180 GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Release

    devlint/GitWand

    Guide a clean GitWand release end-to-end: bump version, update CHANGELOG, commit, tag, and push.

    180 GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • I18n Sync

    devlint/GitWand

    Synchronise les fichiers de locale GitWand. An agent skill from devlint/GitWand.

    180 GitHub stars~1.1k tokensUpdated today
    Auto-check passed

Works with

Questions about Add Resolver

What does Add Resolver do?

Add a format-specific resolver to GitWand core. An agent skill from devlint/GitWand. Add Resolver is an agent skill from devlint/GitWand. Add a format-specific resolver to GitWand core.

When should I use Add Resolver?

Add Resolver fits situations like: someone wants to add support for a new file format; config file type; format-specific conflict resolution strategy.

How do I install Add Resolver in Claude Code?

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

How do I install Add Resolver in Codex?

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

Can I use Add Resolver 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 devlint/GitWand --skill add-resolver -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-resolver, .gemini/skills/add-resolver, .github/skills/add-resolver and .opencode/skills/add-resolver in your project.

What does Add Resolver need to run?

Going by SKILL.md and its folder, Add Resolver needs the command-line tools its instructions call (pnpm). Our summary lists: Node.js.

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

Add Resolver 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 Add Resolver use?

About 1.6k tokens (SKILL.md is roughly 6.2k 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 Resolver?

Skills that share tags, products or a category with Add Resolver: GitHub Ops (daymade/claude-code-skills, 1.4k stars), Dependency Conflict Resolver (mohitagw15856/pm-claude-skills, 1.4k stars), Deskcomm Contribuir (melgarafael/DeskcommCRM, 4.5k stars) and Breaking Change Analysis (ruby-git/ruby-git, 1.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Add Resolver?

devlint (a GitHub user) maintains it in devlint/GitWand, which has 180 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 7, 2026.

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