dotfiles/claude/skills/badev-knowledge-sync/SKILL.md
旧 badev-knowledge-base リポの docs/{苗字}/ 配下を、許可リストの現役メンバー 4 人 (takano / tokita / yukioka / ushiroyama) に絞って ba2-workspace/docs/ に同期するスキル。旧リポを source of truth として、衝突時は新リポ側を旧リポで上書きする。コミット・プッシュは行わず、git add までで停止する。「badev-knowledge-base から同期して」「旧リポのナレッジを取り込んで」「badev-knowledge-sync を走らせて」「旧 docs を同期」などのリクエストでトリガー。
npx skillsauth add octkp/base badev-knowledge-syncInstall 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.
旧 badev-knowledge-base リポの docs/ 配下を、現役メンバー 4 人だけを対象に ba2-workspace/docs/ に同期するスキル。
ba2-workspace への統合後も、しばらくは旧リポにコミットが追加される過渡期向け。旧リポを source of truth とし、衝突時は旧リポ側で新リポを上書きする。
| 項目 | 方針 |
|---|---|
| 同期対象 | docs/{takano,tokita,yukioka,ushiroyama}/ のみ |
| 除外(同期しない) | 上記 4 人以外の人ディレクトリ、docs/knowledge/、.DS_Store、.claude/ 配下 |
| 同期方向 | 旧 → 新 の一方向 |
| 衝突時 | 旧リポ側で新リポを上書き(新リポ独自の編集は失われる) |
| 削除 | --delete は使わない(旧に無く新にしかないファイルは残す) |
| コミット・プッシュ | このスキルでは行わない(git add docs/ までで停止) |
badev-knowledge-base をクローンしてあること(パスは下の解決ルールで取得)。rsync: macOS / Linux 標準のものを使う。NEW_REPO=$(git rev-parse --show-toplevel 2>/dev/null)
if [ -z "$NEW_REPO" ] || [ "$(basename "$NEW_REPO")" != "ba2-workspace" ]; then
echo "ERROR: ba2-workspace リポ内で実行してください" >&2
exit 1
fi
OLD_REPO="${BADEV_KNOWLEDGE_BASE:-$HOME/ghq/github.com/kokopelli-inc/badev-knowledge-base}"
if [ ! -d "$OLD_REPO/.git" ]; then
echo "ERROR: $OLD_REPO に badev-knowledge-base のクローンが見つかりません。" >&2
echo " BADEV_KNOWLEDGE_BASE 環境変数で正しいパスを指定してください。" >&2
exit 1
fi
重要:
BADEV_KNOWLEDGE_BASEと、過去に廃止したBADEV_KNOWLEDGE_BASE_PATHは別物。前者は本スキルの旧リポ参照用。後者は ticket-knowledge 系の旧 REPO_ROOT 解決で使われていたもので、現在は廃止済み。混同しない。
# 現役メンバー 4 人だけを同期対象にする
ALLOWED_USERS=(takano tokita yukioka ushiroyama)
リストを変更したい場合は本 SKILL.md を編集する(運用上、頻繁には変えない想定)。
cd "$OLD_REPO"
git fetch origin 2>/dev/null
git pull --ff-only origin main 2>&1 || echo "(git pull に失敗。ローカル状態で同期します)"
git pull は best-effort。失敗してもローカルにある内容で同期を続行する。for user in "${ALLOWED_USERS[@]}"; do
echo "=== $user ==="
diff -rq "$OLD_REPO/docs/$user" "$NEW_REPO/docs/$user" 2>/dev/null | head -30
done
出力の読み方:
| 表示 | 意味 | 同期での扱い |
|---|---|---|
| Only in <OLD>/... | 旧リポにしかない | コピーされる(同期対象) |
| Only in <NEW>/... | 新リポにしかない | そのまま残る(削除されない) |
| Files <OLD>/X and <NEW>/X differ | 同名で中身が違う | 旧リポ側で上書き(新リポ側の変更は失われる) |
衝突件数が多い場合は事前にユーザーに見せ、続行してよいか確認する。
cd "$NEW_REPO"
for user in "${ALLOWED_USERS[@]}"; do
if [ -d "$OLD_REPO/docs/$user" ]; then
rsync -av \
--exclude='.DS_Store' \
--exclude='.claude/' \
"$OLD_REPO/docs/$user/" "$NEW_REPO/docs/$user/"
fi
done
--ignore-existing は付けない(旧側で上書きする方針なので)。--exclude='.DS_Store' / --exclude='.claude/' で個人設定系を除外。--delete は使わない(旧に無く新にしかないファイルは残す)。/ 有無で挙動が変わるので、"$OLD_REPO/docs/$user/" のように末尾スラッシュありで渡す。cd "$NEW_REPO"
git add docs/
git status --short docs/ | head -50
git diff --cached --stat docs/ | tail -1
コミット・プッシュはこのスキルでは行わない。
git diff --cached --stat | tail -1 の出力)git commit -m "chore: badev-knowledge-base から docs/ を同期" && git push origin main(docs/ 配下のみなので main 直 push OK)git restore --staged --worktree -- <file> で個別に取り消し旧リポを source of truth とするので、衝突は旧側で上書きされる。新リポ側で独自編集していたファイルがあれば、その変更は失われる。
このリスクを避けるには:
Files ... differ の件数を確認し、多ければ続行前にユーザー確認git status で新リポ側が clean であることを確認git diff --cached で実際の変更内容を目視チェック事後に旧で上書きしたくなかったと判明した場合は、該当ファイルだけ git restore --staged --worktree -- <file> で取り消す。
docs/{takano,tokita,yukioka,ushiroyama}/ のみ。それ以外(他の人ディレクトリ / docs/knowledge/ 等)は同期しない。--delete は使わない(旧に無いファイルを新から消さない)。--exclude='.DS_Store' と --exclude='.claude/' で個人設定系を除外。ユーザー: 「badev-knowledge-base から同期して」
実行:
REPO_ROOT を解決git pull(best-effort)ALLOWED_USERS の 4 人分だけ diff -rq で差分プレビューrsync -av --exclude=.DS_Store --exclude=.claude/ で人ごとに同期(旧で上書き)git add docs/ でステージング差分プレビューで Files ... differ が多い → 続行前にユーザーに見せて確認:
git restore --staged --worktree -- <file> で個別に取り消す。documentation
base リポジトリ(~/base)の主要ディレクトリ(dotfiles / home / local / scripts / docs)の README.md と、リポジトリ直下の README.md を、実際のファイル構成に合わせて更新・新規作成するスキル。各ディレクトリの中身を実際に走査して内容を導出するので、設定追加・ディレクトリ移動のあとに走らせると README が現状と一致する。「READMEを更新して」「READMEを作り直して」「base のドキュメントを整える」「/base-readme」などのリクエストで使用。
documentation
チケット番号(BAX-XXXX)を伝えるだけで、ba2-ticket-knowledge-logger が記録したナレッジドキュメント(README.md / LOG.md / PLAN.md)を全ユーザー・全カテゴリ横断で自動検索して読み込み、要約して提示するスキル。別セッションで過去の調査・実装内容を読み直したいときに使う。「BAX-10987」「BAX-10325のナレッジ読んで」「前に調べたBAX-XXXXの記録」「BAX-XXXXの続きをやりたい」「BAX-XXXX読み直して」などのリクエストでトリガー。
tools
チケット番号(BAX-XXXX)とカテゴリ(調査/実装/その他)を指定して、会話ログとまとめファイルを記録し、JIRAチケットにもコメントとしてナレッジを投稿するスキル。「BAX-10325の調査を記録」「実装にチケット作成」「会話ログを保存」などのリクエストで使用。
tools
skills/ 配下にあるスキル群を一覧する README.md を自動生成・更新するスキル。各スキルディレクトリの SKILL.md からフロントマター(name / description)と本文の見出し・概要を読み取り、skills/README.md にスキル一覧表と各スキルの説明セクションを書き出す。新しいスキルを追加・更新したあとに「ba2 skills の README を更新して」「ba2-skills-readme を走らせて」と頼んだとき、または .claude/settings.json の PostToolUse hook が SKILL.md の Write/Edit を検知して発火させたときに使う。