スキル名の区切り文字(ハイフン / ドット)を選択可能に#16
Conversation
一部の LLM プラットフォームは Agent Skills 準拠のハイフン区切りの スキル名しか使えないため、どこでも動作するハイフン区切り (/miko-setup)で配置するように変更。 - install.sh: ハイフン区切りで配置し、ファイル内のスキル名参照を 自動変換。MIKO_SEPARATOR 環境変数(. / -)で明示指定も可能 - miko.setup: 初回実行時にドット区切りへの変更を確認するステップを追加 - ofuda/switch_separator.sh: 区切り文字をいつでも切り替えられる スクリプトを同梱。.miko/skills_manifest で miko 管理スキルのみを 対象にし、ユーザーのカスタムスキルには触れない - upgrade.sh: separator 設定に追従。既存インストールはドット区切りの まま維持(確認も走らない) - upgrade.sh: protected_skills が空のとき bash 3.2 の set -u で 中断する問題を修正 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2
区切り文字をハイフンにしたとき miko-new_harae のような _ と - の混在表記になるのを避けるため、スキル名内の _ を - に変更する。 対象: new-cap / new-harae / quick-catchup / quick-impl / split-proposal / catchup-system-hld ディレクトリ名のリネームと、全ドキュメント内の参照の機械的な置換のみ。 CHANGELOG の過去エントリは履歴として旧名のまま残す。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2
setup スキルでの初回確認方式をやめ、install.sh が言語選択に続けて 区切り文字(ハイフン / ドット)を対話で確認する方式にする。 デフォルトはどこでも動作するハイフン区切り。非対話実行時は プロンプトなしでハイフンになる。 - miko.setup: 初回確認ステップと separator_confirmed フラグを廃止 - MIKO_SEPARATOR 環境変数を廃止(プロンプトで選べるため不要。 非対話環境は後から .miko/switch_separator.sh で変更できる) - tone_guide (ja/en): 出力でスキル名に言及するときは .miko/config の separator に従う旨を明記 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2
|
|
||
| ## スキル名の表記 | ||
|
|
||
| miko のスキル名の区切り文字は、インストール時の選択によりドット(`/miko.xxx`)またはハイフン(`/miko-xxx`)になる。出力でスキル名に言及するときは、`.miko/config` の `separator` の値に従うこと: |
There was a problem hiding this comment.
SKILL.md内部は ドット区切りであることを明記してください
|
|
||
| miko のスキル名の区切り文字は、インストール時の選択によりドット(`/miko.xxx`)またはハイフン(`/miko-xxx`)になる。出力でスキル名に言及するときは、`.miko/config` の `separator` の値に従うこと: | ||
|
|
||
| - `separator=.` → ドット区切りで表記する |
There was a problem hiding this comment.
| - `separator=.` → ドット区切りで表記する | |
| - `separator=dot` → ドット区切りで表記する | |
| - `separator=hyphen` → ハイフン区切りで表記する |
| - `separator=.` → ドット区切りで表記する | ||
| - `separator=-` → ハイフン区切りで表記する | ||
|
|
||
| config が読めない場合は、実行中のスキル自身の名前に使われている区切り文字に合わせる。 |
There was a problem hiding this comment.
defaultは dot であるってすればいいかと思います
区切り文字の変更は頻繁な操作ではないため、専用の切り替えスクリプトを 持たず「miko を削除して再インストール」に一本化する。 skills_manifest は switch_separator.sh 専用だったため合わせて廃止。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2
記号 (./-) より意図が読み取りやすいため、レビュー指摘に従い 語 (dot/hyphen) で保存する。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2
出力時は原文の表記ではなく .miko/config の separator に従うことを はっきりさせる(レビュー指摘)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2
「実行中のスキル名に合わせる」より単純な規則にする(レビュー指摘)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2
トーンのルールではなく、全スキルが必ず読む指示書として 便宜上ここに置いている旨を明記する(レビュー指摘)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2
| if [ ! -f ".miko/config" ]; then | ||
| echo "language=$LANG_CHOICE" > .miko/config | ||
| fi | ||
| # v1.4.0 より前のインストールには separator 設定がないため補完する(既存はドット区切り) |
There was a problem hiding this comment.
このへん、これ使えないですかね?(無理かな?)
https://github.com/studyplus/miko/tree/main/migrations
There was a problem hiding this comment.
こんな感じで作成してみました。手元で試したところ期待通りの挙動してくれましたがわざわざ LLM でやらなくてもという気もややします。 (が動くので強い気持ちはないです)
There was a problem hiding this comment.
まぁLLMでやる必要ないんですが、update.shにいれるとずっと消せないなぁっていう。
あと、そういう意味では migrationにshellかいて、それを実行してって指示すればいいかなとは思ってます
ff83e95 to
55ab7a1
Compare
claude -p は stdin がパイプのときその内容を入力として読み切るため、 echo y | bash upgrade.sh のような非対話実行でマイグレーションが走ると、 後続の削除確認プロンプト(read)への入力が食われて EOF で中断していた。 claude の stdin を /dev/null に切り離す。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2
v1.4.0 より前のインストールへの separator=dot の補完を、 upgrade.sh の bash 処理からマイグレーション(202607210541)に移す。 既存インストールへの一回きりの補正はマイグレーション機構に集約する (レビュー指摘)。キー欠落時に dot とみなす読み取り側のフォールバックは マイグレーション実行前にも必要なため維持する。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2
|
動作確認してて気がついたのですが、マイグレーション実行の箇所にバグがあったのでついでに修正しました。 下記 Claude Code による解説。
|
ひーーー |
separator 補完のマイグレーションを、決定的なシェルスクリプト + 「Bash ツールでそのまま実行する」指示に書き換える(レビュー指摘)。 LLM の解釈余地をなくし、スクリプト単体でテストできるようにする。 - upgrade.sh: マイグレーションの allowedTools に Bash を追加 - .miko ディレクトリ自体がない旧インストールでリダイレクトが失敗する 潜在バグを mkdir -p で修正(スクリプト単体テストで検出。 LLM 手順版では Write ツールの親ディレクトリ自動作成で隠れていた) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2
概要
一部の LLM プラットフォームは Agent Skills 準拠のハイフン区切りのスキル名しか使えないため(参考: spec-kit #2354)、miko のスキル名の区切り文字を選択できるようにしました。あわせてスキル名内のアンダースコアをハイフンに統一しています。
方式
/miko-setup)で、ドット区切り(/miko.setup、従来形式)も選べます。非対話実行時はプロンプトなしでハイフンになります.miko/configのseparator=に保存され、スキルディレクトリ名とファイル内のスキル名参照(frontmatter の handoffs 含む)がインストール・アップグレード時に自動変換されます。後から変更する場合は miko を削除して再インストールします_を-に統一(miko.new_cap→miko.new-cap等 6 スキル)。ハイフン区切り選択時にmiko-new_haraeのような混在表記になるのを避けるためですseparator=.が補完されドット区切りのまま。旧アンダースコア名のスキルは削除確認のうえ新名で再配置されますあわせて修正
protected_skillsが空のときのset -u下での空配列展開)${VAR}ブレース化)レビューの手引き
コミットを段階で分けています:
8c3e1ac+aa008d8: 初版(setup スキルでの初回確認方式 + 切り替えスクリプト)84b1ac5: アンダースコア → ハイフンの機械的リネームのみ(+116/−116 の対称置換。削除行がすべて旧名・追加行がすべて新名を含むことを検証済み)1f67518: インストール時プロンプト方式への変更 + tone_guide 追記dbdb68f: switch_separator.sh / skills_manifest の廃止(区切り文字の変更は再インストールに一本化)初版で導入して後続コミットで廃止したものがあるため、ブランチ全体の Files changed で見るのが確実です。実質は install.sh / upgrade.sh / miko.setup / tone_guide / README / リネームに収まります。
テスト
ローカル tarball を使い、すべて macOS 標準
/bin/bash(3.2)で実施:_を含むスキル名ゼロ、参照の残存ゼロseparator=.が補完されドット維持🤖 Generated with Claude Code
https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2