跳到正文
cccskills
免费在 GitHub 公开

cherry-pick-pro

Transfer selected Chatbox Pro commits into the open source edition using cherry-picking, which copies individual changes. The skill handles excluded files, package names, dependency conflicts, lockfile regeneration, and version tags for manual releases.

中文简介正在准备中。当前显示英语简介。

原文查看原文说明

Cherry-pick commits from chatbox-pro repo to the open chatbox repo, handling mobile-only files, package name differences, and other repo-specific exclusions.

集成工具GitHubPlaywright
查看安装方法

适用场景

  • Sync recent Pro changes into the open source edition
  • Transfer a specified range of Pro commits
  • Resolve conflicts caused by edition differences
  • Prepare version tags and a manual GitHub Release

包含的文件(1)

  • SKILL.md4.8 KB

SKILL.md(原文)

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

Cherry Pick Pro

Cherry-pick commits from the chatbox-pro repo (pro remote) to the open chatbox repo, filtering out mobile-only changes and adjusting for repo differences.

Usage

/cherry-pick-pro [from_commit] [to_commit]
  • from_commit: (optional) A pro/main commit hash to start from (exclusive). Must be a commit on pro/main, not an open-repo commit — see step 2. Defaults to auto-detecting the last synced pro commit.
  • to_commit: (optional) The commit hash to end at (inclusive). Defaults to pro/main HEAD.

Workflow

1. Sync remotes first

git fetch pro
git fetch origin

⚠️ Tag pollution: git fetch pro also fetches pro's tags (e.g. vX.Y.Z created on pro's release branch). These local tags point at pro commits, not open repo commits. Never push them as-is — see step 8.

2. Identify commits to cherry-pick

⚠️ The range bound must be a pro/main commit. The open repo and pro/main share no history (cherry-picks create new SHAs), so an open-repo commit hash as the lower bound makes A..pro/main return all of pro's history, not the increment.

Find the last synced pro commit by reading the cherry picked from pro commit <hash> footer that step 5 writes into each open-repo commit, then list pro commits after it:

# last synced pro commit (the lower bound)
last=$(git log --grep="cherry picked from pro commit" -1 --pretty=%B HEAD \
  | grep -oE 'pro commit [0-9a-f]+' | awk '{print $3}')
git log "$last"..pro/main --oneline --reverse  # commits to pick

If no footer is found (first-ever sync), pass from_commit explicitly.

3. Analyze each commit

For each commit, check the files it touches:

git diff-tree --no-commit-id --name-only -r <commit>

4. Cherry-pick rules

Files/directories to SKIP (delete if conflict):

  • android/ - mobile-only, not in open repo
  • ios/ - mobile-only, not in open repo
  • capacitor.config.ts - mobile config
  • .github/ - open repo has no CI; workflow/config differs (see step 8)
  • CLAUDE.md, AGENTS.md - pro-specific AI config
  • .cursorrules - pro-specific
  • .claude/ - pro-specific skills/config (including this skill itself), never sync to open repo

Package name differences:

  • Pro uses: xyz.chatboxapp.app
  • Open uses: xyz.chatboxapp.ce
  • When resolving conflicts in package.json or release/app/package.json, always keep the open repo name (xyz.chatboxapp.ce)

Pro-only dependencies to remove if added:

  • @playwright/test - pro testing only
  • playwright - pro testing only
  • @ruguoapp/jk-analytics - pro analytics only

pnpm-lock.yaml:

  • Will almost always conflict. Accept either side, then run pnpm install --no-frozen-lockfile at the end to regenerate.

5. Cherry-pick process

For each commit:

  1. Try git cherry-pick <hash> directly first
  2. If conflicts occur, use --no-commit and resolve:
    • Remove mobile-only files with git rm
    • Fix package name conflicts (keep ce)
    • Remove pro-only dependencies
    • Accept either side for pnpm-lock.yaml
  3. Commit with original message + (cherry picked from pro commit <hash>) note

6. Finalize

After all cherry-picks:

pnpm install --no-frozen-lockfile  # regenerate lockfile
git add pnpm-lock.yaml
git commit -m "chore: regenerate pnpm-lock.yaml for open repo"

7. Verify

git log --oneline <start>..HEAD  # review all new commits
pnpm install  # ensure deps resolve

8. Release (if syncing a version release)

The open repo has no CI workflows — releases are manual:

  1. Push the sync branch to origin/main
  2. Re-create the version tag on the open repo's commit. The local tag fetched from pro points at a pro commit — pushing it would leak pro's commit history into the open repo:
    git tag -d vX.Y.Z                 # delete pro's tag fetched in step 1
    git tag vX.Y.Z <open-repo-head>   # re-create on open repo commit
    git push origin vX.Y.Z
    
  3. Create the GitHub Release manually (no binary assets; notes = changelog + install links, copy format from the previous release):
    gh release view vX.Y.(Z-1) --json body --jq '.body'  # get template
    gh release create vX.Y.Z --title "vX.Y.Z" --latest --notes "..."
    

Version bump convention: only release/app/package.json gets the new version; root package.json stays 0.0.1 in the open repo.

Example

/cherry-pick-pro

This will auto-detect the last release on the current branch and cherry-pick all newer commits from pro/main.

评价

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

评论

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

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

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

0 / 1000 字

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

同一仓库的技能

Update Chatbox Pro interface translations by reviewing code changes and the surrounding screen context. The skill identifies affected translation keys, follows a shared glossary, and edits language JSON files while preserving placeholders and formatting tags.

中文简介正在准备中。当前显示英语简介。

  • Translate interface text added in uncommitted changes
  • Update translations for a specific commit range
  • Refresh translations after English text changes
chatboxai/chatbox4.2万2026年9月24日 更新

Evaluate how Chatbox answers questions about large attachments using synthetic and real documents. Check whether the model retrieves file content when needed, skips retrieval for unrelated requests, and investigate failures through the actual application flow.

中文简介正在准备中。当前显示英语简介。

  • Verify retrieval for questions about large attachments
  • Test file-related questions without explicit search requests
  • Check that unrelated requests skip file retrieval
chatboxai/chatbox4.2万2026年9月24日 更新

查看 chatboxai 的全部技能

报告此技能的问题