--- name: skill-replace description: 利用者が持っているスキルを、このプラグインのスキルの代わりに使えるように作り変えて、置き換える。自分のスキルで、ビルド・転送・機器での実行などのスキルを置き換えたいときに使う。 --- # skill-replace 利用者のスキルを写し、下の決まりに合うように作り変えて、元のスキルと置き換える。 元のスキルは、このスキルのフォルダの隣にある。 ## 決まり 作り変えたスキルは、次の決まりを守る。 | 項目 | 決まり | | --- | --- | | 名前 | フォルダの名前と SKILL.md の `name` を、元のスキルと同じにする | | ひな形 | 設定ファイルのひな形を、`assets/config-template.yaml` に置く。書き方は [reference/template.md](reference/template.md) にある | | 設定ファイル | 設定は、`<作業フォルダ>/.<スキルの名前>/config.yaml` から読む。このファイルは、設定のスキルが、ひな形を写して作る | | Python | 必要なパッケージは、スキルのフォルダの `pyproject.toml` に書く。SKILL.md には、`uv run --project "<このスキルのフォルダ>" "<このスキルのフォルダ>/scripts/…"` で動かすと書く | 設定のいらないスキルは、名前の決まりだけを守る。 ## 進め方 1. 元のスキルの名前と、利用者のスキルのフォルダを確かめる。依頼になければ、利用者に聞く。 2. 元のスキルの SKILL.md の description を読み、何をするスキルかをつかむ。利用者のスキルの作業が違うときは、そのことを伝え、続けるかを聞く。 3. 利用者のスキルの SKILL.md とスクリプトを読む。使う人や機器によって変わる値(機器のアドレス、ポート、パス、コマンド、パスワードなど)と、その値をどこから受け取っているか(引数、環境変数、独自の設定ファイル、直接書いた値)を調べる。 4. 調べた値を、項目の名前と説明の表にして利用者に見せ、過不足がないかを聞く。 5. 利用者のスキルを、一時フォルダに、元のスキルの名前で写す。ここから先は、この写しを変える。 6. 4 の項目で、ひな形を作る。 7. 値を、設定ファイルから読むように変える。 - スクリプトがあるときは、スクリプトが設定ファイルを読む。Python なら、PyYAML で読み、`pyproject.toml` に書く。設定ファイルがないときは、その場所を伝えて終わるようにする。 - SKILL.md だけのスキルは、設定ファイルを読んで値を使うよう、SKILL.md に書く。 - パスワードは、`<項目>_env` に名前を書いた環境変数から読む。環境変数がなければ、`<項目>` の値を使う。 8. SKILL.md を直す。`name`、コマンド、設定ファイルの場所を、決まりに合わせる。description は、元のスキルと同じ依頼で選ばれるように書く。 9. 確かめる。一時的な作業フォルダに、ひな形を `.<スキルの名前>/config.yaml` として写し、仮の値を書いて、スキルのコマンドがその値を読むことを確かめる。機器につなぐ作業は、動かさずに終える。 10. 変えたことを利用者に見せ、置き換えてよいかを聞く。 11. 元のスキルのフォルダを、利用者のスキルのフォルダの隣に `<元のスキルの名前>.original` という名前で移す。写しを、元のスキルがあった場所に置く。 12. 置き換えた場所と、元のスキルを移した場所を伝える。CLI を起動し直し、設定のスキルで準備するよう伝える。 ## してはいけないこと - 利用者のスキルのフォルダの中身を変えない。変えるのは、写しだけ。 - 利用者に確かめる前に、元のスキルを置き換えない。 - 元のスキルを消さない。移すだけにする。 - パスワードなどの値を、ひな形・SKILL.md・スクリプトに書かない。 - 作り変えたスキルから、ほかのスキルを呼んだり、ほかのスキルのファイルを読んだりしない。