From 4fcbe2d59c6b6daca8d64d67a7f71bb10dd89fa9 Mon Sep 17 00:00:00 2001 From: Teknium <127238744+teknium1@users.noreply.github.com> Date: Sun, 30 Aug 2026 04:49:34 -0700 Subject: [PATCH] refactor(skills): merge-reconciler -> optional-skills as agent-merge-conflict-arbiter (#98519) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bundled by #83063 into the always-shipped set, but it serves only multi-agent kanban campaigns — too niche for every install's skills index (~20 tok/call for all users). Moved to the optional catalog (installable via /skills search + hub, official source) and renamed so the trigger is legible at a glance: 'merge-reconciler' read like a generic git helper; 'agent-merge-conflict-arbiter' says who it is for. - skills/autonomous-ai-agents/merge-reconciler -> optional-skills/autonomous-ai-agents/agent-merge-conflict-arbiter - frontmatter name + description updated (description within the 60-char hardline its own contract test enforces) - contract test moved/renamed, 9/9 green - kanban docs (en + zh-Hans) repointed; zero merge-reconciler refs remain --- .../agent-merge-conflict-arbiter}/SKILL.md | 6 +++--- ...kill.py => test_agent_merge_conflict_arbiter_skill.py} | 8 ++++---- website/docs/user-guide/features/kanban.md | 4 ++-- .../current/user-guide/features/kanban.md | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) rename {skills/autonomous-ai-agents/merge-reconciler => optional-skills/autonomous-ai-agents/agent-merge-conflict-arbiter}/SKILL.md (98%) rename tests/skills/{test_merge_reconciler_skill.py => test_agent_merge_conflict_arbiter_skill.py} (93%) diff --git a/skills/autonomous-ai-agents/merge-reconciler/SKILL.md b/optional-skills/autonomous-ai-agents/agent-merge-conflict-arbiter/SKILL.md similarity index 98% rename from skills/autonomous-ai-agents/merge-reconciler/SKILL.md rename to optional-skills/autonomous-ai-agents/agent-merge-conflict-arbiter/SKILL.md index 9e5a3270e3..c7b481c2dc 100644 --- a/skills/autonomous-ai-agents/merge-reconciler/SKILL.md +++ b/optional-skills/autonomous-ai-agents/agent-merge-conflict-arbiter/SKILL.md @@ -1,6 +1,6 @@ --- -name: merge-reconciler -description: "Neutral third-party resolution of agent merge conflicts." +name: agent-merge-conflict-arbiter +description: "Neutral arbiter for merge conflicts between two agents." version: 1.0.0 author: Hermes Agent license: MIT @@ -11,7 +11,7 @@ metadata: related_skills: [hermes-agent] --- -# Merge Reconciler +# Agent Merge-Conflict Arbiter Resolve a git merge conflict between two AGENTS' branches as an impartial third party. Agents resolving conflicts against a peer's work reliably either diff --git a/tests/skills/test_merge_reconciler_skill.py b/tests/skills/test_agent_merge_conflict_arbiter_skill.py similarity index 93% rename from tests/skills/test_merge_reconciler_skill.py rename to tests/skills/test_agent_merge_conflict_arbiter_skill.py index adb6db068b..7a648cef66 100644 --- a/tests/skills/test_merge_reconciler_skill.py +++ b/tests/skills/test_agent_merge_conflict_arbiter_skill.py @@ -1,4 +1,4 @@ -"""Contract checks for the bundled merge-reconciler skill asset. +"""Contract checks for the optional agent-merge-conflict-arbiter skill asset. Reads only the SKILL.md markdown asset — no .py source reads, no network. """ @@ -8,9 +8,9 @@ from pathlib import Path REPO_ROOT = Path(__file__).resolve().parents[2] SKILL_PATH = ( REPO_ROOT - / "skills" + / "optional-skills" / "autonomous-ai-agents" - / "merge-reconciler" + / "agent-merge-conflict-arbiter" / "SKILL.md" ) @@ -48,7 +48,7 @@ def test_frontmatter_required_fields(): fm, _ = _frontmatter_and_body() for field in ("name", "description", "version", "author", "license", "platforms"): assert field in fm, f"missing frontmatter field: {field}" - assert fm["name"] == "merge-reconciler" + assert fm["name"] == "agent-merge-conflict-arbiter" def test_description_hardline(): diff --git a/website/docs/user-guide/features/kanban.md b/website/docs/user-guide/features/kanban.md index eacc539e16..fccda51c1b 100644 --- a/website/docs/user-guide/features/kanban.md +++ b/website/docs/user-guide/features/kanban.md @@ -960,7 +960,7 @@ abandons its own. Instead, create a reconciliation card assigned to a **third, neutral profile** with **both** conflicted cards linked as parents: the parent links carry both sides' completion summaries into the reconciler's context, so it receives both diffs *and* both intents. The bundled -[`merge-reconciler` skill](https://github.com/NousResearch/hermes-agent/blob/main/skills/autonomous-ai-agents/merge-reconciler/SKILL.md) +[`agent-merge-conflict-arbiter` optional skill](https://github.com/NousResearch/hermes-agent/blob/main/optional-skills/autonomous-ai-agents/agent-merge-conflict-arbiter/SKILL.md) gives that worker the full procedure: classify each conflicted hunk, resolve impartially, verify, and hand back a summary naming every decision. @@ -984,7 +984,7 @@ path** should create a dedicated refactor/decomposition card for that file **before** queuing more work that touches it — splitting the magnet file is cheaper than reconciling every future collision it would cause. For conflicts that have *already* happened, use the reconciliation-card pattern above with -the `merge-reconciler` skill; hotspot flagging is the upstream fix that keeps +the `agent-merge-conflict-arbiter` optional skill; hotspot flagging is the upstream fix that keeps the reconciler from becoming a standing lane. ## Multi-tenant usage diff --git a/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/user-guide/features/kanban.md b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/user-guide/features/kanban.md index c4150df1eb..f3cc3bce76 100644 --- a/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/user-guide/features/kanban.md +++ b/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/user-guide/features/kanban.md @@ -703,7 +703,7 @@ EOF ### 调解冲突的 worker 分支 -在工程流水线(使用 worktree 的 P1/P2)中,两个 worker 的分支合并时可能发生冲突。不要让任一 worker 自行裁决 —— 发生冲突的 agent 缺乏对方的上下文,往往会覆盖对方的改动或放弃自己的改动。正确做法是:创建一张调解卡片,指派给**第三个中立配置文件**,并把**两张**冲突卡片都链接为其父任务:父任务链接会把双方的完成摘要带入调解者的上下文,使其同时获得双方的 diff *和*双方的意图。内置的 [`merge-reconciler` 技能](https://github.com/NousResearch/hermes-agent/blob/main/skills/autonomous-ai-agents/merge-reconciler/SKILL.md) 为该 worker 提供完整流程:对每个冲突块分类、公正地解决、验证,并在交回摘要中说明每一项决定。 +在工程流水线(使用 worktree 的 P1/P2)中,两个 worker 的分支合并时可能发生冲突。不要让任一 worker 自行裁决 —— 发生冲突的 agent 缺乏对方的上下文,往往会覆盖对方的改动或放弃自己的改动。正确做法是:创建一张调解卡片,指派给**第三个中立配置文件**,并把**两张**冲突卡片都链接为其父任务:父任务链接会把双方的完成摘要带入调解者的上下文,使其同时获得双方的 diff *和*双方的意图。内置的 [`agent-merge-conflict-arbiter` 技能](https://github.com/NousResearch/hermes-agent/blob/main/optional-skills/autonomous-ai-agents/agent-merge-conflict-arbiter/SKILL.md) 为该 worker 提供完整流程:对每个冲突块分类、公正地解决、验证,并在交回摘要中说明每一项决定。 ### 并行战役中的碰撞热点(Collision hotspots) @@ -713,7 +713,7 @@ EOF hotspot: hermes_cli/kanban_db.py — 本轮对 dispatch 循环的第三次冲突性编辑 ``` -并在完成时的 `metadata` 中重复该标记。编排者(或查看看板的人类)如果看到**两条或更多 `hotspot:` 评论指向同一路径**,应在继续排入任何触碰该文件的工作**之前**,为该文件创建一张专门的重构/分解卡片 —— 拆分磁石文件比调解它未来引发的每一次冲突更便宜。对于*已经*发生的冲突,请使用上文的调解卡片模式配合 `merge-reconciler` 技能;hotspot 标记是上游修复,能避免调解者变成一条常设车道。 +并在完成时的 `metadata` 中重复该标记。编排者(或查看看板的人类)如果看到**两条或更多 `hotspot:` 评论指向同一路径**,应在继续排入任何触碰该文件的工作**之前**,为该文件创建一张专门的重构/分解卡片 —— 拆分磁石文件比调解它未来引发的每一次冲突更便宜。对于*已经*发生的冲突,请使用上文的调解卡片模式配合 `agent-merge-conflict-arbiter` 技能;hotspot 标记是上游修复,能避免调解者变成一条常设车道。 ## 多租户使用