[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BZM1YZRF1AEGA0TQRDFXEX":3,"skill-same:01M6BZM1YZRF1AEGA0TQRDFXEX":52},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":24,"linkOnly":25,"markdownContent":26,"markdownBody":27,"frontMatter":28,"refName":30,"commitSha":31,"skillDirectory":32,"forksCount":33,"repositoryHtmlUrl":34,"repositoryHomepageUrl":35,"ownerHtmlUrl":36,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":37,"install":38,"resources":51},"01M6BZM1YZRF1AEGA0TQRDFXEX","github.split_branch_in_PRs",null,"Split current Git changes into small, cohesive PRs to simplify merging","causify-ai\u002Fhelpers","causify-ai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F121828442?v=4","01M6BZFTHW2MQR7FWK8CDW0DRA","Causify.AI","01M6BZFTPJ193AB5N089Z82HQG",155,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fgithub.split_branch_in_PRs\u002FSKILL.md",[],[19,20,21,22,23],"github","branch","github split branch in PRs","git","simplify","2026-11-10 10:12:30",false,"---\ndescription: Split current Git changes into small, cohesive PRs to simplify merging\nmodel: sonnet\n---\n\n# Goal\n\n- Propose how to split the changes between current `HEAD` of the branch and\n  `origin\u002Fmaster` into small PRs to minimize:\n  - The review complexity\n  - The risk of breaking the unit tests\n\n- If the task is not perfectly clear or complex, you MUST not perform it, but ask\n  for clarifications and create a plan for review\n  - Create a `plan.md` with 5 bullet points explaining what the plan is\n\n# Workflow\n\n## Read Rules\n\n- Read rules about:\n  - Coding: `.claude\u002Fskills\u002Fcoding.rules.md`\n  - Unit tests: `.claude\u002Fskills\u002Ftesting.rules.md`\n\n## Read the Changes in the Current Git Client\n\n- Obtain the files that need to be merged with:\n  ```bash\n  git diff --name-status origin\u002Fmaster HEAD\n  ...\n  ```\n\n- Analyze the difference between the current client and `master` (or\n  `origin\u002Fmaster`):\n  ```bash\n  git diff master...HEAD --name-only\n  # or if master is not available locally:\n  git diff origin\u002Fmaster...HEAD --name-only\n  ```\n\n## Propose PRs\n- Propose a set of PRs that decompose the changes in the current Git client, so\n  that there are coherent and tightly coupled changes\n\n- Prefer PRs that have the changes to an entire file instead of having to split\n  changes in a file across multiple PRs\n\n- Make sure that changes to files and their testing files are in the same PR\n\n- Merge low risk \u002F complexity PRs so that there are fewer PRs even if the content\n  of the resulting PR is the sum of multiple simpler ones\n  - In this case, the description is multiple bullets explain what each smaller\n    unit does\n\n## Order the PRs\n- Start with the PRs that have low risk and touch most files\n\n## Create pytest Commands\n\n- For each PR create:\n  - A file `pr\u003CNUM>.files.txt` with the files changed, e.g.,\n    ```verbatim\n    .claude\u002Fskills\n    .claude\u002Ftemplates\n    .claude\u002Fnotify.sh\n    .claude\u002Fsettings.local.json\n    ```\n  - A file `pr\u003CNUM>.pytest.sh` with the pytest command to run to exercise the\n    changes by running the tests in all the modified files and make sure the PR\n    is running successfully, e.g.,\n    ```bash\n    #!\u002Fbin\u002Fbash\n    pytest_log \\\n      dev_scripts_helpers\u002Fcoding_tools\u002Ftest \\\n      dev_scripts_helpers\u002Fdockerize\u002Ftest \\\n      linters2\u002Ftest \\\n      $@\n    ```\n  - Make this script executable with `chmod +x pr\u003CNUM>.pytest.sh`\n\n## Report the Output\n\n- Create a file `github_PR_plan.md` with the plan to split the PRs, following\n  strictly the format in `.claude\u002Ftemplates\u002Fgithub_PR_plan.template.md`\n- If the file `github_PR_plan.md` already exists then updated it removing\n  the PRs already merged based on the current `i git_files` and the `git log`\n- Run the linter on `github_PR_plan.md`\n  ```bash\n  > lint_text.py -i github_PR_plan.md\n  ```\n\n# Verification\n- [ ] Confirm every changed file is assigned to exactly one PR\n- [ ] Confirm each PR's `pr\u003CNUM>.pytest.sh` is executable and passes\n- [ ] Confirm `github_PR_plan.md` passes `lint_text.py`\n","# Goal\n\n- Propose how to split the changes between current `HEAD` of the branch and\n  `origin\u002Fmaster` into small PRs to minimize:\n  - The review complexity\n  - The risk of breaking the unit tests\n\n- If the task is not perfectly clear or complex, you MUST not perform it, but ask\n  for clarifications and create a plan for review\n  - Create a `plan.md` with 5 bullet points explaining what the plan is\n\n# Workflow\n\n## Read Rules\n\n- Read rules about:\n  - Coding: `.claude\u002Fskills\u002Fcoding.rules.md`\n  - Unit tests: `.claude\u002Fskills\u002Ftesting.rules.md`\n\n## Read the Changes in the Current Git Client\n\n- Obtain the files that need to be merged with:\n  ```bash\n  git diff --name-status origin\u002Fmaster HEAD\n  ...\n  ```\n\n- Analyze the difference between the current client and `master` (or\n  `origin\u002Fmaster`):\n  ```bash\n  git diff master...HEAD --name-only\n  # or if master is not available locally:\n  git diff origin\u002Fmaster...HEAD --name-only\n  ```\n\n## Propose PRs\n- Propose a set of PRs that decompose the changes in the current Git client, so\n  that there are coherent and tightly coupled changes\n\n- Prefer PRs that have the changes to an entire file instead of having to split\n  changes in a file across multiple PRs\n\n- Make sure that changes to files and their testing files are in the same PR\n\n- Merge low risk \u002F complexity PRs so that there are fewer PRs even if the content\n  of the resulting PR is the sum of multiple simpler ones\n  - In this case, the description is multiple bullets explain what each smaller\n    unit does\n\n## Order the PRs\n- Start with the PRs that have low risk and touch most files\n\n## Create pytest Commands\n\n- For each PR create:\n  - A file `pr\u003CNUM>.files.txt` with the files changed, e.g.,\n    ```verbatim\n    .claude\u002Fskills\n    .claude\u002Ftemplates\n    .claude\u002Fnotify.sh\n    .claude\u002Fsettings.local.json\n    ```\n  - A file `pr\u003CNUM>.pytest.sh` with the pytest command to run to exercise the\n    changes by running the tests in all the modified files and make sure the PR\n    is running successfully, e.g.,\n    ```bash\n    #!\u002Fbin\u002Fbash\n    pytest_log \\\n      dev_scripts_helpers\u002Fcoding_tools\u002Ftest \\\n      dev_scripts_helpers\u002Fdockerize\u002Ftest \\\n      linters2\u002Ftest \\\n      $@\n    ```\n  - Make this script executable with `chmod +x pr\u003CNUM>.pytest.sh`\n\n## Report the Output\n\n- Create a file `github_PR_plan.md` with the plan to split the PRs, following\n  strictly the format in `.claude\u002Ftemplates\u002Fgithub_PR_plan.template.md`\n- If the file `github_PR_plan.md` already exists then updated it removing\n  the PRs already merged based on the current `i git_files` and the `git log`\n- Run the linter on `github_PR_plan.md`\n  ```bash\n  > lint_text.py -i github_PR_plan.md\n  ```\n\n# Verification\n- [ ] Confirm every changed file is assigned to exactly one PR\n- [ ] Confirm each PR's `pr\u003CNUM>.pytest.sh` is executable and passes\n- [ ] Confirm `github_PR_plan.md` passes `lint_text.py`\n",{"model":29,"description":7},"sonnet","master","39143a859859181eff7e774457997b5278fd9e99",".claude\u002Fskills\u002Fgithub.split_branch_in_PRs",170,"https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers","https:\u002F\u002Fcausify.ai","https:\u002F\u002Fgithub.com\u002Fcausify-ai","2026-11-02 02:09:15",{"source":8,"skillName":5,"commands":39,"prompt":49,"zipAvailable":50},[40,43,46],{"tool":41,"command":42},"npx","npx skills add causify-ai\u002Fhelpers --skill github.split_branch_in_PRs",{"tool":44,"command":45},"bunx","bunx skills add causify-ai\u002Fhelpers --skill github.split_branch_in_PRs",{"tool":47,"command":48},"pnpm","pnpm dlx skills add causify-ai\u002Fhelpers --skill github.split_branch_in_PRs","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fgithub.split_branch_in_PRs\u002FSKILL.md",true,[],[53,72,89,100,109,118],{"skillNo":54,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":64,"publishedAt":24},"01M6C9ZMM0XSXCHHABMJ9XB1JB","tutorial_in_60_mins.propagate_docker_changes","Sync tutorial and class-project Docker files to match project_template","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftutorial_in_60_mins.propagate_docker_changes\u002FSKILL.md",[59],{"categoryNo":60,"categoryName":61,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[65,66,67,68,69,70,71],"tutorial in 60 mins propagate docker changes","tutorial","docker","files","haiku","template","sync",{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":81,"publishedAt":24},"01M6C9ZJK8QJ9FNCY39WVF3GMG","tutorial_in_60_mins.merge_markdown","Merge the content of a markdown file into a Jupyter notebook","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftutorial_in_60_mins.merge_markdown\u002FSKILL.md",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000002","文档处理",[82,83,66,84,85,69,86,87,88],"merge","tutorial in 60 mins merge markdown","markdown","jupyter","file","content","jupyter notebook",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":24},"01M6C9ZFYK13ZCT1E8BEEC4NG4","tutorial_in_60_mins.format","Format a directory to follow the \"Learn X in 60 Minutes\" tutorial conventions","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftutorial_in_60_mins.format\u002FSKILL.md",[],[96,66,97,98,99,69],"tutorial in 60 mins format","format","directory","learn",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":24},"01M6C9ZDKXSBKNKX7M3X4W38G5","tutorial_in_60_mins.create","Create a tutorial directory for the Learn X in 60 Minutes conventions","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftutorial_in_60_mins.create\u002FSKILL.md",[],[107,66,108,98,99],"tutorial in 60 mins create","create",{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":24},"01M6BZS5Z0QE03WRS1TM3XJEY9","todo.reorg_in_progress","Reorganize ai_task_queue.md so in-progress tasks, not-started tasks, and mislabeled topic headers sit under the right H1 stage","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftodo.reorg_in_progress\u002FSKILL.md",[],[116,117],"todo reorg in progress","tasks",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":24},"01M6BZS4CQZ6KK2KQ26SVB7QCS","todo.reorg_headers","Reorganize ai_task_queue.md .md so every H2 topic matches ALL TOPICS and every H3 task sits under the right topic, keeping its H1 stage","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftodo.reorg_headers\u002FSKILL.md",[],[125],"todo reorg headers"]