跳到正文
cccskills
免费在 GitHub 公开中文介绍

tag-duplicate-prs-issues

核查OpenClaw的拉取请求和问题是否与已有工作重复,整理判断依据,并用prtags将相关工作归入一个重复组,记录判断理由和置信度。

原文查看原文说明

Use gitcrawl to search duplicate OpenClaw PRs/issues, group related work in prtags, and sync duplicate state to GitHub.

集成工具GitHub
AI 评分90分/ 100查看安装方法

适用场景

  • 检查拉取请求是否与已有工作重复
  • 查找报告同一问题的条目
  • 将相关工作归入一个重复组
  • 记录重复判断的理由与证据

中文介绍

功能

核查OpenClaw的PR(代码变更提案)和Issue(问题条目)是否与已有工作重复,并整理依据。使用gitcrawl查找候选条目和历史背景,再用gh核对最新正文、评论及变更文件。结果分为确认重复、需要判断和不重复,并在prtags中记录分组、置信度与理由。

适用场景

适合维护者整理不断增加的相似报告和修复提案。判断时会核对多个证据,确认是否涉及同一问题或修复方向,不会仅凭标题相似或变更文件相同就认定重复。还会检查已有分组,避免一个条目加入多个重复组。

使用示例

  • “请检查这个PR是否与已有修复重复。”
  • “请查找报告同一故障的Issue,并记录判断理由。”

注意事项

这是面向维护者的流程,需要gitcrawl、gh和prtags。写入时必须使用指定版本的prtags,并以维护者本人的GitHub账号登录。配置了相关集成后,分组评论会同步到GitHub。不评审实现质量;证据不明确时交由维护者判断。

本介绍由 AI(OpenAI Codex)根据公开的 SKILL.md 撰写。准确的规格请查看下方原文。

客观评估

AI 仅根据 SKILL.md 的内容,从 4 个方面进行了评估。星标数和热度不计入评估。

指令清晰度能否看出何时使用、做什么
A良好明确说明重复判断的使用场景及gitcrawl、gh、prtags各自的职责。
步骤具体性步骤、输入输出和示例是否具体
A良好提供读取目标的gh命令,要求核对多类证据,并列明记录内容。
安全性发送数据、删除文件、执行命令等是否有说明
A良好要求安装固定版本、本人认证、写入前检查配置,并在分组冲突时停止。
安装难易度所需工具和 API 密钥是否少且有说明
B部分不足提供prtags安装和认证步骤,但未提供gitcrawl与gh的安装步骤。

总分按每项 A=25 分、B=15 分、C=5 分相加。 由 AI(OpenAI Codex)于 2026年10月19日 评估。仅供参考,安装前请同时查看原文。

如果您认为评估有误,请申请复核

请写明哪一项有误以及原因。无需登录。我们会对照 SKILL.md 重新评估,并在此处更新结果。

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

包含的文件(2)

  • SKILL.md15.6 KB
  • agents/openai.yaml423 B

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Tag Duplicate PRs and Issues

Use this skill when a maintainer needs to decide whether a pull request or issue is a duplicate of existing work.

This skill is for maintainer triage and grouping. It is not for reviewing the implementation quality of a PR.

Required Setup

Do not write duplicate groups or annotations until this setup is complete. Read-only discovery can still proceed with gitcrawl and live gh.

Companion Skills

Use $gitcrawl first for local candidate discovery. Use the prtags skill from the prtags repo at skills/prtags/SKILL.md when it is available.

Install the CLIs

Install prtags from the pinned release below. Do not rely on an old local build unless the maintainer explicitly wants to test unreleased behavior.

prtags CLI install path:

GOBIN="$HOME/.local/bin" go install github.com/dutifuldev/prtags/cmd/prtags@v0.1.2

prtags lives outside the OpenClaw organization, so this install stays pinned to a reviewed version that the Go module proxy resolves and the public checksum database verifies. GOBIN keeps the installed executable in the same user-local directory as the previous installer, so an existing $HOME/.local/bin PATH continues to resolve the newly installed version. Do not install it by piping a remote script into a shell, and do not point the install at a branch: either one executes whatever that third party serves at run time, with the maintainer's own privileges. Moving to a newer prtags release is a reviewed change to this file, not a mid-task step.

Authenticate prtags

prtags should be logged in with the maintainer's own GitHub account through OAuth device flow. Do not use a shared maintainer token for interactive triage.

prtags auth login
prtags auth status

The expected outcome is that prtags stores the logged-in maintainer identity locally and uses that account for authenticated writes.

Missing-Setup Rule

Do not require an up-front preflight before starting the workflow. Proceed with the normal steps until you actually need a tool or account state.

