git-commit 是 everyinc/compound-engineering-plugin 提供的技能,用途是把当前工作区的改动整理成一条(必要时几条)清晰的 git 提交。
主要能力:读取工作区状态与差异、当前分支、最近提交、远端默认分支等上下文;根据仓库说明或最近历史判断提交信息风格,找不到模式时默认使用约定式提交 type(scope): description;在文件层面按逻辑关注点拆分多个提交,不做 hunk 级拆分;提交后再次检查状态并报告提交哈希与主题。
使用方式:在 Claude Code 中,技能已预填 Git 状态、工作区差异、当前分支、最近提交、远端默认分支五个区块,直接使用,无需重复执行。非 Claude Code 环境时,先运行一条命令收集上下文: printf '=== STATUS ===\n'; git status; printf '\n=== DIFF ===\n'; git diff HEAD; printf '\n=== BRANCH ===\n'; git branch --show-current; printf '\n=== LOG ===\n'; git log --oneline -10; printf '\n=== DEFAULT_BRANCH ===\n'; git rev-parse --abbrev-ref origin/HEAD 2>/dev/null || echo 'DEFAULT_BRANCH_UNRESOLVED' 默认分支名取不到时,可尝试 gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name',再失败则回退 main。
关键流程:工作区干净则报告无可提交并停止;分支为空(detached HEAD)时询问是否新建分支,可用 git checkout -b <branch-name> 创建;当前在 main、master 或默认分支时,先警告并询问是否继续或新建分支;暂存时优先按文件名指定文件,避免 git add -A / git add . 误纳入 .env、凭据等敏感或不相关文件;提交信息主题行用祈使语气、说明原因,必要时用空行加正文,并用 heredoc 保持格式。
限制:需要平台提供阻塞式提问工具(如 AskUserQuestion、request_user_input、ask_user),否则需人工选择后再继续;不做文件内 hunk 拆分;具体提交风格取决于仓库已有约定或历史,资料未指定统一规则。