Skip to main content

commit

Create conventional commits with automatic semantic version bumps for this plugin marketplace and the affected plugin(s). Use this skill whenever the user asks to "commit", "commit my changes", "make a commit", "bump versions and commit", "ship these changes", or otherwise wants to create one or more commits in this marketplace repo. Prefer this skill over a plain `git commit` because it groups related files, derives scopes, proposes semver bumps for both the marketplace and any affected plugin's `plugin.json`, and uses conventional commit format with reasoning the user can validate.

소스 정보

저장소
asermax/claude-plugins
최근 소스 활동
2026년 9월 12일 06:46
감지된 SKILL.md 언어
영어
스타
1
포크
1

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
commit
description
Create conventional commits with automatic semantic version bumps for this plugin marketplace and the affected plugin(s). Use this skill whenever the user asks to "commit", "commit my changes", "make a commit", "bump versions and commit", "ship these changes", or otherwise wants to create one or more commits in this marketplace repo. Prefer this skill over a plain `git commit` because it groups related files, derives scopes, proposes semver bumps for both the marketplace and any affected plugin's `plugin.json`, and uses conventional commit format with reasoning the user can validate.
# Commit with Version Bump Automates conventional commits for this plugin marketplace by: 1. Analyzing all changed files (staged and unstaged) 2. Grouping related changes into logical commits 3. Determining affected scopes (marketplace + any touched plugin) 4. Proposing semantic version bumps with reasoning 5. Creating the commits after the user signs off ## Version files | Scope | Path | How to read | |---|---|---| | marketplace | `.claude-plugin/marketplace.json` | `jq -r '.metadata.version'` | | aur | `aur/.claude-plugin/plugin.json` | `jq -r '.version'` | | superpowers | `superpowers/.claude-plugin/plugin.json` | `jq -r '.version'` | | haft | `haft/.claude-plugin/plugin.json` | `jq -r '.version'` | | openspec | `openspec/.claude-plugin/plugin.json` | `jq -r '.version'` | | katachi | `katachi/.claude-plugin/plugin.json` | `jq -r '.version'` | | memu | `memu/.claude-plugin/plugin.json` | `jq -r '.version'` | | kanshi | `kanshi/.claude-plugin/plugin.json` | `jq -r '.version'` | | beads | `beads/.claude-plugin/plugin.json` | `jq -r '.version'` (present in repo but not currently shipped via marketplace.json — bump it only if its files actually change) | If a new plugin lands in the marketplace without an entry above, treat it the same way: read `<plugin>/.claude-plugin/plugin.json`, follow the rules below for plugin scopes. ## Semantic versioning rules These are **guidelines, not rigid rules** — the goal is that the version number tells consumers something honest about what changed. Use judgment. ### Marketplace versioning (consumer-focused) The marketplace version is what someone installing this marketplace sees. Think about whether they need to care. | Bump | When | Examples | |---|---|---| | **Major** | Something removed that could break existing setups | Plugin removed from marketplace, root command/skill deleted | | **Minor** | New functionality available to consumers | New plugin added, new root skill, significant new capabilities | | **Patch** | Improvements to existing functionality | Bug fixes in plugins, doc updates, small enhancements | Heuristics for `.claude/` (root marketplace) changes: - **New root command or skill** → typically Minor (new functionality available) - **Existing root command/skill modified** → depends on scope: - Significant new capability → Minor - Bug fix or clarification → Patch - Major rewrite that changes behavior → Minor or Major if breaking - **Plugin file modified** → typically Patch for marketplace (the plugin itself may bump higher independently) - **New plugin added** → Minor - **Plugin removed** → Major ### Plugin versioning (feature-focused) Each plugin tracks its own feature trajectory independently of the marketplace. **Major (breaking):** - Removing a command, agent, or skill entirely - Renaming a command/skill (breaks existing `/command` usage) - Changing command arguments in a breaking way **Minor (features):** - Adding a new command, agent, or skill - Adding new functionality to existing commands/skills - Significant prompt rewrites that change behavior - New configuration options **Patch (fixes):** - Small prompt tweaks - Typo fixes - Bug fixes in command logic - Minor clarifications - Formatting improvements ## Process ### 1. Gather changes ```bash git status --short git diff --cached --name-only git diff --name-only ``` Parse modified (M), added (A), deleted (D), and renamed (R) files. ### 2. Group related changes Cluster files into logical commits. Use these defaults but apply judgment — closely-related work belongs together even if it spans patterns. | Pattern | Grouping | |---|---| | `aur/commands/*.md` | One commit per command | | `superpowers/commands/*.md` | One commit per command | | `superpowers/agents/*.md` | One commit per agent | | `superpowers/skills/*/` | One commit per skill directory | | `superpowers/hooks/*` | Group hooks together unless clearly unrelated | | `beads/hooks/*` | Group hooks together unless clearly unrelated | | `haft/commands/*.md` | One commit per command | | `haft/skills/*/` | One commit per skill directory | | `openspec/**` | Group by feature area | | `katachi/commands/*.md` | One commit per command | | `katachi/agents/*.md` | One commit per agent | | `katachi/skills/*/` | One commit per skill directory | | `kanshi/**` | Group by feature area | | `memu/skills/*/` | One commit per skill directory | | `.claude/commands/*.md` | One commit per command file | | `.claude/skills/*/` | One commit per skill directory | | `.claude-plugin/marketplace.json` | Separate commit unless part of a plugin add/remove | | Root config files | Separate commits unless clearly related | **Examples of judgment calls:** - Changed `SKILL.md` plus its scripts in the same skill directory → single commit (same feature). - Added a new command and modified an unrelated one → two commits. - Modified a skill in `superpowers/` and an agent in `superpowers/` → two commits (different features). ### 3. Present proposed groups Show the user the proposed groups in a compact format and offer to adjust: ``` Proposed commit groups: 1. [lesserpowers/patch] Update agent communication skill - lesserpowers/skills/agent-communication/SKILL.md - lesserpowers/skills/agent-communication/scripts/chat.py 2. [marketplace/feat] Add commit skill - .claude/skills/commit/SKILL.md Would you like to adjust these groupings? ``` Use `AskUserQuestion` with options: - Proceed with proposed groups - Merge groups (combine into fewer commits) - Split groups (separate into more commits) - Exclude files (don't commit yet) ### 3b. Decide where the version bumps go **One group.** The bump belongs in that commit, as step 4 describes. **Several groups.** No content commit carries a version change. Bump once, in a commit of its own, after every content commit has landed. Work out each affected scope's bump from all the groups together and take the highest one: a minor anywhere makes that scope's bump minor. The message is `chore(marketplace): bump <scope> to <version>` when one scope moves, or `chore(marketplace): bump versions` when several do, with every scope's move in the body. A version that moves once per commit tells a consumer nothing: three commits landing together produce three versions nobody installed separately, and the intermediate ones describe a state that never shipped. ### 4. Process each commit group For each group, run steps a–h sequentially. With several groups, steps c, d, e and f happen once at the end instead, in the bump commit that 3b describes, and each content commit stages only its own files. #### a. Determine affected scopes | Path | Scope | |---|---| | `aur/**` | `aur` | | `superpowers/**` | `superpowers` | | `haft/**` | `haft` | | `openspec/**` | `openspec` | | `katachi/**` | `katachi` | | `kanshi/**` | `kanshi` | | `memu/**` | `memu` | | `beads/**` | `beads` | | `.claude-plugin/**` | `marketplace` | | `.claude/**` | `marketplace` | | Root files (`README.md`, `CLAUDE.md`, etc.) | `marketplace` | **Marketplace is always an affected scope**, because every change shows up in the marketplace consumer's view — but the bump type varies (often patch for a plugin-internal change, sometimes minor or major). A single commit can touch multiple scopes (e.g., adding a plugin bumps both the plugin AND the marketplace). #### b. Analyze change significance For each affected scope, choose Major / Minor / Patch. **Plugin scopes (aur, superpowers, haft, openspec, katachi, kanshi, memu, beads):** - **Major signals**: deletions in `commands/`, `agents/`, `skills/`; renames of those files; significant functionality removed. - **Minor signals**: new files in `commands/`, `agents/`, `skills/`; new templates or guides; significant prompt rewrites (check `git diff` size). - **Patch (default)**: small changes, typos, formatting, doc improvements, catalog updates. **Marketplace scope:** - **Major (typical)**: a plugin removed from `marketplace.json`; a root command/skill deleted. - **Minor (typical)**: new plugin added; new root command or skill added; significant new capability added to existing root content. - **Patch (typical)**: any plugin file changes; small fixes to root files; root config tweaks. #### c. Read current versions ```bash jq -r '.metadata.version' .claude-plugin/marketplace.json jq -r '.version' aur/.claude-plugin/plugin.json jq -r '.version' superpowers/.claude-plugin/plugin.json jq -r '.version' haft/.claude-plugin/plugin.json jq -r '.version' openspec/.claude-plugin/plugin.json jq -r '.version' katachi/.claude-plugin/plugin.json jq -r '.version' kanshi/.claude-plugin/plugin.json jq -r '.version' memu/.claude-plugin/plugin.json jq -r '.version' beads/.claude-plugin/plugin.json ``` Only read the version files for the scopes this commit actually affects — no need to read all of them every time. #### d. Calculate new versions ``` Current: X.Y.Z Major bump: (X+1).0.0 Minor bump: X.(Y+1).0 Patch bump: X.Y.(Z+1) ``` #### e. Propose version bumps with reasoning Present the analysis with brief reasoning so the user can sanity-check: ``` Commit: Update agent communication skill Affected scopes: - superpowers plugin - marketplace Changes: - Updated SKILL.md documentation - Modified chat.py script Proposed version bumps: - superpowers: 1.0.0 → 1.0.1 (patch: small fix) - marketplace: 2.2.0 → 2.2.1 (patch: improvement to existing plugin) Proposed commit message: fix(superpowers): update agent communication documentation Updated agent-communication skill documentation to clarify the notify→receive pattern and added examples. Version bump: superpowers 1.0.0 → 1.0.1, marketplace 2.2.0 → 2.2.1 ``` Use `AskUserQuestion` to confirm or adjust. Offer alternatives based on what was proposed: - **Proposing Major** → options: confirm / downgrade to minor / downgrade to patch - **Proposing Minor** → options: confirm / downgrade to patch - **Proposing Patch** → options: confirm / upgrade to minor (if it's actually a feature) Example: ``` AskUserQuestion({ questions: [{ question: "Ready to commit with these version bumps?", header: "Commit", multiSelect: false, options: [ { label: "Confirm and proceed (Recommended)", description: "Create commit with: katachi 1.3.0→1.4.0 (minor), marketplace 1.7.2→1.7.3 (patch)" }, { label: "Downgrade to patch", description: "Make katachi 1.3.0→1.3.1 instead of minor bump" } ] }] }) ``` If the user changes the bump type, recalculate, re-present, ask again. #### f. Update version files `jq` doesn't edit in place, so write to a temp file and `mv`: **Marketplace:** ```bash jq '.metadata.version = "X.Y.Z"' .claude-plugin/marketplace.json > /tmp/marketplace.json mv /tmp/marketplace.json .claude-plugin/marketplace.json ``` **Any plugin:** ```bash jq '.version = "X.Y.Z"' <plugin>/.claude-plugin/plugin.json > /tmp/<plugin>.json mv /tmp/<plugin>.json <plugin>/.claude-plugin/plugin.json ``` #### g. Stage files Stage the original changes plus any updated version files: ```bash git add <changed-file-1> <changed-file-2> ... <version-file-1> <version-file-2> ``` Prefer naming files explicitly over `git add -A` — `.claude-plugin/` changes and unrelated stray files can sneak in otherwise. #### h. Create the commit Use a heredoc so the message formats correctly: ```bash git commit -m "$(cat <<'EOF' <type>(<scope>): <description> <body explaining what changed and why> Version bump: <scope> X.Y.Z → X.Y.Z[, <other-scope> X.Y.Z → X.Y.Z] 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> EOF )" ``` If you (the assistant running this skill) know your exact model identity, you can use it instead of bare "Claude" in the Co-Authored-By line (e.g., `Claude Opus 4.7 <noreply@anthropic.com>`). Otherwise, the generic form is fine. ### 5. Repeat for each group Loop through every approved group. If the user excluded a group, skip it. ## Commit message format Conventional commits, with the version-bump footer: ``` <type>(<scope>): <short description> <longer description explaining the change> Version bump: <scope-name> X.Y.Z → X.Y.Z 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> ``` ### Type mapping | Significance | Type | |---|---| | Major (breaking) | Any type with `BREAKING CHANGE:` footer in body | | Minor (feature) | `feat` | | Patch (fix/doc/refactor/style/chore) | `fix`, `docs`, `refactor`, `style`, `chore` as appropriate | ### Scope values `aur`, `superpowers`, `haft`, `openspec`, `katachi`, `kanshi`, `memu`, `beads`, `marketplace`. ### Examples **Patch (plugin improvement):** ``` fix(superpowers): correct agent communication documentation Fixed unclear instructions in agent-communication SKILL.md regarding the notify→receive pattern. Version bump: superpowers 1.0.0 → 1.0.1, marketplace 2.2.0 → 2.2.1
GitHub에서 보기
이 SKILL.md는 매우 커서 SkillsMP가 여기에는 첫 섹션만 미리 보여줍니다. GitHub에서 보기