3
0
Source

Fix the "CH Inc sync" job in a pull request by resolving conflicts in the corresponding clickhouse-private sync PR.

Install

mkdir -p .claude/skills/fix-sync && curl -L -o skill.zip "https://mcp.directory/api/skills/download/2950" && unzip -o skill.zip -d .claude/skills/fix-sync && rm skill.zip

Installs to .claude/skills/fix-sync

About this skill

Fix CH Inc Sync Skill

Fix the "CH Inc sync" CI job for a ClickHouse pull request by resolving merge conflicts in the corresponding clickhouse-private sync PR.

Arguments

  • $0 (required): PR number or full GitHub URL of the public ClickHouse PR (e.g., 96005 or https://github.com/ClickHouse/ClickHouse/pull/96005)

Overview

When a PR is opened in ClickHouse/ClickHouse, a sync PR is automatically created in ClickHouse/clickhouse-private on a branch named sync-upstream/pr/<PR_NUMBER>. If this sync PR has merge conflicts, the "CH Inc sync" check stays pending. This skill resolves those conflicts.

Process

1. Parse the PR number

  • Extract the PR number from $ARGUMENTS
  • If a full URL is provided (e.g., https://github.com/ClickHouse/ClickHouse/pull/96005), extract the number from the URL
  • If no argument is provided, use AskUserQuestion to ask for the PR number

2. Find the sync PR

  • Search for the corresponding sync PR in the private repository:
    gh pr list --repo ClickHouse/clickhouse-private --head sync-upstream/pr/<PR_NUMBER> --json number,url,state,mergeable,mergeStateStatus,headRefName
    
  • If no sync PR is found, report this to the user and stop
  • If the sync PR is not conflicting (mergeable is not CONFLICTING), report that no action is needed and stop
  • Report the sync PR number and URL to the user

3. Locate the private repository

  • Look for the clickhouse-private repository in common locations relative to the current working directory:
    • ../ClickHouse_private
    • ../clickhouse-private
    • Check if the directory exists and contains a git repository with ClickHouse/clickhouse-private as a remote
  • If not found, use AskUserQuestion to ask the user for the path
  • Store the path for use in subsequent steps

4. Fetch and switch to the sync branch

In the private repository directory:

cd <private_repo_path> && git fetch origin && git fetch origin sync-upstream/pr/<PR_NUMBER>

Then check out the sync branch:

cd <private_repo_path> && git checkout sync-upstream/pr/<PR_NUMBER>

If the branch has local changes, ask the user before proceeding.

5. Merge master and resolve conflicts

cd <private_repo_path> && git merge origin/master

This will likely produce conflicts. Handle them:

  1. List conflicted files:

    cd <private_repo_path> && git diff --name-only --diff-filter=U
    
  2. For each conflicted file, use a Task agent with subagent_type=general-purpose to resolve:

    • Read the conflicted file content
    • Analyze the conflict markers (<<<<<<<, =======, >>>>>>>)
    • Determine the correct resolution:
      • For most sync conflicts, the upstream (public repo) changes should take precedence
      • For files that exist only in the private repo, preserve them
      • For CI/workflow files, be careful to preserve private-repo-specific configurations
    • Apply the resolution using Edit tool
    • Stage the resolved file: git add <file>

    IMPORTANT: If conflicts are complex or ambiguous, show the conflicts to the user and ask how to resolve them using AskUserQuestion.

  3. After resolving all conflicts, complete the merge:

    cd <private_repo_path> && git commit --no-edit
    

6. Update submodules (if needed)

cd <private_repo_path> && git submodule update --init --recursive

If submodule update fails, report the error but continue.

7. Build verification (optional)

Use AskUserQuestion to ask the user:

  • "Do you want to build ClickHouse in the private repository to verify the merge?"
    • Option 1: "Yes, build" - Run ninja in the private repo build directory
    • Option 2: "No, skip build" - Skip building and proceed to push

If the user chooses to build, use the build skill or run ninja directly.

8. Push the resolved branch

cd <private_repo_path> && git push origin sync-upstream/pr/<PR_NUMBER>

9. Verify the sync PR

After pushing:

gh pr view <SYNC_PR_NUMBER> --repo ClickHouse/clickhouse-private --json mergeable,mergeStateStatus

Report the result:

  • If mergeable is MERGEABLE: "Sync PR is now mergeable. The CH Inc sync check should pass shortly."
  • If still conflicting: "Sync PR still has conflicts. Additional investigation may be needed."

Provide the sync PR URL for the user to check.

Examples

  • /fix-sync 96005 - Fix sync for PR #96005
  • /fix-sync https://github.com/ClickHouse/ClickHouse/pull/96005 - Fix sync using full URL

Notes

  • The sync branch name follows the pattern: sync-upstream/pr/<PR_NUMBER>
  • The private repository is typically located one directory level up from the public repository
  • Most conflicts are straightforward and involve the upstream changes taking precedence
  • Always fetch before switching branches to ensure you have the latest state
  • Do not use rebase or amend - add new commits instead (per project conventions)
  • After pushing, it may take a few minutes for the GitHub check to update

You might also like

flutter-development

aj-geddes

Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.

643969

drawio-diagrams-enhanced

jgtolentino

Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.

591705

ui-ux-pro-max

nextlevelbuilder

"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."

318398

godot

bfollington

This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.

339397

nano-banana-pro

garg-aayush

Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.

451339

fastapi-templates

wshobson

Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.

304231

Stay ahead of the MCP ecosystem

Get weekly updates on new skills and servers.