As soon as you discover that prtags is missing or not logged in at the write step, stop immediately. Do not continue in a partial write mode after that point.

If prtags is missing, ask the user to run the pinned install command from Install the CLIs. Keep that section as the single source of the installed version; do not improvise another install path.

If prtags auth status shows that the user is not logged in, ask the user to run:

prtags auth login

Resume only after the missing tool or login state has been fixed.

Read-Path Default

For candidate discovery in this workflow, use gitcrawl first. Treat it as the local history and clustering layer for related issues, duplicate attempts, and closed threads.

Use live gh or gh api for the target thread and for any candidate before making an actionable judgment. Use live GitHub when gitcrawl is missing or stale for a concrete reason, such as:

  • the target or candidate is not present yet
  • the local data is clearly stale or incomplete for the decision you need to make
  • gitcrawl errors, times out, or lacks the needed neighbor/search data

When you fall back to live GitHub search, note that you did so and why.

If a later prtags target-level write fails because its own mirror has not caught up, stop and report that the curation backend is missing the target object instead of forcing a fallback write.

Goal

For each target PR or issue:

  1. gather duplicate evidence
  2. decide whether it is a real duplicate
  3. create or reuse one prtags group for that duplicate cluster
  4. save the maintainer judgment in prtags
  5. rely on normal prtags group writes to drive GitHub comment sync when that integration is configured

Tool Roles

Use the tools with these boundaries:

  • gitcrawl is candidate generation and historical context
    • use it first for local title/body search, neighbors, clusters, and closed-thread discovery
    • treat every candidate as a lead until live GitHub confirms it
  • gh is live GitHub truth
    • use it for target state, body, comments, reviews, files, linked issues, and current open/closed/merged status
    • use gh search only when gitcrawl is stale, missing data, or cannot express the needed query
  • prtags is the maintainer curation layer
    • use it to create or reuse one duplicate group
    • use it to save the duplicate status, confidence, rationale, and group summary
    • use it as the source of truth for the GitHub-facing group comment

Working Rules

  • Do not call something a duplicate only because the titles are similar.
  • Do not call something a duplicate only because the same files changed.
  • A duplicate cluster should be based on the same user-facing problem, the same intent, and substantially overlapping implementation or investigation context.

One-Group Rule

Treat duplicate groups as exclusive. A PR or issue should belong to at most one duplicate group at a time.

That means:

  • before creating a new group, search for an existing group that already represents the same duplicate story
  • if the target already appears to belong to a different duplicate group, stop and resolve that conflict first
  • do not create a second group for the same target just because the wording is slightly different
  • if two plausible existing groups overlap and you cannot safely merge the judgment, stop and ask the maintainer

This rule matters more than speed. The skill should keep one coherent duplicate cluster per problem, not many near-duplicate clusters.

What A Good Duplicate Group Represents

A duplicate group should describe the underlying problem and the intended fix direction. Do not group items only because they share a keyword.

Good group shape:

  • same user-facing bug or same maintainer-facing task
  • same subsystem or code surface
  • same intended change direction
  • same likely duplicate-resolution path

Bad group shape:

  • “all PRs that touch Slack”
  • “all issues mentioning retry”
  • “all auth-related items”

The group title should name the real problem. The group description should summarize the intent and the code surface.

Examples:

  • gateway: startup regression from channel status bootstrap
  • whatsapp: QR preflight timeout handling
  • release: cross-OS validation handoff gaps

Evidence Checklist

Before declaring a duplicate, gather evidence from at least two categories. gitcrawl neighbors, search hits, and cluster membership count as candidate generation, not as enough proof by themselves.

For PRs:

  • same or nearly same problem statement
  • same changed files or overlapping file ranges
  • same fix direction
  • same subsystem and failure mode
  • same linked issue or same user-visible symptom

For issues:

  • same user-visible problem
  • same reproduction story or same failure mode
  • same likely fix area
  • same PRs already linked or discussed
  • same maintainers already steering toward the same duplicate grouping

If you only have wording similarity, that is not enough.

Step 1: Read The Target

Start by reading the target itself. Use live GitHub for current target state.

For a PR:

gh pr view <number> --json number,title,state,mergedAt,body,closingIssuesReferences,files,comments,reviews,statusCheckRollup

For an issue:

gh issue view <number> --json number,title,state,body,comments,closedAt

Record:

  • target type and number
  • title
  • problem statement
  • proposed intent
  • subsystem
  • whether it is open, closed, or merged
  • whether there is already a likely duplicate thread mentioned by humans

Step 2: Search Broadly With Gitcrawl

Use gitcrawl first because it is the local OpenClaw history and clustering source. Do not switch to broad live GitHub search unless gitcrawl is missing data, stale, or failing.

Start with the target and nearby threads:

