From 8c3e1ac133fd90303cbba6a8f1821b72b4943847 Mon Sep 17 00:00:00 2001 From: ysak-y Date: Fri, 17 Jul 2026 15:33:36 +0900 Subject: [PATCH 1/9] =?UTF-8?q?skills:=20=E3=82=B9=E3=82=AD=E3=83=AB?= =?UTF-8?q?=E5=90=8D=E3=81=AE=E5=8C=BA=E5=88=87=E3=82=8A=E6=96=87=E5=AD=97?= =?UTF-8?q?=EF=BC=88=E3=83=8F=E3=82=A4=E3=83=95=E3=83=B3=20/=20=E3=83=89?= =?UTF-8?q?=E3=83=83=E3=83=88=EF=BC=89=E3=82=92=E9=81=B8=E6=8A=9E=E5=8F=AF?= =?UTF-8?q?=E8=83=BD=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 一部の 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 Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2 --- README.en.md | 17 +++++- README.md | 17 +++++- install.sh | 67 ++++++++++++++++++----- ofuda/switch_separator.sh | 107 +++++++++++++++++++++++++++++++++++++ skills/miko.setup/SKILL.md | 30 ++++++++--- upgrade.sh | 71 ++++++++++++++++++++---- 6 files changed, 279 insertions(+), 30 deletions(-) create mode 100755 ofuda/switch_separator.sh diff --git a/README.en.md b/README.en.md index 5aa47f4..dea5cd0 100644 --- a/README.en.md +++ b/README.en.md @@ -70,6 +70,21 @@ The installer asks you to choose an output language (日本語 / English). Your MIKO_LANG=en bash <(curl -fsSL https://raw.githubusercontent.com/studyplus/miko/main/install.sh) ``` +Because some LLM platforms only accept [Agent Skills](https://agentskills.io/)-compliant hyphenated names, the skills are installed with hyphen-separated names (`/miko-setup`), which work everywhere. On platforms that also support dots, such as Claude Code, the first run of the setup skill asks which separator you prefer and can switch to dots (`/miko.setup`). You can switch at any time with: + +```bash +bash .miko/switch_separator.sh . # switch to dots (/miko.setup) +bash .miko/switch_separator.sh - # switch to hyphens (/miko-setup) +``` + +If you set the separator explicitly via an environment variable, the first-run confirmation is skipped: + +```bash +MIKO_SEPARATOR=. bash <(curl -fsSL https://raw.githubusercontent.com/studyplus/miko/main/install.sh) +``` + +Skill names in this README are written with dots. If you use hyphens, read them as `/miko-setup` and so on. + After installation, set up your project: ```bash @@ -98,7 +113,7 @@ miko.my-custom-skill miko.another-skill ``` -Protected skills are excluded from upgrades — never removed or overwritten. +Protected skills are excluded from upgrades — never removed or overwritten. If you chose the hyphen separator, write the names hyphenated, e.g. `miko-my-custom-skill`. ### Usage diff --git a/README.md b/README.md index 7d0648b..b67b5df 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,21 @@ bash <(curl -fsSL https://raw.githubusercontent.com/studyplus/miko/main/install. MIKO_LANG=en bash <(curl -fsSL https://raw.githubusercontent.com/studyplus/miko/main/install.sh) ``` +スキル名は、一部の LLM プラットフォームが [Agent Skills](https://agentskills.io/) 準拠のハイフン区切りの名前しか使えないため、どこでも動作するハイフン区切り(`/miko-setup`)で配置されます。Claude Code などドット区切り(`/miko.setup`)が使えるプラットフォームでは、初回の setup スキル実行時にどちらを使うか確認され、ドット区切りへ変更できます。以下のスクリプトでいつでも切り替えられます。 + +```bash +bash .miko/switch_separator.sh . # ドット区切り (/miko.setup) へ +bash .miko/switch_separator.sh - # ハイフン区切り (/miko-setup) へ +``` + +環境変数で区切り文字を明示した場合、初回の確認はスキップされます。 + +```bash +MIKO_SEPARATOR=. bash <(curl -fsSL https://raw.githubusercontent.com/studyplus/miko/main/install.sh) +``` + +本 README のスキル名はドット区切りで表記しています。ハイフン区切りをお使いの場合は `/miko-setup` のように読み替えくださいませ。 + インストール後、プロジェクトのセットアップを行います。 ```bash @@ -98,7 +113,7 @@ miko.my-custom-skill miko.another-skill ``` -アップグレード時にプロテクト済みスキルは更新対象から除外され、削除・上書きされません。 +アップグレード時にプロテクト済みスキルは更新対象から除外され、削除・上書きされません。ハイフン区切りを選択している場合は `miko-my-custom-skill` のようにハイフン区切りで記述くださいませ。 ### 使い方 diff --git a/install.sh b/install.sh index 93e90de..867e457 100755 --- a/install.sh +++ b/install.sh @@ -28,6 +28,32 @@ case "$LANG_CHOICE" in *) LANG_CHOICE="ja" ;; esac +# スキル名の区切り文字: 一部の LLM プラットフォームは Agent Skills 準拠の +# ハイフン区切りの名前しか使えないため、どこでも動くハイフン区切り (miko-setup) で配置する。 +# ドット区切り (miko.setup) への変更は初回の setup スキル実行時に確認される。 +# MIKO_SEPARATOR 環境変数 (./-) で明示した場合は確認済みとして扱い、確認をスキップする。 +case "${MIKO_SEPARATOR:-}" in + .) SEP="." ; SEP_CONFIRMED=1 ;; + -) SEP="-" ; SEP_CONFIRMED=1 ;; + *) SEP="-" ; SEP_CONFIRMED=0 ;; +esac + +# to_local — 正規スキル名(. 区切り)を選択された区切り文字の名前に変換する +to_local() { echo "${1//./$SEP}"; } + +# rewrite_skill_refs ... — ファイル中のスキル名参照 (miko.foo) を選択された区切り文字に書き換える +rewrite_skill_refs() { + [ "$SEP" = "." ] && return 0 + local sed_script="" name esc + for name in "${canonical_skills[@]}"; do + esc="${name//./\\.}" + sed_script="${sed_script}s/${esc}/$(to_local "$name")/g;" + done + find "$@" -type f -name '*.md' | while IFS= read -r f; do + sed -i.mikobak "$sed_script" "$f" && rm -f "$f.mikobak" + done +} + if [ "$LANG_CHOICE" = "en" ]; then echo "⛩️ Installing miko skills..." else @@ -43,7 +69,7 @@ curl -fsSL "https://github.com/$REPO/archive/refs/heads/$BRANCH.tar.gz" | tar -x mkdir -p "$SKILLS_DIR" # 既存インストールの確認(VERSION ファイルまたは miko スキルが1つでもあれば既存とみなす) -if [ -f ".miko/VERSION" ] || ls -d "$SKILLS_DIR"/miko.* &> /dev/null; then +if [ -f ".miko/VERSION" ] || ls -d "$SKILLS_DIR"/miko.* &> /dev/null || ls -d "$SKILLS_DIR"/miko-* &> /dev/null; then if [ "$LANG_CHOICE" = "en" ]; then echo "⛩️ miko is already installed. Please use upgrade.sh to update:" else @@ -55,28 +81,45 @@ if [ -f ".miko/VERSION" ] || ls -d "$SKILLS_DIR"/miko.* &> /dev/null; then exit 0 fi -cp -r "$tmpdir"/miko/skills/miko.* "$SKILLS_DIR/" +# 正規スキル名(. 区切り)の一覧を収集し、選択された区切り文字の名前で配置する +canonical_skills=() +for d in "$tmpdir"/miko/skills/miko.*/; do + canonical_skills+=("$(basename "$d")") +done +for s in "${canonical_skills[@]}"; do + cp -r "$tmpdir/miko/skills/$s" "$SKILLS_DIR/$(to_local "$s")" +done cp -r "$tmpdir"/miko/ofuda .miko -# 言語設定の保存と tone_guide の解決 +# miko 管理スキルの正規名一覧を保存する(switch_separator.sh が参照する) +printf '%s\n' "${canonical_skills[@]}" > .miko/skills_manifest + +# 言語・区切り文字設定の保存と tone_guide の解決 # リポジトリには tone_guide.md (ja) と tone_guide.en.md があり、 # 選択された言語のものを .miko/guides/tone_guide.md として配置する -echo "language=$LANG_CHOICE" > .miko/config +{ + echo "language=$LANG_CHOICE" + echo "separator=$SEP" + echo "separator_confirmed=$SEP_CONFIRMED" +} > .miko/config if [ "$LANG_CHOICE" = "en" ]; then cp .miko/guides/tone_guide.en.md .miko/guides/tone_guide.md fi rm -f .miko/guides/tone_guide.en.md +# ハイフン区切りの場合、配置済みファイル内のスキル名参照を書き換える +rewrite_skill_refs .miko "$SKILLS_DIR"/miko"$SEP"* + if [ ! -f ".miko/protected_skills" ]; then -cat > .miko/protected_skills << 'EOF' +cat > .miko/protected_skills << EOF # miko アップグレード時に削除・上書きされないスキルを1行ずつ指定します。 -# miko.* という名前でご自身のカスタムスキルを作成している場合に使用してください。 +# miko${SEP}* という名前でご自身のカスタムスキルを作成している場合に使用してください。 # (Skills listed here, one per line, are preserved across miko upgrades. -# Use this if you have created custom skills named miko.*.) +# Use this if you have created custom skills named miko${SEP}*.) # # 例 / Example: -# miko.my-custom-skill -# miko.another-skill +# miko${SEP}my-custom-skill +# miko${SEP}another-skill EOF fi @@ -85,12 +128,12 @@ if [ "$LANG_CHOICE" = "en" ]; then else echo "✨ miko スキルをお納めいたしました: $SKILLS_DIR/" fi -ls -1d "$SKILLS_DIR"/miko.* .miko 2>/dev/null | while read -r d; do +ls -1d "$SKILLS_DIR"/miko"$SEP"* .miko 2>/dev/null | while read -r d; do echo " - $(basename "$d")" done echo "" if [ "$LANG_CHOICE" = "en" ]; then - echo "⛩️ Start with /miko.setup to set up your project. If in doubt, ask /miko.miko." + echo "⛩️ Start with /miko${SEP}setup to set up your project. If in doubt, ask /miko${SEP}miko." else - echo "⛩️ まずは /miko.setup でプロジェクトのセットアップを。迷ったら /miko.miko にお聞きくださいませ。" + echo "⛩️ まずは /miko${SEP}setup でプロジェクトのセットアップを。迷ったら /miko${SEP}miko にお聞きくださいませ。" fi diff --git a/ofuda/switch_separator.sh b/ofuda/switch_separator.sh new file mode 100755 index 0000000..7eeb9cf --- /dev/null +++ b/ofuda/switch_separator.sh @@ -0,0 +1,107 @@ +#!/bin/bash +set -euo pipefail + +# miko スキル名の区切り文字(. / -)を切り替えるスクリプト。 +# プロジェクトのルートで実行する: +# bash .miko/switch_separator.sh . # ドット区切り (/miko.setup) にする +# bash .miko/switch_separator.sh - # ハイフン区切り (/miko-setup) にする +# +# 対象は .miko/skills_manifest に列挙された miko 管理スキルのみ。 +# ユーザー作成のカスタムスキルには触れない。 +# 実行後は確認済みフラグ (separator_confirmed=1) を立て、 +# setup スキルの初回確認が再度走らないようにする。 + +SKILLS_DIR=".claude/skills" +CONFIG=".miko/config" +MANIFEST=".miko/skills_manifest" + +usage() { + echo "usage: bash .miko/switch_separator.sh <.|->" + exit 1 +} + +[ $# -eq 1 ] || usage +case "$1" in + .|-) TARGET="$1" ;; + *) usage ;; +esac + +if [ ! -f "$CONFIG" ] || [ ! -f "$MANIFEST" ]; then + echo "⛩️ $CONFIG または $MANIFEST が見つかりません。プロジェクトのルートで実行くださいませ。" + echo " ($CONFIG or $MANIFEST not found. Please run this from your project root.)" + exit 1 +fi + +LANG_CHOICE=$(grep -E '^language=' "$CONFIG" | head -n 1 | cut -d= -f2 | tr -d '[:space:]' || true) + +# say — 言語設定に応じたメッセージを出力する +say() { + if [ "$LANG_CHOICE" = "en" ]; then echo "$2"; else echo "$1"; fi +} + +CURRENT=$(grep -E '^separator=' "$CONFIG" | head -n 1 | cut -d= -f2 | tr -d '[:space:]' || true) +[ "$CURRENT" = "-" ] || CURRENT="." + +# set_config — config のキーを更新する(なければ追記) +set_config() { + local key="$1" value="$2" + if grep -qE "^${key}=" "$CONFIG"; then + sed -i.mikobak "s/^${key}=.*/${key}=${value}/" "$CONFIG" && rm -f "$CONFIG.mikobak" + else + echo "${key}=${value}" >> "$CONFIG" + fi +} + +if [ "$TARGET" = "$CURRENT" ]; then + set_config separator_confirmed 1 + say "✨ 既に区切り文字は「${TARGET}」です。変更はございません。" \ + "✨ The separator is already \"$TARGET\". Nothing to change." + exit 0 +fi + +# マニフェストから正規スキル名(. 区切り)を読み込む +canonical=() +while IFS= read -r line; do + [ -z "$line" ] && continue + canonical+=("$line") +done < "$MANIFEST" + +if [ ${#canonical[@]} -eq 0 ]; then + say "⛩️ $MANIFEST が空です。upgrade.sh の再実行をお願いいたします。" \ + "⛩️ $MANIFEST is empty. Please re-run upgrade.sh." + exit 1 +fi + +# スキルディレクトリのリネームと、参照書き換え用の sed スクリプトの構築 +sed_script="" +renamed=0 +for name in "${canonical[@]}"; do + cur="${name//./$CURRENT}" + tgt="${name//./$TARGET}" + if [ -d "$SKILLS_DIR/$cur" ]; then + mv "$SKILLS_DIR/$cur" "$SKILLS_DIR/$tgt" + renamed=$((renamed + 1)) + fi + esc="${cur//./\\.}" + sed_script="${sed_script}s/${esc}/${tgt}/g;" +done + +# ファイル中のスキル名参照を書き換える(miko 管理スキルと .miko 配下のみ) +rewrite_targets=(".miko") +for name in "${canonical[@]}"; do + tgt="${name//./$TARGET}" + if [ -d "$SKILLS_DIR/$tgt" ]; then + rewrite_targets+=("$SKILLS_DIR/$tgt") + fi +done +find "${rewrite_targets[@]}" -type f -name '*.md' | while IFS= read -r f; do + sed -i.mikobak "$sed_script" "$f" && rm -f "$f.mikobak" +done + +set_config separator "$TARGET" +set_config separator_confirmed 1 + +say "✨ スキル名の区切り文字を「${TARGET}」に変更いたしました(${renamed} スキル)。" \ + "✨ The skill name separator has been changed to \"$TARGET\" ($renamed skills)." +say "⛩️ 新しいスキル名が認識されるのは、新しいセッションからとなる場合がございます。" \ + "⛩️ The renamed skills may only be recognized from a new session." diff --git a/skills/miko.setup/SKILL.md b/skills/miko.setup/SKILL.md index 6fec48e..40267a0 100644 --- a/skills/miko.setup/SKILL.md +++ b/skills/miko.setup/SKILL.md @@ -27,14 +27,32 @@ miko を新しいプロジェクトに導入するための初期セットアッ ## 手順 -### 1. 既存ファイル確認 +### 1. スキル名の区切り文字の確認(初回のみ) + +`.miko/config` を読み込む。**`separator=-` かつ `separator_confirmed=0` の場合のみ** 以下を行う。それ以外(`separator_confirmed=1`、またはキーがない場合)はこのステップをスキップして次に進む。 + +1. `language` の設定言語で、ユーザーに区切り文字を確認する。特定のプラットフォーム名を決め打ちで出さないこと。実行中のプラットフォームがドット区切りのスキル名に対応していると判断できる場合に限り、その旨を補足してよい: + > ⛩️ miko のスキル名は現在ハイフン区切り(`/miko-xxx` 形式)でございます。どのプラットフォームでも動作いたします。 + > お使いのプラットフォームがドット区切り(`/miko.xxx` 形式)のスキル名に対応している場合は、ドット区切りへの変更もできます。どちらになさいますか? + > + > 1. ハイフン区切りのまま(どこでも動作) + > 2. ドット区切りへ変更 +2. 選択に応じて実行する(どちらも確認済みフラグが立ち、次回以降は確認されない): + - ハイフンのまま: `bash .miko/switch_separator.sh -` + - ドットへ変更: `bash .miko/switch_separator.sh .` +3. ドットへ変更した場合は以下を案内する: + - 変更後のスキル名が認識されるのは新しいセッションからとなる場合がある + - 以後のスキル呼び出しはドット区切り(`/miko.xxx`)になる + - このセッションのセットアップはこのまま続行してよい + +### 2. 既存ファイル確認 - `miko/system_high_level_design.md` が既に存在するか確認する - **存在する場合はエラーとして中止する:** > ⛩️ `miko/system_high_level_design.md` が既に存在しております。 > 内容の更新は直接編集するか、削除してから再実行をお願いいたします。 -### 2. ガイドと参考資料の読み込み +### 3. ガイドと参考資料の読み込み 以下のファイルを読み込む。 @@ -44,7 +62,7 @@ miko を新しいプロジェクトに導入するための初期セットアッ **実例(品質の基準):** - `.miko/examples/system_high_level_design.md` — システム HLD のサンプル。**このファイルと同等の構造・詳細度を目指す** -### 3. プロジェクト調査(サブエージェント並列) +### 4. プロジェクト調査(サブエージェント並列) プロジェクトのコードベースを自動的に調査する。**ユーザーに質問する前に** 可能な限り情報を集める。 @@ -92,11 +110,11 @@ miko を新しいプロジェクトに導入するための初期セットアッ **全サブエージェントの完了後、** 結果を統合して次のステップに進む。 -### 4. 【確認①】調査結果の確認 +### 5. 【確認①】調査結果の確認 調査結果を「フレームワーク・言語」「ディレクトリ構成」「レイヤー構成」「API構造」「テナント構造」「ビジネスルール抽出の着目点」「ケイパビリティ候補」にまとめてユーザーに提示する。特にテナント構造、レイヤー構成の抜け、着目点のコード例の代表性を確認する。フィードバックを反映して再提示、承認されたら次に進む。 -### 5. ファイル生成 +### 6. ファイル生成 確認①のフィードバックを反映し、`miko/system_high_level_design.md` を生成する。 @@ -129,6 +147,6 @@ miko を新しいプロジェクトに導入するための初期セットアッ - 同じ用語がケイパビリティごとに異なる意味を持つ場合は、それぞれのケイパビリティセクションに定義を書く - 該当する用語が見つからなければ空の用語集(見出しのみ)で生成する -### 6. 完了報告 +### 7. 完了報告 生成したファイル、検出したフレームワーク・レイヤー数・着目点数・ケイパビリティ候補数・用語数をサマリーテーブルで提示する。次のアクションとして `/miko.new_cap` をご案内する。 diff --git a/upgrade.sh b/upgrade.sh index ae93ff2..5bf508c 100755 --- a/upgrade.sh +++ b/upgrade.sh @@ -14,6 +14,29 @@ if [ -f ".miko/config" ]; then [ "$LANG_CHOICE" = "en" ] || LANG_CHOICE="ja" fi +# スキル名の区切り文字設定: .miko/config の separator (./-) を読む。なければ . +SEP="." +if [ -f ".miko/config" ]; then + sep_val=$(grep -E '^separator=' .miko/config | head -n 1 | cut -d= -f2 | tr -d '[:space:]' || true) + [ "$sep_val" = "-" ] && SEP="-" +fi + +# to_local — 正規スキル名(. 区切り)を設定された区切り文字の名前に変換する +to_local() { echo "${1//./$SEP}"; } + +# rewrite_skill_refs ... — ファイル中のスキル名参照 (miko.foo) を設定された区切り文字に書き換える +rewrite_skill_refs() { + [ "$SEP" = "." ] && return 0 + local sed_script="" name esc + for name in "${latest_skills[@]}"; do + esc="${name//./\\.}" + sed_script="${sed_script}s/${esc}/$(to_local "$name")/g;" + done + find "$@" -type f -name '*.md' | while IFS= read -r f; do + sed -i.mikobak "$sed_script" "$f" && rm -f "$f.mikobak" + done +} + # say — 言語設定に応じたメッセージを出力する say() { if [ "$LANG_CHOICE" = "en" ]; then echo "$2"; else echo "$1"; fi @@ -32,7 +55,7 @@ if ! command -v claude &> /dev/null; then fi # miko がインストールされているか確認(VERSION ファイルまたは miko スキルの存在) -if [ ! -f "$VERSION_FILE" ] && [ ! -f "$OLD_VERSION_FILE" ] && ! ls -d "$SKILLS_DIR"/miko.* &> /dev/null; then +if [ ! -f "$VERSION_FILE" ] && [ ! -f "$OLD_VERSION_FILE" ] && ! ls -d "$SKILLS_DIR"/miko.* &> /dev/null && ! ls -d "$SKILLS_DIR"/miko-* &> /dev/null; then say "⛩️ miko がインストールされていません。install.sh で初回インストールをお願いいたします。" \ "⛩️ miko is not installed. Please run install.sh for the initial installation." exit 1 @@ -121,7 +144,7 @@ if [ -d "$SKILLS_DIR/_miko" ]; then rm -rf "$SKILLS_DIR/_miko" fi -# 最新版に存在する miko.* スキル名を収集 +# 最新版に存在する miko.* スキル名(正規名、. 区切り)を収集 latest_skills=() for d in "$tmpdir"/miko/skills/miko.*/; do [ -d "$d" ] || continue @@ -149,23 +172,26 @@ if [ ${#protected_skills[@]} -gt 0 ]; then fi # is_protected — protected_skills に含まれるか判定するヘルパー +# 空配列の展開は bash 3.2 の set -u でエラーになるため、先に件数を確認する is_protected() { local name="$1" + [ ${#protected_skills[@]} -eq 0 ] && return 1 for p in "${protected_skills[@]}"; do [ "$p" = "$name" ] && return 0 done return 1 } -# 最新版にない miko.* スキルのうち、プロテクト済みでないものを削除候補として収集 +# 最新版にないローカルの miko スキルのうち、プロテクト済みでないものを削除候補として収集 +# ローカルのスキル名は設定された区切り文字なので、正規名を to_local で変換して比較する removed_skills=() -for d in "$SKILLS_DIR"/miko.*/; do +for d in "$SKILLS_DIR"/miko"$SEP"*/; do [ -d "$d" ] || continue name=$(basename "$d") is_protected "$name" && continue found=false for s in "${latest_skills[@]}"; do - [ "$s" = "$name" ] && found=true && break + [ "$(to_local "$s")" = "$name" ] && found=true && break done [ "$found" = false ] && removed_skills+=("$name") done @@ -205,29 +231,54 @@ if [ ${#removed_skills[@]} -gt 0 ]; then fi # miko 管理スキルを個別に更新(プロテクト済みはスキップ) +# 配置先はローカル名(設定された区切り文字) for s in "${latest_skills[@]}"; do - if is_protected "$s"; then - say " 🔒 $s はプロテクト済みのためスキップいたします" \ - " 🔒 $s is protected — skipping" + local_name=$(to_local "$s") + if is_protected "$local_name"; then + say " 🔒 $local_name はプロテクト済みのためスキップいたします" \ + " 🔒 $local_name is protected — skipping" continue fi - rm -rf "${SKILLS_DIR:?}/$s" - cp -r "$tmpdir/miko/skills/$s" "$SKILLS_DIR/" + rm -rf "${SKILLS_DIR:?}/$local_name" + cp -r "$tmpdir/miko/skills/$s" "$SKILLS_DIR/$local_name" done # .miko/ を更新: ユーザー作成ファイル(protected_skills, config 等)を保持したまま上書き # rm -rf は使わず、ofuda の中身を .miko/ にマージコピーする cp -r "$tmpdir/miko/ofuda/." .miko/ +# miko 管理スキルの正規名一覧を保存する(switch_separator.sh が参照する) +printf '%s\n' "${latest_skills[@]}" > .miko/skills_manifest + # 言語設定に応じて tone_guide を解決する(config がない既存インストールは ja として config を作成) if [ ! -f ".miko/config" ]; then echo "language=$LANG_CHOICE" > .miko/config fi +# v1.4.0 より前のインストールには separator 設定がないため補完する。 +# 既存インストールは現状の区切り文字のまま確認済みとして扱う(setup スキルの確認は走らせない) +if ! grep -qE '^separator=' .miko/config; then + echo "separator=$SEP" >> .miko/config +fi +if ! grep -qE '^separator_confirmed=' .miko/config; then + echo "separator_confirmed=1" >> .miko/config +fi if [ "$LANG_CHOICE" = "en" ] && [ -f ".miko/guides/tone_guide.en.md" ]; then cp .miko/guides/tone_guide.en.md .miko/guides/tone_guide.md fi rm -f .miko/guides/tone_guide.en.md +# ハイフン区切りの場合、更新したファイル内のスキル名参照を書き換える +# プロテクト済みスキルはユーザー管理のため書き換えない +if [ "$SEP" != "." ]; then + rewrite_paths=(.miko) + for s in "${latest_skills[@]}"; do + local_name=$(to_local "$s") + is_protected "$local_name" && continue + rewrite_paths+=("$SKILLS_DIR/$local_name") + done + rewrite_skill_refs "${rewrite_paths[@]}" +fi + echo "" say "✨ miko を $latest_semver ($latest_ts) に更新いたしました" \ "✨ miko has been updated to $latest_semver ($latest_ts)" From aa008d8c9da200ea749962980fc8e45f2fa8eb52 Mon Sep 17 00:00:00 2001 From: ysak-y Date: Fri, 17 Jul 2026 15:33:36 +0900 Subject: [PATCH 2/9] v1.4.0 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2 --- CHANGELOG.md | 10 ++++++++++ ofuda/VERSION | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7af58e1..1b96b5b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## v1.4.0 (2026-07-17) + +### New + +- **スキル名の区切り文字(ハイフン / ドット)を選択可能に** — 一部の LLM プラットフォームは Agent Skills 準拠のハイフン区切りのスキル名しか使えないため、新規インストールはどこでも動作するハイフン区切り(`/miko-setup`)で配置するようにした。初回の setup スキル実行時にドット区切り(`/miko.setup`、従来形式)への変更が確認される。`bash .miko/switch_separator.sh <.|->` でいつでも切り替え可能。`MIKO_SEPARATOR` 環境変数で明示した場合は初回確認をスキップ。設定は `.miko/config` の `separator=` に保存され、スキルディレクトリ名とファイル内のスキル名参照(handoffs 含む)がインストール・アップグレード・切り替え時に自動変換される。既存インストールはドット区切りのまま維持される + +### Fixed + +- **upgrade.sh が macOS 標準の bash 3.2 で中断する問題を修正** — `.miko/protected_skills` にプロテクト対象がない場合、`set -u` 下での空配列展開により処理が中断していた + ## v1.3.2 (2026-06-26) ### Changed diff --git a/ofuda/VERSION b/ofuda/VERSION index 9b99c29..f38325e 100644 --- a/ofuda/VERSION +++ b/ofuda/VERSION @@ -1,2 +1,2 @@ -1.3.2 -202606261418 +1.4.0 +202607170633 From 84b1ac59fecdafb2284b4664f970208f7149e4bc Mon Sep 17 00:00:00 2001 From: ysak-y Date: Fri, 17 Jul 2026 16:06:35 +0900 Subject: [PATCH 3/9] =?UTF-8?q?skills:=20=E3=82=B9=E3=82=AD=E3=83=AB?= =?UTF-8?q?=E5=90=8D=E3=81=AE=E3=82=A2=E3=83=B3=E3=83=80=E3=83=BC=E3=82=B9?= =?UTF-8?q?=E3=82=B3=E3=82=A2=E3=82=92=E3=83=8F=E3=82=A4=E3=83=95=E3=83=B3?= =?UTF-8?q?=E3=81=AB=E7=B5=B1=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 区切り文字をハイフンにしたとき miko-new_harae のような _ と - の混在表記になるのを避けるため、スキル名内の _ を - に変更する。 対象: new-cap / new-harae / quick-catchup / quick-impl / split-proposal / catchup-system-hld ディレクトリ名のリネームと、全ドキュメント内の参照の機械的な置換のみ。 CHANGELOG の過去エントリは履歴として旧名のまま残す。 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2 --- README.en.md | 42 +++++++++---------- README.md | 42 +++++++++---------- business_rules_driven_development.md | 16 +++---- ofuda/examples/system_high_level_design.md | 2 +- ofuda/guides/business_rules_guide.md | 10 ++--- .../SKILL.md | 0 skills/miko.catchup/SKILL.md | 6 +-- skills/miko.harae/SKILL.md | 8 ++-- skills/miko.miko/SKILL.md | 26 ++++++------ .../{miko.new_cap => miko.new-cap}/SKILL.md | 10 ++--- .../SKILL.md | 12 +++--- skills/miko.propose/SKILL.md | 8 ++-- .../SKILL.md | 16 +++---- .../SKILL.md | 8 ++-- skills/miko.setup/SKILL.md | 8 ++-- skills/miko.speckit.specify/SKILL.md | 2 +- .../SKILL.md | 16 +++---- .../examples/cross_capability_sub_proposal.md | 0 .../examples/umbrella_proposal.md | 0 19 files changed, 116 insertions(+), 116 deletions(-) rename skills/{miko.catchup_system_hld => miko.catchup-system-hld}/SKILL.md (100%) rename skills/{miko.new_cap => miko.new-cap}/SKILL.md (98%) rename skills/{miko.new_harae => miko.new-harae}/SKILL.md (92%) rename skills/{miko.quick_catchup => miko.quick-catchup}/SKILL.md (92%) rename skills/{miko.quick_impl => miko.quick-impl}/SKILL.md (98%) rename skills/{miko.split_proposal => miko.split-proposal}/SKILL.md (95%) rename skills/{miko.split_proposal => miko.split-proposal}/examples/cross_capability_sub_proposal.md (100%) rename skills/{miko.split_proposal => miko.split-proposal}/examples/umbrella_proposal.md (100%) diff --git a/README.en.md b/README.en.md index dea5cd0..6fa9969 100644 --- a/README.en.md +++ b/README.en.md @@ -46,13 +46,13 @@ Organizing by capability gathers related business rules in one place, which make ### Other design decisions -- **speckit is a surveying tool** — speckit artifacts are disposable. For heavy changes, we use speckit as a device to make Claude read the codebase deeply. Day-to-day implementation goes through `/miko.quick_impl`, without speckit +- **speckit is a surveying tool** — speckit artifacts are disposable. For heavy changes, we use speckit as a device to make Claude read the codebase deeply. Day-to-day implementation goes through `/miko.quick-impl`, without speckit - **Division of labor between documents** — the rules themselves (conclusions) go in `business_rules.md`; why they were decided (history) goes in proposals ## 🌿 Prerequisites - [Claude Code](https://docs.anthropic.com/en/docs/claude-code) is installed -- (Optional) The [speckit](https://github.com/github/spec-kit) skills — needed only if you use the full flow (`/miko.speckit.*`). Not required for the standard `/miko.quick_impl` flow +- (Optional) The [speckit](https://github.com/github/spec-kit) skills — needed only if you use the full flow (`/miko.speckit.*`). Not required for the standard `/miko.quick-impl` flow ## ✨ Installation @@ -142,11 +142,11 @@ miko/ | File | Role | Maintenance | |---|---|---| -| `system_high_level_design.md` | System-wide architecture, including the code exploration guide | Generated by `/miko.setup`, kept current by `/miko.catchup_system_hld` | +| `system_high_level_design.md` | System-wide architecture, including the code exploration guide | Generated by `/miko.setup`, kept current by `/miko.catchup-system-hld` | | `glossary.md` | Term definitions (organized in per-capability sections) | Maintained by miko | | `business_rules.md` | Domain decision criteria. Records the "why" that cannot be read from code | Maintained by miko | | `high_level_design.md` | Structure and overview of the capability | Maintained by miko | -| `harae.md` | Findings from adversarial verification, with status tracking | Generated by `/miko.new_harae`, updated by `/miko.harae` | +| `harae.md` | Findings from adversarial verification, with status tracking | Generated by `/miko.new-harae`, updated by `/miko.harae` | | `proposals/` | Change proposals for the capability and their history | Nushi-sama provides the raw material; written together with miko | ## ⛩️ Skills @@ -163,25 +163,25 @@ miko/ | Skill | Purpose | |---|---| | `/miko.setup [overview]` | Introduces miko to your project. Surveys the codebase and generates `miko/system_high_level_design.md` | -| `/miko.catchup_system_hld` | Brings `system_high_level_design.md` up to date with the codebase. Detects and fixes directory-structure drift | +| `/miko.catchup-system-hld` | Brings `system_high_level_design.md` up to date with the codebase. Detects and fixes directory-structure drift | ### Document authoring | Skill | Purpose | |---|---| -| `/miko.new_cap [overview]` | Interactively creates business_rules.md and high_level_design.md for a new capability, drawing on existing code where available | +| `/miko.new-cap [overview]` | Interactively creates business_rules.md and high_level_design.md for a new capability, drawing on existing code where available | | `/miko.catchup ` | Reconciles existing business_rules.md and high_level_design.md against the full codebase | -| `/miko.quick_catchup [diff]` | Creates a proposal from a code change (git diff / PR) and updates the BR/HLD. For after emergency fixes, etc. | +| `/miko.quick-catchup [diff]` | Creates a proposal from a code change (git diff / PR) and updates the BR/HLD. For after emergency fixes, etc. | | `/miko.propose [raw material]` | Interactively creates a change proposal | -| `/miko.split_proposal ` | Splits a proposal into an umbrella (parent) + sub-proposals by phase | -| `/miko.new_harae ` | First adversarial verification of the business rules. Generates harae.md from scratch | +| `/miko.split-proposal ` | Splits a proposal into an umbrella (parent) + sub-proposals by phase | +| `/miko.new-harae ` | First adversarial verification of the business rules. Generates harae.md from scratch | | `/miko.harae [proposal]` | Reviews and extends an existing harae.md. With a proposal, records the findings inside the proposal | ### Implementation (standard flow) | Skill | Purpose | |---|---| -| `/miko.quick_impl ` | The standard flow: implements changes directly, without speckit. Accepts change instructions without a proposal (refactoring, etc.). Changes to BR text require a proposal. Heavy changes beyond its scope are routed to the full flow | +| `/miko.quick-impl ` | The standard flow: implements changes directly, without speckit. Accepts change instructions without a proposal (refactoring, etc.). Changes to BR text require a proposal. Heavy changes beyond its scope are routed to the full flow | ### Implementation (full flow — speckit extensions, for heavy changes) @@ -208,10 +208,10 @@ Available only when speckit is installed. ### Defining a new capability ``` -/miko.new_cap +/miko.new-cap → Interactively creates business_rules.md + high_level_design.md -/miko.new_harae +/miko.new-harae → Adversarially probes the defined rules for contradictions and gaps. Generates harae.md → After fixing the findings, re-verification with /miko.harae is recommended @@ -235,14 +235,14 @@ Proceed in three stages: **Propose → Verify → Implement.** Propose gathers t → Adversarially verifies the rule set as it would be after the proposal. Findings are recorded in the proposal # Optional -/miko.split_proposal +/miko.split-proposal → For large changes only, splits into umbrella (parent) + subs by phase (run after harae) ``` -**Implementation phase (standard: quick_impl)** +**Implementation phase (standard: quick-impl)** ``` -/miko.quick_impl +/miko.quick-impl → Implements directly, without speckit (for single-intent changes within the existing structure) → Afterwards, business_rules.md + high_level_design.md + harae.md are updated automatically → If the change exceeds this scope, you are guided to the full flow @@ -277,10 +277,10 @@ When a change involves multiple intents, requires exploration to pin down its im ### Refactoring without a proposal -Changes that do not alter business-rule text (renames, moves, redistributing responsibilities, etc.) can be implemented by passing the instruction directly to `/miko.quick_impl`, without a proposal. +Changes that do not alter business-rule text (renames, moves, redistributing responsibilities, etc.) can be implemented by passing the instruction directly to `/miko.quick-impl`, without a proposal. ``` -/miko.quick_impl +/miko.quick-impl → Afterwards, affected implementation mappings are updated across all capabilities → If a BR text change turns out to be needed, you are guided to /miko.propose → If the change exceeds the scope (single intent, clear impact, mechanical or local), you are guided to the full flow @@ -290,7 +290,7 @@ Changes that do not alter business-rule text (renames, moves, redistributing res ``` # Bring system_high_level_design.md up to date -/miko.catchup_system_hld +/miko.catchup-system-hld → Detects directory-structure drift and updates system_high_level_design.md # Full scan (reconcile the whole capability) @@ -298,16 +298,16 @@ Changes that do not alter business-rule text (renames, moves, redistributing res → Reconciles BR/HLD against the full codebase, detecting and applying differences # Diff-based (apply a specific code change only) -/miko.quick_catchup +/miko.quick-catchup → Creates a proposal from the current branch's diff + updates the BR/HLD -/miko.quick_catchup #8250 +/miko.quick-catchup #8250 → Creates a proposal from the PR's diff + updates the BR/HLD ``` ## 🌾 Quality improvement during implementation -`/miko.quick_impl` (after implementing) and `/miko.speckit.implement` (per feature) automatically run the following self-reviews: +`/miko.quick-impl` (after implementing) and `/miko.speckit.implement` (per feature) automatically run the following self-reviews: 1. **Self-review** -- checks responsibility placement, naming, and framework conventions 2. **/simplify** -- checks for duplication, quality, and efficiency diff --git a/README.md b/README.md index b67b5df..7e04d00 100644 --- a/README.md +++ b/README.md @@ -46,13 +46,13 @@ miko はドキュメントを**ケイパビリティ単位**で整理いたし ### その他の設計判断 -- **speckit はお調べの道具** — speckit の成果物は使い捨て。重い変更のとき、Claude に深くコードを読ませるための仕掛けとして使います。普段の実装は `/miko.quick_impl` で speckit を通さず行います +- **speckit はお調べの道具** — speckit の成果物は使い捨て。重い変更のとき、Claude に深くコードを読ませるための仕掛けとして使います。普段の実装は `/miko.quick-impl` で speckit を通さず行います - **ドキュメントの役割分担** — ルールそのもの(結論)は `business_rules.md` に、なぜそう決めたか(経緯)は proposals に書きます ## 🌿 前提 - [Claude Code](https://docs.anthropic.com/en/docs/claude-code) がインストール済みであること -- (Optional)[speckit](https://github.com/github/spec-kit) スキル — フルフロー(`/miko.speckit.*`)をお使いの場合のみ必要でございます。基本フローの `/miko.quick_impl` だけなら不要です +- (Optional)[speckit](https://github.com/github/spec-kit) スキル — フルフロー(`/miko.speckit.*`)をお使いの場合のみ必要でございます。基本フローの `/miko.quick-impl` だけなら不要です ## ✨ インストール @@ -142,11 +142,11 @@ miko/ | ファイル | 役割 | メンテ | |---|---|---| -| `system_high_level_design.md` | システム全体のアーキテクチャ。コード探索ガイドを含む | `/miko.setup` で生成、`/miko.catchup_system_hld` で追従 | +| `system_high_level_design.md` | システム全体のアーキテクチャ。コード探索ガイドを含む | `/miko.setup` で生成、`/miko.catchup-system-hld` で追従 | | `glossary.md` | 用語の定義(ケイパビリティごとのセクションで管理) | miko がメンテ | | `business_rules.md` | ドメインの判断基準。コードからは読み取れない「なぜ」を記録 | miko がメンテ | | `high_level_design.md` | ケイパビリティの構造と全体像 | miko がメンテ | -| `harae.md` | 攻撃的検証の指摘リストとステータス管理 | `/miko.new_harae` が生成、`/miko.harae` が更新 | +| `harae.md` | 攻撃的検証の指摘リストとステータス管理 | `/miko.new-harae` が生成、`/miko.harae` が更新 | | `proposals/` | ケイパビリティへの変更提案と経緯 | 主さまが元ネタを出し、miko と相談しながら書く | ## ⛩️ スキル一覧 @@ -163,25 +163,25 @@ miko/ | スキル | 用途 | |---|---| | `/miko.setup [概要]` | プロジェクトに miko を導入。コードベースをお調べし `miko/system_high_level_design.md` を生成 | -| `/miko.catchup_system_hld` | `system_high_level_design.md` をコードベースの現状に追従。ディレクトリ構成の乖離を検出・更新 | +| `/miko.catchup-system-hld` | `system_high_level_design.md` をコードベースの現状に追従。ディレクトリ構成の乖離を検出・更新 | ### ドキュメント作成 | スキル | 用途 | |---|---| -| `/miko.new_cap [概要]` | 新規ケイパビリティの business_rules.md と high_level_design.md を対話しながら作成。既存コードがあれば活用 | +| `/miko.new-cap [概要]` | 新規ケイパビリティの business_rules.md と high_level_design.md を対話しながら作成。既存コードがあれば活用 | | `/miko.catchup ` | 既存の business_rules.md と high_level_design.md をコード全体と突き合わせて追従 | -| `/miko.quick_catchup [diff]` | コード変更(git diff / PR)から proposal を作成し BR/HLD を更新。緊急 FIX 後などに | +| `/miko.quick-catchup [diff]` | コード変更(git diff / PR)から proposal を作成し BR/HLD を更新。緊急 FIX 後などに | | `/miko.propose [元ネタ]` | 変更プロポーザルを対話しながら作成 | -| `/miko.split_proposal ` | プロポーザルを親(umbrella)+ サブにフェーズ分割 | -| `/miko.new_harae ` | ビジネスルールの初回攻撃的検証。harae.md をゼロから生成 | +| `/miko.split-proposal ` | プロポーザルを親(umbrella)+ サブにフェーズ分割 | +| `/miko.new-harae ` | ビジネスルールの初回攻撃的検証。harae.md をゼロから生成 | | `/miko.harae [proposal]` | 既存 harae.md の棚卸し・差分探索。proposal 付きなら proposal 内に検証結果を記録 | ### 実装(基本フロー) | スキル | 用途 | |---|---| -| `/miko.quick_impl ` | 変更を speckit を通さず直接実装する基本フロー。proposal なしの変更指示(リファクタリング等)も受け付ける。BR 本文の変更を伴う場合は proposal が必要。スコープを超える重い変更はフルフローにご誘導 | +| `/miko.quick-impl ` | 変更を speckit を通さず直接実装する基本フロー。proposal なしの変更指示(リファクタリング等)も受け付ける。BR 本文の変更を伴う場合は proposal が必要。スコープを超える重い変更はフルフローにご誘導 | ### 実装(フルフロー — speckit 拡張、重い変更向け) @@ -208,10 +208,10 @@ speckit がインストールされている場合のみ使えます。 ### 新規ケイパビリティの定義 ``` -/miko.new_cap +/miko.new-cap → 対話しながら business_rules.md + high_level_design.md を作成 -/miko.new_harae +/miko.new-harae → 定義したルールの矛盾・穴を攻撃的に検証。harae.md を生成 → 指摘を修正したら /miko.harae で再検証をお勧めする @@ -235,14 +235,14 @@ speckit がインストールされている場合のみ使えます。 → proposal 適用後のルール体系を攻撃的に検証。指摘は proposal 内に記録 # Optional -/miko.split_proposal +/miko.split-proposal → 変更が大きい場合のみ、親(umbrella)+ サブにフェーズ分割(harae の後に実施) ``` -**実装フェーズ(基本: quick_impl)** +**実装フェーズ(基本: quick-impl)** ``` -/miko.quick_impl +/miko.quick-impl → speckit を通さず直接実装(単一の意図・既存構造の範囲内の変更が対象) → 実装後、business_rules.md + high_level_design.md + harae.md を自動更新 → スコープを超える場合はフルフローにご誘導 @@ -277,10 +277,10 @@ speckit がインストールされている場合のみ使えます。 ### proposal を通さないリファクタリング -ビジネスルール本文を変えない変更(リネーム・移動・責務の再配置等)は、proposal を通さず `/miko.quick_impl` に変更指示を直接渡して実装できる。 +ビジネスルール本文を変えない変更(リネーム・移動・責務の再配置等)は、proposal を通さず `/miko.quick-impl` に変更指示を直接渡して実装できる。 ``` -/miko.quick_impl <変更指示> +/miko.quick-impl <変更指示> → 実装後、影響する実装マッピングを全ケイパビリティ横断で自動更新 → BR 本文の変更が必要と判定された場合は /miko.propose にご誘導 → スコープ(意図の単一性・影響範囲の明瞭さ・機械性 or 局所性)を超える場合はフルフローにご誘導 @@ -290,7 +290,7 @@ speckit がインストールされている場合のみ使えます。 ``` # system_high_level_design.md の追従 -/miko.catchup_system_hld +/miko.catchup-system-hld → ディレクトリ構成の乖離を検出し、system_high_level_design.md を更新 # フルスキャン(ケイパビリティ全体を突き合わせ) @@ -298,16 +298,16 @@ speckit がインストールされている場合のみ使えます。 → コード全体と BR/HLD を突き合わせて差分を検出・更新 # 差分ベース(特定のコード変更だけ反映) -/miko.quick_catchup +/miko.quick-catchup → カレントブランチの diff から proposal 作成 + BR/HLD 更新 -/miko.quick_catchup #8250 +/miko.quick-catchup #8250 → PR の diff から proposal 作成 + BR/HLD 更新 ``` ## 🌾 実装時の品質改善 -`/miko.quick_impl` は実装後に、`/miko.speckit.implement` は機能ごとに、以下のセルフレビューを自動実行いたします: +`/miko.quick-impl` は実装後に、`/miko.speckit.implement` は機能ごとに、以下のセルフレビューを自動実行いたします: 1. **セルフレビュー** -- 責務の配置、命名、フレームワーク規約のチェック 2. **/simplify** -- コードの重複・品質・効率のチェック diff --git a/business_rules_driven_development.md b/business_rules_driven_development.md index 8cfbd8f..51110d3 100644 --- a/business_rules_driven_development.md +++ b/business_rules_driven_development.md @@ -96,10 +96,10 @@ speckit は SDD のためではなく、**Claude に丁寧にコードベース 2. 検証フェーズ — harae で proposal 適用後のルール体系を攻撃的に検証(AI) /miko.harae - 矛盾・穴・悪用耐性などを攻撃的に確かめる。指摘は proposal 内に記録 - - 変更が大きい場合は harae の後に /miko.split_proposal で親 + サブに分割できる + - 変更が大きい場合は harae の後に /miko.split-proposal で親 + サブに分割できる 3. 実装フェーズ — proposal に基づいて実装(AI) - - 基本: /miko.quick_impl(speckit を通さず直接実装) + - 基本: /miko.quick-impl(speckit を通さず直接実装) - 重い変更: speckit で仕様策定・実装 /speckit.specify → /speckit.clarify → /speckit.plan → /speckit.tasks → /speckit.analyze → /speckit.implement - speckit の成果物は使い捨て。Claude に深く調査させるための道具 @@ -117,7 +117,7 @@ speckit は SDD のためではなく、**Claude に丁寧にコードベース ↓ 検証: harae(AI が攻撃的に検証、指摘は proposal 内に記録) ↓ -実装: quick_impl / speckit(AI が実装) +実装: quick-impl / speckit(AI が実装) ↓ business_rules.md(AI が更新:ドメインの判断基準) high_level_design.md(AI が更新:構造の変化) @@ -340,12 +340,12 @@ proposal は business_rules.md への変更提案ではなく、**ケイパビ 大きな変更を PR 単位でフェーズ分割して実装したい場合、親プロポーザル + サブプロポーザル方式を使う。 -**フロー:** `/miko.propose` で通常通り 1 本のプロポーザルを作成し、`/miko.harae` で検証した後、`/miko.split_proposal` で分割する。 +**フロー:** `/miko.propose` で通常通り 1 本のプロポーザルを作成し、`/miko.harae` で検証した後、`/miko.split-proposal` で分割する。 ``` /miko.propose → 1 本のプロポーザル作成 /miko.harae → 検証(推奨。分割前にやると手戻りが少ない) -/miko.split_proposal → 親(umbrella)+ サブに分割 +/miko.split-proposal → 親(umbrella)+ サブに分割 → 各サブに対して /miko.speckit.specify → 実装フロー ``` @@ -381,7 +381,7 @@ miko//proposals/ ### 複数ケイパビリティにまたがる変更 -**決定(v0.6.0〜):** umbrella/sub パターンに統一する。propose で横断影響を含む 1 本のプロポーザルを作成し、split_proposal で影響先ケイパビリティに影響先サブプロポーザルを作成する。implement は各サブの BR 変更に従って各ケイパビリティの business_rules.md を更新する。 +**決定(v0.6.0〜):** umbrella/sub パターンに統一する。propose で横断影響を含む 1 本のプロポーザルを作成し、split-proposal で影響先ケイパビリティに影響先サブプロポーザルを作成する。implement は各サブの BR 変更に従って各ケイパビリティの business_rules.md を更新する。 **フロー:** @@ -391,9 +391,9 @@ miko//proposals/ → 「他ケイパビリティへの影響を調査しますか?」と確認 → サブエージェントが business_rules.md 存在するケイパビリティを走査 → 調査結果をもとに proposal の「他ケイパビリティへの影響」セクション + マーカーを付与 - → 完了報告で /miko.split_proposal の実行を案内 + → 完了報告で /miko.split-proposal の実行を案内 -/miko.split_proposal 時: +/miko.split-proposal 時: → 「他ケイパビリティへの影響」セクションから影響先サブプロポーザルを作成 → 影響先ケイパビリティの proposals/ に配置 → 親プロポーザルのフェーズ構成に列挙(パスからケイパビリティが判別可能) diff --git a/ofuda/examples/system_high_level_design.md b/ofuda/examples/system_high_level_design.md index bdf1beb..18f72ca 100644 --- a/ofuda/examples/system_high_level_design.md +++ b/ofuda/examples/system_high_level_design.md @@ -31,7 +31,7 @@ ## コード探索ガイド -> miko のスキル(catchup、new_cap、propose)がコードを探索・精読する際の手引き。 +> miko のスキル(catchup、new-cap、propose)がコードを探索・精読する際の手引き。 > プロジェクト固有のフレームワーク・構造・慣習をここに記述する。 ### フレームワーク・言語 diff --git a/ofuda/guides/business_rules_guide.md b/ofuda/guides/business_rules_guide.md index 20e0aab..226f2f4 100644 --- a/ofuda/guides/business_rules_guide.md +++ b/ofuda/guides/business_rules_guide.md @@ -46,10 +46,10 @@ ### 新規ケイパビリティの場合 ``` -/miko.new_cap +/miko.new-cap → 対話しながら business_rules.md + high_level_design.md を作成 -/miko.new_harae +/miko.new-harae → 初回の攻撃的検証。harae.md を生成(推奨) → 指摘を修正したら /miko.harae で再検証をお勧めする @@ -67,7 +67,7 @@ → proposal 適用後のルール体系を攻撃的に検証。指摘は proposal 内に記録される 3. 実装する - 基本: /miko.quick_impl + 基本: /miko.quick-impl → speckit を通さず直接実装(単一の意図・既存構造の範囲内の変更が対象) 重い変更(複数の意図が絡む、影響範囲の見極めに探索が要る、処理構造が大きく動く)は speckit フロー: @@ -81,14 +81,14 @@ → harae.md を更新(proposal の「祓え検証」セクションがあれば適用) ``` -**フェーズ分割:** 変更が大きい場合、`/miko.split_proposal` でプロポーザルを親(umbrella)+ サブにフェーズ分割できる。 +**フェーズ分割:** 変更が大きい場合、`/miko.split-proposal` でプロポーザルを親(umbrella)+ サブにフェーズ分割できる。 ### ドキュメントの流れ ``` proposal(人が元ネタを出し、AI と相談しながら書く) ↓ -実装(基本は quick_impl で直接実装。重い変更は speckit が使い捨て仕様を作って実装) +実装(基本は quick-impl で直接実装。重い変更は speckit が使い捨て仕様を作って実装) ↓ business_rules.md(AI が更新:ドメインの判断基準) high_level_design.md(AI が更新:構造の変化) diff --git a/skills/miko.catchup_system_hld/SKILL.md b/skills/miko.catchup-system-hld/SKILL.md similarity index 100% rename from skills/miko.catchup_system_hld/SKILL.md rename to skills/miko.catchup-system-hld/SKILL.md diff --git a/skills/miko.catchup/SKILL.md b/skills/miko.catchup/SKILL.md index ab0f369..a11ef73 100644 --- a/skills/miko.catchup/SKILL.md +++ b/skills/miko.catchup/SKILL.md @@ -22,18 +22,18 @@ $ARGUMENTS ユーザーに確認する: -> ⛩️ キャッチアップの前に確認でございます。`/miko.catchup_system_hld` は実施済みでしょうか? +> ⛩️ キャッチアップの前に確認でございます。`/miko.catchup-system-hld` は実施済みでしょうか? > `system_high_level_design.md` が古いままですと、コード探索のスコープがずれる恐れがございます。 - ユーザーが「実施済み」「不要」等と回答した場合 → 次に進む -- ユーザーが「まだ」「やってほしい」等と回答した場合 → `/miko.catchup_system_hld` の実行を案内し、完了後に `/miko.catchup` を再実行するよう伝えて中止する +- ユーザーが「まだ」「やってほしい」等と回答した場合 → `/miko.catchup-system-hld` の実行を案内し、完了後に `/miko.catchup` を再実行するよう伝えて中止する ### 3. 既存ファイル確認 - `miko//business_rules.md` が存在するか確認する - **存在しない場合はエラーとして中止する:** > ⛩️ `miko//business_rules.md` が見つかりません。 - > - 新規作成は `/miko.new_cap ` をお使いください + > - 新規作成は `/miko.new-cap ` をお使いください - 存在する場合: - 「🌿 既存の business_rules.md を読み込み、コードとの差分をキャッチアップいたします。」 diff --git a/skills/miko.harae/SKILL.md b/skills/miko.harae/SKILL.md index 7b521c3..d5b815c 100644 --- a/skills/miko.harae/SKILL.md +++ b/skills/miko.harae/SKILL.md @@ -17,7 +17,7 @@ $ARGUMENTS **`miko//harae.md` が存在しない場合はエラー:** > ⛩️ `miko//harae.md` が見つかりません。 -> まず `/miko.new_harae ` で初回検証を行ってください。 +> まず `/miko.new-harae ` で初回検証を行ってください。 **proposal が指定されていない場合:** @@ -38,7 +38,7 @@ $ARGUMENTS **成果物:** - proposal なしの場合: `miko//harae.md` を更新する -- proposal 付きの場合: **proposal ファイル内に「祓え検証」セクションを追記する。harae.md は更新しない。** proposal はまだ確定していないため、harae.md への永続化は実装完了時(miko.speckit.implement / miko.quick_impl)に行う +- proposal 付きの場合: **proposal ファイル内に「祓え検証」セクションを追記する。harae.md は更新しない。** proposal はまだ確定していないため、harae.md への永続化は実装完了時(miko.speckit.implement / miko.quick-impl)に行う **検証の6軸:** `.miko/guides/harae_guide.md` に定義された6軸(内部矛盾・不完全性・境界の曖昧さ・時間軸の破綻・ビジネス毀損・悪用耐性)で検証する。proposal 付きの場合は6軸に加えて「既存への影響(proposal の変更で既存の本番エンティティが意図せず壊れないか)」も検証する。 @@ -117,7 +117,7 @@ proposal が指定されていない場合。メインセッションで棚卸 proposal が指定されている場合。proposal を仮想適用した BR を検証し、**指摘は proposal に追記する。harae.md は更新しない。** -proposal はまだ確定していないため、harae.md への永続化は実装完了時に行う(miko.speckit.implement / miko.quick_impl のデザインドキュメント更新ステップで harae.md に転記される)。 +proposal はまだ確定していないため、harae.md への永続化は実装完了時に行う(miko.speckit.implement / miko.quick-impl のデザインドキュメント更新ステップで harae.md に転記される)。 ### 1. 資料の読み込み @@ -179,7 +179,7 @@ proposal の変更が既存の本番エンティティを意図せず壊さな ### 4. proposal に祓え検証セクションを追記 -対話の結果を反映し、proposal ファイルの末尾に「祓え検証」セクションとして追記する。このセクションは **harae.md に対する差分操作** を記述するもので、実装完了時(miko.speckit.implement / miko.quick_impl)に harae.md へ適用される。 +対話の結果を反映し、proposal ファイルの末尾に「祓え検証」セクションとして追記する。このセクションは **harae.md に対する差分操作** を記述するもので、実装完了時(miko.speckit.implement / miko.quick-impl)に harae.md へ適用される。 **フォーマット:** `.miko/examples/proposal.md` の「祓え検証」セクションに従う。注意点: - 「既存指摘のステータス変更」は該当がなければ省略する diff --git a/skills/miko.miko/SKILL.md b/skills/miko.miko/SKILL.md index ba95b14..e2d7c43 100644 --- a/skills/miko.miko/SKILL.md +++ b/skills/miko.miko/SKILL.md @@ -71,12 +71,12 @@ miko に関するあらゆるご質問にお答えする。 1. **プロジェクトに miko を初めて導入する** → `/miko.setup` をご案内 - - セットアップ後にコードベースが変わった場合は `/miko.catchup_system_hld` で追従 + - セットアップ後にコードベースが変わった場合は `/miko.catchup-system-hld` で追従 2. **新しいケイパビリティを定義したい** - → `/miko.new_cap ` をご案内 - - `new_cap` は BR/HLD を作成するまで。実装はしない - - 定義後は `/miko.new_harae ` で初回検証をお勧めする + → `/miko.new-cap ` をご案内 + - `new-cap` は BR/HLD を作成するまで。実装はしない + - 定義後は `/miko.new-harae ` で初回検証をお勧めする - 指摘を修正したら `/miko.harae ` で再検証をお勧めする - 実装に進むには、まず `/miko.propose` で proposal を作成してから @@ -86,28 +86,28 @@ miko に関するあらゆるご質問にお答えする。 - まず `/miko.propose` で proposal をお作りする(実装の前には必ず proposal が必要) - **検証フェーズ**(harae でルール体系を攻撃的に確かめる): - proposal ができたら `/miko.harae ` でルール検証をお勧めする(指摘は proposal 内に記録される) - - 変更が大きい場合や他ケイパビリティへの横断影響がある場合は `/miko.split_proposal` で親(umbrella)+ サブにフェーズ分割できる(harae の後に実施。横断影響がある場合は影響先ケイパビリティにサブ proposal が作られる。DB マイグレーションや環境変更の分離にも有効) + - 変更が大きい場合や他ケイパビリティへの横断影響がある場合は `/miko.split-proposal` で親(umbrella)+ サブにフェーズ分割できる(harae の後に実施。横断影響がある場合は影響先ケイパビリティにサブ proposal が作られる。DB マイグレーションや環境変更の分離にも有効) - **実装フェーズ**(proposal に基づいて実装する。分割した場合は各サブ proposal に対して実行): - - 基本は `/miko.quick_impl` をお勧め(speckit を通さず直接実装) + - 基本は `/miko.quick-impl` をお勧め(speckit を通さず直接実装) - 重い変更(複数の意図が絡む、影響範囲の見極めに探索が要る、処理構造が大きく動く)→ フルフロー(`/miko.speckit.specify` から)をお勧め - 判断がつかない → まず proposal で整理し、規模を見てからご案内 - 実装完了時に business_rules.md + high_level_design.md + harae.md が自動更新される 4. **コードは書いたがドキュメントが追いついていない** - - まず `/miko.catchup_system_hld` で system_high_level_design.md の追従を確認 - - 特定の変更(PR、ブランチ)だけ → `/miko.quick_catchup [diff]` + - まず `/miko.catchup-system-hld` で system_high_level_design.md の追従を確認 + - 特定の変更(PR、ブランチ)だけ → `/miko.quick-catchup [diff]` - 全体的に古くなっている → `/miko.catchup ` 4-2. **proposal を通さないリファクタリングをしたい(リネーム・移動・責務の再配置等)** - - `/miko.quick_impl <変更指示>` をご案内(proposal は不要) + - `/miko.quick-impl <変更指示>` をご案内(proposal は不要) - 実装後に影響する実装マッピングを全ケイパビリティ横断で自動更新 - BR 本文の変更が必要と判定された場合は `/miko.propose` に誘導される - スコープ(意図の単一性・影響範囲の明瞭さ・機械性 or 局所性)を超える場合はフルフローに誘導される 5. **propose は済んでいて、実装フェーズに進みたい** - harae が未実施で重要な変更 → `/miko.harae ` で検証してから実装フェーズへ - - 変更が大きい、または横断影響がある → `/miko.split_proposal` で分割してから各サブ proposal に対して実装 - - 基本 → `/miko.quick_impl` で直接 + - 変更が大きい、または横断影響がある → `/miko.split-proposal` で分割してから各サブ proposal に対して実装 + - 基本 → `/miko.quick-impl` で直接 - 重い変更 → フルフロー(`/miko.speckit.specify` から) - いずれも実装完了時に harae.md への転記を含むドキュメント更新が自動で行われる @@ -123,7 +123,7 @@ miko に関するあらゆるご質問にお答えする。 - BR の変更は直接編集ではなく、必ず `/miko.propose` でプロポーザルを作成してから行う - 対話の中で「このルールが足りない」「このルールは実態と違う」と判明した場合も同様 - 例: 「BR をチェックして → 不足を発見 → `/miko.propose` で変更提案を作りましょう」 - - 実装も必要なら、proposal 作成後にパターン3の実装フェーズ(基本は quick_impl、重い変更は speckit フロー)に進む + - 実装も必要なら、proposal 作成後にパターン3の実装フェーズ(基本は quick-impl、重い変更は speckit フロー)に進む --- @@ -202,7 +202,7 @@ miko の実装フローでは **constitution**(`.specify/memory/constitution.m **対話の中で BR の不足・誤り・変更の必要性が判明した場合、直接 BR を編集する提案をしてはいけない。** 必ず `/miko.propose` でプロポーザルを作成するフローに誘導する。 -これは BR チェックの依頼に限らない。どのような入力・対話であっても、結果として「BR を変えるべき」と判明したら `/miko.propose` → 必要に応じて実装フロー(基本は `/miko.quick_impl`、重い変更は `/miko.speckit.specify` → `/miko.speckit.plan` → ...)の順で進める。 +これは BR チェックの依頼に限らない。どのような入力・対話であっても、結果として「BR を変えるべき」と判明したら `/miko.propose` → 必要に応じて実装フロー(基本は `/miko.quick-impl`、重い変更は `/miko.speckit.specify` → `/miko.speckit.plan` → ...)の順で進める。 **悪い例:** > 「このルールが BR に不足しています。追加いたしましょうか?」 diff --git a/skills/miko.new_cap/SKILL.md b/skills/miko.new-cap/SKILL.md similarity index 98% rename from skills/miko.new_cap/SKILL.md rename to skills/miko.new-cap/SKILL.md index 313deb8..4e7888e 100644 --- a/skills/miko.new_cap/SKILL.md +++ b/skills/miko.new-cap/SKILL.md @@ -10,9 +10,9 @@ $ARGUMENTS 入力の形式: ` <概要(自由記述、省略可)>` -- 例: `/miko.new_cap order_management 注文の作成・決済・キャンセルを管理する` -- 例: `/miko.new_cap notification` -- 空の場合はエラー: 「⛩️ ケイパビリティ名をお願いいたします(例: `/miko.new_cap order_management 注文管理`)」 +- 例: `/miko.new-cap order_management 注文の作成・決済・キャンセルを管理する` +- 例: `/miko.new-cap notification` +- 空の場合はエラー: 「⛩️ ケイパビリティ名をお願いいたします(例: `/miko.new-cap order_management 注文管理`)」 --- @@ -28,7 +28,7 @@ $ARGUMENTS **catchup との違い:** -| 観点 | miko.new_cap | miko.catchup | +| 観点 | miko.new-cap | miko.catchup | |------|-----------|---------------| | 用途 | 新規作成 | 既存ドキュメントの更新 | | 前提 | ドキュメントがまだない | ドキュメントが既にある | @@ -249,4 +249,4 @@ HLD の骨子(`.miko/examples/high_level_design.md` と同等の構造)を ### 12. 完了報告 -生成したファイル、ルール総数(制約/導出の内訳、実装済み/未実装)、暗黙のルール数、未決事項数をサマリーテーブルで提示する。次のアクションとして `/miko.new_harae` によるルール検証をお勧めする。 +生成したファイル、ルール総数(制約/導出の内訳、実装済み/未実装)、暗黙のルール数、未決事項数をサマリーテーブルで提示する。次のアクションとして `/miko.new-harae` によるルール検証をお勧めする。 diff --git a/skills/miko.new_harae/SKILL.md b/skills/miko.new-harae/SKILL.md similarity index 92% rename from skills/miko.new_harae/SKILL.md rename to skills/miko.new-harae/SKILL.md index e5f9a0d..a75ca15 100644 --- a/skills/miko.new_harae/SKILL.md +++ b/skills/miko.new-harae/SKILL.md @@ -10,8 +10,8 @@ $ARGUMENTS 入力の形式: `` -- 例: `/miko.new_harae order_management` -- 空の場合はエラー: 「⛩️ ケイパビリティ名をお願いいたします(例: `/miko.new_harae order_management`)」 +- 例: `/miko.new-harae order_management` +- 空の場合はエラー: 「⛩️ ケイパビリティ名をお願いいたします(例: `/miko.new-harae order_management`)」 **`miko//harae.md` が既に存在する場合はエラー:** @@ -31,13 +31,13 @@ $ARGUMENTS **検証の6軸:** `.miko/guides/harae_guide.md` に定義された6軸(内部矛盾・不完全性・境界の曖昧さ・時間軸の破綻・ビジネス毀損・悪用耐性)で検証する。 **使用タイミング:** -- `/miko.new_cap` 後 — 定義したルールの初回検証 +- `/miko.new-cap` 後 — 定義したルールの初回検証 **フローでの位置づけ:** ``` -/miko.new_cap → ルール定義 -/miko.new_harae → ルールの弱点を探す(初回) +/miko.new-cap → ルール定義 +/miko.new-harae → ルールの弱点を探す(初回) /miko.harae → 既存の harae.md を棚卸し・差分探索(2回目以降) ``` @@ -55,7 +55,7 @@ $ARGUMENTS - `.miko/guides/harae_format_guide.md` — harae.md のフォーマットとステータス管理ルール - `miko//business_rules.md` — **存在しない場合はエラー:** > ⛩️ `miko//business_rules.md` が見つかりません。 - > まず `/miko.new_cap ` でケイパビリティを定義してください。 + > まず `/miko.new-cap ` でケイパビリティを定義してください。 - `miko//high_level_design.md` — あれば - `miko/glossary.md` — あれば diff --git a/skills/miko.propose/SKILL.md b/skills/miko.propose/SKILL.md index bfebbef..0ddc6f1 100644 --- a/skills/miko.propose/SKILL.md +++ b/skills/miko.propose/SKILL.md @@ -23,7 +23,7 @@ $ARGUMENTS **プロポーザルとは:** ケイパビリティに対する変更提案。ビジネスルールの変更だけでなく、機能仕様・影響範囲・代替案を含む。実装後に「ビジネスルールの変更」セクションだけが business_rules.md に反映される。 -**⚠️ 絶対禁止:** このスキルは `business_rules.md` を **読み取り専用** として扱う。propose が直接 business_rules.md を編集・上書きしてはならない。BR への変更はすべてプロポーザルファイルの「ビジネスルールの変更」セクションに記述し、実装スキル(implement / quick_impl)が反映する。 +**⚠️ 絶対禁止:** このスキルは `business_rules.md` を **読み取り専用** として扱う。propose が直接 business_rules.md を編集・上書きしてはならない。BR への変更はすべてプロポーザルファイルの「ビジネスルールの変更」セクションに記述し、実装スキル(implement / quick-impl)が反映する。 **対話のスタイル:** 機械的な質問リストではなく、自然な会話で進める。ただし確認ポイントは明確に設ける。 @@ -56,7 +56,7 @@ $ARGUMENTS > ⛩️ `miko//business_rules.md` が見つかりません。 > このスキルは既存の business_rules.md への変更提案を作成いたします。 > `- 既存コードがある場合: まず /miko.catchup で business_rules.md を生成してください` - > `- 新規ケイパビリティの場合: /miko.new_cap で初期ルールを定義してください` + > `- 新規ケイパビリティの場合: /miko.new-cap で初期ルールを定義してください` - `miko//high_level_design.md` — 現在の構造(なければスキップ) ### 3. 元ネタのヒアリング @@ -201,7 +201,7 @@ business_rules.md が存在するケイパビリティを対象に、サブエ ### 11. 完了報告 -ケイパビリティ名、proposal パス、ルール変更件数(新設/改訂/廃止)、代替案数をサマリーテーブルで提示する。次のアクションとして `/miko.harae` によるルール検証と、実装フロー(quick_impl or フルフロー)をご案内する。以下の場合は `/miko.split_proposal` によるフェーズ分割もご案内する: +ケイパビリティ名、proposal パス、ルール変更件数(新設/改訂/廃止)、代替案数をサマリーテーブルで提示する。次のアクションとして `/miko.harae` によるルール検証と、実装フロー(quick-impl or フルフロー)をご案内する。以下の場合は `/miko.split-proposal` によるフェーズ分割もご案内する: - プロポーザルの規模が大きい場合 - DB マイグレーションや環境変数の追加など、インフラ・環境の変更を含む場合 -- **`` マーカーを付与した場合(横断プロポーザル)** — `/miko.split_proposal` で影響先ケイパビリティへの影響先サブプロポーザルが作成される旨を案内する +- **`` マーカーを付与した場合(横断プロポーザル)** — `/miko.split-proposal` で影響先ケイパビリティへの影響先サブプロポーザルが作成される旨を案内する diff --git a/skills/miko.quick_catchup/SKILL.md b/skills/miko.quick-catchup/SKILL.md similarity index 92% rename from skills/miko.quick_catchup/SKILL.md rename to skills/miko.quick-catchup/SKILL.md index a6ade1b..afeea7a 100644 --- a/skills/miko.quick_catchup/SKILL.md +++ b/skills/miko.quick-catchup/SKILL.md @@ -10,10 +10,10 @@ $ARGUMENTS 入力の形式: ` [diff_source]` -- 例: `/miko.quick_catchup order_management` — カレントブランチのベースブランチからの diff を使用 -- 例: `/miko.quick_catchup order_management #8250` — PR の diff を使用 -- 例: `/miko.quick_catchup order_management HEAD~3..HEAD` — git range を使用 -- 空の場合はエラー: 「⛩️ ケイパビリティ名をお願いいたします(例: `/miko.quick_catchup order_management`)」 +- 例: `/miko.quick-catchup order_management` — カレントブランチのベースブランチからの diff を使用 +- 例: `/miko.quick-catchup order_management #8250` — PR の diff を使用 +- 例: `/miko.quick-catchup order_management HEAD~3..HEAD` — git range を使用 +- 空の場合はエラー: 「⛩️ ケイパビリティ名をお願いいたします(例: `/miko.quick-catchup order_management`)」 --- @@ -36,11 +36,11 @@ miko フローを通さずに入ったコード変更(緊急 FIX 等)を、 ユーザーに確認する: -> ⛩️ キャッチアップの前に確認でございます。`/miko.catchup_system_hld` は実施済みでしょうか? +> ⛩️ キャッチアップの前に確認でございます。`/miko.catchup-system-hld` は実施済みでしょうか? > `system_high_level_design.md` が古いままですと、コード探索のスコープがずれる恐れがございます。 - ユーザーが「実施済み」「不要」等と回答した場合 → 次に進む -- ユーザーが「まだ」「やってほしい」等と回答した場合 → `/miko.catchup_system_hld` の実行を案内し、完了後に `/miko.quick_catchup` を再実行するよう伝えて中止する +- ユーザーが「まだ」「やってほしい」等と回答した場合 → `/miko.catchup-system-hld` の実行を案内し、完了後に `/miko.quick-catchup` を再実行するよう伝えて中止する ### 2. 入力検証・資料読み込み @@ -57,7 +57,7 @@ miko フローを通さずに入ったコード変更(緊急 FIX 等)を、 - `miko/system_high_level_design.md` — コード探索ガイド(着目点の参照) - `miko//business_rules.md` — 現在のビジネスルール。**存在しない場合はエラー:** > ⛩️ `miko//business_rules.md` が見つかりません。 - > - 新規作成は `/miko.new_cap ` をお使いください + > - 新規作成は `/miko.new-cap ` をお使いください - `miko//high_level_design.md` — 現在の構造(あれば) **探索対象外:** `.miko/` ディレクトリは miko の内部リソースであり、プロジェクトのコードではない。探索・精読の対象にしないこと。 @@ -103,7 +103,7 @@ diff ソース、変更の要約、ビジネスルールへの影響(新設/ **ファイル名:** `miko//proposals/YYYY-MM-DD-.md` -**構造:** `.miko/examples/proposal.md` に準ずる。quick_catchup 固有の違い: +**構造:** `.miko/examples/proposal.md` に準ずる。quick-catchup 固有の違い: - 冒頭に「このプロポーザルはコード変更から事後的に作成されたものです。」と付記 - 影響範囲に diff ソースと変更ファイル一覧を記載する diff --git a/skills/miko.quick_impl/SKILL.md b/skills/miko.quick-impl/SKILL.md similarity index 98% rename from skills/miko.quick_impl/SKILL.md rename to skills/miko.quick-impl/SKILL.md index f010522..2738f83 100644 --- a/skills/miko.quick_impl/SKILL.md +++ b/skills/miko.quick-impl/SKILL.md @@ -10,9 +10,9 @@ $ARGUMENTS 入力の形式: 以下のいずれか -- proposal のパス(例: `/miko.quick_impl miko/order_management/proposals/2026-03-01-fix-trial-grace-period.md`) -- 変更指示の自由記述(例: `/miko.quick_impl OrderService を OrderFacade にリネーム`) -- 空の場合はエラー: 「⛩️ proposal のパスまたは変更指示をお願いいたします(例: `/miko.quick_impl miko/order_management/proposals/2026-03-01-fix-trial-grace-period.md`)」 +- proposal のパス(例: `/miko.quick-impl miko/order_management/proposals/2026-03-01-fix-trial-grace-period.md`) +- 変更指示の自由記述(例: `/miko.quick-impl OrderService を OrderFacade にリネーム`) +- 空の場合はエラー: 「⛩️ proposal のパスまたは変更指示をお願いいたします(例: `/miko.quick-impl miko/order_management/proposals/2026-03-01-fix-trial-grace-period.md`)」 --- @@ -47,7 +47,7 @@ miko の原則として BR ルール本文の変更には proposal が必要。p > ⛩️ 親プロポーザルは直接実装できません。サブプロポーザルを指定してください。 - 未分割プロポーザルの検出 — 先頭に `` マーカーがある場合、エラーとして中止する: > ⛩️ このプロポーザルは分割が必要です。 - > まず `/miko.split_proposal` でフェーズ分割してから、サブプロポーザルを指定してください。 + > まず `/miko.split-proposal` でフェーズ分割してから、サブプロポーザルを指定してください。 ### 2. 資料読み込み diff --git a/skills/miko.setup/SKILL.md b/skills/miko.setup/SKILL.md index 40267a0..4f16618 100644 --- a/skills/miko.setup/SKILL.md +++ b/skills/miko.setup/SKILL.md @@ -19,7 +19,7 @@ $ARGUMENTS miko を新しいプロジェクトに導入するための初期セットアップ。プロジェクトのコードベースを調査し、`miko/system_high_level_design.md` を生成する。 -このファイルは miko の全スキル(catchup、new_cap、propose 等)がコード探索・精読の際に参照する **コード探索ガイド** を含む。プロジェクト固有のフレームワーク・ディレクトリ構成・命名規約・ビジネスルール抽出パターンを記述することで、スキル側にフレームワーク依存の知識を持たせずに済む。 +このファイルは miko の全スキル(catchup、new-cap、propose 等)がコード探索・精読の際に参照する **コード探索ガイド** を含む。プロジェクト固有のフレームワーク・ディレクトリ構成・命名規約・ビジネスルール抽出パターンを記述することで、スキル側にフレームワーク依存の知識を持たせずに済む。 **出力:** `miko/system_high_level_design.md` @@ -124,7 +124,7 @@ miko を新しいプロジェクトに導入するための初期セットアッ - **システム概要** — プロジェクトの概要。1〜2文 - **テナント構造** — テナントの単位とデータの隔離方式(シングルテナントの場合はその旨) - **API 構造** — エンドポイントのパターンと認証方式 -- **ケイパビリティ一覧** — 既存のケイパビリティ候補(空テーブルでもよい。今後 new_cap で追加される) +- **ケイパビリティ一覧** — 既存のケイパビリティ候補(空テーブルでもよい。今後 new-cap で追加される) - **コード探索ガイド** - フレームワーク・言語 - ディレクトリ構成 @@ -135,7 +135,7 @@ miko を新しいプロジェクトに導入するための初期セットアッ **生成時の注意:** - コード探索ガイドはこのプロジェクトで miko を使う全スキルの基盤。正確さと網羅性を重視する - 着目点の「例」列には、実際のプロジェクトのコードから取ったサンプルを記載する -- ケイパビリティ一覧は暫定。ユーザーが今後 `/miko.new_cap` で正式に定義していく +- ケイパビリティ一覧は暫定。ユーザーが今後 `/miko.new-cap` で正式に定義していく **`miko/glossary.md` の生成:** @@ -149,4 +149,4 @@ miko を新しいプロジェクトに導入するための初期セットアッ ### 7. 完了報告 -生成したファイル、検出したフレームワーク・レイヤー数・着目点数・ケイパビリティ候補数・用語数をサマリーテーブルで提示する。次のアクションとして `/miko.new_cap` をご案内する。 +生成したファイル、検出したフレームワーク・レイヤー数・着目点数・ケイパビリティ候補数・用語数をサマリーテーブルで提示する。次のアクションとして `/miko.new-cap` をご案内する。 diff --git a/skills/miko.speckit.specify/SKILL.md b/skills/miko.speckit.specify/SKILL.md index 346ee3c..ab4922f 100644 --- a/skills/miko.speckit.specify/SKILL.md +++ b/skills/miko.speckit.specify/SKILL.md @@ -60,7 +60,7 @@ Miko プロポーザルの「機能仕様」セクションを speckit の speci **未分割プロポーザルの検出:** - 選択されたプロポーザルの先頭に `` マーカーがある場合、エラーとして中止する: > ⛩️ このプロポーザルは分割が必要です。 - > まず `/miko.split_proposal` でフェーズ分割してから、サブプロポーザルを指定してください。 + > まず `/miko.split-proposal` でフェーズ分割してから、サブプロポーザルを指定してください。 ### 2. プロポーザルと既存資料の読み込み diff --git a/skills/miko.split_proposal/SKILL.md b/skills/miko.split-proposal/SKILL.md similarity index 95% rename from skills/miko.split_proposal/SKILL.md rename to skills/miko.split-proposal/SKILL.md index fd410a0..59c70b5 100644 --- a/skills/miko.split_proposal/SKILL.md +++ b/skills/miko.split-proposal/SKILL.md @@ -10,8 +10,8 @@ $ARGUMENTS 入力の形式: `` -- 例: `/miko.split_proposal miko/order_management/proposals/2026-03-18-cancel-notify.md` -- 空の場合はエラー: 「⛩️ プロポーザルのパスをお願いいたします(例: `/miko.split_proposal miko/order_management/proposals/2026-03-18-cancel-notify.md`)」 +- 例: `/miko.split-proposal miko/order_management/proposals/2026-03-18-cancel-notify.md` +- 空の場合はエラー: 「⛩️ プロポーザルのパスをお願いいたします(例: `/miko.split-proposal miko/order_management/proposals/2026-03-18-cancel-notify.md`)」 --- @@ -26,7 +26,7 @@ $ARGUMENTS ``` /miko.propose → proposal 作成 /miko.harae → proposal 検証(推奨) -/miko.split_proposal → 親 + サブに分割 +/miko.split-proposal → 親 + サブに分割 → 各サブに対して /miko.speckit.specify → 実装フロー ``` @@ -50,8 +50,8 @@ $ARGUMENTS **読み込むファイル:** - `.miko/guides/tone_guide.md` — 対話スタイル。**このファイルの口調・絵文字・出力言語ルールに従うこと** -- `.claude/skills/miko.split_proposal/examples/umbrella_proposal.md` — 親プロポーザルのサンプル -- `.claude/skills/miko.split_proposal/examples/cross_capability_sub_proposal.md` — 横断サブプロポーザルのサンプル(横断分割の場合) +- `.claude/skills/miko.split-proposal/examples/umbrella_proposal.md` — 親プロポーザルのサンプル +- `.claude/skills/miko.split-proposal/examples/cross_capability_sub_proposal.md` — 横断サブプロポーザルのサンプル(横断分割の場合) - 指定されたプロポーザルファイル - `miko/system_high_level_design.md` — ケイパビリティ一覧の確認(cross-cap 分割時に使用) - 横断分割の場合: 影響先ケイパビリティの `business_rules.md` と `high_level_design.md` も読み込む @@ -128,14 +128,14 @@ $ARGUMENTS - 内容は「他ケイパビリティへの影響」セクションの該当部分から抽出する - **背景**(親プロポーザルへの `miko/` からの相対パスリンク)と**ビジネスルールの変更**(新設/改訂/廃止)のみ。機能仕様・影響範囲は不要 - 祓え検証(元のプロポーザルに影響先ケイパビリティごとの祓え検証サブセクションがあれば、該当ケイパビリティ・該当フェーズ分を振り分け) -- **サンプル:** `.claude/skills/miko.split_proposal/examples/cross_capability_sub_proposal.md` を参照 +- **サンプル:** `.claude/skills/miko.split-proposal/examples/cross_capability_sub_proposal.md` を参照 **ファイル命名:** - 親: `YYYY-MM-DD--umbrella.md`(メインケイパビリティの proposals/ ディレクトリ) - メインサブ: `YYYY-MM-DD--phase.md`(親と同ディレクトリ) - 影響先サブ: `YYYY-MM-DD--phase.md`(影響先ケイパビリティの proposals/ ディレクトリ。メインサブと同じフェーズ番号) -**サンプル:** `.claude/skills/miko.split_proposal/examples/umbrella_proposal.md` を参照。 +**サンプル:** `.claude/skills/miko.split-proposal/examples/umbrella_proposal.md` を参照。 ### 5. 元プロポーザルの削除提案 @@ -152,4 +152,4 @@ $ARGUMENTS - 親プロポーザルのパス - サブプロポーザル一覧(フェーズ番号、ケイパビリティ、概要、パス、BR 変更件数) - **クロスケイパビリティの場合:** 各フェーズの `/miko.speckit.specify` に渡すサブプロポーザルのパスをまとめて表示する(例: `/miko.speckit.specify path/to/cap_A/phase1.md path/to/cap_B/phase1.md`) -- 次のアクションとして、各サブプロポーザルに対する `/miko.harae`(必要に応じて)と実装フロー(`/miko.speckit.specify` or `/miko.quick_impl`)をご案内する +- 次のアクションとして、各サブプロポーザルに対する `/miko.harae`(必要に応じて)と実装フロー(`/miko.speckit.specify` or `/miko.quick-impl`)をご案内する diff --git a/skills/miko.split_proposal/examples/cross_capability_sub_proposal.md b/skills/miko.split-proposal/examples/cross_capability_sub_proposal.md similarity index 100% rename from skills/miko.split_proposal/examples/cross_capability_sub_proposal.md rename to skills/miko.split-proposal/examples/cross_capability_sub_proposal.md diff --git a/skills/miko.split_proposal/examples/umbrella_proposal.md b/skills/miko.split-proposal/examples/umbrella_proposal.md similarity index 100% rename from skills/miko.split_proposal/examples/umbrella_proposal.md rename to skills/miko.split-proposal/examples/umbrella_proposal.md From 1f675184bf3bd31f0314908ae578e6c6dabdd7a8 Mon Sep 17 00:00:00 2001 From: ysak-y Date: Fri, 17 Jul 2026 16:13:15 +0900 Subject: [PATCH 4/9] =?UTF-8?q?install:=20=E5=8C=BA=E5=88=87=E3=82=8A?= =?UTF-8?q?=E6=96=87=E5=AD=97=E3=81=AE=E9=81=B8=E6=8A=9E=E3=82=92=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=82=B9=E3=83=88=E3=83=BC=E3=83=AB=E6=99=82=E3=83=97?= =?UTF-8?q?=E3=83=AD=E3=83=B3=E3=83=97=E3=83=88=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2 --- CHANGELOG.md | 6 +++++- README.en.md | 10 +++------- README.md | 10 +++------- install.sh | 31 +++++++++++++++++++++---------- ofuda/VERSION | 2 +- ofuda/guides/tone_guide.en.md | 11 +++++++++++ ofuda/guides/tone_guide.md | 11 +++++++++++ ofuda/switch_separator.sh | 4 ---- skills/miko.setup/SKILL.md | 30 ++++++------------------------ upgrade.sh | 6 +----- 10 files changed, 62 insertions(+), 59 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b96b5b..d21934f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,11 @@ ### New -- **スキル名の区切り文字(ハイフン / ドット)を選択可能に** — 一部の LLM プラットフォームは Agent Skills 準拠のハイフン区切りのスキル名しか使えないため、新規インストールはどこでも動作するハイフン区切り(`/miko-setup`)で配置するようにした。初回の setup スキル実行時にドット区切り(`/miko.setup`、従来形式)への変更が確認される。`bash .miko/switch_separator.sh <.|->` でいつでも切り替え可能。`MIKO_SEPARATOR` 環境変数で明示した場合は初回確認をスキップ。設定は `.miko/config` の `separator=` に保存され、スキルディレクトリ名とファイル内のスキル名参照(handoffs 含む)がインストール・アップグレード・切り替え時に自動変換される。既存インストールはドット区切りのまま維持される +- **スキル名の区切り文字(ハイフン / ドット)を選択可能に** — 一部の LLM プラットフォームは Agent Skills 準拠のハイフン区切りのスキル名しか使えないため、インストール時にどこでも動作するハイフン区切り(`/miko-setup`、デフォルト)とドット区切り(`/miko.setup`)を選択できるようにした。設定は `.miko/config` の `separator=` に保存され、スキルディレクトリ名とファイル内のスキル名参照(handoffs 含む)がインストール・アップグレード時に自動変換される。`bash .miko/switch_separator.sh <.|->` でいつでも切り替え可能。tone_guide に「出力でスキル名に言及するときは config の separator に従う」を明記 + +### Changed + +- **スキル名のアンダースコアをハイフンに統一** — `miko.new_cap` → `miko.new-cap` のように、スキル名内の `_` を `-` に変更(対象: new-cap / new-harae / quick-catchup / quick-impl / split-proposal / catchup-system-hld)。ハイフン区切り選択時に `miko-new_harae` のような混在表記になるのを避けるため。既存インストールはアップグレード時に旧名スキルが削除され新名で再配置される ### Fixed diff --git a/README.en.md b/README.en.md index 6fa9969..00d4200 100644 --- a/README.en.md +++ b/README.en.md @@ -70,19 +70,15 @@ The installer asks you to choose an output language (日本語 / English). Your MIKO_LANG=en bash <(curl -fsSL https://raw.githubusercontent.com/studyplus/miko/main/install.sh) ``` -Because some LLM platforms only accept [Agent Skills](https://agentskills.io/)-compliant hyphenated names, the skills are installed with hyphen-separated names (`/miko-setup`), which work everywhere. On platforms that also support dots, such as Claude Code, the first run of the setup skill asks which separator you prefer and can switch to dots (`/miko.setup`). You can switch at any time with: +The installer then asks you to choose a skill name separator. Because some LLM platforms only accept [Agent Skills](https://agentskills.io/)-compliant hyphenated names, hyphen-separated names (`/miko-setup`), which work everywhere, are the default. On platforms that support dots in skill names you can choose dots (`/miko.setup`) instead. + +You can switch the separator at any time with: ```bash bash .miko/switch_separator.sh . # switch to dots (/miko.setup) bash .miko/switch_separator.sh - # switch to hyphens (/miko-setup) ``` -If you set the separator explicitly via an environment variable, the first-run confirmation is skipped: - -```bash -MIKO_SEPARATOR=. bash <(curl -fsSL https://raw.githubusercontent.com/studyplus/miko/main/install.sh) -``` - Skill names in this README are written with dots. If you use hyphens, read them as `/miko-setup` and so on. After installation, set up your project: diff --git a/README.md b/README.md index 7e04d00..0025566 100644 --- a/README.md +++ b/README.md @@ -70,19 +70,15 @@ bash <(curl -fsSL https://raw.githubusercontent.com/studyplus/miko/main/install. MIKO_LANG=en bash <(curl -fsSL https://raw.githubusercontent.com/studyplus/miko/main/install.sh) ``` -スキル名は、一部の LLM プラットフォームが [Agent Skills](https://agentskills.io/) 準拠のハイフン区切りの名前しか使えないため、どこでも動作するハイフン区切り(`/miko-setup`)で配置されます。Claude Code などドット区切り(`/miko.setup`)が使えるプラットフォームでは、初回の setup スキル実行時にどちらを使うか確認され、ドット区切りへ変更できます。以下のスクリプトでいつでも切り替えられます。 +続けてスキル名の区切り文字の選択を求められます。一部の LLM プラットフォームは [Agent Skills](https://agentskills.io/) 準拠のハイフン区切りの名前しか使えないため、どこでも動作するハイフン区切り(`/miko-setup`)がデフォルトです。ドット区切りに対応したプラットフォームではドット区切り(`/miko.setup`)も選べます。 + +区切り文字は以下のスクリプトでいつでも切り替えられます。 ```bash bash .miko/switch_separator.sh . # ドット区切り (/miko.setup) へ bash .miko/switch_separator.sh - # ハイフン区切り (/miko-setup) へ ``` -環境変数で区切り文字を明示した場合、初回の確認はスキップされます。 - -```bash -MIKO_SEPARATOR=. bash <(curl -fsSL https://raw.githubusercontent.com/studyplus/miko/main/install.sh) -``` - 本 README のスキル名はドット区切りで表記しています。ハイフン区切りをお使いの場合は `/miko-setup` のように読み替えくださいませ。 インストール後、プロジェクトのセットアップを行います。 diff --git a/install.sh b/install.sh index 867e457..dfaa59e 100755 --- a/install.sh +++ b/install.sh @@ -28,15 +28,27 @@ case "$LANG_CHOICE" in *) LANG_CHOICE="ja" ;; esac -# スキル名の区切り文字: 一部の LLM プラットフォームは Agent Skills 準拠の -# ハイフン区切りの名前しか使えないため、どこでも動くハイフン区切り (miko-setup) で配置する。 -# ドット区切り (miko.setup) への変更は初回の setup スキル実行時に確認される。 -# MIKO_SEPARATOR 環境変数 (./-) で明示した場合は確認済みとして扱い、確認をスキップする。 -case "${MIKO_SEPARATOR:-}" in - .) SEP="." ; SEP_CONFIRMED=1 ;; - -) SEP="-" ; SEP_CONFIRMED=1 ;; - *) SEP="-" ; SEP_CONFIRMED=0 ;; -esac +# スキル名の区切り文字選択: 対話プロンプト > デフォルト - +# 一部の LLM プラットフォームは Agent Skills 準拠のハイフン区切りの名前しか使えないため、 +# どこでも動くハイフン区切り (miko-setup) をデフォルトとし、ドット区切り (miko.setup) も選択できる。 +# インストール後の変更は .miko/switch_separator.sh で行える +SEP="-" +if [ -t 0 ]; then + if [ "$LANG_CHOICE" = "en" ]; then + echo "⛩️ Please select the skill name separator:" + echo " 1) hyphen (/miko-setup) — works on every platform" + echo " 2) dot (/miko.setup) — for platforms that support dots in skill names" + else + echo "⛩️ スキル名の区切り文字を選択ください:" + echo " 1) ハイフン (/miko-setup) — どのプラットフォームでも動作" + echo " 2) ドット (/miko.setup) — ドット区切りに対応したプラットフォーム向け" + fi + read -r -p " [1/2] (default: 1): " ans + case "$ans" in + 2|.|dot) SEP="." ;; + *) SEP="-" ;; + esac +fi # to_local — 正規スキル名(. 区切り)を選択された区切り文字の名前に変換する to_local() { echo "${1//./$SEP}"; } @@ -100,7 +112,6 @@ printf '%s\n' "${canonical_skills[@]}" > .miko/skills_manifest { echo "language=$LANG_CHOICE" echo "separator=$SEP" - echo "separator_confirmed=$SEP_CONFIRMED" } > .miko/config if [ "$LANG_CHOICE" = "en" ]; then cp .miko/guides/tone_guide.en.md .miko/guides/tone_guide.md diff --git a/ofuda/VERSION b/ofuda/VERSION index f38325e..c366698 100644 --- a/ofuda/VERSION +++ b/ofuda/VERSION @@ -1,2 +1,2 @@ 1.4.0 -202607170633 +202607170712 diff --git a/ofuda/guides/tone_guide.en.md b/ofuda/guides/tone_guide.en.md index e79a44b..f44b442 100644 --- a/ofuda/guides/tone_guide.en.md +++ b/ofuda/guides/tone_guide.en.md @@ -28,6 +28,17 @@ Keep the following as-is, regardless of language: --- +## Skill Name Notation + +The separator in miko skill names is decided at install time: dot (`/miko.xxx`) or hyphen (`/miko-xxx`). Whenever you mention a skill name in your output, follow the `separator` value in `.miko/config`: + +- `separator=.` → write skill names with dots +- `separator=-` → write skill names with hyphens + +If the config cannot be read, match the separator used in the name of the skill you are currently running. + +--- + ## Emoji Use in section headings and status displays. Never inside body text. diff --git a/ofuda/guides/tone_guide.md b/ofuda/guides/tone_guide.md index 7ca0801..ebe3d9a 100644 --- a/ofuda/guides/tone_guide.md +++ b/ofuda/guides/tone_guide.md @@ -23,6 +23,17 @@ miko のすべての出力は **日本語** で行う。対話テキストだけ --- +## スキル名の表記 + +miko のスキル名の区切り文字は、インストール時の選択によりドット(`/miko.xxx`)またはハイフン(`/miko-xxx`)になる。出力でスキル名に言及するときは、`.miko/config` の `separator` の値に従うこと: + +- `separator=.` → ドット区切りで表記する +- `separator=-` → ハイフン区切りで表記する + +config が読めない場合は、実行中のスキル自身の名前に使われている区切り文字に合わせる。 + +--- + ## 絵文字 セクション見出しと状態表示に使う。本文中には使わない。 diff --git a/ofuda/switch_separator.sh b/ofuda/switch_separator.sh index 7eeb9cf..ca735cd 100755 --- a/ofuda/switch_separator.sh +++ b/ofuda/switch_separator.sh @@ -8,8 +8,6 @@ set -euo pipefail # # 対象は .miko/skills_manifest に列挙された miko 管理スキルのみ。 # ユーザー作成のカスタムスキルには触れない。 -# 実行後は確認済みフラグ (separator_confirmed=1) を立て、 -# setup スキルの初回確認が再度走らないようにする。 SKILLS_DIR=".claude/skills" CONFIG=".miko/config" @@ -53,7 +51,6 @@ set_config() { } if [ "$TARGET" = "$CURRENT" ]; then - set_config separator_confirmed 1 say "✨ 既に区切り文字は「${TARGET}」です。変更はございません。" \ "✨ The separator is already \"$TARGET\". Nothing to change." exit 0 @@ -99,7 +96,6 @@ find "${rewrite_targets[@]}" -type f -name '*.md' | while IFS= read -r f; do done set_config separator "$TARGET" -set_config separator_confirmed 1 say "✨ スキル名の区切り文字を「${TARGET}」に変更いたしました(${renamed} スキル)。" \ "✨ The skill name separator has been changed to \"$TARGET\" ($renamed skills)." diff --git a/skills/miko.setup/SKILL.md b/skills/miko.setup/SKILL.md index 4f16618..073115d 100644 --- a/skills/miko.setup/SKILL.md +++ b/skills/miko.setup/SKILL.md @@ -27,32 +27,14 @@ miko を新しいプロジェクトに導入するための初期セットアッ ## 手順 -### 1. スキル名の区切り文字の確認(初回のみ) - -`.miko/config` を読み込む。**`separator=-` かつ `separator_confirmed=0` の場合のみ** 以下を行う。それ以外(`separator_confirmed=1`、またはキーがない場合)はこのステップをスキップして次に進む。 - -1. `language` の設定言語で、ユーザーに区切り文字を確認する。特定のプラットフォーム名を決め打ちで出さないこと。実行中のプラットフォームがドット区切りのスキル名に対応していると判断できる場合に限り、その旨を補足してよい: - > ⛩️ miko のスキル名は現在ハイフン区切り(`/miko-xxx` 形式)でございます。どのプラットフォームでも動作いたします。 - > お使いのプラットフォームがドット区切り(`/miko.xxx` 形式)のスキル名に対応している場合は、ドット区切りへの変更もできます。どちらになさいますか? - > - > 1. ハイフン区切りのまま(どこでも動作) - > 2. ドット区切りへ変更 -2. 選択に応じて実行する(どちらも確認済みフラグが立ち、次回以降は確認されない): - - ハイフンのまま: `bash .miko/switch_separator.sh -` - - ドットへ変更: `bash .miko/switch_separator.sh .` -3. ドットへ変更した場合は以下を案内する: - - 変更後のスキル名が認識されるのは新しいセッションからとなる場合がある - - 以後のスキル呼び出しはドット区切り(`/miko.xxx`)になる - - このセッションのセットアップはこのまま続行してよい - -### 2. 既存ファイル確認 +### 1. 既存ファイル確認 - `miko/system_high_level_design.md` が既に存在するか確認する - **存在する場合はエラーとして中止する:** > ⛩️ `miko/system_high_level_design.md` が既に存在しております。 > 内容の更新は直接編集するか、削除してから再実行をお願いいたします。 -### 3. ガイドと参考資料の読み込み +### 2. ガイドと参考資料の読み込み 以下のファイルを読み込む。 @@ -62,7 +44,7 @@ miko を新しいプロジェクトに導入するための初期セットアッ **実例(品質の基準):** - `.miko/examples/system_high_level_design.md` — システム HLD のサンプル。**このファイルと同等の構造・詳細度を目指す** -### 4. プロジェクト調査(サブエージェント並列) +### 3. プロジェクト調査(サブエージェント並列) プロジェクトのコードベースを自動的に調査する。**ユーザーに質問する前に** 可能な限り情報を集める。 @@ -110,11 +92,11 @@ miko を新しいプロジェクトに導入するための初期セットアッ **全サブエージェントの完了後、** 結果を統合して次のステップに進む。 -### 5. 【確認①】調査結果の確認 +### 4. 【確認①】調査結果の確認 調査結果を「フレームワーク・言語」「ディレクトリ構成」「レイヤー構成」「API構造」「テナント構造」「ビジネスルール抽出の着目点」「ケイパビリティ候補」にまとめてユーザーに提示する。特にテナント構造、レイヤー構成の抜け、着目点のコード例の代表性を確認する。フィードバックを反映して再提示、承認されたら次に進む。 -### 6. ファイル生成 +### 5. ファイル生成 確認①のフィードバックを反映し、`miko/system_high_level_design.md` を生成する。 @@ -147,6 +129,6 @@ miko を新しいプロジェクトに導入するための初期セットアッ - 同じ用語がケイパビリティごとに異なる意味を持つ場合は、それぞれのケイパビリティセクションに定義を書く - 該当する用語が見つからなければ空の用語集(見出しのみ)で生成する -### 7. 完了報告 +### 6. 完了報告 生成したファイル、検出したフレームワーク・レイヤー数・着目点数・ケイパビリティ候補数・用語数をサマリーテーブルで提示する。次のアクションとして `/miko.new-cap` をご案内する。 diff --git a/upgrade.sh b/upgrade.sh index 5bf508c..6decf7a 100755 --- a/upgrade.sh +++ b/upgrade.sh @@ -254,14 +254,10 @@ printf '%s\n' "${latest_skills[@]}" > .miko/skills_manifest if [ ! -f ".miko/config" ]; then echo "language=$LANG_CHOICE" > .miko/config fi -# v1.4.0 より前のインストールには separator 設定がないため補完する。 -# 既存インストールは現状の区切り文字のまま確認済みとして扱う(setup スキルの確認は走らせない) +# v1.4.0 より前のインストールには separator 設定がないため補完する(既存はドット区切り) if ! grep -qE '^separator=' .miko/config; then echo "separator=$SEP" >> .miko/config fi -if ! grep -qE '^separator_confirmed=' .miko/config; then - echo "separator_confirmed=1" >> .miko/config -fi if [ "$LANG_CHOICE" = "en" ] && [ -f ".miko/guides/tone_guide.en.md" ]; then cp .miko/guides/tone_guide.en.md .miko/guides/tone_guide.md fi From dbdb68ffce8dd5985199961b0a2c7bd1c654c50a Mon Sep 17 00:00:00 2001 From: ysak-y Date: Fri, 17 Jul 2026 16:33:30 +0900 Subject: [PATCH 5/9] =?UTF-8?q?install:=20switch=5Fseparator.sh=20?= =?UTF-8?q?=E3=81=A8=20skills=5Fmanifest=20=E3=82=92=E5=BB=83=E6=AD=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 区切り文字の変更は頻繁な操作ではないため、専用の切り替えスクリプトを 持たず「miko を削除して再インストール」に一本化する。 skills_manifest は switch_separator.sh 専用だったため合わせて廃止。 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2 --- CHANGELOG.md | 2 +- README.en.md | 7 +-- README.md | 7 +-- install.sh | 5 +- ofuda/VERSION | 2 +- ofuda/switch_separator.sh | 103 -------------------------------------- upgrade.sh | 3 -- 7 files changed, 7 insertions(+), 122 deletions(-) delete mode 100755 ofuda/switch_separator.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index d21934f..c04eadf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ ### New -- **スキル名の区切り文字(ハイフン / ドット)を選択可能に** — 一部の LLM プラットフォームは Agent Skills 準拠のハイフン区切りのスキル名しか使えないため、インストール時にどこでも動作するハイフン区切り(`/miko-setup`、デフォルト)とドット区切り(`/miko.setup`)を選択できるようにした。設定は `.miko/config` の `separator=` に保存され、スキルディレクトリ名とファイル内のスキル名参照(handoffs 含む)がインストール・アップグレード時に自動変換される。`bash .miko/switch_separator.sh <.|->` でいつでも切り替え可能。tone_guide に「出力でスキル名に言及するときは config の separator に従う」を明記 +- **スキル名の区切り文字(ハイフン / ドット)を選択可能に** — 一部の LLM プラットフォームは Agent Skills 準拠のハイフン区切りのスキル名しか使えないため、インストール時にどこでも動作するハイフン区切り(`/miko-setup`、デフォルト)とドット区切り(`/miko.setup`)を選択できるようにした。設定は `.miko/config` の `separator=` に保存され、スキルディレクトリ名とファイル内のスキル名参照(handoffs 含む)がインストール・アップグレード時に自動変換される。後から変更する場合は miko を削除して再インストールする。tone_guide に「出力でスキル名に言及するときは config の separator に従う」を明記 ### Changed diff --git a/README.en.md b/README.en.md index 00d4200..ca1a23c 100644 --- a/README.en.md +++ b/README.en.md @@ -70,13 +70,10 @@ The installer asks you to choose an output language (日本語 / English). Your MIKO_LANG=en bash <(curl -fsSL https://raw.githubusercontent.com/studyplus/miko/main/install.sh) ``` -The installer then asks you to choose a skill name separator. Because some LLM platforms only accept [Agent Skills](https://agentskills.io/)-compliant hyphenated names, hyphen-separated names (`/miko-setup`), which work everywhere, are the default. On platforms that support dots in skill names you can choose dots (`/miko.setup`) instead. - -You can switch the separator at any time with: +The installer then asks you to choose a skill name separator. Because some LLM platforms only accept [Agent Skills](https://agentskills.io/)-compliant hyphenated names, hyphen-separated names (`/miko-setup`), which work everywhere, are the default. On platforms that support dots in skill names you can choose dots (`/miko.setup`) instead. To change the separator later, remove miko and reinstall: ```bash -bash .miko/switch_separator.sh . # switch to dots (/miko.setup) -bash .miko/switch_separator.sh - # switch to hyphens (/miko-setup) +rm -rf .claude/skills/miko.* .claude/skills/miko-* .miko # remove, then reinstall ``` Skill names in this README are written with dots. If you use hyphens, read them as `/miko-setup` and so on. diff --git a/README.md b/README.md index 0025566..3fcf496 100644 --- a/README.md +++ b/README.md @@ -70,13 +70,10 @@ bash <(curl -fsSL https://raw.githubusercontent.com/studyplus/miko/main/install. MIKO_LANG=en bash <(curl -fsSL https://raw.githubusercontent.com/studyplus/miko/main/install.sh) ``` -続けてスキル名の区切り文字の選択を求められます。一部の LLM プラットフォームは [Agent Skills](https://agentskills.io/) 準拠のハイフン区切りの名前しか使えないため、どこでも動作するハイフン区切り(`/miko-setup`)がデフォルトです。ドット区切りに対応したプラットフォームではドット区切り(`/miko.setup`)も選べます。 - -区切り文字は以下のスクリプトでいつでも切り替えられます。 +続けてスキル名の区切り文字の選択を求められます。一部の LLM プラットフォームは [Agent Skills](https://agentskills.io/) 準拠のハイフン区切りの名前しか使えないため、どこでも動作するハイフン区切り(`/miko-setup`)がデフォルトです。ドット区切りに対応したプラットフォームではドット区切り(`/miko.setup`)も選べます。後から変更する場合は、miko を削除して再インストールくださいませ。 ```bash -bash .miko/switch_separator.sh . # ドット区切り (/miko.setup) へ -bash .miko/switch_separator.sh - # ハイフン区切り (/miko-setup) へ +rm -rf .claude/skills/miko.* .claude/skills/miko-* .miko # 削除して再インストール ``` 本 README のスキル名はドット区切りで表記しています。ハイフン区切りをお使いの場合は `/miko-setup` のように読み替えくださいませ。 diff --git a/install.sh b/install.sh index dfaa59e..b506ca0 100755 --- a/install.sh +++ b/install.sh @@ -31,7 +31,7 @@ esac # スキル名の区切り文字選択: 対話プロンプト > デフォルト - # 一部の LLM プラットフォームは Agent Skills 準拠のハイフン区切りの名前しか使えないため、 # どこでも動くハイフン区切り (miko-setup) をデフォルトとし、ドット区切り (miko.setup) も選択できる。 -# インストール後の変更は .miko/switch_separator.sh で行える +# インストール後に変更する場合は、miko を削除して再インストールする SEP="-" if [ -t 0 ]; then if [ "$LANG_CHOICE" = "en" ]; then @@ -103,9 +103,6 @@ for s in "${canonical_skills[@]}"; do done cp -r "$tmpdir"/miko/ofuda .miko -# miko 管理スキルの正規名一覧を保存する(switch_separator.sh が参照する) -printf '%s\n' "${canonical_skills[@]}" > .miko/skills_manifest - # 言語・区切り文字設定の保存と tone_guide の解決 # リポジトリには tone_guide.md (ja) と tone_guide.en.md があり、 # 選択された言語のものを .miko/guides/tone_guide.md として配置する diff --git a/ofuda/VERSION b/ofuda/VERSION index c366698..3c7c92e 100644 --- a/ofuda/VERSION +++ b/ofuda/VERSION @@ -1,2 +1,2 @@ 1.4.0 -202607170712 +202607170733 diff --git a/ofuda/switch_separator.sh b/ofuda/switch_separator.sh deleted file mode 100755 index ca735cd..0000000 --- a/ofuda/switch_separator.sh +++ /dev/null @@ -1,103 +0,0 @@ -#!/bin/bash -set -euo pipefail - -# miko スキル名の区切り文字(. / -)を切り替えるスクリプト。 -# プロジェクトのルートで実行する: -# bash .miko/switch_separator.sh . # ドット区切り (/miko.setup) にする -# bash .miko/switch_separator.sh - # ハイフン区切り (/miko-setup) にする -# -# 対象は .miko/skills_manifest に列挙された miko 管理スキルのみ。 -# ユーザー作成のカスタムスキルには触れない。 - -SKILLS_DIR=".claude/skills" -CONFIG=".miko/config" -MANIFEST=".miko/skills_manifest" - -usage() { - echo "usage: bash .miko/switch_separator.sh <.|->" - exit 1 -} - -[ $# -eq 1 ] || usage -case "$1" in - .|-) TARGET="$1" ;; - *) usage ;; -esac - -if [ ! -f "$CONFIG" ] || [ ! -f "$MANIFEST" ]; then - echo "⛩️ $CONFIG または $MANIFEST が見つかりません。プロジェクトのルートで実行くださいませ。" - echo " ($CONFIG or $MANIFEST not found. Please run this from your project root.)" - exit 1 -fi - -LANG_CHOICE=$(grep -E '^language=' "$CONFIG" | head -n 1 | cut -d= -f2 | tr -d '[:space:]' || true) - -# say — 言語設定に応じたメッセージを出力する -say() { - if [ "$LANG_CHOICE" = "en" ]; then echo "$2"; else echo "$1"; fi -} - -CURRENT=$(grep -E '^separator=' "$CONFIG" | head -n 1 | cut -d= -f2 | tr -d '[:space:]' || true) -[ "$CURRENT" = "-" ] || CURRENT="." - -# set_config — config のキーを更新する(なければ追記) -set_config() { - local key="$1" value="$2" - if grep -qE "^${key}=" "$CONFIG"; then - sed -i.mikobak "s/^${key}=.*/${key}=${value}/" "$CONFIG" && rm -f "$CONFIG.mikobak" - else - echo "${key}=${value}" >> "$CONFIG" - fi -} - -if [ "$TARGET" = "$CURRENT" ]; then - say "✨ 既に区切り文字は「${TARGET}」です。変更はございません。" \ - "✨ The separator is already \"$TARGET\". Nothing to change." - exit 0 -fi - -# マニフェストから正規スキル名(. 区切り)を読み込む -canonical=() -while IFS= read -r line; do - [ -z "$line" ] && continue - canonical+=("$line") -done < "$MANIFEST" - -if [ ${#canonical[@]} -eq 0 ]; then - say "⛩️ $MANIFEST が空です。upgrade.sh の再実行をお願いいたします。" \ - "⛩️ $MANIFEST is empty. Please re-run upgrade.sh." - exit 1 -fi - -# スキルディレクトリのリネームと、参照書き換え用の sed スクリプトの構築 -sed_script="" -renamed=0 -for name in "${canonical[@]}"; do - cur="${name//./$CURRENT}" - tgt="${name//./$TARGET}" - if [ -d "$SKILLS_DIR/$cur" ]; then - mv "$SKILLS_DIR/$cur" "$SKILLS_DIR/$tgt" - renamed=$((renamed + 1)) - fi - esc="${cur//./\\.}" - sed_script="${sed_script}s/${esc}/${tgt}/g;" -done - -# ファイル中のスキル名参照を書き換える(miko 管理スキルと .miko 配下のみ) -rewrite_targets=(".miko") -for name in "${canonical[@]}"; do - tgt="${name//./$TARGET}" - if [ -d "$SKILLS_DIR/$tgt" ]; then - rewrite_targets+=("$SKILLS_DIR/$tgt") - fi -done -find "${rewrite_targets[@]}" -type f -name '*.md' | while IFS= read -r f; do - sed -i.mikobak "$sed_script" "$f" && rm -f "$f.mikobak" -done - -set_config separator "$TARGET" - -say "✨ スキル名の区切り文字を「${TARGET}」に変更いたしました(${renamed} スキル)。" \ - "✨ The skill name separator has been changed to \"$TARGET\" ($renamed skills)." -say "⛩️ 新しいスキル名が認識されるのは、新しいセッションからとなる場合がございます。" \ - "⛩️ The renamed skills may only be recognized from a new session." diff --git a/upgrade.sh b/upgrade.sh index 6decf7a..bb7c5e8 100755 --- a/upgrade.sh +++ b/upgrade.sh @@ -247,9 +247,6 @@ done # rm -rf は使わず、ofuda の中身を .miko/ にマージコピーする cp -r "$tmpdir/miko/ofuda/." .miko/ -# miko 管理スキルの正規名一覧を保存する(switch_separator.sh が参照する) -printf '%s\n' "${latest_skills[@]}" > .miko/skills_manifest - # 言語設定に応じて tone_guide を解決する(config がない既存インストールは ja として config を作成) if [ ! -f ".miko/config" ]; then echo "language=$LANG_CHOICE" > .miko/config From 9b0d4621232fce23418feaba39dd57a023b9ffe5 Mon Sep 17 00:00:00 2001 From: ysak-y Date: Fri, 17 Jul 2026 16:39:53 +0900 Subject: [PATCH 6/9] =?UTF-8?q?config:=20separator=20=E3=81=AE=E5=80=A4?= =?UTF-8?q?=E3=82=92=20dot=20/=20hyphen=20=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 記号 (./-) より意図が読み取りやすいため、レビュー指摘に従い 語 (dot/hyphen) で保存する。 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2 --- install.sh | 6 +++++- ofuda/guides/tone_guide.en.md | 4 ++-- ofuda/guides/tone_guide.md | 4 ++-- upgrade.sh | 10 +++++++--- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/install.sh b/install.sh index b506ca0..9e0a27a 100755 --- a/install.sh +++ b/install.sh @@ -108,7 +108,11 @@ cp -r "$tmpdir"/miko/ofuda .miko # 選択された言語のものを .miko/guides/tone_guide.md として配置する { echo "language=$LANG_CHOICE" - echo "separator=$SEP" + if [ "$SEP" = "." ]; then + echo "separator=dot" + else + echo "separator=hyphen" + fi } > .miko/config if [ "$LANG_CHOICE" = "en" ]; then cp .miko/guides/tone_guide.en.md .miko/guides/tone_guide.md diff --git a/ofuda/guides/tone_guide.en.md b/ofuda/guides/tone_guide.en.md index f44b442..5167118 100644 --- a/ofuda/guides/tone_guide.en.md +++ b/ofuda/guides/tone_guide.en.md @@ -32,8 +32,8 @@ Keep the following as-is, regardless of language: The separator in miko skill names is decided at install time: dot (`/miko.xxx`) or hyphen (`/miko-xxx`). Whenever you mention a skill name in your output, follow the `separator` value in `.miko/config`: -- `separator=.` → write skill names with dots -- `separator=-` → write skill names with hyphens +- `separator=dot` → write skill names with dots +- `separator=hyphen` → write skill names with hyphens If the config cannot be read, match the separator used in the name of the skill you are currently running. diff --git a/ofuda/guides/tone_guide.md b/ofuda/guides/tone_guide.md index ebe3d9a..a267574 100644 --- a/ofuda/guides/tone_guide.md +++ b/ofuda/guides/tone_guide.md @@ -27,8 +27,8 @@ miko のすべての出力は **日本語** で行う。対話テキストだけ miko のスキル名の区切り文字は、インストール時の選択によりドット(`/miko.xxx`)またはハイフン(`/miko-xxx`)になる。出力でスキル名に言及するときは、`.miko/config` の `separator` の値に従うこと: -- `separator=.` → ドット区切りで表記する -- `separator=-` → ハイフン区切りで表記する +- `separator=dot` → ドット区切りで表記する +- `separator=hyphen` → ハイフン区切りで表記する config が読めない場合は、実行中のスキル自身の名前に使われている区切り文字に合わせる。 diff --git a/upgrade.sh b/upgrade.sh index bb7c5e8..9dafefc 100755 --- a/upgrade.sh +++ b/upgrade.sh @@ -14,11 +14,11 @@ if [ -f ".miko/config" ]; then [ "$LANG_CHOICE" = "en" ] || LANG_CHOICE="ja" fi -# スキル名の区切り文字設定: .miko/config の separator (./-) を読む。なければ . +# スキル名の区切り文字設定: .miko/config の separator (dot/hyphen) を読む。なければ dot SEP="." if [ -f ".miko/config" ]; then sep_val=$(grep -E '^separator=' .miko/config | head -n 1 | cut -d= -f2 | tr -d '[:space:]' || true) - [ "$sep_val" = "-" ] && SEP="-" + [ "$sep_val" = "hyphen" ] && SEP="-" fi # to_local — 正規スキル名(. 区切り)を設定された区切り文字の名前に変換する @@ -253,7 +253,11 @@ if [ ! -f ".miko/config" ]; then fi # v1.4.0 より前のインストールには separator 設定がないため補完する(既存はドット区切り) if ! grep -qE '^separator=' .miko/config; then - echo "separator=$SEP" >> .miko/config + if [ "$SEP" = "." ]; then + echo "separator=dot" >> .miko/config + else + echo "separator=hyphen" >> .miko/config + fi fi if [ "$LANG_CHOICE" = "en" ] && [ -f ".miko/guides/tone_guide.en.md" ]; then cp .miko/guides/tone_guide.en.md .miko/guides/tone_guide.md From e5140ebc98ffa8f9deb76445421153c6d8e0ae16 Mon Sep 17 00:00:00 2001 From: ysak-y Date: Fri, 17 Jul 2026 16:40:14 +0900 Subject: [PATCH 7/9] =?UTF-8?q?tone=5Fguide:=20=E3=82=B9=E3=82=AD=E3=83=AB?= =?UTF-8?q?=E3=83=BB=E3=82=AC=E3=82=A4=E3=83=89=E3=81=AE=E5=8E=9F=E6=96=87?= =?UTF-8?q?=E3=81=AF=E3=83=89=E3=83=83=E3=83=88=E5=8C=BA=E5=88=87=E3=82=8A?= =?UTF-8?q?=E3=81=A7=E3=81=82=E3=82=8B=E6=97=A8=E3=82=92=E6=98=8E=E8=A8=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 出力時は原文の表記ではなく .miko/config の separator に従うことを はっきりさせる(レビュー指摘)。 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2 --- ofuda/guides/tone_guide.en.md | 2 +- ofuda/guides/tone_guide.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ofuda/guides/tone_guide.en.md b/ofuda/guides/tone_guide.en.md index 5167118..3ba1982 100644 --- a/ofuda/guides/tone_guide.en.md +++ b/ofuda/guides/tone_guide.en.md @@ -30,7 +30,7 @@ Keep the following as-is, regardless of language: ## Skill Name Notation -The separator in miko skill names is decided at install time: dot (`/miko.xxx`) or hyphen (`/miko-xxx`). Whenever you mention a skill name in your output, follow the `separator` value in `.miko/config`: +The separator in miko skill names is decided at install time: dot (`/miko.xxx`) or hyphen (`/miko-xxx`). The original SKILL.md files and guides are written with dots and converted to the chosen separator at install time. Whenever you mention a skill name in your output, follow the `separator` value in `.miko/config`, not the notation in the source text: - `separator=dot` → write skill names with dots - `separator=hyphen` → write skill names with hyphens diff --git a/ofuda/guides/tone_guide.md b/ofuda/guides/tone_guide.md index a267574..8fad673 100644 --- a/ofuda/guides/tone_guide.md +++ b/ofuda/guides/tone_guide.md @@ -25,7 +25,7 @@ miko のすべての出力は **日本語** で行う。対話テキストだけ ## スキル名の表記 -miko のスキル名の区切り文字は、インストール時の選択によりドット(`/miko.xxx`)またはハイフン(`/miko-xxx`)になる。出力でスキル名に言及するときは、`.miko/config` の `separator` の値に従うこと: +miko のスキル名の区切り文字は、インストール時の選択によりドット(`/miko.xxx`)またはハイフン(`/miko-xxx`)になる。SKILL.md やガイドの原文はドット区切りで書かれており、インストール時に選択した区切り文字へ変換される。出力でスキル名に言及するときは、原文の表記ではなく `.miko/config` の `separator` の値に従うこと: - `separator=dot` → ドット区切りで表記する - `separator=hyphen` → ハイフン区切りで表記する From 9fc08cab933affec459b89f3ea13ff7a70126c30 Mon Sep 17 00:00:00 2001 From: ysak-y Date: Fri, 17 Jul 2026 16:40:33 +0900 Subject: [PATCH 8/9] =?UTF-8?q?tone=5Fguide:=20separator=20=E3=81=8C?= =?UTF-8?q?=E8=AA=AD=E3=82=81=E3=81=AA=E3=81=84=E5=A0=B4=E5=90=88=E3=81=AF?= =?UTF-8?q?=E3=83=89=E3=83=83=E3=83=88=E5=8C=BA=E5=88=87=E3=82=8A=E3=82=92?= =?UTF-8?q?=E3=83=87=E3=83=95=E3=82=A9=E3=83=AB=E3=83=88=E3=81=A8=E3=81=99?= =?UTF-8?q?=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 「実行中のスキル名に合わせる」より単純な規則にする(レビュー指摘)。 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2 --- ofuda/guides/tone_guide.en.md | 2 +- ofuda/guides/tone_guide.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ofuda/guides/tone_guide.en.md b/ofuda/guides/tone_guide.en.md index 3ba1982..6150fc1 100644 --- a/ofuda/guides/tone_guide.en.md +++ b/ofuda/guides/tone_guide.en.md @@ -35,7 +35,7 @@ The separator in miko skill names is decided at install time: dot (`/miko.xxx`) - `separator=dot` → write skill names with dots - `separator=hyphen` → write skill names with hyphens -If the config cannot be read, match the separator used in the name of the skill you are currently running. +If the config cannot be read or has no `separator` entry, default to dots. --- diff --git a/ofuda/guides/tone_guide.md b/ofuda/guides/tone_guide.md index 8fad673..5eeca1d 100644 --- a/ofuda/guides/tone_guide.md +++ b/ofuda/guides/tone_guide.md @@ -30,7 +30,7 @@ miko のスキル名の区切り文字は、インストール時の選択によ - `separator=dot` → ドット区切りで表記する - `separator=hyphen` → ハイフン区切りで表記する -config が読めない場合は、実行中のスキル自身の名前に使われている区切り文字に合わせる。 +config が読めない場合や `separator` の設定がない場合は、デフォルトのドット区切りで表記する。 --- From 55ab7a14a72586a6f2cac3a3ed7b7c0a5bcf3203 Mon Sep 17 00:00:00 2001 From: ysak-y Date: Fri, 17 Jul 2026 16:40:58 +0900 Subject: [PATCH 9/9] =?UTF-8?q?tone=5Fguide:=20=E3=82=B9=E3=82=AD=E3=83=AB?= =?UTF-8?q?=E5=90=8D=E3=81=AE=E8=A1=A8=E8=A8=98=E3=82=BB=E3=82=AF=E3=82=B7?= =?UTF-8?q?=E3=83=A7=E3=83=B3=E3=81=AB=E6=96=AD=E3=82=8A=E6=9B=B8=E3=81=8D?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit トーンのルールではなく、全スキルが必ず読む指示書として 便宜上ここに置いている旨を明記する(レビュー指摘)。 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01TZs89bL3xt4Yy7iVY3ooE2 --- ofuda/guides/tone_guide.en.md | 2 ++ ofuda/guides/tone_guide.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/ofuda/guides/tone_guide.en.md b/ofuda/guides/tone_guide.en.md index 6150fc1..a1f4271 100644 --- a/ofuda/guides/tone_guide.en.md +++ b/ofuda/guides/tone_guide.en.md @@ -30,6 +30,8 @@ Keep the following as-is, regardless of language: ## Skill Name Notation +Note: this section is not about tone — it lives here for convenience, because every skill is required to read this guide. + The separator in miko skill names is decided at install time: dot (`/miko.xxx`) or hyphen (`/miko-xxx`). The original SKILL.md files and guides are written with dots and converted to the chosen separator at install time. Whenever you mention a skill name in your output, follow the `separator` value in `.miko/config`, not the notation in the source text: - `separator=dot` → write skill names with dots diff --git a/ofuda/guides/tone_guide.md b/ofuda/guides/tone_guide.md index 5eeca1d..9e4c304 100644 --- a/ofuda/guides/tone_guide.md +++ b/ofuda/guides/tone_guide.md @@ -25,6 +25,8 @@ miko のすべての出力は **日本語** で行う。対話テキストだけ ## スキル名の表記 +※ このセクションはトーン(口調)のルールではないが、全スキルが必ず読む指示書であるため、便宜上ここに置いている。 + miko のスキル名の区切り文字は、インストール時の選択によりドット(`/miko.xxx`)またはハイフン(`/miko-xxx`)になる。SKILL.md やガイドの原文はドット区切りで書かれており、インストール時に選択した区切り文字へ変換される。出力でスキル名に言及するときは、原文の表記ではなく `.miko/config` の `separator` の値に従うこと: - `separator=dot` → ドット区切りで表記する