templates/claude/skills/knowledge-pr/SKILL.md
knowledge/buffer ブランチの差分を Issue 起票 → PR 作成 → auto-merge で main に反映する。/review-harvest / /session-harvest が蓄積した差分を定期的に本番化するためのスキル。「/knowledge-pr」「バッファをPR化して」と言った時に使用。
npx skillsauth add hirokimry/vibecorp knowledge-prInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
knowledge/buffer worktree に蓄積された knowledge/rules/docs 差分を、Issue 起票 → PR 作成 → gh pr merge --squash --auto の流れで main に反映する。
/knowledge-pr # 通常実行
/knowledge-pr --worktree <path> # worktree 内で実行(非推奨、通常は呼出元プロジェクト直下で実行)
/review-harvest または /session-harvest が knowledge/buffer に commit を積んでいることgh が認証済みであること. "$CLAUDE_PROJECT_DIR/.claude/lib/knowledge_buffer.sh"
if ! knowledge_buffer_ensure; then
echo "[knowledge-pr] worktree 準備失敗。skip" >&2
exit 1
fi
echo "[knowledge-pr] worktree 最新化完了" >&2
BUFFER_DIR="$(knowledge_buffer_worktree_dir)"
DIFF_COUNT="$(git -C "$BUFFER_DIR" log main..HEAD --oneline | wc -l | tr -d ' ')"
if [ "$DIFF_COUNT" -eq 0 ]; then
echo "[knowledge-pr] 差分なし。skip"
exit 0
fi
CHANGE_SUMMARY="$(git -C "$BUFFER_DIR" diff main...HEAD --stat)"
open 状態の knowledge-pr Issue があれば skip する(再開は既存 Issue の手動 close 後)。
EXISTING="$(gh issue list \
--search "📖 docs: 知見バッファの反映 in:title is:open" \
--json number,title \
--jq '.[0].number // empty')"
if [ -n "$EXISTING" ]; then
echo "[knowledge-pr] 既存 Issue #${EXISTING} が open のため skip" >&2
echo "[knowledge-pr] 再開するには既存 Issue を手動 close してください" >&2
exit 0
fi
/issue スキル相当のロジック(ラベル自動判定は CPO チェックを省略、preset 依存は持たない)で Issue を起票する。
# 変更範囲(コミット範囲を拾ってタイトルに含める)
RANGE="$(git -C "$BUFFER_DIR" log main..HEAD --oneline | wc -l | tr -d ' ') commits"
ISSUE_TITLE="📖 docs: 知見バッファの反映 (${RANGE})"
ISSUE_BODY="$(cat <<EOF
## 概要
\`knowledge/buffer\` ブランチに蓄積された knowledge/rules/docs 差分を main に反映する。
## 変更内容
\`\`\`text
${CHANGE_SUMMARY}
\`\`\`
## コミット履歴
\`\`\`text
$(git -C "$BUFFER_DIR" log main..HEAD --format='- %s' | head -50)
\`\`\`
## 完了条件
- [ ] CodeRabbit レビューを通過する
- [ ] CI が通る
- [ ] auto-merge で main に反映される
EOF
)"
ISSUE_URL="$(gh issue create \
--title "$ISSUE_TITLE" \
--body "$ISSUE_BODY" \
--label documentation)"
ISSUE_NUMBER="$(echo "$ISSUE_URL" | awk -F/ '{print $NF}')"
echo "[knowledge-pr] Issue #${ISSUE_NUMBER} を起票" >&2
ラベル documentation がリポジトリに存在しない場合は --label を省略する(フォールバック)。
knowledge/buffer ブランチを base=main で PR 化する。
# push が必要な場合先に push(knowledge_buffer_push は exit 3 で失敗検知)
if ! knowledge_buffer_push; then
echo "[knowledge-pr] push 失敗。Issue #${ISSUE_NUMBER} を手動 close するか次回実行で再試行してください" >&2
exit 3
fi
PR_TITLE="$ISSUE_TITLE"
PR_BODY="$(cat <<EOF
## 概要
\`knowledge/buffer\` の差分を main に反映する自動 PR。
close #${ISSUE_NUMBER}
## 変更内容
\`\`\`text
${CHANGE_SUMMARY}
\`\`\`
## 自動化ポリシー
- 生成: \`/knowledge-pr\` スキル
- 書込先: \`.claude/knowledge/\`, \`.claude/rules/\`, \`docs/\` のみ
- CodeRabbit レビュー・CI 通過後に GitHub auto-merge が main に反映する
EOF
)"
if ! PR_URL="$(cd "$BUFFER_DIR" && gh pr create \
--title "$PR_TITLE" \
--body "$PR_BODY" \
--base main \
--head knowledge/buffer)"; then
echo "[knowledge-pr] PR 作成失敗。Issue #${ISSUE_NUMBER} を手動 close するか次回実行で再試行してください" >&2
exit 4
fi
PR_NUMBER="$(echo "$PR_URL" | awk -F/ '{print $NF}')"
echo "[knowledge-pr] PR #${PR_NUMBER} を作成" >&2
if ! (cd "$BUFFER_DIR" && gh pr merge "$PR_NUMBER" --squash --auto); then
echo "[knowledge-pr] auto-merge 設定失敗。手動で gh pr merge してください" >&2
exit 5
fi
echo "[knowledge-pr] auto-merge を有効化" >&2
## knowledge-pr 結果
- Issue: #${ISSUE_NUMBER}
- PR: #${PR_NUMBER}
- 変更コミット数: ${DIFF_COUNT}
- auto-merge: 設定済み
- 後処理: CodeRabbit + CI 通過後に GitHub が main に反映
以下の状況では人手介入が必要。次回実行では重複チェックで skip されるため、自動では復旧しない。
| 状況 | 復旧手順 |
|---|---|
| push 失敗 (exit 3) | ネットワーク復旧後に git -C <buffer_dir> push origin knowledge/buffer |
| PR 作成失敗 (exit 4) | Issue を手動 close、次回 /knowledge-pr で再試行 |
| auto-merge 設定失敗 (exit 5) | gh pr merge <PR番号> --squash で手動マージ |
| 既存 open Issue あり | 既存 Issue を確認し、不要なら close してから再実行 |
\(...) を使わない — + で結合する2>/dev/null、|| echo 等のフォールバックを付加しない(明示的にリトライ・タイムアウトが必要な箇所を除く)data-ai
skills/**/SKILL.md 内に embed された 5 行以上のエージェント呼出プロンプトテンプレ・長文ブロックを .claude/rules/notification-prompt-extraction.md 基準で skills/<skill>/prompts/<name>.md に切り出す migration skill。「/prompts-extract-all」「プロンプト切り出し」「プロンプト extract」「SKILL.md プロンプト migration」と言った時に使用。検出は awk でフェンスコードブロックを抽出して行数カウント、要否判定は LLM が閾値・用途軸・命名規約と照合。diff 提案 → CEO 承認 → 書換の 2 段階で挙動を壊さず適用する。自動マージ禁止、自律ループ対象外。
documentation
.github/workflows/**/*.{yml,yaml} の --body 通知文と hooks/**/*.sh の長文 echo/printf/heredoc を .claude/rules/notification-prompt-extraction.md 基準で個別 .md ファイルに切り出す migration skill。「/notifications-extract-all」「通知文切り出し」「通知文 extract」「workflow 通知 migration」と言った時に使用。検出は grep で機械絞り込み、要否判定は LLM が閾値・命名規約と照合。diff 提案 → CEO 承認 → 書換の 2 段階で挙動を壊さず適用する。自動マージ禁止、自律ループ対象外。
development
`**/*.sh` / `**/*.js` / `**/*.ts` / `**/*.py` / `**/*.rb` / `**/*.go` / 設定ファイル等のコード内コメントを一括棚卸しし、 `.claude/rules/code-comments.md` と機械的に照合する。 diff 提案 → CEO 承認 → 書換の 2 段階で自動マージを禁じる。 生成コード・`node_modules`・`vendor`・`dist`・`build` 等は除外する。 「/vibecorp:comments-rewrite-all」「コメント全書き直し」「コード内コメント棚卸し」 と言った時に使用。
development
skills/**/SKILL.md・agents/*.md・.claude/rules/*.md を .claude/rules/prompt-writing.md 基準で一括書き直し提案するスキル。「/prompts-rewrite-all」「プロンプト書き直し」「スキル一括書き直し」「エージェント書き直し」と言った時に使用。claude-code-guide サブエージェントで Claude Code 公式仕様(docs.claude.com)を確認し、prompt-writing.md の指針 MUST / 禁止パターンと照合する。diff 提案 → CEO 承認 → 書き換えの 2 段階で挙動を壊さず適用する。自動マージ禁止。