gitcrawl threads openclaw/openclaw --numbers <issue-or-pr-number> --include-closed --json
gitcrawl neighbors openclaw/openclaw --number <issue-or-pr-number> --limit 20 --json

Then search key phrases and subsystem terms:

gitcrawl search openclaw/openclaw --query "<key phrase from title or body>" --mode hybrid --limit 20 --json
gitcrawl search openclaw/openclaw --query "<subsystem or error phrase>" --mode hybrid --limit 20 --json

Inspect likely clusters:

gitcrawl cluster-detail openclaw/openclaw --id <cluster-id> --member-limit 20 --body-chars 280 --json

For PRs, verify likely code overlap with live file data:

gh pr view <candidate-pr> --json number,title,state,mergedAt,files,body,comments,reviews

For issues, verify likely duplicate issue state and comments live:

gh issue view <candidate-issue> --json number,title,state,body,comments,closedAt

Step 3: Use Live GitHub Search For Gaps

Use targeted live GitHub search after gitcrawl when:

  • the target is too new for the local store
  • comments or reviews matter and the local store lacks them
  • the exact phrase did not appear in local results but the issue/PR is current enough that GitHub should know it
gh search prs --repo openclaw/openclaw --match title,body --limit 50 -- "<key phrase>"
gh search issues --repo openclaw/openclaw --match title,body --limit 50 -- "<key phrase>"
gh search issues --repo openclaw/openclaw --match comments --limit 50 -- "<error or maintainer phrase>"

Step 4: Decide The Outcome

Choose one of these outcomes:

  • not_duplicate
  • duplicate_needs_judgment
  • duplicate_confirmed

Use duplicate_confirmed only when the evidence is strong enough that the maintainer could safely close or retag the duplicate item.

Use duplicate_needs_judgment when:

  • the problem looks the same but the implementation goal differs
  • the code overlap is weak
  • the issue wording is ambiguous
  • there may be two valid duplicate group interpretations
  • the target appears to intersect two existing duplicate groups

Step 5: Reuse Or Create One prtags Group

Before creating a group, search prtags for an existing one.

Start with text search over groups:

prtags search text -R openclaw/openclaw "<problem phrase>" --types group --limit 10
prtags search similar -R openclaw/openclaw "<problem summary>" --types group --limit 10
prtags group list -R openclaw/openclaw

Inspect likely groups:

prtags group get <group-id>
prtags group get <group-id> --include-metadata

Reuse an existing group when:

  • it represents the same problem
  • it already contains clearly related members
  • adding the target would keep the group coherent

Do not widen an existing group just because gitcrawl placed several PRs or issues near each other. Confirm that the actual implementation path and maintainer intent still match before adding the new member.

Create a new group only when no existing group clearly fits.

Create the group with a problem-based title and an intent-based description:

prtags group create -R openclaw/openclaw \
  --kind mixed \
  --title "<problem-centered title>" \
  --description "<same intent, subsystem, and duplicate-resolution path>" \
  --status open

Then attach the target and any known duplicate members:

prtags group add-pr <group-id> <pr-number>
prtags group add-issue <group-id> <issue-number>

If a target appears to already belong to another duplicate group and you cannot safely reuse that group, stop. Do not create a second group.

Step 6: Ensure The Annotation Fields Exist

Use field ensure so the skill is idempotent.

Recommended target-level fields:

prtags field ensure -R openclaw/openclaw --name duplicate_status --scope pull_request --type enum --enum-values not_duplicate,candidate,confirmed --filterable
prtags field ensure -R openclaw/openclaw --name duplicate_status --scope issue --type enum --enum-values not_duplicate,candidate,confirmed --filterable
prtags field ensure -R openclaw/openclaw --name duplicate_confidence --scope pull_request --type enum --enum-values low,medium,high --filterable
prtags field ensure -R openclaw/openclaw --name duplicate_confidence --scope issue --type enum --enum-values low,medium,high --filterable
prtags field ensure -R openclaw/openclaw --name duplicate_rationale --scope pull_request --type text --searchable
prtags field ensure -R openclaw/openclaw --name duplicate_rationale --scope issue --type text --searchable

Recommended group-level fields:

prtags field ensure -R openclaw/openclaw --name duplicate_confidence --scope group --type enum --enum-values low,medium,high --filterable
prtags field ensure -R openclaw/openclaw --name duplicate_rationale --scope group --type text --searchable
prtags field ensure -R openclaw/openclaw --name cluster_summary --scope group --type text --searchable

Step 7: Save The Maintainer Judgment In prtags

For a PR:

prtags annotation pr set -R openclaw/openclaw <pr-number> \
  duplicate_status=confirmed \
  duplicate_confidence=high \
  duplicate_rationale="<same problem, same fix direction, overlapping files and comments>"

