ppw:update について
ppw:update は、ローカルの `.claude/skills/` と `references/` を Paper-Polish-Workflow-skill の GitHub リポジトリと同期するスキルです。リモートとローカルのファイルを比較し、新規・変更・未変更を報告します。
主な機能
- 01リモートのスキルと参照ファイルを取得
- 02リモートとローカルのファイルを比較
- 03直接更新と対話型更新に対応
- 04更新状況とファイル数を報告
活用シーン
- 01ローカルのスキルを GitHub と同期
- 02適用前に変更内容を確認
- 03参照ドキュメントを更新
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ lylll9436/ paper-polish-workflow-skill --skill ppw:updateインストール後、Claude Code で/ppw:updateを入力して読み込まれたか確認します。
詳細
目的
このスキルは、ローカルの .claude/skills/ と references/ を、上流の GitHub リポジトリ Lylll9436/Paper-Polish-Workflow-skill と同期します。最新の SKILL.md ファイルとリファレンスドキュメントをダウンロードし、ローカル版と比較して、変更されたファイルを更新します。
トリガー
ユーザーが次のことを依頼したときに起動します:
- リモートリポジトリからスキルを更新または同期する
- スキルパッケージを更新または同期する
呼び出し例:
- "update skills"
- "sync skills from GitHub"
- "スキルを更新"
モード
| モード | デフォルト | 動作 |
|---|---|---|
direct | はい | 取得、比較、更新、報告を行います — 途中で確認はしません |
interactive | 更新を適用する前に差分の概要を表示します |
デフォルトモード: direct
ワークフロー
ステップ 0:ワークフローのメモリを確認
.planning/workflow-memory.jsonを読み込みます。ファイルが存在しない、または空の場合は、ステップ 1 に進みます。- ログ内にしきい値回数以上出現した
ppw:updateを含む、直近 1~2 件のログエントリが認識済みパターンを形成しているか確認します。詳細なアルゴリズムについては、skill-conventions.md > Workflow Memory > Pattern Detectionを参照してください。 - パターンが見つかった場合は、AskUserQuestion を使用して推奨事項を提示します:
- 質問:「よく使われるワークフローが検出されました:[pattern](N 回出現)。ppw:update を direct モードで実行しますか?」
- 選択肢:「はい、続行する」/「いいえ、通常どおり続行する」
- ユーザーが承諾した場合:モードを
directに設定し、Ask Strategy の質問をスキップします。 - ユーザーが拒否した場合、または AskUserQuestion を利用できない場合:通常モードで続行します。
ステップ 1:事前確認
ghCLI が利用可能で、認証済みであることを確認します:gh auth status- 上流リポジトリにアクセスできることを確認します:
gh api repos/Lylll9436/Paper-Polish-Workflow-skill --jq '.full_name' - いずれかの確認に失敗した場合は、エラーを報告して停止します。
- ワークフローを記録:
.planning/workflow-memory.jsonに{"skill": "ppw:update", "ts": "<ISO timestamp>"}を追加します。ファイルが存在しない場合は[]として作成します。ログの長さが 50 以上の場合は、最も古いエントリを削除します。
ステップ 2:リモートファイルインデックスを取得
- リモートリポジトリにあるすべてのスキルディレクトリを一覧表示します:
gh api repos/Lylll9436/Paper-Polish-Workflow-skill/contents/.claude/skills --jq '.[].name' - リモートリポジトリにあるすべてのリファレンスファイルを一覧表示します:
gh api repos/Lylll9436/Paper-Polish-Workflow-skill/contents/references --jq '.[] | .name + " " + .type' - リファレンスのサブディレクトリ(type=dir)についても、内容を再帰的に一覧表示します。
ステップ 3:スキルを比較して更新
リモートの各スキルディレクトリについて:
- リモートの
SKILL.mdの内容を取得します:gh api repos/Lylll9436/Paper-Polish-Workflow-skill/contents/.claude/skills/{skill-name}/SKILL.md --jq '.content' | base64 -d - 存在する場合は、ローカルの
.claude/skills/{skill-name}/SKILL.mdを読み込みます。 - 2 つのファイルを比較します:
- ローカルファイルが存在しない場合 → 新規スキルとして、ディレクトリを作成してファイルを書き込みます。
- 内容が異なる場合 → 更新済みとして、ローカルファイルを上書きします。
- 内容が同一の場合 → 変更なしとして、スキップします。
- 最終レポート用に結果を記録します。
interactive モードの場合: 各更新を適用する前に変更の概要を表示し、確認を求めます。
ステップ 4:リファレンスを比較して更新
リモートの各リファレンスファイルについて:
gh apiを使用し、base64 デコードしてリモートファイルの内容を取得します。- 存在する場合は、ローカルの
references/{filename}を読み込みます。 - 比較し、ステップ 3 と同じ新規/更新済み/変更なしのロジックで適用します。
- サブディレクトリ(例:
references/journals/、references/expression-patterns/)については、各ファイルを再帰的に処理します。
ステップ 5:レポートを出力
概要テーブルを提示します:
## Skills Update Report
| Skill | Status |
|-------|--------|
| polish-skill | ✓ Updated |
| de-ai-skill | - Unchanged |
| new-skill | + New |
## References Update Report
| File | Status |
|------|--------|
| expression-patterns.md | ✓ Updated |
| skill-conventions.md | - Unchanged |
**Summary:** {updated_count} updated, {new_count} new, {unchanged_count} unchanged
出力仕様
| 出力 | 形式 | 条件 |
|---|---|---|
| 更新レポート | Markdown テーブル | 必ず出力 |
| ファイル数の概要 | テキスト | 必ず報告 |
エッジケース
| 状況 | 対応 |
|---|---|
gh CLI がインストールされていない、または認証されていない | エラーを報告し、gh auth login を提案 |
| リモートリポジトリにアクセスできない | ネットワーク/権限エラーを報告 |
| ローカルスキルにリモートにはない変更がある | リモート版で上書きする(リモートが正) |
| リモートに新しいスキルがあり、ローカルに存在しない | ディレクトリを作成して SKILL.md を書き込む |
| リモートのスキルが削除されているが、ローカルには存在する | ローカル版を保持する(削除せず、「ローカルのみ」として報告) |
| リファレンスのサブディレクトリがローカルに存在しない | 作成する |
フォールバック
| シナリオ | フォールバック |
|---|---|
gh api がレート制限された場合 | 待機してから1回再試行し、その後エラーを報告します |
| Base64 のデコードに失敗した場合 | Accept: application/vnd.github.raw ヘッダーを付けて gh api を試します |
| 単一ファイルの取得に失敗した場合 | そのファイルをスキップし、残りのファイルの処理を続け、概要で報告します |
コメント
Markdown 対応