sync-skilllisted
Install: claude install-skill trapple/skills
# sync-skill - 他PJのスキルを skills リポジトリに取り込む / 更新する
別プロジェクトの skill ディレクトリを、ユーザーが管理する **subdirectory package パターンの skills リポジトリ**のルート直下にコピーし、必要なら README.md を自動更新する。
「subdirectory package パターン」とは、各スキルがリポジトリ直下のディレクトリ(`<repo-root>/<skill-name>/SKILL.md`)として配置され、`apm install -g <owner>/<repo>/<skill-name>` で個別にインストールできる構成を指す(例: `mizchi/skills`, `anthropics/skills`)。
## 想定リポジトリの解決
このスキルは特定のリポジトリ名に依存しない。**呼び出し元の `pwd` がスキル管理リポジトリ内とは限らない**ため、以下の順で `<repo-root>` を決定する。
1. **環境変数** — `$AGENT_SKILLS_REPO` が定義されていてディレクトリとして存在し、後述の「skills リポジトリ判定」に合致するなら採用する
2. **pwd** — 現在のディレクトリ(または `git -C . rev-parse --show-toplevel` のリポジトリルート)が skills リポジトリ判定に合致するなら採用する
3. **検索** — リポジトリ名が `skills` のディレクトリを探す:
```bash
find ~/repos -maxdepth 5 -type d -name skills 2>/dev/null \
| while read d; do [ -d "$d/.git" ] && echo "$d"; done
```
結果が 1 件かつ skills リポジトリ判定に合致するなら採用。0 件 / 複数件は次へ
4. **明示** — 上記で決まらなければ AskUserQuestion でユーザーにフルパスを尋ねる
### skills リポジトリ判定
次のいずれか1つを満たせば「skills リポジトリ」とみなす:
- ルート直下に複数の `<name>/SKILL.md` ディレクトリが存在する(subdirectory package パターンの実体)
- `git -C <repo> remote get-url origin 2>/dev/null` の URL の末尾が `/skills(.git)?$` にマッチする
決定したパスは以降の手順すべての `<repo-root>` として使う。`cd` はせず `git -C <repo-root>` や絶対パスで操作すること。解決結果は必ずユーザー確認(手順3)で提示する。
### owner/repo の抽出(インストールコマンド表示用)
```bash
git -C <repo-root> remote get-url origin \
| sed -E 's#(git@|https://)([^:/]+)[:/]([^/]+)/([^/.]+)(\.git)?#\3/\4#'
```
これで `<owner>/<repo>` が得られる。完了報告のインストールコマンドに使う。
## 引数
- `$1` (必須): 取り込