vincentkoc/dotskills/openclaw-github-dedupe
Claude Code and agent skill by vincentkoc/dotskills
- community
Checking that the SKILL.md file is still in the repository.
Investigate a cluster of GitHub issues and PRs, determine canonical candidates, post duplicate/related status, preserve contributor credit, and execute cleanup actions. Supports autonomous mode for provided-link-only closeout, merge/fix follow-through, changelog, and post-merge issue/PR cleanup.
Install
npx vskill@latest install vincentkoc/dotskills/openclaw-github-dedupeSKILL.md
Issue/PR Cluster Deduper
Use this skill when a cluster of GitHub issues and pull requests has been reported for a common failure mode (Slack, iMessage, support threads, or manual list), and you need an evidence-based dedupe recommendation, execution pass, or autonomous closeout run.
Purpose
Provide a consistent, evidence-driven triage pass for issue and PR clusters so duplicate work is folded, contributor credit is preserved, and cleanup actions stay auditable.
Execution is command-led and conservative: drive decisions from gh readbacks plus deterministic file/metadata checks only, and avoid speculative local analysis beyond triage logic.
Autonomous mode is different from broad dedupe: it starts from user-provided links/refs, follows only links found inside those refs, first decides whether the cluster is still viable and needed against current main, then drives the selected fix/merge/closure path to completion when repo policy allows.
Primary goal: make every run action-ready with explicit per-item actions, links, and command outcomes.
Vision
Treat each cluster as a triage system, not a documentation exercise. The expected behavior is deterministic classification, auditable comment text, safe mutation flow, and fast operator comprehension.
Principles (read before execution)
These are defined in principles.md:
- Evidence over narrative
- Root-cause alignment over title similarity
- Credit-preserving attribution
- Safe defaults (
dry-runand blockers) - Complete audit trail in comments and labels
- Humans first: communicate like a senior developer advocate, not a script.
Read constitution.md for governance requirements and decision quality rules before choosing final outcomes.
Operator experience and communication defaults
This workflow is designed for high-velocity maintainers and external contributors:
- Keep every reply short, clear, and respectful.
- Lead with what happened, then why.
- Include a plain-English next step and reopen path.
- Avoid abrupt or accusatory language, especially on duplicates.
- Never hide uncertainty; if blocked, say what is missing and what you need next.
- Treat the assistant as a Developer Experience lead: helpful, practical, and direct without sounding mechanical.
- Use examples as style guidance, not templates to paste verbatim.
- Vary sentence ordering and opener lines per message so repeated runs do not sound identical.
- Do not repeat the exact same message body twice in one cluster run unless no safe variation is possible.
- Use short, conversational paragraphs (2-4 paragraphs), and avoid one-liner robotic templates.
- If intent is clear, keep tone warm and explanatory even when issuing a close.
When to use
- You have a cluster of suspected duplicates to classify as canonical/related/independent.
- You need a concrete action plan with exact statuses instead of generic commentary.
- The user asked to execute safe closure/label/comment steps.
- You need to avoid duplicate PR churn by identifying which change should stay canonical.
Inputs
cluster_refs(required): list of issue/PR references as IDs or URLs.mode(optional):plan(default),execute, orautonomous.channel(optional): source context likeslack,imessage,support, etc.repo(optional): explicitowner/repowhen not using current checkout.canonical_hint(optional): explicit preference when ambiguity exists.merge_guard(optional):high|mediummergeability strictness; defaulthigh.max_changed_files_for_canonical(optional): default30.max_delta_lines_for_canonical(optional): default2500.min_greptile_score(optional): default65when available.body_noise_mode(optional):strict|mediumfor junk body tolerance; defaultmedium.reuse_copy_detection(optional):off|onwith defaultonfor bot/copied-work checks.bot_author_pattern(optional): list of substrings for suspicious authors.merge_tool_pref(optional):auto,gh,merge-skill, orland-skill; defaultauto.dry_run(optional):0|1to force non-mutating mode.output_mode(optional):compact|detailed; defaultdetailed.triage_report(optional): path to a triage report file (like/path/to/triage-report.md) to seed initial cluster candidates.search_limit(optional): max similar items per item from GH search; default12.search_queries(optional): explicit query terms (space-separated).
Autonomous mode
Trigger this path only when the user explicitly says autonomous mode or sets mode=autonomous. This is closeout work, not exploration.
- Do not run a broad GitHub search by default.
- Start only from refs/URLs the user supplied, refs linked from those issue/PR bodies, comments, review threads, closing refs, commit messages, and PR descriptions, or refs in an explicit local cluster artifact.
- If you need a broad search, stop and state the exact reason. Do not silently expand.
- Prefer full GitHub URLs in comments and final output.
- Do not ask before routine issue closeout when confidence is high and repo policy allows it. Ask before bulk PR close/reopen when local repo instructions require it.
Before editing, merging, or closing anything, prove the cluster is still actionable against current main:
- Fetch current
origin/mainand identify whether the reported behavior is already fixed, obsolete, or still reproduces from code/tests. - Hydrate every provided/ref-linked item with
gh issue vieworgh pr view; include bodies, comments, labels, state, checks, review threads, and linked closing refs. - Classify each item as
needed,covered,stale, orindependent. - Identify the canonical path: existing merged commit/PR, existing open PR if mergeable or repairable, or new fix branch/PR only if no viable PR exists and the bug is confirmed from code/tests.
- Do not enter drive mode until the canonical path and closeout target are explicit.
- If an open PR is canonical: address actionable review comments, fix CI/changelog, rebase on
main, run targeted local gates, push, wait for relevant checks, and merge per repo policy. - If
mainalready contains the fix: use that merged PR/commit as canonical and close only high-confidence covered duplicates. - If no PR exists and the bug is real: create a worktree/branch from
origin/main, patch the smallest implicated surface, add focused tests/changelog when user-facing, open a draft PR, drive it through review/CI where permitted, then merge when clean. - After merge/fix confirmation: close covered issues/PRs with a short comment naming the canonical full URL and why the item is covered.
- Leave independent or low-confidence items open with a relationship comment only when useful.
- Verify closure state with
gh issue view/gh pr viewafter actions.
Autonomous mode final output may be compact, but it must include: canonical URL, landed commit/PR state, validation performed, closed refs, and items intentionally left open.
Outputs
- Per-item action matrix with explicit status (
KEEP_OPEN_CANONICAL,CLOSE_DUPLICATE,KEEP_OPEN_RELATED,KEEP_OPEN_UNRELATED,MANUAL_REVIEW_REQUIRED) and each row showing title + author. - Evidence matrix with root-cause mapping, scope deltas, and risk blockers.
- Credit chain and attribution rationale (single-credit default, dual-credit only by exception).
- Required command set (dry-run and execution mode): close, comment, label, merge, and changelog actions.
- Escalation list for
manual-review-requiredoutcomes, with confidence score and hard-stop reason.
Sub-agent orchestration
Use sub-agents in this chain for higher consistency and lower mistakes:
agents/cluster-intake-agent.mdagents/cluster-similarity-agent.mdagents/cluster-evidence-agent.mdagents/cluster-decision-agent.mdagents/cluster-synthesis-agent.md
Run in sequence and feed each output to the next.
- Intake → Similarity → Evidence → Decision → Synthesis.
- Intake: normalize cluster refs (required first), including optional
triage_reportexpansion. - Similarity: find additional related open issues/PRs from GitHub search and attach ranked candidates.
- Evidence: pull full context for cluster + similar candidates.
- Decision: maps risk and hard-stop states.
- Synthesis: emits final action matrix and command plan.
If any sub-agent blocks, continue only with explicit manual-review-required and keep execution safe.
When orchestrator support exists, run them as a chain and pass structured outputs between steps:
- Start with
cluster-intake-agent - Feed output to
cluster-similarity-agent - Feed output to
cluster-evidence-agent - Feed output to
cluster-decision-agent - Feed output to
cluster-synthesis-agent
If sub-agents are unavailable, execute the same steps manually in this file order and keep output format intact.
Execution discipline for consistent tool UIs
Use update_plan at runtime and keep one in-progress step at a time.
Discover→Assess→Plan→Execute(if requested) →Verify.- Convert each stage between
in_progressandcompleted. - If hard-stop blockers exist, keep
Executeaspendingand returnmanual-review-required. - This keeps Codex/Cursor/Claude execution format consistent.
Workflow
- Cluster intake and normalization
- Resolve each input to canonical links and types.
- Skip malformed entries with a reasoned note for
manual-review-required.
- Similarity sweep (required except autonomous mode)
- Use the supplied
cluster-intake-agentsummary as the primary seed. - Expand search surface by running GitHub queries for additional candidates and include likely neighbors in the same root-cause family.
- Pull:
gh issue list --search "<query> in:title" --state all --repo <repo> --json number,title,url,state,author,updatedAt,labelsgh pr list --search "<query> in:title" --state all --repo <repo> --json number,title,url,state,author,updatedAt,isDraft,mergeable- Keep likely matches when title/body overlap is explicit, not keyword-only.
- In autonomous mode, skip this step unless the user explicitly asks for broad discovery. Instead, expand only by refs linked from the provided items.
- Fetch evidence from GitHub
- For PRs:
gh pr view <ref> --json number,title,body,state,author,labels,createdAt,updatedAt,mergedAt,closedAt,mergeable,mergeStateStatus,isDraft,changedFiles,additions,deletions,statusCheckRollup,commits,url - For issues:
gh issue view <ref> --json number,title,body,state,labels,author,createdAt,updatedAt,url,comments - Pull file footprint for PRs when deciding canonical scope:
gh pr diff <ref> --name-only - Pull check state for PRs:
gh pr checks <ref> - Pull review/AI-tool signal text:
gh issue view <ref> --json comments - In autonomous mode, also pull PR review threads with GraphQL when review comments can block merge or need resolution.
- Normalize guardrails
- Mergeability: mergeable flag, merge-state blockers, draft state, check rollup status.
- Churn:
changedFiles,additions,deletions. - Body hygiene: concrete root-cause detail vs template/placeholder-only text.
- AI-review score: Greptile-like comments below threshold downgrade confidence.
- Copy/bot signal: generated/copied language, bot-like authors, low-evidence mechanical commits.
- Any hard-stop issue marks item
manual-review-requiredand blocks automatic close.
- Review candidate canonicals
- For each top candidate PR:
gh pr view <id> --json filesandgh pr diff <id>. - If healthy, treat as canonical candidate and move toward merge prep.
- If two candidates are equivalent, prefer stable, lower-risk scope.
- If a newer PR is superset-safe, prefer the newer with higher-surface fix coverage.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/openclaw-github-dedupe/SKILL.md
Popularity
- Repository stars
- 96
- Repository forks
- 8
- 7-day trend score
- 23
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 17 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/vincentkoc/dotskills/openclaw-github-dedupe)