For an issue:

prtags annotation issue set -R openclaw/openclaw <issue-number> \
  duplicate_status=confirmed \
  duplicate_confidence=high \
  duplicate_rationale="<same user-visible problem and same intended fix path>"

For the group:

prtags annotation group set <group-id> \
  duplicate_confidence=high \
  cluster_summary="<one-sentence problem summary>" \
  duplicate_rationale="<why these items belong in one duplicate cluster>"

When the evidence is incomplete, set duplicate_status=candidate and lower the confidence.

If a per-PR or per-issue annotation write fails because prtags cannot resolve the target, do not force a fallback write path. Keep the group state you were able to write, report that the curation backend is still missing the target object, and defer the target-level annotation until prtags catches up.

Step 8: Let prtags Sync The Group Comment

Do not tell the agent to create a GitHub comment directly. prtags owns the outbound GitHub comment as a derived projection of group state.

In the normal case, do not manually trigger comment sync. When comment sync is configured, group writes already enqueue the derived comment projection automatically.

Use manual sync only as a repair or retry path:

prtags group sync-comments <group-id>

If the maintainer needs to see which groups still need attention, use:

prtags group list-comment-sync-targets -R openclaw/openclaw

The skill should treat the GitHub comment as a consequence of correct prtags group state. It should not treat manual comment authoring as part of the normal duplicate workflow. It should also not treat sync-comments as a required step for every duplicate decision.

Output Format

Return a short maintainer report with these sections:

Decision: duplicate_confirmed | duplicate_needs_judgment | not_duplicate
Target: PR #<n> | Issue #<n>
Confidence: high | medium | low

Evidence:
- ...
- ...
- ...

prtags actions:
- reused group <group-id> | created group <group-id>
- added members: ...
- annotations written: ...
- comment sync: automatic if configured | manual repair triggered for <group-id>

Stop Conditions

Stop and escalate instead of forcing a duplicate decision when:

  • the target appears to belong to two different duplicate groups
  • the duplicate grouping is unclear
  • the wording matches but the implementation goals differ
  • two PRs touch the same files for different reasons
  • two issues describe similar symptoms but likely different root causes

The maintainer should get one clean duplicate judgment or an explicit “needs judgment” result. Do not blur the line.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

1password

免费有简介AI 评分 100分

检查1Password命令行工具的安装和认证,将已保存的密码或API密钥传入命令及配置。支持桌面应用集成、服务账号和交互式登录,并先验证访问权限。

  • 安装1Password命令行工具
  • 将API密钥传入命令
  • 在CI中使用服务账号认证
openclaw/openclaw39.2万2026年10月18日 更新

acp-router

免费有简介AI 评分 80分

将提交给OpenClaw的自然语言请求转交给Claude Code等外部编程智能体,通过ACP或acpx启动、继续会话,并保留对话上下文。

  • 在讨论串中启动Claude Code
  • 继续外部智能体的现有工作
  • 通过acpx直接传递指令
openclaw/openclaw39.2万2026年10月18日 更新

add-model-provider

免费有简介AI 评分 100分

为OpenClaw添加模型服务商,并通过实际回复验证连接。凭据以环境变量或文件引用的形式配置,同时验证设置并报告测试结果。

  • 为OpenClaw添加模型服务商
  • 通过引用配置认证凭据
  • 确认模型能返回实际回复
openclaw/openclaw39.2万2026年10月18日 更新

agent-transcript

免费有简介AI 评分 90分

将AI代理的工作日志整理为可附在GitHub拉取请求或议题中的记录,筛选相关内容、移除敏感信息,并支持预览及经单独授权后的发布。

  • 为拉取请求整理代理工作记录
  • 从本地日志提取相关请求和结果
  • 预览已移除敏感信息的记录
openclaw/openclaw39.2万2026年10月18日 更新

apple-notes

免费有简介AI 评分 100分

通过代理管理macOS上的Apple Notes笔记,支持创建、查看、搜索、编辑和删除,在文件夹之间移动笔记,并将选定笔记导出为HTML或Markdown。

  • 创建带标题的笔记
  • 按文件夹筛选或模糊搜索笔记
  • 编辑笔记并整理文件夹
openclaw/openclaw39.2万2026年10月18日 更新

apple-reminders

免费有简介AI 评分 70分

通过Mac查看、添加和编辑Apple Reminders中带截止时间的待办事项,管理列表并完成或删除任务,整理在iPhone或iPad上查看的个人任务。

  • 查看今天和已逾期的任务
  • 添加带截止日期的个人待办事项
  • 整理iPhone或iPad上的任务
openclaw/openclaw39.2万2026年10月18日 更新

查看 openclaw 的全部技能

报告此技能的问题