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.
Add a new conflict-resolution pattern to GitWand core. An agent skill from devlint/GitWand.
$ npx skills add devlint/GitWand --skill add-pattern -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install devlint/GitWand add-pattern --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/devlint/GitWand.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/add-pattern .claude/skills/add-pattern && rm -rf skills-srcUse ~/.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/
Install the "add-pattern" agent skill from https://github.com/devlint/GitWand/tree/main/.claude/skills/add-pattern into .claude/skills/add-pattern/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-pattern", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/devlint/GitWand/tree/main/.claude/skills/add-patternType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add devlint/GitWand --skill add-pattern -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install devlint/GitWand add-pattern --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/devlint/GitWand.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/add-pattern .agents/skills/add-pattern && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "add-pattern" agent skill from https://github.com/devlint/GitWand/tree/main/.claude/skills/add-pattern into .agents/skills/add-pattern/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-pattern", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add devlint/GitWand --skill add-pattern -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install devlint/GitWand add-pattern --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/devlint/GitWand.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/add-pattern .cursor/skills/add-pattern && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "add-pattern" agent skill from https://github.com/devlint/GitWand/tree/main/.claude/skills/add-pattern into .cursor/skills/add-pattern/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-pattern", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/devlint/GitWand.git --path .claude/skills/add-pattern--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add devlint/GitWand --skill add-pattern -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install devlint/GitWand add-pattern --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/devlint/GitWand.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/add-pattern .gemini/skills/add-pattern && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "add-pattern" agent skill from https://github.com/devlint/GitWand/tree/main/.claude/skills/add-pattern into .gemini/skills/add-pattern/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-pattern", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install devlint/GitWand add-patternInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add devlint/GitWand --skill add-pattern -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/devlint/GitWand.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/add-pattern .github/skills/add-pattern && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "add-pattern" agent skill from https://github.com/devlint/GitWand/tree/main/.claude/skills/add-pattern into .github/skills/add-pattern/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-pattern", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add devlint/GitWand --skill add-pattern -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install devlint/GitWand add-pattern --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/devlint/GitWand.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/add-pattern .opencode/skills/add-pattern && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "add-pattern" agent skill from https://github.com/devlint/GitWand/tree/main/.claude/skills/add-pattern into .opencode/skills/add-pattern/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-pattern", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
add-patternAdd a new conflict-resolution pattern to GitWand core. An agent skill from devlint/GitWand.
Add Pattern is an agent skill from devlint/GitWand. Add a new conflict-resolution pattern to GitWand core. Use this skill whenever someone wants to add a pattern, resolution rule, new conflict case, new heuristic, teach the resolver to handle a new kind of conflict automatically, or extend the pattern registry with a new ConflictType.
Its SKILL.md is about 2.3k 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. It works with 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.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 20114ac. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
pnpmFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Add Pattern loads about 2.3k tokens when it runs. Until then it costs about 74 tokens; SKILL.md has 566 words of instructions outside code blocks.
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.
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.
The full file from devlint/GitWand at commit 20114ac, republished under its MIT licence (© devlint). 566 words, ~2,283 tokens.
.claude/skills/add-pattern/SKILL.md (or your agent's skills folder).Guide the agent through every step needed to add a new conflict-resolution pattern from end to end, touching all four required locations in the right order.
Ask the following questions up front. Do not start editing files until you have clear answers.
Name — What is the snake_case name for this pattern?
(e.g. comment_only_change, empty_block_insertion)
Trigger condition — In plain English, when does this pattern apply?
Be precise: what must be true of oursLines, theirsLines, and
optionally baseLines for the pattern to fire?
Resolution strategy — What should the merged output look like when this pattern fires? (accept ours, accept theirs, union, base + additions, etc.)
Confidence score — What typeClassification value (0–100) do you
propose, and why? What dataRisk value (0–100, where 0 = safe)?
Use the existing patterns as a reference:
same_change / one_side_change / delete_no_change → typeClassification 100, dataRisk 0non_overlapping → typeClassification 90, dataRisk 20whitespace_only / reorder_only / insertion_at_boundary → typeClassification 85–90, dataRisk 8–20value_only_change → typeClassification 72–88, dataRisk 25Priority — What numeric priority should this pattern have? Lower = evaluated earlier. Current assignments:
same_change, 20 delete_no_change, 30 one_side_changenon_overlapping, 50 whitespace_only, 55 reorder_onlyinsertion_at_boundary, 60 value_only_change, 999 complex
Pick a value that places it at the right point in the evaluation chain.requires — Does the pattern need the base (diff3), work without it
(diff2), or both? Use "diff3", "diff2", or "both".
types.tspackages/core/src/types.ts contains the ConflictType union. Add the new
type name there before creating the pattern file — TypeScript will then flag
every location that needs updating.
// packages/core/src/types.ts
export type ConflictType =
| "same_change"
| "one_side_change"
// ... existing types ...
| "my_new_pattern" // ← add here, with a short comment
| "complex";Also add a readable summary string for it in the buildSummary() switch
inside packages/core/src/classifier.ts:
case "my_new_pattern":
return "One-line human-readable description of the resolution.";Create packages/core/src/patterns/<name>.ts.
The file must export a default PatternPlugin object — not a plain function.
Copy the structure below and fill in every field.
/**
* Pattern `my_new_pattern`
*
* <Two-sentence description of what this pattern detects and why it is safe
* to auto-resolve.>
*
* Priority: <N> (<before/after which existing pattern>)
* Requires: <diff3 | diff2 | both>
*/
import type { ClassifyInput, ConfidenceScore, PatternPlugin } from "../types.js";
import { scopeImpact, makeScore } from "./utils.js";
const myNewPattern: PatternPlugin = {
type: "my_new_pattern",
priority: <N>,
requires: "<diff3|diff2|both>",
detect(h: ClassifyInput): boolean {
// Return true when this pattern applies.
// Be conservative — false positives are worse than false negatives.
return false; // replace with real logic
},
confidence(h: ClassifyInput): ConfidenceScore {
const totalLines = Math.max(h.oursLines.length, h.theirsLines.length);
return makeScore(
<typeClassification>, // 0–100, certainty of the classification
<dataRisk>, // 0–100, 0 = no data loss risk
scopeImpact(totalLines),
["<booster: why we are confident>"],
["<penalty: why we are cautious, or empty array>"],
);
},
explanation(h: ClassifyInput): string {
return "Human-readable explanation shown in the UI (explain mode).";
},
passReason(h: ClassifyInput): string {
return "Shown in DecisionTrace when this pattern matched.";
},
failReason(h: ClassifyInput): string {
return "Shown in DecisionTrace when this pattern was tested but did not match.";
},
};
export default myNewPattern;If your detect() function ever inspects raw diff lines for context vs.
added/removed:
// CORRECT — empty strings do NOT become phantom context lines
const isContext = (line: string) => line.startsWith(' ');
// WRONG — empty string passes this test and produces phantom context lines
const isContext = (line: string) => !line.startsWith('\\');classifier.tspackages/core/src/classifier.ts owns the pattern registry. Add an import
and add the plugin to the PATTERNS array in priority order.
// 1. Add the import near the other pattern imports
import myNewPattern from "./patterns/my-new-pattern.js";
// 2. Add to PATTERNS array — the array order is cosmetic (sort is by .priority),
// but keep it in priority order for readability
const PATTERNS: PatternPlugin[] = [
sameChange, // priority 10
// ...
myNewPattern, // priority <N> ← add here
// ...
complex, // priority 999 — MUST stay last
];complex must always remain the last entry (priority 999, detect() always
returns true) — it is the fallback for every unrecognized conflict.
resolver/assemble.tspackages/core/src/resolver/assemble.ts contains the assembleResolution()
function, which switches on hunk.type to produce merged lines. Every new
ConflictType needs a case here, otherwise the pattern will be classified
correctly but its resolution will never be assembled.
case "my_new_pattern": {
// Produce the merged lines according to the resolution strategy.
const merged = /* ... */;
return {
lines: merged,
reason: "Short one-line reason logged in verbose mode.",
};
}Place the new case near the patterns of similar priority. Return
{ lines: null, reason: "..." } if under certain option flags the pattern
should refuse to auto-resolve (see whitespace_only for an example).
Create packages/core/src/__tests__/patterns/<name>.test.ts.
Minimum coverage: 10 test cases.
import { describe, it, expect } from "vitest";
import { resolve } from "../../resolver.js";
describe("<name> — should resolve", () => {
// At least 5 cases where the pattern fires and produces the expected output.
// Include at least one diff3 case (with ||||||| base section) and one diff2.
// Include at least one case with empty strings.
it("resolves <scenario>", () => {
const input = [
"<<<<<<< ours",
/* ours lines */
"||||||| base",
/* base lines */
"=======",
/* theirs lines */
">>>>>>> theirs",
].join("\n");
const result = resolve(input, "src/file.ts");
expect(result.hunks[0].type).toBe("<name>");
expect(result.stats.autoResolved).toBe(1);
expect(result.mergedContent).toBe(/* expected output */);
});
});
describe("<name> — should NOT resolve", () => {
// At least 5 cases where the pattern must NOT fire (returns null / classified
// as a different type). These guard against false positives.
// Include at least one edge case (single line, all-empty lines, etc.).
it("does not resolve when <counter-scenario>", () => {
const input = [
"<<<<<<< ours",
/* ours lines that look similar but must not match */
"=======",
/* theirs lines */
">>>>>>> theirs",
].join("\n");
const result = resolve(input, "src/file.ts");
expect(result.hunks[0].type).not.toBe("<name>");
});
});Open apps/desktop/src-tauri/examples/parity_probe.rs and check whether the
new pattern corresponds to a conflict type that the Rust side also classifies.
The parity probe binary is compiled and run by pnpm test:parity (from
apps/desktop/). If the Rust classifier uses a matching concept, add the
equivalent classification logic there and update the parity fixtures.
If the new pattern is purely a TypeScript-side heuristic with no Rust
equivalent, add a comment in parity_probe.rs documenting that this type
is TS-only.
Run both suites before marking the task done:
# TypeScript unit tests
cd packages/core && pnpm test
# Rust ↔ TypeScript parity tests
cd apps/desktop && pnpm test:parityBoth must pass with zero failures. If the parity suite fails, the Rust implementation is out of sync — fix it before merging.
© devlint, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/add-pattern of devlint/GitWand.
Open the folder on GitHubat commit 20114ac
Add Pattern 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Add Pattern this skilldevlint/GitWand | 180 | — | ~2.3k | Automated safety check: Pass | MIT | |
| GitHub Opsdaymade/claude-code-skills | 1.4k | — | ~3.7k | Automated safety check: Pass | MIT | |
| Deskcomm Contribuirmelgarafael/DeskcommCRM | 4.5k | — | ~3.6k | Automated safety check: Notes | MIT | |
| Qodo PR Resolversbusso/claudeclaw | 194 | — | ~4k | Automated safety check: Pass | MIT | |
| Flow Next Resolve PRgmickel/flow-next | 706 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Oidc ReleaseH2CK/oidc | 134 | — | ~2k | Automated safety check: Pass | AGPL-3.0 |
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.
melgarafael/DeskcommCRM
Guia de contribuição ao DeskcommCRM para quem vai mexer no código e abrir um pull request, sobretudo de um fork.
sbusso/claudeclaw
Review and resolve PR issues with Qodo - get AI-powered code review issues and fix them interactively (GitHub, GitLab, Bitbucket, Azure DevOps)
gmickel/flow-next
Resolve PR review feedback. An agent skill from gmickel/flow-next.
H2CK/oidc
Prepare and verify a new release for the Nextcloud OIDC Identity Provider app.
LFDT-Lineth/lineth-monorepo
Triage unresolved bot review comments on a GitHub PR. An agent skill from LFDT-Lineth/lineth-monorepo.
devlint/GitWand
Add a format-specific resolver to GitWand core. An agent skill from devlint/GitWand.
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…
devlint/GitWand
Guide a clean GitWand release end-to-end: bump version, update CHANGELOG, commit, tag, and push.
devlint/GitWand
Synchronise les fichiers de locale GitWand. An agent skill from devlint/GitWand.
Works with
Categories
Add a new conflict-resolution pattern to GitWand core. An agent skill from devlint/GitWand. Add Pattern is an agent skill from devlint/GitWand. Add a new conflict-resolution pattern to GitWand core.
Add Pattern fits situations like: someone wants to add a pattern; resolution rule; new conflict case; teach the resolver to handle a new kind of conflict automatically.
Run `npx skills add devlint/GitWand --skill add-pattern -a claude-code`. Or copy the skill folder (.claude/skills/add-pattern in devlint/GitWand) into .claude/skills/add-pattern in your project. Claude Code loads it when a task matches its description.
Run `npx skills add devlint/GitWand --skill add-pattern -a codex`. Or copy the skill folder (.claude/skills/add-pattern in devlint/GitWand) into .agents/skills/add-pattern in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add devlint/GitWand --skill add-pattern -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-pattern, .gemini/skills/add-pattern, .github/skills/add-pattern and .opencode/skills/add-pattern in your project.
Going by SKILL.md and its folder, Add Pattern needs the command-line tools its instructions call (pnpm).
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.
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.
Add Pattern is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Add Pattern: GitHub Ops (daymade/claude-code-skills, 1.4k stars), Deskcomm Contribuir (melgarafael/DeskcommCRM, 4.5k stars), Qodo PR Resolver (sbusso/claudeclaw, 194 stars) and Flow Next Resolve PR (gmickel/flow-next, 706 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
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.