From ba1e6370e17af8bb84273d4b6d573ea9c5ad597b Mon Sep 17 00:00:00 2001 From: Zhongwei Li Date: Sat, 29 Nov 2025 18:22:52 +0800 Subject: [PATCH] Initial commit --- .claude-plugin/plugin.json | 14 +++ README.md | 3 + commands/commit.md | 39 +++++++ commands/create-pr.md | 38 +++++++ plugin.lock.json | 57 +++++++++++ skills/committing-work/SKILL.md | 134 +++++++++++++++++++++++++ skills/creating-pull-requests/SKILL.md | 114 +++++++++++++++++++++ 7 files changed, 399 insertions(+) create mode 100644 .claude-plugin/plugin.json create mode 100644 README.md create mode 100644 commands/commit.md create mode 100644 commands/create-pr.md create mode 100644 plugin.lock.json create mode 100644 skills/committing-work/SKILL.md create mode 100644 skills/creating-pull-requests/SKILL.md diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..c067111 --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,14 @@ +{ + "name": "git-workflow", + "description": "Git and GitHub workflow commands for commits and pull requests", + "version": "1.0.0", + "author": { + "name": "David Lopes" + }, + "skills": [ + "./skills" + ], + "commands": [ + "./commands" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..ba90539 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# git-workflow + +Git and GitHub workflow commands for commits and pull requests diff --git a/commands/commit.md b/commands/commit.md new file mode 100644 index 0000000..01dd627 --- /dev/null +++ b/commands/commit.md @@ -0,0 +1,39 @@ +--- +name: commit +description: Create git commits with user approval and no Claude attribution +--- + +# Committing Work + +## Overview + +**Core principle:** Analyze changes โ†’ Plan commits โ†’ Execute. + +## The Process +**IMPORTANT:** use skill `committing-work` to learn how to draft good commit messages and how to organize commits. + +### Step 1: Think about what changed + +1. Review the conversation history and understand what was accomplished +2. Run `git status` to see current changes +3. Run `git diff` to understand the modifications +4. Consider whether changes should be one commit or multiple logical commits + +### Step 2: Plan your commit(s) + +1. Identify which files belong together +2. Draft clear, descriptive commit messages +3. Use imperative mood in commit messages +4. Focus on why the changes were made, not just what + +### Step 3: Present your plan to the user +> **IMPORTANT** this step can be skipped if the user explicitely allowed. + +1. List the files you plan to add for each commit +2. Show the commit message(s) you'll use +3. Ask: "I plan to create [N] commit(s) with these changes. Shall I proceed?" + +### Step 4: Execute planned commits +1. Use `git add` with specific files (never use `-A` or `.`) +- Create commits with your planned messages +- Show the result with `git log --oneline -n [number]` diff --git a/commands/create-pr.md b/commands/create-pr.md new file mode 100644 index 0000000..d5a447b --- /dev/null +++ b/commands/create-pr.md @@ -0,0 +1,38 @@ +--- +name: create-pr +description: Create a new branch, push to remote, and create a pull request on GitHub +--- + +You are helping create a GitHub pull request. Follow these steps: + +**ASSUMPTIONS:** +- All changes are already committed locally +- The current branch is the one with the changes + +**STEPS:** + +1. **Analyze the commits:** + - Run `git log origin/main..HEAD` (or appropriate base branch) to see all commits that will be included + - Run `git diff origin/main...HEAD` to see the full diff + +2. **Create a new branch:** + - Generate a descriptive branch name based on the changes (use kebab-case, e.g., `feature/add-user-auth` or `fix/memory-leak`) + - Create and checkout the new branch: `git checkout -b ` + +3. **Push to remote:** + - Push the new branch to origin with tracking: `git push -u origin ` + +4. **Create the pull request:** + - Analyze ALL commits (not just the latest) to understand the full scope of changes + - Generate a clear, concise title (max 72 characters) that describes what the PR does + - Create a PR body with: + - Brief summary of changes (2-3 sentences) + - Why these changes were made + - Any relevant context or notes + +**IMPORTANT:** +- DO NOT use the TodoWrite tool +- Be concise and focused +- Return the PR URL when done +- If $ARGUMENTS is provided, use it as context or as the target base branch +- Use the GH cli tool to interact with GitHub diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..9ca885e --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,57 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:dnlopes/claude-code-plugins:git-workflow", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "fcbf08c8665382b0d330d60945bd2de384d44090", + "treeHash": "1c22e0a6defd57c68d8b100f3099f335cf5ecc023f33f8d66768d698ce491fcf", + "generatedAt": "2025-11-28T10:16:32.266506Z", + "toolVersion": "publish_plugins.py@0.2.0" + }, + "origin": { + "remote": "git@github.com:zhongweili/42plugin-data.git", + "branch": "master", + "commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390", + "repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data" + }, + "manifest": { + "name": "git-workflow", + "description": "Git and GitHub workflow commands for commits and pull requests", + "version": "1.0.0" + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "73515100b8e49aaa69859daff7979e01e7e94f751d31aecb91549f294ba045d7" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "d1ced03ae936f2d2d3380daa3e30090c5b6184e8c72478413517082ca6b589a2" + }, + { + "path": "commands/create-pr.md", + "sha256": "5057cada9774ce3eb0850f219d42b4d44d8e6411fb7c39dffdcdf1b803acfafd" + }, + { + "path": "commands/commit.md", + "sha256": "2402876f3eb313ce8c56236ba6a33f4b230d6ada4aa6d719933cffd61ca49fbd" + }, + { + "path": "skills/creating-pull-requests/SKILL.md", + "sha256": "74971c2a1a1a162d95fc9dd3ed2c32f7eb2366207e31dbf566ec354e7c2ebf20" + }, + { + "path": "skills/committing-work/SKILL.md", + "sha256": "f4ca71ff698b535376c488fae63e0fa28dbaea11b02807dc8a4459226b896170" + } + ], + "dirSha256": "1c22e0a6defd57c68d8b100f3099f335cf5ecc023f33f8d66768d698ce491fcf" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file diff --git a/skills/committing-work/SKILL.md b/skills/committing-work/SKILL.md new file mode 100644 index 0000000..4d5de29 --- /dev/null +++ b/skills/committing-work/SKILL.md @@ -0,0 +1,134 @@ +--- +name: committing-work +description: Use this skill before committing changes on the repository. +--- + +# Committing Work + +## Overview + +**Announce at start:** "๐ŸŸข I'm using the committing-work skill to complete this work." + +## Key Principles + +- **Commit message**: commit messages must be constructed based on the changes detected +- **Atomic commits**: Each commit should contain related changes that serve a single purpose +- **Split large changes**: If changes touch multiple concerns, split them into separate commits +- **Conventional commit format**: Use the format `(): `: + - `` section is optional + - `` section is one of: + - `feat`: A new feature + - `fix`: A bug fix + - `docs`: Documentation changes + - `style`: Code style changes (formatting, etc) + - `refactor`: Code changes that neither fix bugs nor add features + - `perf`: Performance improvements + - `test`: Adding or fixing tests + - `chore`: Changes to the build process, tools, etc. +- **Present tense, imperative mood**: Write commit messages as commands (e.g., "add feature" not "added feature") +- **Ignore not relevant changes**: Changed files unrelated to the work done should be ignored (e.g., temporary files). If unsure, ask the user for guidance. +- **Concise first line**: Keep the first line under 72 characters +- **Use emojis**: Each commit type **MUST** be paired with an appropriate emoji: + - โœจ `feat`: New feature + - ๐Ÿ› `fix`: Bug fix + - ๐Ÿ“ `docs`: Documentation + - ๐Ÿ’„ `style`: Formatting/style + - โ™ป๏ธ `refactor`: Code refactoring + - โšก๏ธ `perf`: Performance improvements + - โœ… `test`: Tests + - ๐Ÿ”ง `chore`: Tooling, configuration + - ๐Ÿš€ `ci`: CI/CD improvements + - ๐Ÿ—‘๏ธ `revert`: Reverting changes + - ๐Ÿงช `test`: Add a failing test + - ๐Ÿšจ `fix`: Fix compiler/linter warnings + - ๐Ÿ”’๏ธ `fix`: Fix security issues + - ๐Ÿ‘ฅ `chore`: Add or update contributors + - ๐Ÿšš `refactor`: Move or rename resources + - ๐Ÿ—๏ธ `refactor`: Make architectural changes + - ๐Ÿ”€ `chore`: Merge branches + - ๐Ÿ“ฆ๏ธ `chore`: Add or update compiled files or packages + - โž• `chore`: Add a dependency + - โž– `chore`: Remove a dependency + - ๐ŸŒฑ `chore`: Add or update seed files + - ๐Ÿง‘โ€๐Ÿ’ป `chore`: Improve developer experience + - ๐Ÿงต `feat`: Add or update code related to multithreading or concurrency + - ๐Ÿ”๏ธ `feat`: Improve SEO + - ๐Ÿท๏ธ `feat`: Add or update types + - ๐Ÿ’ฌ `feat`: Add or update text and literals + - ๐ŸŒ `feat`: Internationalization and localization + - ๐Ÿ‘” `feat`: Add or update business logic + - ๐Ÿ“ฑ `feat`: Work on responsive design + - ๐Ÿšธ `feat`: Improve user experience / usability + - ๐Ÿฉน `fix`: Simple fix for a non-critical issue + - ๐Ÿฅ… `fix`: Catch errors + - ๐Ÿ‘ฝ๏ธ `fix`: Update code due to external API changes + - ๐Ÿ”ฅ `fix`: Remove code or files + - ๐ŸŽจ `style`: Improve structure/format of the code + - ๐Ÿš‘๏ธ `fix`: Critical hotfix + - ๐ŸŽ‰ `chore`: Begin a project + - ๐Ÿ”– `chore`: Release/Version tags + - ๐Ÿšง `wip`: Work in progress + - ๐Ÿ’š `fix`: Fix CI build + - ๐Ÿ“Œ `chore`: Pin dependencies to specific versions + - ๐Ÿ‘ท `ci`: Add or update CI build system + - ๐Ÿ“ˆ `feat`: Add or update analytics or tracking code + - โœ๏ธ `fix`: Fix typos + - โช๏ธ `revert`: Revert changes + - ๐Ÿ“„ `chore`: Add or update license + - ๐Ÿ’ฅ `feat`: Introduce breaking changes + - ๐Ÿฑ `assets`: Add or update assets + - โ™ฟ๏ธ `feat`: Improve accessibility + - ๐Ÿ’ก `docs`: Add or update comments in source code + - ๐Ÿ—ƒ๏ธ `db`: Perform database related changes + - ๐Ÿ”Š `feat`: Add or update logs + - ๐Ÿ”‡ `fix`: Remove logs + - ๐Ÿคก `test`: Mock things + - ๐Ÿฅš `feat`: Add or update an easter egg + - ๐Ÿ™ˆ `chore`: Add or update .gitignore file + - ๐Ÿ“ธ `test`: Add or update snapshots + - โš—๏ธ `experiment`: Perform experiments + - ๐Ÿšฉ `feat`: Add, update, or remove feature flags + - ๐Ÿ’ซ `ui`: Add or update animations and transitions + - โšฐ๏ธ `refactor`: Remove dead code + - ๐Ÿฆบ `feat`: Add or update code related to validation + - โœˆ๏ธ `feat`: Improve offline support + +### Guidelines for Splitting Commits + +When analyzing the diff, consider splitting commits based on these criteria: + +1. **Different concerns**: Changes to unrelated parts of the codebase +2. **Different types of changes**: Mixing features, fixes, refactoring, etc. +3. **File patterns**: Changes to different types of files (e.g., source code vs documentation) +4. **Logical grouping**: Changes that would be easier to understand or review separately +6. **Size**: Very large changes that would be clearer if broken down + +### Examples + +Good commit messages: +- โœจ feat: add user authentication system +- ๐Ÿ› fix: resolve memory leak in rendering process +- ๐Ÿ“ docs: update API documentation with new endpoints +- โ™ป๏ธ refactor: simplify error handling logic in parser +- ๐Ÿšจ fix: resolve linter warnings in component files +- ๐Ÿง‘โ€๐Ÿ’ป chore: improve developer tooling setup process +- ๐Ÿ‘” feat: implement business logic for transaction validation +- ๐Ÿฉน fix: address minor styling inconsistency in header +- ๐Ÿš‘๏ธ fix: patch critical security vulnerability in auth flow +- ๐ŸŽจ style: reorganize component structure for better readability +- ๐Ÿ”ฅ fix: remove deprecated legacy code +- ๐Ÿฆบ feat: add input validation for user registration form +- ๐Ÿ’š fix: resolve failing CI pipeline tests +- ๐Ÿ“ˆ feat: implement analytics tracking for user engagement +- ๐Ÿ”’๏ธ fix: strengthen authentication password requirements +- โ™ฟ๏ธ feat: improve form accessibility for screen readers + +Example of splitting commits: +- First commit: โœจ feat: add new solc version type definitions +- Second commit: ๐Ÿ“ docs: update documentation for new solc versions +- Third commit: ๐Ÿ”ง chore: update package.json dependencies +- Fourth commit: ๐Ÿท๏ธ feat: add type definitions for new API endpoints +- Fifth commit: ๐Ÿงต feat: improve concurrency handling in worker threads +- Sixth commit: ๐Ÿšจ fix: resolve linting issues in new code +- Seventh commit: โœ… test: add unit tests for new solc version features +- Eighth commit: ๐Ÿ”’๏ธ fix: update dependencies with security vulnerabilities diff --git a/skills/creating-pull-requests/SKILL.md b/skills/creating-pull-requests/SKILL.md new file mode 100644 index 0000000..fcd8d1e --- /dev/null +++ b/skills/creating-pull-requests/SKILL.md @@ -0,0 +1,114 @@ +--- +name: creating-pull-requests +description: Use this skill before creating pull requests +--- + +# Committing Work + +## Overview + +**Announce at start:** "๐ŸŸข I'm using the creating-pull-requests skill to complete this work." + +## Key Principles + +- Pull-request titles must follow all the commit message rules as described in skill `committing-work` +- **Conventional commit format**: Use the format `(): `: + - `` section is optional + - `` section is one of: + - `feat`: A new feature + - `fix`: A bug fix + - `docs`: Documentation changes + - `style`: Code style changes (formatting, etc) + - `refactor`: Code changes that neither fix bugs nor add features + - `perf`: Performance improvements + - `test`: Adding or fixing tests + - `chore`: Changes to the build process, tools, etc. +- **Language**: Always use English for PR titles and descriptions +- **Use emojis**: Each commit type **MUST** be paired with an appropriate emoji: + - โœจ `feat`: New feature + - ๐Ÿ› `fix`: Bug fix + - ๐Ÿ“ `docs`: Documentation + - ๐Ÿ’„ `style`: Formatting/style + - โ™ป๏ธ `refactor`: Code refactoring + - โšก๏ธ `perf`: Performance improvements + - โœ… `test`: Tests + - ๐Ÿ”ง `chore`: Tooling, configuration + - ๐Ÿš€ `ci`: CI/CD improvements + - ๐Ÿ—‘๏ธ `revert`: Reverting changes + - ๐Ÿงช `test`: Add a failing test + - ๐Ÿšจ `fix`: Fix compiler/linter warnings + - ๐Ÿ”’๏ธ `fix`: Fix security issues + - ๐Ÿ‘ฅ `chore`: Add or update contributors + - ๐Ÿšš `refactor`: Move or rename resources + - ๐Ÿ—๏ธ `refactor`: Make architectural changes + - ๐Ÿ”€ `chore`: Merge branches + - ๐Ÿ“ฆ๏ธ `chore`: Add or update compiled files or packages + - โž• `chore`: Add a dependency + - โž– `chore`: Remove a dependency + - ๐ŸŒฑ `chore`: Add or update seed files + - ๐Ÿง‘โ€๐Ÿ’ป `chore`: Improve developer experience + - ๐Ÿงต `feat`: Add or update code related to multithreading or concurrency + - ๐Ÿ”๏ธ `feat`: Improve SEO + - ๐Ÿท๏ธ `feat`: Add or update types + - ๐Ÿ’ฌ `feat`: Add or update text and literals + - ๐ŸŒ `feat`: Internationalization and localization + - ๐Ÿ‘” `feat`: Add or update business logic + - ๐Ÿ“ฑ `feat`: Work on responsive design + - ๐Ÿšธ `feat`: Improve user experience / usability + - ๐Ÿฉน `fix`: Simple fix for a non-critical issue + - ๐Ÿฅ… `fix`: Catch errors + - ๐Ÿ‘ฝ๏ธ `fix`: Update code due to external API changes + - ๐Ÿ”ฅ `fix`: Remove code or files + - ๐ŸŽจ `style`: Improve structure/format of the code + - ๐Ÿš‘๏ธ `fix`: Critical hotfix + - ๐ŸŽ‰ `chore`: Begin a project + - ๐Ÿ”– `chore`: Release/Version tags + - ๐Ÿšง `wip`: Work in progress + - ๐Ÿ’š `fix`: Fix CI build + - ๐Ÿ“Œ `chore`: Pin dependencies to specific versions + - ๐Ÿ‘ท `ci`: Add or update CI build system + - ๐Ÿ“ˆ `feat`: Add or update analytics or tracking code + - โœ๏ธ `fix`: Fix typos + - โช๏ธ `revert`: Revert changes + - ๐Ÿ“„ `chore`: Add or update license + - ๐Ÿ’ฅ `feat`: Introduce breaking changes + - ๐Ÿฑ `assets`: Add or update assets + - โ™ฟ๏ธ `feat`: Improve accessibility + - ๐Ÿ’ก `docs`: Add or update comments in source code + - ๐Ÿ—ƒ๏ธ `db`: Perform database related changes + - ๐Ÿ”Š `feat`: Add or update logs + - ๐Ÿ”‡ `fix`: Remove logs + - ๐Ÿคก `test`: Mock things + - ๐Ÿฅš `feat`: Add or update an easter egg + - ๐Ÿ™ˆ `chore`: Add or update .gitignore file + - ๐Ÿ“ธ `test`: Add or update snapshots + - โš—๏ธ `experiment`: Perform experiments + - ๐Ÿšฉ `feat`: Add, update, or remove feature flags + - ๐Ÿ’ซ `ui`: Add or update animations and transitions + - โšฐ๏ธ `refactor`: Remove dead code + - ๐Ÿฆบ `feat`: Add or update code related to validation + - โœˆ๏ธ `feat`: Improve offline support +- Use GitHub CLI to create pull-requests: +```bash +gh pr create --base main --head --title "" --body "" +``` + +### Examples + +Good pull request titles: +- โœจ feat: add user authentication system +- ๐Ÿ› fix: resolve memory leak in rendering process +- ๐Ÿ“ docs: update API documentation with new endpoints +- โ™ป๏ธ refactor: simplify error handling logic in parser +- ๐Ÿšจ fix: resolve linter warnings in component files +- ๐Ÿง‘โ€๐Ÿ’ป chore: improve developer tooling setup process +- ๐Ÿ‘” feat: implement business logic for transaction validation +- ๐Ÿฉน fix: address minor styling inconsistency in header +- ๐Ÿš‘๏ธ fix: patch critical security vulnerability in auth flow +- ๐ŸŽจ style: reorganize component structure for better readability +- ๐Ÿ”ฅ fix: remove deprecated legacy code +- ๐Ÿฆบ feat: add input validation for user registration form +- ๐Ÿ’š fix: resolve failing CI pipeline tests +- ๐Ÿ“ˆ feat: implement analytics tracking for user engagement +- ๐Ÿ”’๏ธ fix: strengthen authentication password requirements +- โ™ฟ๏ธ feat: improve form accessibility for screen readers