关于 cursor-hook-authoring
cursor-hook-authoring 是一份设计 Cursor Cloud Agent 环境中 Git hook 的技能说明,面向需要管理提交消息 hook 的开发者。它详述 hook 执行顺序、Co-authored-by 行清理、安装及测试要求。
主要功能
- 01说明 hook 执行顺序
- 02规范署名行清理实现
- 03指导安装脚本配置
- 04涵盖 lefthook 共存
- 05列出测试步骤
适用场景
- 01配置 Cursor Cloud Agent 的提交消息 hook
- 02移除自动添加的 Co-authored-by 行
- 03协调 Cursor hook 与 lefthook
- 04验证 hook 安装及清理效果
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ philtzjp/ skills --skill cursor-hook-authoring安装后在 Claude Code 中输入/cursor-hook-authoring确认已加载。
详细介绍
来自项目 READMECursor Hook 設計
発火タイミング
- Cursor Cloud Agent 環境で Git hook を追加・変更する
Co-authored-by:の自動付与と除去の連鎖を設計する- lefthook 等の既存 hook と Cursor 管理 hook の共存を整理する
Git hook と Cursor Cloud の commit-msg 連鎖
実行順
Cursor Cloud Agent は .git/hooks/<hook-name> を .dispatcher 経由で差し替える。commit-msg の実行順は次のとおり:
- ユーザー hook —
.cursor-original-hooks-pathが指すパス(通常.git/hooks)に同名 hook があれば先に実行 - Cursor 管理 hook —
$HOOKS_DIR/$HOOK_NAME.cursor*をファイル名の辞書順で順次実行
commit-msg の典型例:
| 順序 | ファイル名 | 役割 |
|---|---|---|
| 1 | commit-msg.cursor | シークレットスキャン(commit ブロック) |
| 2 | commit-msg.cursor.co-author | Co-authored-by: を自動付与 |
| 3 | commit-msg.cursor.co-author-strip | Co-authored-by: 行を除去(プロジェクト strip hook) |
MUST: strip hook のベース名は commit-msg.cursor.co-author-strip とし、commit-msg.cursor.co-author より辞書順で後になる命名にする。NEVER: commit-msg.cursor.strip-co-author 等、co-author より前に実行される名前を使用する。
strip hook 実装
- MUST: 除去ロジックは
.cursor/hooks/strip-co-authored-by.shに置く - MUST:
commit-msg.cursor.co-author-stripは当該スクリプトを呼び出す薄いラッパーとする - MUST: strip 対象は
Co-authored-by:/Co-Authored-By:行(大文字小文字不問)および直前の空行 - NEVER: コミットメッセージ本体(件名・説明)を削除しない
参考実装(.cursor/hooks/strip-co-authored-by.sh):
#!/usr/bin/env bash
set -euo pipefail
COMMIT_MSG_FILE="${1:?commit message file required}"
if [ ! -f "$COMMIT_MSG_FILE" ]; then
exit 0
fi
tmp="$(mktemp)"
trap 'rm -f "$tmp"' EXIT
awk '
BEGIN { skip_blank = 0 }
/^[Cc]o-[Aa]uthored-[Bb]y:/ { skip_blank = 1; next }
skip_blank && /^[[:space:]]*$/ { next }
{ skip_blank = 0; print }
' "$COMMIT_MSG_FILE" > "$tmp"
mv "$tmp" "$COMMIT_MSG_FILE"
trap - EXIT
install スクリプト
- MUST:
scripts/install-cursor-agent-hooks.shで strip 連鎖を Cursor hook ディレクトリへ配置する - MUST: install 先は Cursor が
.git/hooksを差し替えている実ディレクトリ(readlink -f .git/hooksで解決したパスの親、または.git/hooks/.cursor-original-hooks-pathと併用) - MUST:
commit-msg.cursor.co-author-stripに実行権限を付与する - IF: install 先が特定できない; THEN MUST: 手動で
$CURSOR_AGENT_HOOKS_DIRを指定して実行する
lefthook 多層防御
- IF: リポジトリが lefthook を使用する; THEN SHOULD:
commit-msgジョブに strip スクリプトを追加し、Cursor hook 連鎖と二重にCo-authored-by:を除去する - IF:
git-guard.sh等でgit commit --no-verifyを deny する; THEN MUST: strip 連鎖で--no-verifyなしにCo-Authored-By禁止を満たす - IF: force push を git-guard で制限する; THEN MUST: 履歴修正が必要な場合は
GIT_GUARD_ALLOW_FORCE_PUSH=1を一時設定し、作業後に元に戻す
テスト手順
- MUST:
scripts/install-cursor-agent-hooks.shを実行する - MUST: テストコミットを作成し、
git log -1 --format=%BでCo-authored-by:/Co-Authored-By:が含まれないことを確認する - MUST:
githubスキルのCo-Authored-By禁止ルールと矛盾しないことを確認する - IF: lefthook を使用する; THEN MUST:
lefthook run commit-msg --commit-msg-file /tmp/test-msgで strip を単体検証する
関連スキル
github: コミット author 指定、Co-Authored-By禁止、Hook 迂回禁止skill-escalation: スキル改変の上流提案refresh-skills: スキル追加時の整合性検査
评论
支持 Markdown