mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-07-03 12:27:41 +08:00
### What this PR does Before this PR: - CLAUDE.md contained detailed PR workflow instructions that were loaded in every agent session, consuming unnecessary tokens - No unified project-level skills management mechanism; adding public skills lacked standardization - No automated checks to prevent non-compliant skills from being merged - Team members had no convenient way to share skills with each other After this PR: - Simplified PR instructions in CLAUDE.md, now loaded on-demand via the `gh-create-pr` skill - Introduced project-level skills management (`.agents/skills/` directory + `public-skills.txt` whitelist) - Added `scripts/skills-sync.ts` and `scripts/skills-check.ts` for automated management - Integrated skills validation into CI to prevent non-whitelisted skills from being merged - **Teams can now easily share skills through the project-level mechanism**, with `skills-sync.ts` automatically syncing skills to all team members' local environments, streamlining onboarding and avoiding duplicated configuration efforts - **Optimized PR creation workflow**: `gh-create-pr` skill enforces English PR body writing and displays the draft to users for review before creation, ensuring quality and compliance Fixes # ### Why we need it and why it was done in this way The following tradeoffs were made: - Moved PR workflow from CLAUDE.md to a skill, sacrificing immediate visibility for token efficiency - **Introduced whitelist mechanism (`public-skills.txt`) instead of auto-scanning all files**: Allows developers to freely use private project-level skills in the `.agents/skills/` directory (e.g., team-internal skills, personal customizations). Only skills added to the whitelist are tracked by git and submitted. This ensures standardization for shared skills while preserving development flexibility - Skills exist in both `.agents/skills/` (project-level, shareable) and `.claude/skills/` (local, private) - **Symlink only SKILL.md files instead of entire directories**: On some Windows/restricted filesystems, symlinks may fail or be treated as regular files. If an entire directory is symlinked, failure results in a regular file instead of a directory, causing complete skill failure that's hard to diagnose. Symlinking only SKILL.md allows quick detection when symlinks fail (file content displays directly or errors), reducing troubleshooting costs The following alternatives were considered: - Keeping PR instructions in CLAUDE.md with collapsible blocks, but this still consumes context tokens - Using git hooks for pre-commit checks, but CI checks are more reliable and don't block local development Links to places where the discussion took place: N/A ### Breaking changes None ### Special notes for your reviewer - `gh-create-pr` skill fully implements the project's PR workflow requirements (read template → display body → confirm → create) - `skills-check.ts` validates: 1) tracked skills are in the whitelist; 2) whitelist skills have corresponding files - Process for adding new public skills: 1) create skill files; 2) add to `public-skills.txt`; 3) CI auto-validation - `.claude/skills/` added to `.gitignore` for private skills ### Checklist This checklist is not enforcing, but it's a reminder of items that could be relevant to every PR. Approvers are expected to review this list. - [x] PR: The PR description is expressive enough and will help future contributors - [x] Code: [Write code that humans can understand](https://en.wikiquote.org/wiki/Martin_Fowler#code-for-humans) and [Keep it simple](https://en.wikipedia.org/wiki/KISS_principle) - [x] Refactor: You have [left the code cleaner than you found it (Boy Scout Rule)](https://learning.oreilly.com/library/view/97-things-every/9780596809515/ch08.html) - [x] Upgrade: Impact of this change on upgrade flows was considered and is present (link) or not required. You want a user-guide update if it's a user facing feature. - [ ] Documentation: A user-guide update was considered and is present (link) or not required. You want a user-guide update if it's a user facing feature. ### Release note ```release-note Optimize PR workflow by moving instructions to on-demand skill; introduce project-level skills management with automated validation ```